X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7929902d65215d481c59733a5d05b81e373b8237..d18eb918f447ebb3b9e28154839392fe6b32995a:/src/html/helpwnd.cpp
diff --git a/src/html/helpwnd.cpp b/src/html/helpwnd.cpp
index e350f6e1b4..eff2294cca 100644
--- a/src/html/helpwnd.cpp
+++ b/src/html/helpwnd.cpp
@@ -58,7 +58,12 @@
#include "wx/spinctrl.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
@@ -144,7 +149,7 @@ public:
private:
wxHtmlHelpWindow *m_Window;
- DECLARE_NO_COPY_CLASS(wxHtmlHelpHtmlWindow)
+ wxDECLARE_NO_COPY_CLASS(wxHtmlHelpHtmlWindow);
DECLARE_EVENT_TABLE()
};
@@ -184,7 +189,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 +278,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 +304,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,10 +322,12 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
{
m_hfStyle = helpStyle;
+#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,6 +351,7 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
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);
@@ -353,17 +363,21 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
#ifdef __WXMSW__
wxBorder htmlWindowBorder = GetDefaultBorder();
- if (htmlWindowBorder == wxBORDER_SUNKEN)
- htmlWindowBorder = wxBORDER_SIMPLE;
+ htmlWindowBorder = wxBORDER_THEME;
#else
- wxBorder htmlWindowBorder = wxBORDER_SIMPLE;
+ 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 |= wxSP_LIVE_UPDATE;
+#endif
+ m_Splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, splitterStyle);
topWindowSizer->Add(m_Splitter, 1, wxEXPAND);
@@ -387,8 +401,10 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
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 )
@@ -405,10 +421,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]);
@@ -437,7 +459,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
@@ -563,10 +585,12 @@ bool wxHtmlHelpWindow::Create(wxWindow* parent, wxWindowID id,
// showtime
if ( m_NavigPan && m_Splitter )
{
- if (m_NavigPan)
- m_Splitter->SetMinimumPaneSize(m_NavigPan->GetBestSize().x);
- else
- m_Splitter->SetMinimumPaneSize(20);
+ // 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 )
{
@@ -583,7 +607,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();
@@ -644,11 +668,11 @@ 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.")) ;
@@ -799,7 +823,9 @@ 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());
@@ -902,7 +928,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:
@@ -1012,6 +1038,9 @@ void wxHtmlHelpWindow::CreateContents()
imaged[it->level] = true;
}
}
+
+ m_ContentsBox->SetMinSize(wxSize(CONTENT_TREE_INDEX_MIN_WIDTH,
+ m_ContentsBox->GetMinHeight()));
}
void wxHtmlHelpWindow::CreateIndex()
@@ -1021,13 +1050,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;
@@ -1035,6 +1064,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()
@@ -1061,6 +1093,7 @@ void wxHtmlHelpWindow::RefreshLists()
CreateSearch();
}
+#if wxUSE_CONFIG
void wxHtmlHelpWindow::ReadCustomization(wxConfigBase *cfg, const wxString& path)
{
wxString oldpath;
@@ -1069,7 +1102,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;
@@ -1127,7 +1160,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);
@@ -1166,6 +1199,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)
{
@@ -1207,7 +1241,7 @@ public:
0, NULL, wxCB_DROPDOWN | wxCB_READONLY));
sizer->Add(FontSize = new wxSpinCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition,
- wxDefaultSize, wxSP_ARROW_KEYS, 2, 100, 2, _T("wxSpinCtrl")));
+ wxDefaultSize, wxSP_ARROW_KEYS, 2, 100, 2, wxT("wxSpinCtrl")));
topsizer->Add(sizer, 0, wxLEFT|wxRIGHT|wxTOP, 10);
@@ -1243,25 +1277,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 );
}
@@ -1276,7 +1310,7 @@ public:
}
DECLARE_EVENT_TABLE()
- DECLARE_NO_COPY_CLASS(wxHtmlHelpWindowOptionsDialog)
+ wxDECLARE_NO_COPY_CLASS(wxHtmlHelpWindowOptionsDialog);
};
BEGIN_EVENT_TABLE(wxHtmlHelpWindowOptionsDialog, wxDialog)
@@ -1521,9 +1555,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
@@ -1537,7 +1575,7 @@ 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,
@@ -1548,11 +1586,11 @@ void wxHtmlHelpWindow::OnToolbar(wxCommandEvent& event)
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);