]>
git.saurik.com Git - wxWidgets.git/blob - samples/help/demo.cpp
a2233f7fa715f76ad6daa879bc73508f88f0c6ef
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxHelpController demo 
   4 // Author:      Karsten Ballueder 
   8 // Copyright:   (c) Karsten Ballueder, Julian Smart 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 // ============================================================================ 
  14 // ============================================================================ 
  16 // ---------------------------------------------------------------------------- 
  18 // ---------------------------------------------------------------------------- 
  20 // For compilers that support precompilation, includes "wx/wx.h". 
  21 #include "wx/wxprec.h" 
  27 // for all others, include the necessary headers (this file is usually all you 
  28 // need because it includes almost all "standard" wxWindows headers 
  33 // define this to 1 to use HTML help even under Windows (by default, Windows 
  34 // version will HLP-based help) 
  35 #define USE_HTML_HELP 1 
  37 #   include "wx/helpbase.h" 
  42 // ---------------------------------------------------------------------------- 
  44 // ---------------------------------------------------------------------------- 
  45 // the application icon 
  46 #if defined(__WXGTK__) || defined(__WXMOTIF__) 
  47     #include "mondrian.xpm" 
  50 // ---------------------------------------------------------------------------- 
  52 // ---------------------------------------------------------------------------- 
  54 // Define a new application type, each program should derive a class from wxApp 
  55 class MyApp 
: public wxApp
 
  58     // override base class virtuals 
  59     // ---------------------------- 
  61     // this one is called on application startup and is a good place for the app 
  62     // initialization (doing it here and not in the ctor allows to have an error 
  63     // return: if OnInit() returns false, the application terminates) 
  64     virtual bool OnInit(); 
  67 // Define a new frame type: this is going to be our main frame 
  68 class MyFrame 
: public wxFrame
 
  72     MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
); 
  74     // event handlers (these functions should _not_ be virtual) 
  75     void OnQuit(wxCommandEvent
& event
); 
  76     void OnHelp(wxCommandEvent
& event
); 
  79    wxHelpController m_help
; 
  81     // any class wishing to process wxWindows events must use this macro 
  85 // ---------------------------------------------------------------------------- 
  87 // ---------------------------------------------------------------------------- 
  89 // IDs for the controls and the menu commands 
  95     HelpDemo_Help_Classes
, 
  96     HelpDemo_Help_Functions
, 
 100     HelpDemo_Help_Netscape
, 
 101     HelpDemo_Help_Search
, 
 102     // controls start here (the numbers are, of course, arbitrary) 
 103     HelpDemo_Text 
= 1000, 
 106 // ---------------------------------------------------------------------------- 
 107 // event tables and other macros for wxWindows 
 108 // ---------------------------------------------------------------------------- 
 110 // the event tables connect the wxWindows events with the functions (event 
 111 // handlers) which process them. It can be also done at run-time, but for the 
 112 // simple menu events like this the static method is much simpler. 
 113 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
) 
 114     EVT_MENU(HelpDemo_Quit
,  MyFrame::OnQuit
) 
 115     EVT_MENU(HelpDemo_Help_Index
, MyFrame::OnHelp
) 
 116     EVT_MENU(HelpDemo_Help_Classes
, MyFrame::OnHelp
) 
 117     EVT_MENU(HelpDemo_Help_Functions
, MyFrame::OnHelp
) 
 118     EVT_MENU(HelpDemo_Help_Help
, MyFrame::OnHelp
) 
 119     EVT_MENU(HelpDemo_Help_KDE
, MyFrame::OnHelp
) 
 120     EVT_MENU(HelpDemo_Help_GNOME
, MyFrame::OnHelp
) 
 121     EVT_MENU(HelpDemo_Help_Netscape
, MyFrame::OnHelp
) 
 122     EVT_MENU(HelpDemo_Help_Search
, MyFrame::OnHelp
) 
 125 // Create a new application object: this macro will allow wxWindows to create 
 126 // the application object during program execution (it's better than using a 
 127 // static object for many reasons) and also declares the accessor function 
 128 // wxGetApp() which will return the reference of the right type (i.e. MyApp and 
 132 // ============================================================================ 
 134 // ============================================================================ 
 136 // ---------------------------------------------------------------------------- 
 137 // the application class 
 138 // ---------------------------------------------------------------------------- 
 140 // `Main program' equivalent: the program execution "starts" here 
 143     // Create the main application window 
 144     MyFrame 
*frame 
= new MyFrame("HelpDemo wxWindows App", 
 145                                  wxPoint(50, 50), wxSize(450, 340)); 
 150     // success: wxApp::OnRun() will be called which will enter the main message 
 151     // loop and the application will run. If we returned FALSE here, the 
 152     // application would exit immediately. 
 156 // ---------------------------------------------------------------------------- 
 158 // ---------------------------------------------------------------------------- 
 161 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
) 
 162        : wxFrame((wxFrame 
*)NULL
, -1, title
, pos
, size
) 
 164     // set the frame icon 
 165     SetIcon(wxICON(mondrian
)); 
 168     wxMenu 
*menuFile 
= new wxMenu
; 
 170     menuFile
->Append(HelpDemo_Help_Index
, "&Help Index..."); 
 171     menuFile
->Append(HelpDemo_Help_Classes
, "&Help on Classes..."); 
 172     menuFile
->Append(HelpDemo_Help_Functions
, "&Help on Functions..."); 
 173     menuFile
->Append(HelpDemo_Help_Help
, "&About Help Demo..."); 
 174     menuFile
->AppendSeparator(); 
 175     menuFile
->Append(HelpDemo_Help_Search
, "&Search help..."); 
 178     menuFile
->AppendSeparator(); 
 179     menuFile
->Append(HelpDemo_Help_KDE
, "Use &KDE"); 
 180     menuFile
->Append(HelpDemo_Help_GNOME
, "Use &GNOME"); 
 181     menuFile
->Append(HelpDemo_Help_Netscape
, "Use &Netscape"); 
 184     menuFile
->AppendSeparator(); 
 185     menuFile
->Append(HelpDemo_Quit
, "E&xit"); 
 187     // now append the freshly created menu to the menu bar... 
 188     wxMenuBar 
*menuBar 
= new wxMenuBar
; 
 189     menuBar
->Append(menuFile
, "&File"); 
 191     // ... and attach this menu bar to the frame 
 194     // create a status bar just for fun (by default with 1 pane only) 
 196     SetStatusText("Welcome to wxWindows!"); 
 198     // now create some controls 
 200     // a panel first - if there were several controls, it would allow us to 
 201     // navigate between them from the keyboard 
 202     wxPanel 
*panel 
= new wxPanel(this, -1, wxPoint(0, 0), wxSize(400, 200)); 
 204     // and a static control whose parent is the panel 
 205     (void)new wxStaticText(panel
, -1, "Hello, world!", wxPoint(10, 10)); 
 207     // initialise the help system: this means that we'll use doc.hlp file under 
 208     // Windows and that the HTML docs are in the subdirectory doc for platforms 
 210     m_help
.Initialize("doc"); 
 216 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
)) 
 218     // TRUE is to force the frame to close 
 222 void MyFrame::OnHelp(wxCommandEvent
& event
) 
 224    switch(event
.GetId()) 
 227    // Note: these DisplaySection calls use ids that are specific to wxExtHelpController 
 228    // (on Unix). For WinHelp, we'd need to use different context ids. 
 230    case HelpDemo_Help_Classes
: 
 231       m_help
.DisplaySection(1); 
 233    case HelpDemo_Help_Functions
: 
 234       m_help
.DisplaySection(4); 
 236    case HelpDemo_Help_Help
: 
 237       m_help
.DisplaySection(5); 
 240    // These three calls are only used by wxExtHelpController 
 242    case HelpDemo_Help_KDE
: 
 243       m_help
.SetViewer("kdehelp"); 
 245    case HelpDemo_Help_GNOME
: 
 246       m_help
.SetViewer("gnome-help-browser"); 
 248    case HelpDemo_Help_Netscape
: 
 249       m_help
.SetViewer("netscape", wxHELP_NETSCAPE
); 
 252    case HelpDemo_Help_Search
: 
 254       wxString key 
= wxGetTextFromUser("Search for?", 
 255                                        "Search help for keyword", 
 259          m_help
.KeywordSearch(key
); 
 262    case HelpDemo_Help_Index
: 
 264       m_help
.DisplayContents();