]> git.saurik.com Git - wxWidgets.git/blob - src/msw/helpwin.cpp
Committing in .
[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 #if wxUSE_HELP
28
29 #include "wx/filefn.h"
30 #include "wx/msw/helpwin.h"
31
32 #include <time.h>
33
34 #ifdef __WXMSW__
35 #include "wx/msw/private.h"
36 #endif
37
38 #include <string.h>
39
40 static HWND GetSuitableHWND()
41 {
42 if (wxTheApp->GetTopWindow())
43 return (HWND) wxTheApp->GetTopWindow()->GetHWND();
44 else
45 return GetDesktopWindow();
46 }
47
48 IMPLEMENT_DYNAMIC_CLASS(wxWinHelpController, wxHelpControllerBase)
49
50 bool wxWinHelpController::Initialize(const wxString& filename)
51 {
52 m_helpFile = filename;
53 return TRUE;
54 }
55
56 bool wxWinHelpController::LoadFile(const wxString& file)
57 {
58 if (!file.IsEmpty())
59 m_helpFile = file;
60 return TRUE;
61 }
62
63 bool wxWinHelpController::DisplayContents(void)
64 {
65 if (m_helpFile.IsEmpty()) return FALSE;
66
67 wxString str = GetValidFilename(m_helpFile);
68
69 #if defined(__WIN95__)
70 WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_FINDER, 0L);
71 #else
72 WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_CONTENTS, 0L);
73 #endif
74 return TRUE;
75 }
76
77 bool wxWinHelpController::DisplaySection(int section)
78 {
79 // Use context number
80 if (m_helpFile.IsEmpty()) return FALSE;
81
82 wxString str = GetValidFilename(m_helpFile);
83
84 WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXT, (DWORD)section);
85 return TRUE;
86 }
87
88 bool wxWinHelpController::DisplayBlock(long block)
89 {
90 DisplaySection(block);
91 return TRUE;
92 }
93
94 bool wxWinHelpController::KeywordSearch(const wxString& k)
95 {
96 if (m_helpFile.IsEmpty()) return FALSE;
97
98 wxString str = GetValidFilename(m_helpFile);
99
100 WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_PARTIALKEY, (DWORD)(const wxChar*) k);
101 return TRUE;
102 }
103
104 // Can't close the help window explicitly in WinHelp
105 bool wxWinHelpController::Quit(void)
106 {
107 WinHelp(GetSuitableHWND(), 0, HELP_QUIT, 0L);
108 return TRUE;
109 }
110
111 // Append extension if necessary.
112 wxString wxWinHelpController::GetValidFilename(const wxString& file) const
113 {
114 wxString path, name, ext;
115 wxSplitPath(file, & path, & name, & ext);
116
117 wxString fullName;
118 if (path.IsEmpty())
119 fullName = name + wxT(".hlp");
120 else if (path.Last() == wxT('\\'))
121 fullName = path + name + wxT(".hlp");
122 else
123 fullName = path + wxT("\\") + name + wxT(".hlp");
124 return fullName;
125 }
126
127 #endif // wxUSE_HELP