Kaydet (Commit) 98e45269 authored tarafından Caolán McNamara's avatar Caolán McNamara

weld SmFontDialog

Change-Id: Id253631e7dfd44570a4261b7a7a5db1fac9d68ba
Reviewed-on: https://gerrit.libreoffice.org/60728
Tested-by: Jenkins
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst c1ad998a
...@@ -206,9 +206,6 @@ ...@@ -206,9 +206,6 @@
<glade-widget-class title="Gallery Preview" name="svxcorelo-GalleryPreview" <glade-widget-class title="Gallery Preview" name="svxcorelo-GalleryPreview"
generic-name="Gallery Preview" parent="GtkDrawingArea" generic-name="Gallery Preview" parent="GtkDrawingArea"
icon-name="widget-gtk-drawingarea"/> 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" <glade-widget-class title="Number Preview" name="cuilo-SvxNumberPreview"
generic-name="Number Preview Window" parent="GtkDrawingArea" generic-name="Number Preview Window" parent="GtkDrawingArea"
icon-name="widget-gtk-drawingarea"/> icon-name="widget-gtk-drawingarea"/>
......
...@@ -3,6 +3,7 @@ starmath/uiconfig/smath/ui/catalogdialog.ui://GtkComboBoxText[@id='symbolset'] n ...@@ -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://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='symbolsetdisplay'] no-labelled-by
starmath/uiconfig/smath/ui/catalogdialog.ui://GtkDrawingArea[@id='preview'] 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/printeroptions.ui://GtkSpinButton[@id='scalingspin'] no-labelled-by
starmath/uiconfig/smath/ui/smathsettings.ui://GtkSpinButton[@id='zoom'] 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 starmath/uiconfig/smath/ui/spacingdialog.ui://GtkLabel[@id='1label1'] orphan-label
......
...@@ -77,41 +77,36 @@ public: ...@@ -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; virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&) override;
vcl::Font maFont; vcl::Font maFont;
public: public:
SmShowFont(vcl::Window *pParent, WinBits nStyle) SmShowFont()
: Window(pParent, nStyle)
{ {
} }
virtual Size GetOptimalSize() const override; virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override;
void SetFont(const vcl::Font& rFont); 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; 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(FontSelectHdl, weld::ComboBox&, void);
DECL_LINK(FontModifyHdl, Edit&, void); DECL_LINK(AttrChangeHdl, weld::ToggleButton&, void);
DECL_LINK(AttrChangeHdl, Button *, void);
virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
public: public:
SmFontDialog(vcl::Window * pParent, OutputDevice *pFntListDevice, bool bHideCheckboxes); SmFontDialog(weld::Window* pParent, OutputDevice *pFntListDevice, bool bHideCheckboxes);
virtual ~SmFontDialog() override; virtual ~SmFontDialog() override;
virtual void dispose() override;
const vcl::Font& GetFont() const const vcl::Font& GetFont() const
{ {
......
...@@ -226,10 +226,8 @@ VclPtr<SfxTabPage> SmPrintOptionsTabPage::Create(TabPageParent pParent, const Sf ...@@ -226,10 +226,8 @@ VclPtr<SfxTabPage> SmPrintOptionsTabPage::Create(TabPageParent pParent, const Sf
return VclPtr<SmPrintOptionsTabPage>::Create(pParent, rSet).get(); 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 aBackColor;
Color aTextColor; Color aTextColor;
lclGetSettingColors(aBackColor, aTextColor); lclGetSettingColors(aBackColor, aTextColor);
...@@ -249,11 +247,11 @@ void SmShowFont::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangl ...@@ -249,11 +247,11 @@ void SmShowFont::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangl
(rRenderContext.GetOutputSize().Height() - aTextSize.Height()) / 2), sText); (rRenderContext.GetOutputSize().Height() - aTextSize.Height()) / 2), sText);
} }
VCL_BUILDER_FACTORY_CONSTRUCTOR(SmShowFont, 0) void SmShowFont::SetDrawingArea(weld::DrawingArea* pDrawingArea)
Size SmShowFont::GetOptimalSize() const
{ {
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) void SmShowFont::SetFont(const vcl::Font& rFont)
...@@ -262,67 +260,56 @@ void SmShowFont::SetFont(const vcl::Font& rFont) ...@@ -262,67 +260,56 @@ void SmShowFont::SetFont(const vcl::Font& rFont)
Invalidate(); Invalidate();
} }
IMPL_LINK( SmFontDialog, FontSelectHdl, ComboBox&, rComboBox, void ) IMPL_LINK( SmFontDialog, FontSelectHdl, weld::ComboBox&, rComboBox, void )
{
maFont.SetFamilyName(rComboBox.GetText());
m_pShowFont->SetFont(maFont);
}
IMPL_LINK( SmFontDialog, FontModifyHdl, Edit&, rEdit, void )
{ {
ComboBox& rComboBox = static_cast<ComboBox&>(rEdit); maFont.SetFamilyName(rComboBox.get_active_text());
// if font is available in list then use it m_aShowFont.SetFont(maFont);
sal_Int32 nPos = rComboBox.GetEntryPos( rComboBox.GetText() );
if (COMBOBOX_ENTRY_NOTFOUND != nPos)
{
FontSelectHdl( rComboBox );
}
} }
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); maFont.SetWeight(WEIGHT_BOLD);
else else
maFont.SetWeight(WEIGHT_NORMAL); maFont.SetWeight(WEIGHT_NORMAL);
if (m_pItalicCheckBox->IsChecked()) if (m_xItalicCheckBox->get_active())
maFont.SetItalic(ITALIC_NORMAL); maFont.SetItalic(ITALIC_NORMAL);
else else
maFont.SetItalic(ITALIC_NONE); maFont.SetItalic(ITALIC_NONE);
m_pShowFont->SetFont(maFont); m_aShowFont.SetFont(maFont);
} }
void SmFontDialog::SetFont(const vcl::Font &rFont) void SmFontDialog::SetFont(const vcl::Font &rFont)
{ {
maFont = rFont; maFont = rFont;
m_pFontBox->SetText(maFont.GetFamilyName()); m_xFontBox->set_active_text(maFont.GetFamilyName());
m_pBoldCheckBox->Check(IsBold(maFont)); m_xBoldCheckBox->set_active(IsBold(maFont));
m_pItalicCheckBox->Check(IsItalic(maFont)); m_xItalicCheckBox->set_active(IsItalic(maFont));
m_pShowFont->SetFont(maFont); m_aShowFont.SetFont(maFont);
} }
SmFontDialog::SmFontDialog(vcl::Window * pParent, OutputDevice *pFntListDevice, bool bHideCheckboxes) SmFontDialog::SmFontDialog(weld::Window * pParent, OutputDevice *pFntListDevice, bool bHideCheckboxes)
: ModalDialog(pParent, "FontDialog", "modules/smath/ui/fontdialog.ui") : 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_xFontBox->set_height_request_by_rows(8);
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");
{ {
WaitObject aWait( this ); weld::WaitObject aWait(pParent);
FontList aFontList( pFntListDevice ); FontList aFontList( pFntListDevice );
sal_uInt16 nCount = aFontList.GetFontNameCount(); sal_uInt16 nCount = aFontList.GetFontNameCount();
for (sal_uInt16 i = 0; i < nCount; ++i) 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.SetFontSize(Size(0, 24));
maFont.SetWeight(WEIGHT_NORMAL); maFont.SetWeight(WEIGHT_NORMAL);
...@@ -331,47 +318,24 @@ SmFontDialog::SmFontDialog(vcl::Window * pParent, OutputDevice *pFntListDevice, ...@@ -331,47 +318,24 @@ SmFontDialog::SmFontDialog(vcl::Window * pParent, OutputDevice *pFntListDevice,
maFont.SetPitch(PITCH_DONTKNOW); maFont.SetPitch(PITCH_DONTKNOW);
maFont.SetCharSet(RTL_TEXTENCODING_DONTKNOW); maFont.SetCharSet(RTL_TEXTENCODING_DONTKNOW);
maFont.SetTransparent(true); maFont.SetTransparent(true);
// preview like controls should have a 2D look
m_pShowFont->SetBorderStyle( WindowBorderStyle::MONO );
} }
m_pFontBox->SetSelectHdl(LINK(this, SmFontDialog, FontSelectHdl)); m_xFontBox->connect_changed(LINK(this, SmFontDialog, FontSelectHdl));
m_pFontBox->SetModifyHdl(LINK(this, SmFontDialog, FontModifyHdl)); m_xBoldCheckBox->connect_toggled(LINK(this, SmFontDialog, AttrChangeHdl));
m_pBoldCheckBox->SetClickHdl(LINK(this, SmFontDialog, AttrChangeHdl)); m_xItalicCheckBox->connect_toggled(LINK(this, SmFontDialog, AttrChangeHdl));
m_pItalicCheckBox->SetClickHdl(LINK(this, SmFontDialog, AttrChangeHdl));
if (bHideCheckboxes) if (bHideCheckboxes)
{ {
m_pBoldCheckBox->Check( false ); m_xBoldCheckBox->set_active(false);
m_pBoldCheckBox->Enable( false ); m_xBoldCheckBox->set_sensitive(false);
m_pItalicCheckBox->Check( false ); m_xItalicCheckBox->set_active(false);
m_pItalicCheckBox->Enable( false ); m_xItalicCheckBox->set_sensitive(false);
m_pAttrFrame->Show(false); m_xAttrFrame->show(false);
} }
} }
SmFontDialog::~SmFontDialog() 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 class SaveDefaultsQuery : public weld::MessageDialogController
...@@ -476,11 +440,11 @@ IMPL_LINK(SmFontTypeDialog, MenuSelectHdl, const OString&, rIdent, void) ...@@ -476,11 +440,11 @@ IMPL_LINK(SmFontTypeDialog, MenuSelectHdl, const OString&, rIdent, void)
if (pActiveListBox) if (pActiveListBox)
{ {
ScopedVclPtrInstance<SmFontDialog> pFontDialog(nullptr /*TODO*/, pFontListDev, bHideCheckboxes); SmFontDialog aFontDialog(m_xDialog.get(), pFontListDev, bHideCheckboxes);
pActiveListBox->WriteTo(*pFontDialog); pActiveListBox->WriteTo(aFontDialog);
if (pFontDialog->Execute() == RET_OK) if (aFontDialog.run() == RET_OK)
pActiveListBox->ReadFrom(*pFontDialog); pActiveListBox->ReadFrom(aFontDialog);
} }
} }
......
...@@ -3,6 +3,22 @@ ...@@ -3,6 +3,22 @@
<interface domain="sm"> <interface domain="sm">
<requires lib="gtk+" version="3.18"/> <requires lib="gtk+" version="3.18"/>
<requires lib="LibreOffice" version="1.0"/> <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"> <object class="GtkDialog" id="FontDialog">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">6</property> <property name="border_width">6</property>
...@@ -94,15 +110,63 @@ ...@@ -94,15 +110,63 @@
<property name="top_padding">6</property> <property name="top_padding">6</property>
<property name="left_padding">12</property> <property name="left_padding">12</property>
<child> <child>
<object class="VclComboBoxText" id="font"> <object class="GtkGrid" id="fontgrid">
<property name="visible">True</property>
<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="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="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> </object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
...@@ -200,10 +264,25 @@ ...@@ -200,10 +264,25 @@
</packing> </packing>
</child> </child>
<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="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
</object> </object>
</child>
</object>
</child>
</object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment