Add exception handling around keybinder

The keybinder isn't functional in guest sessions.
This commit is contained in:
Clement Lefebvre 2017-06-12 15:44:24 +01:00
parent 0d3702b716
commit 7e19123adc

View File

@ -42,10 +42,9 @@ from execute import *
class MainWindow( object ): class MainWindow( object ):
"""This is the main class for the application""" """This is the main class for the application"""
def __init__( self, toggleButton, settings, keybinder, de ): def __init__( self, toggleButton, settings, de ):
self.settings = settings self.settings = settings
self.keybinder = keybinder
self.path = PATH self.path = PATH
sys.path.append( os.path.join( self.path, "plugins") ) sys.path.append( os.path.join( self.path, "plugins") )
@ -437,7 +436,6 @@ class MenuWin( object ):
self.applet = applet self.applet = applet
self.detect_desktop_environment() self.detect_desktop_environment()
self.settings = Gio.Settings.new("com.linuxmint.mintmenu") self.settings = Gio.Settings.new("com.linuxmint.mintmenu")
self.keybinder = keybinding.GlobalKeyBinding()
self.loadSettings() self.loadSettings()
self.createPanelButton() self.createPanelButton()
@ -451,7 +449,6 @@ class MenuWin( object ):
self.settings.connect( "changed::applet-icon", self.reloadSettings ) self.settings.connect( "changed::applet-icon", self.reloadSettings )
self.settings.connect( "changed::hide-applet-icon", self.reloadSettings ) self.settings.connect( "changed::hide-applet-icon", self.reloadSettings )
self.settings.connect( "changed::applet-icon-size", self.reloadSettings ) self.settings.connect( "changed::applet-icon-size", self.reloadSettings )
self.settings.connect( "changed::hot-key", self.hotkeyChanged )
self.applet.set_flags( MatePanelApplet.AppletFlags.EXPAND_MINOR ) self.applet.set_flags( MatePanelApplet.AppletFlags.EXPAND_MINOR )
self.applet.connect( "button-press-event", self.showMenu ) self.applet.connect( "button-press-event", self.showMenu )
@ -459,7 +456,7 @@ class MenuWin( object ):
self.applet.connect("enter-notify-event", self.enter_notify) self.applet.connect("enter-notify-event", self.enter_notify)
self.applet.connect("leave-notify-event", self.leave_notify) self.applet.connect("leave-notify-event", self.leave_notify)
self.mainwin = MainWindow( self.button_box, self.settings, self.keybinder, self.de ) self.mainwin = MainWindow( self.button_box, self.settings, self.de )
self.mainwin.window.connect( "map-event", self.onWindowMap ) self.mainwin.window.connect( "map-event", self.onWindowMap )
self.mainwin.window.connect( "unmap-event", self.onWindowUnmap ) self.mainwin.window.connect( "unmap-event", self.onWindowUnmap )
self.mainwin.window.connect( "size-allocate", lambda *args: self.positionMenu() ) self.mainwin.window.connect( "size-allocate", lambda *args: self.positionMenu() )
@ -471,7 +468,19 @@ class MenuWin( object ):
if self.mainwin.icon: if self.mainwin.icon:
Gtk.Window.set_default_icon_name( self.mainwin.icon ) Gtk.Window.set_default_icon_name( self.mainwin.icon )
self.bind_hot_key() try:
self.keybinder = keybinding.GlobalKeyBinding()
if self.hotkeyText != "":
self.keybinder.grab( self.hotkeyText )
self.keybinder.connect("activate", self.onBindingPress)
self.keybinder.start()
self.settings.connect( "changed::hot-key", self.hotkeyChanged )
print "Binding to Hot Key: " + self.hotkeyText
except Exception, cause:
self.keybinder = None
print "** WARNING ** - Keybinder Error"
print "Error Report :\n", str(cause)
self.applet.set_can_focus(False) self.applet.set_can_focus(False)
try: try:
@ -485,13 +494,15 @@ class MenuWin( object ):
def onWindowMap( self, *args ): def onWindowMap( self, *args ):
self.applet.get_style_context().set_state( Gtk.StateFlags.SELECTED ) self.applet.get_style_context().set_state( Gtk.StateFlags.SELECTED )
self.button_box.get_style_context().set_state( Gtk.StateFlags.SELECTED ) self.button_box.get_style_context().set_state( Gtk.StateFlags.SELECTED )
self.keybinder.set_focus_window( self.mainwin.window.get_window() ) if self.keybinder is not None:
self.keybinder.set_focus_window( self.mainwin.window.get_window() )
return False return False
def onWindowUnmap( self, *args ): def onWindowUnmap( self, *args ):
self.applet.get_style_context().set_state( Gtk.StateFlags.NORMAL ) self.applet.get_style_context().set_state( Gtk.StateFlags.NORMAL )
self.button_box.get_style_context().set_state( Gtk.StateFlags.NORMAL ) self.button_box.get_style_context().set_state( Gtk.StateFlags.NORMAL )
self.keybinder.set_focus_window() if self.keybinder is not None:
self.keybinder.set_focus_window()
return False return False
def onRealize( self, *args): def onRealize( self, *args):
@ -636,19 +647,6 @@ class MenuWin( object ):
self.do_image(self.buttonIcon, False) self.do_image(self.buttonIcon, False)
self.sizeButton() self.sizeButton()
def bind_hot_key (self):
try:
if self.hotkeyText != "":
self.keybinder.grab( self.hotkeyText )
self.keybinder.connect("activate", self.onBindingPress)
self.keybinder.start()
# Binding menu to hotkey
print "Binding to Hot Key: " + self.hotkeyText
except Exception, cause:
print "** WARNING ** - Menu Hotkey Binding Error"
print "Error Report :\n", str(cause)
def hotkeyChanged (self, schema, key): def hotkeyChanged (self, schema, key):
self.hotkeyText = self.settings.get_string( "hot-key" ) self.hotkeyText = self.settings.get_string( "hot-key" )
self.keybinder.rebind(self.hotkeyText) self.keybinder.rebind(self.hotkeyText)