Changeset 630155bd in sasview for src/sas/qtgui/DataExplorer.py


Ignore:
Timestamp:
Oct 5, 2016 4:40:30 PM (8 years ago)
Author:
davidm
Branches:
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
Children:
2366fb2, e207c3f
Parents:
d0ccd80f
Message:

implementation of loadProject and saveProject

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/DataExplorer.py

    r1af348e r630155bd  
    3030    # for the gui and providing an interface to the data model. 
    3131 
    32     def __init__(self, parent=None, guimanager=None): 
     32    def __init__(self, parent=None, guimanager=None, manager=None): 
    3333        super(DataExplorerWindow, self).__init__(parent, guimanager) 
    3434 
     
    4343        self.parent = guimanager 
    4444        self.loader = Loader() 
    45         self.manager = DataManager() 
     45        self.manager = manager if manager is not None else DataManager() 
    4646        self.txt_widget = QtGui.QTextEdit(None) 
    4747        # self.txt_widget = GuiUtils.DisplayWindow() 
     
    164164 
    165165        self.loadFromURL(path_str) 
     166 
     167    def loadProject(self): 
     168        """ 
     169        Called when the "Open Project" menu item chosen. 
     170        """ 
     171        kwargs = { 
     172            'parent'    : self, 
     173            'caption'   : 'Open Project', 
     174            'filter'    : 'Project (*.json);;All files (*.*)', 
     175            'options'   : QtGui.QFileDialog.DontUseNativeDialog 
     176        } 
     177        filename = str(QtGui.QFileDialog.getOpenFileName(**kwargs)) 
     178        if filename: 
     179            load_thread = threads.deferToThread(self.readProject, filename) 
     180            load_thread.addCallback(self.readProjectComplete) 
     181 
     182    def readProject(self, filename): 
     183        self.communicator.statusBarUpdateSignal.emit("Loading Project... %s" % os.path.basename(filename)) 
     184        try: 
     185            manager = DataManager() 
     186            with open(filename, 'r') as infile: 
     187                manager.load_from_readable(infile) 
     188 
     189            self.communicator.statusBarUpdateSignal.emit("Loaded Project: %s" % os.path.basename(filename)) 
     190            return manager 
     191 
     192        except: 
     193            self.communicator.statusBarUpdateSignal.emit("Failed: %s" % os.path.basename(filename)) 
     194            raise 
     195 
     196    def readProjectComplete(self, manager): 
     197        self.model.clear() 
     198 
     199        self.manager.assign(manager) 
     200        for id, item in self.manager.get_all_data().iteritems(): 
     201            self.updateModel(item.data, item.path) 
     202 
     203        self.model.reset() 
     204 
     205    def saveProject(self): 
     206        """ 
     207        Called when the "Save Project" menu item chosen. 
     208        """ 
     209        kwargs = { 
     210            'parent'    : self, 
     211            'caption'   : 'Save Project', 
     212            'filter'    : 'Project (*.json)', 
     213            'options'   : QtGui.QFileDialog.DontUseNativeDialog 
     214        } 
     215        filename = str(QtGui.QFileDialog.getSaveFileName(**kwargs)) 
     216        if filename: 
     217            self.communicator.statusBarUpdateSignal.emit("Saving Project... %s\n" % os.path.basename(filename)) 
     218            with open(filename, 'w') as outfile: 
     219                self.manager.save_to_writable(outfile) 
    166220 
    167221    def deleteFile(self, event): 
Note: See TracChangeset for help on using the changeset viewer.