# HG changeset patch # User Wagner Bruna <wbr...@softwareexpress.com.br> # Date 1296164423 7200 # Branch stable # Node ID 1320387a151d4a5ba396f2571676659dabfc165b # Parent b5c83a98e9f63a704839ce2bd6c0719ff97e6c6c cmenu: config option for menu behavior outside repositories
Makes the behavior introduced by 117befc5cb56 (hide the context menu outside repositories) configurable. Refs #1698 diff --git a/tortoisehg/hgtk/shellconf.py b/tortoisehg/hgtk/shellconf.py --- a/tortoisehg/hgtk/shellconf.py +++ b/tortoisehg/hgtk/shellconf.py @@ -108,6 +108,18 @@ class ShellConfigWindow(gtk.Window): subbutton.connect('clicked', self.sub_clicked) mbbox.add(subbutton) + # menu behavior group + mbframe = gtk.Frame(_('Menu Behavior')) + mbframe.set_border_width(2) + cmenuvbox.pack_start(mbframe, True, True, 2) + + mbbox = gtk.VBox() + mbframe.add(mbbox) + hbox = gtk.HBox() + mbbox.pack_start(hbox, False, False, 2) + self.hide_context_menu = gtk.CheckButton(_('Hide context menu outside repositories')) + hbox.pack_start(self.hide_context_menu, False, False, 2) + # Icons page iconsframe = self.add_page(notebook, _('Icons')) iconsvbox = gtk.VBox() @@ -194,6 +206,9 @@ class ShellConfigWindow(gtk.Window): # Tooltips tips = gtklib.Tooltips() + tooltip = _('Do not show menu items on unversioned folders' + ' (use shift + click to override)') + tips.set_tip(self.hide_context_menu, tooltip) tooltip = _('Show overlay icons in Mercurial repositories') tips.set_tip(self.ovenable, tooltip) self.ovenable.connect('toggled', self.ovenable_toggled) @@ -258,6 +273,7 @@ class ShellConfigWindow(gtk.Window): return frame def load_shell_configs(self): + hide_context_menu = False overlayenable = True localdisks = False promoteditems = 'commit' @@ -273,6 +289,8 @@ class ShellConfigWindow(gtk.Window): from _winreg import HKEY_CURRENT_USER, OpenKey, QueryValueEx hkey = OpenKey(HKEY_CURRENT_USER, r'Software\TortoiseHg') t = ('1', 'True') + try: hide_context_menu = QueryValueEx(hkey, 'HideMenuOutsideRepo')[0] in t + except EnvironmentError: pass try: overlayenable = QueryValueEx(hkey, 'EnableOverlays')[0] in t except EnvironmentError: pass try: localdisks = QueryValueEx(hkey, 'LocalDisksOnly')[0] in t @@ -300,6 +318,7 @@ class ShellConfigWindow(gtk.Window): except (ImportError, WindowsError): pass + self.hide_context_menu.set_active(hide_context_menu) self.ovenable.set_active(overlayenable) self.lclonly.set_active(localdisks) self.lclonly.set_sensitive(overlayenable) @@ -325,6 +344,7 @@ class ShellConfigWindow(gtk.Window): self.topmmodel.set_sort_column_id(1, gtk.SORT_ASCENDING) def store_shell_configs(self): + hide_context_menu = self.hide_context_menu.get_active() and '1' or '0' overlayenable = self.ovenable.get_active() and '1' or '0' localdisks = self.lclonly.get_active() and '1' or '0' show_taskbaricon = self.show_taskbaricon.get_active() and '1' or '0' @@ -341,6 +361,7 @@ class ShellConfigWindow(gtk.Window): try: from _winreg import HKEY_CURRENT_USER, CreateKey, SetValueEx, REG_SZ, REG_DWORD hkey = CreateKey(HKEY_CURRENT_USER, r"Software\TortoiseHg") + SetValueEx(hkey, 'HideMenuOutsideRepo', 0, REG_SZ, hide_context_menu) SetValueEx(hkey, 'EnableOverlays', 0, REG_SZ, overlayenable) SetValueEx(hkey, 'LocalDisksOnly', 0, REG_SZ, localdisks) SetValueEx(hkey, 'ShowTaskbarIcon', 0, REG_SZ, show_taskbaricon) diff --git a/win32/shellext/CShellExtCMenu.cpp b/win32/shellext/CShellExtCMenu.cpp --- a/win32/shellext/CShellExtCMenu.cpp +++ b/win32/shellext/CShellExtCMenu.cpp @@ -472,8 +472,12 @@ CShellExtCMenu::QueryContextMenu( /* shift key is not down */ if (!isHgrepo) { - /* We are not inside a repo -> don't show thg menu entries */ - return S_OK; + std::string cval; + if (GetRegistryConfig("HideMenuOutsideRepo", cval) != 0 && cval == "1") + { + /* We are not inside a repo -> don't show thg menu entries */ + return S_OK; + } } } ------------------------------------------------------------------------------ Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)! Finally, a world-class log management solution at an even better price-free! Download using promo code Free_Logger_4_Dev2Dev. Offer expires February 28th, so secure your free ArcSight Logger TODAY! http://p.sf.net/sfu/arcsight-sfd2d _______________________________________________ Tortoisehg-develop mailing list Tortoisehg-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop