]> git.saurik.com Git - wxWidgets.git/blob - src/msw/helpwin.cpp
wxFileSystem now compiles if wxUSE_HTML (required by wxHTML)
[wxWidgets.git] / src / msw / helpwin.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: helpwin.cpp
3 // Purpose: Help system: WinHelp implementation
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 04/01/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart and Markus Holzem
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifdef __GNUG__
13 #pragma implementation "helpwin.h"
14 #endif
15
16 // For compilers that support precompilation, includes "wx.h".
17 #include "wx/wxprec.h"
18
19 #ifdef __BORLANDC__
20 #pragma hdrstop
21 #endif
22
23 #ifndef WX_PRECOMP
24 #include "wx/defs.h"
25 #endif
26
27 #include "wx/msw/helpwin.h"
28
29 #if wxUSE_HELP
30 #include <time.h>
31
32 #ifdef __WXMSW__
33 #include "wx/msw/private.h"
34 #endif
35
36 #include <string.h>
37
38 // MAX path length
39 #define _MAXPATHLEN 500
40
41 // MAX length of Help descriptor
42 #define _MAX_HELP_LEN 500
43
44 IMPLEMENT_DYNAMIC_CLASS(wxWinHelpController, wxHelpControllerBase)
45
46 wxWinHelpController::wxWinHelpController(void)
47 {
48 m_helpFile = "";
49 }
50
51 wxWinHelpController::~wxWinHelpController(void)
52 {
53 }
54
55 bool wxWinHelpController::Initialize(const wxString& filename)
56 {
57 m_helpFile = filename;
58 return TRUE;
59 }
60
61 bool wxWinHelpController::LoadFile(const wxString& file)
62 {
63 m_helpFile = file;
64 return TRUE;
65 }
66
67 bool wxWinHelpController::DisplayContents(void)
68 {
69 if (m_helpFile == wxT("")) return FALSE;
70
71 wxString str = m_helpFile;
72 size_t len = str.Length();
73 if (!(str[(size_t)(len-1)] == wxT('p') && str[(size_t)(len-2)] == wxT('l') && str[(size_t)(len-3)] == wxT('h') && str[(size_t)(len-4)] == wxT('.')))
74 str += wxT(".hlp");
75
76 if (wxTheApp->GetTopWindow())
77 {
78 #if defined(__WIN95__)
79 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_FINDER, 0L);
80 #else
81 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTENTS, 0L);
82 #endif
83 return TRUE;
84 }
85 return FALSE;
86 }
87
88 bool wxWinHelpController::DisplaySection(int section)
89 {
90 // Use context number
91 if (m_helpFile == wxT("")) return FALSE;
92
93 wxString str = m_helpFile;
94 size_t len = str.Length();
95 if (!(str[(size_t)(len-1)] == wxT('p') && str[(size_t)(len-2)] == wxT('l') && str[(size_t)(len-3)] == wxT('h') && str[(size_t)(len-4)] == wxT('.')))
96 str += wxT(".hlp");
97
98 if (wxTheApp->GetTopWindow())
99 {
100 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXT, (DWORD)section);
101 return TRUE;
102 }
103 return FALSE;
104 }
105
106 bool wxWinHelpController::DisplayBlock(long block)
107 {
108 // Use context number -- a very rough equivalent to block id!
109 if (m_helpFile == wxT("")) return FALSE;
110
111 wxString str = m_helpFile;
112 size_t len = str.Length();
113 if (!(str[(size_t)(len-1)] == 'p' && str[(size_t)(len-2)] == 'l' && str[(size_t)(len-3)] == 'h' && str[(size_t)(len-4)] == '.'))
114 str += wxT(".hlp");
115
116 if (wxTheApp->GetTopWindow())
117 {
118 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXT, (DWORD)block);
119 return TRUE;
120 }
121 return FALSE;
122 }
123
124 bool wxWinHelpController::KeywordSearch(const wxString& k)
125 {
126 if (m_helpFile == wxT("")) return FALSE;
127
128 wxString str = m_helpFile;
129 size_t len = str.Length();
130 if (!(str[(size_t)(len-1)] == wxT('p') && str[(size_t)(len-2)] == wxT('l') && str[(size_t)(len-3)] == wxT('h') && str[(size_t)(len-4)] == wxT('.')))
131 str += wxT(".hlp");
132
133 if (wxTheApp->GetTopWindow())
134 {
135 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_PARTIALKEY, (DWORD)(const wxChar*) k);
136 return TRUE;
137 }
138 return FALSE;
139 }
140
141 // Can't close the help window explicitly in WinHelp
142 bool wxWinHelpController::Quit(void)
143 {
144 if (wxTheApp->GetTopWindow())
145 {
146 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), 0, HELP_QUIT, 0L);
147 return TRUE;
148 }
149 else
150 return FALSE;
151 }
152
153 // Don't get notified of WinHelp quitting
154 void wxWinHelpController::OnQuit(void)
155 {
156 }
157
158 #endif // wxUSE_HELP