5 |
import pango |
import pango |
6 |
|
|
7 |
class ObserverTab: |
class ObserverTab: |
8 |
def __init__(self,name,browser): |
def __init__(self,xml,name,browser): |
9 |
|
xml.signal_autoconnect(self); |
10 |
|
|
11 |
|
self.view = xml.get_widget('observerview') |
12 |
|
|
13 |
|
self.activeimg = self.view.render_icon(gtk.STOCK_YES,gtk.ICON_SIZE_MENU) |
14 |
|
|
15 |
|
self.columns = [gtk.gdk.Pixbuf] |
16 |
|
self.titles = ["T"] |
17 |
|
self.store = gtk.TreeStore(*self.columns) |
18 |
|
self.rows = [] |
19 |
|
self.rows.append([self.activeimg]) |
20 |
|
|
21 |
self.name = name |
self.name = name |
22 |
self.browser = browser |
self.browser = browser |
23 |
|
|
24 |
|
|
25 |
|
# create the 'active' pixvuf columns |
26 |
|
_col = gtk.TreeViewColumn() |
27 |
|
_col.set_title(self.titles[0]) |
28 |
|
self.view.append_column(_col); |
29 |
|
_renderer = gtk.CellRendererPixbuf() |
30 |
|
_col.pack_start(_renderer,False) |
31 |
|
_col.add_attribute(_renderer, 'pixbuf', int(0)) |
32 |
|
|
33 |
|
# create the first row |
34 |
|
print "Adding row",self.rows[0],"to store" |
35 |
|
self.store.append(None, self.rows[0]) |
36 |
|
|
37 |
|
self.browser.reporter.reportNote("Created OBSERVER") |
38 |
|
|
39 |
def on_add_click(self,*args): |
def on_add_click(self,*args): |
40 |
print "ADD" |
print "ADD" |
41 |
pass |
pass |
44 |
print "CLEAR" |
print "CLEAR" |
45 |
pass |
pass |
46 |
|
|
47 |
|
def add_instance(self, inst): |
48 |
|
if not inst.getType().isRefinedSolverVar(): |
49 |
|
self.browser.reporter.reportError("Instance is not a refined solver variable: can't 'observe'."); |
50 |
|
return |
51 |
|
|
52 |
|
_colnum = len(self.columns) |
53 |
|
_colname = inst.getName().toString() |
54 |
|
_value = float(inst.getRealValue()) |
55 |
|
_rownum = len(self.rows)-1 |
56 |
|
|
57 |
|
print "COLNUM =",_colnum |
58 |
|
|
59 |
|
print "ADDING TO OBSERVER '"+self.name+"' COLUMN '"+_colname+"', CURRENT VALUE = ",_value |
60 |
|
|
61 |
|
# create new TreeStore, copy of old, plus one columm |
62 |
|
self.columns.append(float) |
63 |
|
self.titles.append(_colname); |
64 |
|
print "NEW COLUMNS WILL BE",str(self.columns) |
65 |
|
_store = gtk.TreeStore(*(self.columns)) |
66 |
|
_currentrow = None |
67 |
|
for _r in self.rows: |
68 |
|
print "OLD ROW DATA:",repr(_r) |
69 |
|
_newrowdata = _r.append(None) |
70 |
|
print "NEW ROW DATA:",repr(_r) |
71 |
|
_currentrow = _store.append(None,_newrowdata) |
72 |
|
|
73 |
|
# add newest data point in bottom-right |
74 |
|
self.rows[_rownum][_colnum] = _value |
75 |
|
_store.set_value(_currentrow, _colnum, _value) |
76 |
|
|
77 |
|
# kill old self.store |
78 |
|
del(self.store) |
79 |
|
self.store = _store |
80 |
|
|
81 |
|
# re-assign store to TreeView |
82 |
|
self.view.set_model(self.store) #self.store.set(_currentrow, _colnum, _value) |
83 |
|
|
84 |
|
# add value to current column |
85 |
|
#self.store.set(_currentrow, _colnum, _value) |
86 |
|
|
87 |
|
_renderer = gtk.CellRendererText() |
88 |
|
_col = gtk.TreeViewColumn(_colname, _renderer) |
89 |
|
_col.set_alignment(1.0) |
90 |
|
_col.set_reorderable(True) |
91 |
|
_col.set_sort_column_id(_colnum) |
92 |
|
|
93 |
|
self.view.append_column(_col); |
94 |
|
|
95 |
|
print "SELF.STORE: COLUMNS =",self.store.get_n_columns()," ROWS =",self.store.iter_n_children(None) |
96 |
|
|
97 |
|
|
98 |
|
print "LAST ROW DATA:",repr(self.rows[_rownum]) |
99 |
|
|
100 |
|
_rn = 0 |
101 |
|
_r = self.store.iter_children(None) |
102 |
|
while _r != None: |
103 |
|
for _i in range(0, self.store.get_n_columns()): |
104 |
|
print "ROW",_rn,"COL",_i,":",self.store.get(_r,_i) |
105 |
|
_r = self.store.iter_next(_r) |
106 |
|
_rn = _rn + 1 |
107 |
|
|