Changeset 133812c7 in sasview for src/sas/qtgui/MainWindow


Ignore:
Timestamp:
Nov 12, 2018 6:47:59 AM (6 years ago)
Author:
Piotr Rozyczko <piotr.rozyczko@…>
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:
e5ae812
Parents:
ebcdb02
git-author:
Piotr Rozyczko <piotr.rozyczko@…> (10/31/18 06:34:14)
git-committer:
Piotr Rozyczko <piotr.rozyczko@…> (11/12/18 06:47:59)
Message:

Merged ESS_GUI

Location:
src/sas/qtgui/MainWindow
Files:
2 edited

Legend:

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

    rebcdb02 r133812c7  
    4949        self.parent = guimanager 
    5050        self.loader = Loader() 
     51 
     52        # Read in default locations 
     53        self.default_save_location = None 
     54        self.default_load_location = GuiUtils.DEFAULT_OPEN_FOLDER 
     55        self.default_project_location = None 
     56 
    5157        self.manager = manager if manager is not None else DataManager() 
    5258        self.txt_widget = QtWidgets.QTextEdit(None) 
     
    99105        self.communicator.extMaskEditorSignal.connect(self.extShowEditDataMask) 
    100106        self.communicator.changeDataExplorerTabSignal.connect(self.changeTabs) 
     107        self.communicator.forcePlotDisplaySignal.connect(self.displayData) 
     108        self.communicator.updateModelFromPerspectiveSignal.connect(self.updateModelFromPerspective) 
    101109 
    102110        self.cbgraph.editTextChanged.connect(self.enableGraphCombo) 
     
    205213        Opens the Qt "Open Folder..." dialog 
    206214        """ 
    207         folder = QtWidgets.QFileDialog.getExistingDirectory(self, "Choose a directory", "", 
    208               QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog) 
     215        kwargs = { 
     216            'parent'    : self, 
     217            'caption'   : 'Choose a directory', 
     218            'options'   : QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog, 
     219            'directory' : self.default_load_location 
     220        } 
     221        folder = QtWidgets.QFileDialog.getExistingDirectory(**kwargs) 
     222 
    209223        if folder is None: 
    210224            return 
    211225 
    212226        folder = str(folder) 
    213  
    214227        if not os.path.isdir(folder): 
    215228            return 
    216  
     229        self.default_load_location = folder 
    217230        # get content of dir into a list 
    218231        path_str = [os.path.join(os.path.abspath(folder), filename) 
     
    251264        filename = QtWidgets.QFileDialog.getOpenFileName(**kwargs)[0] 
    252265        if filename: 
     266            self.default_project_location = os.path.dirname(filename) 
    253267            self.deleteAllItems() 
    254268            self.readProject(filename) 
     
    276290            'caption'   : 'Save Project', 
    277291            'filter'    : 'Project (*.json)', 
    278             'options'   : QtWidgets.QFileDialog.DontUseNativeDialog 
     292            'options'   : QtWidgets.QFileDialog.DontUseNativeDialog, 
     293            'directory' : self.default_project_location 
    279294        } 
    280295        name_tuple = QtWidgets.QFileDialog.getSaveFileName(**kwargs) 
     
    282297        if not filename: 
    283298            return 
     299        self.default_project_location = os.path.dirname(filename) 
    284300        _, extension = os.path.splitext(filename) 
    285301        if not extension: 
     
    616632        Send selected item data to the current perspective and set the relevant notifiers 
    617633        """ 
    618         # Set the signal handlers 
    619         self.communicator.updateModelFromPerspectiveSignal.connect(self.updateModelFromPerspective) 
    620  
    621634        def isItemReady(index): 
    622635            item = self.model.item(index) 
     
    903916            # Try the current item 
    904917            main_data = GuiUtils.dataFromItem(plot_item) 
     918        # 1D dependent plots of 2D sets - special treatment 
     919        if isinstance(main_data, Data2D) and isinstance(plot_to_show, Data1D): 
     920            main_data = None 
    905921 
    906922        # Make sure main data for 2D is always displayed 
    907         if main_data and not self.isPlotShown(main_data): 
     923        if main_data is not None and not self.isPlotShown(main_data): 
    908924            if isinstance(main_data, Data2D): 
    909925                self.plotData([(plot_item, main_data)]) 
     
    923939            # Plots with main data points on the same chart 
    924940            # Get the main data plot 
    925             if main_data and not self.isPlotShown(main_data): 
     941            if main_data is not None and not self.isPlotShown(main_data): 
    926942                new_plots.append((plot_item, main_data)) 
    927943            new_plots.append((plot_item, plot_to_show)) 
     
    10831099        # List of known extensions 
    10841100        wlist = self.getWlist() 
    1085  
    10861101        # Location is automatically saved - no need to keep track of the last dir 
    10871102        # But only with Qt built-in dialog (non-platform native) 
    1088         paths = QtWidgets.QFileDialog.getOpenFileNames(self, "Choose a file", "", 
    1089                 wlist, None, QtWidgets.QFileDialog.DontUseNativeDialog)[0] 
     1103        kwargs = { 
     1104            'parent'    : self, 
     1105            'caption'   : 'Choose files', 
     1106            'filter'    : wlist, 
     1107            'options'   : QtWidgets.QFileDialog.DontUseNativeDialog, 
     1108            'directory' : self.default_load_location 
     1109        } 
     1110        paths = QtWidgets.QFileDialog.getOpenFileNames(**kwargs)[0] 
    10901111        if not paths: 
    10911112            return 
     
    10941115            paths = [paths] 
    10951116 
     1117        self.default_load_location = os.path.dirname(paths[0]) 
    10961118        return paths 
    10971119 
     
    17291751            raise AttributeError(msg) 
    17301752 
    1731         # TODO: Assert other properties 
    1732  
    1733         # Reset the view 
    1734         ##self.model.reset() 
    1735         # Pass acting as a debugger anchor 
     1753        # send in the new item 
     1754        self.model.appendRow(model_item) 
    17361755        pass 
    17371756 
  • src/sas/qtgui/MainWindow/GuiManager.py

    rebcdb02 r133812c7  
    5151 
    5252from sas.qtgui.Utilities.AddMultEditor import AddMultEditor 
     53from sas.qtgui.Utilities.ImageViewer import ImageViewer 
    5354 
    5455logger = logging.getLogger(__name__) 
     
    352353        # Exit if yes 
    353354        if reply == QMessageBox.Yes: 
     355            # save the paths etc. 
     356            self.saveCustomConfig() 
    354357            reactor.callFromThread(reactor.stop) 
    355358            return True 
     
    457460        self._workspace.actionReset.setVisible(False) 
    458461        self._workspace.actionStartup_Settings.setVisible(False) 
    459         self._workspace.actionImage_Viewer.setVisible(False) 
     462        #self._workspace.actionImage_Viewer.setVisible(False) 
    460463        self._workspace.actionCombine_Batch_Fit.setVisible(False) 
    461464        # orientation viewer set to invisible SASVIEW-1132 
     
    825828        """ 
    826829        """ 
    827         print("actionImage_Viewer TRIGGERED") 
    828         pass 
     830        try: 
     831            self.image_viewer = ImageViewer(self) 
     832            if sys.platform == "darwin": 
     833                self.image_viewer.menubar.setNativeMenuBar(False) 
     834            self.image_viewer.show() 
     835        except Exception as ex: 
     836            logging.error(str(ex)) 
     837            return 
    829838 
    830839    #============ FITTING ================= 
     
    11141123        elif isinstance(perspective, Perspectives.PERSPECTIVES["Corfunc"]): 
    11151124            self.checkAnalysisOption(self._workspace.actionCorfunc) 
     1125 
     1126    def saveCustomConfig(self): 
     1127        """ 
     1128        Save the config file based on current session values 
     1129        """ 
     1130        # Load the current file 
     1131        config_content = GuiUtils.custom_config 
     1132 
     1133        changed = self.customSavePaths(config_content) 
     1134        changed = changed or self.customSaveOpenCL(config_content) 
     1135 
     1136        if changed: 
     1137            self.writeCustomConfig(config_content) 
     1138 
     1139    def customSavePaths(self, config_content): 
     1140        """ 
     1141        Update the config module with current session paths 
     1142        Returns True if update was done, False, otherwise 
     1143        """ 
     1144        changed = False 
     1145        # Find load path 
     1146        open_path = GuiUtils.DEFAULT_OPEN_FOLDER 
     1147        defined_path = self.filesWidget.default_load_location 
     1148        if open_path != defined_path: 
     1149            # Replace the load path 
     1150            config_content.DEFAULT_OPEN_FOLDER = defined_path 
     1151            changed = True 
     1152        return changed 
     1153 
     1154    def customSaveOpenCL(self, config_content): 
     1155        """ 
     1156        Update the config module with current session OpenCL choice 
     1157        Returns True if update was done, False, otherwise 
     1158        """ 
     1159        changed = False 
     1160        # Find load path 
     1161        file_value = GuiUtils.SAS_OPENCL 
     1162        session_value = os.environ.get("SAS_OPENCL", "") 
     1163        if file_value != session_value: 
     1164            # Replace the load path 
     1165            config_content.SAS_OPENCL = session_value 
     1166            changed = True 
     1167        return changed 
     1168 
     1169    def writeCustomConfig(self, config): 
     1170        """ 
     1171        Write custom configuration 
     1172        """ 
     1173        from sas import make_custom_config_path 
     1174        path = make_custom_config_path() 
     1175        # Just clobber the file - we already have its content read in 
     1176        with open(path, 'w') as out_f: 
     1177            out_f.write("#Application appearance custom configuration\n") 
     1178            for key, item in config.__dict__.items(): 
     1179                if key[:2] != "__": 
     1180                    if isinstance(item, str): 
     1181                        item = '"' + item + '"' 
     1182                    out_f.write("%s = %s\n" % (key, str(item))) 
     1183        pass # debugger anchor 
Note: See TracChangeset for help on using the changeset viewer.