diff options
author | Muhammet Kara <muhammet.kara@pardus.org.tr> | 2018-03-07 12:39:02 +0300 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2018-03-12 12:13:27 +0100 |
commit | a21744a72637a2e3044f55450df85f94a9fc0bf9 (patch) | |
tree | 7f4aed0967f33de092932129a830fe0e991f5be0 | |
parent | 2cc2f9fa4b98eaf47ae1e8fecdfb916ed8038622 (diff) |
tdf#114260: Add gear button to Customize dialog
* Allow renaming custom toolbars, custom menus, and standard sub-menus.
* Move plus and minus buttons into the gear button
Change-Id: Id856da2498412b52e44b5623c4a5b9a3ed439fe3
Reviewed-on: https://gerrit.libreoffice.org/50553
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Muhammet Kara <muhammet.kara@pardus.org.tr>
Tested-by: Muhammet Kara <muhammet.kara@pardus.org.tr>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
-rw-r--r-- | cui/source/customize/SvxMenuConfigPage.cxx | 93 | ||||
-rw-r--r-- | cui/source/customize/SvxToolbarConfigPage.cxx | 155 | ||||
-rw-r--r-- | cui/source/customize/cfg.cxx | 12 | ||||
-rw-r--r-- | cui/source/inc/SvxMenuConfigPage.hxx | 3 | ||||
-rw-r--r-- | cui/source/inc/SvxToolbarConfigPage.hxx | 3 | ||||
-rw-r--r-- | cui/source/inc/cfg.hxx | 4 | ||||
-rw-r--r-- | cui/uiconfig/ui/menuassignpage.ui | 67 |
7 files changed, 214 insertions, 123 deletions
diff --git a/cui/source/customize/SvxMenuConfigPage.cxx b/cui/source/customize/SvxMenuConfigPage.cxx index 882c578aa2cb..1737744dbb25 100644 --- a/cui/source/customize/SvxMenuConfigPage.cxx +++ b/cui/source/customize/SvxMenuConfigPage.cxx @@ -117,10 +117,8 @@ SvxMenuConfigPage::SvxMenuConfigPage(vcl::Window *pParent, const SfxItemSet& rSe m_pContentsListBox->SetSelectHdl( LINK( this, SvxMenuConfigPage, SelectMenuEntry ) ); - m_pPlusBtn->SetClickHdl( - LINK( this, SvxMenuConfigPage, AddMenuHdl ) ); - m_pMinusBtn->SetClickHdl( - LINK( this, SvxMenuConfigPage, RemoveMenuHdl ) ); + m_pGearBtn->SetSelectHdl( + LINK( this, SvxMenuConfigPage, GearHdl ) ); m_pCommandCategoryListBox->SetSelectHdl( LINK( this, SvxMenuConfigPage, SelectCategory ) ); @@ -147,18 +145,9 @@ SvxMenuConfigPage::SvxMenuConfigPage(vcl::Window *pParent, const SfxItemSet& rSe if ( !bIsMenuBar ) { - // Context menus cannot be added/removed - // These height requests are needed to keep the height of - // the top level list boxes consistent for all tabs - m_pTopLevelListBox->set_height_request( - m_pPlusBtn->GetOptimalSize().Height() ); - m_pCommandCategoryListBox->set_height_request( - m_pPlusBtn->GetOptimalSize().Height() ); - - m_pPlusBtn->Disable(); - m_pMinusBtn->Disable(); - m_pPlusBtn->Hide(); - m_pMinusBtn->Hide(); + //TODO: Remove this when the gear button is implemented for context menus + m_pGearBtn->Disable(); + m_pGearBtn->Hide(); } else { @@ -225,6 +214,16 @@ void SvxMenuConfigPage::UpdateButtonStates() m_pRemoveCommandButton->Enable( bIsValidSelection ); m_pModifyBtn->Enable( bIsValidSelection && !bIsSeparator); + + //Handle the gear button + if (m_bIsMenuBar) + { + SvxConfigEntry* pMenuData = GetTopLevelSelection(); + PopupMenu* pGearPopup = m_pGearBtn->GetPopupMenu(); + // Add option (gear_add) will always be enabled + pGearPopup->EnableItem( "gear_delete", pMenuData->IsDeletable() ); + pGearPopup->EnableItem( "gear_rename", pMenuData->IsRenamable() ); + } } void SvxMenuConfigPage::DeleteSelectedTopLevel() @@ -298,9 +297,6 @@ IMPL_LINK_NOARG( SvxMenuConfigPage, SelectMenu, ListBox&, void ) if ( pMenuData ) { - // Built-in menus cannot be deleted - m_pMinusBtn->Enable( pMenuData->IsDeletable() ); - SvxEntries* pEntries = pMenuData->GetEntries(); for (auto const& entry : *pEntries) @@ -312,22 +308,59 @@ IMPL_LINK_NOARG( SvxMenuConfigPage, SelectMenu, ListBox&, void ) UpdateButtonStates(); } -IMPL_LINK_NOARG( SvxMenuConfigPage, AddMenuHdl, Button *, void ) +IMPL_LINK( SvxMenuConfigPage, GearHdl, MenuButton *, pButton, void ) { - VclPtrInstance<SvxMainMenuOrganizerDialog> pDialog( - nullptr, GetSaveInData()->GetEntries(), nullptr, true ); + OString sIdent = pButton->GetCurItemIdent(); - if ( pDialog->Execute() == RET_OK ) + if (sIdent == "gear_add") { - GetSaveInData()->SetEntries( pDialog->GetEntries() ); - ReloadTopLevelListBox( pDialog->GetSelectedEntry() ); - GetSaveInData()->SetModified(); + VclPtrInstance<SvxMainMenuOrganizerDialog> pDialog( + nullptr, GetSaveInData()->GetEntries(), nullptr, true ); + + if ( pDialog->Execute() == RET_OK ) + { + GetSaveInData()->SetEntries( pDialog->GetEntries() ); + ReloadTopLevelListBox( pDialog->GetSelectedEntry() ); + GetSaveInData()->SetModified(); + } } -} + else if (sIdent == "gear_delete") + { + DeleteSelectedTopLevel(); + } + else if (sIdent == "gear_rename") + { + SvxConfigEntry* pMenuData = GetTopLevelSelection(); -IMPL_LINK_NOARG( SvxMenuConfigPage, RemoveMenuHdl, Button *, void ) -{ - DeleteSelectedTopLevel(); + OUString sCurrentName( SvxConfigPageHelper::stripHotKey( pMenuData->GetName() ) ); + OUString sDesc = CuiResId( RID_SVXSTR_LABEL_NEW_NAME ); + + SvxNameDialog aNameDialog( GetFrameWeld(), sCurrentName, sDesc ); + aNameDialog.set_help_id( HID_SVX_CONFIG_RENAME_MENU ); + aNameDialog.set_title( CuiResId( RID_SVXSTR_RENAME_MENU ) ); + + if ( aNameDialog.run() == RET_OK ) + { + OUString sNewName = aNameDialog.GetName(); + + if ( sCurrentName == sNewName ) + return; + + pMenuData->SetName( sNewName ); + + ReloadTopLevelListBox(); + + GetSaveInData()->SetModified(); + } + } + else + { + //This block should never be reached + SAL_WARN("cui.customize", "Unknown gear menu option: " << sIdent); + return; + } + + UpdateButtonStates(); } IMPL_LINK_NOARG( SvxMenuConfigPage, SelectCategory, ListBox&, void ) diff --git a/cui/source/customize/SvxToolbarConfigPage.cxx b/cui/source/customize/SvxToolbarConfigPage.cxx index f8a530cb5094..53542657fe81 100644 --- a/cui/source/customize/SvxToolbarConfigPage.cxx +++ b/cui/source/customize/SvxToolbarConfigPage.cxx @@ -126,10 +126,8 @@ SvxToolbarConfigPage::SvxToolbarConfigPage(vcl::Window *pParent, const SfxItemSe m_pCommandCategoryListBox->SetSelectHdl( LINK( this, SvxToolbarConfigPage, SelectCategory ) ); - m_pPlusBtn->SetClickHdl( - LINK( this, SvxToolbarConfigPage, AddToolbarHdl ) ); - m_pMinusBtn->SetClickHdl( - LINK( this, SvxToolbarConfigPage, RemoveToolbarHdl ) ); + m_pGearBtn->SetSelectHdl( + LINK( this, SvxToolbarConfigPage, GearHdl ) ); m_pMoveUpButton->SetClickHdl ( LINK( this, SvxToolbarConfigPage, MoveHdl) ); m_pMoveDownButton->SetClickHdl ( LINK( this, SvxToolbarConfigPage, MoveHdl) ); @@ -334,77 +332,119 @@ IMPL_LINK_NOARG( SvxToolbarConfigPage, SelectToolbarEntry, SvTreeListBox *, void UpdateButtonStates(); } -IMPL_LINK_NOARG( SvxToolbarConfigPage, AddToolbarHdl, Button *, void ) +IMPL_LINK( SvxToolbarConfigPage, GearHdl, MenuButton *, pButton, void ) { - OUString prefix = CuiResId( RID_SVXSTR_NEW_TOOLBAR ); + OString sIdent = pButton->GetCurItemIdent(); - OUString aNewName = - SvxConfigPageHelper::generateCustomName( prefix, GetSaveInData()->GetEntries() ); + if (sIdent == "gear_add") + { + OUString prefix = CuiResId( RID_SVXSTR_NEW_TOOLBAR ); - OUString aNewURL = - SvxConfigPageHelper::generateCustomURL( GetSaveInData()->GetEntries() ); + OUString aNewName = + SvxConfigPageHelper::generateCustomName( prefix, GetSaveInData()->GetEntries() ); - VclPtrInstance< SvxNewToolbarDialog > pNameDialog( nullptr, aNewName ); + OUString aNewURL = + SvxConfigPageHelper::generateCustomURL( GetSaveInData()->GetEntries() ); - // Reflect the actual m_pSaveInListBox into the new toolbar dialog - for ( sal_Int32 i = 0; i < m_pSaveInListBox->GetEntryCount(); ++i ) - { - SaveInData* pData = - static_cast<SaveInData*>(m_pSaveInListBox->GetEntryData( i )); + VclPtrInstance< SvxNewToolbarDialog > pNameDialog( nullptr, aNewName ); - const sal_Int32 nInsertPos = - pNameDialog->m_pSaveInListBox->InsertEntry( m_pSaveInListBox->GetEntry( i ) ); + // Reflect the actual m_pSaveInListBox into the new toolbar dialog + for ( sal_Int32 i = 0; i < m_pSaveInListBox->GetEntryCount(); ++i ) + { + SaveInData* pData = + static_cast<SaveInData*>(m_pSaveInListBox->GetEntryData( i )); - pNameDialog->m_pSaveInListBox->SetEntryData( nInsertPos, pData ); - } + const sal_Int32 nInsertPos = + pNameDialog->m_pSaveInListBox->InsertEntry( m_pSaveInListBox->GetEntry( i ) ); - pNameDialog->m_pSaveInListBox->SelectEntryPos( - m_pSaveInListBox->GetSelectedEntryPos() ); + pNameDialog->m_pSaveInListBox->SetEntryData( nInsertPos, pData ); + } - if ( pNameDialog->Execute() == RET_OK ) - { - aNewName = pNameDialog->GetName(); + pNameDialog->m_pSaveInListBox->SelectEntryPos( + m_pSaveInListBox->GetSelectedEntryPos() ); - // Where to save the new toolbar? (i.e. Modulewise or documentwise) - sal_Int32 nInsertPos = pNameDialog->m_pSaveInListBox->GetSelectedEntryPos(); + if ( pNameDialog->Execute() == RET_OK ) + { + aNewName = pNameDialog->GetName(); - ToolbarSaveInData* pData = - static_cast<ToolbarSaveInData*>( - pNameDialog->m_pSaveInListBox->GetEntryData( nInsertPos ) ); + // Where to save the new toolbar? (i.e. Modulewise or documentwise) + sal_Int32 nInsertPos = pNameDialog->m_pSaveInListBox->GetSelectedEntryPos(); - if ( GetSaveInData() != pData ) - { - m_pSaveInListBox->SelectEntryPos( nInsertPos ); - m_pSaveInListBox->GetSelectHdl().Call(*m_pSaveInListBox); + ToolbarSaveInData* pData = + static_cast<ToolbarSaveInData*>( + pNameDialog->m_pSaveInListBox->GetEntryData( nInsertPos ) ); + + if ( GetSaveInData() != pData ) + { + m_pSaveInListBox->SelectEntryPos( nInsertPos ); + m_pSaveInListBox->GetSelectHdl().Call(*m_pSaveInListBox); + } + + SvxConfigEntry* pToolbar = + new SvxConfigEntry( aNewName, aNewURL, true, false ); + + pToolbar->SetUserDefined(); + pToolbar->SetMain(); + + pData->CreateToolbar( pToolbar ); + + nInsertPos = m_pTopLevelListBox->InsertEntry( pToolbar->GetName() ); + m_pTopLevelListBox->SetEntryData( nInsertPos, pToolbar ); + m_pTopLevelListBox->SelectEntryPos( nInsertPos ); + m_pTopLevelListBox->GetSelectHdl().Call(*m_pTopLevelListBox); + + pData->SetModified(); } + } + else if (sIdent == "gear_delete") + { + SvxConfigEntry* pToolbar = GetTopLevelSelection(); + if ( pToolbar && pToolbar->IsDeletable() ) + { + DeleteSelectedTopLevel(); + UpdateButtonStates(); + } + } + else if (sIdent == "gear_rename") + { + sal_Int32 nSelectionPos = m_pTopLevelListBox->GetSelectedEntryPos(); SvxConfigEntry* pToolbar = - new SvxConfigEntry( aNewName, aNewURL, true, /*bParentData*/false ); + static_cast<SvxConfigEntry*>(m_pTopLevelListBox->GetEntryData( nSelectionPos )); + ToolbarSaveInData* pSaveInData = static_cast<ToolbarSaveInData*>( GetSaveInData() ); - pToolbar->SetUserDefined(); - pToolbar->SetMain(); + //Rename the toolbar + OUString sCurrentName( SvxConfigPageHelper::stripHotKey( pToolbar->GetName() ) ); + OUString sDesc = CuiResId( RID_SVXSTR_LABEL_NEW_NAME ); - pData->CreateToolbar( pToolbar ); + SvxNameDialog aNameDialog( GetFrameWeld(), sCurrentName, sDesc ); + aNameDialog.set_help_id( HID_SVX_CONFIG_RENAME_TOOLBAR ); + aNameDialog.set_title( CuiResId( RID_SVXSTR_RENAME_TOOLBAR ) ); - nInsertPos = m_pTopLevelListBox->InsertEntry( pToolbar->GetName() ); - m_pTopLevelListBox->SetEntryData( nInsertPos, pToolbar ); - m_pTopLevelListBox->SelectEntryPos( nInsertPos ); - m_pTopLevelListBox->GetSelectHdl().Call(*m_pTopLevelListBox); + if ( aNameDialog.run() == RET_OK ) + { + OUString sNewName = aNameDialog.GetName(); - pData->SetModified(); - } -} + if (sCurrentName == sNewName) + return; -IMPL_LINK_NOARG( SvxToolbarConfigPage, RemoveToolbarHdl, Button *, void ) -{ - SvxConfigEntry* pToolbar = GetTopLevelSelection(); + pToolbar->SetName( sNewName ); + pSaveInData->ApplyToolbar( pToolbar ); - if ( pToolbar && pToolbar->IsDeletable() ) + // have to use remove and insert to change the name + m_pTopLevelListBox->RemoveEntry( nSelectionPos ); + nSelectionPos = + m_pTopLevelListBox->InsertEntry( sNewName, nSelectionPos ); + m_pTopLevelListBox->SetEntryData( nSelectionPos, pToolbar ); + m_pTopLevelListBox->SelectEntryPos( nSelectionPos ); + } + } + else { - DeleteSelectedTopLevel(); - UpdateButtonStates(); + //This block should never be reached + SAL_WARN("cui.customize", "Unknown gear menu option: " << sIdent); + return; } - } IMPL_LINK_NOARG( SvxToolbarConfigPage, SelectCategory, ListBox&, void ) @@ -697,6 +737,7 @@ IMPL_LINK_NOARG( SvxToolbarConfigPage, ResetToolbarHdl, Button *, void ) void SvxToolbarConfigPage::UpdateButtonStates() { + SvxConfigEntry* pToolbar = GetTopLevelSelection(); SvTreeListEntry* selection = m_pContentsListBox->GetCurEntry(); bool bIsSeparator = @@ -710,6 +751,12 @@ void SvxToolbarConfigPage::UpdateButtonStates() m_pRemoveCommandButton->Enable( bIsValidSelection ); m_pModifyBtn->Enable( bIsValidSelection && !bIsSeparator ); + + // Handle the gear button + PopupMenu* pPopup = m_pGearBtn->GetPopupMenu(); + // "gear_add" option is always enabled + pPopup->EnableItem( "gear_delete", pToolbar && pToolbar->IsDeletable() ); + pPopup->EnableItem( "gear_rename", pToolbar && pToolbar->IsRenamable() ); } short SvxToolbarConfigPage::QueryReset() @@ -735,8 +782,6 @@ IMPL_LINK_NOARG( SvxToolbarConfigPage, SelectToolbar, ListBox&, void ) if ( pToolbar == nullptr ) { //TODO: Disable related buttons - m_pPlusBtn->Enable( false ); - m_pMinusBtn->Enable( false ); m_pInsertBtn->Enable( false ); m_pResetBtn->Enable( false ); @@ -744,8 +789,6 @@ IMPL_LINK_NOARG( SvxToolbarConfigPage, SelectToolbar, ListBox&, void ) } else { - m_pPlusBtn->Enable(); - m_pMinusBtn->Enable( pToolbar->IsDeletable() ); m_pInsertBtn->Enable(); m_pResetBtn->Enable(); } diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx index b7aa0a21d7dc..8ee0080ba441 100644 --- a/cui/source/customize/cfg.cxx +++ b/cui/source/customize/cfg.cxx @@ -1141,8 +1141,7 @@ SvxConfigPage::SvxConfigPage(vcl::Window *pParent, const SfxItemSet& rSet) get(m_pRemoveCommandButton, "remove"); get(m_pTopLevelListBox, "toplevellist"); - get(m_pPlusBtn, "plusbtn"); - get(m_pMinusBtn, "minusbtn"); + get(m_pGearBtn, "gearbtn"); get(m_pMoveUpButton, "up"); get(m_pMoveDownButton, "down"); get(m_pSaveInListBox, "savein"); @@ -1180,6 +1179,7 @@ SvxConfigPage::SvxConfigPage(vcl::Window *pParent, const SfxItemSet& rSet) m_pFunctions->SetDoubleClickHdl( LINK( this, SvxConfigPage, FunctionDoubleClickHdl ) ); m_pFunctions->SetSelectHdl( LINK( this, SvxConfigPage, SelectFunctionHdl ) ); + m_pGearBtn->SetDropDown(PushButtonDropdownStyle::NONE); } SvxConfigPage::~SvxConfigPage() @@ -1190,8 +1190,7 @@ SvxConfigPage::~SvxConfigPage() void SvxConfigPage::dispose() { m_pTopLevelListBox.clear(); - m_pPlusBtn.clear(); - m_pMinusBtn.clear(); + m_pGearBtn.clear(); m_pSearchEdit.clear(); m_pCommandCategoryListBox.clear(); m_pEntries.clear(); @@ -2106,6 +2105,11 @@ bool SvxConfigEntry::IsDeletable() return !IsMain() || IsUserDefined(); } +bool SvxConfigEntry::IsRenamable() +{ + return !IsMain() || IsUserDefined(); +} + ToolbarSaveInData::ToolbarSaveInData( const uno::Reference < css::ui::XUIConfigurationManager >& xCfgMgr, const uno::Reference < css::ui::XUIConfigurationManager >& xParentCfgMgr, diff --git a/cui/source/inc/SvxMenuConfigPage.hxx b/cui/source/inc/SvxMenuConfigPage.hxx index 7f5eb33c39e4..f944ce36161e 100644 --- a/cui/source/inc/SvxMenuConfigPage.hxx +++ b/cui/source/inc/SvxMenuConfigPage.hxx @@ -53,8 +53,7 @@ private: DECL_LINK( SelectMenu, ListBox&, void ); DECL_LINK( SelectMenuEntry, SvTreeListBox *, void ); - DECL_LINK( AddMenuHdl, Button *, void ); - DECL_LINK( RemoveMenuHdl, Button *, void ); + DECL_LINK( GearHdl, MenuButton *, void ); DECL_LINK( SelectCategory, ListBox&, void ); diff --git a/cui/source/inc/SvxToolbarConfigPage.hxx b/cui/source/inc/SvxToolbarConfigPage.hxx index d854f45af833..2129db9801cb 100644 --- a/cui/source/inc/SvxToolbarConfigPage.hxx +++ b/cui/source/inc/SvxToolbarConfigPage.hxx @@ -54,8 +54,7 @@ private: DECL_LINK( SelectToolbarEntry, SvTreeListBox*, void ); DECL_LINK( MoveHdl, Button *, void ); - DECL_LINK( AddToolbarHdl, Button *, void ); - DECL_LINK( RemoveToolbarHdl, Button *, void ); + DECL_LINK( GearHdl, MenuButton *, void ); DECL_LINK( SelectCategory, ListBox&, void ); diff --git a/cui/source/inc/cfg.hxx b/cui/source/inc/cfg.hxx index 52bb3facb3c9..c1c85c86fa4c 100644 --- a/cui/source/inc/cfg.hxx +++ b/cui/source/inc/cfg.hxx @@ -320,6 +320,7 @@ public: bool IsModified() { return bIsModified; } bool IsDeletable(); + bool IsRenamable(); void SetVisible( bool b ) { bIsVisible = b; } bool IsVisible() const { return bIsVisible; } @@ -390,8 +391,7 @@ protected: // menu or toolbar are displayed VclPtr<ListBox> m_pTopLevelListBox; // Used to add and remove toolbars/menus - VclPtr<PushButton> m_pPlusBtn; - VclPtr<PushButton> m_pMinusBtn; + VclPtr<MenuButton> m_pGearBtn; VclPtr<VclContainer> m_pEntries; VclPtr<SvTreeListBox> m_pContentsListBox; diff --git a/cui/uiconfig/ui/menuassignpage.ui b/cui/uiconfig/ui/menuassignpage.ui index e43528006d83..bd77bf0179a2 100644 --- a/cui/uiconfig/ui/menuassignpage.ui +++ b/cui/uiconfig/ui/menuassignpage.ui @@ -3,6 +3,34 @@ <interface domain="cui"> <requires lib="gtk+" version="3.18"/> <requires lib="LibreOffice" version="1.0"/> + <object class="GtkMenu" id="gearmenu"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkMenuItem" id="gear_add"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="menuassignpage|gear_add">_Add...</property> + <property name="use_underline">True</property> + </object> + </child> + <child> + <object class="GtkMenuItem" id="gear_delete"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="menuassignpage|gear_delete">_Delete</property> + <property name="use_underline">True</property> + </object> + </child> + <child> + <object class="GtkMenuItem" id="gear_rename"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="menuassignpage|gear_rename">_Rename...</property> + <property name="use_underline">True</property> + </object> + </child> + </object> <object class="GtkImage" id="image1"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -23,15 +51,10 @@ <property name="can_focus">False</property> <property name="stock">gtk-go-back</property> </object> - <object class="GtkImage" id="image5"> + <object class="GtkImage" id="image7"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="pixbuf">svtools/res/list_add.png</property> - </object> - <object class="GtkImage" id="image6"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="pixbuf">extensions/res/buttonminus.png</property> + <property name="pixbuf">sfx2/res/actionaction013.png</property> </object> <object class="GtkBox" id="MenuAssignPage"> <property name="visible">True</property> @@ -220,32 +243,23 @@ </packing> </child> <child> - <object class="GtkButton" id="plusbtn"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="halign">end</property> - <property name="margin_left">5</property> - <property name="image">image5</property> - <property name="always_show_image">True</property> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">0</property> - </packing> - </child> - <child> - <object class="GtkButton" id="minusbtn"> + <object class="GtkButton" id="gearbtn:gearmenu"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="halign">end</property> <property name="margin_left">1</property> - <property name="image">image6</property> + <property name="image">image7</property> <property name="always_show_image">True</property> + <child internal-child="accessible"> + <object class="AtkObject" id="gearbtn:gearmenu-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="menuassignpage|gearbtn">Gear Menu</property> + <property name="AtkObject::accessible-description" translatable="yes" context="menuassignpage|gearbtn">Contains commands to modify or delete the selected toolbar or the top level menu, and the command to add new toolbars or top level menus.</property> + </object> + </child> </object> <packing> - <property name="left_attach">2</property> + <property name="left_attach">1</property> <property name="top_attach">0</property> </packing> </child> @@ -595,8 +609,7 @@ <widgets> <widget name="commandcategorylist"/> <widget name="toplevellist"/> - <widget name="plusbtn"/> - <widget name="minusbtn"/> + <widget name="gearbtn:gearmenu"/> <widget name="searchEntry"/> <widget name="savein"/> <widget name="functionbtn"/> |