]> git.saurik.com Git - wxWidgets.git/blob - contrib/include/wx/applet/window.h
Added clipboard cut and paste
[wxWidgets.git] / contrib / include / wx / applet / window.h
1 /****************************************************************************
2 *
3 * wxWindows HTML Applet Package
4 *
5 * Copyright (C) 1991-2001 SciTech Software, Inc.
6 * All rights reserved.
7 *
8 * ========================================================================
9 *
10 * The contents of this file are subject to the wxWindows License
11 * Version 3.0 (the "License"); you may not use this file except in
12 * compliance with the License. You may obtain a copy of the License at
13 * http://www.wxwindows.org/licence3.txt
14 *
15 * Software distributed under the License is distributed on an
16 * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17 * implied. See the License for the specific language governing
18 * rights and limitations under the License.
19 *
20 * ========================================================================
21 *
22 * Language: ANSI C++
23 * Environment: Any
24 *
25 * Description: Header file for the wxHtmlAppletWindow class
26 *
27 ****************************************************************************/
28
29 #ifndef __WX_APPLET_WINDOW_H
30 #define __WX_APPLET_WINDOW_H
31
32 #include "wx/html/htmlwin.h"
33 #include "wx/process.h"
34
35 // Forward declare
36 class wxApplet;
37 class wxQlet;
38 class wxLoadPageEvent;
39 class wxPageLoadedEvent;
40 class wxIncludePrep;
41 class wxToolBarBase;
42
43 // Declare a linked list of wxApplet pointers
44 WX_DECLARE_LIST(wxApplet, wxAppletList);
45
46 /*--------------------------- Class Definitions ---------------------------*/
47
48 /****************************************************************************
49 REMARKS:
50 Defines the class for virtual-link data types
51 ****************************************************************************/
52 class VirtualData : public wxObject {
53 private:
54 wxString m_name;
55 wxString m_group;
56 wxString m_href;
57
58 public:
59 // Ctors
60 VirtualData(
61 wxString& name,
62 wxString& group,
63 wxString& href );
64
65 VirtualData();
66
67 // Gets
68 wxString GetName(){ return m_name;};
69 wxString GetGroup(){ return m_group;};
70 wxString GetHref(){ return m_href;};
71
72 // Sets
73 void SetName (wxString& s){ m_name = s; };
74 void SetGroup(wxString& s){ m_group = s; };
75 void SetHref (wxString& s){ m_href = s; };
76 };
77
78 /****************************************************************************
79 REMARKS:
80 Defines the class for wxAppletWindow. This class is derived from the
81 wxHtmlWindow class and extends it with functionality to handle embedded
82 wxApplet's on the HTML pages.
83 ****************************************************************************/
84 class wxHtmlAppletWindow : public wxHtmlWindow {
85 private:
86 DECLARE_CLASS(wxHtmlAppletWindow);
87 DECLARE_EVENT_TABLE();
88
89 bool m_mutexLock;
90 wxIncludePrep *incPreprocessor; // deleted by list it is added too in constructor
91
92 protected:
93 wxAppletList m_AppletList;
94 static wxHashTable m_Cookies;
95 bool m_NavBarEnabled;
96 wxToolBarBase *m_NavBar;
97 int m_NavBackId;
98 int m_NavForwardId;
99 wxPalette m_globalPalette;
100
101 // Override this so we can do proper palette management!!
102 virtual void OnDraw(wxDC& dc);
103
104 public:
105 // Constructor
106 wxHtmlAppletWindow(
107 wxWindow *parent,
108 wxWindowID id = -1,
109 wxToolBarBase *navBar = NULL,
110 int navBackId = -1,
111 int navForwardId = -1,
112 const wxPoint& pos = wxDefaultPosition,
113 const wxSize& size = wxDefaultSize,
114 long style = wxHW_SCROLLBAR_AUTO,
115 const wxString& name = "htmlAppletWindow",
116 const wxPalette& globalPalette = wxNullPalette);
117
118 // Destructor
119 ~wxHtmlAppletWindow();
120
121 // Create an instance of an applet based on it's class name
122 wxApplet *CreateApplet(
123 const wxString& classId,
124 const wxString& iName,
125 const wxHtmlTag &params,
126 const wxSize& size);
127
128 // Create an instance of an Qlet based on it's class name
129 bool CreatePlugIn(const wxString& classId );
130
131 // Find an instance of an applet based on it's class name
132 wxApplet *FindApplet(const wxString& className);
133
134 // Remove an applet from the window. Called during applet destruction
135 bool RemoveApplet(const wxApplet *applet);
136
137 // Load a new URL page
138 virtual bool LoadPage(const wxString& location);
139
140 // Called when users clicked on hypertext link.
141 virtual void OnLinkClicked(const wxHtmlLinkInfo& link);
142
143 // Handles forward navigation within the HTML stack
144 bool HistoryForward();
145
146 // Handles backwards navigation within the HTML stack
147 bool HistoryBack();
148
149 // Disables Nav bars
150 void DisableNavBar();
151
152 // Enables Nav bars
153 void EnableNavBar();
154
155 void SetNavBar(wxToolBarBase *navBar);
156
157 // Broadcast a message to all applets on the page
158 void SendMessage(wxEvent& msg);
159
160 // Register a cookie of data in the applet manager
161 static bool RegisterCookie(const wxString& name,wxObject *cookie);
162
163 // UnRegister a cookie of data in the applet manager
164 static bool UnRegisterCookie(const wxString& name);
165
166 // Find a cookie of data given it's public name
167 static wxObject *FindCookie(const wxString& name);
168
169 // Event handlers to load a new page
170 void OnLoadPage(wxLoadPageEvent &event);
171
172 // Event handlers to load a new page
173 void OnPageLoaded(wxPageLoadedEvent &event);
174
175 // LoadPage mutex locks
176 void Lock(){ m_mutexLock = true;};
177 void UnLock(){ m_mutexLock = false;};
178
179 // Returns TRUE if the mutex is locked, FALSE otherwise.
180 bool IsLocked(){ return m_mutexLock;};
181
182 // Tries to lock the mutex. If it can't, returns immediately with false.
183 bool TryLock();
184
185 };
186
187 /****************************************************************************
188 REMARKS:
189 Defines the class for AppetProcess
190 ***************************************************************************/
191 class AppletProcess : public wxProcess {
192 public:
193 AppletProcess(
194 wxWindow *parent)
195 : wxProcess(parent)
196 {
197 }
198
199 // instead of overriding this virtual function we might as well process the
200 // event from it in the frame class - this might be more convenient in some
201 // cases
202 virtual void OnTerminate(int pid, int status);
203
204 };
205
206 /****************************************************************************
207 REMARKS:
208 Defines the class for wxHtmlAppletCell
209 ***************************************************************************/
210 class wxHtmlAppletCell : public wxHtmlCell
211 {
212 public:
213 wxHtmlAppletCell(wxWindow *wnd, int w = 0);
214 ~wxHtmlAppletCell() { m_Wnd->Destroy(); }
215 virtual void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
216 virtual void DrawInvisible(wxDC& dc, int x, int y);
217 virtual void Layout(int w);
218
219 protected:
220 wxWindow* m_Wnd;
221 // width float is used in adjustWidth (it is in percents)
222 };
223
224
225 #endif // __WX_APPLET_WINDOW_H
226