예제 #1
0
    def upadte_detected_as(self):
        driver = Driver()
        driver.find_device()

        if driver.has_device():
            self.label_detected_as.set_text(driver.computer.NAME)
        else:
            self.label_detected_as.set_text(_EMPTY_MODEL)
예제 #2
0
    def update_models_liststore(self):

        default_computer_name = self._get_default_computer_name()
        driver = Driver()

        self.liststore_computer_models.clear()
        for computer in computer_factory.get_computers():
            is_selected = computer.NAME == default_computer_name
            driver.load_device(computer.VENDOR_ID, computer.PRODUCT_ID)

            self.liststore_computer_models.append(
                [computer.NAME, is_selected, True,
                 driver.has_device()])
예제 #3
0
    def __init__(self, driver=Driver()):

        if not driver.has_device():
            print_error("The computer is not supported.")
            self._driver = None
        else:
            self._driver = driver
            self.__constructor = Constructor(self._driver.computer)
예제 #4
0
파일: Daemon.py 프로젝트: tuxkernel/akbl
    def __init__(self, loop_self):

        driver = Driver()
        driver.load_default_device()
        self._controller = Controller(driver)

        computer = self._controller.get_computer()

        if computer is None:
            exit(1)

        self._computer = computer

        self._COMPUTER_BLOCKS_TO_SAVE = (
            (True, self._computer.BLOCK_LOAD_ON_BOOT),
            #(True, self._computer.BLOCK_STANDBY),
            #(True, self._computer.BLOCK_AC_POWER),
            #(#True, self._computer.BLOCK_CHARGING),
            #(True, self._computer.BLOCK_BATT_SLEEPING),
            #(True, self._computer.BLOCK_BAT_POWER),
            #(True, self._computer.BLOCK_BATT_CRITICAL),
            (False, self._computer.BLOCK_LOAD_ON_BOOT))

        self.loop_self = loop_self

        # Initialize the daemon
        #
        self._user = '******'
        self._paths = Paths()
        self._paths = Paths(self._user)
        self._ccp = CCParser(self._paths._configuration_file,
                             'GUI Configuration')
        self._indicator_pyro = False

        self.reload_configurations(self._user)
        self._lights_state = False
예제 #5
0
    def on_togglebutton_find_device_clicked(self, button, data=None):

        # try to load the driver
        if self.checkbutton_hex_format_when_finding.get_active():
            vendor = int(self.entry_id_vendor.get_text(), 16)
            product = int(self.entry_id_product.get_text(), 16)
        else:
            vendor = int(self.entry_id_vendor.get_text())
            product = int(self.entry_id_product.get_text())

        self._testing_driver = Driver()
        self._testing_driver.load_device(id_vendor=vendor, id_product=product, empty_computer=True)

        # try to load the controller
        if self._testing_driver.has_device():
            
            self._testing_controller = Controller(self._testing_driver)
            
            self._computer = self._testing_driver.computer
            
            self._COMPUTER_BLOCKS_TO_SAVE = (#(True, self._computer.BLOCK_LOAD_ON_BOOT),
                                                #(True, self._computer.BLOCK_STANDBY),
                                                #(True, self._computer.BLOCK_AC_POWER),
                                                #(#True, self._computer.BLOCK_CHARGING),
                                                #(True, self._computer.BLOCK_BATT_SLEEPING),
                                                #(True, self._computer.BLOCK_BAT_POWER),
                                                #(True, self._computer.BLOCK_BATT_CRITICAL),
                                                (False, self._computer.BLOCK_LOAD_ON_BOOT),)
            
            # Add the general computer variables
            for attr_name, attr_value in sorted(vars(self._computer).items()):
                if not attr_name.startswith("_") and isinstance(attr_value, int):
                    
                    widget_box = Gtk.Box()
                    
                    widget_label = Gtk.Label(attr_name)
                    
                    widget_entry = Gtk.Entry()
                    widget_entry.set_text(str(attr_value))
                    widget_entry.connect("changed", self.on_dynamic_entry_general_properties_changed, attr_name)
                    
                    
                    widget_box.pack_start(widget_label, expand=False, fill=True, padding=5)
                    widget_box.pack_start(widget_entry, expand=False, fill=False, padding=5)
                    
                    self.config_box.pack_start(widget_box, expand=False, fill=False, padding=1)


            self.config_box.show_all()


            # activate the window
            
            self.box_block_testing.set_sensitive(True)
            self.entry_id_vendor.set_sensitive(False)
            self.entry_id_product.set_sensitive(False)
            gtk_append_text_to_buffer(self.textbuffer_block_testing, TEXT_DEVICE_FOUND.format(vendor,product))

            self.combobox_default_blocks.set_active(0)

        else:
            self.box_block_testing.set_sensitive(False)
            self.togglebutton_find_device.set_active(False)
            self.entry_id_vendor.set_sensitive(True)
            self.entry_id_product.set_sensitive(True)
            gtk_append_text_to_buffer(self.textbuffer_block_testing,TEXT_DEVICE_NOT_FOUND.format(vendor,product))
예제 #6
0
class BlockTesting(Gtk.Window):

    def __init__(self):

        self._paths = Paths()

        """
            Glade
        """
        builder = Gtk.Builder()
        builder.add_from_file(self._paths._block_testing_glade_file)
        builder.connect_signals(self)

        glade_object_names = (
            'window_block_testing',
                'combobox_block_modes',
                'colorbutton_1_block',
                'colorbutton_2_block',
                'config_box',
                'textbuffer_device_info',
                'combobox_default_blocks',
                'textbuffer_block_testing',
                'entry_block_testing',
                'entry_id_vendor',
                'entry_id_product',
                'togglebutton_find_device',
                'box_block_testing',
                'spinbutton_block_speed',
                'viewport_common_block',
                'button_update_common_blocks',
                'button_block_make_test',
                'checkbutton_auto_turn_off',
                'checkbutton_hex_format_when_finding',
        )


        # load the glade objects
        for glade_object in glade_object_names:
            setattr(self, glade_object, builder.get_object(glade_object))

        # get the computer info
        computer_device_info = get_alienware_device_info()
        
        # Fill the computer data
        self.textbuffer_device_info.set_text(computer_device_info)

        # Fill the idProduct and idVendor entries if possible
        if 'idVendor' in computer_device_info and 'idProduct' in computer_device_info:
            for line in computer_device_info.split('\n'):
                if 'idVendor' in line:
                    self.entry_id_vendor.set_text(line.split()[1])
                elif 'idProduct' in line:
                    self.entry_id_product.set_text(line.split()[1])
        
        # Display the window
        self.window_block_testing.show_all()

    def on_entry_block_testing_changed(self, entry, data=None):
        text = entry.get_text()
        try:
            value = int(text)

            if value < 0:
                self.button_block_make_test.set_sensitive(False)
            else:
                self.button_block_make_test.set_sensitive(True)

        except:
            self.button_block_make_test.set_sensitive(False)

    def on_togglebutton_find_device_clicked(self, button, data=None):

        # try to load the driver
        if self.checkbutton_hex_format_when_finding.get_active():
            vendor = int(self.entry_id_vendor.get_text(), 16)
            product = int(self.entry_id_product.get_text(), 16)
        else:
            vendor = int(self.entry_id_vendor.get_text())
            product = int(self.entry_id_product.get_text())

        self._testing_driver = Driver()
        self._testing_driver.load_device(id_vendor=vendor, id_product=product, empty_computer=True)

        # try to load the controller
        if self._testing_driver.has_device():
            
            self._testing_controller = Controller(self._testing_driver)
            
            self._computer = self._testing_driver.computer
            
            self._COMPUTER_BLOCKS_TO_SAVE = (#(True, self._computer.BLOCK_LOAD_ON_BOOT),
                                                #(True, self._computer.BLOCK_STANDBY),
                                                #(True, self._computer.BLOCK_AC_POWER),
                                                #(#True, self._computer.BLOCK_CHARGING),
                                                #(True, self._computer.BLOCK_BATT_SLEEPING),
                                                #(True, self._computer.BLOCK_BAT_POWER),
                                                #(True, self._computer.BLOCK_BATT_CRITICAL),
                                                (False, self._computer.BLOCK_LOAD_ON_BOOT),)
            
            # Add the general computer variables
            for attr_name, attr_value in sorted(vars(self._computer).items()):
                if not attr_name.startswith("_") and isinstance(attr_value, int):
                    
                    widget_box = Gtk.Box()
                    
                    widget_label = Gtk.Label(attr_name)
                    
                    widget_entry = Gtk.Entry()
                    widget_entry.set_text(str(attr_value))
                    widget_entry.connect("changed", self.on_dynamic_entry_general_properties_changed, attr_name)
                    
                    
                    widget_box.pack_start(widget_label, expand=False, fill=True, padding=5)
                    widget_box.pack_start(widget_entry, expand=False, fill=False, padding=5)
                    
                    self.config_box.pack_start(widget_box, expand=False, fill=False, padding=1)


            self.config_box.show_all()


            # activate the window
            
            self.box_block_testing.set_sensitive(True)
            self.entry_id_vendor.set_sensitive(False)
            self.entry_id_product.set_sensitive(False)
            gtk_append_text_to_buffer(self.textbuffer_block_testing, TEXT_DEVICE_FOUND.format(vendor,product))

            self.combobox_default_blocks.set_active(0)

        else:
            self.box_block_testing.set_sensitive(False)
            self.togglebutton_find_device.set_active(False)
            self.entry_id_vendor.set_sensitive(True)
            self.entry_id_product.set_sensitive(True)
            gtk_append_text_to_buffer(self.textbuffer_block_testing,TEXT_DEVICE_NOT_FOUND.format(vendor,product))

    def on_button_block_make_test_clicked(self, button, data=None):
        
        if self.checkbutton_auto_turn_off.get_active():
            self.on_button_block_testing_lights_off_clicked(button)
            
        try:
            zone_left_color = self.colorbutton_1_block.get_color()
            zone_left_color = rgb_to_hex([zone_left_color.red/65535.0, 
                                          zone_left_color.green/65535.0, 
                                          zone_left_color.blue/65535.0])

            zone_right_color = self.colorbutton_2_block.get_color()
            zone_right_color = rgb_to_hex([zone_right_color.red/65535.0, 
                                           zone_right_color.green/65535.0, 
                                           zone_right_color.blue/65535.0])

            zone_block = int(self.entry_block_testing.get_text())
            speed = self.spinbutton_block_speed.get_value_as_int()

            index = self.combobox_block_modes.get_active()
            model = self.combobox_block_modes.get_model()
            zone_mode = model[index][0]
            zone_mode = zone_mode.lower()

            # Log the test
            #
            gtk_append_text_to_buffer(self.textbuffer_block_testing, TEXT_BLOCK_TEST.format(zone_block,
                                                                                            zone_mode,
                                                                                            speed,
                                                                                            zone_left_color,
                                                                                            zone_right_color))

            #   Test
            #
            self._testing_controller.erase_config()
            
            for save, block in self._COMPUTER_BLOCKS_TO_SAVE:
                    
                self._testing_controller.add_block_line(save=save, block=block)
                self._testing_controller.add_reset_line(self._computer.RESET_ALL_LIGHTS_ON)
                self._testing_controller.add_speed_line(speed)
                self._testing_controller.add_color_line(zone_block, zone_mode, zone_left_color, zone_right_color)
                self._testing_controller.end_colors_line()
                self._testing_controller.end_block_line()
                
            self._testing_controller.apply_config()
     
 
        except Exception:
            gtk_append_text_to_buffer(self.textbuffer_block_testing, '\n' + format_exc() + '\n')

    def on_button_block_testing_lights_off_clicked(self, button, data=None):
        try:

            self._testing_controller.erase_config()
            
            for save, block in self._COMPUTER_BLOCKS_TO_SAVE:
                self._testing_controller.add_block_line(save, block)
                self._testing_controller.add_reset_line(self._computer.RESET_ALL_LIGHTS_OFF)
                
            self._testing_controller.apply_config()

            gtk_append_text_to_buffer(self.textbuffer_block_testing, '\n' + TEXT_BLOCK_LIGHTS_OFF + '\n')
            
        except Exception:
            gtk_append_text_to_buffer(self.textbuffer_block_testing, '\n' + format_exc())

    def on_checkbutton_protect_common_blocks_clicked(self, checkbutton, data=None):
        if checkbutton.get_active():
            self.viewport_common_block.set_sensitive(False)
        else:
            self.viewport_common_block.set_sensitive(True)

    def on_combobox_default_blocks_changed(self, combobox, data=None):
        index = combobox.get_active()
        model = combobox.get_model()
        value = model[index][0]

        if value == -1:
            self.entry_block_testing.set_sensitive(True)
        else:
            self.entry_block_testing.set_sensitive(False)
            self.entry_block_testing.set_text(str(value))

    def on_dynamic_entry_general_properties_changed(self, entry, variable_name):
        
        try:
            entry_value = int(entry.get_text())
        except:
            gtk_append_text_to_buffer(self.textbuffer_block_testing, "\n {} must be an integer.".format(variable_name, entry_value))
            return
            
        setattr(self._testing_driver.computer, variable_name, entry_value)
        gtk_append_text_to_buffer(self.textbuffer_block_testing, "\n {} = {}".format(variable_name, entry_value))
        

    

    def on_window_block_testing_destroy(self, data=None):
        Gtk.main_quit()
예제 #7
0
    def on_togglebutton_find_device_clicked(self, button, data=None):

        # try to load the driver
        if self.checkbutton_hex_format_when_finding.get_active():
            vendor = int(self.entry_id_vendor.get_text(), 16)
            product = int(self.entry_id_product.get_text(), 16)
        else:
            vendor = int(self.entry_id_vendor.get_text())
            product = int(self.entry_id_product.get_text())

        self._testing_driver = Driver()
        self._testing_driver.load_device(id_vendor=vendor,
                                         id_product=product,
                                         empty_computer=True)

        # try to load the controller
        if self._testing_driver.has_device():

            self._testing_controller = Controller(self._testing_driver)

            self._computer = self._testing_driver.computer

            self._COMPUTER_BLOCKS_TO_SAVE = (  #(True, self._computer.BLOCK_LOAD_ON_BOOT),
                #(True, self._computer.BLOCK_STANDBY),
                #(True, self._computer.BLOCK_AC_POWER),
                #(#True, self._computer.BLOCK_CHARGING),
                #(True, self._computer.BLOCK_BATT_SLEEPING),
                #(True, self._computer.BLOCK_BAT_POWER),
                #(True, self._computer.BLOCK_BATT_CRITICAL),
                (False, self._computer.BLOCK_LOAD_ON_BOOT), )

            # Add the general computer variables
            row_index = 0
            for attr_name, attr_value in sorted(vars(self._computer).items()):
                if not attr_name.startswith("_") and isinstance(
                        attr_value, int):

                    label = Gtk.Label(attr_name)
                    label.set_xalign(0)

                    adjustment = Gtk.Adjustment(0, 0, 9999999999999, 1, 1, 0)
                    spinbutton = Gtk.SpinButton()
                    spinbutton.set_adjustment(adjustment)
                    spinbutton.set_value(attr_value)
                    spinbutton.set_digits(0)
                    spinbutton.set_numeric(True)

                    spinbutton.connect(
                        "value-changed",
                        self.on_dynamic_spin_general_properties_changed,
                        attr_name)

                    self.config_grid.attach(label, 0, row_index, 1, 1)
                    self.config_grid.attach(spinbutton, 1, row_index, 1, 1)
                    row_index += 1

            self.config_grid.show_all()

            # activate the window

            self.box_block_testing.set_sensitive(True)
            self.box_pyusb.set_sensitive(True)
            self.entry_id_vendor.set_sensitive(False)
            self.entry_id_product.set_sensitive(False)
            gtk_append_text_to_buffer(
                self.textbuffer_block_testing,
                TEXT_DEVICE_FOUND.format(vendor, product))

            self.combobox_default_blocks.set_active(0)

        else:
            self.box_block_testing.set_sensitive(False)
            self.box_pyusb.set_sensitive(False)
            self.togglebutton_find_device.set_active(False)
            self.entry_id_vendor.set_sensitive(True)
            self.entry_id_product.set_sensitive(True)
            gtk_append_text_to_buffer(
                self.textbuffer_block_testing,
                TEXT_DEVICE_NOT_FOUND.format(vendor, product))