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 @@
<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"/>
......
......@@ -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
......
......@@ -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
{
......
......@@ -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);
}
}
......
......@@ -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>
......
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