many changes; major ones:
[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 #if !USE_SHARED_LIBRARY
45 IMPLEMENT_DYNAMIC_CLASS(wxWinHelpController, wxHelpControllerBase)
46 #endif
47
48 wxWinHelpController::wxWinHelpController(void)
49 {
50 m_helpFile = "";
51 }
52
53 wxWinHelpController::~wxWinHelpController(void)
54 {
55 }
56
57 bool wxWinHelpController::Initialize(const wxString& filename)
58 {
59 m_helpFile = filename;
60 return TRUE;
61 }
62
63 bool wxWinHelpController::LoadFile(const wxString& file)
64 {
65 m_helpFile = file;
66 return TRUE;
67 }
68
69 bool wxWinHelpController::DisplayContents(void)
70 {
71 if (m_helpFile == T("")) return FALSE;
72
73 wxString str = m_helpFile;
74 size_t len = str.Length();
75 if (!(str[(size_t)(len-1)] == T('p') && str[(size_t)(len-2)] == T('l') && str[(size_t)(len-3)] == T('h') && str[(size_t)(len-4)] == T('.')))
76 str += T(".hlp");
77
78 if (wxTheApp->GetTopWindow())
79 {
80 #if defined(__WIN95__)
81 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_FINDER, 0L);
82 #else
83 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTENTS, 0L);
84 #endif
85 return TRUE;
86 }
87 return FALSE;
88 }
89
90 bool wxWinHelpController::DisplaySection(int section)
91 {
92 // Use context number
93 if (m_helpFile == T("")) return FALSE;
94
95 wxString str = m_helpFile;
96 size_t len = str.Length();
97 if (!(str[(size_t)(len-1)] == T('p') && str[(size_t)(len-2)] == T('l') && str[(size_t)(len-3)] == T('h') && str[(size_t)(len-4)] == T('.')))
98 str += T(".hlp");
99
100 if (wxTheApp->GetTopWindow())
101 {
102 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXT, (DWORD)section);
103 return TRUE;
104 }
105 return FALSE;
106 }
107
108 bool wxWinHelpController::DisplayBlock(long block)
109 {
110 // Use context number -- a very rough equivalent to block id!
111 if (m_helpFile == T("")) return FALSE;
112
113 wxString str = m_helpFile;
114 size_t len = str.Length();
115 if (!(str[(size_t)(len-1)] == 'p' && str[(size_t)(len-2)] == 'l' && str[(size_t)(len-3)] == 'h' && str[(size_t)(len-4)] == '.'))
116 str += T(".hlp");
117
118 if (wxTheApp->GetTopWindow())
119 {
120 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXT, (DWORD)block);
121 return TRUE;
122 }
123 return FALSE;
124 }
125
126 bool wxWinHelpController::KeywordSearch(const wxString& k)
127 {
128 if (m_helpFile == T("")) return FALSE;
129
130 wxString str = m_helpFile;
131 size_t len = str.Length();
132 if (!(str[(size_t)(len-1)] == T('p') && str[(size_t)(len-2)] == T('l') && str[(size_t)(len-3)] == T('h') && str[(size_t)(len-4)] == T('.')))
133 str += T(".hlp");
134
135 if (wxTheApp->GetTopWindow())
136 {
137 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_PARTIALKEY, (DWORD)(const wxChar*) k);
138 return TRUE;
139 }
140 return FALSE;
141 }
142
143 // Can't close the help window explicitly in WinHelp
144 bool wxWinHelpController::Quit(void)
145 {
146 if (wxTheApp->GetTopWindow())
147 {
148 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), 0, HELP_QUIT, 0L);
149 return TRUE;
150 }
151 else
152 return FALSE;
153 }
154
155 // Don't get notified of WinHelp quitting
156 void wxWinHelpController::OnQuit(void)
157 {
158 }
159
160 #endif // wxUSE_HELP