def __init__(self, glade_file_name, title, name_validator_func, name='', hours=0, minutes=0, seconds=0, command='', next_timer='', auto_start=False): self._valid_name_func = name_validator_func glade_widgets = glade.XML(glade_file_name, 'add_edit_preset_dialog') self._dialog = glade_widgets.get_widget('add_edit_preset_dialog') self._ok_button = glade_widgets.get_widget('ok_button') self._cancel_button = glade_widgets.get_widget('cancel_button') self._name_entry = glade_widgets.get_widget('name_entry') duration_chooser_container = glade_widgets.get_widget('duration_chooser_container') self._duration_chooser = DurationChooser(gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)) self._command_entry = glade_widgets.get_widget('command_entry') self._next_timer_entry = glade_widgets.get_widget('next_timer_entry') self._auto_start_check = glade_widgets.get_widget('auto_start_check') duration_chooser_container.pack_start(self._duration_chooser) self._dialog.set_title(title) self._dialog.set_default_response(gtk.RESPONSE_OK) self._name_entry.set_text(name) self._command_entry.set_text(command) self._duration_chooser.set_duration(hours, minutes, seconds) self._next_timer_entry.set_text(next_timer) self._auto_start_check.set_active(auto_start) self._name_entry.connect('changed', lambda entry: self._check_for_valid_save_preset_input()) self._duration_chooser.connect('duration-changed', lambda chooser: self._check_for_valid_save_preset_input()) self._duration_chooser.show()
def __init__(self, glade_file_name, name_validator_func, presets_store, preset_display_func): gobject.GObject.__init__(self) self._valid_name_func = name_validator_func; self._presets_store = presets_store self._preset_display_func = preset_display_func self._presets_list = ScrollableButtonList() labels_size_group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) self._duration_chooser = DurationChooser(labels_size_group) glade_widgets = glade.XML(glade_file_name, 'start_timer_dialog') self._dialog = glade_widgets.get_widget('start_timer_dialog') self._ok_button = glade_widgets.get_widget('ok_button') name_label = glade_widgets.get_widget('name_label') self._name_entry = glade_widgets.get_widget('name_entry') self._save_button = glade_widgets.get_widget('save_button') duration_chooser_container = glade_widgets.get_widget('duration_chooser_container') presets_chooser_container = glade_widgets.get_widget('presets_chooser_container') self._presets_section = glade_widgets.get_widget('presets_section') #: The TextEntry control for running a custom command self._command_entry = glade_widgets.get_widget('command_entry') #: The "Invalid Command" label self._invalid_cmd_label = glade_widgets.get_widget('invalid_command_label') #: The next timer combo box self._next_timer_combo = glade_widgets.get_widget('next_timer_combo_entry') self._next_timer_combo.set_model(self._presets_store) self._next_timer_combo.set_text_column(0) # The column to be shown #: The auto-start check button. self._auto_start_check = glade_widgets.get_widget('auto_start_check') labels_size_group.add_widget(name_label) self._dialog.set_default_response(gtk.RESPONSE_OK) duration_chooser_container.pack_start(self._duration_chooser) presets_chooser_container.pack_start(self._presets_list) self._dialog.connect('response', self._on_dialog_response) self._dialog.connect('delete-event', self._dialog.hide_on_delete) self._dialog.add_events(gdk.BUTTON_PRESS_MASK) self._duration_chooser.connect('duration-changed', self._on_duration_changed) self._name_entry.connect('changed', self._on_name_entry_changed) self._save_button.connect('clicked', self._on_save_button_clicked) # Check that executable is valid while inserting text self._command_entry.connect('changed', self._check_is_valid_command) self._next_timer_combo.child.connect("changed", self._on_next_timer_combo_entry_child_changed) glade_widgets.get_widget('manage_presets_button').connect('clicked', self._on_manage_presets_button_clicked) self._presets_store.connect('row-deleted', lambda model, row_path: self._update_presets_list()) self._presets_store.connect('row-changed', lambda model, row_path, row_iter: self._update_presets_list()) self._update_presets_list() self._duration_chooser.show() self._presets_list.show()