def build_menu(self, node, label, option): """Build an OptionMenu widget, only one item of which may be selected. <menu name='...' label='...'> <item value='...' label='...'/> <item value='...' label='...'/> </menu>""" values = [] has_combo = hasattr(g, 'combo_box_new_text') if has_combo: option_menu = g.combo_box_new_text() option_menu.get_history = option_menu.get_active option_menu.set_history = option_menu.set_active else: option_menu = g.OptionMenu() menu = g.Menu() if label: box = g.HBox(False, 4) label_wid = self.make_sized_label(label) label_wid.set_alignment(1.0, 0.5) box.pack_start(label_wid, False, True, 0) box.pack_start(option_menu, True, True, 0) else: box = None #self.may_add_tip(option_menu, node) for item in node.getElementsByTagName('item'): assert item.hasAttribute('value') value = item.getAttribute('value') label_item = self.trans(item.getAttribute('label')) or value if has_combo: option_menu.append_text(label_item) else: menu.append(g.MenuItem(label_item)) values.append(value) if not has_combo: menu.show_all() option_menu.set_menu(menu) option_menu.connect('changed', lambda e: self.check_widget(option)) def get(): return values[option_menu.get_history()] def set(): try: option_menu.set_history(values.index(option.value)) except ValueError: print "Value '%s' not in combo list" % option.value self.handlers[option] = (get, set) return [box or option_menu]
def build_main_area(self): self.vbox.add(self.save_area) frame = g.Frame(None) frame.set_shadow_type(g.SHADOW_NONE) if use_combo_box: self.operation = g.combo_box_new_text() else: self.operation = g.OptionMenu() frame.add(self.operation) self.vbox.pack_start(frame, False, True, 0) frame.set_border_width(3) frame.show_all() self.updating = 0 self.delete_choice = g.CheckButton(_('_Delete file afterwards?')) self.vbox.pack_start(self.delete_choice, True, True, 0) if not use_combo_box: self.ops_menu = g.Menu() self.operation.set_menu(self.ops_menu) else: self.ops_menu = None
def make_advanced_box(self): # The advanced settings expander = g.Expander(_('Advanced Options')) expandvbox = g.VBox(FALSE, 4) expander.add(expandvbox) sound_frame = g.Frame(_('Sound')) #sound_frame.set_shadow_type(g.SHADOW_NONE) label_widget = sound_frame.get_label_widget() label_widget.set_markup('<b>' + _('Sound') + '</b>') expandvbox.pack_start(sound_frame, FALSE, TRUE, 0) sound_box = g.HBox(FALSE, 4) sound_box.set_border_width(8) sound_frame.add(sound_box) sound_choice = g.combo_box_new_text() self.sound_choice = sound_choice sound_choice.append_text(_('Use default sound')) sound_choice.append_text(_('Use custom sound')) sound_choice.append_text(_('Disabled')) sound_choice.set_active(0) sound_box.pack_start(sound_choice, FALSE, FALSE, 0) #sound_entry = g.Entry() sound_entry = g.FileChooserButton('Sound File') self.sound_entry = sound_entry sound_entry.set_sensitive(False) sound_box.pack_start(sound_entry, TRUE, TRUE, 0) sound_choice.connect('changed', self.sound_choice_changed) # TODO: More advanced options can be added to the 'expandbox' vbox, each # in its own frame. return expander