def create_simple_button(self, name, callback=None): ''' Internal function to create simple button. ''' button = DisableButton( (ui_theme.get_pixbuf("spin/spin_arrow_%s_normal.png" % name), ui_theme.get_pixbuf("spin/spin_arrow_%s_hover.png" % name), ui_theme.get_pixbuf("spin/spin_arrow_%s_press.png" % name), ui_theme.get_pixbuf("spin/spin_arrow_%s_disable.png" % name)), ) if callback: button.connect("button-press-event", callback) button.connect("button-release-event", self.handle_key_release) return button
def __init__( self, items=[], droplist_height=None, select_index=0, max_width=None, fixed_width=None, min_width=120, min_height=100, editable=False, ): ''' Initialize ComboBox class. @param items: Init item list, default is empty list. @param droplist_height: The height of droplist, default is None that droplist's height will calculate with items' height automatically. @param select_index: Init index of selected item, default is 0. @param max_width: Maximum width of combobox, default is None. @param fixed_width: Fixed width of combobox, after you set this value combobox won't care the width of droplist and items, default is None. @param min_width: Minimum width of combobox, default is 120 pixels. @param min_height: Minimum height of combobox, default is 100 pixels. @param editable: Set True to make combobox can edit, default is False. ''' gtk.VBox.__init__(self) self.set_can_focus(True) # Init variables. self.focus_flag = False self.select_index = select_index self.editable = editable if self.editable: self.padding_x = 0 else: self.padding_x = 5 self.combo_list = ComboList(min_width=min_width, max_width=max_width, fixed_width=fixed_width, min_height=min_height, max_height=droplist_height) self.drop_button = DisableButton( (ui_theme.get_pixbuf("combo/dropbutton_normal.png"), ui_theme.get_pixbuf("combo/dropbutton_hover.png"), ui_theme.get_pixbuf("combo/dropbutton_press.png"), ui_theme.get_pixbuf("combo/dropbutton_disable.png")), ) self.drop_button_width = ui_theme.get_pixbuf( "combo/dropbutton_normal.png").get_pixbuf().get_width() self.panel_align = gtk.Alignment() self.panel_align.set(0.5, 0.5, 0.0, 0.0) if self.editable: self.label = Entry() else: self.label = Label("", enable_select=False, enable_double_click=False) self.label.connect("button-press-event", self.on_drop_button_press) self.panel_align.set_padding(0, 0, self.padding_x, 0) self.panel_align.add(self.label) # Init items. self.add_items(items) # set selected index if len(items) > 0: self.set_select_index(select_index) hbox = gtk.HBox() hbox.pack_start(self.panel_align, True, False) hbox.pack_start(self.drop_button, False, False) box_align = gtk.Alignment() box_align.set(0.5, 0.5, 0.0, 0.0) box_align.add(hbox) self.add(box_align) # Connect signals. box_align.connect("expose-event", self.on_expose_combo_frame) self.drop_button.connect("button-press-event", self.on_drop_button_press) self.connect("focus-in-event", self.on_focus_in_combo) self.connect("focus-out-event", self.on_focus_out_combo) self.combo_list.treeview.connect("button-press-item", self.on_combo_single_click)