class ComboBoxOption(Option): def __init__(self, text, name, entries, tooltip=''): Option.__init__(self, text, name, tooltip=tooltip) self.combo = CustomComboBoxEntry(Gtk.ComboBox.new_with_entry()) self.combo.set_entries(entries) self.pack_start(self.combo.combo_box, False, False, 0) def get_value(self): return self.combo.get_active_text()
class ComboBoxOption(Option): def __init__(self, text, name, entries): Option.__init__(self, text, name) self.combo = CustomComboBoxEntry(gtk.ComboBoxEntry()) self.combo.set_entries(entries) self.pack_start(self.combo.combo_box, False) def get_value(self): return self.combo.get_active_text()
class NewEntryDialog: def __init__(self, main_frame): dialog = main_frame.builder.get_object('new_entry_dialog') self.dialog = dialog dialog.set_transient_for(main_frame.main_frame) self.main_frame = main_frame self.journal = self.main_frame.journal self.categories_combo_box = CustomComboBoxEntry( main_frame.builder.get_object('categories_combo_box')) self.new_entry_combo_box = CustomComboBoxEntry( main_frame.builder.get_object('entry_combo_box')) # Let the user finish a new category entry by hitting ENTER def respond(widget): if self._text_entered(): self.dialog.response(Gtk.ResponseType.OK) self.new_entry_combo_box.entry.connect('activate', respond) self.categories_combo_box.entry.connect('activate', respond) self.categories_combo_box.combo_box.connect('changed', self.on_category_changed) def on_category_changed(self, widget): '''Show old entries in ComboBox when a new category is selected''' category = self.categories_combo_box.get_active_text() old_entries = self.journal.get_entries(category) self.new_entry_combo_box.set_entries(old_entries) # only make the entry submittable, if text has been entered self.dialog.set_response_sensitive(Gtk.ResponseType.OK, self._text_entered()) def _text_entered(self): return bool(self.categories_combo_box.get_active_text()) def show_dialog(self, category=''): # Use last used category. last_category = self.categories_tree_view.last_category # Has to be first, because it may be populated later self.new_entry_combo_box.clear() # Show the list of categories self.categories_combo_box.set_entries( self.categories_tree_view.categories) self.categories_combo_box.set_active_text(category or last_category or '') if category: # We already know the category so let's get the entry self.new_entry_combo_box.combo_box.grab_focus() else: self.categories_combo_box.combo_box.grab_focus() response = self.dialog.run() self.dialog.hide() if not response == Gtk.ResponseType.OK: return category_name = self.categories_combo_box.get_active_text() if not self.categories_tree_view.check_category(category_name): return entry_text = self.new_entry_combo_box.get_active_text() self.categories_tree_view.add_entry(category_name, entry_text) # Update cloud self.main_frame.cloud.update()
class NewEntryDialog: def __init__(self, main_frame): dialog = main_frame.builder.get_object('new_entry_dialog') self.dialog = dialog dialog.set_transient_for(main_frame.main_frame) self.main_frame = main_frame self.journal = self.main_frame.journal self.categories_combo_box = CustomComboBoxEntry( main_frame.builder.get_object('categories_combo_box')) self.new_entry_combo_box = CustomComboBoxEntry( main_frame.builder.get_object('entry_combo_box')) # Let the user finish a new category entry by hitting ENTER def respond(widget): if self._text_entered(): self.dialog.response(Gtk.ResponseType.OK) self.new_entry_combo_box.entry.connect('activate', respond) self.categories_combo_box.entry.connect('activate', respond) self.categories_combo_box.combo_box.connect('changed', self.on_category_changed) def on_category_changed(self, widget): '''Show old entries in ComboBox when a new category is selected''' category = self.categories_combo_box.get_active_text() old_entries = self.journal.get_entries(category) self.new_entry_combo_box.set_entries(old_entries) # only make the entry submittable, if text has been entered self.dialog.set_response_sensitive(Gtk.ResponseType.OK, self._text_entered()) def _text_entered(self): return bool(self.categories_combo_box.get_active_text()) def show_dialog(self, category=''): # Use last used category. last_category = self.categories_tree_view.last_category # Has to be first, because it may be populated later self.new_entry_combo_box.clear() # Show the list of categories self.categories_combo_box.set_entries(self.categories_tree_view.categories) self.categories_combo_box.set_active_text(category or last_category or '') if category: # We already know the category so let's get the entry self.new_entry_combo_box.combo_box.grab_focus() else: self.categories_combo_box.combo_box.grab_focus() response = self.dialog.run() self.dialog.hide() if not response == Gtk.ResponseType.OK: return category_name = self.categories_combo_box.get_active_text() if not self.categories_tree_view.check_category(category_name): return entry_text = self.new_entry_combo_box.get_active_text() self.categories_tree_view.add_entry(category_name, entry_text) # Update cloud self.main_frame.cloud.update()