def _load_settings(self): """ """ from sgtk.platform.qt import QtCore if not hasattr(QtCore, "QSettings"): return {} q_settings = QtCore.QSettings(UserSettings.ORGANIZATION, UserSettings.APPLICATION) settings = {} array_sz = q_settings.beginReadArray(self._prefix) for ai in range(0, array_sz): q_settings.setArrayIndex(ai) project_id = q_settings.value("project_id") client = q_settings.value("client") # convert from QVariant object if itemData is returned as such if hasattr(QtCore, "QVariant"): if isinstance(project_id, QtCore.QVariant): project_id = project_id.toPyObject() if isinstance(client, QtCore.QVariant): client = client.toPyObject() project_id = int(project_id) client = str(client) settings[project_id] = {"client": client} q_settings.endArray() return settings
def __init__(self, bundle): """ Constructor :param bundle: app, engine or framework object to associate the settings with. """ self.__fw = sgtk.platform.current_bundle() self.__settings = QtCore.QSettings("Shotgun Software", bundle.name) self.__fw.log_debug("Initialized settings manager for '%s'" % bundle.name) # now organize various keys # studio level settings - base it on the server host name _, sg_hostname, _, _, _ = urlparse.urlsplit(self.__fw.sgtk.shotgun_url) self.__site_key = sg_hostname # project level settings pc = self.__fw.sgtk.pipeline_configuration self.__project_key = "%s:%s" % (self.__site_key, pc.get_project_disk_name()) # config level settings self.__pipeline_config_key = "%s:%s" % (self.__project_key, pc.get_name()) # instance level settings if isinstance(bundle, sgtk.platform.Application): # based on the environment name, engine instance name and app instance name self.__instance_key = "%s:%s:%s:%s" % ( self.__pipeline_config_key, bundle.engine.environment["name"], bundle.engine.instance_name, bundle.instance_name) self.__engine_key = bundle.engine.name elif isinstance(bundle, sgtk.platform.Engine): # based on the environment name & engine instance name self.__instance_key = "%s:%s:%s" % (self.__pipeline_config_key, bundle.environment["name"], bundle.instance_name) self.__engine_key = bundle.name elif isinstance(bundle, sgtk.platform.Framework): # based on the environment name & framework name self.__instance_key = "%s:%s:%s" % ( self.__pipeline_config_key, bundle.engine.environment["name"], bundle.name) self.__engine_key = bundle.engine.name else: raise TankError("Not sure how to handle bundle type %s. " "Please pass an App, Engine or Framework object." % bundle)
def _save_settings(self, settings): """ """ from sgtk.platform.qt import QtCore if not hasattr(QtCore, "QSettings"): return q_settings = QtCore.QSettings(UserSettings.ORGANIZATION, UserSettings.APPLICATION) q_settings.beginWriteArray(self._prefix) for ai, (project_id, details) in enumerate(settings.iteritems()): q_settings.setArrayIndex(ai) q_settings.setValue("project_id", project_id) q_settings.setValue("client", details.get("client", "")) q_settings.endArray()