Changeset 107
- Timestamp:
- 09/30/08 01:10:35 (4 years ago)
- Location:
- trunk/chavier
- Files:
-
- 2 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/chavier/app.py
r104 r107 25 25 SCATTER_TYPE) = range(len(CHART_TYPES)) 26 26 27 OPTIONS_TYPES = dict( 28 axis=dict( 29 lineWidth=float, 30 lineColor=str, 31 tickSize=float, 32 labelColor=str, 33 labelFont=str, 34 labelFontSize=int, 35 labelWidth=float, 36 x=dict( 37 hide=bool, 38 ticks=list, 39 tickCount=int, 40 tickPrecision=int, 41 range=list, 42 rotate=float, 43 label=unicode, 44 ), 45 y=dict( 46 hide=bool, 47 ticks=list, 48 tickCount=int, 49 tickPrecision=int, 50 range=list, 51 rotate=float, 52 label=unicode, 53 ), 54 ), 55 background=dict( 56 hide=bool, 57 baseColor=str, 58 chartColor=str, 59 lineColor=str, 60 lineWidth=float, 61 ), 62 legend=dict( 63 opacity=float, 64 borderColor=str, 65 hide=bool, 66 position=dict( 67 top=int, 68 left=int, 69 bottom=int, 70 right=int, 71 ) 72 ), 73 padding=dict( 74 left=int, 75 right=int, 76 top=int, 77 bottom=int, 78 ), 79 stroke=dict( 80 color=str, 81 hide=bool, 82 shadow=bool, 83 width=int, 84 ), 85 fillOpacity=float, 86 shouldFill=bool, 87 barWidthFillFraction=float, 88 xOriginIsZero=bool, 89 yOriginIsZero=bool, 90 pieRadius=float, 91 colorScheme=str, 92 title=unicode, 93 titleFont=str, 94 titleFontSize=int, 95 ) 96 27 97 def __init__(self): 28 98 self.gui = GUI(self) -
trunk/chavier/gui.py
r105 r107 89 89 'Edit the current point of the current dataset', 90 90 self.edit_point), 91 ('edit_option', gtk.STOCK_EDIT, 'Edit op_tion', None, 92 'Edit the current option', 93 self.edit_option), 91 94 92 95 ('view', None, '_View', None, 'View', None), … … 121 124 <menuitem action="remove_point"/> 122 125 <menuitem action="edit_point"/> 126 <separator /> 127 <menuitem action="edit_option"/> 123 128 </menu> 124 129 <menu action="view"> … … 190 195 191 196 def _options_treeview_creator(self): 192 self.options_store = gtk.TreeStore(str, str )197 self.options_store = gtk.TreeStore(str, str, object) 193 198 options = self.app.get_default_options() 194 self._fill_options_store(options, None )195 196 treeview = gtk.TreeView(self.options_store)199 self._fill_options_store(options, None, self.app.OPTIONS_TYPES) 200 201 self.options_treeview = gtk.TreeView(self.options_store) 197 202 198 203 column1 = gtk.TreeViewColumn('Name', gtk.CellRendererText(), text=0) 199 treeview.append_column(column1)204 self.options_treeview.append_column(column1) 200 205 201 206 column2 = gtk.TreeViewColumn('Value', gtk.CellRendererText(), text=1) 202 treeview.append_column(column2)203 204 treeview.expand_all()207 self.options_treeview.append_column(column2) 208 209 self.options_treeview.expand_all() 205 210 206 211 scrolled_window = gtk.ScrolledWindow() 207 212 scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) 208 scrolled_window.add( treeview)209 treeview.show()213 scrolled_window.add(self.options_treeview) 214 self.options_treeview.show() 210 215 211 216 return scrolled_window 212 217 213 def _fill_options_store(self, options, parent_node ):218 def _fill_options_store(self, options, parent_node, types): 214 219 for name, value in options.items(): 220 value_type = types[name] 215 221 if isinstance(value, dict): 216 current_parent = self.options_store.append(parent_node, (name, None ))217 self._fill_options_store(value, current_parent )222 current_parent = self.options_store.append(parent_node, (name, None, None)) 223 self._fill_options_store(value, current_parent, value_type) 218 224 219 225 else: 226 print value_type 220 227 if value is not None: 221 228 value = str(value) 222 self.options_store.append(parent_node, (name, value ))229 self.options_store.append(parent_node, (name, value, value_type)) 223 230 224 231 def _get_current_dataset_tab(self): … … 252 259 return action.get_current_value() 253 260 261 def _get_options(self, iter): 262 options = {} 263 first_child = self.options_store.iter_children(iter) 264 if first_child is not None: 265 name = self.options_store.get_value(iter, 0) 266 options[name] = self._get_options(first_child) 267 268 iter = self.options_store.iter_next(iter) 269 while iter is not None: 270 name = self.options_store.get_value(iter, 0) 271 options[name] = self._get_options(iter) 272 iter = self.options_store.iter_next(iter) 273 274 return options 275 254 276 # Event and signal handlers 255 277 def delete_event(self, widget, event, data=None): … … 362 384 dialog.destroy() 363 385 386 def edit_option(self, action): 387 selection = self.options_treeview.get_selection() 388 model, selected = selection.get_selected() 389 if selected is None: 390 warning(self.main_window, "You must select the option to edit") 391 return 392 393 name, value, value_type = model.get(selected, 0, 1, 2) 394 parents = [] 395 parent = model.iter_parent(selected) 396 while parent is not None: 397 parents.append(model.get_value(parent, 0)) 398 parent = model.iter_parent(parent) 399 parents.reverse() 400 parents.append(name) 401 label = u'.'.join(parents) 402 403 dialog = OptionDialog(self.main_window, label, value, value_type) 404 response = dialog.run() 405 if response == gtk.RESPONSE_ACCEPT: 406 new_value = dialog.get_value() 407 model.set_value(selected, 1, new_value) 408 self.refresh() 409 dialog.destroy() 410 364 411 def refresh(self, action=None): 365 412 datasets = self._get_datasets() 366 413 if datasets: 367 # options = self._get_options() 414 root = self.options_store.get_iter_first() 415 options = self._get_options(root) 368 416 369 417 chart_type = self._get_chart_type() … … 415 463 buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, 416 464 gtk.STOCK_OK, gtk.RESPONSE_ACCEPT) 417 super(PointDialog, self).__init__(u'Enter a name for the dataset',465 super(PointDialog, self).__init__(u'Enter the point values', 418 466 toplevel_window, flags, buttons) 419 467 … … 443 491 return (float(self.entries[u'x'].get_text()), 444 492 float(self.entries[u'y'].get_text())) 493 494 495 class OptionDialog(gtk.Dialog): 496 def __init__(self, toplevel_window, label, value, value_type): 497 flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT 498 buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, 499 gtk.STOCK_OK, gtk.RESPONSE_ACCEPT) 500 super(OptionDialog, self).__init__(u'Enter the option value', 501 toplevel_window, flags, buttons) 502 503 504 hbox = gtk.HBox(spacing=6) 505 hbox.set_border_width(12) 506 507 label = gtk.Label(label) 508 hbox.pack_start(label, False, False) 509 510 self.entry = gtk.Entry() 511 self.entry.set_text(value) 512 self.entry.set_activates_default(True) 513 hbox.pack_start(self.entry, True, True) 514 515 self.vbox.pack_start(hbox, False, False) 516 517 self.vbox.show_all() 518 519 self.set_default_response(gtk.RESPONSE_ACCEPT) 520 521 def get_value(self): 522 return self.entry.get_text() 445 523 446 524
