Changeset 34f52bf2edf0226b779ae8c1da93df18c630233e

Show
Ignore:
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:
2 modified

Legend:

Unmodified
Added
Removed
  • ChangeLog

    r18ea7d7 r34f52bf  
    112008-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. 
    27 
    38        * src/eggcellrendererkeys/cellrendererkeys.override: Overriding 
  • src/guake.py

    r26344e1 r34f52bf  
    4444import globalhotkeys 
    4545import guake_globals 
     46import cellrendererkeys 
    4647 
    4748pynotify.init('Guake!') 
     
    6566) 
    6667 
     68class KeyEntry(object): 
     69    def __init__(self, keyval, keycode, mask): 
     70        self.keyval = keyval 
     71        self.keycode = keycode 
     72        self.mask = mask 
     73 
    6774class AboutDialog(SimpleGladeApp): 
    6875    def __init__(self): 
     
    107114        # the first position in tree will store the keybinding path in gconf, 
    108115        # 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) 
    110117        treeview = self.get_widget('treeview-keys') 
    111118        treeview.set_model(model) 
     
    122129        treeview.append_column(column) 
    123130 
    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) 
    129139        column.set_property('expand', False) 
    130140        treeview.append_column(column) 
     
    249259        for i in GHOTKEYS: 
    250260            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 
    252268            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) 
    257273 
    258274        giter = model.append(None) 
     
    261277        for i in LHOTKEYS: 
    262278            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 
    264286            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) 
    269291 
    270292        self.get_widget('treeview-keys').expand_all() 
     
    347369        self.guake.set_alpha() 
    348370 
    349     def on_key_edited(self, renderer, path, key, model): 
     371    def on_key_edited(self, renderer, path, keyval, mask, keycode, model): 
    350372        giter = model.get_iter(path) 
    351373        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 
    353381        accel = self.client.get_string(gconf_path) 
    354  
    355382        if gconf_path in [x[0] for x in GHOTKEYS]: 
    356383            # ungrabing global keys 
     
    363390        else: 
    364391            # 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) 
    367395 
    368396        # setting the new value on gconf 
    369397        self.client.set_string(gconf_path, key) 
    370398        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) 
    371408 
    372409    def update_preview_cb(self,file_chooser, preview):