+
+
+
+static void SetFontsToHtmlWin(wxHtmlWindow *win, wxString scalf, wxString fixf, int size)
+{
+ static int f_sizes[5][7] =
+ {
+ { 6, 7, 9, 12, 14, 16, 19},
+ { 8, 9, 12, 14, 16, 19, 22},
+ {10, 12, 14, 16, 19, 24, 32},
+ {14, 16, 18, 24, 32, 38, 45},
+ {16, 20, 24, 32, 38, 45, 50}
+ };
+
+ win -> SetFonts(scalf, fixf, f_sizes[size]);
+}
+
+
+class wxHtmlHelpFrameOptionsDialog : public wxDialog
+{
+ public:
+ wxComboBox *NormalFont, *FixedFont;
+ wxRadioBox *RadioBox;
+ wxHtmlWindow *TestWin;
+
+ wxHtmlHelpFrameOptionsDialog(wxWindow *parent) : wxDialog(parent, -1, wxString(_("Help Browser Options")))
+ {
+ wxString choices[5] = {_("very small"), _("small"), _("medium"), _("large"), _("very large")};
+ wxBoxSizer *topsizer, *sizer, *sizer2;
+
+ topsizer = new wxBoxSizer(wxVERTICAL);
+
+ 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),
+ 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),
+ 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),
+ 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10);
+
+ topsizer -> Add(new wxStaticText(this, -1, _("Preview:")),
+ 0, wxLEFT | wxTOP, 10);
+ topsizer -> Add(TestWin = new wxHtmlWindow(this, -1, wxDefaultPosition, wxSize(-1, 150)),
+ 1, wxEXPAND | wxLEFT|wxTOP|wxRIGHT, 10);
+
+ sizer = new wxBoxSizer(wxHORIZONTAL);
+ sizer -> Add(new wxButton(this, wxID_OK, _("OK")), 0, wxALL, 10);
+ sizer -> Add(new wxButton(this, wxID_CANCEL, _("Cancel")), 0, wxALL, 10);
+ topsizer -> Add(sizer, 0, wxALIGN_RIGHT);
+
+ SetAutoLayout(TRUE);
+ SetSizer(topsizer);
+ topsizer -> Fit(this);
+ Centre(wxBOTH);
+ }
+
+
+ void UpdateTestWin()
+ {
+ wxBusyCursor bcur;
+ 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>"
+ ));
+ }
+
+ void OnUpdate(wxCommandEvent& event)
+ {
+ UpdateTestWin();
+ }
+
+ DECLARE_EVENT_TABLE()
+};
+
+BEGIN_EVENT_TABLE(wxHtmlHelpFrameOptionsDialog, wxDialog)
+ EVT_COMBOBOX(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate)
+ EVT_RADIOBOX(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate)
+END_EVENT_TABLE()
+
+
+void wxHtmlHelpFrame::OptionsDialog()
+{
+ wxHtmlHelpFrameOptionsDialog dlg(this);
+ unsigned i;
+
+ if (m_NormalFonts == NULL) {
+ wxFontEnumerator enu;
+ enu.EnumerateFacenames();
+ m_NormalFonts = new wxArrayString;
+ *m_NormalFonts = *enu.GetFacenames();
+ m_NormalFonts -> Sort();
+ }
+ if (m_FixedFonts == NULL) {
+ wxFontEnumerator enu;
+ enu.EnumerateFacenames(wxFONTENCODING_SYSTEM, TRUE);
+ m_FixedFonts = new wxArrayString;
+ *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++)
+ dlg.FixedFont -> Append((*m_FixedFonts)[i]);
+ if (!m_NormalFace.IsEmpty()) dlg.NormalFont -> SetStringSelection(m_NormalFace);
+ else dlg.NormalFont -> SetSelection(0);
+ if (!m_FixedFace.IsEmpty()) dlg.FixedFont -> SetStringSelection(m_FixedFace);
+ 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_FontSize = dlg.RadioBox -> GetSelection();
+ SetFontsToHtmlWin(m_HtmlWin, m_NormalFace, m_FixedFace, m_FontSize);
+ }
+}
+
+
+
+void wxHtmlHelpFrame::NotifyPageChanged()
+{
+ if (m_UpdateContents && m_PagesHash)
+ {
+ wxString an = m_HtmlWin -> GetOpenedAnchor();
+ wxHtmlHelpHashData *ha;
+ if (an.IsEmpty())
+ ha = (wxHtmlHelpHashData*) m_PagesHash -> Get(m_HtmlWin -> GetOpenedPage());
+ else
+ ha = (wxHtmlHelpHashData*) m_PagesHash -> Get(m_HtmlWin -> GetOpenedPage() + wxT("#") + an);
+ if (ha)
+ {
+ bool olduc = m_UpdateContents;
+ m_UpdateContents = FALSE;
+ m_ContentsBox -> SelectItem(ha -> m_Id);
+ m_ContentsBox -> EnsureVisible(ha -> m_Id);
+ m_UpdateContents = olduc;
+ }
+ }
+}
+
+
+