diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2022-10-19 08:44:38 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2022-10-19 11:48:48 +0200 |
commit | add110bad816fadeb96e7af0d4689389c04c263e (patch) | |
tree | ee6ad45846aae0bb0dd492f500e6ec4650ba186d | |
parent | ffc23650d988051bf9fe43edeb4e16096907b080 (diff) |
sw content controls, alias and tag: add UI
- add 2 new weld::Entry instances to edit these strings + matching
labels
- extend the grid to have 2 columns, as previously only a checkbox was
there for all content controls, which only needed a single column, but
now we want label + entry pairs in later rows
- cover this with a UITest
Change-Id: Ia5cfb90725d3b5b40eccf15ec7c7823e0e6d6751
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141522
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
-rw-r--r-- | sw/qa/uitest/ui/misc/misc.py | 11 | ||||
-rw-r--r-- | sw/source/ui/misc/contentcontroldlg.cxx | 26 | ||||
-rw-r--r-- | sw/source/uibase/inc/contentcontroldlg.hxx | 2 | ||||
-rw-r--r-- | sw/uiconfig/swriter/ui/contentcontroldlg.ui | 51 |
4 files changed, 89 insertions, 1 deletions
diff --git a/sw/qa/uitest/ui/misc/misc.py b/sw/qa/uitest/ui/misc/misc.py index cf4554ce9638..2b6307cefb61 100644 --- a/sw/qa/uitest/ui/misc/misc.py +++ b/sw/qa/uitest/ui/misc/misc.py @@ -10,6 +10,7 @@ """Covers sw/source/ui/misc/ fixes.""" from uitest.framework import UITestCase +from uitest.uihelper.common import get_state_as_dict from uitest.uihelper.common import type_text @@ -23,6 +24,8 @@ class TestTmpdlg(UITestCase): portions = paragraph.createEnumeration() portion = portions.nextElement() contentControl = portion.ContentControl + contentControl.Alias = "my alias" + contentControl.Tag = "my tag" listItems = contentControl.ListItems self.assertEqual(len(listItems), 1) self.assertEqual(listItems[0][0].Name, "DisplayText") @@ -32,6 +35,12 @@ class TestTmpdlg(UITestCase): # Append a new list item. with self.ui_test.execute_dialog_through_command(".uno:ContentControlProperties") as xDialog: + xAlias = xDialog.getChild("aliasentry") + self.assertEqual(get_state_as_dict(xAlias)['Text'], "my alias") + type_text(xAlias, "new alias ") + xTag = xDialog.getChild("tagentry") + self.assertEqual(get_state_as_dict(xTag)['Text'], "my tag") + type_text(xTag, "new tag ") xAdd = xDialog.getChild("add") with self.ui_test.execute_blocking_action(xAdd.executeAction, args=('CLICK', ())) as xSubDialog: xDisplayName = xSubDialog.getChild("displayname") @@ -46,6 +55,8 @@ class TestTmpdlg(UITestCase): self.assertEqual(listItems[1][0].Value, "Foo Bar") self.assertEqual(listItems[1][1].Name, "Value") self.assertEqual(listItems[1][1].Value, "foo-bar") + self.assertEqual(contentControl.Alias, "new alias my alias") + self.assertEqual(contentControl.Tag, "new tag my tag") # vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/sw/source/ui/misc/contentcontroldlg.cxx b/sw/source/ui/misc/contentcontroldlg.cxx index 11fe590f0413..c530795458a0 100644 --- a/sw/source/ui/misc/contentcontroldlg.cxx +++ b/sw/source/ui/misc/contentcontroldlg.cxx @@ -38,6 +38,8 @@ SwContentControlDlg::SwContentControlDlg(weld::Window* pParent, SwWrtShell& rWrt "ContentControlDialog") , m_rWrtShell(rWrtShell) , m_xShowingPlaceHolderCB(m_xBuilder->weld_check_button("showing_place_holder")) + , m_xAlias(m_xBuilder->weld_entry("aliasentry")) + , m_xTag(m_xBuilder->weld_entry("tagentry")) , m_xCheckboxFrame(m_xBuilder->weld_frame("checkboxframe")) , m_xCheckedState(m_xBuilder->weld_entry("checkboxcheckedentry")) , m_xCheckedStateBtn(m_xBuilder->weld_button("btncheckboxchecked")) @@ -94,6 +96,18 @@ SwContentControlDlg::SwContentControlDlg(weld::Window* pParent, SwWrtShell& rWrt m_xShowingPlaceHolderCB->set_state(eShowingPlaceHolder); m_xShowingPlaceHolderCB->save_state(); + if (!m_pContentControl->GetAlias().isEmpty()) + { + m_xAlias->set_text(m_pContentControl->GetAlias()); + m_xAlias->save_value(); + } + + if (!m_pContentControl->GetTag().isEmpty()) + { + m_xTag->set_text(m_pContentControl->GetTag()); + m_xTag->save_value(); + } + if (m_pContentControl->GetCheckbox()) { m_xCheckedState->set_text(m_pContentControl->GetCheckedState()); @@ -176,6 +190,18 @@ IMPL_LINK_NOARG(SwContentControlDlg, OkHdl, weld::Button&, void) bChanged = true; } + if (m_xAlias->get_value_changed_from_saved()) + { + m_pContentControl->SetAlias(m_xAlias->get_text()); + bChanged = true; + } + + if (m_xTag->get_value_changed_from_saved()) + { + m_pContentControl->SetTag(m_xTag->get_text()); + bChanged = true; + } + if (m_xCheckedState->get_value_changed_from_saved()) { m_pContentControl->SetCheckedState(m_xCheckedState->get_text()); diff --git a/sw/source/uibase/inc/contentcontroldlg.hxx b/sw/source/uibase/inc/contentcontroldlg.hxx index 7654e3d6befb..df4830e7cd9f 100644 --- a/sw/source/uibase/inc/contentcontroldlg.hxx +++ b/sw/source/uibase/inc/contentcontroldlg.hxx @@ -37,6 +37,8 @@ class SwContentControlDlg final : public SfxDialogController std::vector<SwContentControlListItem> m_aSavedListItems; std::unique_ptr<weld::CheckButton> m_xShowingPlaceHolderCB; + std::unique_ptr<weld::Entry> m_xAlias; + std::unique_ptr<weld::Entry> m_xTag; std::unique_ptr<weld::Frame> m_xCheckboxFrame; std::unique_ptr<weld::Entry> m_xCheckedState; std::unique_ptr<weld::Button> m_xCheckedStateBtn; diff --git a/sw/uiconfig/swriter/ui/contentcontroldlg.ui b/sw/uiconfig/swriter/ui/contentcontroldlg.ui index f1907aae396b..8918a53a4a72 100644 --- a/sw/uiconfig/swriter/ui/contentcontroldlg.ui +++ b/sw/uiconfig/swriter/ui/contentcontroldlg.ui @@ -91,7 +91,7 @@ </packing> </child> <child> - <!-- n-columns=1 n-rows=1 --> + <!-- n-columns=2 n-rows=3 --> <object class="GtkGrid"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -111,6 +111,55 @@ <packing> <property name="left-attach">0</property> <property name="top-attach">0</property> + <property name="width">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="aliaslabel"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="contentcontroldlg|aliaslabel">Title:</property> + <property name="mnemonic-widget">aliasentry</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="GtkLabel" id="taglabel"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="contentcontroldlg|taglabel">Tag:</property> + <property name="mnemonic-widget">tagentry</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="aliasentry"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="truncate-multiline">True</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="tagentry"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="truncate-multiline">True</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">2</property> </packing> </child> </object> |