Changeset 10d57f6 in sasview for src/sas/qtgui/MainWindow
- Timestamp:
- Oct 18, 2018 5:43:11 AM (6 years ago)
- Branches:
- ESS_GUI, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
- Children:
- 2eeda93
- Parents:
- b95d748 (diff), 9a42ea1 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Location:
- src/sas/qtgui/MainWindow
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/MainWindow/GuiManager.py
refaf022 r6040cd7 444 444 """ 445 445 # disable not yet fully implemented actions 446 self._workspace.actionOpen_Analysis.setVisible(False)446 #self._workspace.actionOpen_Analysis.setVisible(False) 447 447 self._workspace.actionUndo.setVisible(False) 448 448 self._workspace.actionRedo.setVisible(False) -
src/sas/qtgui/MainWindow/DataExplorer.py
r3b95b3b r345b3b3 233 233 filename = QtWidgets.QFileDialog.getOpenFileName(**kwargs)[0] 234 234 if filename: 235 load_thread = threads.deferToThread(self.readProject, filename) 236 load_thread.addCallback(self.readProjectComplete) 237 load_thread.addErrback(self.readProjectFailed) 238 239 def loadFailed(self, reason): 240 """ 241 """ 242 print("file load FAILED: ", reason) 243 pass 244 245 def readProjectFailed(self, reason): 246 """ 247 """ 248 print("readProjectFailed FAILED: ", reason) 249 pass 250 251 def readProject(self, filename): 252 self.communicator.statusBarUpdateSignal.emit("Loading Project... %s" % os.path.basename(filename)) 253 try: 254 manager = DataManager() 255 with open(filename, 'r') as infile: 256 manager.load_from_readable(infile) 257 258 self.communicator.statusBarUpdateSignal.emit("Loaded Project: %s" % os.path.basename(filename)) 259 return manager 260 261 except: 262 self.communicator.statusBarUpdateSignal.emit("Failed: %s" % os.path.basename(filename)) 263 raise 264 265 def readProjectComplete(self, manager): 266 self.model.clear() 267 268 self.manager.assign(manager) 269 self.model.beginResetModel() 270 for id, item in self.manager.get_all_data().items(): 271 self.updateModel(item.data, item.path) 272 273 self.model.endResetModel() 235 self.readProject(filename) 274 236 275 237 def saveProject(self): … … 285 247 name_tuple = QtWidgets.QFileDialog.getSaveFileName(**kwargs) 286 248 filename = name_tuple[0] 287 if filename: 288 _, extension = os.path.splitext(filename) 289 if not extension: 290 filename = '.'.join((filename, 'json')) 291 self.communicator.statusBarUpdateSignal.emit("Saving Project... %s\n" % os.path.basename(filename)) 292 with open(filename, 'w') as outfile: 293 self.manager.save_to_writable(outfile) 249 if not filename: 250 return 251 _, extension = os.path.splitext(filename) 252 if not extension: 253 filename = '.'.join((filename, 'json')) 254 self.communicator.statusBarUpdateSignal.emit("Saving Project... %s\n" % os.path.basename(filename)) 255 256 with open(filename, 'w') as outfile: 257 self.saveDataToFile(outfile) 258 259 def allDataForModel(self, model): 260 # data model 261 all_data = {} 262 for i in range(model.rowCount()): 263 properties = {} 264 item = model.item(i) 265 data = GuiUtils.dataFromItem(item) 266 if data is None: continue 267 # Now, all plots under this item 268 filename = data.filename 269 is_checked = item.checkState() 270 properties['checked'] = is_checked 271 other_datas = GuiUtils.plotsFromFilename(filename, model) 272 # skip the main plot 273 other_datas = list(other_datas.values())[1:] 274 all_data[data.id] = [data, properties, other_datas] 275 return all_data 276 277 def saveDataToFile(self, outfile): 278 """ 279 Save every dataset to a json file 280 """ 281 data = self.allDataForModel(self.model) 282 theory = self.allDataForModel(self.theory_model) 283 284 all_data = {} 285 for key, value in data.items(): 286 all_data[key] = value 287 for key, value in theory.items(): 288 if key in all_data: 289 raise ValueError("Inconsistent data in Project file.") 290 all_data[key] = value 291 292 # perspectives 293 current_perspective = self._perspective() 294 try: 295 perspective_dump = current_perspective.getCurrentStateAsXml() 296 except Exception: 297 ex = "State of " + current_perspective.windowTitle() + \ 298 " cannot be saved." 299 logging.error(ex) 300 if perspective_dump is not None: 301 assert(isinstance(perspective_dump, dict)) 302 all_data['perspective'] = perspective_dump 303 # save datas 304 GuiUtils.saveData(outfile, all_data) 305 return 306 307 def readProject(self, filename): 308 """ 309 Read out datasets and fitpages from file 310 """ 311 with open(filename, 'r') as infile: 312 all_data = GuiUtils.readDataFromFile(infile) 313 # clear the model 314 self.model.clear() 315 316 #self.model.beginResetModel() 317 for key, value in all_data.items(): 318 # key - cardinal number of dataset 319 # value - main dataset, [dependant filesets] 320 # add the main index 321 new_data = value[0] 322 assert isinstance(new_data, (Data1D, Data2D)) 323 properties = value[1] 324 is_checked = properties['checked'] 325 new_item = GuiUtils.createModelItemWithPlot(new_data, new_data.filename) 326 new_item.setCheckState(is_checked) 327 model = self.theory_model 328 if new_data.is_data: 329 model = self.model 330 model.appendRow(new_item) 331 self.manager.add_data(data_list={new_data.id:new_data}) 332 333 # Add the underlying data 334 if not value[2]: 335 continue 336 for plot in value[2]: 337 assert isinstance(plot, (Data1D, Data2D)) 338 GuiUtils.updateModelItemWithPlot(new_item, plot, plot.name) 294 339 295 340 def deleteFile(self, event): … … 1394 1439 checkbox_item.setCheckable(True) 1395 1440 checkbox_item.setCheckState(QtCore.Qt.Checked) 1396 checkbox_item.setText(os.path.basename(p_file)) 1441 if p_file is not None: 1442 checkbox_item.setText(os.path.basename(p_file)) 1397 1443 1398 1444 # Add the actual Data1D/Data2D object -
src/sas/qtgui/MainWindow/DataManager.py
re2e5f3d r345b3b3 29 29 from sas.qtgui.Plotting.PlotterData import Data1D 30 30 from sas.qtgui.Plotting.PlotterData import Data2D 31 from sas.qtgui.Plotting.Plottables import Plottable32 31 from sas.qtgui.Plotting.Plottables import PlottableTheory1D 33 32 from sas.qtgui.Plotting.Plottables import PlottableFit1D
Note: See TracChangeset
for help on using the changeset viewer.