source: sasview/src/sas/sasgui/guiframe/customdir.py @ a9279cc

Last change on this file since a9279cc was 212bfc2, checked in by mathieu, 8 years ago

Pull categories from models. Get rid of default categories. Fixes #535

  • Property mode set to 100644
File size: 1.8 KB
RevLine 
[493c90c]1# Setup and find Custom config dir
2import os.path
3import shutil
[74b5523]4
[493c90c]5CONF_DIR = 'config' 
[94d6752]6APPLICATION_NAME = 'sasview'
[493c90c]7
[ea5fa58]8def _find_usersasview_dir():
9    """
10    Find and return user/.sasview dir
11    """
[212bfc2]12    return os.path.join(os.path.expanduser("~"), ("." + APPLICATION_NAME))
[ea5fa58]13
[493c90c]14def _find_customconf_dir():
15    """
16    Find path of the config directory.
17    The plugin directory is located in the user's home directory.
18    """
[ea5fa58]19    u_dir = _find_usersasview_dir()
[212bfc2]20    return os.path.join(u_dir, CONF_DIR)
[493c90c]21
22def _setup_conf_dir(path):
23    """
[ea5fa58]24    Setup the custom config dir and cat file
[493c90c]25    """
[212bfc2]26    conf_dir = _find_customconf_dir()
[493c90c]27    # If the plugin directory doesn't exist, create it
[212bfc2]28    if not os.path.isdir(conf_dir):
29        os.makedirs(conf_dir)
30    config_file = os.path.join(conf_dir, "custom_config.py")
[ea5fa58]31
[493c90c]32    # Place example user models as needed
[8ab3302]33    try:
[212bfc2]34        if not os.path.isfile(config_file):
35            shutil.copyfile(os.path.join(path, "custom_config.py"), config_file)
[8ab3302]36    except:
37        # Check for data path next to exe/zip file.
38        #Look for maximum n_dir up of the current dir to find plugins dir
39        n_dir = 12
40        is_dir = False
41        f_dir = path
42        for i in range(n_dir):
43            if i > 1:
44                f_dir, _ = os.path.split(f_dir)
45            temp_path = os.path.join(f_dir, "custom_config.py")
46            if os.path.isfile(temp_path):
[212bfc2]47                shutil.copyfile(temp_path, config_file)
[8ab3302]48                is_dir = True
49                break
50        if not is_dir:
51            raise
[212bfc2]52    return conf_dir
53
54
[493c90c]55class SetupCustom(object):
56    """
57    implement custom config dir
58    """
59    def find_dir(self):
60        return _find_customconf_dir()
61   
62    def setup_dir(self, path):
63        return _setup_conf_dir(path)
Note: See TracBrowser for help on using the repository browser.