diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-09-18 21:41:31 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-09-19 22:01:19 +0200 |
commit | 98e45269e4d9f276a27c065dbd00614436856b20 (patch) | |
tree | d2feea8a91752742dba616415364b10351792938 | |
parent | c1ad998afeef0238f1b823fec8aea4eed7187fcf (diff) |
weld SmFontDialog
Change-Id: Id253631e7dfd44570a4261b7a7a5db1fac9d68ba
Reviewed-on: https://gerrit.libreoffice.org/60728
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | extras/source/glade/libreoffice-catalog.xml.in | 3 | ||||
-rw-r--r-- | solenv/sanitizers/ui/modules/smath.suppr | 1 | ||||
-rw-r--r-- | starmath/inc/dialog.hxx | 31 | ||||
-rw-r--r-- | starmath/source/dialog.cxx | 112 | ||||
-rw-r--r-- | starmath/uiconfig/smath/ui/fontdialog.ui | 93 |
5 files changed, 138 insertions, 102 deletions
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in index 92eb0fdefdeb..8c4ce8b7d652 100644 --- a/extras/source/glade/libreoffice-catalog.xml.in +++ b/extras/source/glade/libreoffice-catalog.xml.in @@ -206,9 +206,6 @@ <glade-widget-class title="Gallery Preview" name="svxcorelo-GalleryPreview" generic-name="Gallery Preview" parent="GtkDrawingArea" icon-name="widget-gtk-drawingarea"/> - <glade-widget-class title="Show Math Font" name="smlo-SmShowFont" - generic-name="Show Math Font" parent="GtkDrawingArea" - icon-name="widget-gtk-drawingarea"/> <glade-widget-class title="Number Preview" name="cuilo-SvxNumberPreview" generic-name="Number Preview Window" parent="GtkDrawingArea" icon-name="widget-gtk-drawingarea"/> diff --git a/solenv/sanitizers/ui/modules/smath.suppr b/solenv/sanitizers/ui/modules/smath.suppr index 075009ab02db..e9bebb698cb7 100644 --- a/solenv/sanitizers/ui/modules/smath.suppr +++ b/solenv/sanitizers/ui/modules/smath.suppr @@ -3,6 +3,7 @@ starmath/uiconfig/smath/ui/catalogdialog.ui://GtkComboBoxText[@id='symbolset'] n starmath/uiconfig/smath/ui/catalogdialog.ui://GtkLabel[@id='symbolname'] orphan-label starmath/uiconfig/smath/ui/catalogdialog.ui://GtkDrawingArea[@id='symbolsetdisplay'] no-labelled-by starmath/uiconfig/smath/ui/catalogdialog.ui://GtkDrawingArea[@id='preview'] no-labelled-by +starmath/uiconfig/smath/ui/fontdialog.ui://GtkEntry[@id='font'] no-labelled-by starmath/uiconfig/smath/ui/printeroptions.ui://GtkSpinButton[@id='scalingspin'] no-labelled-by starmath/uiconfig/smath/ui/smathsettings.ui://GtkSpinButton[@id='zoom'] no-labelled-by starmath/uiconfig/smath/ui/spacingdialog.ui://GtkLabel[@id='1label1'] orphan-label diff --git a/starmath/inc/dialog.hxx b/starmath/inc/dialog.hxx index 68b56efdb4d9..bd1c0d4bdd40 100644 --- a/starmath/inc/dialog.hxx +++ b/starmath/inc/dialog.hxx @@ -77,41 +77,36 @@ public: /**************************************************************************/ -class SmShowFont : public vcl::Window +class SmShowFont : public weld::CustomWidgetController { virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&) override; vcl::Font maFont; public: - SmShowFont(vcl::Window *pParent, WinBits nStyle) - : Window(pParent, nStyle) + SmShowFont() { } - virtual Size GetOptimalSize() const override; + virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override; void SetFont(const vcl::Font& rFont); }; -class SmFontDialog : public ModalDialog +class SmFontDialog : public weld::GenericDialogController { - VclPtr<ComboBox> m_pFontBox; - VclPtr<VclContainer> m_pAttrFrame; - VclPtr<CheckBox> m_pBoldCheckBox; - VclPtr<CheckBox> m_pItalicCheckBox; - VclPtr<SmShowFont> m_pShowFont; - vcl::Font maFont; + SmShowFont m_aShowFont; + std::unique_ptr<weld::EntryTreeView> m_xFontBox; + std::unique_ptr<weld::Widget> m_xAttrFrame; + std::unique_ptr<weld::CheckButton> m_xBoldCheckBox; + std::unique_ptr<weld::CheckButton> m_xItalicCheckBox; + std::unique_ptr<weld::CustomWeld> m_xShowFont; - DECL_LINK(FontSelectHdl, ComboBox&, void); - DECL_LINK(FontModifyHdl, Edit&, void); - DECL_LINK(AttrChangeHdl, Button *, void); - - virtual void DataChanged( const DataChangedEvent& rDCEvt ) override; + DECL_LINK(FontSelectHdl, weld::ComboBox&, void); + DECL_LINK(AttrChangeHdl, weld::ToggleButton&, void); public: - SmFontDialog(vcl::Window * pParent, OutputDevice *pFntListDevice, bool bHideCheckboxes); + SmFontDialog(weld::Window* pParent, OutputDevice *pFntListDevice, bool bHideCheckboxes); virtual ~SmFontDialog() override; - virtual void dispose() override; const vcl::Font& GetFont() const { diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx index 7c46a234edb6..748ad51575f0 100644 --- a/starmath/source/dialog.cxx +++ b/starmath/source/dialog.cxx @@ -226,10 +226,8 @@ VclPtr<SfxTabPage> SmPrintOptionsTabPage::Create(TabPageParent pParent, const Sf return VclPtr<SmPrintOptionsTabPage>::Create(pParent, rSet).get(); } -void SmShowFont::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) +void SmShowFont::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& /*rRect*/) { - Window::Paint(rRenderContext, rRect); - Color aBackColor; Color aTextColor; lclGetSettingColors(aBackColor, aTextColor); @@ -249,11 +247,11 @@ void SmShowFont::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangl (rRenderContext.GetOutputSize().Height() - aTextSize.Height()) / 2), sText); } -VCL_BUILDER_FACTORY_CONSTRUCTOR(SmShowFont, 0) - -Size SmShowFont::GetOptimalSize() const +void SmShowFont::SetDrawingArea(weld::DrawingArea* pDrawingArea) { - return LogicToPixel(Size(111 , 31), MapMode(MapUnit::MapAppFont)); + CustomWidgetController::SetDrawingArea(pDrawingArea); + Size aSize(pDrawingArea->get_ref_device().LogicToPixel(Size(111 , 31), MapMode(MapUnit::MapAppFont))); + pDrawingArea->set_size_request(aSize.Width(), aSize.Height()); } void SmShowFont::SetFont(const vcl::Font& rFont) @@ -262,67 +260,56 @@ void SmShowFont::SetFont(const vcl::Font& rFont) Invalidate(); } -IMPL_LINK( SmFontDialog, FontSelectHdl, ComboBox&, rComboBox, void ) -{ - maFont.SetFamilyName(rComboBox.GetText()); - m_pShowFont->SetFont(maFont); -} - -IMPL_LINK( SmFontDialog, FontModifyHdl, Edit&, rEdit, void ) +IMPL_LINK( SmFontDialog, FontSelectHdl, weld::ComboBox&, rComboBox, void ) { - ComboBox& rComboBox = static_cast<ComboBox&>(rEdit); - // if font is available in list then use it - sal_Int32 nPos = rComboBox.GetEntryPos( rComboBox.GetText() ); - if (COMBOBOX_ENTRY_NOTFOUND != nPos) - { - FontSelectHdl( rComboBox ); - } + maFont.SetFamilyName(rComboBox.get_active_text()); + m_aShowFont.SetFont(maFont); } -IMPL_LINK_NOARG( SmFontDialog, AttrChangeHdl, Button*, void ) +IMPL_LINK_NOARG(SmFontDialog, AttrChangeHdl, weld::ToggleButton&, void) { - if (m_pBoldCheckBox->IsChecked()) + if (m_xBoldCheckBox->get_active()) maFont.SetWeight(WEIGHT_BOLD); else maFont.SetWeight(WEIGHT_NORMAL); - if (m_pItalicCheckBox->IsChecked()) + if (m_xItalicCheckBox->get_active()) maFont.SetItalic(ITALIC_NORMAL); else maFont.SetItalic(ITALIC_NONE); - m_pShowFont->SetFont(maFont); + m_aShowFont.SetFont(maFont); } void SmFontDialog::SetFont(const vcl::Font &rFont) { maFont = rFont; - m_pFontBox->SetText(maFont.GetFamilyName()); - m_pBoldCheckBox->Check(IsBold(maFont)); - m_pItalicCheckBox->Check(IsItalic(maFont)); - m_pShowFont->SetFont(maFont); + m_xFontBox->set_active_text(maFont.GetFamilyName()); + m_xBoldCheckBox->set_active(IsBold(maFont)); + m_xItalicCheckBox->set_active(IsItalic(maFont)); + m_aShowFont.SetFont(maFont); } -SmFontDialog::SmFontDialog(vcl::Window * pParent, OutputDevice *pFntListDevice, bool bHideCheckboxes) - : ModalDialog(pParent, "FontDialog", "modules/smath/ui/fontdialog.ui") +SmFontDialog::SmFontDialog(weld::Window * pParent, OutputDevice *pFntListDevice, bool bHideCheckboxes) + : GenericDialogController(pParent, "modules/smath/ui/fontdialog.ui", "FontDialog") + , m_xFontBox(m_xBuilder->weld_entry_tree_view("fontgrid", "font", "fonts")) + , m_xAttrFrame(m_xBuilder->weld_widget("attrframe")) + , m_xBoldCheckBox(m_xBuilder->weld_check_button("bold")) + , m_xItalicCheckBox(m_xBuilder->weld_check_button("italic")) + , m_xShowFont(new weld::CustomWeld(*m_xBuilder, "preview", m_aShowFont)) { - get(m_pFontBox, "font"); - m_pFontBox->set_height_request(8 * m_pFontBox->GetTextHeight()); - get(m_pAttrFrame, "attrframe"); - get(m_pBoldCheckBox, "bold"); - get(m_pItalicCheckBox, "italic"); - get(m_pShowFont, "preview"); + m_xFontBox->set_height_request_by_rows(8); { - WaitObject aWait( this ); + weld::WaitObject aWait(pParent); FontList aFontList( pFntListDevice ); sal_uInt16 nCount = aFontList.GetFontNameCount(); for (sal_uInt16 i = 0; i < nCount; ++i) { - m_pFontBox->InsertEntry( aFontList.GetFontName(i).GetFamilyName() ); + m_xFontBox->append_text(aFontList.GetFontName(i).GetFamilyName()); } maFont.SetFontSize(Size(0, 24)); maFont.SetWeight(WEIGHT_NORMAL); @@ -331,47 +318,24 @@ SmFontDialog::SmFontDialog(vcl::Window * pParent, OutputDevice *pFntListDevice, maFont.SetPitch(PITCH_DONTKNOW); maFont.SetCharSet(RTL_TEXTENCODING_DONTKNOW); maFont.SetTransparent(true); - - // preview like controls should have a 2D look - m_pShowFont->SetBorderStyle( WindowBorderStyle::MONO ); } - m_pFontBox->SetSelectHdl(LINK(this, SmFontDialog, FontSelectHdl)); - m_pFontBox->SetModifyHdl(LINK(this, SmFontDialog, FontModifyHdl)); - m_pBoldCheckBox->SetClickHdl(LINK(this, SmFontDialog, AttrChangeHdl)); - m_pItalicCheckBox->SetClickHdl(LINK(this, SmFontDialog, AttrChangeHdl)); + m_xFontBox->connect_changed(LINK(this, SmFontDialog, FontSelectHdl)); + m_xBoldCheckBox->connect_toggled(LINK(this, SmFontDialog, AttrChangeHdl)); + m_xItalicCheckBox->connect_toggled(LINK(this, SmFontDialog, AttrChangeHdl)); if (bHideCheckboxes) { - m_pBoldCheckBox->Check( false ); - m_pBoldCheckBox->Enable( false ); - m_pItalicCheckBox->Check( false ); - m_pItalicCheckBox->Enable( false ); - m_pAttrFrame->Show(false); + m_xBoldCheckBox->set_active(false); + m_xBoldCheckBox->set_sensitive(false); + m_xItalicCheckBox->set_active(false); + m_xItalicCheckBox->set_sensitive(false); + m_xAttrFrame->show(false); } } SmFontDialog::~SmFontDialog() { - disposeOnce(); -} - -void SmFontDialog::dispose() -{ - m_pFontBox.clear(); - m_pAttrFrame.clear(); - m_pBoldCheckBox.clear(); - m_pItalicCheckBox.clear(); - m_pShowFont.clear(); - ModalDialog::dispose(); -} - -void SmFontDialog::DataChanged( const DataChangedEvent& rDCEvt ) -{ - if (rDCEvt.GetType() == DataChangedEventType::SETTINGS && (rDCEvt.GetFlags() & AllSettingsFlags::STYLE)) - m_pShowFont->Invalidate(); - - ModalDialog::DataChanged( rDCEvt ); } class SaveDefaultsQuery : public weld::MessageDialogController @@ -476,11 +440,11 @@ IMPL_LINK(SmFontTypeDialog, MenuSelectHdl, const OString&, rIdent, void) if (pActiveListBox) { - ScopedVclPtrInstance<SmFontDialog> pFontDialog(nullptr /*TODO*/, pFontListDev, bHideCheckboxes); + SmFontDialog aFontDialog(m_xDialog.get(), pFontListDev, bHideCheckboxes); - pActiveListBox->WriteTo(*pFontDialog); - if (pFontDialog->Execute() == RET_OK) - pActiveListBox->ReadFrom(*pFontDialog); + pActiveListBox->WriteTo(aFontDialog); + if (aFontDialog.run() == RET_OK) + pActiveListBox->ReadFrom(aFontDialog); } } diff --git a/starmath/uiconfig/smath/ui/fontdialog.ui b/starmath/uiconfig/smath/ui/fontdialog.ui index 92303c432d35..8598ed4ce34f 100644 --- a/starmath/uiconfig/smath/ui/fontdialog.ui +++ b/starmath/uiconfig/smath/ui/fontdialog.ui @@ -3,6 +3,22 @@ <interface domain="sm"> <requires lib="gtk+" version="3.18"/> <requires lib="LibreOffice" version="1.0"/> + <object class="GtkListStore" id="liststore1"> + <columns> + <!-- column-name text --> + <column type="gchararray"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> + <object class="GtkEntryCompletion" id="entrycompletion1"> + <property name="model">liststore1</property> + <property name="text_column">0</property> + <property name="inline_completion">True</property> + <property name="popup_completion">False</property> + <property name="popup_set_width">False</property> + <property name="popup_single_match">False</property> + </object> <object class="GtkDialog" id="FontDialog"> <property name="can_focus">False</property> <property name="border_width">6</property> @@ -94,15 +110,63 @@ <property name="top_padding">6</property> <property name="left_padding">12</property> <child> - <object class="VclComboBoxText" id="font"> + <object class="GtkGrid" id="fontgrid"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="has_entry">True</property> - <property name="dropdown">False</property> - <child internal-child="entry"> - <object class="GtkEntry" id="ComboBoxText-entry"> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="row_spacing">3</property> + <child> + <object class="GtkScrolledWindow"> + <property name="visible">True</property> <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="fonts"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore1</property> + <property name="headers_visible">False</property> + <property name="headers_clickable">False</property> + <property name="search_column">0</property> + <property name="show_expanders">False</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection1"/> + </child> + <child> + <object class="GtkTreeViewColumn" id="treeviewcolumn1"> + <child> + <object class="GtkCellRendererText" id="cellrenderertext1"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </object> + </child> + </object> + </child> </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="font"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hexpand">True</property> + <property name="activates_default">True</property> + <property name="completion">entrycompletion1</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> </child> </object> </child> @@ -200,9 +264,24 @@ </packing> </child> <child> - <object class="smlo-SmShowFont" id="preview:border"> + <object class="GtkScrolledWindow"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkViewport"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkDrawingArea" id="preview"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + </object> + </child> </object> <packing> <property name="expand">False</property> |