class PowerGui(gtk.VBox): def __init__(self, power_settings): gtk.VBox.__init__(self) self.power_settings = power_settings self.hbox = gtk.HBox() # init top widgets. self.icon = vtk_theme.name.get_image("power/power_icon.png") self.label = gtk.Label(_("Power")) self.label.connect("expose-event", self.label_expose_event) self.hbox.pack_start(self.icon, False, False) self.hbox.pack_start(self.label, False, False) # init mid widgets. self.top_line_ali = gtk.Alignment(1.0, 1.0, 1.0, 1.0) self.top_line_ali.set_padding(5, 5, 0, 0) self.top_line = HSeparator(HSEPARATOR_COLOR, 0, 0) self.top_line_ali.add(self.top_line) self.one_mode_btn = SelectButton(_("Balanced"), ali_padding=125) self.two_mode_btn = SelectButton(_("Power saver"), ali_padding=125) self.tree_mode_btn = SelectButton(_("High performance"), ali_padding=125) self.customized_mode_btn = SelectButton(_("Custom"), ali_padding=125) self.one_mode_btn.connect("clicked", self.one_mode_btn_clicked) self.two_mode_btn.connect("clicked", self.two_mode_btn_clicked) self.tree_mode_btn.connect("clicked", self.tree_mode_btn_clicked) self.customized_mode_btn.connect("clicked", self.__on_customized_mode_btn_clicked) self.mode_height = 25 self.one_mode_btn.set_size_request(-1, self.mode_height) self.two_mode_btn.set_size_request(-1, self.mode_height) self.tree_mode_btn.set_size_request(-1, self.mode_height) self.customized_mode_btn.set_size_request(-1, self.mode_height) # init bottom widgets self.bottom_line_ali = gtk.Alignment(1.0, 1.0, 1.0, 1.0) self.bottom_line_ali.set_padding(5, 5, 0, 0) self.bottom_line = HSeparator(HSEPARATOR_COLOR, 0, 0) self.bottom_line_ali.add(self.bottom_line) self.click_btn = SelectButton(_("Advanced..."), ali_padding=5) self.click_btn.set_size_request(-1, 25) # add all widgets. self.pack_start(self.hbox, False, False) self.pack_start(self.top_line_ali, False, False) self.pack_start(self.one_mode_btn, False, False) self.pack_start(self.two_mode_btn, False, False) self.pack_start(self.tree_mode_btn, False, False) self.pack_start(self.customized_mode_btn, False, False) self.pack_start(self.bottom_line_ali, False, False) self.pack_start(self.click_btn, False, False) def label_expose_event(self, widget, event): cr = widget.window.cairo_create() rect = widget.allocation # draw_text(cr, widget.get_label(), rect.x + 5, rect.y, text_color="#000000") # return True def one_mode_btn_clicked(self, widget): self.set_mode_bit(widget) self.power_settings.set_string("current-plan", "balance") def two_mode_btn_clicked(self, widget): self.set_mode_bit(widget) self.power_settings.set_string("current-plan", "saving") def tree_mode_btn_clicked(self, widget): self.set_mode_bit(widget) self.power_settings.set_string("current-plan", "high-performance") def __on_customized_mode_btn_clicked(self, widget): self.set_mode_bit(widget) self.power_settings.set_string("current-plan", "customized") def set_mode_bit(self, widget): self.one_mode_btn.text_color = "#000000" self.two_mode_btn.text_color = "#000000" self.tree_mode_btn.text_color = "#000000" self.customized_mode_btn.text_color = "#000000" self.one_mode_btn.queue_draw() self.two_mode_btn.queue_draw() self.tree_mode_btn.queue_draw() self.customized_mode_btn.queue_draw() # set press color. widget.text_color = "#3da1f7"