Changeset 34f52bf2edf0226b779ae8c1da93df18c630233e
- Timestamp:
- 06/15/08 22:44:46 (4 years ago)
- Author:
- Lincoln de Sousa <lincoln@…>
- Children:
- a6068db7e023b88f35bcb5c41159c2bcef246390
- Parents:
- 18ea7d7259915b78d46dd59a412d35e63e315e14
- git-committer:
- Lincoln de Sousa <lincoln@…> (06/15/08 22:44:46)
- Message:
-
Using cellrendererkeys to render keybindings instead
the basic treeview.
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r18ea7d7
|
r34f52bf
|
|
| 1 | 1 | 2008-06-15 Lincoln de Sousa <lincoln@minaslivre.org> |
| | 2 | |
| | 3 | * src/guake.py (PrefsDialog): Changed the old way of showing |
| | 4 | keybindings to the way that uses eggcellrendererkeys. |
| | 5 | |
| | 6 | * src/guake.py (KeyEntry): Added to support above change. |
| 2 | 7 | |
| 3 | 8 | * src/eggcellrendererkeys/cellrendererkeys.override: Overriding |
-
|
r26344e1
|
r34f52bf
|
|
| 44 | 44 | import globalhotkeys |
| 45 | 45 | import guake_globals |
| | 46 | import cellrendererkeys |
| 46 | 47 | |
| 47 | 48 | pynotify.init('Guake!') |
| … |
… |
|
| 65 | 66 | ) |
| 66 | 67 | |
| | 68 | class KeyEntry(object): |
| | 69 | def __init__(self, keyval, keycode, mask): |
| | 70 | self.keyval = keyval |
| | 71 | self.keycode = keycode |
| | 72 | self.mask = mask |
| | 73 | |
| 67 | 74 | class AboutDialog(SimpleGladeApp): |
| 68 | 75 | def __init__(self): |
| … |
… |
|
| 107 | 114 | # the first position in tree will store the keybinding path in gconf, |
| 108 | 115 | # and the user doesn't worry with this, lest hide that =D |
| 109 | | model = gtk.TreeStore(str, str, str, bool) |
| | 116 | model = gtk.TreeStore(str, str, object, bool) |
| 110 | 117 | treeview = self.get_widget('treeview-keys') |
| 111 | 118 | treeview.set_model(model) |
| … |
… |
|
| 122 | 129 | treeview.append_column(column) |
| 123 | 130 | |
| 124 | | renderer = gtk.CellRendererText() |
| 125 | | renderer.set_data('column', 1) |
| 126 | | renderer.connect('edited', self.on_key_edited, model) |
| 127 | | column = gtk.TreeViewColumn(_('Shortcut'), renderer, text=2, |
| 128 | | editable=3) |
| | 131 | renderer = cellrendererkeys.CellRendererKeys() |
| | 132 | renderer.set_property('editable', True) |
| | 133 | renderer.set_property('accel-mode', |
| | 134 | cellrendererkeys.CELL_RENDERER_KEYS_MODE_X) |
| | 135 | |
| | 136 | renderer.connect('accel-edited', self.on_key_edited, model) |
| | 137 | column = gtk.TreeViewColumn(_('Shortcut'), renderer) |
| | 138 | column.set_cell_data_func(renderer, self.cell_data_func) |
| 129 | 139 | column.set_property('expand', False) |
| 130 | 140 | treeview.append_column(column) |
| … |
… |
|
| 249 | 259 | for i in GHOTKEYS: |
| 250 | 260 | child = model.append(giter) |
| 251 | | hotkey = self.client.get_string(i[0]) |
| | 261 | accel = self.client.get_string(i[0]) |
| | 262 | if accel: |
| | 263 | params = cellrendererkeys.accelerator_parse_virtual(accel) |
| | 264 | hotkey = KeyEntry(*params) |
| | 265 | else: |
| | 266 | hotkey = KeyEntry(0, 0, 0) |
| | 267 | |
| 252 | 268 | model.set(child, |
| 253 | | 0, i[0], |
| 254 | | 1, i[1], |
| 255 | | 2, hotkey, |
| 256 | | 3, True) |
| | 269 | 0, i[0], |
| | 270 | 1, i[1], |
| | 271 | 2, hotkey, |
| | 272 | 3, True) |
| 257 | 273 | |
| 258 | 274 | giter = model.append(None) |
| … |
… |
|
| 261 | 277 | for i in LHOTKEYS: |
| 262 | 278 | child = model.append(giter) |
| 263 | | hotkey = self.client.get_string(i[0]) |
| | 279 | accel = self.client.get_string(i[0]) |
| | 280 | if accel: |
| | 281 | params = cellrendererkeys.accelerator_parse_virtual(accel) |
| | 282 | hotkey = KeyEntry(*params) |
| | 283 | else: |
| | 284 | hotkey = KeyEntry(0, 0, 0) |
| | 285 | |
| 264 | 286 | model.set(child, |
| 265 | | 0, i[0], |
| 266 | | 1, i[1], |
| 267 | | 2, hotkey, |
| 268 | | 3, True) |
| | 287 | 0, i[0], |
| | 288 | 1, i[1], |
| | 289 | 2, hotkey, |
| | 290 | 3, True) |
| 269 | 291 | |
| 270 | 292 | self.get_widget('treeview-keys').expand_all() |
| … |
… |
|
| 347 | 369 | self.guake.set_alpha() |
| 348 | 370 | |
| 349 | | def on_key_edited(self, renderer, path, key, model): |
| | 371 | def on_key_edited(self, renderer, path, keyval, mask, keycode, model): |
| 350 | 372 | giter = model.get_iter(path) |
| 351 | 373 | gconf_path = model.get_value(giter, 0) |
| 352 | | model.set(giter, 2, key) |
| | 374 | |
| | 375 | hotkey = KeyEntry(keyval, keycode, mask) |
| | 376 | giter = model.get_iter(path) |
| | 377 | model.set_value(giter, 2, hotkey) |
| | 378 | key = cellrendererkeys.accelerator_name(keyval, keycode, mask) |
| | 379 | |
| | 380 | # old key, used only to disconnect current shortcuts |
| 353 | 381 | accel = self.client.get_string(gconf_path) |
| 354 | | |
| 355 | 382 | if gconf_path in [x[0] for x in GHOTKEYS]: |
| 356 | 383 | # ungrabing global keys |
| … |
… |
|
| 363 | 390 | else: |
| 364 | 391 | # ungrabing local keys |
| 365 | | keynum, mask = gtk.accelerator_parse(accel) |
| 366 | | self.guake.accel_group.disconnect_key(keynum, mask) |
| | 392 | if accel: |
| | 393 | keynum, mask = gtk.accelerator_parse(accel) |
| | 394 | self.guake.accel_group.disconnect_key(keynum, mask) |
| 367 | 395 | |
| 368 | 396 | # setting the new value on gconf |
| 369 | 397 | self.client.set_string(gconf_path, key) |
| 370 | 398 | self.guake.load_accelerators() |
| | 399 | |
| | 400 | def cell_data_func(self, column, renderer, model, giter): |
| | 401 | obj = model.get_value(giter, 2) |
| | 402 | if obj: |
| | 403 | renderer.set_property('visible', True) |
| | 404 | renderer.set_accelerator(obj.keyval, obj.keycode, obj.mask) |
| | 405 | else: |
| | 406 | renderer.set_property('visible', False) |
| | 407 | renderer.set_accelerator(0, 0, 0) |
| 371 | 408 | |
| 372 | 409 | def update_preview_cb(self,file_chooser, preview): |