diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2021-05-23 15:40:08 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-06-08 14:50:33 +0200 |
commit | c4f615b359be56e88e4fbf9aaaf30affb29d57e2 (patch) | |
tree | 484f1caaf27bc3cefc0d1a7e0614342927117440 /cui | |
parent | 064a13e94e9b38bc88381b5c497cf6c9ddbe93e4 (diff) |
editengine-columns: Create document model and dialog page
Change-Id: I056aad9474ca18134d1f1686a53618cc9ab3d525
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116038
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'cui')
-rw-r--r-- | cui/Library_cui.mk | 1 | ||||
-rw-r--r-- | cui/UIConfig_cui.mk | 1 | ||||
-rw-r--r-- | cui/source/factory/dlgfact.cxx | 5 | ||||
-rw-r--r-- | cui/source/inc/TextColumnsPage.hxx | 40 | ||||
-rw-r--r-- | cui/source/tabpages/TextColumnsPage.cxx | 82 | ||||
-rw-r--r-- | cui/source/tabpages/textanim.cxx | 2 | ||||
-rw-r--r-- | cui/uiconfig/ui/textcolumnstabpage.ui | 111 | ||||
-rw-r--r-- | cui/uiconfig/ui/textdialog.ui | 48 |
8 files changed, 290 insertions, 0 deletions
diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk index d6fa68e0d194..6fdf446f97e9 100644 --- a/cui/Library_cui.mk +++ b/cui/Library_cui.mk @@ -215,6 +215,7 @@ $(eval $(call gb_Library_add_exception_objects,cui,\ cui/source/tabpages/tabstpge \ cui/source/tabpages/textanim \ cui/source/tabpages/textattr \ + cui/source/tabpages/TextColumnsPage \ cui/source/tabpages/tparea \ cui/source/tabpages/tpbitmap \ cui/source/tabpages/tpcolor \ diff --git a/cui/UIConfig_cui.mk b/cui/UIConfig_cui.mk index ff3c718b21d6..c6d9d1584a66 100644 --- a/cui/UIConfig_cui.mk +++ b/cui/UIConfig_cui.mk @@ -206,6 +206,7 @@ $(eval $(call gb_UIConfig_add_uifiles,cui,\ cui/uiconfig/ui/swpossizepage \ cui/uiconfig/ui/textattrtabpage \ cui/uiconfig/ui/textanimtabpage \ + cui/uiconfig/ui/textcolumnstabpage \ cui/uiconfig/ui/textdialog \ cui/uiconfig/ui/textflowpage \ cui/uiconfig/ui/thesaurus \ diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx index ebfd9bfb0ea5..19b30518e426 100644 --- a/cui/source/factory/dlgfact.cxx +++ b/cui/source/factory/dlgfact.cxx @@ -91,6 +91,7 @@ #include <toolbarmodedlg.hxx> #include <DiagramDialog.hxx> #include <fileextcheckdlg.hxx> +#include <TextColumnsPage.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::frame; @@ -1499,6 +1500,8 @@ CreateTabPage AbstractDialogFactory_Impl::GetTabPageCreatorFunc( sal_uInt16 nId return SvxGrfCropPage::Create; case RID_SVXPAGE_MACROASSIGN : return SfxMacroTabPage::Create; + case RID_SVXPAGE_TEXTCOLUMNS: + return SvxTextColumnsPage::Create; default: break; } @@ -1562,6 +1565,8 @@ GetTabPageRanges AbstractDialogFactory_Impl::GetTabPageRangesFunc( sal_uInt16 nI return SvxPageDescPage::GetRanges; case RID_SVXPAGE_ASIAN_LAYOUT: return SvxAsianLayoutPage::GetRanges; + case RID_SVXPAGE_TEXTCOLUMNS: + return SvxTextColumnsPage::GetRanges; default: break; } diff --git a/cui/source/inc/TextColumnsPage.hxx b/cui/source/inc/TextColumnsPage.hxx new file mode 100644 index 000000000000..6153cd27a520 --- /dev/null +++ b/cui/source/inc/TextColumnsPage.hxx @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include <sal/config.h> + +#include <sfx2/tabdlg.hxx> + +#include <memory> + +/// Tab page for EditEngine columns properties +class SvxTextColumnsPage : public SfxTabPage +{ +private: + static const sal_uInt16 pRanges[]; + + std::unique_ptr<weld::SpinButton> m_xColumnsNumber; + std::unique_ptr<weld::MetricSpinButton> m_xColumnsSpacing; + +public: + SvxTextColumnsPage(weld::Container* pPage, weld::DialogController* pController, + const SfxItemSet& rInAttrs); + virtual ~SvxTextColumnsPage() override; + + static std::unique_ptr<SfxTabPage> + Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet*); + static const sal_uInt16* GetRanges() { return pRanges; } + + virtual bool FillItemSet(SfxItemSet*) override; + virtual void Reset(const SfxItemSet*) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/cui/source/tabpages/TextColumnsPage.cxx b/cui/source/tabpages/TextColumnsPage.cxx new file mode 100644 index 000000000000..db83722e6be1 --- /dev/null +++ b/cui/source/tabpages/TextColumnsPage.cxx @@ -0,0 +1,82 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <sal/config.h> + +#include <svtools/unitconv.hxx> +#include <svx/dlgutil.hxx> +#include <svx/sdmetitm.hxx> +#include <svx/svddef.hxx> + +#include <TextColumnsPage.hxx> + +const sal_uInt16 SvxTextColumnsPage::pRanges[] + = { SDRATTR_TEXTCOLUMNS_FIRST, SDRATTR_TEXTCOLUMNS_LAST, 0 }; + +SvxTextColumnsPage::SvxTextColumnsPage(weld::Container* pPage, weld::DialogController* pController, + const SfxItemSet& rInAttrs) + : SfxTabPage(pPage, pController, "cui/ui/textcolumnstabpage.ui", "TextColumnsPage", &rInAttrs) + , m_xColumnsNumber(m_xBuilder->weld_spin_button("FLD_COL_NUMBER")) + , m_xColumnsSpacing( + m_xBuilder->weld_metric_spin_button("MTR_FLD_COL_SPACING", GetModuleFieldUnit(rInAttrs))) +{ +} + +SvxTextColumnsPage::~SvxTextColumnsPage() = default; + +// read the passed item set +void SvxTextColumnsPage::Reset(const SfxItemSet* rAttrs) +{ + SfxItemPool* pPool = rAttrs->GetPool(); + assert(pPool); + + { + auto pItem = GetItem(*rAttrs, SDRATTR_TEXTCOLUMNS_NUMBER); + if (!pItem) + pItem = &pPool->GetDefaultItem(SDRATTR_TEXTCOLUMNS_NUMBER); + m_xColumnsNumber->set_value(pItem->GetValue()); + m_xColumnsNumber->save_value(); + } + + { + MapUnit eUnit = pPool->GetMetric(SDRATTR_TEXTCOLUMNS_SPACING); + auto pItem = GetItem(*rAttrs, SDRATTR_TEXTCOLUMNS_SPACING); + if (!pItem) + pItem = &pPool->GetDefaultItem(SDRATTR_TEXTCOLUMNS_SPACING); + SetMetricValue(*m_xColumnsSpacing, pItem->GetValue(), eUnit); + m_xColumnsSpacing->save_value(); + } +} + +// fill the passed item set with dialog box attributes +bool SvxTextColumnsPage::FillItemSet(SfxItemSet* rAttrs) +{ + if (m_xColumnsNumber->get_value_changed_from_saved()) + rAttrs->Put(SfxInt16Item(SDRATTR_TEXTCOLUMNS_NUMBER, m_xColumnsNumber->get_value())); + + if (m_xColumnsSpacing->get_value_changed_from_saved()) + { + SfxItemPool* pPool = rAttrs->GetPool(); + assert(pPool); + MapUnit eUnit = pPool->GetMetric(SDRATTR_TEXTCOLUMNS_SPACING); + sal_Int32 nValue = GetCoreValue(*m_xColumnsSpacing, eUnit); + rAttrs->Put(SdrMetricItem(SDRATTR_TEXTCOLUMNS_SPACING, nValue)); + } + + return true; +} + +std::unique_ptr<SfxTabPage> SvxTextColumnsPage::Create(weld::Container* pPage, + weld::DialogController* pController, + const SfxItemSet* rAttrs) +{ + return std::make_unique<SvxTextColumnsPage>(pPage, pController, *rAttrs); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/cui/source/tabpages/textanim.cxx b/cui/source/tabpages/textanim.cxx index 71a5d185a3dc..43b69d77afd6 100644 --- a/cui/source/tabpages/textanim.cxx +++ b/cui/source/tabpages/textanim.cxx @@ -19,6 +19,7 @@ #include <textanim.hxx> #include <textattr.hxx> +#include <TextColumnsPage.hxx> #include <svx/dlgutil.hxx> #include <svx/svdmark.hxx> #include <svx/svdview.hxx> @@ -47,6 +48,7 @@ SvxTextTabDialog::SvxTextTabDialog(weld::Window* pParent, const SfxItemSet* pAtt { AddTabPage("RID_SVXPAGE_TEXTATTR", SvxTextAttrPage::Create, nullptr); AddTabPage("RID_SVXPAGE_TEXTANIMATION", SvxTextAnimationPage::Create, nullptr); + AddTabPage("RID_SVXPAGE_TEXTCOLUMNS", SvxTextColumnsPage::Create, nullptr); } /************************************************************************* diff --git a/cui/uiconfig/ui/textcolumnstabpage.ui b/cui/uiconfig/ui/textcolumnstabpage.ui new file mode 100644 index 000000000000..596b155dbe1b --- /dev/null +++ b/cui/uiconfig/ui/textcolumnstabpage.ui @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.38.2 --> +<interface domain="cui"> + <requires lib="gtk+" version="3.20"/> + <object class="GtkAdjustment" id="adjustmentColNumber"> + <property name="lower">1</property> + <property name="upper">16</property><!-- MSO has an upper limit of 16 in UI --> + <property name="step-increment">1</property> + <property name="page-increment">10</property> + </object> + <object class="GtkAdjustment" id="adjustmentColSpacing"> + <property name="lower">0</property> + <property name="upper">2147483647</property> + <property name="step-increment">1</property> + <property name="page-increment">10</property> + </object> + <object class="GtkBox" id="TextColumnsPage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="border-width">6</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <!-- n-columns=2 n-rows=2 --> + <object class="GtkGrid" id="grid1"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-start">12</property> + <property name="margin-top">6</property> + <property name="row-spacing">6</property> + <property name="column-spacing">12</property> + <child> + <object class="GtkLabel" id="labelColNumber"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="textcolumnstabpage|labelColNumber">_Number of columns:</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">FLD_COL_NUMBER</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="labelColSpacing"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="textcolumnstabpage|labelColSpacing">_Spacing:</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">MTR_FLD_COL_SPACING</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="FLD_COL_NUMBER"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="activates-default">True</property> + <property name="truncate-multiline">True</property> + <property name="adjustment">adjustmentColNumber</property> + <property name="value">1</property> + <child internal-child="accessible"> + <object class="AtkObject" id="FLD_COL_NUMBER-atkobject"> + <property name="AtkObject::accessible-description" translatable="yes" context="textcolumnstabpage|extended_tip|FLD_COL_NUMBER">Enter the number of columns to use for the text.</property> + </object> + </child> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="MTR_FLD_COL_SPACING"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="activates-default">True</property> + <property name="truncate-multiline">True</property> + <property name="adjustment">adjustmentColSpacing</property> + <property name="digits">2</property> + <child internal-child="accessible"> + <object class="AtkObject" id="MTR_FLD_COL_SPACING-atkobject"> + <property name="AtkObject::accessible-description" translatable="yes" context="textcolumnstabpage|extended_tip|MTR_FLD_COL_SPACING">Enter the amount of space to leave between the columns.</property> + </object> + </child> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child internal-child="accessible"> + <object class="AtkObject" id="TextColumnsPage-atkobject"> + <property name="AtkObject::accessible-description" translatable="yes" context="textcolumnstabpage|extended_tip|TextColumnsPage">Sets the columns layout properties for text in the selected drawing or text object.</property> + </object> + </child> + </object> +</interface> diff --git a/cui/uiconfig/ui/textdialog.ui b/cui/uiconfig/ui/textdialog.ui index c3981d1cc46d..6cde38354a2a 100644 --- a/cui/uiconfig/ui/textdialog.ui +++ b/cui/uiconfig/ui/textdialog.ui @@ -187,6 +187,54 @@ <property name="tab_fill">False</property> </packing> </child> + <child> + <!-- n-columns=1 n-rows=1 --> + <object class="GtkGrid"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="RID_SVXPAGE_TEXTCOLUMNS"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="textdialog|RID_SVXPAGE_TEXTCOLUMNS">Text Columns</property> + </object> + <packing> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> |