def __init__(self, **kwargs): super(ProfileManager, self).__init__(**kwargs) self.profilesListModel = ProfilesListModel(self) self.profilesFile = os.path.join(PMX_PROFILES_PATH, self.PMX_PROFILES_FILE) config = configparser.RawConfigParser() if os.path.exists(self.profilesFile): config.read(self.profilesFile) for section in config.sections(): if section.startswith("Profile"): name = config.get(section, "name") path = config.get(section, "path") default = config.getboolean(section, "default") profile = PrymatexProfile(name, path, default) self.profilesListModel.addProfile(profile) self.__dontAsk = config.getboolean("General", "dontAsk") else: self.createProfile(self.DEFAULT_PROFILE_NAME, default=True) self.__current_profile = None self.__dontAsk = True suggested = self.application().options.profile if suggested is None or not self.__dontAsk: self.__current_profile = self.profileDialog.selectStartupProfile(self) elif suggested == "": self.__current_profile = self.defaultProfile() else: self.__current_profile = self.profilesListModel.findProfileByName(suggested) if self.__current_profile is None: self.__current_profile = self.createProfile(suggested, default=True) self.__current_profile.ensure_paths()
def __init__(self, **kwargs): super(ProfileManager, self).__init__(**kwargs) self.profilesListModel = ProfilesListModel(self) self.__dontAsk = True self.profilesFile = os.path.join(PMX_PROFILES_PATH, self.PMX_PROFILES_FILE) config = configparser.RawConfigParser() if os.path.exists(self.profilesFile): config.read(self.profilesFile) for section in config.sections(): if section.startswith("Profile"): name = config.get(section, "name") path = config.get(section, "path") default = config.getboolean(section, "default") profile = PrymatexProfile(name, path, default) self.profilesListModel.addProfile(profile) self.__dontAsk = config.getboolean("General", "dontAsk") else: self.createProfile(self.DEFAULT_PROFILE_NAME, default = True) # Setting models self.settingsTreeModel = SettingsTreeModel(parent = self) self.sortFilterSettingsProxyModel = SortFilterSettingsProxyModel(parent = self) self.sortFilterSettingsProxyModel.setSourceModel(self.settingsTreeModel)
class ProfileManager(PrymatexComponent, QtCore.QObject): # ------------- Settings PMX_PROFILES_FILE = "profiles.ini" DEFAULT_PROFILE_NAME = "default" def __init__(self, **kwargs): super(ProfileManager, self).__init__(**kwargs) self.profilesListModel = ProfilesListModel(self) self.profilesFile = os.path.join(PMX_PROFILES_PATH, self.PMX_PROFILES_FILE) config = configparser.RawConfigParser() if os.path.exists(self.profilesFile): config.read(self.profilesFile) for section in config.sections(): if section.startswith("Profile"): name = config.get(section, "name") path = config.get(section, "path") default = config.getboolean(section, "default") profile = PrymatexProfile(name, path, default) self.profilesListModel.addProfile(profile) self.__dontAsk = config.getboolean("General", "dontAsk") else: self.createProfile(self.DEFAULT_PROFILE_NAME, default=True) self.__current_profile = None self.__dontAsk = True suggested = self.application().options.profile if suggested is None or not self.__dontAsk: self.__current_profile = self.profileDialog.selectStartupProfile(self) elif suggested == "": self.__current_profile = self.defaultProfile() else: self.__current_profile = self.profilesListModel.findProfileByName(suggested) if self.__current_profile is None: self.__current_profile = self.createProfile(suggested, default=True) self.__current_profile.ensure_paths() def initialize(self, message_handler=None, *args, **kwargs): super(ProfileManager, self).initialize(**kwargs) # Dialogs self.profileDialog = self.findChild(QtWidgets.QDialog, "ProfileDialog") # --------------- Profile def saveProfiles(self): config = configparser.RawConfigParser() config.add_section("General") config.set("General", "dontask", str(self.__dontAsk)) for index, profile in enumerate(self.profilesListModel.profiles()): section = "Profile%d" % index config.add_section(section) config.set(section, "name", profile.PMX_PROFILE_NAME) config.set(section, "path", profile.PMX_PROFILE_PATH) config.set(section, "default", profile.PMX_PROFILE_DEFAULT) f = open(self.profilesFile, "w") config.write(f) f.close() def createProfile(self, name, path=None, default=False): name = name.lower() profile = self.profilesListModel.findProfileByName(name) if profile is None: if path is None: path = os.path.abspath(os.path.join(PMX_PROFILES_PATH, name)) profile = PrymatexProfile(name, path) self.profilesListModel.addProfile(profile) self.setDefaultProfile(profile) self.saveProfiles() return profile def renameProfile(self, profile, newName): newName = newName.lower() profile = self.profilesListModel.findProfileByName(profile.PMX_PROFILE_NAME) profile.PMX_PROFILE_NAME = newName.lower() self.profilesListModel.layoutChanged.emit() self.saveProfiles() return newName def deleteProfile(self, profile, files=False): self.profilesListModel.removeProfile(profile) if files: shutil.rmtree(profile.PMX_PROFILE_PATH) self.saveProfiles() def profileNames(self): return [p.PMX_PROFILE_NAME for p in self.profilesListModel.profiles()] def setDontAsk(self, value): self.__dontAsk = value self.saveProfiles() def dontAsk(self): return self.__dontAsk def setDefaultProfile(self, profile): # Unset all ? for p in self.profilesListModel.profiles(): p.PMX_PROFILE_DEFAULT = False profile.PMX_PROFILE_DEFAULT = True self.saveProfiles() def profileForClass(self, componentClass): return self.currentProfile() def currentProfile(self): return self.__current_profile def defaultProfile(self): for profile in self.profilesListModel.profiles(): if profile.PMX_PROFILE_DEFAULT: return profile
class ProfileManager(PrymatexComponent, QtCore.QObject): PMX_PROFILES_FILE = "profiles.ini" DEFAULT_PROFILE_NAME = "default" def __init__(self, **kwargs): super(ProfileManager, self).__init__(**kwargs) self.profilesListModel = ProfilesListModel(self) self.__dontAsk = True self.profilesFile = os.path.join(PMX_PROFILES_PATH, self.PMX_PROFILES_FILE) config = configparser.RawConfigParser() if os.path.exists(self.profilesFile): config.read(self.profilesFile) for section in config.sections(): if section.startswith("Profile"): name = config.get(section, "name") path = config.get(section, "path") default = config.getboolean(section, "default") profile = PrymatexProfile(name, path, default) self.profilesListModel.addProfile(profile) self.__dontAsk = config.getboolean("General", "dontAsk") else: self.createProfile(self.DEFAULT_PROFILE_NAME, default = True) # Setting models self.settingsTreeModel = SettingsTreeModel(parent = self) self.sortFilterSettingsProxyModel = SortFilterSettingsProxyModel(parent = self) self.sortFilterSettingsProxyModel.setSourceModel(self.settingsTreeModel) # --------------- Profile def build_prymatex_profile(self, path): # TODO: Algo como ensure paths porque si falta uno que hago? os.makedirs(path) os.makedirs(os.path.join(path, 'tmp'), mode = 0o0700) os.makedirs(os.path.join(path, 'log'), mode = 0o0700) os.makedirs(os.path.join(path, 'cache'), mode = 0o0700) os.makedirs(os.path.join(path, 'screenshot'), mode = 0o0700) def saveProfiles(self): config = configparser.RawConfigParser() config.add_section("General") config.set("General", "dontask", str(self.__dontAsk)) for index, profile in enumerate(self.profilesListModel.profiles()): section = "Profile%d" % index config.add_section(section) config.set(section, "name", profile.PMX_PROFILE_NAME) config.set(section, "path", profile.PMX_PROFILE_PATH) config.set(section, "default", profile.PMX_PROFILE_DEFAULT) f = open(self.profilesFile, "w") config.write(f) f.close() def createProfile(self, name, path = None, default = False): name = name.lower() profile = self.profilesListModel.findProfileByName(name) if profile is None: if path is None: path = os.path.abspath(os.path.join(PMX_PROFILES_PATH, name)) profile = PrymatexProfile(name, path) self.profilesListModel.addProfile(profile) self.setDefaultProfile(profile) self.saveProfiles() return profile def currentProfile(self, value = None): if value is None or not self.__dontAsk: profile = ProfileDialog.selectStartupProfile(self) elif value == "": profile = self.defaultProfile() else: profile = self.profilesListModel.findProfileByName(value) if profile is None: profile = self.createProfile(value, default = True) if not os.path.exists(profile.PMX_PROFILE_PATH): self.build_prymatex_profile(profile.PMX_PROFILE_PATH) return profile def renameProfile(self, profile, newName): newName = newName.lower() profile = self.profilesListModel.findProfileByName(profile.PMX_PROFILE_NAME) profile.PMX_PROFILE_NAME = newName.lower() self.profilesListModel.layoutChanged.emit() self.saveProfiles() return newName def deleteProfile(self, profile, files = False): self.profilesListModel.removeProfile(profile) if files: shutil.rmtree(profile.PMX_PROFILE_PATH) self.saveProfiles() def profileNames(self): return [ p.PMX_PROFILE_NAME for p in self.profilesListModel.profiles() ] def setDontAsk(self, value): self.__dontAsk = value self.saveProfiles() def dontAsk(self): return self.__dontAsk def setDefaultProfile(self, profile): # Unset all ? for p in self.profilesListModel.profiles(): p.PMX_PROFILE_DEFAULT = False profile.PMX_PROFILE_DEFAULT = True self.saveProfiles() def defaultProfile(self): for profile in self.profilesListModel.profiles(): if profile.PMX_PROFILE_DEFAULT: return profile # ------------------- Settings def registerSettingsWidget(self, widget): self.settingsTreeModel.addConfigNode(widget) def loadSettings(self, messageHandler = None): self.messageHandler = messageHandler self.settingsTreeModel.loadSettings() self.messageHandler = None