From 98e45269e4d9f276a27c065dbd00614436856b20 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Tue, 18 Sep 2018 21:41:31 +0100 Subject: weld SmFontDialog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Id253631e7dfd44570a4261b7a7a5db1fac9d68ba Reviewed-on: https://gerrit.libreoffice.org/60728 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- starmath/inc/dialog.hxx | 31 ++++----- starmath/source/dialog.cxx | 112 +++++++++++-------------------- starmath/uiconfig/smath/ui/fontdialog.ui | 93 +++++++++++++++++++++++-- 3 files changed, 137 insertions(+), 99 deletions(-) (limited to 'starmath') 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 m_pFontBox; - VclPtr m_pAttrFrame; - VclPtr m_pBoldCheckBox; - VclPtr m_pItalicCheckBox; - VclPtr m_pShowFont; - vcl::Font maFont; + SmShowFont m_aShowFont; + std::unique_ptr m_xFontBox; + std::unique_ptr m_xAttrFrame; + std::unique_ptr m_xBoldCheckBox; + std::unique_ptr m_xItalicCheckBox; + std::unique_ptr 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 SmPrintOptionsTabPage::Create(TabPageParent pParent, const Sf return VclPtr::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(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 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 @@ + + + + + + + + + + liststore1 + 0 + True + False + False + False + False 6 @@ -94,15 +110,63 @@ 6 12 - + True - True - True - False - - + False + True + True + 3 + + + True False + True + True + in + + + True + True + True + True + liststore1 + False + False + 0 + False + + + + + + + + + 0 + + + + + + + + 0 + 1 + + + + + True + True + True + True + entrycompletion1 + + + 0 + 0 + @@ -200,9 +264,24 @@ - + True False + never + never + in + + + True + False + + + True + False + + + + False -- cgit