Skip to content

Commit

Permalink
Add Support for enable/disable Hotkey, add Hotkey preferences
Browse files Browse the repository at this point in the history
  • Loading branch information
rezzafr33 committed Oct 12, 2013
1 parent e602a20 commit 5eb7e74
Showing 1 changed file with 52 additions and 11 deletions.
63 changes: 52 additions & 11 deletions Screenkey/screenkey.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import glib
import pango
import pickle
import keybinder
from threading import Timer

from Screenkey import APP_NAME, APP_DESC, APP_URL, VERSION, AUTHOR
Expand Down Expand Up @@ -56,6 +57,8 @@ class Screenkey(gtk.Window):
STATE_FILE = os.path.join(glib.get_user_cache_dir(),
'screenkey.dat')

_disabled = False

def __init__(self, logger, nodetach):
gtk.Window.__init__(self)

Expand All @@ -69,6 +72,7 @@ def __init__(self, logger, nodetach):
'position': POS_BOTTOM,
'size': SIZE_MEDIUM,
'mode': MODE_NORMAL,
'hotkey': '<Ctrl>F1',
}

if not nodetach:
Expand Down Expand Up @@ -107,7 +111,6 @@ def __init__(self, logger, nodetach):
mode=self.options['mode'])
self.listenkbd.start()


menu = gtk.Menu()

show_item = gtk.CheckMenuItem(_("Show keys"))
Expand Down Expand Up @@ -156,8 +159,8 @@ def __init__(self, logger, nodetach):
self.on_statusicon_popup, menu)
self.logger.debug("Using StatusIcon.")


self.connect("delete-event", self.quit)
keybinder.bind(self.options['hotkey'], self.hotkey_cb, show_item)

def quit(self, widget, data=None):
self.listenkbd.stop()
Expand Down Expand Up @@ -230,17 +233,22 @@ def on_statusicon_popup(self, widget, button, timestamp, data=None):
3, timestamp, widget)

def on_label_change(self, widget, data=None):
if not self.get_property('visible'):
if not self._disabled:
if not self.get_property('visible'):
gtk.gdk.threads_enter()
self.set_xy_position(self.options['position'])
self.stick()
self.show()
gtk.gdk.threads_leave()
if self.timer:
self.timer.cancel()
self.timer = Timer(self.options['timeout'], self.on_timeout)
self.timer.start()
else:
gtk.gdk.threads_enter()
self.set_xy_position(self.options['position'])
self.stick()
self.show()
self.hide()
self.label.set_text("")
gtk.gdk.threads_leave()
if self.timer:
self.timer.cancel()

self.timer = Timer(self.options['timeout'], self.on_timeout)
self.timer.start()

def on_timeout(self):
gtk.gdk.threads_enter()
Expand All @@ -256,13 +264,24 @@ def on_change_mode(self, mode):

def on_show_keys(self, widget, data=None):
if widget.get_active():
self._disabled = False
self.logger.debug("Screenkey enabled.")
self.listenkbd = ListenKbd(self.label, logger=self.logger,
mode=self.options['mode'])
self.listenkbd.start()
else:
self.logger.debug("Screenkey disabled.")
self._disabled = True
self.listenkbd.stop()

def hotkey_cb(self, widget, data=None):
if widget.get_active():
self.logger.debug("Hotkey Pressed: %s." % self.options['hotkey'])
self._disabled = True
widget.set_active(False)
else:
self._disabled = False
widget.set_active(True)

def on_preferences_dialog(self, widget, data=None):
prefs = gtk.Dialog(APP_NAME, None,
Expand Down Expand Up @@ -294,6 +313,10 @@ def on_cbox_changed(widget, data=None):
self.options[name] = index
self.logger.debug("Window position changed.")

def on_entry_hotkey_changed(widget, data=None):
self.options['hotkey'] = widget.get_text()
self.logger.debug("Hotkey value Changed")

frm_main = gtk.Frame(_("Preferences"))
frm_main.set_border_width(6)
vbox_main = gtk.VBox()
Expand Down Expand Up @@ -379,9 +402,27 @@ def on_cbox_changed(widget, data=None):
fill=False, padding=4)
frm_kbd.add(hbox_kbd)

frm_hotkey = gtk.Frame(_("<b>Hot Keys</b>"))
frm_hotkey.set_border_width(4)
frm_hotkey.get_label_widget().set_use_markup(True)
frm_hotkey.set_shadow_type(gtk.SHADOW_NONE)
hbox_hotkey = gtk.HBox()
lbl_hotkey = gtk.Label(_("Shortcut"))
entry_hotkey = gtk.Entry()
entry_hotkey.set_text(self.options['hotkey'])
entry_hotkey.set_width_chars(10)
entry_hotkey.connect("changed", on_entry_hotkey_changed)
hbox_hotkey.pack_start(lbl_hotkey, expand=False,
fill=False, padding=6)
hbox_hotkey.pack_start(entry_hotkey, expand=False,
fill=False, padding=4)
frm_hotkey.add(hbox_hotkey)


vbox_main.pack_start(frm_time, False, False, 6)
vbox_main.pack_start(frm_aspect, False, False, 6)
vbox_main.pack_start(frm_kbd, False, False, 6)
vbox_main.pack_start(frm_hotkey, False, False, 6)
frm_main.add(vbox_main)

prefs.vbox.pack_start(frm_main)
Expand Down

0 comments on commit 5eb7e74

Please sign in to comment.