Changeset 1504958463fcadd570c9117ca26b4c4a1aa1d8ad
- Timestamp:
- 06/16/08 21:49:28 (4 years ago)
- Children:
- 316c9b7f0eaaf164ab678550cbab314c7e8fccee
- Parents:
- 95d3ca771a1ce90e9a5ccd7d4b3b36d8e3dcde3c
- git-committer:
- Lincoln de Sousa <lincoln@…> (06/16/08 21:49:28)
- Files:
-
- 2 modified
-
ChangeLog (modified) (1 diff)
-
src/guake.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
r95d3ca7 r1504958 1 2008-06-16 Lincoln de Sousa <lincoln@minaslivre.org> 2 3 * src/guake.py (KeyEntry): Adding __repr__ and __eq__ methods to 4 make it easy and pythonic to compare with other keyentry and to 5 debug. 6 7 * src/guake.py (PrefsDialog.on_key_edited): Adding validation to 8 avoid repeated keybindings and to avoid using simple keys 9 as [a-zA-Z0-9] keys. 10 11 * src/guake.py (PrefsDialog): Adding a way to clear a keybinding 12 with on_key_cleared method. 13 1 14 2008-06-15 Lincoln de Sousa <lincoln@minaslivre.org> 2 15 -
src/guake.py
ra6068db r1504958 72 72 self.mask = mask 73 73 74 def __repr__(self): 75 return u'KeyEntry(%d, %d, %d)' % ( 76 self.keyval, self.keycode, self.mask) 77 78 def __eq__(self, rval): 79 return self.keycode == rval.keycode and \ 80 self.keyval == rval.keyval and \ 81 self.mask == rval.mask 82 74 83 class AboutDialog(SimpleGladeApp): 75 84 def __init__(self): … … 136 145 137 146 renderer.connect('accel-edited', self.on_key_edited, model) 147 renderer.connect('accel-cleared', self.on_key_cleared, model) 148 138 149 column = gtk.TreeViewColumn(_('Shortcut'), renderer) 139 150 column.set_cell_data_func(renderer, self.cell_data_func) … … 374 385 gconf_path = model.get_value(giter, 0) 375 386 387 oldkey = model.get_value(giter, 2) 376 388 hotkey = KeyEntry(keyval, keycode, mask) 389 key = cellrendererkeys.accelerator_name(keyval, keycode, mask) 390 keylabel = cellrendererkeys.accelerator_label(keyval, keycode, mask) 391 392 # we needn't to change anything, the user is trying to set the 393 # same key that is already set. 394 if oldkey == hotkey: 395 return False 396 397 # looking for already used keybindings 398 def each_key(model, path, subiter): 399 keyentry = model.get_value(subiter, 2) 400 if keyentry and keyentry == hotkey: 401 msg = _("The shortcut \"%s\" is already in use.") % keylabel 402 raise ShowableError(_('Error setting keybinding.'), msg, -1) 403 model.foreach(each_key) 404 405 # avoiding problems with common keys 406 if ((mask == 0 and keycode != 0) and ( 407 (keyval >= ord('a') and keyval <= ord('z')) or 408 (keyval >= ord('A') and keyval <= ord('Z')) or 409 (keyval >= ord('0') and keyval <= ord('9')))): 410 parent = self.get_widget('config-window') 411 dialog = gtk.MessageDialog(parent, 412 gtk.DIALOG_MODAL | 413 gtk.DIALOG_DESTROY_WITH_PARENT, 414 gtk.MESSAGE_WARNING, 415 gtk.BUTTONS_OK, 416 _("The shortcut \"%s\" cannot be used " 417 "because it will become impossible to " 418 "type using this key.\n\n" 419 "Please try with a key such as " 420 "Control, Alt or Shift at the same " 421 "time.\n") % key) 422 dialog.run() 423 dialog.destroy() 424 return False 425 377 426 giter = model.get_iter(path) 378 427 model.set_value(giter, 2, hotkey) 379 key = cellrendererkeys.accelerator_name(keyval, keycode, mask)380 428 381 429 # old key, used only to disconnect current shortcuts … … 398 446 self.client.set_string(gconf_path, key) 399 447 self.guake.load_accelerators() 448 449 def on_key_cleared(self, renderer, path, model): 450 giter = model.get_iter(path) 451 gconf_path = model.get_value(giter, 0) 452 model.set_value(giter, 2, KeyEntry(0, 0, 0)) 453 self.client.set_string(gconf_path, 'disabled') 400 454 401 455 def cell_data_func(self, column, renderer, model, giter): … … 437 491 438 492 x, y = int(event.x), int(event.y) 439 path, column, cellx, celly = treeview.get_path_at_pos(x, y) 493 ret = treeview.get_path_at_pos(x, y) 494 if not ret: 495 return False 496 497 path, column, cellx, celly = ret 440 498 if path and len(path) > 1: 441 499 def real_cb():