%extern windows.i
%extern _defs.i
%extern events.i
-//%extern windows2.i
-//%extern windows3.i
-//%extern frames.i
-//%extern misc.i
-//%extern gdi.i
%extern controls.i
%extern controls2.i
+%extern utils.i
+
+//---------------------------------------------------------------------------
+
%{
#ifdef __WXMSW__
-static wxString wxPyEmptyStr("");
-static wxPoint wxPyDefaultPosition(wxDefaultPosition);
-static wxSize wxPyDefaultSize(wxDefaultSize);
+wxString wxPyEmptyStr("");
+wxPoint wxPyDefaultPosition(wxDefaultPosition);
+wxSize wxPyDefaultSize(wxDefaultSize);
#endif
-static PyThreadState* wxPyThreadState;
%}
%pragma(python) code = "import wx,htmlhelper"
%{
+#if 0
static PyObject* mod_dict = NULL; // will be set by init
#include <wx/html/mod_templ.h>
TAG_HANDLER_BEGIN(PYTHONTAG, "PYTHON")
TAG_HANDLER_PROC(tag)
{
- wxWindow *wnd;
- wxString errmsg;
- char pbuf[256];
-
- int fl = 0;
-
- while (1) {
- #ifdef WXP_WITH_THREAD
- PyEval_RestoreThread(wxPyThreadState);
- #endif
- if (tag.HasParam("FLOAT"))
- tag.ScanParam("FLOAT", "%i", &fl);
- PyObject* pyfunc = PyDict_GetItemString(mod_dict, "WidgetStarter");
- if (pyfunc == NULL) {
- errmsg = "Could not find object WidgetStarter";
- break;
- }
- if (! PyCallable_Check(pyfunc)) {
- errmsg = "WidgetStarter does not appear to be callable";
- break;
- }
- SWIG_MakePtr(pbuf, m_WParser->GetWindow(), "_wxHtmlWindow_p");
+ wxWindow *wnd;
+ wxString errmsg;
+ char pbuf[256];
+
+ int fl = 0;
+
+ bool doSave = wxPyRestoreThread();
+ while (1) {
+ if (tag.HasParam("FLOAT"))
+ tag.ScanParam("FLOAT", "%i", &fl);
+ PyObject* pyfunc = PyDict_GetItemString(mod_dict, "WidgetStarter");
+ if (pyfunc == NULL) {
+ errmsg = "Could not find object WidgetStarter";
+ break;
+ }
+ if (! PyCallable_Check(pyfunc)) {
+ errmsg = "WidgetStarter does not appear to be callable";
+ break;
+ }
+ SWIG_MakePtr(pbuf, m_WParser->GetWindow(), "_wxPyHtmlWindow_p");
PyObject* arglist = Py_BuildValue("(s,s)", pbuf,
- (const char*)tag.GetAllParams());
- if (! arglist) {
- errmsg = "Failed making argument list";
- break;
- }
- PyObject* ret = PyEval_CallObject(pyfunc, arglist);
- Py_DECREF(arglist);
- if (ret == NULL) {
+ (const char*)tag.GetAllParams());
+ if (! arglist) {
+ errmsg = "Failed making argument list";
+ break;
+ }
+ PyObject* ret = PyEval_CallObject(pyfunc, arglist);
+ Py_DECREF(arglist);
+ if (ret == NULL) {
errmsg = "An error occured while calling WidgetStarter";
- if (PyErr_Occurred())
- PyErr_Print();
- break;
- }
- wnd = NULL;
- if (PyString_Check(ret)) {
- char* thisc = PyString_AsString(ret);
- SWIG_GetPtr(thisc, (void**)&wnd, "_wxWindow_p");
- }
- Py_DECREF(ret);
- if (! wnd) {
+ if (PyErr_Occurred())
+ PyErr_Print();
+ break;
+ }
+ wnd = NULL;
+ if (PyString_Check(ret)) {
+ char* thisc = PyString_AsString(ret);
+ SWIG_GetPtr(thisc, (void**)&wnd, "_wxWindow_p");
+ }
+ Py_DECREF(ret);
+ if (! wnd) {
errmsg = "Could not make a wxWindow pointer from return ptr";
- break;
- }
- #ifdef WXP_WITH_THREAD
- PyEval_SaveThread();
- #endif
- wnd -> Show(TRUE);
- m_WParser->OpenContainer()->InsertCell(new wxHtmlWidgetCell(wnd, fl));
- return FALSE;
- }
-
- /* we got out of the loop. Must be an error. Show a box stating it. */
-
- #ifdef WXP_WITH_THREAD
- PyEval_SaveThread();
- #endif
-
+ break;
+ }
+ wxPySaveThread(doSave);
+ wnd -> Show(TRUE);
+ m_WParser->OpenContainer()->InsertCell(new wxHtmlWidgetCell(wnd, fl));
+ return FALSE;
+ }
+
+ wxPySaveThread(doSave);
+
+ /* we got out of the loop. Must be an error. Show a box stating it. */
wnd = new wxTextCtrl( m_WParser -> GetWindow(), -1,
- errmsg, wxPoint(0,0),
- wxSize(300, 100), wxTE_MULTILINE );
- wnd -> Show(TRUE);
- m_WParser->OpenContainer()->InsertCell(new wxHtmlWidgetCell(wnd, 100));
+ errmsg, wxPoint(0,0),
+ wxSize(300, 100), wxTE_MULTILINE );
+ wnd -> Show(TRUE);
+ m_WParser->OpenContainer()->InsertCell(new wxHtmlWidgetCell(wnd, 100));
return FALSE;
}
-
+
TAG_HANDLER_END(PYTHONTAG)
TAGS_MODULE_BEGIN(PythonTag)
TAGS_MODULE_ADD(PYTHONTAG)
-
+
TAGS_MODULE_END(PythonTag)
// Note: see also the init function where we add the module!
+#endif
+%}
+
+//---------------------------------------------------------------------------
+
+enum {
+ HTML_ALIGN_LEFT,
+ HTML_ALIGN_CENTER,
+ HTML_ALIGN_RIGHT,
+ HTML_ALIGN_BOTTOM,
+ HTML_ALIGN_TOP,
+
+ HTML_CLR_FOREGROUND,
+ HTML_CLR_BACKGROUND,
+
+ HTML_UNITS_PIXELS,
+ HTML_UNITS_PERCENT,
+
+ HTML_INDENT_LEFT,
+ HTML_INDENT_RIGHT,
+ HTML_INDENT_TOP,
+ HTML_INDENT_BOTTOM,
+
+ HTML_INDENT_HORIZONTAL,
+ HTML_INDENT_VERTICAL,
+ HTML_INDENT_ALL,
+
+ HTML_COND_ISANCHOR,
+ HTML_COND_ISIMAGEMAP,
+ HTML_COND_USER,
+};
+
+
+//---------------------------------------------------------------------------
+
+class wxHtmlTag {
+public:
+ // Never need to create a new tag from Python...
+ //wxHtmlTag(const wxString& source, int pos, int end_pos, wxHtmlTagsCache* cache);
+
+ wxString GetName();
+ bool HasParam(const wxString& par);
+ wxString GetParam(const wxString& par, int with_commas = FALSE);
+
+ // Can't do this one as-is, but GetParam should be enough...
+ //int ScanParam(const wxString& par, const char *format, void* param);
+
+ wxString GetAllParams();
+ bool IsEnding();
+ bool HasEnding();
+ int GetBeginPos();
+ int GetEndPos1();
+ int GetEndPos2();
+};
+
+
+//---------------------------------------------------------------------------
+
+class wxHtmlParser {
+public:
+ // wxHtmlParser(); This is an abstract base class...
+
+ void SetFS(wxFileSystem *fs);
+ wxFileSystem* GetFS();
+ wxObject* Parse(const wxString& source);
+ void InitParser(const wxString& source);
+ void DoneParser();
+ void DoParsing(int begin_pos, int end_pos);
+ // wxObject* GetProduct();
+ void AddTagHandler(wxHtmlTagHandler *handler);
+ wxString* GetSource();
+
+
+ // void AddText(const char* txt) = 0;
+ // void AddTag(const wxHtmlTag& tag);
+};
+
+
+//---------------------------------------------------------------------------
+
+class wxHtmlWinParser : public wxHtmlParser {
+public:
+ wxHtmlWinParser(wxWindow *wnd);
+
+ void SetDC(wxDC *dc);
+ wxDC* GetDC();
+ int GetCharHeight();
+ int GetCharWidth();
+ wxWindow* GetWindow();
+ void SetFonts(wxString normal_face, int normal_italic_mode,
+ wxString fixed_face, int fixed_italic_mode, int *LIST);
+
+ wxHtmlContainerCell* GetContainer();
+ wxHtmlContainerCell* OpenContainer();
+ wxHtmlContainerCell* CloseContainer();
+ int GetFontSize();
+ void SetFontSize(int s);
+ int GetFontBold();
+ void SetFontBold(int x);
+ int GetFontItalic();
+ void SetFontItalic(int x);
+ int GetFontUnderlined();
+ void SetFontUnderlined(int x);
+ int GetFontFixed();
+ void SetFontFixed(int x);
+ int GetAlign();
+ void SetAlign(int a);
+ const wxColour& GetLinkColor();
+ void SetLinkColor(const wxColour& clr);
+ const wxColour& GetActualColor();
+ void SetActualColor(const wxColour& clr);
+ const wxString& GetLink();
+ void SetLink(const wxString& link);
+ wxFont* CreateCurrentFont();
+};
+
+
+
+//---------------------------------------------------------------------------
+
+%{
+class wxPyHtmlTagHandler : public wxHtmlTagHandler {
+public:
+ wxPyHtmlTagHandler() : wxHtmlTagHandler() {};
+
+ wxHtmlParser* GetParser() { return m_Parser; }
+ void ParseInner(const wxHtmlTag& tag) { wxHtmlTagHandler::ParseInner(tag); }
+
+ DEC_PYCALLBACK_STRING__pure(GetSupportedTags);
+ DEC_PYCALLBACK_BOOL_TAG_pure(HandleTag);
+
+ PYPRIVATE;
+};
+
+IMP_PYCALLBACK_STRING__pure(wxPyHtmlTagHandler, wxHtmlTagHandler, GetSupportedTags);
+IMP_PYCALLBACK_BOOL_TAG_pure(wxPyHtmlTagHandler, wxHtmlTagHandler, HandleTag);
+%}
+
+
+%name(wxHtmlTagHandler) class wxPyHtmlTagHandler {
+public:
+ wxPyHtmlTagHandler();
+
+ void _setSelf(PyObject* self);
+ %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+
+ void SetParser(wxHtmlParser *parser);
+ wxHtmlParser* GetParser();
+ void ParseInner(const wxHtmlTag& tag);
+};
+
+
+//---------------------------------------------------------------------------
+
+%{
+class wxPyHtmlWinTagHandler : public wxHtmlWinTagHandler {
+public:
+ wxPyHtmlWinTagHandler() : wxHtmlWinTagHandler() {};
+
+ wxHtmlWinParser* GetParser() { return m_WParser; }
+ void ParseInner(const wxHtmlTag& tag)
+ { wxHtmlWinTagHandler::ParseInner(tag); }
+
+ DEC_PYCALLBACK_STRING__pure(GetSupportedTags);
+ DEC_PYCALLBACK_BOOL_TAG_pure(HandleTag);
+
+ PYPRIVATE;
+};
+
+IMP_PYCALLBACK_STRING__pure(wxPyHtmlWinTagHandler, wxHtmlWinTagHandler, GetSupportedTags);
+IMP_PYCALLBACK_BOOL_TAG_pure(wxPyHtmlWinTagHandler, wxHtmlWinTagHandler, HandleTag);
+%}
+
+
+%name(wxHtmlWinTagHandler) class wxPyHtmlWinTagHandler : public wxPyHtmlTagHandler {
+public:
+ wxPyHtmlWinTagHandler();
+
+ void _setSelf(PyObject* self);
+ %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+
+ void SetParser(wxHtmlParser *parser);
+ wxHtmlWinParser* GetParser();
+ void ParseInner(const wxHtmlTag& tag);
+};
+
+
+//---------------------------------------------------------------------------
+
+%{
+
+class wxPyHtmlTagsModule : public wxHtmlTagsModule {
+public:
+ wxPyHtmlTagsModule(PyObject* thc) : wxHtmlTagsModule() {
+ m_tagHandlerClass = thc;
+ Py_INCREF(m_tagHandlerClass);
+ RegisterModule(this);
+ wxHtmlWinParser::AddModule(this);
+ }
+
+ void OnExit() {
+ Py_DECREF(m_tagHandlerClass);
+ m_tagHandlerClass = NULL;
+ for (int x=0; x < m_objArray.GetCount(); x++) {
+ PyObject* obj = (PyObject*)m_objArray.Item(x);
+ Py_DECREF(obj);
+ }
+ };
+
+ void FillHandlersTable(wxHtmlWinParser *parser) {
+ // Wave our magic wand... (if it works it's a miracle! ;-)
+
+ // First, make a new instance of the tag handler
+ bool doSave = wxPyRestoreThread();
+ PyObject* arg = Py_BuildValue("()");
+ PyObject* obj = PyInstance_New(m_tagHandlerClass, arg, NULL);
+ Py_DECREF(arg);
+ wxPySaveThread(doSave);
+
+ // now figure out where it's C++ object is...
+ wxPyHtmlWinTagHandler* thPtr;
+ if (SWIG_GetPtrObj(obj, (void **)&thPtr, "_wxPyHtmlWinTagHandler_p"))
+ return;
+
+ // add it,
+ parser->AddTagHandler(thPtr);
+
+ // and track it.
+ m_objArray.Add(obj);
+ }
+
+private:
+ PyObject* m_tagHandlerClass;
+ wxArrayPtrVoid m_objArray;
+
+};
+%}
+
+
+%inline %{
+ void wxHtmlWinParser_AddTagHandler(PyObject* tagHandlerClass) {
+ // Dynamically create a new wxModule. Refcounts tagHandlerClass
+ // and adds itself to the wxModules list and to the wxHtmlWinParser.
+ new wxPyHtmlTagsModule(tagHandlerClass);
+ }
%}
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+
+class wxHtmlCell {
+public:
+ wxHtmlCell();
+
+ void SetParent(wxHtmlContainerCell *p);
+ wxHtmlContainerCell* GetParent();
+ int GetPosX();
+ int GetPosY();
+ int GetWidth();
+ int GetHeight();
+ int GetDescent();
+ wxString GetLink(int x = 0, int y = 0);
+ wxHtmlCell* GetNext();
+ void SetPos(int x, int y);
+ void SetLink(const wxString& link);
+ void SetNext(wxHtmlCell *cell);
+ void Layout(int w);
+ void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
+ void DrawInvisible(wxDC& dc, int x, int y);
+ const wxHtmlCell* Find(int condition, const void* param);
+};
+
+
+class wxHtmlContainerCell : public wxHtmlCell {
+public:
+ wxHtmlContainerCell(wxHtmlContainerCell *parent);
+
+ void InsertCell(wxHtmlCell *cell);
+ void SetAlignHor(int al);
+ int GetAlignHor();
+ void SetAlignVer(int al);
+ int GetAlignVer();
+ void SetIndent(int i, int what, int units = HTML_UNITS_PIXELS);
+ int GetIndent(int ind);
+ int GetIndentUnits(int ind);
+ void SetAlign(const wxHtmlTag& tag);
+ void SetWidthFloat(int w, int units);
+ %name(SetWidthFloatFromTag)void SetWidthFloat(const wxHtmlTag& tag);
+ void SetMinHeight(int h, int align = HTML_ALIGN_TOP);
+ int GetMaxLineWidth();
+ void SetBackgroundColour(const wxColour& clr);
+ void SetBorder(const wxColour& clr1, const wxColour& clr2);
+ wxHtmlCell* GetFirstCell();
+};
+
+
+
+
+class wxHtmlWidgetCell : public wxHtmlCell {
+public:
+ wxHtmlWidgetCell(wxWindow* wnd, int w = 0);
+
+};
+
+
+
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// item of history list
-class HtmlHistoryItem
-{
- public:
- HtmlHistoryItem(const char* p, const char* a);
- int GetPos() const {return m_Pos;}
- void SetPos(int p) {m_Pos = p;}
- const wxString& GetPage() const ;
- const wxString& GetAnchor() const ;
+class HtmlHistoryItem {
+public:
+ HtmlHistoryItem(const char* p, const char* a);
+
+ int GetPos();
+ void SetPos(int p);
+ const wxString& GetPage();
+ const wxString& GetAnchor();
};
-class wxHtmlWindow : public wxScrolledWindow
-{
- public:
- wxHtmlWindow(wxWindow *parent, int id = -1,
- const wxPoint& pos = wxPyDefaultPosition,
- const wxSize& size = wxPyDefaultSize,
- int flags=wxHW_SCROLLBAR_AUTO,
- const char* name = "htmlWindow");
- %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
- %pragma(python) addtomethod = "__init__:wx._StdOnScrollCallbacks(self)"
-
- bool SetPage(const char* source);
+
+//---------------------------------------------------------------------------
+%{
+class wxPyHtmlWindow : public wxHtmlWindow {
+public:
+ wxPyHtmlWindow(wxWindow *parent, wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxHW_SCROLLBAR_AUTO,
+ const wxString& name = "htmlWindow")
+ : wxHtmlWindow(parent, id, pos, size, style, name) {};
+
+ DEC_PYCALLBACK__STRING(OnLinkClicked);
+
+ PYPRIVATE;
+};
+
+IMP_PYCALLBACK__STRING(wxPyHtmlWindow, wxHtmlWindow, OnLinkClicked);
+
+%}
+
+
+%name(wxHtmlWindow) class wxPyHtmlWindow : public wxScrolledWindow {
+public:
+ wxPyHtmlWindow(wxWindow *parent, int id = -1,
+ wxPoint& pos = wxPyDefaultPosition,
+ wxSize& size = wxPyDefaultSize,
+ int flags=wxHW_SCROLLBAR_AUTO,
+ char* name = "htmlWindow");
+
+ void _setSelf(PyObject* self);
+ %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+ %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
+ %pragma(python) addtomethod = "__init__:wx._StdOnScrollCallbacks(self)"
+
+
+ bool SetPage(const char* source);
// Set HTML page and display it. !! source is HTML document itself,
- // it is NOT address/filename of HTML document. If you want to
+ // it is NOT address/filename of HTML document. If you want to
// specify document location, use LoadPage() istead
// Return value : FALSE if an error occured, TRUE otherwise
-
- bool LoadPage(const char* location);
+
+ bool LoadPage(const char* location);
// Load HTML page from given location. Location can be either
// a) /usr/wxGTK2/docs/html/wx.htm
// b) http://www.somewhere.uk/document.htm
// Note : you can also use path relative to previously loaded page
// Return value : same as SetPage
- wxString GetOpenedPage() const {return m_OpenedPage;}
+ wxString GetOpenedPage();
// Returns full location of opened page
-
- void SetRelatedFrame(wxFrame* frame, const char* format);
+
+ void SetRelatedFrame(wxFrame* frame, const char* format);
// sets frame in which page title will be displayed. Format is format of
- // frame title, e.g. "HtmlHelp : %s". It must contain exactly one %s
- wxFrame* GetRelatedFrame() const;
+ // frame title, e.g. "HtmlHelp : %s". It must contain exactly one %s
+ wxFrame* GetRelatedFrame();
- void SetRelatedStatusBar(int bar);
+ void SetRelatedStatusBar(int bar);
// after(!) calling SetRelatedFrame, this sets statusbar slot where messages
// will be displayed. Default is -1 = no messages.
- void SetFonts(wxString normal_face, int normal_italic_mode, wxString fixed_face, int fixed_italic_mode, int *sizes);
+ void SetFonts(wxString normal_face, int normal_italic_mode,
+ wxString fixed_face, int fixed_italic_mode, int *LIST);
// sets fonts to be used when displaying HTML page.
// *_italic_mode can be either wxSLANT or wxITALIC
- void SetTitle(const char* title);
+ void SetTitle(const char* title);
// Sets the title of the window
// (depending on the information passed to SetRelatedFrame() method)
- void SetBorders(int b);
+ void SetBorders(int b);
// Sets space between text and window borders.
- //virtual void ReadCustomization(wxConfigBase *cfg, wxString path = wxEmptyString);
+ void ReadCustomization(wxConfigBase *cfg, char* path = "");
// saves custom settings into cfg config. it will use the path 'path'
// if given, otherwise it will save info into currently selected path.
// saved values : things set by SetFonts, SetBorders.
- //virtual void WriteCustomization(wxConfigBase *cfg, wxString path = wxEmptyString);
+
+ void WriteCustomization(wxConfigBase *cfg, char* path = "");
// ...
- bool HistoryBack();
- bool HistoryForward();
+ bool HistoryBack();
+ bool HistoryForward();
// Goes to previous/next page (in browsing history)
// Returns TRUE if successful, FALSE otherwise
- void HistoryClear();
+ void HistoryClear();
// Resets history
- //wxHtmlContainerCell* GetInternalRepresentation() const;
+ wxHtmlContainerCell* GetInternalRepresentation();
// Returns pointer to conteiners/cells structure.
// It should be used ONLY when printing
- //static void AddFilter(wxHtmlFilter *filter);
- // Adds input filter
+ wxHtmlWinParser* GetParser();
+
- /* This function needs to be eventified! */
- //virtual void OnLinkClicked(const char* link);
+ void base_OnLinkClicked(const char* link);
// called when users clicked on hypertext link. Default behavior is to
// call LoadPage(loc)
-
- //static void CleanUpStatics();
- // cleans static variables
};
-enum {
- wxID_HTML_PANEL,
- wxID_HTML_BACK,
- wxID_HTML_FORWARD,
- wxID_HTML_TREECTRL,
- wxID_HTML_INDEXPAGE,
- wxID_HTML_INDEXLIST,
- wxID_HTML_NOTEBOOK,
- wxID_HTML_SEARCHPAGE,
- wxID_HTML_SEARCHTEXT,
- wxID_HTML_SEARCHLIST,
- wxID_HTML_SEARCHBUTTON
-};
+// Static methods are mapped to stand-alone functions
+%inline %{
+ void wxHtmlWindow_AddFilter(wxHtmlFilter *filter) {
+ wxHtmlWindow::AddFilter(filter);
+ }
+%}
-class wxHtmlHelpController : public wxEvtHandler
-{
-public:
- wxHtmlHelpController();
- ~wxHtmlHelpController();
-
- // Images:
- enum {
- IMG_Book = 0,
- IMG_Folder,
- IMG_Page
- };
-
- void SetTitleFormat(const wxString& format) {m_TitleFormat = format;}
- // Sets format of title of the frame. Must contain exactly one "%s"
- // (for title of displayed HTML page)
-
- void SetTempDir(const wxString& path);
- // Sets directory where temporary files are stored.
- // These temp files are index & contents file in binary (much faster to read)
- // form. These files are NOT deleted on program's exit.
-
- bool AddBook(const wxString& book, bool show_wait_msg = FALSE);
- // Adds new book. 'book' is location of .htb file (stands for "html book").
- // See documentation for details on its format.
- // Returns success.
- // If show_wait_msg == true then message window with "loading book..." is displayed
-
- void Display(const wxString& x);
- // Displays page x. If not found it will offect the user a choice of searching
- // books.
- // Looking for the page runs in these steps:
- // 1. try to locate file named x (if x is for example "doc/howto.htm")
- // 2. try to open starting page of book x
- // 3. try to find x in contents (if x is for example "How To ...")
- // 4. try to find x in index (if x is for example "How To ...")
- // 5. offer searching and if the user agree, run KeywordSearch
- %name(DisplayID) void Display(const int id);
- // Alternative version that works with numeric ID.
- // (uses extension to MS format, <param name="ID" value=id>, see docs)
-
- void DisplayContents();
- // Displays help window and focuses contents.
-
- void DisplayIndex();
- // Displays help window and focuses index.
-
- bool KeywordSearch(const wxString& keyword);
- // Searches for keyword. Returns TRUE and display page if found, return
- // FALSE otherwise
- // Syntax of keyword is Altavista-like:
- // * words are separated by spaces
- // (but "\"hello world\"" is only one world "hello world")
- // * word may be pretended by + or -
- // (+ : page must contain the word ; - : page can't contain the word)
- // * if there is no + or - before the word, + is default
-
- void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString);
- // Assigns config object to the controller. This config is then
- // used in subsequent calls to Read/WriteCustomization of both help
- // controller and it's wxHtmlWindow
-
- void ReadCustomization(wxConfigBase *cfg, wxString path = wxEmptyString);
- // saves custom settings into cfg config. it will use the path 'path'
- // if given, otherwise it will save info into currently selected path.
- // saved values : things set by SetFonts, SetBorders.
- void WriteCustomization(wxConfigBase *cfg, wxString path = wxEmptyString);
- // ...
-};
-class wxHtmlHelpSystem : public wxHtmlHelpController
-{
- public:
- wxHtmlHelpSystem() {};
- ~wxHtmlHelpSystem() {};
-
- bool AddBookParam(const wxString& title, const wxString& contfile,
- const wxString& indexfile=wxEmptyString, const wxString& deftopic=wxEmptyString,
- const wxString& path=wxEmptyString, bool show_wait_msg=FALSE);
- // Alternative to AddBook(wxString& hhpfile)
- wxToolBar* CreateToolBar(wxFrame* frame);
- // creates a dockable toolbar for the frame, containing hide/show, back and forward buttons
- wxTreeCtrl* CreateContentsTree(wxWindow* parent);
- // creates a treecontrol with imagelist for books, folders etc and id wxID_HTML_TREECTRL
- wxListBox* CreateIndexList(wxWindow* parent);
- // creates a listbox with the right id
- virtual void CreateHelpWindow();
- // Slightly different version than in wxHtmlHelpController; uses helpers above
- // Do nothing if the window already exists
- void SetControls(wxFrame* frame, wxHtmlWindow* htmlwin,
- wxTreeCtrl* contents=NULL, wxListBox* index=NULL,
- wxListBox* searchlist=NULL);
- // alternative for CreateHelpWindow(), sets frame, htmlwindow, contents tree, index
- // listbox and searchlist listbox. If null, their functionality won't be used
-
- // Some extra accessor functions
- wxFrame* GetFrame() { return m_Frame; }
- wxHtmlWindow* GetHtmlWindow() { return m_HtmlWin; }
- wxTreeCtrl* GetContentsTree() { return m_ContentsBox; }
- wxListBox* GetIndexList() { return m_IndexBox; }
- wxListBox* GetSearchList() { return m_SearchList; }
- wxImageList* GetContentsImageList() { return m_ContentsImageList; }
- // public interface for wxHtmlHelpControllers handlers, so wxPython can call them
- void OnToolbar(wxCommandEvent& event);
- void OnContentsSel(wxTreeEvent& event) {wxHtmlHelpController::OnContentsSel(event);}
- void OnIndexSel(wxCommandEvent& event) {wxHtmlHelpController::OnIndexSel(event);}
- void OnSearchSel(wxCommandEvent& event) {wxHtmlHelpController::OnSearchSel(event);}
- void OnSearch(wxCommandEvent& event) {wxHtmlHelpController::OnSearch(event);}
- void OnCloseWindow(wxCloseEvent& event);
-
- // some more protected functions that should be accessible from wxPython
- void RefreshLists();
- void CreateContents() { if (!m_IndexBox) return; wxHtmlHelpController::CreateContents(); }
- // Adds items to m_Contents tree control
- void CreateIndex() { if (! m_ContentsBox) return; wxHtmlHelpController::CreateIndex(); }
- // Adds items to m_IndexList
-};
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
-// just for fun, an Altavista-like search engine (the gems that Vaclav has hidden in wxHtml...)
-// but not for wxMSW because it's not DLL exported
-//#ifndef __WXMSW__
-#ifdef THIS_IS_NOT_DEFINED_OKAY
-class wxSearchEngine
-{
- public:
- wxSearchEngine() : wxObject() {m_Keyword = NULL;}
- ~wxSearchEngine() {if (m_Keyword) free(m_Keyword);}
-
- void LookFor(const wxString& keyword);
- // Sets the keyword we will be searching for
-
- bool Scan(wxInputStream *stream);
- // Scans the stream for the keyword.
- // Returns TRUE if the stream contains keyword, fALSE otherwise
- %addmethods {
- bool ScanFile(const wxString& filename) {
- if (filename.IsEmpty())
- return false;
- wxFileInputStream istr(filename);
- return self->Scan(&istr);
- }
- }
-};
-#endif
+%{
+ extern "C" SWIGEXPORT(void) inithtmlhelpc();
+%}
-//---------------------------------------------------------------------------
%init %{
- /* This is a bit cheesy. SWIG happens to call the dictionary d...
+#if 0
+ /* This is a bit cheesy. SWIG happens to call the dictionary d...
* I save it here, 'cause I don't know how to get it back later! */
mod_dict = d;
- wxPyThreadState = PyThreadState_Get();
+#endif
+
+ //inithtmlhelpc();
+
wxClassInfo::CleanUpClasses();
wxClassInfo::InitializeClasses();
+#if 0
/* specifically add our python tag handler; it doesn't seem to
* happen by itself... */
wxHtmlWinParser::AddModule(new HTML_ModulePythonTag());
-
+#endif
+
// Until wxFileSystem is wrapped...
#if wxUSE_FS_ZIP
wxFileSystem::AddHandler(new wxZipFSHandler);
#endif
%}
+//----------------------------------------------------------------------
+// And this gets appended to the shadow class file.
+//----------------------------------------------------------------------
+
+%pragma(python) include="_extras.py";
+
//---------------------------------------------------------------------------
+