Changeset 205
- Timestamp:
- 20.07.2008 20:29:19 (6 months ago)
- Files:
-
- trunk/utils/pycagenconf (modified) (5 diffs)
- trunk/utils/pycarepl (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/utils/pycagenconf
r204 r205 173 173 self.main_vars = dict() 174 174 175 self.table = gtk.Table(rows=4, columns=2)175 table = gtk.Table(rows=4, columns=2) 176 176 for i, title in enumerate(('config path', 'PycaWM instance name', 177 177 'number of desktops', 'display name')): 178 178 entry_label = make_label_with_right_alignment(title) 179 self.table.attach(entry_label, 0, 1, i, i + 1,180 xoptions=gtk.SHRINK|gtk.FILL)179 table.attach(entry_label, 0, 1, i, i + 1, 180 xoptions=gtk.SHRINK|gtk.FILL) 181 181 entries = (('config_path', '~/.config/PycaWM/config.py'), 182 182 ('wm_name', 'pika'), … … 189 189 entry.set_text(entry_text) 190 190 self.main_vars[entry_name] = entry.get_text 191 self.table.attach(entry, 1, 2, i, i + 1)192 self.frame_vbox.pack_start( self.table, expand=False)191 table.attach(entry, 1, 2, i, i + 1) 192 self.frame_vbox.pack_start(table, expand=False) 193 193 194 194 def generate_vars(self, gen_vars): … … 301 301 302 302 def __init__(self): 303 self.table = gtk.Table(rows=2, columns=2) 304 self.focuses_store = gtk.ListStore(object,) 303 table = gtk.Table(rows=2, columns=3) 304 for i, title in enumerate(('default focus', 'default placements', 305 'wallpaper path')): 306 entry_label = make_label_with_right_alignment(title) 307 table.attach(entry_label, 0, 1, i, i + 1, 308 xoptions=gtk.SHRINK|gtk.FILL) 309 310 self.focuses = gtk.combo_box_new_text() 305 311 for focus in find_default_focuses(): 306 self.focuses_store.append((focus,)) 307 self.focuses = gtk.ComboBox(self.focuses_store) 312 self.focuses.append_text(repr(focus.__name__,)) 313 self.focuses.set_active(0) 314 table.attach(self.focuses, 1, 2, 0, 1) 315 316 placements_vbox = gtk.VBox(False, 0) 317 placements_hbox = gtk.HBox(False, 0) 318 self.available_placements = gtk.combo_box_new_text() 319 for placement in find_default_placements(): 320 self.available_placements.append_text(repr(placement.__name__,)) 321 self.available_placements.set_active(0) 322 add_button = gtk.Button('add placement') 323 placements_hbox.add(self.available_placements) 324 placements_hbox.add(add_button) 325 self.placements_store = gtk.ListStore(str,) 326 placements_treeview = gtk.TreeView(self.placements_store) 308 327 cell = gtk.CellRendererText() 309 self.focuses.pack_start(cell, True) 310 self.focuses.set_cell_data_func(cell, self.show_repr_obj_name) 311 self.focuses.set_active(0) 312 for i, title in enumerate(('default focus', 'wallpaper path')): 313 entry_label = make_label_with_right_alignment(title) 314 self.table.attach(entry_label, 0, 1, i, i + 1, 315 xoptions=gtk.SHRINK|gtk.FILL) 316 self.table.attach(self.focuses, 1, 2, 0, 1) 328 column = gtk.TreeViewColumn() 329 column.pack_start(cell, True) 330 column.add_attribute(cell, 'text', 0) 331 placements_treeview.append_column(column) 332 placements_treeview.set_headers_visible(False) 333 placements_treeview.set_reorderable(True) 334 remove_button = gtk.Button('remove placement') 335 remove_button.set_sensitive(False) 336 add_button.connect('clicked', self.add_placement, remove_button) 337 remove_button.connect('clicked', self.remove_placement, 338 placements_treeview) 339 placements_treeview.get_selection().connect( 340 'changed', self.select_placement, remove_button) 341 placements_vbox.add(placements_hbox) 342 placements_vbox.add(placements_treeview) 343 placements_vbox.add(remove_button) 344 table.attach(placements_vbox, 1, 2, 1, 2) 345 317 346 self.wallpaper_path = gtk.Entry() 318 self.table.attach(self.wallpaper_path, 1, 2, 1, 2) 319 self.frame_vbox.pack_start(self.table, expand=False) 320 321 @staticmethod 322 def show_repr_obj_name(_, cell, store, iter): 323 obj = store.get_value(iter, 0) 324 cell.set_property('text', repr(obj.__name__)) 347 table.attach(self.wallpaper_path, 1, 2, 2, 3) 348 349 self.frame_vbox.pack_start(table, expand=False) 350 351 def add_placement(self, _, remove_button): 352 placement = self.available_placements.get_active_text() 353 active = self.available_placements.get_active() 354 if placement is None or active < 0: 355 return 356 357 self.placements_store.append([placement]) 358 self.available_placements.remove_text(active) 359 self.available_placements.set_active(0) 360 361 def remove_placement(self, remove_button, treeview): 362 _, iter = treeview.get_selection().get_selected() 363 if iter is None: 364 return 365 366 placement = self.placements_store[iter][0] 367 self.placements_store.remove(iter) 368 self.available_placements.append_text(placement) 369 self.available_placements.set_active(0) 370 371 def select_placement(self, selection, remove_button): 372 _, iter = selection.get_selected() 373 remove_button.set_sensitive(iter is not None) 325 374 326 375 def generate_vars(self, gen_vars): 327 active = self.focuses.get_active() 328 if active < 0: 329 return 330 331 gen_vars['focus'] = repr(self.focuses_store[active][0].__name__) 376 focus = self.focuses.get_active_text() 377 if focus is None: 378 return 379 380 gen_vars['focus'] = focus 381 gen_vars['placements'] = [eval(row[0]) for row in self.placements_store] 332 382 gen_vars['wallpaper_path'] = self.wallpaper_path.get_text() 333 383 334 384 def generate_code(self, gen_code): 335 385 gen_code[Locations.misc].append('%(wm_name)s.set_focus(%(focus)s)') 386 if self.placements_store.get_iter_first() is not None: 387 gen_code[Locations.misc].append( 388 '%(wm_name)s.set_placements(%(placements)s)') 336 389 if self.wallpaper_path.get_text(): 337 390 gen_code[Locations.misc].append( … … 428 481 gtk.Label(str='Variables that can be used are:'), 429 482 expand=False) 430 self. treestore = gtk.TreeStore(str, str)431 self.treeview = gtk.TreeView(self. treestore)483 self.store = gtk.ListStore(str, str) 484 self.treeview = gtk.TreeView(self.store) 432 485 cell = gtk.CellRendererText() 433 for i, title in enumerate( ['variable', 'value']):486 for i, title in enumerate(('variable', 'value')): 434 487 column = gtk.TreeViewColumn(title) 435 488 column.pack_start(cell, True) … … 490 543 def display_vars(self, _): 491 544 dummy_vars = dict() 492 self. treestore.clear()545 self.store.clear() 493 546 for page in BasePage.pages: 494 547 page.generate_vars(dummy_vars) 495 548 for var, val in sorted(dummy_vars.iteritems()): 496 self. treestore.append(None,[var, val])549 self.store.append([var, val]) 497 550 498 551 def generate_code(self, gen_code): trunk/utils/pycarepl
r194 r205 38 38 from pycawm.basedirspec import load_first_config, save_config_path 39 39 40 SOCK_NAME_START = '/tmp/pycawm-'41 40 HISTORY_FILE = 'pycarepl_history' 42 41 HISTORY_LENGTH = 50 42 SOCK_NAME_START = '/tmp/pycawm-' 43 SOCK_NAME_RE = re_compile(SOCK_NAME_START + '([0-9]+)-(.*)') 43 44 44 45 class PycaREPL(object): … … 243 244 244 245 def parse_socket_name(sock_name): 245 infos_re = re_compile(SOCK_NAME_START + '([0-9]+)-(.*)') 246 infos = infos_re.match(sock_name) 246 infos = SOCK_NAME_RE.match(sock_name) 247 247 if infos is not None: 248 248 return (int(infos.group(1)), infos.group(2))
