From a3122df673249b0f486c3b6f9909a9449a6f2b8b Mon Sep 17 00:00:00 2001 From: DaveSch-gramps Date: Tue, 7 Mar 2023 16:29:57 -0500 Subject: [PATCH] Add Preferences and Plugin Manager toolbar buttons (#1139) Add configurable Plugin Manager and Preferences buttons to the toolbar. Make the Tools, Reports, Clipboard buttons on the toolbar configurable. --- gramps/gen/config.py | 5 + gramps/gui/configure.py | 46 ++++ gramps/gui/displaystate.py | 48 ++++ gramps/gui/grampsgui.py | 39 --- gramps/gui/viewmanager.py | 1 + gramps/plugins/view/mediaview.py | 6 +- .../16x16/actions/gramps-plugin-manager.png | Bin 0 -> 831 bytes .../16x16/actions/gramps-preferences.png | Bin 0 -> 985 bytes .../22x22/actions/gramps-plugin-manager.png | Bin 0 -> 1217 bytes .../22x22/actions/gramps-preferences.png | Bin 0 -> 1528 bytes .../24x24/actions/gramps-plugin-manager.png | Bin 0 -> 1275 bytes .../24x24/actions/gramps-preferences.png | Bin 0 -> 1569 bytes .../48x48/actions/gramps-plugin-manager.png | Bin 0 -> 3320 bytes .../48x48/actions/gramps-preferences.png | Bin 0 -> 4144 bytes .../actions/gramps-plugin-manager.svg | 150 +++++++++++ .../scalable/actions/gramps-preferences.svg | 247 ++++++++++++++++++ 16 files changed, 502 insertions(+), 40 deletions(-) create mode 100644 images/hicolor/16x16/actions/gramps-plugin-manager.png create mode 100644 images/hicolor/16x16/actions/gramps-preferences.png create mode 100644 images/hicolor/22x22/actions/gramps-plugin-manager.png create mode 100644 images/hicolor/22x22/actions/gramps-preferences.png create mode 100644 images/hicolor/24x24/actions/gramps-plugin-manager.png create mode 100644 images/hicolor/24x24/actions/gramps-preferences.png create mode 100644 images/hicolor/48x48/actions/gramps-plugin-manager.png create mode 100644 images/hicolor/48x48/actions/gramps-preferences.png create mode 100644 images/hicolor/scalable/actions/gramps-plugin-manager.svg create mode 100644 images/hicolor/scalable/actions/gramps-preferences.svg diff --git a/gramps/gen/config.py b/gramps/gen/config.py index 6f38c5036..3fd1a98f8 100644 --- a/gramps/gen/config.py +++ b/gramps/gen/config.py @@ -223,6 +223,11 @@ register('interface.statusbar', 1) register('interface.toolbar-on', True) register('interface.toolbar-text', False) register('interface.hide-lds', False) +register('interface.toolbar-clipboard', True) +register('interface.toolbar-plugin', True) +register('interface.toolbar-preference', True) +register('interface.toolbar-reports', True) +register('interface.toolbar-tools', True) register('interface.view', True) register('interface.surname-box-height', 150) register('interface.treemodel-cache-size', 1000) diff --git a/gramps/gui/configure.py b/gramps/gui/configure.py index debbc73ae..ea94f1774 100644 --- a/gramps/gui/configure.py +++ b/gramps/gui/configure.py @@ -1163,6 +1163,12 @@ class GrampsPreferences(ConfigureDialog): """ self.uistate.emit('grampletbar-close-changed') + def cb_toolbar_changed(self, obj): + """ + Called when the toolbar is changed. + """ + self.uistate.emit('toolbar-changed') + def add_data_panel(self, configdialog): """ Config tab with user Appearance and format settings. @@ -1618,6 +1624,46 @@ class GrampsPreferences(ConfigureDialog): "(People, Families, Events...).\n" "Requires Gramps restart to apply.")) + row += 1 + # Show Tools Icon: + self.add_checkbox( + grid, _("Show Clipboard icon on toolbar"), + row, 'interface.toolbar-clipboard', start=1, stop=3, + tooltip=_("Show or hide the Clipboard icon on the toolbar."), + extra_callback=self.cb_toolbar_changed) + + row += 1 + # Show Tools Icon: + self.add_checkbox( + grid, _("Show Reports icon on toolbar"), + row, 'interface.toolbar-reports', start=1, stop=3, + tooltip=_("Show or hide the Reports icon on the toolbar."), + extra_callback=self.cb_toolbar_changed) + + row += 1 + # Show Tools Icon: + self.add_checkbox( + grid, _("Show Tools icon on toolbar"), + row, 'interface.toolbar-tools', start=1, stop=3, + tooltip=_("Show or hide the Tools icon on the toolbar."), + extra_callback=self.cb_toolbar_changed) + + row += 1 + # Show Plugins Icon: + self.add_checkbox( + grid, _("Show Plugins icon on toolbar"), + row, 'interface.toolbar-plugin', start=1, stop=3, + tooltip=_("Show or hide the Plugins icon on the toolbar."), + extra_callback=self.cb_toolbar_changed) + + row += 1 + # Show Preferences icon: + self.add_checkbox( + grid, _("Show Preferences icon on toolbar"), + row, 'interface.toolbar-preference', start=1, stop=3, + tooltip=_("Show or hide the Preferences icon on the toolbar."), + extra_callback=self.cb_toolbar_changed) + row += 1 # Gramplet bar close buttons: self.add_checkbox( diff --git a/gramps/gui/displaystate.py b/gramps/gui/displaystate.py index 9be76ba42..a19d4dcaf 100644 --- a/gramps/gui/displaystate.py +++ b/gramps/gui/displaystate.py @@ -382,6 +382,43 @@ class WarnHandler(RotateHandler): top.run() top.destroy() +TOOL_UI = ''' + + %s + %s + %s + %s + True + + + False + + +''' + +TOOLS = { +'clipboard': ('edit-paste', + 'win.Clipboard', + _('Open the Clipboard dialog'), + _('Clip_board')), +'reports': ('gramps-reports', + 'win.Reports', + _('Open the reports dialog'), + _('Reports')), +'tools': ('gramps-tools', + 'win.Tools', + _('Open the tools dialog'), + _('Tools')), +'plugin': ('gramps-plugin-manager', + 'win.PluginStatus', + _('Open Plugin Manager'), + _('Plugins')), +'preference': ('gramps-preferences', + 'app.preferences', + _('Open Preferences'), + _('Preferences')), +} + class DisplayState(Callback): __signals__ = { @@ -393,6 +430,7 @@ class DisplayState(Callback): 'update-available' : (list, ), 'autobackup' : None, 'font-changed' : None, + 'toolbar-changed' : None, } #nav_type to message @@ -446,6 +484,7 @@ class DisplayState(Callback): # This call has been moved one level up, # but this connection is still made! # self.dbstate.connect('database-changed', self.db_changed) + self.connect('toolbar-changed', self.set_toolbar) if DEV_VERSION or VERSION_QUALIFIER: ver_btn = status.get_version_btn() @@ -457,6 +496,15 @@ class DisplayState(Callback): ver_btn.connect('clicked', self.__develop_warn, msg) ver_btn.show() + def set_toolbar(self): + ui = '\n' + for key in TOOLS.keys(): + if config.get('interface.toolbar-' + key): + ui += TOOL_UI % TOOLS[key] + ui += '' + self.uimanager.add_ui_from_string([ui]) + self.uimanager.update_menu() + def set_backup_timer(self): """ Set the backup timer. diff --git a/gramps/gui/grampsgui.py b/gramps/gui/grampsgui.py index c7f65110b..b5ee1b523 100644 --- a/gramps/gui/grampsgui.py +++ b/gramps/gui/grampsgui.py @@ -343,19 +343,6 @@ UIDEFAULT = ( - - - edit-paste - win.Clipboard - ''' - '''Open the Clipboard dialog - Clip_board - True - - - False - - @@ -379,32 +366,6 @@ UIDEFAULT = ( - - - gramps-reports - win.Reports - ''' - '''Open the reports dialog - _Reports - True - - - False - - - - - gramps-tools - win.Tools - ''' - '''Open the tools dialog - _Tools - True - - - False - - diff --git a/gramps/gui/viewmanager.py b/gramps/gui/viewmanager.py index 218989975..5fe551964 100644 --- a/gramps/gui/viewmanager.py +++ b/gramps/gui/viewmanager.py @@ -210,6 +210,7 @@ class ViewManager(CLIManager): # Set autobackup self.uistate.connect('autobackup', self.autobackup) self.uistate.set_backup_timer() + self.uistate.set_toolbar() def check_for_updates(self): """ diff --git a/gramps/plugins/view/mediaview.py b/gramps/plugins/view/mediaview.py index 7744ef72b..fa753ba66 100644 --- a/gramps/plugins/view/mediaview.py +++ b/gramps/plugins/view/mediaview.py @@ -383,7 +383,7 @@ class MediaView(ListView): ''' % (ADD_MSG, EDIT_MSG, DEL_MSG, MERGE_MSG), ''' - + gramps-viewmedia @@ -443,6 +443,10 @@ class MediaView(ListView): +
+ + +
''' % _('_Edit...', 'action') # to use sgettext() ] diff --git a/images/hicolor/16x16/actions/gramps-plugin-manager.png b/images/hicolor/16x16/actions/gramps-plugin-manager.png new file mode 100644 index 0000000000000000000000000000000000000000..825378069779185c76d04b89a9ed903683cff6dc GIT binary patch literal 831 zcmV-F1Hk-=P)pH@kvBMR5*=wl1*q_Wf+Ce`~BRTxs#bm+Nm*_u}NCQpGy5nZM!Hg zL@K%vDu`~nC~CS36kOYF(T!`DE)@hp5bHw3RnZ_yY5hr>n8dczPG>T6=l*>6e&6@H zsDW{j7tZdShxfoC?0GtmP(lVk|pv0#rX*~PZ<)?!upE$8po18ga z_~DcYvNuMw{jBqr1nZ3R>Q!s;lO$ax>2T+t2AB}IMpLOMQXhPF?$GqXsg+jLKKa|`gZ0?lThswlTJ|xreOOn30pP!~N(9gp zv1cInhSb*R+VQk|>)jyIGug!86^8<`8N#>}Acoj0$$)@%%G7_jyEXa9VYF-h`o^WPtrc2oZru0zwc! z%rgj(AU8+JXz|r6S`D*uTei-4s#L;-YS;)}fpvx_A$<)3q=j}9G_@XZ^^PJ9kFv(X z&8bknD788lYIQ?4-$5*Qanoe>noIrnBJ}ej@JC6KP-T5P?aCEo!Ix~sfV6+X3e$k} z^8nSo6JM#-iztEOI+lvxPrV#2%+^HC01Fndxl6vd)cFM|?CT#svT)#-ut88E9aK0s z)~6;PoAN5;jx-bodaL2(h7ckY1*_^5jwOV9z1#VbYAfuKKwOaLY*cRaHq!q1lr@0K z))^e0Zp*eJsR7`|)#8uh0YM{{^NEYphUXro8|F002ov JPDHLkV1hHBo|^yw literal 0 HcmV?d00001 diff --git a/images/hicolor/16x16/actions/gramps-preferences.png b/images/hicolor/16x16/actions/gramps-preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..521a203b709c0a471ec331d72768fc627e8a3549 GIT binary patch literal 985 zcmV;~119{5P)pIi%CR5R5*=wQ$c7PRRDc|{{J(7W@k4$ncYpYNxDh8!4Pa4TAI`f zih5G)L39A`!4$KySM|H1RGynk2?8Kdw~$!%?pq{ly9_(viD{0BbvfSfvY zHb}!>TfSJ>9y_;EG|c9MP{NNfMjcYG_5rD-7hdl-g`iP8b$!MrNWp=VD9fB&ggV(+~7$?;?|@pw}>^h`k4 z&BC68TE*EZ+xd^z)-xA*t<1W5lP|^FJ4S@iOij=Pm;4V~qS2d&lesY#Zf+Xh*WLB1 z?-Rwc9I|ISC>KljIQJ*NJO9Bp0Gv7V#m@@!-)f76%u=yNBSvh<3`dUmb>3A&moT@0A%o$|H8I!2SDAzPqmKc*7Zq@ZQA=Ii{&Gqc>yLR>Jbd>=B zrO-4XA5~-?vaH;E-K)E%(VT1!8XBb%EXykH=67yaD_*4~8Xb@+O(=>k0PIl!Xlf#^ zszt2b-Q4=+%TwR~Iy*U4b*pxwvoqOfG^CkpGe3Ow&H2y&yfgPp-KRIVa$6Utr^i+@ znM{KLKsueSr_=V8jt=Mc#>PAY5GXn|HaIZ&6l2_2TE2T_ZZ5q5pfvNx%eYlxMTnZveIccqkOSf8Y5puvBfsB(pH#00000NkvXX Hu0mjfG04g! literal 0 HcmV?d00001 diff --git a/images/hicolor/22x22/actions/gramps-plugin-manager.png b/images/hicolor/22x22/actions/gramps-plugin-manager.png new file mode 100644 index 0000000000000000000000000000000000000000..1e21c9e2c1936e7ddb04e56790b16ada8a62f1a9 GIT binary patch literal 1217 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

%Sxs7=ka(ue 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 + + + + + + + image/svg+xml + + + + + + + + + diff --git a/images/hicolor/scalable/actions/gramps-preferences.svg b/images/hicolor/scalable/actions/gramps-preferences.svg new file mode 100644 index 000000000..9d767742d --- /dev/null +++ b/images/hicolor/scalable/actions/gramps-preferences.svg @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + System Applications + + + Jakub Steiner + + + http://jimmac.musichall.cz/ + + + system + applications + group + category + admin + root + + + + + + + + + + + + + + + + + + + + + +