home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / samples / html / zip / zip.cpp < prev    next >
C/C++ Source or Header  |  2002-11-09  |  6KB  |  184 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        test.cpp
  3. // Purpose:     wxHtml testing example
  4. /////////////////////////////////////////////////////////////////////////////
  5.  
  6. #if defined(__GNUG__) && !defined(__APPLE__)
  7.     #pragma implementation "test.cpp"
  8.     #pragma interface "test.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/htmlwin.h"
  26. #include "wx/fs_zip.h"
  27.  
  28. // ----------------------------------------------------------------------------
  29. // private classes
  30. // ----------------------------------------------------------------------------
  31.  
  32. // Define a new application type, each program should derive a class from wxApp
  33. class MyApp : public wxApp
  34. {
  35. public:
  36.     // override base class virtuals
  37.     // ----------------------------
  38.  
  39.     // this one is called on application startup and is a good place for the app
  40.     // initialization (doing it here and not in the ctor allows to have an error
  41.     // return: if OnInit() returns false, the application terminates)
  42.     virtual bool OnInit();
  43. };
  44.  
  45. // Define a new frame type: this is going to be our main frame
  46. class MyFrame : public wxFrame
  47. {
  48. public:
  49.     // ctor(s)
  50.     MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
  51.  
  52.     // event handlers (these functions should _not_ be virtual)
  53.     void OnQuit(wxCommandEvent& event);
  54.     void OnBack(wxCommandEvent& event);
  55.     void OnForward(wxCommandEvent& event);
  56.  
  57. private:
  58.     // any class wishing to process wxWindows events must use this macro
  59.     DECLARE_EVENT_TABLE()
  60. };
  61.  
  62. // ----------------------------------------------------------------------------
  63. // constants
  64. // ----------------------------------------------------------------------------
  65.  
  66. // IDs for the controls and the menu commands
  67. enum
  68. {
  69.     // menu items
  70.     Minimal_Quit = 1,
  71.     Minimal_Back,
  72.     Minimal_Forward
  73. };
  74.  
  75. // ----------------------------------------------------------------------------
  76. // event tables and other macros for wxWindows
  77. // ----------------------------------------------------------------------------
  78.  
  79. // the event tables connect the wxWindows events with the functions (event
  80. // handlers) which process them. It can be also done at run-time, but for the
  81. // simple menu events like this the static method is much simpler.
  82. BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  83.     EVT_MENU(Minimal_Quit,  MyFrame::OnQuit)
  84.     EVT_MENU(Minimal_Back, MyFrame::OnBack)
  85.     EVT_MENU(Minimal_Forward, MyFrame::OnForward)
  86. END_EVENT_TABLE()
  87.  
  88. // Create a new application object: this macro will allow wxWindows to create
  89. // the application object during program execution (it's better than using a
  90. // static object for many reasons) and also declares the accessor function
  91. // wxGetApp() which will return the reference of the right type (i.e. MyApp and
  92. // not wxApp)
  93. IMPLEMENT_APP(MyApp)
  94.  
  95. // ============================================================================
  96. // implementation
  97. // ============================================================================
  98.  
  99. // ----------------------------------------------------------------------------
  100. // the application class
  101. // ----------------------------------------------------------------------------
  102. // `Main program' equivalent: the program execution "starts" here
  103. bool MyApp::OnInit()
  104. {
  105. #if wxUSE_LIBPNG
  106.     wxImage::AddHandler(new wxPNGHandler);
  107. #endif
  108. #if wxUSE_LIBJPEG
  109.     wxImage::AddHandler(new wxJPEGHandler);
  110. #endif
  111.  
  112.     wxFileSystem::AddHandler(new wxZipFSHandler);
  113.  
  114.     // Create the main application window
  115.     MyFrame *frame = new MyFrame(_("wxHtmlWindow testing application"),
  116.         wxPoint(50, 50), wxSize(640, 480) );
  117.  
  118.     // Show it and tell the application that it's our main window
  119.     // @@@ what does it do exactly, in fact? is it necessary here?
  120.     frame->Show(TRUE);
  121.     SetTopWindow(frame);
  122.  
  123.     // success: wxApp::OnRun() will be called which will enter the main message
  124.     // loop and the application will run. If we returned FALSE here, the
  125.     // application would exit immediately.
  126.  
  127.     return TRUE;
  128. }
  129.  
  130. // ----------------------------------------------------------------------------
  131. // main frame
  132. // ----------------------------------------------------------------------------
  133.  
  134. wxHtmlWindow *html;
  135.  
  136. // frame constructor
  137. MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
  138. : wxFrame((wxFrame *)NULL, -1, title, pos, size)
  139. {
  140.     // create a menu bar
  141.     wxMenu *menuFile = new wxMenu;
  142.     wxMenu *menuNav = new wxMenu;
  143.  
  144.     menuFile->Append(Minimal_Quit, _("E&xit"));
  145.     menuNav->Append(Minimal_Back, _("Go &BACK"));
  146.     menuNav->Append(Minimal_Forward, _("Go &FORWARD"));
  147.  
  148.     // now append the freshly created menu to the menu bar...
  149.     wxMenuBar *menuBar = new wxMenuBar;
  150.     menuBar->Append(menuFile, _("&File"));
  151.     menuBar->Append(menuNav, _("&Navigate"));
  152.  
  153.     // ... and attach this menu bar to the frame
  154.     SetMenuBar(menuBar);
  155.  
  156.     CreateStatusBar(1);
  157.  
  158.     {
  159.     html = new wxHtmlWindow(this);
  160.     html -> SetRelatedFrame(this, _("HTML : %s"));
  161.     html -> SetRelatedStatusBar(0);
  162.     html -> LoadPage(wxT("start.htm"));
  163.     }
  164. }
  165.  
  166.  
  167. // event handlers
  168.  
  169. void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
  170. {
  171.     // TRUE is to force the frame to close
  172.     Close(TRUE);
  173. }
  174.  
  175. void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event))
  176. {
  177.     if (!html -> HistoryBack()) wxMessageBox(_("You reached prehistory era!"));
  178. }
  179.  
  180. void MyFrame::OnForward(wxCommandEvent& WXUNUSED(event))
  181. {
  182.     if (!html -> HistoryForward()) wxMessageBox(_("No more items in history!"));
  183. }
  184.