Changeset 66000ae in sasview for src/sas/sasgui


Ignore:
Timestamp:
Sep 25, 2017 5:01:30 PM (7 years ago)
Author:
Paul Kienzle <pkienzle@…>
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, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
fca1f50, 83db1cc
Parents:
dba8557 (diff), 72d3f1e (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.
Message:

Merge branch 'ticket-869' into ticket-887-reorg

Location:
src/sas/sasgui
Files:
24 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sasgui/perspectives/corfunc/corfunc_state.py

    r2a399ca r1fa4f736  
    289289                namespaces={'ns': CANSAS_NS}) 
    290290            for entry in entry_list: 
    291                 sas_entry, _ = self._parse_entry(entry) 
    292291                corstate = self._parse_state(entry) 
    293292 
    294293                if corstate is not None: 
     294                    sas_entry, _ = self._parse_entry(entry) 
    295295                    sas_entry.meta_data['corstate'] = corstate 
    296296                    sas_entry.filename = corstate.file 
  • src/sas/sasgui/perspectives/fitting/fitpage.py

    r13374be r48154abb  
    20422042            # Save state_fit 
    20432043            self.save_current_state_fit() 
     2044            self.onSmear(None) 
     2045            self._onDraw(None) 
    20442046        except: 
    20452047            self._show_combox_helper() 
  • src/sas/sasgui/perspectives/fitting/pagestate.py

    rda9b239 r1fa4f736  
    12971297                                            namespaces={'ns': CANSAS_NS}) 
    12981298                    for entry in entry_list: 
    1299                         try: 
    1300                             sas_entry, _ = self._parse_save_state_entry(entry) 
    1301                         except: 
    1302                             raise 
    13031299                        fitstate = self._parse_state(entry) 
    1304  
    13051300                        # state could be None when .svs file is loaded 
    13061301                        # in this case, skip appending to output 
    13071302                        if fitstate is not None: 
     1303                            try: 
     1304                                sas_entry, _ = self._parse_save_state_entry( 
     1305                                    entry) 
     1306                            except: 
     1307                                raise 
    13081308                            sas_entry.meta_data['fitstate'] = fitstate 
    13091309                            sas_entry.filename = fitstate.file 
  • src/sas/sasgui/perspectives/fitting/simfitpage.py

    ra9f9ca4 r9804394  
    10731073        """ 
    10741074 
    1075         model_map = {} 
     1075        init_map = {} 
     1076        final_map = {} 
    10761077        if fit.fit_panel.sim_page is None: 
    10771078            fit.fit_panel.add_sim_page() 
     
    10871088                save_id = self._format_id(save_id) 
    10881089                if save_id == model_id: 
    1089                     model_map[saved_model.pop('fit_page_source')] = \ 
    1090                         model[3].name 
     1090                    inter_id = str(i) + str(i) + str(i) + str(i) + str(i) 
     1091                    init_map[saved_model.pop('fit_page_source')] = inter_id 
     1092                    final_map[inter_id] = model[3].name 
    10911093                    check = bool(saved_model.pop('checked')) 
    10921094                    sim_page.model_list[i][0].SetValue(check) 
     
    11061108                param = item.pop('param_cbox') 
    11071109                equality = item.pop('egal_txt') 
    1108                 for key, value in model_map.iteritems(): 
    1109                     model_cbox.replace(key, value) 
    1110                     constraint_value.replace(key, value) 
     1110                for key, value in init_map.items(): 
     1111                    model_cbox = model_cbox.replace(key, value) 
     1112                    constraint_value = constraint_value.replace(key, value) 
     1113                for key, value in final_map.items(): 
     1114                    model_cbox = model_cbox.replace(key, value) 
     1115                    constraint_value = constraint_value.replace(key, value) 
    11111116 
    11121117                sim_page.constraints_list[index][0].SetValue(model_cbox) 
  • src/sas/sasgui/perspectives/invariant/invariant_state.py

    r7432acb r1fa4f736  
    728728 
    729729                for entry in entry_list: 
    730  
    731                     sas_entry, _ = self._parse_entry(entry) 
    732730                    invstate = self._parse_state(entry) 
    733  
    734731                    # invstate could be None when .svs file is loaded 
    735732                    # in this case, skip appending to output 
    736733                    if invstate is not None: 
     734                        sas_entry, _ = self._parse_entry(entry) 
    737735                        sas_entry.meta_data['invstate'] = invstate 
    738736                        sas_entry.filename = invstate.file 
  • src/sas/sasgui/perspectives/pr/inversion_state.py

    ra0e6b1b r1fa4f736  
    472472 
    473473                for entry in entry_list: 
    474                     sas_entry, _ = self._parse_entry(entry) 
    475474                    prstate = self._parse_prstate(entry) 
    476475                    #prstate could be None when .svs file is loaded 
    477476                    #in this case, skip appending to output 
    478477                    if prstate is not None: 
     478                        sas_entry, _ = self._parse_entry(entry) 
    479479                        sas_entry.meta_data['prstate'] = prstate 
    480480                        sas_entry.filename = prstate.file 
  • src/sas/sasgui/__init__.py

    rd7bb526 rc6bdb3b  
     1import sys 
     2import os 
     3from os.path import exists, expanduser, dirname, realpath, join as joinpath 
     4 
     5 
     6def dirn(path, n): 
     7    path = realpath(path) 
     8    for _ in range(n): 
     9        path = dirname(path) 
     10    return path 
     11 
     12# Set up config directories 
     13def make_user_folder(): 
     14    path = joinpath(expanduser("~"),'.sasview') 
     15    if not exists(path): 
     16        os.mkdir(path) 
     17    return path 
     18 
     19 
     20def find_app_folder(): 
     21    # We are starting out with the following info: 
     22    #     __file__ = .../sas/sasgui/__init__.pyc 
     23    # Check if the sister path .../sas/sasview exists, and use it as the 
     24    # app directory.  This will only be the case if the app is not frozen. 
     25    path = joinpath(dirn(__file__, 2), 'sasview') 
     26    if exists(path): 
     27        return path 
     28 
     29    # If we are running frozen, then root is a parent directory 
     30    if sys.platform == 'darwin': 
     31        # Here is the path to the file on the mac: 
     32        #     .../Sasview.app/Contents/Resources/lib/python2.7/site-packages.zip/sas/sasgui/__init__.pyc 
     33        # We want the path to the Resources directory. 
     34        path = dirn(__file__, 6) 
     35    elif os.name == 'nt': 
     36        # Here is the path to the file on windows: 
     37        #     ../Sasview/library.zip/sas/sasgui/__init__.pyc 
     38        # We want the path to the Sasview directory. 
     39        path = dirn(__file__, 4) 
     40    else: 
     41        raise RuntimeError("Couldn't find the app directory") 
     42    return path 
     43 
     44USER_FOLDER = make_user_folder() 
     45APP_FOLDER = find_app_folder() 
     46 
     47 
     48def get_app_dir(): 
     49    return APP_FOLDER 
     50 
     51def get_user_dir(): 
     52    return USER_FOLDER 
     53 
     54def get_custom_config_path(): 
     55    dirname = os.path.join(get_user_dir(), 'config') 
     56    # If the directory doesn't exist, create it 
     57    if not os.path.exists(dirname): 
     58        os.makedirs(dirname) 
     59    path = os.path.join(dirname, "custom_config.py") 
     60    return path 
     61 
     62_config_cache = None 
     63def get_local_config(): 
     64    global _config_cache 
     65    if not _config_cache: 
     66        _config_cache = _load_config() 
     67    return _config_cache 
     68 
     69def _load_config(): 
     70    import os 
     71    import sys 
     72    import logging 
     73    from sasmodels.custom import load_module_from_path 
     74 
     75    logger = logging.getLogger(__name__) 
     76    dirname = get_app_dir() 
     77    filename = 'local_config.py' 
     78    path = os.path.join(dirname, filename) 
     79    try: 
     80        module = load_module_from_path('sas.sasgui.local_config', path) 
     81        logger.info("GuiManager loaded %s", path) 
     82        return module 
     83    except Exception as exc: 
     84        logger.critical("Error loading %s: %s", path, exc) 
     85        sys.exit() 
  • src/sas/sasgui/guiframe/CategoryInstaller.py

    r235f514 r6e50a8d  
    1515from collections import defaultdict, OrderedDict 
    1616 
     17from sas.sasgui import get_user_dir 
     18 
    1719USER_FILE = 'categories.json' 
    1820 
    1921logger = logging.getLogger(__name__) 
    2022 
    21 class CategoryInstaller: 
     23class CategoryInstaller(object): 
    2224    """ 
    2325    Class for making sure all category stuff is installed 
     
    2527    Note - class is entirely static! 
    2628    """ 
    27  
    28     def __init__(self): 
    29         """ initialization """ 
    30  
    31     @staticmethod 
    32     def _get_installed_model_dir(): 
    33         """ 
    34         returns the dir where installed_models.txt should be 
    35         """ 
    36         import sas.sascalc.dataloader.readers 
    37         return sas.sascalc.dataloader.readers.get_data_path() 
    38  
    39     @staticmethod 
    40     def _get_models_py_dir(): 
    41         """ 
    42         returns the dir where models.py should be 
    43         """ 
    44         import sas.sasgui.perspectives.fitting.models 
    45         return sas.sasgui.perspectives.fitting.models.get_model_python_path() 
    46  
    47     @staticmethod 
    48     def _get_default_cat_file_dir(): 
    49         """ 
    50         returns the dir where default_cat.j should be 
    51         """ 
    52         # The default categories file is usually found with the code, except 
    53         # when deploying using py2app (it will be in Contents/Resources), or 
    54         # py2exe (it will be in the exec dir). 
    55         import sas.sasview 
    56         cat_file = "default_categories.json" 
    57  
    58         possible_cat_file_paths = [ 
    59             os.path.join(os.path.split(sas.sasview.__file__)[0], cat_file),           # Source 
    60             os.path.join(os.path.dirname(sys.executable), '..', 'Resources', cat_file), # Mac 
    61             os.path.join(os.path.dirname(sys.executable), cat_file)                     # Windows 
    62         ] 
    63  
    64         for path in possible_cat_file_paths: 
    65             if os.path.isfile(path): 
    66                 return os.path.dirname(path) 
    67  
    68         raise RuntimeError('CategoryInstaller: Could not find folder containing default categories') 
    69  
    70     @staticmethod 
    71     def _get_home_dir(): 
    72         """ 
    73         returns the users sasview config dir 
    74         """ 
    75         return os.path.join(os.path.expanduser("~"), ".sasview") 
    7629 
    7730    @staticmethod 
     
    8538        by_model_dict = defaultdict(list) 
    8639        model_enabled_dict = defaultdict(bool) 
    87          
     40 
    8841        for category in master_category_dict: 
    8942            for (model, enabled) in master_category_dict[category]: 
     
    9649    def _regenerate_master_dict(by_model_dict, model_enabled_dict): 
    9750        """ 
    98         regenerates master_category_dict from by_model_dict  
     51        regenerates master_category_dict from by_model_dict 
    9952        and model_enabled_dict 
    10053        returns the master category dictionary 
     
    11265        returns the user data file, eg .sasview/categories.json.json 
    11366        """ 
    114         return os.path.join(CategoryInstaller._get_home_dir(), USER_FILE) 
     67        return os.path.join(get_user_dir(), USER_FILE) 
    11568 
    11669    @staticmethod 
     
    150103                model_name, enabled = master_category_dict[cat][ind] 
    151104                if model_name not in _model_list: 
    152                     del_name = True  
     105                    del_name = True 
    153106                    try: 
    154107                        by_model_dict.pop(model_name) 
  • src/sas/sasgui/guiframe/__init__.py

    r959eb01 r5a405bd  
    1414    # Check for data path next to exe/zip file. 
    1515    # If we are inside a py2exe zip file, we need to go up 
    16     # to get to the directory containing  
     16    # to get to the directory containing 
    1717    # the media for this module 
    1818    path = os.path.dirname(__file__) 
     
    2727                return module_media_path 
    2828            return media_path 
    29     
     29 
    3030    raise RuntimeError('Could not find guiframe images files') 
    3131 
     
    4040    # Check for data path next to exe/zip file. 
    4141    # If we are inside a py2exe zip file, we need to go up 
    42     # to get to the directory containing  
     42    # to get to the directory containing 
    4343    # the media for this module 
    4444    path = os.path.dirname(__file__) 
     
    5858    """ 
    5959    Return the data files associated with guiframe images . 
    60      
     60 
    6161    The format is a list of (directory, [files...]) pairs which can be 
    6262    used directly in setup(...,data_files=...) for setup.py. 
     
    6464    """ 
    6565    data_files = [] 
    66     path = get_data_path(media="images") 
    67     for f in findall(path): 
    68         data_files.append(('images/icons', [f])) 
    69     path = get_media_path(media="media") 
    70     for f in findall(path): 
    71         data_files.append(('media/guiframe_media', [f])) 
     66    data_files.append(('images/icons', findall(get_data_path("images")))) 
     67    data_files.append(('media/guiframe_media', findall(get_data_path("media")))) 
    7268 
    7369    return data_files 
  • src/sas/sasgui/guiframe/aboutbox.py

    rf2ea95a r724af06  
    2424import os.path 
    2525import os 
    26 try: 
    27     # Try to find a local config 
    28     import imp 
    29     path = os.getcwd() 
    30     if(os.path.isfile("%s/%s.py" % (path, 'local_config'))) or \ 
    31       (os.path.isfile("%s/%s.pyc" % (path, 'local_config'))): 
    32         fObj, path, descr = imp.find_module('local_config', [path]) 
    33         config = imp.load_module('local_config', fObj, path, descr) 
    34     else: 
    35         # Try simply importing local_config 
    36         import local_config as config 
    37 except: 
    38     # Didn't find local config, load the default 
    39     import config 
     26 
     27from sas.sasgui import get_local_config 
     28config = get_local_config() 
    4029 
    4130def launchBrowser(url): 
  • src/sas/sasgui/guiframe/acknowledgebox.py

    r74c8cd0 r914ba0a  
    1212import wx.lib.hyperlink 
    1313from wx.lib.expando import ExpandoTextCtrl 
    14 import random 
    15 import os.path 
    16 import os 
    17 try: 
    18     # Try to find a local config 
    19     import imp 
    20     path = os.getcwd() 
    21     if(os.path.isfile("%s/%s.py" % (path, 'local_config'))) or \ 
    22       (os.path.isfile("%s/%s.pyc" % (path, 'local_config'))): 
    23         fObj, path, descr = imp.find_module('local_config', [path]) 
    24         config = imp.load_module('local_config', fObj, path, descr) 
    25     else: 
    26         # Try simply importing local_config 
    27         import local_config as config 
    28 except: 
    29     # Didn't find local config, load the default 
    30     import config 
    3114 
     15from sas.sasgui import get_local_config 
     16config = get_local_config() 
    3217 
    3318class DialogAcknowledge(wx.Dialog): 
  • src/sas/sasgui/guiframe/config.py

    rf80b416e r724af06  
    11""" 
    2     Application settings 
     2Application settings 
    33""" 
    44from __future__ import print_function 
     
    66import time 
    77import os 
     8import logging 
     9 
    810from sas.sasgui.guiframe.gui_style import GUIFRAME 
    911import sas.sasview 
    10 import logging 
    11  
    1212 
    1313logger = logging.getLogger(__name__) 
     
    7575_ansto_logo = os.path.join(icon_path, "ansto_logo.png") 
    7676_tudelft_logo = os.path.join(icon_path, "tudelft_logo.png") 
     77_dls_logo = os.path.join(icon_path, "dls_logo.png") 
    7778_nsf_logo = os.path.join(icon_path, "nsf_logo.png") 
    7879_danse_logo = os.path.join(icon_path, "danse_logo.png") 
     
    147148SAS_OPENCL = None 
    148149 
     150# Time out for updating sasview 
     151UPDATE_TIMEOUT = 2 
     152 
    149153def printEVT(message): 
    150154    if __EVT_DEBUG__: 
  • src/sas/sasgui/guiframe/customdir.py

    r959eb01 rc6bdb3b  
    11# Setup and find Custom config dir 
     2from __future__ import print_function 
     3 
    24import os.path 
     5import logging 
    36import shutil 
    47 
    5 CONF_DIR = 'config'  
    6 APPLICATION_NAME = 'sasview' 
     8from sasmodels.custom import load_module_from_path 
    79 
    8 def _find_usersasview_dir(): 
    9     """ 
    10     Find and return user/.sasview dir 
    11     """ 
    12     return os.path.join(os.path.expanduser("~"), ("." + APPLICATION_NAME)) 
     10from sas.sasgui import get_custom_config_path, get_app_dir 
    1311 
    14 def _find_customconf_dir(): 
    15     """ 
    16     Find path of the config directory. 
    17     The plugin directory is located in the user's home directory. 
    18     """ 
    19     u_dir = _find_usersasview_dir() 
    20     return os.path.join(u_dir, CONF_DIR) 
     12logger = logging.getLogger(__name__) 
    2113 
    22 def _setup_conf_dir(path): 
     14_config_cache = None 
     15def setup_custom_config(): 
    2316    """ 
    2417    Setup the custom config dir and cat file 
    2518    """ 
    26     conf_dir = _find_customconf_dir() 
    27     # If the plugin directory doesn't exist, create it 
    28     if not os.path.isdir(conf_dir): 
    29         os.makedirs(conf_dir) 
    30     config_file = os.path.join(conf_dir, "custom_config.py") 
    31  
    32     # Place example user models as needed 
    33     try: 
    34         if not os.path.isfile(config_file): 
    35             shutil.copyfile(os.path.join(path, "custom_config.py"), config_file) 
    36  
    37         #Adding SAS_OPENCL if it doesn't exist in the config file 
    38         # - to support backcompability 
    39         if not "SAS_OPENCL" in open(config_file).read(): 
    40             open(config_file,"a+").write("SAS_OPENCL = \"None\"\n") 
    41     except: 
    42         # Check for data path next to exe/zip file. 
    43         #Look for maximum n_dir up of the current dir to find plugins dir 
    44         n_dir = 12 
    45         is_dir = False 
    46         f_dir = path 
    47         for i in range(n_dir): 
    48             if i > 1: 
    49                 f_dir, _ = os.path.split(f_dir) 
    50             temp_path = os.path.join(f_dir, "custom_config.py") 
    51             if os.path.isfile(temp_path): 
    52                 shutil.copyfile(temp_path, config_file) 
    53                 is_dir = True 
    54                 break 
    55         if not is_dir: 
    56             raise 
    57     return conf_dir 
     19    global _config_cache 
     20    if not _config_cache: 
     21        _config_cache = _setup_custom_config() 
     22    return _config_cache 
    5823 
    5924 
    60 class SetupCustom(object): 
    61     """ 
    62     implement custom config dir 
    63     """ 
    64     def find_dir(self): 
    65         return _find_customconf_dir() 
    66      
    67     def setup_dir(self, path): 
    68         return _setup_conf_dir(path) 
     25def _setup_custom_config(): 
     26    path = get_custom_config_path() 
     27    if not os.path.isfile(path): 
     28        try: 
     29            # if the custom config file does not exist, copy the default from 
     30            # the app dir 
     31            shutil.copyfile(os.path.join(get_app_dir(), "custom_config.py"), 
     32                            path) 
     33        except Exception: 
     34            logger.error("Could not copy default custom config.") 
     35 
     36    #Adding SAS_OPENCL if it doesn't exist in the config file 
     37    # - to support backcompability 
     38    if not "SAS_OPENCL" in open(path).read(): 
     39        try: 
     40            open(config_file, "a+").write("SAS_OPENCL = \"None\"\n") 
     41        except Exception: 
     42            logger.error("Could not update custom config with SAS_OPENCL.") 
     43 
     44    custom_config = _load_config(path) 
     45    return custom_config 
     46 
     47 
     48def _load_config(path): 
     49    if os.path.exists(path): 
     50        try: 
     51            module = load_module_from_path('sas.sasview.custom_config', path) 
     52            logger.info("GuiManager loaded %s", path) 
     53            return module 
     54        except Exception as exc: 
     55            logger.error("Error loading %s: %s", path, exc) 
     56 
     57    from sas.sasview import custom_config 
     58    logger.info("GuiManager custom_config defaults to sas.sasview.custom_config") 
     59    return custom_config 
  • src/sas/sasgui/guiframe/data_panel.py

    ra1b8fee rc6bdb3b  
    3333from sas.sasgui.guiframe.local_perspectives.plotting.SimplePlot \ 
    3434    import PlotFrame as QucikPlotDialog 
    35 import sas.sasgui.guiframe.config as config 
     35from sas.sasgui import get_local_config 
     36 
     37config = get_local_config() 
    3638 
    3739# Check version 
  • src/sas/sasgui/guiframe/documentation_window.py

    rf80b416e r724af06  
    2727    WX_SUPPORTS_HTML2 = False 
    2828 
    29 from .gui_manager import get_app_dir 
     29from sas.sasgui import get_app_dir 
    3030 
    3131# Don't use wx html renderer on windows. 
  • src/sas/sasgui/guiframe/gui_manager.py

    r2f22db9 r914ba0a  
    2222import re 
    2323import logging 
    24 import httplib 
    2524import traceback 
    2625import urllib 
    27 import urllib2 
    2826import json 
    2927 
     28from matplotlib import _pylab_helpers 
     29 
     30from sas.sasgui import get_local_config, get_app_dir, get_user_dir 
    3031from sas.sasgui.guiframe.events import EVT_CATEGORY 
    3132from sas.sasgui.guiframe.events import EVT_STATUS 
     
    4647from sas.sascalc.dataloader.loader import Loader 
    4748from sas.sasgui.guiframe.proxy import Connection 
    48 from matplotlib import _pylab_helpers 
     49from sas.sasgui.guiframe.customdir import setup_custom_config 
    4950 
    5051logger = logging.getLogger(__name__) 
    51  
    5252warnings.simplefilter("ignore") 
    5353 
    54 def get_app_dir(): 
    55     """ 
    56         The application directory is the one where the default custom_config.py 
    57         file resides. 
    58  
    59         :returns: app_path - the path to the applicatin directory 
    60     """ 
    61     # First, try the directory of the executable we are running 
    62     app_path = sys.path[0] 
    63     if os.path.isfile(app_path): 
    64         app_path = os.path.dirname(app_path) 
    65     if os.path.isfile(os.path.join(app_path, "custom_config.py")): 
    66         app_path = os.path.abspath(app_path) 
    67         logger.info("Using application path: %s", app_path) 
    68         return app_path 
    69  
    70     # Next, try the current working directory 
    71     if os.path.isfile(os.path.join(os.getcwd(), "custom_config.py")): 
    72         logger.info("Using application path: %s", os.getcwd()) 
    73         return os.path.abspath(os.getcwd()) 
    74  
    75     # Finally, try the directory of the sasview module 
    76     # TODO: gui_manager will have to know about sasview until we 
    77     # clean all these module variables and put them into a config class 
    78     # that can be passed by sasview.py. 
    79     logger.debug(sys.executable) 
    80     logger.debug(str(sys.argv)) 
    81     from sas import sasview as sasview 
    82     app_path = os.path.dirname(sasview.__file__) 
    83     logger.debug("Using application path: %s", app_path) 
    84     return app_path 
    85  
    86  
    87 def get_user_directory(): 
    88     """ 
    89         Returns the user's home directory 
    90     """ 
    91     userdir = os.path.join(os.path.expanduser("~"), ".sasview") 
    92     if not os.path.isdir(userdir): 
    93         os.makedirs(userdir) 
    94     return userdir 
    95  
    96  
    97 def _find_local_config(file, path): 
    98     """ 
    99         Find configuration file for the current application 
    100     """ 
    101     config_module = None 
    102     fObj = None 
    103     try: 
    104         fObj, path_config, descr = imp.find_module(file, [path]) 
    105         config_module = imp.load_module(file, fObj, path_config, descr) 
    106     except: 
    107         logger.error("Error loading %s/%s: %s" % (path, file, sys.exc_value)) 
    108     finally: 
    109         if fObj is not None: 
    110             fObj.close() 
    111     logger.debug("GuiManager loaded %s/%s" % (path, file)) 
    112     return config_module 
    113  
    114 # Get APP folder 
    115 PATH_APP = get_app_dir() 
    116 DATAPATH = PATH_APP 
    117  
    118 # GUI always starts from the App folder 
    119 # os.chdir(PATH_APP) 
    120 # Read in the local config, which can either be with the main 
    121 # application or in the installation directory 
    122 config = _find_local_config('local_config', PATH_APP) 
    123 if config is None: 
    124     config = _find_local_config('local_config', os.getcwd()) 
    125     if config is None: 
    126         # Didn't find local config, load the default 
    127         import sas.sasgui.guiframe.config as config 
    128         logger.debug("using default local_config") 
    129     else: 
    130         logger.debug("found local_config in %s" % os.getcwd()) 
    131 else: 
    132     logger.debug("found local_config in %s" % PATH_APP) 
    133  
    134 from sas.sasgui.guiframe.customdir import SetupCustom 
    135 c_conf_dir = SetupCustom().setup_dir(PATH_APP) 
    136 custom_config = _find_local_config('custom_config', c_conf_dir) 
    137 if custom_config is None: 
    138     custom_config = _find_local_config('custom_config', os.getcwd()) 
    139     if custom_config is None: 
    140         msgConfig = "Custom_config file was not imported" 
    141         logger.debug(msgConfig) 
    142     else: 
    143         logger.debug("using custom_config in %s" % os.getcwd()) 
    144 else: 
    145     logger.debug("using custom_config from %s" % c_conf_dir) 
     54config = get_local_config() 
     55custom_config = setup_custom_config() 
    14656 
    14757# read some constants from config 
     
    17787        DEFAULT_OPEN_FOLDER = os.path.abspath(open_folder) 
    17888    else: 
    179         DEFAULT_OPEN_FOLDER = PATH_APP 
     89        DEFAULT_OPEN_FOLDER = get_app_dir() 
    18090    SAS_OPENCL = custom_config.SAS_OPENCL 
    18191except: 
     
    192102    DEFAULT_PERSPECTIVE = None 
    193103    CLEANUP_PLOT = False 
     104    DEFAULT_OPEN_FOLDER = get_app_dir() 
    194105    DEFAULT_OPEN_FOLDER = PATH_APP 
    195106    SAS_OPENCL = None 
     
    265176                if os.path.isfile(ico_file): 
    266177                    self.SetIcon(wx.Icon(ico_file, wx.BITMAP_TYPE_ICO)) 
    267         self.path = PATH_APP 
     178        self.path = get_app_dir() 
    268179        self.application_name = APPLICATION_NAME 
    269180        # Application manager 
     
    540451        try: 
    541452            fd = open(file_name, 'w') 
    542         except: 
     453        except Exception: 
    543454            # On Permission denied: IOError 
    544             temp_dir = get_user_directory() 
     455            temp_dir = get_user_dir() 
    545456            temp_file_name = os.path.join(temp_dir, name) 
    546457            fd = open(temp_file_name, 'w') 
     
    15321443            # want Analysis.  This is NOT an issue on the Mac which does not 
    15331444            # have the extra Window menu item. 
    1534             #      March 2016 Code Camp  -- PDB  
     1445            #      March 2016 Code Camp  -- PDB 
    15351446            Tools_pos = self._menubar.FindMenu("Tools") 
    15361447            self._menubar.Insert(Tools_pos+1, self._applications_menu, 
     
    21632074                logger.info("Failed to connect to www.sasview.org") 
    21642075        self._process_version(version_info, standalone=event is None) 
     2076 
    21652077 
    21662078    def _process_version(self, version_info, standalone=True): 
     
    33513263                if basename.lower() in [app_py, app_exe, app_app, app_base]: 
    33523264                    data_base = sys.argv[1] 
    3353                     input_file = os.path.normpath(os.path.join(DATAPATH, 
     3265                    input_file = os.path.normpath(os.path.join(get_app_dir(), 
    33543266                                                               data_base)) 
    33553267        if input_file is None: 
     
    33663278        # do it only the first time app loaded 
    33673279        # delete unused model folder 
    3368         model_folder = os.path.join(PATH_APP, path) 
     3280        model_folder = os.path.join(get_app_dir(), path) 
    33693281        if os.path.exists(model_folder) and os.path.isdir(model_folder): 
    33703282            if len(os.listdir(model_folder)) > 0: 
  • src/sas/sasgui/guiframe/local_perspectives/data_loader/data_loader.py

    rdcb91cf r759a8ab  
    1212from sas.sascalc.dataloader.loader import Loader 
    1313from sas.sascalc.dataloader.loader_exceptions import NoKnownLoaderException 
     14 
     15from sas.sasgui import get_local_config 
    1416from sas.sasgui.guiframe.plugin_base import PluginBase 
    1517from sas.sasgui.guiframe.events import StatusEvent 
    1618from sas.sasgui.guiframe.gui_style import GUIFRAME 
    1719from sas.sasgui.guiframe.gui_manager import DEFAULT_OPEN_FOLDER 
    18 try: 
    19     # Try to find a local config 
    20     import imp 
    21     path = os.getcwd() 
    22     if(os.path.isfile("%s/%s.py" % (path, 'local_config'))) or \ 
    23         (os.path.isfile("%s/%s.pyc" % (path, 'local_config'))): 
    24         fObj, path, descr = imp.find_module('local_config', [path]) 
    25         config = imp.load_module('local_config', fObj, path, descr) 
    26     else: 
    27         # Try simply importing local_config 
    28         import local_config as config 
    29 except: 
    30     # Didn't find local config, load the default 
    31     import sas.sasgui.guiframe.config as config 
    32  
    33 if config is None: 
    34     import sas.sasgui.guiframe.config as config 
    35  
    36  
     20 
     21config = get_local_config() 
    3722extension_list = [] 
    3823if config.APPLICATION_STATE_EXTENSION is not None: 
  • src/sas/sasgui/guiframe/startup_configuration.py

    r7432acb r914ba0a  
    1  
    21################################################################################ 
    32#This software was developed by the University of Tennessee as part of the 
    43#Distributed Data Analysis of Neutron Scattering Experiments (DANSE) 
    5 #project funded by the US National Science Foundation.  
     4#project funded by the US National Science Foundation. 
    65# 
    76#See the license text in license.txt 
     
    98#copyright 2009, University of Tennessee 
    109################################################################################ 
     10import os 
     11import copy 
     12 
    1113import wx 
    12 import os 
    13 import sys 
    14 import copy 
    15 #import sas.sasgui.guiframe.gui_manager as gui 
    16 from sas.sasgui.guiframe.events import StatusEvent   
     14 
     15from sas.sasgui import get_custom_config_path 
     16from sas.sasgui.guiframe.events import StatusEvent 
    1717from sas.sasgui.guiframe.gui_style import GUIFRAME 
    1818from sas.sasgui.guiframe import gui_manager as CURRENT 
    19 from sas.sasgui.guiframe.customdir  import SetupCustom 
     19 
     20 
    2021# default configuration 
    2122DEFAULT_STRINGS = {'GUIFRAME_WIDTH':-1, 
     
    6263    """ 
    6364    def __init__(self, parent, gui, id=-1, title="Startup Setting"): 
    64         wx.Dialog.__init__(self, parent, id, title,  
     65        wx.Dialog.__init__(self, parent, id, title, 
    6566                           size=(PANEL_WIDTH, PANEL_HEIGHT)) 
    6667        # parent 
    6768        self.parent = parent 
    68         self.path = SetupCustom().find_dir() 
    6969        self._gui = gui 
    70         # font size  
     70        # font size 
    7171        self.SetWindowVariant(variant=FONT_VARIANT) 
    7272        self.current_string = copy.deepcopy(CURRENT_STRINGS) 
     
    7676        title_text = wx.StaticText(self, id=wx.NewId(), label='Set interface configuration') 
    7777 
    78         default_bt = wx.RadioButton(self, -1, 'Default View', (15, 30),  
     78        default_bt = wx.RadioButton(self, -1, 'Default View', (15, 30), 
    7979                                    style=wx.RB_GROUP) 
    8080        default_bt.Bind(wx.EVT_RADIOBUTTON, self.OnDefault) 
     
    8787        note_txt = wx.StaticText(self, -1, msg, (15, 75)) 
    8888        note_txt.SetForegroundColour("black") 
    89          
     89 
    9090        hbox = wx.BoxSizer(wx.HORIZONTAL) 
    9191        okButton = wx.Button(self, wx.ID_OK, 'Set', size=(70, 25)) 
    92         closeButton = wx.Button(self,wx.ID_CANCEL, 'Cancel', size=(70, 25)) 
     92        closeButton = wx.Button(self, wx.ID_CANCEL, 'Cancel', size=(70, 25)) 
    9393        hbox.Add(closeButton, 1, wx.RIGHT, 5) 
    9494        hbox.Add(okButton, 1, wx.RIGHT, 5) 
     
    102102        self.SetSizer(vbox) 
    103103 
    104          
     104 
    105105    def OnDefault(self, event=None): 
    106106        """ 
     
    111111        self.return_string = copy.deepcopy(DEFAULT_STRINGS) 
    112112        return self.return_string 
    113          
     113 
    114114    def OnCurrent(self, event=None): 
    115115        """ 
     
    134134                p_size = CURRENT_STRINGS['PLOPANEL_WIDTH'] 
    135135            self.current_string['PLOPANEL_WIDTH'] = p_size 
    136              
     136 
    137137            try: 
    138138                control_frame = self.parent.get_current_perspective().frame 
     
    143143                self.current_string['CONTROL_WIDTH'] = -1 
    144144                self.current_string['CONTROL_HEIGHT'] = -1 
    145                  
     145 
    146146            data_pw, _ = self.parent.panels["data_panel"].frame.GetSizeTuple() 
    147147            if data_pw is None: 
    148148                data_pw = CURRENT_STRINGS['DATAPANEL_WIDTH'] 
    149149            self.current_string['DATAPANEL_WIDTH'] = data_pw 
    150              
     150 
    151151            #label = self.parent._data_panel_menu.GetText() 
    152152            label = self.parent.panels['data_panel'].frame.IsShown() 
     
    155155            else: 
    156156                self.current_string['DATALOADER_SHOW'] = False 
    157                  
     157 
    158158            if self.parent._toolbar.IsShown(): 
    159159                self.current_string['TOOLBAR_SHOW'] = True 
    160160            else: 
    161161                self.current_string['TOOLBAR_SHOW'] = False 
    162                  
     162 
    163163            style = self._gui & GUIFRAME.FLOATING_PANEL 
    164             if style == GUIFRAME.FLOATING_PANEL:  
     164            if style == GUIFRAME.FLOATING_PANEL: 
    165165                self.current_string['FIXED_PANEL'] = False 
    166166            else: 
    167167                self.current_string['FIXED_PANEL'] = True 
    168                  
     168 
    169169            if self.parent.panels['default'].frame.IsShown(): 
    170170                self.current_string['WELCOME_PANEL_SHOW'] = True 
     
    182182            self.current_string['DEFAULT_OPEN_FOLDER'] = location 
    183183                        #self.parent._default_save_location.ascii_letters 
    184              
     184 
    185185        except: 
    186186            raise 
     
    188188        self.return_string = self.current_string 
    189189        return self.return_string 
    190      
     190 
     191 
    191192    def write_custom_config(self): 
    192193        """ 
    193             Write custom configuration 
    194         """ 
    195         fname = os.path.join(self.path, 'custom_config.py') 
    196         self.write_string(fname, self.return_string) 
    197  
    198     def write_string(self, fname, strings): 
    199         """ 
    200         Write and Save file 
    201         """ 
    202          
    203         try: 
    204             out_f =  open(fname,'w') 
    205         except : 
    206             raise  #RuntimeError, "Error: Can not change the configuration..." 
    207         out_f.write("#Application appearance custom configuration\n" ) 
    208         for key, item in strings.iteritems(): 
    209             if (key == 'DEFAULT_PERSPECTIVE') or \ 
    210                 (key == 'DEFAULT_OPEN_FOLDER' and item is not None): 
    211                 out_f.write("%s = \"%s\"\n" % (key,str(item))) 
    212             else: 
    213                 out_f.write("%s = %s\n" % (key,str(item))) 
    214      
    215         out_f.close()  
    216          
     194        Write custom configuration 
     195        """ 
     196        path = get_custom_config_path() 
     197        with open(path, 'w') as out_f: 
     198            out_f.write("#Application appearance custom configuration\n") 
     199            for key, item in self.return_string.iteritems(): 
     200                if (key == 'DEFAULT_PERSPECTIVE') or \ 
     201                    (key == 'DEFAULT_OPEN_FOLDER' and item != None): 
     202                    out_f.write("%s = \"%s\"\n" % (key, str(item))) 
     203                else: 
     204                    out_f.write("%s = %s\n" % (key, str(item))) 
  • src/sas/sasgui/perspectives/calculator/__init__.py

    r959eb01 r5a405bd  
    1818    path = os.path.dirname(__file__) 
    1919    #Look for maximum n_dir up of the current dir to find media 
    20     
     20 
    2121    #for i in range(n_dir): 
    2222    i = 0 
     
    3030             return media_path 
    3131        i += 1 
    32     
     32 
    3333    raise RuntimeError('Could not find calculator media files') 
    3434 
     
    3636    """ 
    3737    Return the data files associated with media calculator. 
    38      
     38 
    3939    The format is a list of (directory, [files...]) pairs which can be 
    4040    used directly in setup(...,data_files=...) for setup.py. 
     
    4242    """ 
    4343    data_files = [] 
    44     path = get_data_path(media="media") 
    45     for f in findall(path): 
    46         data_files.append(('media/calculator_media', [f])) 
     44    data_files.append(('media/calculator_media', findall(get_data_path("media")))) 
    4745    return data_files 
  • src/sas/sasgui/perspectives/fitting/__init__.py

    r959eb01 r12d3e0e  
    1313    # Check for data path next to exe/zip file. 
    1414    # If we are inside a py2exe zip file, we need to go up 
    15     # to get to the directory containing  
     15    # to get to the directory containing 
    1616    # the media for this module 
    1717    path = os.path.dirname(__file__) 
     
    2626                return module_media_path 
    2727            return media_path 
    28     
     28 
    2929    raise RuntimeError('Could not find models media files') 
    3030 
     
    3232    """ 
    3333    Return the data files associated with media. 
    34      
     34 
    3535    The format is a list of (directory, [files...]) pairs which can be 
    3636    used directly in setup(...,data_files=...) for setup.py. 
     
    3838    """ 
    3939    data_files = [] 
    40     path = os.path.dirname(__file__) 
    41     p_path = os.path.join(path, 'plugin_models') 
    42     for f in findall(p_path): 
    43         data_files.append(('plugin_models', [f])) 
    44     # path = get_data_path(media="media") 
    45     for f in findall(path): 
    46         data_files.append(('media/fitting_media', [f])) 
    47      
     40    # Note: windows installer requires the plugin_models directory 
     41    plugin_models = os.path.join(os.path.dirname(__file__), "plugin_models") 
     42    data_files.append(('plugin_models', findall(plugin_models))) 
     43    data_files.append(('media/fitting_media', findall(get_data_path("media")))) 
     44 
    4845    return data_files 
  • src/sas/sasgui/perspectives/fitting/models.py

    r13374be r724af06  
    1515import shutil 
    1616from copy import copy 
     17 
     18from sasmodels.sasview_model import load_custom_model, load_standard_models 
     19 
    1720# Explicitly import from the pluginmodel module so that py2exe 
    1821# places it in the distribution. The Model1DPlugin class is used 
    1922# as the base class of plug-in models. 
     23from sas.sasgui import get_user_dir 
    2024from sas.sascalc.fit.pluginmodel import Model1DPlugin 
    2125from sas.sasgui.guiframe.CategoryInstaller import CategoryInstaller 
    22 from sasmodels.sasview_model import load_custom_model, load_standard_models 
    2326from sas.sasgui.perspectives.fitting.fitpage import CUSTOM_MODEL 
    2427 
     
    2730 
    2831PLUGIN_DIR = 'plugin_models' 
    29 PLUGIN_LOG = os.path.join(os.path.expanduser("~"), '.sasview', PLUGIN_DIR, 
    30                           "plugins.log") 
     32PLUGIN_LOG = os.path.join(get_user_dir(), PLUGIN_DIR, "plugins.log") 
    3133PLUGIN_NAME_BASE = '[plug-in] ' 
    3234 
  • src/sas/sasgui/perspectives/invariant/__init__.py

    r959eb01 r5a405bd  
    1515    # Check for data path next to exe/zip file. 
    1616    # If we are inside a py2exe zip file, we need to go up 
    17     # to get to the directory containing  
     17    # to get to the directory containing 
    1818    # the media for this module 
    1919    path = os.path.dirname(__file__) 
     
    2828                return module_media_path 
    2929            return media_path 
    30     
     30 
    3131    raise RuntimeError('Could not find invariant media files') 
    3232 
     
    3434    """ 
    3535    Return the data files associated with media invariant. 
    36      
     36 
    3737    The format is a list of (directory, [files...]) pairs which can be 
    3838    used directly in setup(...,data_files=...) for setup.py. 
     
    4040    """ 
    4141    data_files = [] 
    42     path = get_data_path(media="media") 
    43     for f in findall(path): 
    44         data_files.append(('media/invariant_media', [f])) 
     42    data_files.append(('media/invariant_media', findall(get_data_path("media")))) 
    4543    return data_files 
  • src/sas/sasgui/plottools/__init__.py

    rd7bb526 refe730d  
    1 import config 
    21from PlotPanel import PlotPanel 
    32from plottables import Data1D, Theory1D 
  • src/sas/sasgui/plottools/config.py

    rd7bb526 ra2a1c20  
    3838    import pkg_resources 
    3939    pkg_resources.require("matplotlib>=" + plot_version) 
    40 except: 
     40except ImportError: 
    4141    from distutils.version import LooseVersion as Version 
    4242    if Version(matplotlib.__version__) < Version(plot_version): 
Note: See TracChangeset for help on using the changeset viewer.