fixed font picker in wxHtmlHelpController, better UI is now used

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16901 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2002-08-31 23:19:58 +00:00
parent ff095200f7
commit c269cf6235

View File

@@ -51,6 +51,7 @@
#include "wx/stream.h" #include "wx/stream.h"
#include "wx/filedlg.h" #include "wx/filedlg.h"
#include "wx/artprov.h" #include "wx/artprov.h"
#include "wx/spinctrl.h"
// what is considered "small index"? // what is considered "small index"?
#define INDEX_IS_SMALL 100 #define INDEX_IS_SMALL 100
@@ -202,7 +203,11 @@ void wxHtmlHelpFrame::Init(wxHtmlHelpData* data)
m_NormalFonts = m_FixedFonts = NULL; m_NormalFonts = m_FixedFonts = NULL;
m_NormalFace = m_FixedFace = wxEmptyString; m_NormalFace = m_FixedFace = wxEmptyString;
m_FontSize = 1; #ifdef __WXMSW__
m_FontSize = 10;
#else
m_FontSize = 14;
#endif
#if wxUSE_PRINTING_ARCHITECTURE #if wxUSE_PRINTING_ARCHITECTURE
m_Printer = NULL; m_Printer = NULL;
@@ -822,7 +827,7 @@ void wxHtmlHelpFrame::ReadCustomization(wxConfigBase *cfg, const wxString& path)
m_FixedFace = cfg->Read(wxT("hcFixedFace"), m_FixedFace); m_FixedFace = cfg->Read(wxT("hcFixedFace"), m_FixedFace);
m_NormalFace = cfg->Read(wxT("hcNormalFace"), m_NormalFace); m_NormalFace = cfg->Read(wxT("hcNormalFace"), m_NormalFace);
m_FontSize = cfg->Read(wxT("hcFontSize"), m_FontSize); m_FontSize = cfg->Read(wxT("hcBaseFontSize"), m_FontSize);
{ {
int i; int i;
@@ -879,7 +884,7 @@ void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path
cfg->Write(wxT("hcH"), (long)m_Cfg.h); cfg->Write(wxT("hcH"), (long)m_Cfg.h);
cfg->Write(wxT("hcFixedFace"), m_FixedFace); cfg->Write(wxT("hcFixedFace"), m_FixedFace);
cfg->Write(wxT("hcNormalFace"), m_NormalFace); cfg->Write(wxT("hcNormalFace"), m_NormalFace);
cfg->Write(wxT("hcFontSize"), (long)m_FontSize); cfg->Write(wxT("hcBaseFontSize"), (long)m_FontSize);
if (m_Bookmarks) if (m_Bookmarks)
{ {
@@ -910,16 +915,16 @@ void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path
static void SetFontsToHtmlWin(wxHtmlWindow *win, wxString scalf, wxString fixf, int size) static void SetFontsToHtmlWin(wxHtmlWindow *win, wxString scalf, wxString fixf, int size)
{ {
static int f_sizes[5][7] = int f_sizes[7];
{ f_sizes[0] = int(size * 0.6);
{ 6, 7, 9, 12, 14, 16, 19}, f_sizes[1] = int(size * 0.8);
{ 8, 9, 12, 14, 16, 19, 22}, f_sizes[2] = size;
{10, 12, 14, 16, 19, 24, 32}, f_sizes[3] = int(size * 1.2);
{14, 16, 18, 24, 32, 38, 45}, f_sizes[4] = int(size * 1.4);
{16, 20, 24, 32, 38, 45, 50} f_sizes[5] = int(size * 1.6);
}; f_sizes[6] = int(size * 1.8);
win->SetFonts(scalf, fixf, f_sizes[size]); win->SetFonts(scalf, fixf, f_sizes);
} }
@@ -927,39 +932,31 @@ class wxHtmlHelpFrameOptionsDialog : public wxDialog
{ {
public: public:
wxComboBox *NormalFont, *FixedFont; wxComboBox *NormalFont, *FixedFont;
wxRadioBox *RadioBox; wxSpinCtrl *FontSize;
wxHtmlWindow *TestWin; wxHtmlWindow *TestWin;
wxHtmlHelpFrameOptionsDialog(wxWindow *parent) : wxDialog(parent, -1, wxString(_("Help Browser Options"))) wxHtmlHelpFrameOptionsDialog(wxWindow *parent)
: wxDialog(parent, -1, wxString(_("Help Browser Options")))
{ {
wxString choices[5] = {_("very small"), _("small"), _("medium"), _("large"), _("very large")}; wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *topsizer, *sizer, *sizer2; wxFlexGridSizer *sizer = new wxFlexGridSizer(2, 3, 2, 5);
topsizer = new wxBoxSizer(wxVERTICAL); sizer->Add(new wxStaticText(this, -1, _("Normal font:")));
sizer->Add(new wxStaticText(this, -1, _("Fixed font:")));
sizer->Add(new wxStaticText(this, -1, _("Font size:")));
sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(NormalFont = new wxComboBox(this, -1, wxEmptyString, wxDefaultPosition,
sizer2 = new wxStaticBoxSizer( new wxStaticBox(this, -1, _("Normal font:")), wxVERTICAL);
sizer2->Add(NormalFont = new wxComboBox(this, -1, wxEmptyString, wxDefaultPosition,
wxSize(200, 200), wxSize(200, 200),
0, NULL, wxCB_DROPDOWN | wxCB_READONLY), 0, NULL, wxCB_DROPDOWN | wxCB_READONLY));
1, wxEXPAND | wxLEFT | wxRIGHT, 10);
sizer->Add(sizer2, 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10); sizer->Add(FixedFont = new wxComboBox(this, -1, wxEmptyString, wxDefaultPosition,
sizer2 = new wxStaticBoxSizer( new wxStaticBox(this, -1, _("Fixed font:")), wxVERTICAL);
sizer2->Add(FixedFont = new wxComboBox(this, -1, wxEmptyString, wxDefaultPosition,
wxSize(200, 200), wxSize(200, 200),
0, NULL, wxCB_DROPDOWN | wxCB_READONLY), 0, NULL, wxCB_DROPDOWN | wxCB_READONLY));
1, wxEXPAND | wxLEFT | wxRIGHT, 10);
sizer->Add(sizer2, 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10); sizer->Add(FontSize = new wxSpinCtrl(this, -1));
FontSize->SetRange(2, 100);
topsizer->Add(sizer); topsizer->Add(sizer, 0, wxLEFT|wxRIGHT|wxTOP, 10);
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); 0, wxLEFT | wxTOP, 10);
@@ -967,12 +964,12 @@ class wxHtmlHelpFrameOptionsDialog : public wxDialog
wxHW_SCROLLBAR_AUTO | wxSUNKEN_BORDER), wxHW_SCROLLBAR_AUTO | wxSUNKEN_BORDER),
1, wxEXPAND | wxLEFT|wxTOP|wxRIGHT, 10); 1, wxEXPAND | wxLEFT|wxTOP|wxRIGHT, 10);
sizer = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sizer2 = new wxBoxSizer(wxHORIZONTAL);
wxButton *ok; wxButton *ok;
sizer->Add(ok = new wxButton(this, wxID_OK, _("OK")), 0, wxALL, 10); sizer2->Add(ok = new wxButton(this, wxID_OK, _("OK")), 0, wxALL, 10);
ok->SetDefault(); ok->SetDefault();
sizer->Add(new wxButton(this, wxID_CANCEL, _("Cancel")), 0, wxALL, 10); sizer2->Add(new wxButton(this, wxID_CANCEL, _("Cancel")), 0, wxALL, 10);
topsizer->Add(sizer, 0, wxALIGN_RIGHT); topsizer->Add(sizer2, 0, wxALIGN_RIGHT);
SetAutoLayout(TRUE); SetAutoLayout(TRUE);
SetSizer(topsizer); SetSizer(topsizer);
@@ -987,9 +984,10 @@ class wxHtmlHelpFrameOptionsDialog : public wxDialog
SetFontsToHtmlWin(TestWin, SetFontsToHtmlWin(TestWin,
NormalFont->GetStringSelection(), NormalFont->GetStringSelection(),
FixedFont->GetStringSelection(), FixedFont->GetStringSelection(),
RadioBox->GetSelection()); FontSize->GetValue());
TestWin->SetPage(_( TestWin->SetPage(_(
"<html><body>\ "<html><body>\
<table><tr><td>\
Normal face<br>(and <u>underlined</u>. <i>Italic face.</i> \ Normal face<br>(and <u>underlined</u>. <i>Italic face.</i> \
<b>Bold face.</b> <b><i>Bold italic face.</i></b><br>\ <b>Bold face.</b> <b><i>Bold italic face.</i></b><br>\
<font size=-2>font size -2</font><br>\ <font size=-2>font size -2</font><br>\
@@ -999,7 +997,7 @@ Normal face<br>(and <u>underlined</u>. <i>Italic face.</i> \
<font size=+2>font size +2</font><br>\ <font size=+2>font size +2</font><br>\
<font size=+3>font size +3</font><br>\ <font size=+3>font size +3</font><br>\
<font size=+4>font size +4</font><br>\ <font size=+4>font size +4</font><br>\
\ <td>\
<p><tt>Fixed size face.<br> <b>bold</b> <i>italic</i> \ <p><tt>Fixed size face.<br> <b>bold</b> <i>italic</i> \
<b><i>bold italic <u>underlined</u></i></b><br>\ <b><i>bold italic <u>underlined</u></i></b><br>\
<font size=-2>font size -2</font><br>\ <font size=-2>font size -2</font><br>\
@@ -1009,7 +1007,7 @@ Normal face<br>(and <u>underlined</u>. <i>Italic face.</i> \
<font size=+2>font size +2</font><br>\ <font size=+2>font size +2</font><br>\
<font size=+3>font size +3</font><br>\ <font size=+3>font size +3</font><br>\
<font size=+4>font size +4</font></tt>\ <font size=+4>font size +4</font></tt>\
</body></html>" </table></body></html>"
)); ));
} }
@@ -1023,7 +1021,7 @@ Normal face<br>(and <u>underlined</u>. <i>Italic face.</i> \
BEGIN_EVENT_TABLE(wxHtmlHelpFrameOptionsDialog, wxDialog) BEGIN_EVENT_TABLE(wxHtmlHelpFrameOptionsDialog, wxDialog)
EVT_COMBOBOX(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate) EVT_COMBOBOX(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate)
EVT_RADIOBOX(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate) EVT_SPINCTRL(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate)
END_EVENT_TABLE() END_EVENT_TABLE()
@@ -1049,22 +1047,41 @@ void wxHtmlHelpFrame::OptionsDialog()
m_FixedFonts->Sort(); m_FixedFonts->Sort();
} }
// VS: We want to show the font that is actually used by wxHtmlWindow.
// If customization dialog wasn't used yet, facenames are empty and
// wxHtmlWindow uses default fonts -- let's find out what they
// are so that we can pass them to the dialog:
if (m_NormalFace.empty())
{
wxFont fnt(m_FontSize, wxSWISS, wxNORMAL, wxNORMAL, FALSE);
m_NormalFace = fnt.GetFaceName();
}
if (m_FixedFace.empty())
{
wxFont fnt(m_FontSize, wxMODERN, wxNORMAL, wxNORMAL, FALSE);
m_FixedFace = fnt.GetFaceName();
}
for (i = 0; i < m_NormalFonts->GetCount(); i++) for (i = 0; i < m_NormalFonts->GetCount(); i++)
dlg.NormalFont->Append((*m_NormalFonts)[i]); dlg.NormalFont->Append((*m_NormalFonts)[i]);
for (i = 0; i < m_FixedFonts->GetCount(); i++) for (i = 0; i < m_FixedFonts->GetCount(); i++)
dlg.FixedFont->Append((*m_FixedFonts)[i]); dlg.FixedFont->Append((*m_FixedFonts)[i]);
if (!m_NormalFace.IsEmpty()) dlg.NormalFont->SetStringSelection(m_NormalFace); if (!m_NormalFace.empty())
else dlg.NormalFont->SetSelection(0); dlg.NormalFont->SetStringSelection(m_NormalFace);
if (!m_FixedFace.IsEmpty()) dlg.FixedFont->SetStringSelection(m_FixedFace); else
else dlg.FixedFont->SetSelection(0); dlg.FixedFont->SetSelection(0);
dlg.RadioBox->SetSelection(m_FontSize); if (!m_FixedFace.empty())
dlg.FixedFont->SetStringSelection(m_FixedFace);
else
dlg.FixedFont->SetSelection(0);
dlg.FontSize->SetValue(m_FontSize);
dlg.UpdateTestWin(); dlg.UpdateTestWin();
if (dlg.ShowModal() == wxID_OK) if (dlg.ShowModal() == wxID_OK)
{ {
m_NormalFace = dlg.NormalFont->GetStringSelection(); m_NormalFace = dlg.NormalFont->GetStringSelection();
m_FixedFace = dlg.FixedFont->GetStringSelection(); m_FixedFace = dlg.FixedFont->GetStringSelection();
m_FontSize = dlg.RadioBox->GetSelection(); m_FontSize = dlg.FontSize->GetValue();
SetFontsToHtmlWin(m_HtmlWin, m_NormalFace, m_FixedFace, m_FontSize); SetFontsToHtmlWin(m_HtmlWin, m_NormalFace, m_FixedFace, m_FontSize);
} }
} }