def load(self, filename=None, fd=None): """ Load the profile from disk """ # Initial values self.macros = { g15driver.KEY_STATE_UP: [], g15driver.KEY_STATE_DOWN: [], g15driver.KEY_STATE_HELD: [] } self.mkey_color = {} # Load macro file if self.id != -1 or filename is not None or fd is not None: if (isinstance(filename, str) or isinstance( filename, unicode)) and os.path.exists(filename): self.read_only = not os.stat(filename)[0] & stat.S_IWRITE self.parser.readfp(codecs.open(filename, "r", "utf8")) elif fd is not None: self.read_only = True self.parser.readfp(fd) else: self.read_only = False # Macro file format version. Try to keep macro files backwardly and # forwardly compatible if self.parser.has_option("DEFAULT", "version"): self.version = float(self.parser.get("DEFAULT", "version").strip()) else: self.version = 1.0 # Info section self.name = self.parser.get("DEFAULT", "name").strip() if self.parser.has_option( "DEFAULT", "name") else "" self.icon = self.parser.get("DEFAULT", "icon").strip() if self.parser.has_option( "DEFAULT", "icon") else "" self.background = self.parser.get("DEFAULT", "background").strip() \ if self.parser.has_option("DEFAULT", "background") else "" self.author = self.parser.get("DEFAULT", "author").strip() \ if self.parser.has_option("DEFAULT", "author") else "" self.window_name = self.parser.get("DEFAULT", "window_name").strip() \ if self.parser.has_option("DEFAULT", "window_name") else "" self.models = self.parser.get("DEFAULT", "models").strip().split(",") \ if self.parser.has_option("DEFAULT", "models") else [ self.device.model_id] self.plugins_mode = self.parser.get("DEFAULT", "plugins_mode").strip() \ if self.parser.has_option("DEFAULT", "plugins_mode") else ALL_PLUGINS self.selected_plugins = self.parser.get("DEFAULT", "selected_plugins").strip().split(",") \ if self.parser.has_option("DEFAULT", "selected_plugins") else [] self.activate_on_focus = self.parser.getboolean( "DEFAULT", "activate_on_focus") if self.parser.has_option( "DEFAULT", "activate_on_focus") else False self.send_delays = self.parser.getboolean("DEFAULT", "send_delays") \ if self.parser.has_option("DEFAULT", "send_delays") else False self.fixed_delays = self.parser.getboolean("DEFAULT", "fixed_delays") \ if self.parser.has_option("DEFAULT", "fixed_delays") else False self.base_profile = self.parser.get("DEFAULT", "base_profile").strip() \ if self.parser.has_option("DEFAULT", "base_profile") else "" if self.base_profile == "-1": # For version 1.0 profile format compatibility self.base_profile = None self.press_delay = self._get_int("press_delay", 50) self.release_delay = self._get_int("release_delay", 50) # Launch self.launch_pattern = self.parser.get("LAUNCH", "pattern").strip() \ if self.parser.has_option("LAUNCH", "pattern") else None self.monitor = self.parser.get("LAUNCH", "monitor").strip().split(",") \ if self.parser.has_option("LAUNCH", "monitor") else ["stdout"] self.activate_on_launch = self.parser.getboolean("LAUNCH", "activate_on_launch") \ if self.parser.has_option("LAUNCH", "activate_on_launch") else False # Bank sections for activate_on in [ g15driver.KEY_STATE_UP, g15driver.KEY_STATE_DOWN, g15driver.KEY_STATE_HELD ]: for i in range(1, 4): section_name = "m%d" % i if activate_on != g15driver.KEY_STATE_UP: section_name = "%s-%s" % (section_name, activate_on) if not self.parser.has_section(section_name): self.parser.add_section(section_name) self.mkey_color[i] = g15convert.to_rgb( self.parser.get( section_name, "backlight_color")) if self.parser.has_option( section_name, "backlight_color") else None memory_macros = [] self.macros[activate_on].append(memory_macros) for option in self.parser.options(section_name): if option.startswith("keys_") and option.endswith("_name"): key_list_key = option[5:-5] macro_obj = G15Macro(self, i, key_list_key, activate_on) macro_obj._load() memory_macros.append(macro_obj)
def load(self, filename = None, fd = None): """ Load the profile from disk """ # Initial values self.macros = { g15driver.KEY_STATE_UP: [], g15driver.KEY_STATE_DOWN: [], g15driver.KEY_STATE_HELD: [] } self.mkey_color = {} # Load macro file if self.id != -1 or filename is not None or fd is not None: if ( isinstance(filename, str) or isinstance(filename, unicode) ) and os.path.exists(filename): self.read_only = not os.stat(filename)[0] & stat.S_IWRITE self.parser.readfp(codecs.open(filename, "r", "utf8")) elif fd is not None: self.read_only = True self.parser.readfp(fd) else: self.read_only = False # Macro file format version. Try to keep macro files backwardly and # forwardly compatible if self.parser.has_option("DEFAULT", "version"): self.version = float(self.parser.get("DEFAULT", "version").strip()) else: self.version = 1.0 # Info section self.name = self.parser.get("DEFAULT", "name").strip() if self.parser.has_option("DEFAULT", "name") else "" self.icon = self.parser.get("DEFAULT", "icon").strip() if self.parser.has_option("DEFAULT", "icon") else "" self.background = self.parser.get("DEFAULT", "background").strip() if self.parser.has_option("DEFAULT", "background") else "" self.author = self.parser.get("DEFAULT", "author").strip() if self.parser.has_option("DEFAULT", "author") else "" self.window_name = self.parser.get("DEFAULT", "window_name").strip() if self.parser.has_option("DEFAULT", "window_name") else "" self.models = self.parser.get("DEFAULT", "models").strip().split(",") if self.parser.has_option("DEFAULT", "models") else [ self.device.model_id ] self.plugins_mode = self.parser.get("DEFAULT", "plugins_mode").strip() if self.parser.has_option("DEFAULT", "plugins_mode") else ALL_PLUGINS self.selected_plugins = self.parser.get("DEFAULT", "selected_plugins").strip().split(",") \ if self.parser.has_option("DEFAULT", "selected_plugins") else [ ] self.activate_on_focus = self.parser.getboolean("DEFAULT", "activate_on_focus") if self.parser.has_option("DEFAULT", "activate_on_focus") else False self.send_delays = self.parser.getboolean("DEFAULT", "send_delays") if self.parser.has_option("DEFAULT", "send_delays") else False self.fixed_delays = self.parser.getboolean("DEFAULT", "fixed_delays") if self.parser.has_option("DEFAULT", "fixed_delays") else False self.base_profile = self.parser.get("DEFAULT", "base_profile").strip() if self.parser.has_option("DEFAULT", "base_profile") else "" if self.base_profile == "-1": # For version 1.0 profile format compatibility self.base_profile = None self.press_delay = self._get_int("press_delay", 50) self.release_delay = self._get_int("release_delay", 50) # Launch self.launch_pattern = self.parser.get("LAUNCH", "pattern").strip() \ if self.parser.has_option("LAUNCH", "pattern") else None self.monitor = self.parser.get("LAUNCH", "monitor").strip().split(",") \ if self.parser.has_option("LAUNCH", "monitor") else [ "stdout" ] self.activate_on_launch = self.parser.getboolean("LAUNCH", "activate_on_launch") \ if self.parser.has_option("LAUNCH", "activate_on_launch") else False # Bank sections for activate_on in [ g15driver.KEY_STATE_UP, g15driver.KEY_STATE_DOWN, g15driver.KEY_STATE_HELD ]: for i in range(1, 4): section_name = "m%d" % i if activate_on != g15driver.KEY_STATE_UP: section_name = "%s-%s" % ( section_name, activate_on ) if not self.parser.has_section(section_name): self.parser.add_section(section_name) self.mkey_color[i] = g15convert.to_rgb(self.parser.get(section_name, "backlight_color")) if self.parser.has_option(section_name, "backlight_color") else None memory_macros = [] self.macros[activate_on].append(memory_macros) for option in self.parser.options(section_name): if option.startswith("keys_") and option.endswith("_name"): key_list_key = option[5:-5] macro_obj = G15Macro(self, i, key_list_key, activate_on) macro_obj._load() memory_macros.append(macro_obj)
def to_rgb(string_rgb, default=None): return g15convert.to_rgb(string_rgb, default)