示例#1
0
    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)
示例#2
0
 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)
示例#3
0
def to_rgb(string_rgb, default=None):
    return g15convert.to_rgb(string_rgb, default)