X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f3e156efb09c5c3ab4c4490abf58f2348edb1150..4521f6c88cbefa7f13e3733d344776b795f981e4:/src/html/helpwnd.cpp?ds=inline
diff --git a/src/html/helpwnd.cpp b/src/html/helpwnd.cpp
index 94226cf85c..c208c756d6 100644
--- a/src/html/helpwnd.cpp
+++ b/src/html/helpwnd.cpp
@@ -1,10 +1,9 @@
/////////////////////////////////////////////////////////////////////////////
-// Name: helpwin.cpp
+// Name: src/html/helpwnd.cpp
// Purpose: wxHtmlHelpWindow
// Notes: Based on htmlhelp.cpp, implementing a monolithic
// HTML Help controller class, by Vaclav Slavik
// Author: Harm van der Heijden and Vaclav Slavik
-// RCS-ID: $Id$
// Copyright: (c) Harm van der Heijden and Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
@@ -14,32 +13,37 @@
#include "wx/wxprec.h"
#ifdef __BORLANDC__
-#pragma hdrstop
+ #pragma hdrstop
#endif
#if wxUSE_WXHTML_HELP
-#ifndef WXPRECOMP
+#ifndef WX_PRECOMP
+ #include "wx/object.h"
+ #include "wx/dynarray.h"
#include "wx/intl.h"
#include "wx/log.h"
+ #if wxUSE_STREAMS
+ #include "wx/stream.h"
+ #endif
- #include "wx/object.h"
#include "wx/sizer.h"
#include "wx/bmpbuttn.h"
#include "wx/statbox.h"
#include "wx/radiobox.h"
-#endif // WXPRECOMP
-
-#ifdef __WXMAC__
#include "wx/menu.h"
+ #include "wx/settings.h"
#include "wx/msgdlg.h"
-#endif
+ #include "wx/textctrl.h"
+ #include "wx/toolbar.h"
+ #include "wx/choicdlg.h"
+ #include "wx/filedlg.h"
+#endif // WX_PRECOMP
#include "wx/html/helpfrm.h"
#include "wx/html/helpdlg.h"
#include "wx/html/helpctrl.h"
-#include "wx/textctrl.h"
#include "wx/notebook.h"
#include "wx/imaglist.h"
#include "wx/treectrl.h"
@@ -48,18 +52,17 @@
#include "wx/html/htmlwin.h"
#include "wx/busyinfo.h"
#include "wx/progdlg.h"
-#include "wx/toolbar.h"
#include "wx/fontenum.h"
-#include "wx/stream.h"
-#include "wx/filedlg.h"
#include "wx/artprov.h"
#include "wx/spinctrl.h"
-#include "wx/dynarray.h"
-#include "wx/choicdlg.h"
-#include "wx/settings.h"
// what is considered "small index"?
-#define INDEX_IS_SMALL 100
+#define INDEX_IS_SMALL 1000
+
+// minimum width for content tree and index
+// (we cannot let minimum size be determined from content, else long titles
+// make the help frame unusable)
+const wxCoord CONTENT_TREE_INDEX_MIN_WIDTH = 150;
/* Motif defines this as a macro */
#ifdef Below
@@ -94,7 +97,7 @@ class wxHtmlHelpHashData : public wxObject
public:
wxHtmlHelpHashData(int index, wxTreeItemId id) : wxObject()
{ m_Index = index; m_Id = id;}
- ~wxHtmlHelpHashData() {}
+ virtual ~wxHtmlHelpHashData() {}
int m_Index;
wxTreeItemId m_Id;
@@ -105,51 +108,45 @@ class wxHtmlHelpHashData : public wxObject
// wxHtmlHelpHtmlWindow (private)
//--------------------------------------------------------------------------
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_HTMLWINDOW_URL_CLICKED)
-IMPLEMENT_DYNAMIC_CLASS(wxHtmlWindowEvent, wxNotifyEvent)
class wxHtmlHelpHtmlWindow : public wxHtmlWindow
{
- public:
- wxHtmlHelpHtmlWindow(wxHtmlHelpWindow *win, wxWindow *parent)
- : wxHtmlWindow(parent), m_Window(win)
- {
- SetStandardFonts();
- }
+public:
+ wxHtmlHelpHtmlWindow(wxHtmlHelpWindow *win, wxWindow *parent, wxWindowID id = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize, long style = wxHW_DEFAULT_STYLE)
+ : wxHtmlWindow(parent, id, pos, sz, style), m_Window(win)
+ {
+ SetStandardFonts();
+ }
- virtual void OnLinkClicked(const wxHtmlLinkInfo& link)
- {
- wxHtmlWindowEvent event(wxEVT_COMMAND_HTMLWINDOW_URL_CLICKED, GetId());
- event.SetURL(link.GetHref());
- if (!ProcessEvent(event))
- {
- wxHtmlWindow::OnLinkClicked(link);
- }
- const wxMouseEvent *e = link.GetEvent();
- if (e == NULL || e->LeftUp())
- m_Window->NotifyPageChanged();
- }
+ virtual bool LoadPage(const wxString& location)
+ {
+ if ( !wxHtmlWindow::LoadPage(location) )
+ return false;
- // Returns full location with anchor (helper)
- static wxString GetOpenedPageWithAnchor(wxHtmlWindow *win)
- {
- if(!win)
- return wxEmptyString;
+ m_Window->NotifyPageChanged();
+ return true;
+ }
- wxString an = win->GetOpenedAnchor();
- wxString pg = win->GetOpenedPage();
- if(!an.empty())
- {
- pg << wxT("#");
- pg << an;
- }
- return pg;
+ // Returns full location with anchor (helper)
+ static wxString GetOpenedPageWithAnchor(wxHtmlWindow *win)
+ {
+ if(!win)
+ return wxEmptyString;
+
+ wxString an = win->GetOpenedAnchor();
+ wxString pg = win->GetOpenedPage();
+ if(!an.empty())
+ {
+ pg << wxT("#") << an;
}
+ return pg;
+ }
- private:
- wxHtmlHelpWindow *m_Window;
+private:
+ wxHtmlHelpWindow *m_Window;
- DECLARE_NO_COPY_CLASS(wxHtmlHelpHtmlWindow)
+ wxDECLARE_NO_COPY_CLASS(wxHtmlHelpHtmlWindow);
};
@@ -184,7 +181,7 @@ void wxHtmlHelpWindow::UpdateMergedIndex()
for (size_t i = 0; i < len; i++)
{
const wxHtmlHelpDataItem& item = items[i];
- wxASSERT_MSG( item.level < 128, _T("nested index entries too deep") );
+ wxASSERT_MSG( item.level < 128, wxT("nested index entries too deep") );
if (history[item.level] &&
history[item.level]->items[0]->name == item.name)
@@ -273,8 +270,10 @@ void wxHtmlHelpWindow::Init(wxHtmlHelpData* data)
m_mergedIndex = NULL;
+#if wxUSE_CONFIG
m_Config = NULL;
m_ConfigRoot = wxEmptyString;
+#endif // wxUSE_CONFIG
m_Cfg.x = m_Cfg.y = wxDefaultCoord;
m_Cfg.w = 700;
@@ -297,7 +296,7 @@ void wxHtmlHelpWindow::Init(wxHtmlHelpData* data)
m_PagesHash = NULL;
m_UpdateContents = true;
m_toolBar = NULL;
- m_helpController = (wxHtmlHelpController*) NULL;
+ m_helpController = NULL;
}
// Create: builds the GUI components.
@@ -315,21 +314,12 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
{
m_hfStyle = helpStyle;
- wxImageList *ContentsImageList = new wxImageList(16, 16);
- ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_BOOK,
- wxART_HELP_BROWSER,
- wxSize(16, 16)));
- ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_FOLDER,
- wxART_HELP_BROWSER,
- wxSize(16, 16)));
- ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_PAGE,
- wxART_HELP_BROWSER,
- wxSize(16, 16)));
-
+#if wxUSE_CONFIG
// Do the config in two steps. We read the HtmlWindow customization after we
// create the window.
if (m_Config)
ReadCustomization(m_Config, m_ConfigRoot);
+#endif // wxUSE_CONFIG
wxWindow::Create(parent, id, pos, size, style, wxT("wxHtmlHelp"));
@@ -342,17 +332,18 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
// The sizer for the whole top-level window.
wxSizer *topWindowSizer = new wxBoxSizer(wxVERTICAL);
SetSizer(topWindowSizer);
- SetAutoLayout(TRUE);
+ SetAutoLayout(true);
#if wxUSE_TOOLBAR
// toolbar?
if (helpStyle & (wxHF_TOOLBAR | wxHF_FLAT_TOOLBAR))
{
- wxToolBar *toolBar = new wxToolBar(this, -1, wxDefaultPosition, wxDefaultSize,
+ wxToolBar *toolBar = new wxToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
wxNO_BORDER | wxTB_HORIZONTAL |
wxTB_DOCKABLE | wxTB_NODIVIDER |
(helpStyle & wxHF_FLAT_TOOLBAR ? wxTB_FLAT : 0));
toolBar->SetMargins( 2, 2 );
+ toolBar->SetToolBitmapSize( wxSize(22,22) );
AddToolbarButtons(toolBar, helpStyle);
toolBar->Realize();
topWindowSizer->Add(toolBar, 0, wxEXPAND);
@@ -362,18 +353,33 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
wxSizer *navigSizer = NULL;
+#ifdef __WXMSW__
+ wxBorder htmlWindowBorder = wxBORDER_THEME;
+#else
+ wxBorder htmlWindowBorder = wxBORDER_SUNKEN;
+#endif
+
if (helpStyle & (wxHF_CONTENTS | wxHF_INDEX | wxHF_SEARCH))
{
// traditional help controller; splitter window with html page on the
// right and a notebook containing various pages on the left
- m_Splitter = new wxSplitterWindow(this);
+ long splitterStyle = wxSP_3D;
+ // Drawing moving sash can cause problems on wxMac
+#ifdef __WXMAC__
+ splitterStyle = 0; // 3D style looks poor on Mac
+ splitterStyle |= wxSP_LIVE_UPDATE;
+#endif
+ m_Splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, splitterStyle);
topWindowSizer->Add(m_Splitter, 1, wxEXPAND);
- m_HtmlWin = new wxHtmlHelpHtmlWindow(this, m_Splitter);
+ m_HtmlWin = new wxHtmlHelpHtmlWindow(this, m_Splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_DEFAULT_STYLE|htmlWindowBorder);
m_NavigPan = new wxPanel(m_Splitter, wxID_ANY);
m_NavigNotebook = new wxNotebook(m_NavigPan, wxID_HTML_NOTEBOOK,
wxDefaultPosition, wxDefaultSize);
+#ifdef __WXMAC__
+ m_NavigNotebook->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
+#endif
navigSizer = new wxBoxSizer(wxVERTICAL);
navigSizer->Add(m_NavigNotebook, 1, wxEXPAND);
@@ -383,17 +389,22 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
else
{
// only html window, no notebook with index,contents etc
- m_HtmlWin = new wxHtmlWindow(this);
+ m_HtmlWin = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_DEFAULT_STYLE|htmlWindowBorder);
topWindowSizer->Add(m_HtmlWin, 1, wxEXPAND);
}
+#if wxUSE_CONFIG
if ( m_Config )
m_HtmlWin->ReadCustomization(m_Config, m_ConfigRoot);
+#endif // wxUSE_CONFIG
// contents tree panel?
if ( helpStyle & wxHF_CONTENTS )
{
wxWindow *dummy = new wxPanel(m_NavigNotebook, wxID_HTML_INDEXPAGE);
+#ifdef __WXMAC__
+ dummy->SetWindowVariant(wxWINDOW_VARIANT_NORMAL);
+#endif
wxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
topsizer->Add(0, 10);
@@ -402,10 +413,16 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
if ( helpStyle & wxHF_BOOKMARKS )
{
+ long comboStyle = wxCB_READONLY;
+#ifndef __WXMAC__
+ // Not supported on OSX/Cocoa presently
+ comboStyle |= wxCB_SORT;
+
+#endif
m_Bookmarks = new wxComboBox(dummy, wxID_HTML_BOOKMARKSLIST,
wxEmptyString,
wxDefaultPosition, wxDefaultSize,
- 0, NULL, wxCB_READONLY | wxCB_SORT);
+ 0, NULL, comboStyle);
m_Bookmarks->Append(_("(bookmarks)"));
for (unsigned i = 0; i < m_BookmarksNames.GetCount(); i++)
m_Bookmarks->Append(m_BookmarksNames[i]);
@@ -434,7 +451,7 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
m_ContentsBox = new wxTreeCtrl(dummy, wxID_HTML_TREECTRL,
wxDefaultPosition, wxDefaultSize,
-#ifdef __WXGTK20__
+#if defined(__WXGTK20__) || defined(__WXMAC__)
wxSUNKEN_BORDER |
wxTR_HAS_BUTTONS | wxTR_HIDE_ROOT |
wxTR_NO_LINES
@@ -445,6 +462,17 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
#endif
);
+ wxImageList *ContentsImageList = new wxImageList(16, 16);
+ ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_BOOK,
+ wxART_HELP_BROWSER,
+ wxSize(16, 16)));
+ ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_FOLDER,
+ wxART_HELP_BROWSER,
+ wxSize(16, 16)));
+ ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_PAGE,
+ wxART_HELP_BROWSER,
+ wxSize(16, 16)));
+
m_ContentsBox->AssignImageList(ContentsImageList);
topsizer->Add(m_ContentsBox, 1,
@@ -459,6 +487,9 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
if ( helpStyle & wxHF_INDEX )
{
wxWindow *dummy = new wxPanel(m_NavigNotebook, wxID_HTML_INDEXPAGE);
+#ifdef __WXMAC__
+ dummy->SetWindowVariant(wxWINDOW_VARIANT_NORMAL);
+#endif
wxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
dummy->SetSizer(topsizer);
@@ -499,6 +530,9 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
if ( helpStyle & wxHF_SEARCH )
{
wxWindow *dummy = new wxPanel(m_NavigNotebook, wxID_HTML_INDEXPAGE);
+#ifdef __WXMAC__
+ dummy->SetWindowVariant(wxWINDOW_VARIANT_NORMAL);
+#endif
wxSizer *sizer = new wxBoxSizer(wxVERTICAL);
dummy->SetSizer(sizer);
@@ -513,7 +547,7 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
m_SearchWholeWords = new wxCheckBox(dummy, wxID_ANY, _("Whole words only"));
m_SearchButton = new wxButton(dummy, wxID_HTML_SEARCHBUTTON, _("Search"));
#if wxUSE_TOOLTIPS
- m_SearchButton->SetToolTip(_("Search contents of help book(s) for all occurences of the text you typed above"));
+ m_SearchButton->SetToolTip(_("Search contents of help book(s) for all occurrences of the text you typed above"));
#endif //wxUSE_TOOLTIPS
m_SearchList = new wxListBox(dummy, wxID_HTML_SEARCHLIST,
wxDefaultPosition, wxDefaultSize,
@@ -543,9 +577,12 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
// showtime
if ( m_NavigPan && m_Splitter )
{
+ // The panel will have its own min size which the splitter
+ // should respect
+ //if (m_NavigPan)
+ // m_Splitter->SetMinimumPaneSize(m_NavigPan->GetBestSize().x);
+ //else
m_Splitter->SetMinimumPaneSize(20);
- if ( m_Cfg.navig_on )
- m_Splitter->SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
if ( m_Cfg.navig_on )
{
@@ -562,7 +599,7 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
// Reduce flicker by updating the splitter pane sizes before the
// frame is shown
wxSizeEvent sizeEvent(GetSize(), GetId());
- ProcessEvent(sizeEvent);
+ GetEventHandler()->ProcessEvent(sizeEvent);
if (m_Splitter)
m_Splitter->UpdateSize();
@@ -572,6 +609,9 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
wxHtmlHelpWindow::~wxHtmlHelpWindow()
{
+ if ( m_helpController )
+ m_helpController->SetHelpWindow(NULL);
+
delete m_mergedIndex;
// PopEventHandler(); // wxhtmlhelpcontroller (not any more!)
@@ -620,56 +660,36 @@ void wxHtmlHelpWindow::AddToolbarButtons(wxToolBar *toolBar, int style)
wxBitmap woptionsBitmap =
wxArtProvider::GetBitmap(wxART_HELP_SETTINGS, wxART_TOOLBAR);
- wxASSERT_MSG( (wpanelBitmap.Ok() && wbackBitmap.Ok() &&
- wforwardBitmap.Ok() && wupnodeBitmap.Ok() &&
- wupBitmap.Ok() && wdownBitmap.Ok() &&
- wopenBitmap.Ok() && wprintBitmap.Ok() &&
- woptionsBitmap.Ok()),
+ wxASSERT_MSG( (wpanelBitmap.IsOk() && wbackBitmap.IsOk() &&
+ wforwardBitmap.IsOk() && wupnodeBitmap.IsOk() &&
+ wupBitmap.IsOk() && wdownBitmap.IsOk() &&
+ wopenBitmap.IsOk() && wprintBitmap.IsOk() &&
+ woptionsBitmap.IsOk()),
wxT("One or more HTML help frame toolbar bitmap could not be loaded.")) ;
- toolBar->AddTool(wxID_HTML_PANEL, wpanelBitmap, wxNullBitmap,
- false, wxDefaultCoord, wxDefaultCoord, (wxObject *) NULL,
- _("Show/hide navigation panel"));
-
+ toolBar->AddTool(wxID_HTML_PANEL, wxEmptyString, wpanelBitmap, _("Show/hide navigation panel"));
toolBar->AddSeparator();
- toolBar->AddTool(wxID_HTML_BACK, wbackBitmap, wxNullBitmap,
- false, wxDefaultCoord, wxDefaultCoord, (wxObject *) NULL,
- _("Go back"));
- toolBar->AddTool(wxID_HTML_FORWARD, wforwardBitmap, wxNullBitmap,
- false, wxDefaultCoord, wxDefaultCoord, (wxObject *) NULL,
- _("Go forward"));
+ toolBar->AddTool(wxID_HTML_BACK, wxEmptyString, wbackBitmap, _("Go back"));
+ toolBar->AddTool(wxID_HTML_FORWARD, wxEmptyString, wforwardBitmap, _("Go forward"));
toolBar->AddSeparator();
-
- toolBar->AddTool(wxID_HTML_UPNODE, wupnodeBitmap, wxNullBitmap,
- false, wxDefaultCoord, wxDefaultCoord, (wxObject *) NULL,
- _("Go one level up in document hierarchy"));
- toolBar->AddTool(wxID_HTML_UP, wupBitmap, wxNullBitmap,
- false, wxDefaultCoord, wxDefaultCoord, (wxObject *) NULL,
- _("Previous page"));
- toolBar->AddTool(wxID_HTML_DOWN, wdownBitmap, wxNullBitmap,
- false, wxDefaultCoord, wxDefaultCoord, (wxObject *) NULL,
- _("Next page"));
+ toolBar->AddTool(wxID_HTML_UPNODE, wxEmptyString, wupnodeBitmap, _("Go one level up in document hierarchy"));
+ toolBar->AddTool(wxID_HTML_UP, wxEmptyString, wupBitmap, _("Previous page"));
+ toolBar->AddTool(wxID_HTML_DOWN, wxEmptyString, wdownBitmap, _("Next page"));
if ((style & wxHF_PRINT) || (style & wxHF_OPEN_FILES))
toolBar->AddSeparator();
if (style & wxHF_OPEN_FILES)
- toolBar->AddTool(wxID_HTML_OPENFILE, wopenBitmap, wxNullBitmap,
- false, wxDefaultCoord, wxDefaultCoord, (wxObject *) NULL,
- _("Open HTML document"));
+ toolBar->AddTool(wxID_HTML_OPENFILE, wxEmptyString, wopenBitmap, _("Open HTML document"));
#if wxUSE_PRINTING_ARCHITECTURE
if (style & wxHF_PRINT)
- toolBar->AddTool(wxID_HTML_PRINT, wprintBitmap, wxNullBitmap,
- false, wxDefaultCoord, wxDefaultCoord, (wxObject *) NULL,
- _("Print this page"));
+ toolBar->AddTool(wxID_HTML_PRINT, wxEmptyString, wprintBitmap, _("Print this page"));
#endif
toolBar->AddSeparator();
- toolBar->AddTool(wxID_HTML_OPTIONS, woptionsBitmap, wxNullBitmap,
- false, wxDefaultCoord, wxDefaultCoord, (wxObject *) NULL,
- _("Display options dialog"));
+ toolBar->AddTool(wxID_HTML_OPTIONS, wxEmptyString, woptionsBitmap, _("Display options dialog"));
// Allow application to add custom buttons
wxHtmlHelpFrame* parentFrame = wxDynamicCast(GetParent(), wxHtmlHelpFrame);
@@ -688,7 +708,6 @@ bool wxHtmlHelpWindow::Display(const wxString& x)
if (!url.empty())
{
m_HtmlWin->LoadPage(url);
- NotifyPageChanged();
return true;
}
@@ -701,7 +720,6 @@ bool wxHtmlHelpWindow::Display(const int id)
if (!url.empty())
{
m_HtmlWin->LoadPage(url);
- NotifyPageChanged();
return true;
}
@@ -764,7 +782,6 @@ void wxHtmlHelpWindow::DisplayIndexItem(const wxHtmlHelpMergedIndexItem *it)
if (!it->items[0]->page.empty())
{
m_HtmlWin->LoadPage(it->items[0]->GetFullPath());
- NotifyPageChanged();
}
}
else
@@ -795,11 +812,12 @@ void wxHtmlHelpWindow::DisplayIndexItem(const wxHtmlHelpMergedIndexItem *it)
wxSingleChoiceDialog dlg(this,
_("Please choose the page to display:"),
_("Help Topics"),
- arr, NULL, wxCHOICEDLG_STYLE & ~wxCENTRE);
+ arr,
+ (void**)NULL, // No client data
+ wxCHOICEDLG_STYLE & ~wxCENTRE);
if (dlg.ShowModal() == wxID_OK)
{
m_HtmlWin->LoadPage(it->items[dlg.GetSelection()]->GetFullPath());
- NotifyPageChanged();
}
}
}
@@ -807,6 +825,8 @@ void wxHtmlHelpWindow::DisplayIndexItem(const wxHtmlHelpMergedIndexItem *it)
bool wxHtmlHelpWindow::KeywordSearch(const wxString& keyword,
wxHelpSearchMode mode)
{
+ wxCHECK_MSG( !keyword.empty(), false, "must have a non empty keyword" );
+
if (mode == wxHELP_SEARCH_ALL)
{
if ( !(m_SearchList &&
@@ -874,7 +894,7 @@ bool wxHtmlHelpWindow::KeywordSearch(const wxString& keyword,
}
m_SearchButton->Enable();
- m_SearchText->SetSelection(0, keyword.Length());
+ m_SearchText->SetSelection(0, keyword.length());
m_SearchText->SetFocus();
}
else if (mode == wxHELP_SEARCH_INDEX)
@@ -885,8 +905,7 @@ bool wxHtmlHelpWindow::KeywordSearch(const wxString& keyword,
m_IndexButtonAll->Disable();
m_IndexText->SetValue(keyword);
- wxCommandEvent dummy;
- OnIndexFind(dummy); // what a hack...
+ DoIndexFind();
m_IndexButton->Enable();
m_IndexButtonAll->Enable();
foundcnt = m_IndexList->GetCount();
@@ -897,7 +916,7 @@ bool wxHtmlHelpWindow::KeywordSearch(const wxString& keyword,
switch ( mode )
{
default:
- wxFAIL_MSG( _T("unknown help search mode") );
+ wxFAIL_MSG( wxT("unknown help search mode") );
// fall back
case wxHELP_SEARCH_ALL:
@@ -907,7 +926,6 @@ bool wxHtmlHelpWindow::KeywordSearch(const wxString& keyword,
if (it)
{
m_HtmlWin->LoadPage(it->GetFullPath());
- NotifyPageChanged();
}
break;
}
@@ -1007,6 +1025,9 @@ void wxHtmlHelpWindow::CreateContents()
imaged[it->level] = true;
}
}
+
+ m_ContentsBox->SetMinSize(wxSize(CONTENT_TREE_INDEX_MIN_WIDTH,
+ m_ContentsBox->GetMinHeight()));
}
void wxHtmlHelpWindow::CreateIndex()
@@ -1016,13 +1037,13 @@ void wxHtmlHelpWindow::CreateIndex()
m_IndexList->Clear();
- size_t cnt = m_mergedIndex->size();
+ unsigned long cnt = m_mergedIndex->size();
wxString cnttext;
if (cnt > INDEX_IS_SMALL)
- cnttext.Printf(_("%i of %i"), 0, cnt);
+ cnttext.Printf(_("%d of %lu"), 0, cnt);
else
- cnttext.Printf(_("%i of %i"), cnt, cnt);
+ cnttext.Printf(_("%lu of %lu"), cnt, cnt);
m_IndexCountInfo->SetLabel(cnttext);
if (cnt > INDEX_IS_SMALL)
return;
@@ -1030,6 +1051,9 @@ void wxHtmlHelpWindow::CreateIndex()
for (size_t i = 0; i < cnt; i++)
m_IndexList->Append((*m_mergedIndex)[i].name,
(char*)(&(*m_mergedIndex)[i]));
+
+ m_IndexList->SetMinSize(wxSize(CONTENT_TREE_INDEX_MIN_WIDTH,
+ m_IndexList->GetMinHeight()));
}
void wxHtmlHelpWindow::CreateSearch()
@@ -1056,6 +1080,7 @@ void wxHtmlHelpWindow::RefreshLists()
CreateSearch();
}
+#if wxUSE_CONFIG
void wxHtmlHelpWindow::ReadCustomization(wxConfigBase *cfg, const wxString& path)
{
wxString oldpath;
@@ -1064,7 +1089,7 @@ void wxHtmlHelpWindow::ReadCustomization(wxConfigBase *cfg, const wxString& path
if (path != wxEmptyString)
{
oldpath = cfg->GetPath();
- cfg->SetPath(_T("/") + path);
+ cfg->SetPath(wxT("/") + path);
}
m_Cfg.navig_on = cfg->Read(wxT("hcNavigPanel"), m_Cfg.navig_on) != 0;
@@ -1122,7 +1147,7 @@ void wxHtmlHelpWindow::WriteCustomization(wxConfigBase *cfg, const wxString& pat
if (path != wxEmptyString)
{
oldpath = cfg->GetPath();
- cfg->SetPath(_T("/") + path);
+ cfg->SetPath(wxT("/") + path);
}
cfg->Write(wxT("hcNavigPanel"), m_Cfg.navig_on);
@@ -1161,6 +1186,7 @@ void wxHtmlHelpWindow::WriteCustomization(wxConfigBase *cfg, const wxString& pat
if (path != wxEmptyString)
cfg->SetPath(oldpath);
}
+#endif // wxUSE_CONFIG
static void SetFontsToHtmlWin(wxHtmlWindow *win, const wxString& scalf, const wxString& fixf, int size)
{
@@ -1201,16 +1227,19 @@ public:
wxSize(200, wxDefaultCoord),
0, NULL, wxCB_DROPDOWN | wxCB_READONLY));
- sizer->Add(FontSize = new wxSpinCtrl(this, wxID_ANY));
- FontSize->SetRange(2, 100);
+ sizer->Add(FontSize = new wxSpinCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, 2, 100, 2, wxT("wxSpinCtrl")));
topsizer->Add(sizer, 0, wxLEFT|wxRIGHT|wxTOP, 10);
topsizer->Add(new wxStaticText(this, wxID_ANY, _("Preview:")),
0, wxLEFT | wxTOP, 10);
+
+ topsizer->AddSpacer(5);
+
topsizer->Add(TestWin = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxSize(20, 150),
- wxHW_SCROLLBAR_AUTO | wxSUNKEN_BORDER),
- 1, wxEXPAND | wxLEFT|wxTOP|wxRIGHT, 10);
+ wxHW_SCROLLBAR_AUTO|wxBORDER_THEME),
+ 1, wxEXPAND | wxLEFT | wxRIGHT, 10);
wxBoxSizer *sizer2 = new wxBoxSizer(wxHORIZONTAL);
wxButton *ok;
@@ -1235,25 +1264,25 @@ public:
wxString content(_("font size"));
- content = _T("") + content + _T(" -2
")
- _T("") + content + _T(" -1
")
- _T("") + content + _T(" +0
")
- _T("") + content + _T(" +1
")
- _T("") + content + _T(" +2
")
- _T("") + content + _T(" +3
")
- _T("") + content + _T(" +4
") ;
+ content = wxT("") + content + wxT(" -2
")
+ wxT("") + content + wxT(" -1
")
+ wxT("") + content + wxT(" +0
")
+ wxT("") + content + wxT(" +1
")
+ wxT("") + content + wxT(" +2
")
+ wxT("") + content + wxT(" +3
")
+ wxT("") + content + wxT(" +4
") ;
- content = wxString( _T("
") ) +
+ content = wxString( wxT("") ) +
_("Normal face and underlined. ") +
_("Italic face. ") +
_("Bold face. ") +
_("Bold italic face. ") +
content +
- wxString( _T(" | ") ) +
+ wxString( wxT(" | ") ) +
_("Fixed size face. bold italic ") +
_("bold italic underlined ") +
content +
- _T(" | ");
+ wxT(" |
");
TestWin->SetPage( content );
}
@@ -1268,7 +1297,7 @@ public:
}
DECLARE_EVENT_TABLE()
- DECLARE_NO_COPY_CLASS(wxHtmlHelpWindowOptionsDialog)
+ wxDECLARE_NO_COPY_CLASS(wxHtmlHelpWindowOptionsDialog);
};
BEGIN_EVENT_TABLE(wxHtmlHelpWindowOptionsDialog, wxDialog)
@@ -1283,18 +1312,14 @@ void wxHtmlHelpWindow::OptionsDialog()
if (m_NormalFonts == NULL)
{
- wxFontEnumerator enu;
- enu.EnumerateFacenames();
- m_NormalFonts = new wxArrayString;
- *m_NormalFonts = *enu.GetFacenames();
+ m_NormalFonts = new wxArrayString(wxFontEnumerator::GetFacenames());
m_NormalFonts->Sort(); // ascending sort
}
if (m_FixedFonts == NULL)
{
- wxFontEnumerator enu;
- enu.EnumerateFacenames(wxFONTENCODING_SYSTEM, true /*enum fixed width only*/);
- m_FixedFonts = new wxArrayString;
- *m_FixedFonts = *enu.GetFacenames();
+ m_FixedFonts = new wxArrayString(
+ wxFontEnumerator::GetFacenames(wxFONTENCODING_SYSTEM,
+ true /*enum fixed width only*/));
m_FixedFonts->Sort(); // ascending sort
}
@@ -1368,12 +1393,10 @@ void wxHtmlHelpWindow::OnToolbar(wxCommandEvent& event)
{
case wxID_HTML_BACK :
m_HtmlWin->HistoryBack();
- NotifyPageChanged();
break;
case wxID_HTML_FORWARD :
m_HtmlWin->HistoryForward();
- NotifyPageChanged();
break;
case wxID_HTML_UP :
@@ -1389,7 +1412,6 @@ void wxHtmlHelpWindow::OnToolbar(wxCommandEvent& event)
if (!it.page.empty())
{
m_HtmlWin->LoadPage(it.GetFullPath());
- NotifyPageChanged();
}
}
}
@@ -1418,10 +1440,7 @@ void wxHtmlHelpWindow::OnToolbar(wxCommandEvent& event)
if (ind >= 0)
{
if (!it->page.empty())
- {
m_HtmlWin->LoadPage(it->GetFullPath());
- NotifyPageChanged();
- }
}
}
}
@@ -1443,10 +1462,7 @@ void wxHtmlHelpWindow::OnToolbar(wxCommandEvent& event)
while (contents[idx].GetFullPath() == page) idx++;
if (!contents[idx].page.empty())
- {
m_HtmlWin->LoadPage(contents[idx].GetFullPath());
- NotifyPageChanged();
- }
}
}
break;
@@ -1504,7 +1520,9 @@ void wxHtmlHelpWindow::OnToolbar(wxCommandEvent& event)
{
m_BookmarksNames.RemoveAt(pos);
m_BookmarksPages.RemoveAt(pos);
- m_Bookmarks->Delete(m_Bookmarks->GetSelection());
+ pos = m_Bookmarks->GetSelection();
+ wxASSERT_MSG( pos != wxNOT_FOUND , wxT("Unknown bookmark position") ) ;
+ m_Bookmarks->Delete((unsigned int)pos);
}
}
break;
@@ -1515,9 +1533,13 @@ void wxHtmlHelpWindow::OnToolbar(wxCommandEvent& event)
if (m_Printer == NULL)
m_Printer = new wxHtmlEasyPrinting(_("Help Printing"), this);
if (!m_HtmlWin->GetOpenedPage())
+ {
wxLogWarning(_("Cannot print empty page."));
+ }
else
+ {
m_Printer->PrintFile(m_HtmlWin->GetOpenedPage());
+ }
}
break;
#endif
@@ -1531,22 +1553,22 @@ void wxHtmlHelpWindow::OnToolbar(wxCommandEvent& event)
#if wxUSE_LIBMSPACK
_("Compressed HTML Help file (*.chm)|*.chm|") +
#endif
- _("All files (*.*)|*");
+ wxALL_FILES;
wxString s = wxFileSelector(_("Open HTML document"),
wxEmptyString,
wxEmptyString,
wxEmptyString,
filemask,
- wxOPEN | wxFILE_MUST_EXIST,
+ wxFD_OPEN | wxFD_FILE_MUST_EXIST,
this);
if (!s.empty())
{
wxString ext = s.Right(4).Lower();
- if (ext == _T(".zip") || ext == _T(".htb") ||
+ if (ext == wxT(".zip") || ext == wxT(".htb") ||
#if wxUSE_LIBMSPACK
- ext == _T(".chm") ||
+ ext == wxT(".chm") ||
#endif
- ext == _T(".hhp"))
+ ext == wxT(".hhp"))
{
wxBusyCursor bcur;
m_Data->AddBook(s);
@@ -1584,13 +1606,18 @@ void wxHtmlHelpWindow::OnIndexSel(wxCommandEvent& WXUNUSED(event))
DisplayIndexItem(it);
}
-void wxHtmlHelpWindow::OnIndexFind(wxCommandEvent& event)
+void wxHtmlHelpWindow::OnIndexFind(wxCommandEvent& WXUNUSED(event))
+{
+ DoIndexFind();
+}
+
+void wxHtmlHelpWindow::DoIndexFind()
{
wxString sr = m_IndexText->GetLineText(0);
sr.MakeLower();
if (sr == wxEmptyString)
{
- OnIndexAll(event);
+ DoIndexAll();
}
else
{
@@ -1654,12 +1681,17 @@ void wxHtmlHelpWindow::OnIndexFind(wxCommandEvent& event)
cnttext.Printf(_("%i of %i"), displ, cnt);
m_IndexCountInfo->SetLabel(cnttext);
- m_IndexText->SetSelection(0, sr.Length());
+ m_IndexText->SetSelection(0, sr.length());
m_IndexText->SetFocus();
}
}
void wxHtmlHelpWindow::OnIndexAll(wxCommandEvent& WXUNUSED(event))
+{
+ DoIndexAll();
+}
+
+void wxHtmlHelpWindow::DoIndexAll()
{
wxBusyCursor bcur;
@@ -1695,7 +1727,6 @@ void wxHtmlHelpWindow::OnSearchSel(wxCommandEvent& WXUNUSED(event))
{
if (!it->page.empty())
m_HtmlWin->LoadPage(it->GetFullPath());
- NotifyPageChanged();
}
}
@@ -1709,12 +1740,11 @@ void wxHtmlHelpWindow::OnSearch(wxCommandEvent& WXUNUSED(event))
void wxHtmlHelpWindow::OnBookmarksSel(wxCommandEvent& WXUNUSED(event))
{
- wxString sr = m_Bookmarks->GetStringSelection();
-
- if (sr != wxEmptyString && sr != _("(bookmarks)"))
+ wxString str = m_Bookmarks->GetStringSelection();
+ int idx = m_BookmarksNames.Index(str);
+ if (!str.empty() && str != _("(bookmarks)") && idx != wxNOT_FOUND)
{
- m_HtmlWin->LoadPage(m_BookmarksPages[m_BookmarksNames.Index(sr)]);
- NotifyPageChanged();
+ m_HtmlWin->LoadPage(m_BookmarksPages[(size_t)idx]);
}
}