Changeset 940aca7 in sasview for sansguiframe/src/sans
- Timestamp:
- May 19, 2012 12:17:02 PM (13 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- baa915c
- Parents:
- d225e32
- Location:
- sansguiframe/src/sans/guiframe
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
sansguiframe/src/sans/guiframe/gui_manager.py
r6306f2f r940aca7 452 452 return 453 453 _, ext = os.path.splitext(name) 454 fd = open(file_name, 'w') 454 try: 455 fd = open(file_name, 'w') 456 except: 457 # On Permission denied: IOError 458 temp_dir = get_user_directory() 459 temp_file_name = os.path.join(temp_dir, name) 460 fd = open(temp_file_name, 'w') 455 461 separator = "\t" 456 462 if ext.lower() == ".csv": … … 491 497 excel_app.Visible = 1 492 498 except: 493 msg = "Error occured when calling Excel \n"494 msg += "Check that Excel in installed in this machine or \n"495 msg += " Check that %s really exists.\n" % str(file_name)499 msg = "Error occured when calling Excel.\n" 500 msg += "Check that Excel installed in this machine or \n" 501 msg += "check that %s really exists.\n" % str(file_name) 496 502 wx.PostEvent(self, StatusEvent(status=msg, 497 503 info="error")) … … 1031 1037 return menu_list 1032 1038 1033 1039 def get_current_context_menu(self, plotpanel=None): 1040 """ 1041 Get the context menu items made available 1042 by the current plug-in. 1043 This function is used by the plotting module 1044 """ 1045 if plotpanel is None: 1046 return 1047 menu_list = [] 1048 item = self._current_perspective 1049 if item != None: 1050 menu_list.extend(item.get_context_menu(plotpanel=plotpanel)) 1051 return menu_list 1052 1034 1053 def on_panel_close(self, event): 1035 1054 """ … … 2598 2617 if has_errors: 2599 2618 if data.dx != [] and data.dx[i] != None: 2600 out.write("%g %g %g %g\n" % (data.x[i], 2601 data.y[i], 2602 data.dy[i], 2603 data.dx[i])) 2619 if data.dx[i] != None: 2620 out.write("%g %g %g %g\n" % (data.x[i], 2621 data.y[i], 2622 data.dy[i], 2623 data.dx[i])) 2624 else: 2625 out.write("%g %g %g\n" % (data.x[i], 2626 data.y[i], 2627 data.dy[i])) 2604 2628 else: 2605 2629 out.write("%g %g %g\n" % (data.x[i], -
sansguiframe/src/sans/guiframe/gui_statusbar.py
r199fdec r940aca7 238 238 clear the progress bar 239 239 """ 240 flag = False 241 if (self.nb_start <= self.nb_stop) or \ 242 (self.nb_progress <= self.nb_stop): 243 flag = True 240 flag = True 241 # Why we do this? 242 #if (self.nb_start <= self.nb_stop) or \ 243 # (self.nb_progress <= self.nb_stop): 244 # flag = True 244 245 return flag 245 246 -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/AnnulusSlicer.py
r13382fc7 r940aca7 167 167 168 168 new_plot.group_id = "AnnulusPhi" + self.base.data2D.name 169 new_plot.id = None170 #new_plot.is_data= True169 new_plot.id = "AnnulusPhi" + self.base.data2D.name 170 new_plot.is_data= True 171 171 new_plot.xtransform = "x" 172 172 new_plot.ytransform = "y" -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter1D.py
r78919f45 r940aca7 41 41 DEFAULT_BEAM = 0.005 42 42 BIN_WIDTH = 1 43 43 IS_MAC = (sys.platform == 'darwin') 44 44 45 45 class ModelPanel1D(PlotPanel, PanelBase): … … 174 174 # It was found that wx >= 2.9.3 sends an event even if no size changed. 175 175 # So manually recode the size (=x_size) and compare here. 176 # Massy code to work around:< 177 if self.parent._mgr != None: 178 max_panel = self.parent._mgr.GetPane(self) 179 if max_panel.IsMaximized(): 180 self.parent._mgr.RestorePane(max_panel) 181 max_panel.Maximize() 176 182 if self.x_size != None: 177 183 if self.x_size == self.GetSize(): … … 286 292 try: 287 293 self._onEVT_FUNC_PROPERTY() 294 if IS_MAC: 295 # MAC: forcing to plot 2D avg 296 self.canvas._onDrawIdle() 288 297 except: 289 298 msg=" Encountered singular points..." … … 409 418 if plot != self.plots[self.graph.selected_plottable]: 410 419 continue 420 421 id = wx.NewId() 422 plot_menu.Append(id, "&DataInfo", name) 423 wx.EVT_MENU(self, id, self. _onDataShow) 424 id = wx.NewId() 425 plot_menu.Append(id, "&Save Points as a File", name) 426 wx.EVT_MENU(self, id, self._onSave) 427 plot_menu.AppendSeparator() 428 411 429 #add menu of other plugins 412 item_list = self.parent.get_c ontext_menu(self)430 item_list = self.parent.get_current_context_menu(self) 413 431 414 432 if (not item_list == None) and (not len(item_list) == 0): … … 425 443 pass 426 444 plot_menu.AppendSeparator() 427 428 id = wx.NewId() 429 plot_menu.Append(id, "&DataInfo", name) 430 wx.EVT_MENU(self, id, self. _onDataShow) 431 id = wx.NewId() 432 plot_menu.Append(id, "&Save Points as a File", name) 433 wx.EVT_MENU(self, id, self._onSave) 434 plot_menu.AppendSeparator() 445 435 446 if self.parent.ClassName.count('wxDialog') == 0: 436 447 id = wx.NewId() -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter2D.py
r2778c4f r940aca7 321 321 if len(self.data2D.detector) == 1: 322 322 323 item_list = self.parent.get_c ontext_menu(self)323 item_list = self.parent.get_current_context_menu(self) 324 324 if (not item_list == None) and (not len(item_list) == 0) and\ 325 325 self.data2D.name.split(" ")[0] != 'Residuals': … … 631 631 new_plot.yaxis("\\rm{Intensity} ", "cm^{-1}") 632 632 633 new_plot.group_id = " Circ avg "+ self.data2D.name633 new_plot.group_id = "2daverage" + self.data2D.name 634 634 new_plot.id = "Circ avg " + self.data2D.name 635 635 new_plot.is_data = True -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/SectorSlicer.py
r789ffc6 r940aca7 183 183 new_plot.yaxis("\\rm{Residuals} ", "/") 184 184 185 new_plot.group_id = " SectorQ" + self.base.data2D.name186 new_plot.id = None185 new_plot.group_id = "2daverage" + self.base.data2D.name 186 new_plot.id = "SectorQ" + self.base.data2D.name 187 187 new_plot.is_data = True 188 188 self.base.parent.update_theory(data_id=data, \ -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/SlicerParameters.py
r8c347a6 r940aca7 87 87 ctl.SetValue(format_number(str(params[item]))) 88 88 self.Bind(wx.EVT_TEXT_ENTER, self.onTextEnter) 89 ctl.Bind(wx.EVT_KILL_FOCUS, self.onTextEnter)90 89 self.parameters.append([item, ctl]) 91 90 self.bck.Add(ctl, (iy, ix), (1, 1), -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/boxSlicer.py
r13382fc7 r940aca7 198 198 new_plot.yaxis("\\rm{Residuals} ", "/") 199 199 200 new_plot.group_id = str(self.averager.__name__)+ self.base.data2D.name201 #new_plot.id = str(self.averager.__name__)202 #new_plot.is_data= True200 new_plot.group_id = "2daverage" + self.base.data2D.name 201 new_plot.id = (self.averager.__name__) + self.base.data2D.name 202 new_plot.is_data= True 203 203 self.base.parent.update_theory(data_id=self.base.data2D.id, \ 204 204 theory=new_plot) -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/plotting.py
r48832ac r940aca7 276 276 277 277 """ 278 action_check = False 278 279 if hasattr(event, 'action'): 279 group_id = event.group_id 280 if group_id in self.plot_panels.keys(): 281 #remove data from panel 282 if event.action.lower().strip() == 'remove': 283 id = event.id 284 return self.remove_plot(group_id, id) 285 if event.action.lower().strip() == 'hide': 286 return self.hide_panel(group_id) 287 if event.action.lower().strip() == 'delete': 288 panel = self.plot_panels[group_id] 289 uid = panel.uid 290 return self.parent.delete_panel(uid) 291 if event.action.lower().strip() == "clear": 292 return self.clear_panel_by_id(group_id) 280 action_string = event.action.lower().strip() 281 if action_string == 'check': 282 action_check = True 283 else: 284 group_id = event.group_id 285 if group_id in self.plot_panels.keys(): 286 #remove data from panel 287 if action_string == 'remove': 288 id = event.id 289 return self.remove_plot(group_id, id) 290 if action_string == 'hide': 291 return self.hide_panel(group_id) 292 if action_string == 'delete': 293 panel = self.plot_panels[group_id] 294 uid = panel.uid 295 return self.parent.delete_panel(uid) 296 if action_string == "clear": 297 return self.clear_panel_by_id(group_id) 298 293 299 if not hasattr(event, 'plot'): 294 300 return 295 301 title = None 296 302 if hasattr(event, 'title'): 297 title = 'Graph'#event.title 298 303 title = 'Graph'#event.title 299 304 data = event.plot 300 group_id = data.group_id 301 302 if group_id in self.plot_panels.keys(): 305 group_id = data.group_id 306 if group_id in self.plot_panels.keys(): 307 if action_check: 308 # Check if the plot already exist. if it does, do nothing. 309 if data.id in self.plot_panels[group_id].plots.keys(): 310 return 303 311 #update a panel graph 304 312 panel = self.plot_panels[group_id] … … 309 317 new_panel = self.create_1d_panel(data, group_id) 310 318 else: 319 # Need to make the group_id consistent with 1D thus no if below 320 if len(self.plot_panels.values()) > 0: 321 for p_group_id in self.plot_panels.keys(): 322 p_plot = self.plot_panels[p_group_id] 323 if data.id in p_plot.plots.keys(): 324 p_plot.plots[data.id] = data 325 self.plot_panels[group_id] = p_plot 326 if group_id != p_group_id: 327 del self.plot_panels[p_group_id] 328 if p_group_id in data.list_group_id: 329 data.list_group_id.remove(p_group_id) 330 if group_id not in data.list_group_id: 331 data.list_group_id.append(group_id) 332 p_plot.group_id = group_id 333 return 334 311 335 new_panel = self.create_2d_panel(data, group_id) 312 self.create_panel_helper(new_panel, data, group_id, title) 313 336 self.create_panel_helper(new_panel, data, group_id, title) 314 337 return 315 338 -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/profile_dialog.py
r2d443fd r940aca7 53 53 self.SetTitle("Scattering Length Density Profile") 54 54 self.parent = parent 55 self._mgr = None 55 56 self.data = data 56 57 self.str = self.data.__str__() … … 75 76 self.newplot.dy = None 76 77 self.newplot.name = 'SLD' 78 self.newplot.id = self.newplot.name 77 79 self.plotpanel.add_image(self.newplot) 78 80 self.plotpanel.subplot.set_ylim(min(data_plot.y) - _Y_OFF , … … 81 83 max(data_plot.x) + _X_OFF) 82 84 #self.Centre() 85 self.plotpanel.resizing = False 86 self.plotpanel.canvas.set_resizing(self.plotpanel.resizing) 87 self.plotpanel.subplot.figure.canvas.draw_idle() 83 88 self.Layout() 84 89 … … 175 180 self.parent.parent.parent.on_change_caption(name, old_caption, new_caption) 176 181 182 def disable_app_menu(self, panel): 183 """ 184 Disable menu bar 185 """ 186 # Not implemented! 187 return 177 188 178 189 class SLDplotpanel(PlotPanel): … … 203 214 self.yaxis_label = '' 204 215 self.yaxis_unit = '' 216 self.resizing = True 205 217 206 218 def add_image(self, plot): … … 208 220 Add image(Theory1D) 209 221 """ 210 self.plots[plot.name] = plot 211 self.plots[plot.name].is_data = False 212 #init graph 213 #self.gaph = Graph() 222 self.plots[plot.id] = plot 223 self.plots[plot.id].is_data = True 214 224 #add plot 215 225 self.graph.add(plot) … … 222 232 self.yaxis_unit = '10^{-6}A^{-2}' 223 233 self.graph.yaxis(self.yaxis_label, self.yaxis_unit) 234 #self.subplot.figure.canvas.draw_idle() 235 # For latter scale changes 236 self.plots[plot.id].xaxis('\\rm{%s} '% x1_label, 'A') 237 self.plots[plot.id].yaxis('\\rm{SLD} ', '10^{-6}A^{-2}') 224 238 #draw 225 239 self.graph.render(self) 226 self.subplot.figure.canvas.draw_idle()227 228 # For latter scale changes229 self.plots[plot.name].xaxis('\\rm{%s} '% x1_label, 'A')230 self.plots[plot.name].yaxis('\\rm{SLD} ', '10^{-6}A^{-2}')231 240 232 241 def on_set_focus(self, event): … … 257 266 """ 258 267 pass 259 268 260 269 def _onSave(self, evt): 261 270 """ … … 265 274 266 275 """ 267 268 path = None 269 wildcard = "Text files (*.txt)|*.txt|"\ 270 "CanSAS 1D files(*.xml)|*.xml" 271 default_name = "sld_profile" 276 menu = evt.GetEventObject() 277 id = evt.GetId() 278 self.set_selected_from_menu(menu, id) 279 data = self.plots[self.graph.selected_plottable] 280 default_name = data.label 281 if default_name.count('.') > 0: 282 default_name = default_name.split('.')[0] 283 default_name += "_out" 272 284 if self.parent != None: 273 self._default_save_location = self.parent.parent._default_save_location 274 dlg = wx.FileDialog(self, "Choose a file", 275 self._default_save_location, 276 default_name, wildcard , wx.SAVE) 277 278 if dlg.ShowModal() == wx.ID_OK: 279 path = dlg.GetPath() 280 # ext_num = 0 for .txt, ext_num = 1 for .xml 281 # This is MAC Fix 282 ext_num = dlg.GetFilterIndex() 283 if ext_num == 0: 284 format = '.txt' 285 else: 286 format = '.xml' 287 path = os.path.splitext(path)[0] + format 288 mypath = os.path.basename(path) 289 290 #TODO: This is bad design. The DataLoader is designed 291 #to recognize extensions. 292 # It should be a simple matter of calling the . 293 #save(file, data, '.xml') method 294 # of the sans.dataloader.loader.Loader class. 295 from sans.dataloader.loader import Loader 296 #Instantiate a loader 297 loader = Loader() 298 data = self.parent.data 299 format = ".txt" 300 if os.path.splitext(mypath)[1].lower() == format: 301 # Make sure the ext included in the file name 302 # especially on MAC 303 fName = os.path.splitext(path)[0] + format 304 self._onsaveTXT(fName) 305 format = ".xml" 306 if os.path.splitext(mypath)[1].lower() == format: 307 # Make sure the ext included in the file name 308 # especially on MAC 309 fName = os.path.splitext(path)[0] + format 310 loader.save(fName, data, format) 311 try: 312 self._default_save_location = os.path.dirname(path) 313 self.parent.parent._default_save_location = self._default_save_location 314 except: 315 pass 316 dlg.Destroy() 317 285 # What an ancestor! 286 fit_panel = self.parent.parent.parent 287 fit_panel.parent.save_data1d(data, default_name) 288 318 289 class ViewerFrame(wx.Frame): 319 290 """ -
sansguiframe/src/sans/guiframe/media/Graph_help.html
rd874092 r940aca7 7 7 <li><a href="#reset">Reset Graph</a></li> 8 8 <li><a href="#hide">Hide/Show/Delete Graph</a></li> 9 <li><a href="#info">Data Info</a></li> 9 10 <li><a href="#save">Save plot Image</a></li> 10 11 <li><a href="#savedata">Save Data</a></li> 11 12 <li><a href="#drag">Drag plot</a></li> 12 <li><a href="#select">Select Data</a></li>13 13 <li><a href="#zoom">Zoom In/Out</a></li> 14 14 <li><a href="#remove">Remove Data</a></li> … … 33 33 <h5><a name="hide">Hide/Show/Delete Graph</a></h5> 34 34 <p> 35 To Hide, click the Hide ( closed eye) button in the tool bar.<br>35 To Hide, click the Hide (bar) button in the tool bar.<br> 36 36 To Show, select the the 'Show' menuitem in the 'Graph' menu in the menu bar.<br> 37 37 To Delete, click the 'x' button in the title bar.<br> … … 43 43 Right click on plot. Context menu will pop-up select save image [file name].A dialog 44 44 window opens and write a the name of the file to save and click on <b>Save Image.</b> 45 </p> 46 47 <h5><a name="info"> Data Info</a></h5> 48 <p> 49 From the context menu, select 'Data Info' to see the data information dialog panel. 45 50 </p> 46 51
Note: See TracChangeset
for help on using the changeset viewer.