Kaydet (Commit) 5b77e676 authored tarafından Caolán McNamara's avatar Caolán McNamara

weld SmFontTypeDialog

Change-Id: I720196ce7359e6e571ecd26c544b9e6a61e17484
Reviewed-on: https://gerrit.libreoffice.org/53626Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 2c1f77d3
...@@ -27,9 +27,6 @@ ...@@ -27,9 +27,6 @@
<glade-widget-class title="Search Results Box" name="sfxlo-SearchResultsBox" <glade-widget-class title="Search Results Box" name="sfxlo-SearchResultsBox"
generic-name="SearchResultsBox" parent="GtkComboBoxText" generic-name="SearchResultsBox" parent="GtkComboBoxText"
icon-name="widget-gtk-comboboxtext"/> icon-name="widget-gtk-comboboxtext"/>
<glade-widget-class title="Font PickListBox" name="smlo-SmFontPickListBox"
generic-name="SmFontPickListBox" parent="GtkComboBoxText"
icon-name="widget-gtk-comboboxtext"/>
<glade-widget-class title="Address Control" name="swuilo-SwAddressControlImpl" <glade-widget-class title="Address Control" name="swuilo-SwAddressControlImpl"
generic-name="SwAddressControlImpl" parent="GtkComboBoxText" generic-name="SwAddressControlImpl" parent="GtkComboBoxText"
icon-name="widget-gtk-comboboxtext"/> icon-name="widget-gtk-comboboxtext"/>
......
...@@ -144,27 +144,26 @@ public: ...@@ -144,27 +144,26 @@ public:
/**************************************************************************/ /**************************************************************************/
class SmFontTypeDialog : public ModalDialog class SmFontTypeDialog : public weld::GenericDialogController
{ {
VclPtr<SmFontPickListBox> m_pVariableFont;
VclPtr<SmFontPickListBox> m_pFunctionFont;
VclPtr<SmFontPickListBox> m_pNumberFont;
VclPtr<SmFontPickListBox> m_pTextFont;
VclPtr<SmFontPickListBox> m_pSerifFont;
VclPtr<SmFontPickListBox> m_pSansFont;
VclPtr<SmFontPickListBox> m_pFixedFont;
VclPtr<MenuButton> m_pMenuButton;
VclPtr<PushButton> m_pDefaultButton;
VclPtr<OutputDevice> pFontListDev; VclPtr<OutputDevice> pFontListDev;
DECL_LINK(MenuSelectHdl, Menu *, bool); std::unique_ptr<SmFontPickListBox> m_xVariableFont;
DECL_LINK(DefaultButtonClickHdl, Button *, void); std::unique_ptr<SmFontPickListBox> m_xFunctionFont;
std::unique_ptr<SmFontPickListBox> m_xNumberFont;
std::unique_ptr<SmFontPickListBox> m_xTextFont;
std::unique_ptr<SmFontPickListBox> m_xSerifFont;
std::unique_ptr<SmFontPickListBox> m_xSansFont;
std::unique_ptr<SmFontPickListBox> m_xFixedFont;
std::unique_ptr<weld::MenuButton> m_xMenuButton;
std::unique_ptr<weld::Button> m_xDefaultButton;
DECL_LINK(MenuSelectHdl, const OString&, void);
DECL_LINK(DefaultButtonClickHdl, weld::Button&, void);
public: public:
SmFontTypeDialog(vcl::Window *pParent, OutputDevice *pFntListDevice); SmFontTypeDialog(weld::Window* pParent, OutputDevice *pFntListDevice);
virtual ~SmFontTypeDialog() override; virtual ~SmFontTypeDialog() override;
virtual void dispose() override;
void ReadFrom(const SmFormat &rFormat); void ReadFrom(const SmFormat &rFormat);
void WriteTo (SmFormat &rFormat) const; void WriteTo (SmFormat &rFormat) const;
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <vcl/fixed.hxx> #include <vcl/fixed.hxx>
#include <vcl/combobox.hxx> #include <vcl/combobox.hxx>
#include <vcl/lstbox.hxx> #include <vcl/lstbox.hxx>
#include <vcl/weld.hxx>
#include <tools/fract.hxx> #include <tools/fract.hxx>
#include <deque> #include <deque>
...@@ -133,17 +134,17 @@ public: ...@@ -133,17 +134,17 @@ public:
// SmFontPickListBox // SmFontPickListBox
class SmFontPickListBox final : public SmFontPickList, public ListBox class SmFontPickListBox final : public SmFontPickList
{ {
DECL_LINK(SelectHdl, ListBox&, void); private:
std::unique_ptr<weld::ComboBoxText> m_xWidget;
public: DECL_LINK(SelectHdl, weld::ComboBoxText&, void);
SmFontPickListBox(vcl::Window* pParent, WinBits nBits);
public:
SmFontPickListBox(weld::ComboBoxText* pWidget);
SmFontPickListBox& operator = (const SmFontPickList& rList); SmFontPickListBox& operator = (const SmFontPickList& rList);
virtual void Insert(const vcl::Font &rFont) override; virtual void Insert(const vcl::Font &rFont) override;
using Window::Update;
}; };
#endif #endif
......
...@@ -442,37 +442,50 @@ void SmFontSizeDialog::WriteTo(SmFormat &rFormat) const ...@@ -442,37 +442,50 @@ void SmFontSizeDialog::WriteTo(SmFormat &rFormat) const
rFormat.RequestApplyChanges(); rFormat.RequestApplyChanges();
} }
IMPL_LINK( SmFontTypeDialog, MenuSelectHdl, Menu *, pMenu, bool ) IMPL_LINK(SmFontTypeDialog, MenuSelectHdl, const OString&, rIdent, void)
{ {
SmFontPickListBox *pActiveListBox; SmFontPickListBox *pActiveListBox;
bool bHideCheckboxes = false; bool bHideCheckboxes = false;
switch (pMenu->GetCurItemId()) if (rIdent == "variables")
pActiveListBox = m_xVariableFont.get();
else if (rIdent == "functions")
pActiveListBox = m_xFunctionFont.get();
else if (rIdent == "numbers")
pActiveListBox = m_xNumberFont.get();
else if (rIdent == "text")
pActiveListBox = m_xTextFont.get();
else if (rIdent == "serif")
{ {
case 1: pActiveListBox = m_pVariableFont; break; pActiveListBox = m_xSerifFont.get();
case 2: pActiveListBox = m_pFunctionFont; break; bHideCheckboxes = true;
case 3: pActiveListBox = m_pNumberFont; break;
case 4: pActiveListBox = m_pTextFont; break;
case 5: pActiveListBox = m_pSerifFont; bHideCheckboxes = true; break;
case 6: pActiveListBox = m_pSansFont; bHideCheckboxes = true; break;
case 7: pActiveListBox = m_pFixedFont; bHideCheckboxes = true; break;
default:pActiveListBox = nullptr;
} }
else if (rIdent == "sansserif")
{
pActiveListBox = m_xSansFont.get();
bHideCheckboxes = true;
}
else if (rIdent == "fixedwidth")
{
pActiveListBox = m_xFixedFont.get();
bHideCheckboxes = true;
}
else
pActiveListBox = nullptr;
if (pActiveListBox) if (pActiveListBox)
{ {
ScopedVclPtrInstance<SmFontDialog> pFontDialog(this, pFontListDev, bHideCheckboxes); ScopedVclPtrInstance<SmFontDialog> pFontDialog(nullptr /*TODO*/, pFontListDev, bHideCheckboxes);
pActiveListBox->WriteTo(*pFontDialog); pActiveListBox->WriteTo(*pFontDialog);
if (pFontDialog->Execute() == RET_OK) if (pFontDialog->Execute() == RET_OK)
pActiveListBox->ReadFrom(*pFontDialog); pActiveListBox->ReadFrom(*pFontDialog);
} }
return false;
} }
IMPL_LINK_NOARG( SmFontTypeDialog, DefaultButtonClickHdl, Button *, void ) IMPL_LINK_NOARG(SmFontTypeDialog, DefaultButtonClickHdl, weld::Button&, void)
{ {
SaveDefaultsQuery aQuery(GetFrameWeld()); SaveDefaultsQuery aQuery(m_xDialog.get());
if (aQuery.run() == RET_YES) if (aQuery.run() == RET_YES)
{ {
SmModule *pp = SM_MOD(); SmModule *pp = SM_MOD();
...@@ -482,64 +495,46 @@ IMPL_LINK_NOARG( SmFontTypeDialog, DefaultButtonClickHdl, Button *, void ) ...@@ -482,64 +495,46 @@ IMPL_LINK_NOARG( SmFontTypeDialog, DefaultButtonClickHdl, Button *, void )
} }
} }
SmFontTypeDialog::SmFontTypeDialog(vcl::Window * pParent, OutputDevice *pFntListDevice) SmFontTypeDialog::SmFontTypeDialog(weld::Window* pParent, OutputDevice *pFntListDevice)
: ModalDialog(pParent, "FontsDialog", "modules/smath/ui/fonttypedialog.ui"), : GenericDialogController(pParent, "modules/smath/ui/fonttypedialog.ui", "FontsDialog")
pFontListDev (pFntListDevice) , pFontListDev(pFntListDevice)
, m_xVariableFont(new SmFontPickListBox(m_xBuilder->weld_combo_box_text("variableCB")))
, m_xFunctionFont(new SmFontPickListBox(m_xBuilder->weld_combo_box_text("functionCB")))
, m_xNumberFont(new SmFontPickListBox(m_xBuilder->weld_combo_box_text("numberCB")))
, m_xTextFont(new SmFontPickListBox(m_xBuilder->weld_combo_box_text("textCB")))
, m_xSerifFont(new SmFontPickListBox(m_xBuilder->weld_combo_box_text("serifCB")))
, m_xSansFont(new SmFontPickListBox(m_xBuilder->weld_combo_box_text("sansCB")))
, m_xFixedFont(new SmFontPickListBox(m_xBuilder->weld_combo_box_text("fixedCB")))
, m_xMenuButton(m_xBuilder->weld_menu_button("modify"))
, m_xDefaultButton(m_xBuilder->weld_button("default"))
{ {
get(m_pVariableFont, "variableCB"); m_xDefaultButton->connect_clicked(LINK(this, SmFontTypeDialog, DefaultButtonClickHdl));
get(m_pFunctionFont, "functionCB"); m_xMenuButton->connect_selected(LINK(this, SmFontTypeDialog, MenuSelectHdl));
get(m_pNumberFont, "numberCB");
get(m_pTextFont, "textCB");
get(m_pSerifFont, "serifCB");
get(m_pSansFont, "sansCB");
get(m_pFixedFont, "fixedCB");
get(m_pMenuButton, "modify");
get(m_pDefaultButton, "default");
m_pDefaultButton->SetClickHdl(LINK(this, SmFontTypeDialog, DefaultButtonClickHdl));
m_pMenuButton->GetPopupMenu()->SetSelectHdl(LINK(this, SmFontTypeDialog, MenuSelectHdl));
} }
SmFontTypeDialog::~SmFontTypeDialog() SmFontTypeDialog::~SmFontTypeDialog()
{ {
disposeOnce();
}
void SmFontTypeDialog::dispose()
{
m_pVariableFont.clear();
m_pFunctionFont.clear();
m_pNumberFont.clear();
m_pTextFont.clear();
m_pSerifFont.clear();
m_pSansFont.clear();
m_pFixedFont.clear();
m_pMenuButton.clear();
m_pDefaultButton.clear();
pFontListDev.clear();
ModalDialog::dispose();
} }
void SmFontTypeDialog::ReadFrom(const SmFormat &rFormat) void SmFontTypeDialog::ReadFrom(const SmFormat &rFormat)
{ {
SmModule *pp = SM_MOD(); SmModule *pp = SM_MOD();
*m_pVariableFont = pp->GetConfig()->GetFontPickList(FNT_VARIABLE); *m_xVariableFont = pp->GetConfig()->GetFontPickList(FNT_VARIABLE);
*m_pFunctionFont = pp->GetConfig()->GetFontPickList(FNT_FUNCTION); *m_xFunctionFont = pp->GetConfig()->GetFontPickList(FNT_FUNCTION);
*m_pNumberFont = pp->GetConfig()->GetFontPickList(FNT_NUMBER); *m_xNumberFont = pp->GetConfig()->GetFontPickList(FNT_NUMBER);
*m_pTextFont = pp->GetConfig()->GetFontPickList(FNT_TEXT); *m_xTextFont = pp->GetConfig()->GetFontPickList(FNT_TEXT);
*m_pSerifFont = pp->GetConfig()->GetFontPickList(FNT_SERIF); *m_xSerifFont = pp->GetConfig()->GetFontPickList(FNT_SERIF);
*m_pSansFont = pp->GetConfig()->GetFontPickList(FNT_SANS); *m_xSansFont = pp->GetConfig()->GetFontPickList(FNT_SANS);
*m_pFixedFont = pp->GetConfig()->GetFontPickList(FNT_FIXED); *m_xFixedFont = pp->GetConfig()->GetFontPickList(FNT_FIXED);
m_pVariableFont->Insert( rFormat.GetFont(FNT_VARIABLE) ); m_xVariableFont->Insert( rFormat.GetFont(FNT_VARIABLE) );
m_pFunctionFont->Insert( rFormat.GetFont(FNT_FUNCTION) ); m_xFunctionFont->Insert( rFormat.GetFont(FNT_FUNCTION) );
m_pNumberFont->Insert( rFormat.GetFont(FNT_NUMBER) ); m_xNumberFont->Insert( rFormat.GetFont(FNT_NUMBER) );
m_pTextFont->Insert( rFormat.GetFont(FNT_TEXT) ); m_xTextFont->Insert( rFormat.GetFont(FNT_TEXT) );
m_pSerifFont->Insert( rFormat.GetFont(FNT_SERIF) ); m_xSerifFont->Insert( rFormat.GetFont(FNT_SERIF) );
m_pSansFont->Insert( rFormat.GetFont(FNT_SANS) ); m_xSansFont->Insert( rFormat.GetFont(FNT_SANS) );
m_pFixedFont->Insert( rFormat.GetFont(FNT_FIXED) ); m_xFixedFont->Insert( rFormat.GetFont(FNT_FIXED) );
} }
...@@ -547,21 +542,21 @@ void SmFontTypeDialog::WriteTo(SmFormat &rFormat) const ...@@ -547,21 +542,21 @@ void SmFontTypeDialog::WriteTo(SmFormat &rFormat) const
{ {
SmModule *pp = SM_MOD(); SmModule *pp = SM_MOD();
pp->GetConfig()->GetFontPickList(FNT_VARIABLE) = *m_pVariableFont; pp->GetConfig()->GetFontPickList(FNT_VARIABLE) = *m_xVariableFont;
pp->GetConfig()->GetFontPickList(FNT_FUNCTION) = *m_pFunctionFont; pp->GetConfig()->GetFontPickList(FNT_FUNCTION) = *m_xFunctionFont;
pp->GetConfig()->GetFontPickList(FNT_NUMBER) = *m_pNumberFont; pp->GetConfig()->GetFontPickList(FNT_NUMBER) = *m_xNumberFont;
pp->GetConfig()->GetFontPickList(FNT_TEXT) = *m_pTextFont; pp->GetConfig()->GetFontPickList(FNT_TEXT) = *m_xTextFont;
pp->GetConfig()->GetFontPickList(FNT_SERIF) = *m_pSerifFont; pp->GetConfig()->GetFontPickList(FNT_SERIF) = *m_xSerifFont;
pp->GetConfig()->GetFontPickList(FNT_SANS) = *m_pSansFont; pp->GetConfig()->GetFontPickList(FNT_SANS) = *m_xSansFont;
pp->GetConfig()->GetFontPickList(FNT_FIXED) = *m_pFixedFont; pp->GetConfig()->GetFontPickList(FNT_FIXED) = *m_xFixedFont;
rFormat.SetFont( FNT_VARIABLE, m_pVariableFont->Get() ); rFormat.SetFont( FNT_VARIABLE, m_xVariableFont->Get() );
rFormat.SetFont( FNT_FUNCTION, m_pFunctionFont->Get() ); rFormat.SetFont( FNT_FUNCTION, m_xFunctionFont->Get() );
rFormat.SetFont( FNT_NUMBER, m_pNumberFont->Get() ); rFormat.SetFont( FNT_NUMBER, m_xNumberFont->Get() );
rFormat.SetFont( FNT_TEXT, m_pTextFont->Get() ); rFormat.SetFont( FNT_TEXT, m_xTextFont->Get() );
rFormat.SetFont( FNT_SERIF, m_pSerifFont->Get() ); rFormat.SetFont( FNT_SERIF, m_xSerifFont->Get() );
rFormat.SetFont( FNT_SANS, m_pSansFont->Get() ); rFormat.SetFont( FNT_SANS, m_xSansFont->Get() );
rFormat.SetFont( FNT_FIXED, m_pFixedFont->Get() ); rFormat.SetFont( FNT_FIXED, m_xFixedFont->Get() );
rFormat.RequestApplyChanges(); rFormat.RequestApplyChanges();
} }
......
...@@ -928,15 +928,15 @@ void SmDocShell::Execute(SfxRequest& rReq) ...@@ -928,15 +928,15 @@ void SmDocShell::Execute(SfxRequest& rReq)
pDev = &SM_MOD()->GetDefaultVirtualDev(); pDev = &SM_MOD()->GetDefaultVirtualDev();
OSL_ENSURE (pDev, "device for font list missing" ); OSL_ENSURE (pDev, "device for font list missing" );
VclPtrInstance< SmFontTypeDialog > xFontTypeDialog( nullptr, pDev ); SmFontTypeDialog aFontTypeDialog(rReq.GetFrameWeld(), pDev);
SmFormat aOldFormat = GetFormat(); SmFormat aOldFormat = GetFormat();
xFontTypeDialog->ReadFrom( aOldFormat ); aFontTypeDialog.ReadFrom( aOldFormat );
if (xFontTypeDialog->Execute() == RET_OK) if (aFontTypeDialog.run() == RET_OK)
{ {
SmFormat aNewFormat( aOldFormat ); SmFormat aNewFormat( aOldFormat );
xFontTypeDialog->WriteTo(aNewFormat); aFontTypeDialog.WriteTo(aNewFormat);
::svl::IUndoManager *pTmpUndoMgr = GetUndoManager(); ::svl::IUndoManager *pTmpUndoMgr = GetUndoManager();
if (pTmpUndoMgr) if (pTmpUndoMgr)
pTmpUndoMgr->AddUndoAction( pTmpUndoMgr->AddUndoAction(
......
...@@ -120,30 +120,27 @@ void SmFontPickList::WriteTo(SmFontDialog& rDialog) const ...@@ -120,30 +120,27 @@ void SmFontPickList::WriteTo(SmFontDialog& rDialog) const
/**************************************************************************/ /**************************************************************************/
VCL_BUILDER_FACTORY_ARGS(SmFontPickListBox, WB_DROPDOWN) SmFontPickListBox::SmFontPickListBox(weld::ComboBoxText* pWidget)
: SmFontPickList(4)
SmFontPickListBox::SmFontPickListBox (vcl::Window* pParent, WinBits nBits) : , m_xWidget(pWidget)
SmFontPickList(4),
ListBox(pParent, nBits)
{ {
SetSelectHdl(LINK(this, SmFontPickListBox, SelectHdl)); m_xWidget->connect_changed(LINK(this, SmFontPickListBox, SelectHdl));
} }
IMPL_LINK_NOARG( SmFontPickListBox, SelectHdl, ListBox&, void ) IMPL_LINK_NOARG(SmFontPickListBox, SelectHdl, weld::ComboBoxText&, void)
{ {
OUString aString; OUString aString;
const sal_Int32 nPos = GetSelectedEntryPos(); const int nPos = m_xWidget->get_active();
if (nPos != 0) if (nPos != 0)
{ {
SmFontPickList::Insert(Get(nPos)); SmFontPickList::Insert(Get(nPos));
aString = GetEntry(nPos); aString = m_xWidget->get_text(nPos);
RemoveEntry(nPos); m_xWidget->remove(nPos);
InsertEntry(aString, 0); m_xWidget->insert_text(0, aString);
} }
SelectEntryPos(0); m_xWidget->set_active(0);
} }
SmFontPickListBox& SmFontPickListBox::operator=(const SmFontPickList& rList) SmFontPickListBox& SmFontPickListBox::operator=(const SmFontPickList& rList)
...@@ -151,10 +148,10 @@ SmFontPickListBox& SmFontPickListBox::operator=(const SmFontPickList& rList) ...@@ -151,10 +148,10 @@ SmFontPickListBox& SmFontPickListBox::operator=(const SmFontPickList& rList)
*static_cast<SmFontPickList *>(this) = rList; *static_cast<SmFontPickList *>(this) = rList;
for (decltype(aFontVec)::size_type nPos = 0; nPos < aFontVec.size(); nPos++) for (decltype(aFontVec)::size_type nPos = 0; nPos < aFontVec.size(); nPos++)
InsertEntry(lcl_GetStringItem(aFontVec[nPos]), nPos); m_xWidget->insert_text(nPos, lcl_GetStringItem(aFontVec[nPos]));
if (!aFontVec.empty()) if (!aFontVec.empty())
SelectEntry(lcl_GetStringItem(aFontVec.front())); m_xWidget->set_active_text(lcl_GetStringItem(aFontVec.front()));
return *this; return *this;
} }
...@@ -163,15 +160,17 @@ void SmFontPickListBox::Insert(const vcl::Font &rFont) ...@@ -163,15 +160,17 @@ void SmFontPickListBox::Insert(const vcl::Font &rFont)
{ {
SmFontPickList::Insert(rFont); SmFontPickList::Insert(rFont);
RemoveEntry(lcl_GetStringItem(aFontVec.front())); OUString aEntry(lcl_GetStringItem(aFontVec.front()));
InsertEntry(lcl_GetStringItem(aFontVec.front()), 0); int nPos = m_xWidget->find_text(aEntry);
SelectEntry(lcl_GetStringItem(aFontVec.front())); if (nPos != -1)
m_xWidget->remove(nPos);
m_xWidget->insert_text(0, aEntry);
m_xWidget->set_active(0);
while (GetEntryCount() > nMaxItems) while (m_xWidget->get_count() > nMaxItems)
RemoveEntry(GetEntryCount() - 1); m_xWidget->remove(m_xWidget->get_count() - 1);
} }
bool IsItalic( const vcl::Font &rFont ) bool IsItalic( const vcl::Font &rFont )
{ {
FontItalic eItalic = rFont.GetItalic(); FontItalic eItalic = rFont.GetItalic();
...@@ -241,5 +240,4 @@ SmFace & operator *= (SmFace &rFace, const Fraction &rFrac) ...@@ -241,5 +240,4 @@ SmFace & operator *= (SmFace &rFace, const Fraction &rFrac)
return rFace; return rFace;
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
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