extras/source/glade/libreoffice-catalog.xml.in |    3 
 solenv/sanitizers/ui/modules/smath.suppr       |    1 
 starmath/inc/dialog.hxx                        |   31 ++----
 starmath/source/dialog.cxx                     |  112 ++++++++-----------------
 starmath/uiconfig/smath/ui/fontdialog.ui       |   93 +++++++++++++++++++-
 5 files changed, 138 insertions(+), 102 deletions(-)

New commits:
commit 98e45269e4d9f276a27c065dbd00614436856b20
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Tue Sep 18 21:41:31 2018 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Wed Sep 19 22:01:19 2018 +0200

    weld SmFontDialog
    
    Change-Id: Id253631e7dfd44570a4261b7a7a5db1fac9d68ba
    Reviewed-on: https://gerrit.libreoffice.org/60728
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

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>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to