]> git.saurik.com Git - wxWidgets.git/blame - src/msw/helpwin.cpp
Fixed interpretation of selection and added selection/check notification
[wxWidgets.git] / src / msw / helpwin.cpp
CommitLineData
2bda0e17 1/////////////////////////////////////////////////////////////////////////////
a71d815b 2// Name: src/msw/helpwin.cpp
2bda0e17
KB
3// Purpose: Help system: WinHelp implementation
4// Author: Julian Smart
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
6c9a19aa 8// Copyright: (c) Julian Smart
59af881e 9// Licence: wxWindows licence
2bda0e17
KB
10/////////////////////////////////////////////////////////////////////////////
11
2bda0e17
KB
12// For compilers that support precompilation, includes "wx.h".
13#include "wx/wxprec.h"
14
15#ifdef __BORLANDC__
16#pragma hdrstop
17#endif
18
19#ifndef WX_PRECOMP
20#include "wx/defs.h"
21#endif
22
f6bcfd97
BP
23#if wxUSE_HELP
24
25#include "wx/filefn.h"
2bda0e17
KB
26#include "wx/msw/helpwin.h"
27
2bda0e17
KB
28#include <time.h>
29
2049ba38 30#ifdef __WXMSW__
3096bd2f 31#include "wx/msw/private.h"
2bda0e17
KB
32#endif
33
34#include <string.h>
35
3db52265 36static HWND GetSuitableHWND(wxWinHelpController* controller)
2bda0e17 37{
3db52265
JS
38 if (controller->GetParentWindow())
39 return (HWND) controller->GetParentWindow()->GetHWND();
40 else if (wxTheApp->GetTopWindow())
f6bcfd97
BP
41 return (HWND) wxTheApp->GetTopWindow()->GetHWND();
42 else
43 return GetDesktopWindow();
2bda0e17
KB
44}
45
f6bcfd97 46IMPLEMENT_DYNAMIC_CLASS(wxWinHelpController, wxHelpControllerBase)
2bda0e17 47
38009d39 48bool wxWinHelpController::Initialize(const wxString& filename)
2bda0e17 49{
f6bcfd97 50 m_helpFile = filename;
59af881e 51 return true;
2bda0e17
KB
52}
53
54bool wxWinHelpController::LoadFile(const wxString& file)
55{
f6bcfd97
BP
56 if (!file.IsEmpty())
57 m_helpFile = file;
59af881e 58 return true;
2bda0e17
KB
59}
60
61bool wxWinHelpController::DisplayContents(void)
62{
59af881e
WS
63 if (m_helpFile.IsEmpty()) return false;
64
f6bcfd97 65 wxString str = GetValidFilename(m_helpFile);
59af881e 66
3db52265 67 return (WinHelp(GetSuitableHWND(this), (const wxChar*) str, HELP_FINDER, 0L) != 0);
2bda0e17
KB
68}
69
70bool wxWinHelpController::DisplaySection(int section)
71{
33b64e6f 72 // Use context number
59af881e
WS
73 if (m_helpFile.IsEmpty()) return false;
74
f6bcfd97 75 wxString str = GetValidFilename(m_helpFile);
33b64e6f 76
3db52265 77 return (WinHelp(GetSuitableHWND(this), (const wxChar*) str, HELP_CONTEXT, (DWORD)section) != 0);
5100cabf
JS
78}
79
80bool wxWinHelpController::DisplayContextPopup(int contextId)
81{
59af881e
WS
82 if (m_helpFile.IsEmpty()) return false;
83
5100cabf
JS
84 wxString str = GetValidFilename(m_helpFile);
85
3db52265 86 return (WinHelp(GetSuitableHWND(this), (const wxChar*) str, HELP_CONTEXTPOPUP, (DWORD) contextId) != 0);
2bda0e17
KB
87}
88
89bool wxWinHelpController::DisplayBlock(long block)
90{
f6bcfd97 91 DisplaySection(block);
59af881e 92 return true;
2bda0e17
KB
93}
94
69b5cec2
VS
95bool wxWinHelpController::KeywordSearch(const wxString& k,
96 wxHelpSearchMode WXUNUSED(mode))
2bda0e17 97{
59af881e
WS
98 if (m_helpFile.IsEmpty()) return false;
99
f6bcfd97 100 wxString str = GetValidFilename(m_helpFile);
59af881e 101
3db52265 102 return (WinHelp(GetSuitableHWND(this), (const wxChar*) str, HELP_PARTIALKEY, (DWORD)(const wxChar*) k) != 0);
2bda0e17
KB
103}
104
105// Can't close the help window explicitly in WinHelp
106bool wxWinHelpController::Quit(void)
107{
3db52265 108 return (WinHelp(GetSuitableHWND(this), 0, HELP_QUIT, 0L) != 0);
2bda0e17
KB
109}
110
f6bcfd97
BP
111// Append extension if necessary.
112wxString wxWinHelpController::GetValidFilename(const wxString& file) const
2bda0e17 113{
f6bcfd97
BP
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;
2bda0e17
KB
125}
126
47d67540 127#endif // wxUSE_HELP