1/////////////////////////////////////////////////////////////////////////////
2// Name:        src/msw/wince/helpwce.cpp
3// Purpose:     Help system: Windows CE help implementation
4// Author:      Julian Smart
5// Modified by:
6// Created:     2003-07-12
7// RCS-ID:      $Id: helpwce.cpp 41054 2006-09-07 19:01:45Z ABX $
8// Copyright:   (c) Julian Smart
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
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#if wxUSE_HELP
20
21#include "wx/filefn.h"
22#include "wx/msw/wince/helpwce.h"
23
24#ifndef WX_PRECOMP
25    #include "wx/msw/missing.h"
26    #include "wx/intl.h"
27#endif
28
29#include "wx/msw/private.h"
30
31IMPLEMENT_DYNAMIC_CLASS(wxWinceHelpController, wxHelpControllerBase)
32
33bool wxWinceHelpController::Initialize(const wxString& filename)
34{
35    m_helpFile = filename;
36    return true;
37}
38
39bool wxWinceHelpController::LoadFile(const wxString& file)
40{
41    if (!file.empty())
42        m_helpFile = file;
43    return true;
44}
45
46bool wxWinceHelpController::DisplayContents()
47{
48    return ViewURL();
49}
50
51// Use topic
52bool wxWinceHelpController::DisplaySection(const wxString& section)
53{
54    return ViewURL(section);
55}
56
57// Use context number
58bool wxWinceHelpController::DisplaySection(int WXUNUSED(section))
59{
60    return true;
61}
62
63bool wxWinceHelpController::DisplayContextPopup(int WXUNUSED(contextId))
64{
65    return true;
66}
67
68bool wxWinceHelpController::DisplayTextPopup(const wxString& WXUNUSED(text), const wxPoint& WXUNUSED(pos))
69{
70    return true;
71}
72
73bool wxWinceHelpController::DisplayBlock(long WXUNUSED(block))
74{
75    return true;
76}
77
78bool wxWinceHelpController::KeywordSearch(const wxString& WXUNUSED(k),
79                               wxHelpSearchMode WXUNUSED(mode))
80{
81    return true;
82}
83
84bool wxWinceHelpController::Quit()
85{
86    return true;
87}
88
89// Append extension if necessary.
90wxString wxWinceHelpController::GetValidFilename(const wxString& file) const
91{
92    wxString path, name, ext;
93    wxSplitPath(file, & path, & name, & ext);
94
95    wxString fullName;
96    if (path.empty())
97        fullName = name + wxT(".htm");
98    else if (path.Last() == wxT('\\'))
99        fullName = path + name + wxT(".htm");
100    else
101        fullName = path + wxT("\\") + name + wxT(".htm");
102
103    if (!wxFileExists(fullName))
104        fullName = wxT("\\Windows\\") + name + wxT(".htm");
105
106    return fullName;
107}
108
109// View URL
110bool wxWinceHelpController::ViewURL(const wxString& topic)
111{
112    if (m_helpFile.empty()) return false;
113
114    wxString url( wxT("file:") + GetValidFilename(m_helpFile) );
115    if (!topic.empty())
116        url = url + wxT("#") + topic;
117
118    return CreateProcess(wxT("peghelp.exe"),
119        url, NULL, NULL, FALSE, 0, NULL,
120        NULL, NULL, NULL) != 0 ;
121}
122
123#endif // wxUSE_HELP
124