summaryrefslogtreecommitdiff
path: root/cui
diff options
context:
space:
mode:
authorMuhammet Kara <muhammet.kara@pardus.org.tr>2017-08-17 06:48:08 +0300
committerKatarina Behrens <Katarina.Behrens@cib.de>2017-09-04 22:39:46 +0200
commitc525dc764114f45ec9ff33837e8ae7cb74ce72b1 (patch)
tree7b029314471346b747e5da16b363a5415f445173 /cui
parent3e4de4d63c897fdaa885909f7abb1b3f111458d2 (diff)
Implement "Add" button in the Customize dialog
Now new commands can be added to Toolbars, Menus, and Context Menus by using the Add (right arrow) button which is between the commands list and the menu/toolbar entries list. Change-Id: I9c094a5142f82922c5e5bc3075a35442875a5fec Reviewed-on: https://gerrit.libreoffice.org/41240 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
Diffstat (limited to 'cui')
-rw-r--r--cui/source/customize/SvxMenuConfigPage.cxx13
-rw-r--r--cui/source/customize/SvxToolbarConfigPage.cxx22
-rw-r--r--cui/source/customize/cfg.cxx33
-rw-r--r--cui/source/inc/SvxMenuConfigPage.hxx3
-rw-r--r--cui/source/inc/SvxToolbarConfigPage.hxx4
-rw-r--r--cui/source/inc/cfg.hxx7
6 files changed, 74 insertions, 8 deletions
diff --git a/cui/source/customize/SvxMenuConfigPage.cxx b/cui/source/customize/SvxMenuConfigPage.cxx
index e0a0a9801682..8c85eb47d6b5 100644
--- a/cui/source/customize/SvxMenuConfigPage.cxx
+++ b/cui/source/customize/SvxMenuConfigPage.cxx
@@ -124,6 +124,9 @@ SvxMenuConfigPage::SvxMenuConfigPage(vcl::Window *pParent, const SfxItemSet& rSe
m_pMoveUpButton->SetClickHdl ( LINK( this, SvxConfigPage, MoveHdl) );
m_pMoveDownButton->SetClickHdl ( LINK( this, SvxConfigPage, MoveHdl) );
+
+ m_pAddCommandButton->SetClickHdl( LINK( this, SvxMenuConfigPage, AddCommandHdl ) );
+ //m_pRemoveCommandButton->SetClickHdl( LINK( this, SvxMenuConfigPage, RemoveCommandHdl ) );
}
SvxMenuConfigPage::~SvxMenuConfigPage()
@@ -289,6 +292,16 @@ IMPL_LINK_NOARG( SvxMenuConfigPage, SelectCategory, ListBox&, void )
m_pCommandCategoryListBox->categorySelected( m_pFunctions );
}
+IMPL_LINK_NOARG( SvxMenuConfigPage, AddCommandHdl, Button *, void )
+{
+ AddFunction();
+}
+
+/*IMPL_LINK_NOARG( SvxMenuConfigPage, RemoveCommandHdl, Button *, void )
+{
+ //TODO:Implement
+}*/
+
SaveInData* SvxMenuConfigPage::CreateSaveInData(
const css::uno::Reference< css::ui::XUIConfigurationManager >& xCfgMgr,
const css::uno::Reference< css::ui::XUIConfigurationManager >& xParentCfgMgr,
diff --git a/cui/source/customize/SvxToolbarConfigPage.cxx b/cui/source/customize/SvxToolbarConfigPage.cxx
index 55240bf1a0d5..f5f6d7b7a5aa 100644
--- a/cui/source/customize/SvxToolbarConfigPage.cxx
+++ b/cui/source/customize/SvxToolbarConfigPage.cxx
@@ -135,6 +135,9 @@ SvxToolbarConfigPage::SvxToolbarConfigPage(vcl::Window *pParent, const SfxItemSe
m_pMoveDownButton->Enable();
m_pMoveUpButton->Enable();
+ m_pAddCommandButton->SetClickHdl( LINK( this, SvxToolbarConfigPage, AddCommandHdl ) );
+ //m_pRemoveCommandButton->SetClickHdl( LINK( this, SvxToolbarConfigPage, RemoveCommandHdl ) );
+
// default toolbar to select is standardbar unless a different one
// has been passed in
m_aURLToSelect = ITEM_TOOLBAR_URL;
@@ -321,6 +324,16 @@ IMPL_LINK_NOARG( SvxToolbarConfigPage, SelectCategory, ListBox&, void )
m_pCommandCategoryListBox->categorySelected( m_pFunctions );
}
+IMPL_LINK_NOARG( SvxToolbarConfigPage, AddCommandHdl, Button *, void )
+{
+ AddFunction();
+}
+
+/*IMPL_LINK_NOARG( SvxToolbarConfigPage, RemoveCommandHdl, Button *, void )
+{
+ //TODO:Implement
+}*/
+
void SvxToolbarConfigPage::UpdateButtonStates()
{
@@ -391,14 +404,10 @@ IMPL_LINK_NOARG( SvxToolbarConfigPage, SelectToolbar, ListBox&, void )
UpdateButtonStates();
}
-IMPL_LINK_NOARG( SvxToolbarConfigPage, AddFunctionHdl, SvxScriptSelectorDialog&, void )
-{
- AddFunction();
-}
-
void SvxToolbarConfigPage::AddFunction(
SvTreeListEntry* pTarget, bool bFront )
{
+ // Add the command to the contents listbox of the selected toolbar
SvTreeListEntry* pNewLBEntry =
SvxConfigPage::AddFunction( pTarget, bFront, true/*bAllowDuplicates*/ );
@@ -416,6 +425,9 @@ void SvxToolbarConfigPage::AddFunction(
pNewLBEntry, SvButtonState::Tristate );
}
+ // Changes are not visible on the toolbar until this point
+ // TODO: Figure out a way to show the changes on the toolbar, but revert if
+ // the dialog is closed by pressing "Cancel"
// get currently selected toolbar and apply change
SvxConfigEntry* pToolbar = GetTopLevelSelection();
diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx
index 7513fcf2d42c..9c339e395cbe 100644
--- a/cui/source/customize/cfg.cxx
+++ b/cui/source/customize/cfg.cxx
@@ -1136,6 +1136,9 @@ SvxConfigPage::SvxConfigPage(vcl::Window *pParent, const SfxItemSet& rSet)
get(m_pCommandCategoryListBox, "commandcategorylist");
get(m_pFunctions, "functions");
+ get(m_pAddCommandButton, "add");
+ get(m_pRemoveCommandButton, "remove");
+
get(m_pTopLevelListBox, "toplevellist");
get(m_pContents, "contents");
get(m_pMoveUpButton, "up");
@@ -1166,6 +1169,8 @@ void SvxConfigPage::dispose()
m_pContents.clear();
m_pEntries.clear();
m_pFunctions.clear();
+ m_pAddCommandButton.clear();
+ m_pRemoveCommandButton.clear();
m_pMoveUpButton.clear();
m_pMoveDownButton.clear();
m_pSaveInListBox.clear();
@@ -1442,6 +1447,30 @@ OUString SvxConfigPage::GetFrameWithDefaultAndIdentify( uno::Reference< frame::X
return sModuleID;
}
+OUString SvxConfigPage::GetScriptURL() const
+{
+ OUString result;
+
+ SvTreeListEntry *pEntry = m_pFunctions->FirstSelected();
+ if ( pEntry )
+ {
+ SfxGroupInfo_Impl *pData = static_cast<SfxGroupInfo_Impl*>(pEntry->GetUserData());
+ if ( ( pData->nKind == SfxCfgKind::FUNCTION_SLOT ) ||
+ ( pData->nKind == SfxCfgKind::FUNCTION_SCRIPT ) ||
+ ( pData->nKind == SfxCfgKind::GROUP_STYLES ) )
+ {
+ result = pData->sCommand;
+ }
+ }
+
+ return result;
+}
+
+OUString SvxConfigPage::GetSelectedDisplayName()
+{
+ return m_pFunctions->GetEntryText( m_pFunctions->FirstSelected() );
+}
+
bool SvxConfigPage::FillItemSet( SfxItemSet* )
{
bool result = false;
@@ -1555,7 +1584,7 @@ SvxEntries* SvxConfigPage::FindParentForChild(
SvTreeListEntry* SvxConfigPage::AddFunction(
SvTreeListEntry* pTarget, bool bFront, bool bAllowDuplicates )
{
- OUString aURL = m_pSelectorDlg->GetScriptURL();
+ OUString aURL = GetScriptURL();
if ( aURL.isEmpty() )
{
@@ -1577,7 +1606,7 @@ SvTreeListEntry* SvxConfigPage::AddFunction(
pNewEntryData->SetUserDefined();
if ( aDisplayName.isEmpty() )
- pNewEntryData->SetName( m_pSelectorDlg->GetSelectedDisplayName() );
+ pNewEntryData->SetName( GetSelectedDisplayName() );
// check that this function is not already in the menu
SvxConfigEntry* pParent = GetTopLevelSelection();
diff --git a/cui/source/inc/SvxMenuConfigPage.hxx b/cui/source/inc/SvxMenuConfigPage.hxx
index 73165ed140f7..9110edeeaf9d 100644
--- a/cui/source/inc/SvxMenuConfigPage.hxx
+++ b/cui/source/inc/SvxMenuConfigPage.hxx
@@ -56,6 +56,9 @@ private:
DECL_LINK( SelectCategory, ListBox&, void );
+ DECL_LINK( AddCommandHdl, Button *, void );
+ //DECL_LINK( RemoveCommandHdl, Button *, void );
+
void Init() override;
void UpdateButtonStates() override;
short QueryReset() override;
diff --git a/cui/source/inc/SvxToolbarConfigPage.hxx b/cui/source/inc/SvxToolbarConfigPage.hxx
index 21d63fbe81ff..e4721553477f 100644
--- a/cui/source/inc/SvxToolbarConfigPage.hxx
+++ b/cui/source/inc/SvxToolbarConfigPage.hxx
@@ -53,11 +53,13 @@ private:
DECL_LINK( SelectToolbar, ListBox&, void );
DECL_LINK( SelectToolbarEntry, SvTreeListBox*, void );
- DECL_LINK( AddFunctionHdl, SvxScriptSelectorDialog&, void );
DECL_LINK( MoveHdl, Button *, void );
DECL_LINK( SelectCategory, ListBox&, void );
+ DECL_LINK( AddCommandHdl, Button *, void );
+ //DECL_LINK( RemoveCommandHdl, Button *, void );
+
void UpdateButtonStates() override;
short QueryReset() override;
void Init() override;
diff --git a/cui/source/inc/cfg.hxx b/cui/source/inc/cfg.hxx
index 0035e86aa047..f05d8fa74d5c 100644
--- a/cui/source/inc/cfg.hxx
+++ b/cui/source/inc/cfg.hxx
@@ -403,6 +403,10 @@ protected:
VclPtr<SvxScriptSelectorDialog> m_pSelectorDlg;
+ // Middle buttons
+ VclPtr<PushButton> m_pAddCommandButton;
+ VclPtr<PushButton> m_pRemoveCommandButton;
+
/// the ResourceURL to select when opening the dialog
OUString m_aURLToSelect;
@@ -479,6 +483,9 @@ public:
*/
static OUString
GetFrameWithDefaultAndIdentify( css::uno::Reference< css::frame::XFrame >& _inout_rxFrame );
+
+ OUString GetScriptURL() const;
+ OUString GetSelectedDisplayName();
};
class SvxMainMenuOrganizerDialog : public ModalDialog