X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/50c76ce1f7c2d9f121ff1015b0abae99dcb2a31a..26ffe1fdba1c3b11bb6b870fc477ac460bf6bd17:/contrib/applet/appletwindow.cpp diff --git a/contrib/applet/appletwindow.cpp b/contrib/applet/appletwindow.cpp deleted file mode 100644 index 66c9fe0d93..0000000000 --- a/contrib/applet/appletwindow.cpp +++ /dev/null @@ -1,371 +0,0 @@ -/**************************************************************************** -* -* wxWindows HTML Applet Package -* -* Copyright (C) 1991-2001 SciTech Software, Inc. -* All rights reserved. -* -* ====================================================================== -* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW| -* | | -* |This copyrighted computer code is a proprietary trade secret of | -* |SciTech Software, Inc., located at 505 Wall Street, Chico, CA 95928 | -* |USA (www.scitechsoft.com). ANY UNAUTHORIZED POSSESSION, USE, | -* |VIEWING, COPYING, MODIFICATION OR DISSEMINATION OF THIS CODE IS | -* |STRICTLY PROHIBITED BY LAW. Unless you have current, express | -* |written authorization from SciTech to possess or use this code, you | -* |may be subject to civil and/or criminal penalties. | -* | | -* |If you received this code in error or you would like to report | -* |improper use, please immediately contact SciTech Software, Inc. at | -* |530-894-8400. | -* | | -* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW| -* ====================================================================== -* -* Language: ANSI C++ -* Environment: Any -* -* Description: Main wxHtmlAppletWindow class implementation -* -****************************************************************************/ - -// For compilers that support precompilation -#include "wx/wxprec.h" - -// Include private headers -#include "wx/applet/applet.h" - -/*------------------------- Implementation --------------------------------*/ - -// Empty event handler. We include this event handler simply so that -// sub-classes of wxApplet can reference wxApplet in the event tables -// that they create as necessary. -BEGIN_EVENT_TABLE(wxHtmlAppletWindow, wxHtmlWindow) -END_EVENT_TABLE() - -// Implement the class functions for wxHtmlAppletWindow -IMPLEMENT_CLASS(wxHtmlAppletWindow, wxHtmlWindow); - -// Define the wxAppletList implementation -#include "wx/listimpl.cpp" -WX_DEFINE_LIST(wxAppletList); - -/**************************************************************************** -REMARKS: -Constructor for the applet window class. -****************************************************************************/ -wxHtmlAppletWindow::wxHtmlAppletWindow( - wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) - : wxHtmlWindow(parent,id,pos,size,style,name) -{ - // Ensure all cookie data is destroyed when window is killed - m_Cookies.DeleteContents(true); -} - -/**************************************************************************** -REMARKS: -Destructor for the applet window class. -****************************************************************************/ -wxHtmlAppletWindow::~wxHtmlAppletWindow() -{ -} - -/**************************************************************************** -PARAMETERS: -className - Name of the applet class to create an object for -size - Initial size of the applet to be created - -RETURNS: -Pointer to the wxApplet created, or NULL if unable to create the applet. - -REMARKS: -This function is used to create new wxApplet objects dynamically based on the -class name as a string. This allows instances of wxApplet classes to be -created dynamically based on string values embedded in the custom tags of an -HTML page. -****************************************************************************/ -wxApplet *wxHtmlAppletWindow::CreateApplet( - const wxString& className, - const wxSize& size) -{ - // We presently only allow one applet per page of the same class! - if (m_AppletList.Find(className)) - return NULL; - - // Dynamically create the class instance at runtime - wxClassInfo *info = wxClassInfo::FindClass(className.c_str()); - if (!info) - return NULL; - wxObject *obj = info->CreateObject(); - if (!obj) - return NULL; - wxApplet *applet = wxDynamicCast(obj,wxApplet); - if (!applet) - return NULL; - if (!applet->Create(this,size)) { - delete applet; - return NULL; - } - m_AppletList.Append(className,applet); - return applet; -} - -/**************************************************************************** -PARAMETERS: -appletName - Name of the applet class to find - -RETURNS: -Pointer to the wxApplet found, or NULL if not found. - -REMARKS: -Find an instance of an applet based on it's name -****************************************************************************/ -wxApplet *wxHtmlAppletWindow::FindApplet( - const wxString& appletName) -{ - wxAppletList::Node *node = m_AppletList.Find(appletName); - if (!node) - return NULL; - return node->GetData(); -} - -/**************************************************************************** -PARAMETERS: -applet - Pointer to the applet object to remove from the list - -RETURNS: -True if the applet was found and removed, false if not. The applet itself -is *not* destroyed! - -REMARKS: -Remove an applet from the manager. Called during applet destruction -****************************************************************************/ -bool wxHtmlAppletWindow::RemoveApplet( - const wxApplet *applet) -{ - for (wxAppletList::Node *node = m_AppletList.GetFirst(); node; node = node->GetNext()) { - if (node->GetData() == applet) { - m_AppletList.DeleteNode(node); - return true; - } - } - return false; -} - -/**************************************************************************** -PARAMETERS: -URL - New URL for the page to load - -RETURNS: -True if page loaded successfully, false if not - -REMARKS: -Remove an applet from the manager. Called during applet destruction -****************************************************************************/ -bool wxHtmlAppletWindow::LoadPage( - const wxString& hRef) -{ - for (wxAppletList::Node *node = m_AppletList.GetFirst(); node; node = node->GetNext()) - (node->GetData())->OnLinkClicked(hRef); - return wxHtmlWindow::LoadPage(hRef); -} - -/**************************************************************************** -PARAMETERS: -URL - String URL that we are navigating to - -REMARKS: -Called when the user navigates to a new URL from the current page. We simply -call the LoadPage function above to load the new page and display it. -****************************************************************************/ -void wxHtmlAppletWindow::OnLinkClicked( - const wxHtmlLinkInfo& link) -{ - for (wxAppletList::Node *node = m_AppletList.GetFirst(); node; node = node->GetNext()) - (node->GetData())->OnLinkClicked(link); - wxHtmlWindow::LoadPage(link.GetHref()); -} - -/**************************************************************************** -REMARKS: -Called when the user navigates forward within the HTML history stack. -We call all the applets in turn allowing them to handle the navigation -command prior to being destructed when the current page is destroyed. -****************************************************************************/ -bool wxHtmlAppletWindow::HistoryForward() -{ - if (!HistoryCanForward()) - return false; - for (wxAppletList::Node *node = m_AppletList.GetFirst(); node; node = node->GetNext()) - (node->GetData())->OnHistoryForward(); - return wxHtmlWindow::HistoryForward(); -} - -/**************************************************************************** -REMARKS: -Called when the user navigates backwards within the HTML history stack. -We call all the applets in turn allowing them to handle the navigation -command prior to being destructed when the current page is destroyed. -****************************************************************************/ -bool wxHtmlAppletWindow::HistoryBack() -{ - if (!HistoryCanBack()) - return false; - for (wxAppletList::Node *node = m_AppletList.GetFirst(); node; node = node->GetNext()) - (node->GetData())->OnHistoryBack(); - return wxHtmlWindow::HistoryBack(); -} - -/**************************************************************************** -PARAMETERS: -msg - wxEvent message to be sent to all wxApplets - -REMARKS: -This function is called by the wxApplet's when they need to send a message -to all other applets on the current page. This is the primary form of -communication between applets on the page if they need to inform each -other of internal information. - -Note that the event handling terminates as soon as the first wxApplet -handles the event. If the event should be handled by all wxApplet's, -the event handlers for the applets should not reset the wxEvent::Skip() -value (ie: by default it is true). -****************************************************************************/ -void wxHtmlAppletWindow::SendMessage( - wxEvent& msg) -{ - // Preset the skip flag - msg.Skip(); - - // Process all applets in turn and send them the message - for (wxAppletList::Node *node = m_AppletList.GetFirst(); node; node = node->GetNext()) { - (node->GetData())->OnMessage(msg); - if (!msg.GetSkipped()) - break; - } -} - -/**************************************************************************** -PARAMETERS: -msg - wxEvent message to be sent to all wxApplets - -RETURNS: -True if new cookie was added, false if cookie with same name already exists. - -REMARKS: -This function is called by the wxApplet's when they need register a cookie -of data in the applet window's cookie table. Cookies are arbitrary data -objects that are references by unique name's by the wxApplet. These -values can be used to store and retrieve data that needs to remain -persisent across invocations of the wxApplet. Ie: The first time an -applet is created it would use the cookie to store data to maintain -it's present state so that if you navigated back to the same page -is would be able to re-load the prior state as though the applet -was never actually destructed. - -Note: If a cookie with the same name already exists, this function returns - false. Hence if you wish to replace a cookie you should first call - UnRegisterCookie to ensure the cookie is deleted and then call this - function. -****************************************************************************/ -bool wxHtmlAppletWindow::RegisterCookie( - const wxString& name, - wxObject *cookie) -{ - // Fail if the named cookie already exists! - if (m_Cookies.Get(name)) - return false; - m_Cookies.Put(name,cookie); - return true; -} - -/**************************************************************************** -PARAMETERS: -msg - wxEvent message to be sent to all wxApplets - -RETURNS: -True if found and deleted, false if not found in table. - -REMARKS: -This function is called by the wxApplet's when they need de-register a -cookie of data in the applet window's cookie table. The data in the -cookie itself is also deleted before it is removed from the table. -****************************************************************************/ -bool wxHtmlAppletWindow::UnRegisterCookie( - const wxString& name) -{ - wxObject *data = m_Cookies.Delete(name); - if (data) { - delete data; - return true; - } - return false; -} - -/**************************************************************************** -PARAMETERS: -msg - wxEvent message to be sent to all wxApplets - -RETURNS: -Pointer to the cookie data if found, NULL if not found. - -REMARKS: -This function is called by the wxApplet's when they need to find a cookie -of data given it's public name. If the cookie is not found, NULL is -returned. -****************************************************************************/ -wxObject *wxHtmlAppletWindow::FindCookie( - const wxString& name) -{ - return m_Cookies.Get(name); -} - -#include "wx/html/m_templ.h" - -/**************************************************************************** -REMARKS: -Implementation for the HTML tag handler. This handler takes care -of automatically constructing the wxApplet objects of the appropriate -class based on the tag information. -****************************************************************************/ -TAG_HANDLER_BEGIN(Embed, "EMBED") - -TAG_HANDLER_PROC(tag) -{ - wxWindow *wnd; - wxHtmlAppletWindow *appletWindow; - wxApplet *applet; - int width, height; - int floatPercent = 0; - - wnd = m_WParser->GetWindow(); - if ((appletWindow = wxDynamicCast(wnd,wxHtmlAppletWindow)) != NULL) { - tag.ScanParam("WIDTH", "%i", &width); - tag.ScanParam("HEIGHT", "%i", &height); - if (tag.HasParam("FLOAT")) - tag.ScanParam("FLOAT", "%i", &floatPercent); - if (tag.HasParam("APPLET")) { - if ((applet = appletWindow->CreateApplet(tag.GetParam("APPLET"), wxSize(width, height))) != NULL) { - applet->Show(true); - m_WParser->OpenContainer()->InsertCell(new wxHtmlWidgetCell(applet,floatPercent)); - } - } - else if (tag.HasParam("TEXT")) { - // TODO: Somehow get the text returned from this class displayed on the page! - } - } - return false; -} - -TAG_HANDLER_END(Embed) - -TAGS_MODULE_BEGIN(Embed) - TAGS_MODULE_ADD(Embed) -TAGS_MODULE_END(Embed) -