from gi.repository import Gtk from gi.repository import Gdk import gettext _ = lambda a : gettext.dgettext("ibus-hangul", a) class KeyCaptureDialog (): def __init__ (self, title, parent): self.__key_str = '' self.__dialog = Gtk.MessageDialog(parent, Gtk.DialogFlags.MODAL, Gtk.MessageType.INFO, Gtk.ButtonsType.OK_CANCEL, "") self.__dialog.set_markup(" ") self.__dialog.format_secondary_markup(" ") self.__dialog.connect("key-press-event", self.on_keypress, None) def destroy(self): self.__dialog.destroy() def run(self): return self.__dialog.run() def set_markup(self, text): self.__dialog.set_markup(text) def get_key_string(self): return self.__key_str def on_keypress(self, widget, event, data = None): self.__key_str = "" if event.state & Gdk.ModifierType.CONTROL_MASK : self.__key_str += "Control+" if event.state & Gdk.ModifierType.MOD1_MASK : self.__key_str += "Alt+" if event.state & Gdk.ModifierType.SHIFT_MASK : self.__key_str += "Shift+" self.__key_str += Gdk.keyval_name(event.keyval) self.__dialog.format_secondary_markup('%s' % self.__key_str)