Changeset 440 for sans/utils/bt5/bt5view
- Timestamp:
- Nov 11, 2008 10:30:26 AM (14 years ago)
- Location:
- sans/utils/bt5/bt5view
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
sans/utils/bt5/bt5view/bt5view
r163 r440 9 9 from matplotlib.axes import Subplot 10 10 from matplotlib.backends.backend_gtk import FigureCanvasGTK, NavigationToolbar 11 12 import usans 11 13 12 14 … … 50 52 self.filelist = gtk.ListStore(str) 51 53 self.filelistview.set_model(self.filelist) 54 self.filelist.set_sort_column_id(0,gtk.SORT_ASCENDING) 52 55 53 56 # Set up plot group list 54 57 self.plotlistview = self.wTree.get_widget("tv_plotlist") 55 self.AddPlotListColumn("Dataset",0) 56 57 self.plotlist = gtk.TreeStore(str) 58 #self.AddPlotListColumn("Dataset",0) 59 #self.AddPlotListColumn("Plot",1) 60 self.cellrendertoggle = gtk.CellRendererToggle() 61 self.cellrendertoggle.set_property('activatable', True) 62 self.AddPlotListColumns("Dataset") 63 64 #Create TreeStore model - Name of dataset, is it plotted, loaded data for children, plottable data for parent 65 self.plotlist = gtk.TreeStore(str,'gboolean',object,object) 58 66 self.plotlistview.set_model(self.plotlist) 67 self.plotlist.set_sort_column_id(0,gtk.SORT_ASCENDING) 59 68 60 69 #fill the file list … … 85 94 self.plotlistview.connect("drag_data_received",self.dnd_data_received) 86 95 96 #Handle toggling of checkboxes in plot list 97 self.cellrendertoggle.connect("toggled", self.handle_toggled, (self.plotlistview.get_model(), 1)) 98 87 99 88 100 def AddFileListColumn(self, title, columnId): … … 98 110 return 99 111 100 def AddPlotListColumn(self, title, columnId): 101 """This function adds a column to the list view. 102 First it create the gtk.TreeViewColumn and then set 103 some needed properties""" 104 112 def AddPlotListColumns(self, title): 105 113 column = gtk.TreeViewColumn(title, gtk.CellRendererText() 106 , text=columnId) 107 column.set_resizable(True) 108 column.set_sort_column_id(columnId) 114 , text=0) 115 #column.set_resizable(True) 116 column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) 117 column.set_fixed_width(230) 118 column.set_sort_column_id(0) 119 #column.set_min_width(200) 109 120 self.plotlistview.append_column(column) 110 return 111 121 122 column = gtk.TreeViewColumn('',self.cellrendertoggle, active=1) 123 column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) 124 #column.set_min_width(20) 125 #column.set_max_width(20) 126 #column.set_fixed_width(20) 127 #column.set_resizable(False) 128 self.plotlistview.append_column(column) 129 return 130 131 def handle_toggled(self, cell, path, user_data): 132 model, column = user_data 133 model[path][column] = not model[path][column] 134 135 return 136 112 137 def GetDirList(self): 113 138 dirlist = os.listdir(os.getcwd()) … … 126 151 model = treeview.get_model() 127 152 data = selection.data 153 #Get USANS data from file 154 detdata = usans.getBT5DataFromFile(data) 128 155 drop_info = treeview.get_dest_row_at_pos(x, y) 129 156 if drop_info: 157 #Other entries exist already 130 158 path, position = drop_info 131 159 iter = model.get_iter(path) 132 160 if model.iter_depth(iter) > 0: 161 #Adding to exisiting dataset 133 162 parent = model.iter_parent(iter) 134 163 if position == gtk.TREE_VIEW_DROP_INTO_OR_AFTER or position == gtk.TREE_VIEW_DROP_AFTER: 135 model.insert_after(parent,iter,[data])164 titer = model.insert_after(parent,iter,[data,0,detdata,0]) 136 165 elif position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE or position == gtk.TREE_VIEW_DROP_BEFORE: 137 model.insert_before(parent,iter,[data])166 titer = model.insert_before(parent,iter,[data,0,detdata,0]) 138 167 else: 168 #New top level entry 139 169 if position == gtk.TREE_VIEW_DROP_INTO_OR_AFTER or position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE: 140 model.insert_after(iter, None, [data])170 titer = model.insert_after(iter, None, [data,0,detdata,0]) 141 171 else: 142 iter = model.append(None,[data]) 143 model.append(iter,[data]) 172 #Not sure that this should ever get called.... 173 iter = model.append(None,[data,0,0,0]) 174 titer = model.append(iter,[data,0,detdata,0]) 144 175 else: 145 iter = model.append(None,[data]) 146 model.append(iter,[data]) 147 return 148 176 #First entry 177 iter = model.append(None,[data[:5],0,0,0]) 178 titer = model.append(iter,[data,0,detdata,0]) 179 180 print titer 181 182 self.do_plot(model,titer, "total") 183 184 return 185 186 def do_plot(self, model, iter, type): 187 #Handle plotting - ignore type for the moment, only plot total counts 188 path = model.get_path(iter) 189 #Always passing a child, but let's check anyway 190 if model.iter_depth(iter) > 0: 191 parent = model.iter_parent(iter) 192 ppath = model.get_path(parent) 193 #Check to see if parent is already plotted 194 if (model[ppath][1]): 195 print "Parent plotted" 196 #If plotted, add new data to existing plotted dataset and set checkbox 197 self.make_plottable_dataset(model, ppath, type) 198 model[path][1] = 1 199 else: 200 print "Parent not plotted" 201 if(model.iter_n_children(iter) > 1): 202 print "has siblings" 203 #If not plotted and there are siblings, add new data to dataset and set checkbox but do not plot 204 self.make_plottable_dataset(model, ppath, type) 205 model[path][1] = 1 206 else: 207 #If parent not plotted and there are no siblings, create plottable dataset, plot and set checkbox 208 self.make_plottable_dataset(model, ppath, type) 209 print model[ppath][3] 210 self.axis.plot(model[ppath][3][0], model[ppath][3][1]) 211 self.figure.draw() 212 model[path][1] = 1 213 214 215 return 216 217 def make_plottable_dataset(self,model,path,type): 218 #Will use select here, but for now ignore type and just do total 219 piter = model.get_iter(path) 220 xdata = [] 221 ydata = [] 222 223 for iter in range(0,model.iter_n_children(piter)): 224 #for each child that has the plot flag set add keys to xdata and summed values to ydata 225 cpath = model.get_path(model.iter_nth_child(piter,iter)) 226 data = model[cpath][2] 227 mvals = data.keys() 228 mvals.sort() 229 for mval in mvals: 230 xdata.append(mval) 231 ydata.append(data[mval][1]+data[mval][2]+data[mval][4]+data[mval][5]+data[mval][6]) 232 233 print xdata 234 print ydata 235 236 model[path][3] = [xdata,ydata] 237 return 238 149 239 def dnd_data_getdata(self, treeview, context, selection, target_id, etime): 150 240 treeselection = treeview.get_selection() … … 153 243 selection.set('STRING', 8, data) 154 244 return 155 245 156 246 def setdatadir(self, widget): 157 247 chooser = gtk.FileChooserDialog(title="Select Data Directory",action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, … … 170 260 if keyname in ["Delete", "BackSpace"]: 171 261 self.deleteplotlistentry(widget) 172 262 if keyname in ["Down"]: 263 (path,),focus = widget.get_cursor() 264 widget.set_cursor(path+1) 265 if keyname in ["Up"]: 266 (path,),focus = widget.get_cursor() 267 widget.set_cursor(path-1) 173 268 return True 174 269 … … 178 273 model.remove(iter) 179 274 return 180 181 275 182 276 app = appGui() 183 277 gtk.main() -
sans/utils/bt5/bt5view/bt5view.glade
r163 r440 168 168 <property name="visible">True</property> 169 169 <property name="can_focus">True</property> 170 <property name="hscrollbar_policy">GTK_POLICY_A LWAYS</property>171 <property name="vscrollbar_policy">GTK_POLICY_A LWAYS</property>170 <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 171 <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 172 172 <property name="shadow_type">GTK_SHADOW_IN</property> 173 173 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> … … 199 199 <property name="visible">True</property> 200 200 <property name="can_focus">True</property> 201 <property name="hscrollbar_policy">GTK_POLICY_ ALWAYS</property>202 <property name="vscrollbar_policy">GTK_POLICY_A LWAYS</property>201 <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> 202 <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 203 203 <property name="shadow_type">GTK_SHADOW_IN</property> 204 204 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> … … 206 206 <child> 207 207 <widget class="GtkTreeView" id="tv_plotlist"> 208 <property name="width_request"> 300</property>208 <property name="width_request">250</property> 209 209 <property name="visible">True</property> 210 210 <property name="can_focus">True</property> -
sans/utils/bt5/bt5view/bt5view.glade.bak
r163 r440 168 168 <property name="visible">True</property> 169 169 <property name="can_focus">True</property> 170 <property name="hscrollbar_policy">GTK_POLICY_A LWAYS</property>171 <property name="vscrollbar_policy">GTK_POLICY_A LWAYS</property>170 <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 171 <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 172 172 <property name="shadow_type">GTK_SHADOW_IN</property> 173 173 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> … … 199 199 <property name="visible">True</property> 200 200 <property name="can_focus">True</property> 201 <property name="hscrollbar_policy">GTK_POLICY_ ALWAYS</property>202 <property name="vscrollbar_policy">GTK_POLICY_A LWAYS</property>201 <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> 202 <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 203 203 <property name="shadow_type">GTK_SHADOW_IN</property> 204 204 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> … … 216 216 <property name="hover_selection">False</property> 217 217 <property name="hover_expand">False</property> 218 <signal name="key_press_event" handler="on_tv_plotlist_key_press_event" last_modification_time="Fri, 14 Sep 2007 03:11:53 GMT"/> 218 219 </widget> 219 220 </child>
Note: See TracChangeset
for help on using the changeset viewer.