#include "wx/defs.h"
-#if wxUSE_HTML
+#if wxUSE_HTML && wxUSE_STREAMS
#ifndef WXPRECOMP
#include "wx/wx.h"
#endif
wxHtmlHelpHashData(int index, wxTreeItemId id) : wxObject()
{ m_Index = index; m_Id = id;}
~wxHtmlHelpHashData() {}
-
+
int m_Index;
wxTreeItemId m_Id;
};
m_Frame -> NotifyPageChanged();
}
- private:
+ private:
wxHtmlHelpFrame *m_Frame;
};
m_DataCreated = TRUE;
}
- m_ContentsImageList = new wxImageList(16, 16);
- m_ContentsImageList -> Add(wxICON(wbook));
- m_ContentsImageList -> Add(wxICON(wfolder));
- m_ContentsImageList -> Add(wxICON(wpage));
- m_ContentsImageList -> Add(wxICON(whlproot));
-
m_ContentsBox = NULL;
m_IndexList = NULL;
m_IndexButton = NULL;
m_NormalFonts = m_FixedFonts = NULL;
m_NormalFace = m_FixedFace = wxEmptyString;
m_FontSize = 1;
-
+
#if wxUSE_PRINTING_ARCHITECTURE
m_Printer = NULL;
#endif
bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, const wxString& title,
int style)
{
+ wxImageList *ContentsImageList = new wxImageList(16, 16);
+ ContentsImageList->Add(wxICON(wbook));
+ ContentsImageList->Add(wxICON(wfolder));
+ ContentsImageList->Add(wxICON(wpage));
+ ContentsImageList->Add(wxICON(whlproot));
+
// Do the config in two steps. We read the HtmlWindow customization after we
// create the window.
if (m_Config)
CreateStatusBar();
// toolbar?
- if (style & wxHF_TOOLBAR) {
- wxToolBar *toolBar = CreateToolBar(wxNO_BORDER | wxTB_HORIZONTAL | wxTB_DOCKABLE);
+ if (style & (wxHF_TOOLBAR | wxHF_FLATTOOLBAR)) {
+ wxToolBar *toolBar = CreateToolBar(wxNO_BORDER | wxTB_HORIZONTAL |
+ wxTB_DOCKABLE |
+ (style & wxHF_FLATTOOLBAR ? wxTB_FLAT : 0));
toolBar->SetMargins( 2, 2 );
AddToolbarButtons(toolBar, style);
toolBar -> Realize();
m_ContentsBox = new wxTreeCtrl(dummy, wxID_HTML_TREECTRL,
wxDefaultPosition, wxDefaultSize,
wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
- m_ContentsBox -> SetImageList(m_ContentsImageList);
+ m_ContentsBox -> AssignImageList(ContentsImageList);
b4 -> top.Below (m_Bookmarks, 10);
b4 -> left.SameAs (dummy, wxLeft, 0);
m_ContentsBox = new wxTreeCtrl(m_NavigPan, wxID_HTML_TREECTRL,
wxDefaultPosition, wxDefaultSize,
wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
- m_ContentsBox -> SetImageList(m_ContentsImageList);
+ m_ContentsBox -> AssignImageList(ContentsImageList);
m_NavigPan -> AddPage(m_ContentsBox, _("Contents"));
}
m_SearchPage = notebook_page++;
}
m_HtmlWin -> Show(TRUE);
-
+
RefreshLists();
// showtime
wxHtmlHelpFrame::~wxHtmlHelpFrame()
{
// PopEventHandler(); // wxhtmlhelpcontroller (not any more!)
- delete m_ContentsImageList;
if (m_DataCreated)
delete m_Data;
if (m_NormalFonts) delete m_NormalFonts;
void wxHtmlHelpFrame::AddToolbarButtons(wxToolBar *toolBar, int style)
{
- toolBar -> AddTool(wxID_HTML_PANEL, wxBITMAP(wpanel), wxNullBitmap,
+ wxBitmap wpanelBitmap = wxBITMAP(wpanel);
+ wxBitmap wbackBitmap = wxBITMAP(wback);
+ wxBitmap wforwardBitmap = wxBITMAP(wforward);
+ wxBitmap wupnodeBitmap = wxBITMAP(wupnode);
+ wxBitmap wupBitmap = wxBITMAP(wup);
+ wxBitmap wdownBitmap = wxBITMAP(wdown);
+ wxBitmap wopenBitmap = wxBITMAP(wopen);
+ wxBitmap wprintBitmap = wxBITMAP(wprint);
+ wxBitmap woptionsBitmap = wxBITMAP(woptions);
+
+ wxASSERT_MSG( (wpanelBitmap.Ok() && wbackBitmap.Ok() &&
+ wforwardBitmap.Ok() && wupnodeBitmap.Ok() &&
+ wupBitmap.Ok() && wdownBitmap.Ok() &&
+ wopenBitmap.Ok() && wprintBitmap.Ok() &&
+ woptionsBitmap.Ok()),
+ wxT("One or more HTML help frame toolbar bitmap could not be loaded.")) ;
+
+
+ toolBar -> AddTool(wxID_HTML_PANEL, wpanelBitmap, wxNullBitmap,
FALSE, -1, -1, (wxObject *) NULL,
_("Show/hide navigation panel"));
toolBar -> AddSeparator();
- toolBar -> AddTool(wxID_HTML_BACK, wxBITMAP(wback), wxNullBitmap,
+ toolBar -> AddTool(wxID_HTML_BACK, wbackBitmap, wxNullBitmap,
FALSE, -1, -1, (wxObject *) NULL,
_("Go back"));
- toolBar -> AddTool(wxID_HTML_FORWARD, wxBITMAP(wforward), wxNullBitmap,
+ toolBar -> AddTool(wxID_HTML_FORWARD, wforwardBitmap, wxNullBitmap,
FALSE, -1, -1, (wxObject *) NULL,
_("Go forward"));
toolBar -> AddSeparator();
- toolBar -> AddTool(wxID_HTML_UPNODE, wxBITMAP(wupnode), wxNullBitmap,
+ toolBar -> AddTool(wxID_HTML_UPNODE, wupnodeBitmap, wxNullBitmap,
FALSE, -1, -1, (wxObject *) NULL,
_("Go one level up in document hierarchy"));
- toolBar -> AddTool(wxID_HTML_UP, wxBITMAP(wup), wxNullBitmap,
+ toolBar -> AddTool(wxID_HTML_UP, wupBitmap, wxNullBitmap,
FALSE, -1, -1, (wxObject *) NULL,
_("Previous page"));
- toolBar -> AddTool(wxID_HTML_DOWN, wxBITMAP(wdown), wxNullBitmap,
+ toolBar -> AddTool(wxID_HTML_DOWN, wdownBitmap, wxNullBitmap,
FALSE, -1, -1, (wxObject *) NULL,
_("Next page"));
if ((style & wxHF_PRINT) || (style & wxHF_OPENFILES))
toolBar -> AddSeparator();
-
+
if (style & wxHF_OPENFILES)
- toolBar -> AddTool(wxID_HTML_OPENFILE, wxBITMAP(wopen), wxNullBitmap,
+ toolBar -> AddTool(wxID_HTML_OPENFILE, wopenBitmap, wxNullBitmap,
FALSE, -1, -1, (wxObject *) NULL,
_("Open HTML document"));
#if wxUSE_PRINTING_ARCHITECTURE
if (style & wxHF_PRINT)
- toolBar -> AddTool(wxID_HTML_PRINT, wxBITMAP(wprint), wxNullBitmap,
+ toolBar -> AddTool(wxID_HTML_PRINT, wprintBitmap, wxNullBitmap,
FALSE, -1, -1, (wxObject *) NULL,
_("Print this page"));
#endif
toolBar -> AddSeparator();
- toolBar -> AddTool(wxID_HTML_OPTIONS, wxBITMAP(woptions), wxNullBitmap,
+ toolBar -> AddTool(wxID_HTML_OPTIONS, woptionsBitmap, wxNullBitmap,
FALSE, -1, -1, (wxObject *) NULL,
_("Display options dialog"));
}
if (m_SearchChoice->GetSelection() != 0)
book = m_SearchChoice->GetStringSelection();
- wxHtmlSearchStatus status(m_Data, keyword,
- m_SearchCaseSensitive -> GetValue(), m_SearchWholeWords -> GetValue(),
+ wxHtmlSearchStatus status(m_Data, keyword,
+ m_SearchCaseSensitive -> GetValue(), m_SearchWholeWords -> GetValue(),
book);
wxProgressDialog progress(_("Searching..."), _("No matching page found yet"),
m_SearchText -> SetFocus();
if (foundcnt) {
wxHtmlContentsItem *it = (wxHtmlContentsItem*) m_SearchList -> GetClientData(0);
- if (it)
+ if (it)
{
m_HtmlWin -> LoadPage(it -> m_Book -> GetBasePath() + it -> m_Page);
NotifyPageChanged();
return ;
m_ContentsBox->Clear();
-
+
if (m_PagesHash) delete m_PagesHash;
m_PagesHash = new wxHashTable(wxKEY_STRING, 2 * m_Data -> GetContentsCnt());
m_PagesHash -> DeleteContents(TRUE);
roots[it -> m_Level + 1] = m_ContentsBox -> AppendItem(
roots[it -> m_Level], it -> m_Name, IMG_Page, -1,
new wxHtmlHelpTreeItemData(i));
- m_PagesHash -> Put(it -> m_Book -> GetBasePath() + it -> m_Page,
+ m_PagesHash -> Put(it -> m_Book -> GetBasePath() + it -> m_Page,
new wxHtmlHelpHashData(i, roots[it -> m_Level + 1]));
if (it -> m_Level == 0) {
m_IndexList->Clear();
int cnt = m_Data->GetIndexCnt();
-
+
wxString cnttext;
if (cnt > INDEX_IS_SMALL) cnttext.Printf(_("%i of %i"), 0, cnt);
else cnttext.Printf(_("%i of %i"), cnt, cnt);
m_IndexCountInfo -> SetLabel(cnttext);
if (cnt > INDEX_IS_SMALL) return;
-
+
wxHtmlContentsItem* index = m_Data->GetIndex();
- for (int i = 0; i < cnt; i++)
+ for (int i = 0; i < cnt; i++)
m_IndexList -> Append(index[i].m_Name, (char*)(index + i));
}
int i;
int cnt;
wxString val, s;
-
+
cnt = cfg -> Read(wxT("hcBookmarksCnt"), 0L);
if (cnt != 0) {
m_BookmarksNames.Clear();
m_Bookmarks -> Clear();
m_Bookmarks -> Append(_("(bookmarks)"));
}
-
+
for (i = 0; i < cnt; i++) {
val.Printf(wxT("hcBookmark_%i"), i);
s = cfg -> Read(val);
cfg -> Write(wxT("hcFixedFace"), m_FixedFace);
cfg -> Write(wxT("hcNormalFace"), m_NormalFace);
cfg -> Write(wxT("hcFontSize"), (long)m_FontSize);
-
+
if (m_Bookmarks) {
int i;
int cnt = m_BookmarksNames.GetCount();
wxString val;
-
+
cfg -> Write(wxT("hcBookmarksCnt"), (long)cnt);
for (i = 0; i < cnt; i++) {
val.Printf(wxT("hcBookmark_%i"), i);
static void SetFontsToHtmlWin(wxHtmlWindow *win, wxString scalf, wxString fixf, int size)
{
- static int f_sizes[5][7] =
+ static int f_sizes[5][7] =
{
{ 6, 7, 9, 12, 14, 16, 19},
{ 8, 9, 12, 14, 16, 19, 22},
sizer = new wxBoxSizer(wxHORIZONTAL);
sizer2 = new wxStaticBoxSizer( new wxStaticBox(this, -1, _("Normal font:")), wxVERTICAL);
- sizer2 -> Add(NormalFont = new wxComboBox(this, -1, wxEmptyString, wxDefaultPosition,
- wxSize(200, 200),
+ sizer2 -> Add(NormalFont = new wxComboBox(this, -1, wxEmptyString, wxDefaultPosition,
+ wxSize(200, 200),
0, NULL, wxCB_DROPDOWN | wxCB_READONLY),
1, wxEXPAND | wxLEFT | wxRIGHT, 10);
sizer -> Add(sizer2, 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10);
sizer2 = new wxStaticBoxSizer( new wxStaticBox(this, -1, _("Fixed font:")), wxVERTICAL);
- sizer2 -> Add(FixedFont = new wxComboBox(this, -1, wxEmptyString, wxDefaultPosition,
- wxSize(200, 200),
- 0, NULL, wxCB_DROPDOWN | wxCB_READONLY),
+ sizer2 -> Add(FixedFont = new wxComboBox(this, -1, wxEmptyString, wxDefaultPosition,
+ wxSize(200, 200),
+ 0, NULL, wxCB_DROPDOWN | wxCB_READONLY),
1, wxEXPAND | wxLEFT | wxRIGHT, 10);
sizer -> Add(sizer2, 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10);
topsizer -> Add(sizer);
- topsizer -> Add(RadioBox = new wxRadioBox(this, -1, _("Font size:"),
- wxDefaultPosition, wxDefaultSize, 5, choices, 5),
+ topsizer -> Add(RadioBox = new wxRadioBox(this, -1, _("Font size:"),
+ wxDefaultPosition, wxDefaultSize, 5, choices, 5),
0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10);
-
- topsizer -> Add(new wxStaticText(this, -1, _("Preview:")),
+
+ topsizer -> Add(new wxStaticText(this, -1, _("Preview:")),
0, wxLEFT | wxTOP, 10);
- topsizer -> Add(TestWin = new wxHtmlWindow(this, -1, wxDefaultPosition, wxSize(-1, 150)),
+ topsizer -> Add(TestWin = new wxHtmlWindow(this, -1, wxDefaultPosition, wxSize(-1, 150)),
1, wxEXPAND | wxLEFT|wxTOP|wxRIGHT, 10);
sizer = new wxBoxSizer(wxHORIZONTAL);
topsizer -> Fit(this);
Centre(wxBOTH);
}
-
+
void UpdateTestWin()
{
wxBusyCursor bcur;
- SetFontsToHtmlWin(TestWin,
+ SetFontsToHtmlWin(TestWin,
NormalFont -> GetStringSelection(),
FixedFont -> GetStringSelection(),
RadioBox -> GetSelection());
- TestWin -> SetPage(_("<html><body>"
- "Normal face<br>(and <u>underlined</u>. <i>Italic face.</i> "
- "<b>Bold face.</b> <b><i>Bold italic face.</i></b><br>"
- "<font size=-2>font size -2</font><br>"
- "<font size=-1>font size -1</font><br>"
- "<font size=+0>font size +0</font><br>"
- "<font size=+1>font size +1</font><br>"
- "<font size=+2>font size +2</font><br>"
- "<font size=+3>font size +3</font><br>"
- "<font size=+4>font size +4</font><br>"
-
- "<p><tt>Fixed size face.<br> <b>bold</b> <i>italic</i> "
- "<b><i>bold italic <u>underlined</u></i></b><br>"
- "<font size=-2>font size -2</font><br>"
- "<font size=-1>font size -1</font><br>"
- "<font size=+0>font size +0</font><br>"
- "<font size=+1>font size +1</font><br>"
- "<font size=+2>font size +2</font><br>"
- "<font size=+3>font size +3</font><br>"
- "<font size=+4>font size +4</font></tt>"
- "</body></html>"));
+ TestWin -> SetPage(_(
+"<html><body>\
+Normal face<br>(and <u>underlined</u>. <i>Italic face.</i> \
+<b>Bold face.</b> <b><i>Bold italic face.</i></b><br>\
+<font size=-2>font size -2</font><br>\
+<font size=-1>font size -1</font><br>\
+<font size=+0>font size +0</font><br>\
+<font size=+1>font size +1</font><br>\
+<font size=+2>font size +2</font><br>\
+<font size=+3>font size +3</font><br>\
+<font size=+4>font size +4</font><br>\
+\
+<p><tt>Fixed size face.<br> <b>bold</b> <i>italic</i> \
+<b><i>bold italic <u>underlined</u></i></b><br>\
+<font size=-2>font size -2</font><br>\
+<font size=-1>font size -1</font><br>\
+<font size=+0>font size +0</font><br>\
+<font size=+1>font size +1</font><br>\
+<font size=+2>font size +2</font><br>\
+<font size=+3>font size +3</font><br>\
+<font size=+4>font size +4</font></tt>\
+</body></html>"
+ ));
}
void OnUpdate(wxCommandEvent& event)
{
wxHtmlHelpFrameOptionsDialog dlg(this);
unsigned i;
-
+
if (m_NormalFonts == NULL) {
wxFontEnumerator enu;
enu.EnumerateFacenames();
*m_FixedFonts = *enu.GetFacenames();
m_FixedFonts -> Sort();
}
-
+
for (i = 0; i < m_NormalFonts -> GetCount(); i++)
dlg.NormalFont -> Append((*m_NormalFonts)[i]);
for (i = 0; i < m_FixedFonts -> GetCount(); i++)
else dlg.FixedFont -> SetSelection(0);
dlg.RadioBox -> SetSelection(m_FontSize);
dlg.UpdateTestWin();
-
+
if (dlg.ShowModal() == wxID_OK) {
m_NormalFace = dlg.NormalFont -> GetStringSelection();
m_FixedFace = dlg.FixedFont -> GetStringSelection();
m_HtmlWin -> HistoryForward();
NotifyPageChanged();
break;
-
- case wxID_HTML_UP :
- if (m_PagesHash)
+
+ case wxID_HTML_UP :
+ if (m_PagesHash)
{
wxString an = m_HtmlWin -> GetOpenedAnchor();
wxHtmlHelpHashData *ha;
}
break;
- case wxID_HTML_UPNODE :
- if (m_PagesHash)
+ case wxID_HTML_UPNODE :
+ if (m_PagesHash)
{
wxString an = m_HtmlWin -> GetOpenedAnchor();
wxHtmlHelpHashData *ha;
int level = m_Data -> GetContents()[ha -> m_Index].m_Level - 1;
wxHtmlContentsItem *it;
int ind = ha -> m_Index - 1;
-
+
it = m_Data -> GetContents() + ind;
while (ind >= 0 && it -> m_Level != level) ind--, it--;
if (ind >= 0)
}
break;
- case wxID_HTML_DOWN :
- if (m_PagesHash)
+ case wxID_HTML_DOWN :
+ if (m_PagesHash)
{
wxString an = m_HtmlWin -> GetOpenedAnchor();
wxString adr;
wxHtmlHelpHashData *ha;
-
+
if (an.IsEmpty()) adr = m_HtmlWin -> GetOpenedPage();
else adr = m_HtmlWin -> GetOpenedPage() + wxT("#") + an;
if (ha && ha -> m_Index < m_Data -> GetContentsCnt() - 1)
{
wxHtmlContentsItem *it = m_Data -> GetContents() + (ha -> m_Index + 1);
-
+
while (it -> m_Book -> GetBasePath() + it -> m_Page == adr) it++;
m_HtmlWin -> LoadPage(it -> m_Book -> GetBasePath() + it -> m_Page);
NotifyPageChanged();
case wxID_HTML_OPTIONS :
OptionsDialog();
break;
-
- case wxID_HTML_BOOKMARKSADD :
+
+ case wxID_HTML_BOOKMARKSADD :
{
wxString item;
wxString url;
-
+
item = m_HtmlWin -> GetOpenedPageTitle();
url = m_HtmlWin -> GetOpenedPage();
if (item == wxEmptyString) item = url.AfterLast(wxT('/'));
}
}
break;
-
- case wxID_HTML_BOOKMARKSREMOVE :
+
+ case wxID_HTML_BOOKMARKSREMOVE :
{
wxString item;
int pos;
-
+
item = m_Bookmarks -> GetStringSelection();
pos = m_BookmarksNames.Index(item);
if (pos != wxNOT_FOUND) {
#if wxUSE_PRINTING_ARCHITECTURE
case wxID_HTML_PRINT :
{
- if (m_Printer == NULL)
+ if (m_Printer == NULL)
m_Printer = new wxHtmlEasyPrinting(_("Help Printing"), this);
if (!m_HtmlWin -> GetOpenedPage())
wxLogWarning(_("Cannot print empty page."));
case wxID_HTML_OPENFILE :
{
- wxString s = wxFileSelector(_("Open HTML document"), wxEmptyString, wxEmptyString, wxEmptyString,
- wxT("HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|"
- "Help books (*.htb)|*.htb|Help books (*.zip)|*.zip|"
- "HTML Help Project (*.hhp)|*.hhp|"
- "All files (*.*)|*"),
- wxOPEN | wxFILE_MUST_EXIST, this);
+ wxString s = wxFileSelector(_("Open HTML document"),
+ wxEmptyString,
+ wxEmptyString,
+ wxEmptyString,
+ _(
+"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|\
+Help books (*.htb)|*.htb|Help books (*.zip)|*.zip|\
+HTML Help Project (*.hhp)|*.hhp|\
+All files (*.*)|*"
+ ),
+ wxOPEN | wxFILE_MUST_EXIST,
+ this);
if (!s.IsEmpty())
{
wxString ext = s.Right(4).Lower();
wxHtmlContentsItem *it;
pg = (wxHtmlHelpTreeItemData*) m_ContentsBox -> GetItemData(event.GetItem());
-
- if (pg && m_UpdateContents)
+
+ if (pg && m_UpdateContents)
{
it = m_Data -> GetContents() + (pg -> m_Id);
m_UpdateContents = FALSE;
{
wxString sr = m_IndexText -> GetLineText(0);
sr.MakeLower();
- if (sr == wxEmptyString)
+ if (sr == wxEmptyString)
OnIndexAll(event);
else {
const wxChar *cstr = sr.c_str();
wxChar mybuff[512], *ptr;
bool first = TRUE;
-
+
m_IndexList->Clear();
int cnt = m_Data->GetIndexCnt();
wxHtmlContentsItem* index = m_Data->GetIndex();
for (int i = 0; i < cnt; i++)
{
wxStrncpy(mybuff, index[i].m_Name, 512);
- mybuff[511] = 0;
- for (ptr = mybuff; *ptr != 0; ptr++)
- if (*ptr >= 'A' && *ptr <= 'Z') *ptr -= 'A' - 'a';
+ mybuff[511] = _T('\0');
+ for (ptr = mybuff; *ptr != 0; ptr++)
+ if (*ptr >= _T('A') && *ptr <= _T('Z'))
+ *ptr -= (wxChar)(_T('A') - _T('a'));
if (wxStrstr(mybuff, cstr) != NULL) {
m_IndexList -> Append(index[i].m_Name, (char*)(index + i));
displ++;
void wxHtmlHelpFrame::OnIndexAll(wxCommandEvent& WXUNUSED(event))
{
wxBusyCursor bcur;
-
+
m_IndexList->Clear();
int cnt = m_Data->GetIndexCnt();
bool first = TRUE;
void wxHtmlHelpFrame::OnSearchSel(wxCommandEvent& WXUNUSED(event))
{
wxHtmlContentsItem *it = (wxHtmlContentsItem*) m_SearchList -> GetClientData(m_SearchList -> GetSelection());
- if (it)
+ if (it)
{
m_HtmlWin -> LoadPage(it -> m_Book -> GetBasePath() + it -> m_Page);
NotifyPageChanged();
EVT_TEXT_ENTER(wxID_HTML_INDEXTEXT, wxHtmlHelpFrame::OnIndexFind)
EVT_BUTTON(wxID_HTML_INDEXBUTTONALL, wxHtmlHelpFrame::OnIndexAll)
EVT_COMBOBOX(wxID_HTML_BOOKMARKSLIST, wxHtmlHelpFrame::OnBookmarksSel)
- EVT_CLOSE(wxHtmlHelpFrame::OnCloseWindow)
+ EVT_CLOSE(wxHtmlHelpFrame::OnCloseWindow)
END_EVENT_TABLE()
#endif