home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / samples / html / about / about.cpp next >
C/C++ Source or Header  |  2002-11-09  |  6KB  |  188 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/imagpng.h"
  26. #include "wx/wxhtml.h"
  27. #include "wx/statline.h"
  28.  
  29. // ----------------------------------------------------------------------------
  30. // private classes
  31. // ----------------------------------------------------------------------------
  32.  
  33.  
  34. // Define a new application type, each program should derive a class from wxApp
  35.    class MyApp : public wxApp
  36.    {
  37.    public:
  38.     // override base class virtuals
  39.     // ----------------------------
  40.  
  41.     // this one is called on application startup and is a good place for the app
  42.     // initialization (doing it here and not in the ctor allows to have an error
  43.     // return: if OnInit() returns false, the application terminates)
  44.       virtual bool OnInit();
  45.    };
  46.  
  47. // Define a new frame type: this is going to be our main frame
  48.    class MyFrame : public wxFrame
  49.    {
  50.    public:
  51.     // ctor(s)
  52.       MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
  53.  
  54.     // event handlers (these functions should _not_ be virtual)
  55.       void OnQuit(wxCommandEvent& event);
  56.       void OnAbout(wxCommandEvent& event);
  57.  
  58.    private:
  59.     // any class wishing to process wxWindows events must use this macro
  60.     DECLARE_EVENT_TABLE()
  61.    };
  62.  
  63. // ----------------------------------------------------------------------------
  64. // constants
  65. // ----------------------------------------------------------------------------
  66.  
  67. // IDs for the controls and the menu commands
  68.    enum
  69.    {
  70.     // menu items
  71.    Minimal_Quit = 1,
  72.    Minimal_About,
  73.    Minimal_Back,
  74.    Minimal_Forward,
  75.  
  76.     // controls start here (the numbers are, of course, arbitrary)
  77.    Minimal_Text = 1000
  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_About, MyFrame::OnAbout)
  90.    END_EVENT_TABLE()
  91.  
  92.    // Create a new application object: this macro will allow wxWindows to create
  93.    // the application object during program execution (it's better than using a
  94.    // static object for many reasons) and also declares the accessor function
  95.    // wxGetApp() which will return the reference of the right type (i.e. MyApp and
  96.    // not wxApp)
  97.    IMPLEMENT_APP(MyApp)
  98.  
  99.    // ============================================================================
  100.    // implementation
  101.    // ============================================================================
  102.  
  103.    // ----------------------------------------------------------------------------
  104.    // the application class
  105.    // ----------------------------------------------------------------------------
  106.    // `Main program' equivalent: the program execution "starts" here
  107.    bool MyApp::OnInit()
  108.    {
  109.     wxImage::AddHandler(new wxPNGHandler);
  110.     // Create the main application window
  111.       MyFrame *frame = new MyFrame(_("wxHtmlWindow testing application"),
  112.          wxPoint(50, 50), wxSize(150, 50));
  113.  
  114.     // Show it and tell the application that it's our main window
  115.     // @@@ what does it do exactly, in fact? is it necessary here?
  116.       frame->Show(TRUE);
  117.       SetTopWindow(frame);
  118.  
  119.  
  120.     // success: wxApp::OnRun() will be called which will enter the main message
  121.     // loop and the application will run. If we returned FALSE here, the
  122.     // application would exit immediately.
  123.       return TRUE;
  124.    }
  125.  
  126. // ----------------------------------------------------------------------------
  127. // main frame
  128. // ----------------------------------------------------------------------------
  129.  
  130.  
  131. // frame constructor
  132.    MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
  133.    : wxFrame((wxFrame *)NULL, -1, title, pos, size)
  134.    {
  135.     // create a menu bar
  136.       wxMenu *menuFile = new wxMenu;
  137.  
  138.       menuFile->Append(Minimal_About, _("&About"));
  139.       menuFile->Append(Minimal_Quit, _("E&xit"));
  140.  
  141.     // now append the freshly created menu to the menu bar...
  142.       wxMenuBar *menuBar = new wxMenuBar;
  143.       menuBar->Append(menuFile, _("&File"));
  144.  
  145.     // ... and attach this menu bar to the frame
  146.       SetMenuBar(menuBar);
  147.    }
  148.  
  149.  
  150. // event handlers
  151.  
  152.    void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
  153.    {
  154.     // TRUE is to force the frame to close
  155.       Close(TRUE);
  156.    }
  157.  
  158.    void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
  159.    {
  160.         wxBoxSizer *topsizer;
  161.         wxHtmlWindow *html;
  162.         wxDialog dlg(this, -1, wxString(_("About")));
  163.  
  164.         topsizer = new wxBoxSizer(wxVERTICAL);
  165.  
  166.         html = new wxHtmlWindow(&dlg, -1, wxDefaultPosition, wxSize(380, 160), wxHW_SCROLLBAR_NEVER);
  167.         html -> SetBorders(0);
  168.         html -> LoadPage(wxT("data/about.htm"));
  169.         html -> SetSize(html -> GetInternalRepresentation() -> GetWidth(), 
  170.                         html -> GetInternalRepresentation() -> GetHeight());
  171.  
  172.         topsizer -> Add(html, 1, wxALL, 10);
  173.  
  174.         topsizer -> Add(new wxStaticLine(&dlg, -1), 0, wxEXPAND | wxLEFT | wxRIGHT, 10);
  175.                         
  176.         wxButton *bu1 = new wxButton(&dlg, wxID_OK, _("OK"));
  177.         bu1 -> SetDefault();
  178.  
  179.         topsizer -> Add(bu1, 0, wxALL | wxALIGN_RIGHT, 15);
  180.  
  181.         dlg.SetAutoLayout(TRUE);
  182.         dlg.SetSizer(topsizer);
  183.         topsizer -> Fit(&dlg);
  184.  
  185.         dlg.ShowModal();
  186.     }
  187.  
  188.