home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2233.zip / wxOS2-2_3_3.zip / wxWindows-2.3.3 / samples / html / help / help.cpp next >
C/C++ Source or Header  |  2002-09-08  |  7KB  |  206 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        test.cpp
  3. // Purpose:     wxHtml testing example
  4. /////////////////////////////////////////////////////////////////////////////
  5.  
  6. #if defined(__GNUG__) && !defined(__APPLE__)
  7.     #pragma implementation "help.cpp"
  8.     #pragma interface "help.cpp"
  9. #endif
  10.  
  11. // For compilers that support precompilation, includes "wx/wx.h".
  12. #include "wx/wxprec.h"
  13.  
  14. #ifdef __BORLANDC__
  15.     #pragma hdrstop
  16. #endif
  17.  
  18. // for all others, include the necessary headers (this file is usually all you
  19. // need because it includes almost all "standard" wxWindows headers
  20. #ifndef WX_PRECOMP
  21.     #include "wx/wx.h"
  22. #endif
  23.  
  24. #include "wx/image.h"
  25. #include "wx/html/helpfrm.h"
  26. #include "wx/html/helpctrl.h"
  27. #include "wx/filesys.h"
  28. #include "wx/fs_zip.h"
  29.  
  30. // ----------------------------------------------------------------------------
  31. // private classes
  32. // ----------------------------------------------------------------------------
  33.  
  34.  
  35. // Define a new application type, each program should derive a class from wxApp
  36.    class MyApp : public wxApp
  37.    {
  38.    public:
  39.     // override base class virtuals
  40.     // ----------------------------
  41.  
  42.     // this one is called on application startup and is a good place for the app
  43.     // initialization (doing it here and not in the ctor allows to have an error
  44.     // return: if OnInit() returns false, the application terminates)
  45.       virtual bool OnInit();
  46.    };
  47.  
  48.  
  49.  
  50. // Define a new frame type: this is going to be our main frame
  51.    class MyFrame : public wxFrame
  52.    {
  53.    public:
  54.     // ctor(s)
  55.       MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
  56.  
  57.     // event handlers (these functions should _not_ be virtual)
  58.       void OnQuit(wxCommandEvent& event);
  59.       void OnHelp(wxCommandEvent& event);
  60.       void OnClose(wxCloseEvent& event);
  61.    private:
  62.       wxHtmlHelpController help;
  63.    
  64.     // any class wishing to process wxWindows events must use this macro
  65.     DECLARE_EVENT_TABLE()
  66.    };
  67.  
  68. // ----------------------------------------------------------------------------
  69. // constants
  70. // ----------------------------------------------------------------------------
  71.  
  72. // IDs for the controls and the menu commands
  73.    enum
  74.    {
  75.     // menu items
  76.    Minimal_Quit = 1,
  77.    Minimal_Help
  78.    };
  79.  
  80. // ----------------------------------------------------------------------------
  81. // event tables and other macros for wxWindows
  82. // ----------------------------------------------------------------------------
  83.  
  84. // the event tables connect the wxWindows events with the functions (event
  85. // handlers) which process them. It can be also done at run-time, but for the
  86. // simple menu events like this the static method is much simpler.
  87.    BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  88.    EVT_MENU(Minimal_Quit,  MyFrame::OnQuit)
  89.    EVT_MENU(Minimal_Help, MyFrame::OnHelp)
  90.    EVT_CLOSE(MyFrame::OnClose)
  91.    END_EVENT_TABLE()
  92.  
  93.    // Create a new application object: this macro will allow wxWindows to create
  94.    // the application object during program execution (it's better than using a
  95.    // static object for many reasons) and also declares the accessor function
  96.    // wxGetApp() which will return the reference of the right type (i.e. MyApp and
  97.    // not wxApp)
  98.    IMPLEMENT_APP(MyApp)
  99.  
  100.    // ============================================================================
  101.    // implementation
  102.    // ============================================================================
  103.  
  104.    // ----------------------------------------------------------------------------
  105.    // the application class
  106.    // ----------------------------------------------------------------------------
  107.    // `Main program' equivalent: the program execution "starts" here
  108.    bool MyApp::OnInit()
  109.    {
  110.       wxInitAllImageHandlers();
  111. #if wxUSE_STREAMS && wxUSE_ZIPSTREAM && wxUSE_ZLIB 
  112.       wxFileSystem::AddHandler(new wxZipFSHandler);
  113. #endif
  114.       SetVendorName("wxWindows");
  115.       SetAppName("wxHTMLHelp"); 
  116.  
  117.     // Create the main application window
  118.       MyFrame *frame = new MyFrame("HTML Help Sample",
  119.          wxPoint(50, 50), wxSize(150, 50));
  120.  
  121.     // Show it and tell the application that it's our main window
  122.     // @@@ what does it do exactly, in fact? is it necessary here?
  123.       frame->Show(TRUE);
  124.       SetTopWindow(frame);
  125.  
  126.  
  127.     // success: wxApp::OnRun() will be called which will enter the main message
  128.     // loop and the application will run. If we returned FALSE here, the
  129.     // application would exit immediately.
  130.       return TRUE;
  131.    }
  132.  
  133. // ----------------------------------------------------------------------------
  134. // main frame
  135. // ----------------------------------------------------------------------------
  136.  
  137.  
  138. // frame constructor
  139.    MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
  140.    : wxFrame((wxFrame *)NULL, -1, title, pos, size), 
  141.      help(wxHF_DEFAULT_STYLE | wxHF_OPEN_FILES)
  142.    {
  143.     // create a menu bar
  144.       wxMenu *menuFile = new wxMenu;
  145.  
  146.       menuFile->Append(Minimal_Help, "&Help");
  147.       menuFile->Append(Minimal_Quit, "E&xit");
  148.  
  149.     // now append the freshly created menu to the menu bar...
  150.       wxMenuBar *menuBar = new wxMenuBar;
  151.       menuBar->Append(menuFile, "&File");
  152.  
  153.     // ... and attach this menu bar to the frame
  154.       SetMenuBar(menuBar);
  155.  
  156.       help.UseConfig(wxConfig::Get());
  157.       bool ret;
  158. #if defined(__WXMAC__) && !defined(__DARWIN__)
  159.       ret = help.AddBook(":helpfiles:testing.hhp");
  160. #else
  161.       help.SetTempDir(".");
  162.       ret = help.AddBook("helpfiles/testing.hhp");
  163. #endif
  164.       if (! ret)
  165.         wxMessageBox("Failed adding book helpfiles/testing.hhp");
  166. #if defined(__WXMAC__) && !defined(__DARWIN__)
  167.       ret = help.AddBook(":helpfiles:another.hhp");
  168. #else
  169.       ret = help.AddBook("helpfiles/another.hhp");
  170. #endif
  171.       if (! ret)
  172.         wxMessageBox("Failed adding book helpfiles/another.hhp");
  173.    }
  174.  
  175.  
  176. // event handlers
  177.  
  178.    void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
  179.    {
  180.     // TRUE is to force the frame to close
  181.       Close(TRUE);
  182.    }
  183.  
  184.    void MyFrame::OnHelp(wxCommandEvent& WXUNUSED(event))
  185.    {
  186.        help.Display("Test HELPFILE");
  187.    }
  188.  
  189.    void MyFrame::OnClose(wxCloseEvent& event)
  190.    {
  191.        // Close the help frame; this will cause the config data to
  192.        // get written.
  193.        if ( help.GetFrame() ) // returns NULL if no help frame active
  194.            help.GetFrame()->Close(TRUE);
  195.        // now we can safely delete the config pointer
  196.        event.Skip();   
  197.        delete wxConfig::Set(NULL);
  198.    }
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.