summaryrefslogtreecommitdiff
path: root/starmath
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-09-18 21:41:31 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-09-19 22:01:19 +0200
commit98e45269e4d9f276a27c065dbd00614436856b20 (patch)
treed2feea8a91752742dba616415364b10351792938 /starmath
parentc1ad998afeef0238f1b823fec8aea4eed7187fcf (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>
Diffstat (limited to 'starmath')
-rw-r--r--starmath/inc/dialog.hxx31
-rw-r--r--starmath/source/dialog.cxx112
-rw-r--r--starmath/uiconfig/smath/ui/fontdialog.ui93
3 files changed, 137 insertions, 99 deletions
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>