def __init__(self): # why doesn't glade do this? widgets["spin_meter_beats"].set_value(4) widgets["spin_meter_denom"].set_value(4) wtree.signal_autoconnect( { # main menu "on_file_quit": self.on_file_quit, "on_edit_preferences": self.on_edit_preferences, "on_view_markings_toggled": self.on_view_markings_toggled, "on_view_speedtrainer_toggled": self.on_view_speedtrainer_toggled, "on_view_meter_toggled": self.on_view_meter_toggled, "on_view_pattern_toggled": self.on_view_pattern_toggled, "on_view_profiles_toggled": self.on_view_profiles_toggled, "on_help_shortcuts": self.on_help_shortcuts, "on_help_about": self.on_help_about, # tempo "on_tempo_scale_changed": self.on_tempo_changed, "on_tempo_spin_changed": self.on_tempo_changed, "on_tap_tempo": self.on_tap_tempo, "on_tempo_format_value": self.on_tempo_format_value, # speed trainer "on_speedtrainer_enable_toggled": self.on_speedtrainer_enable_toggled, "on_tempo_increment_changed": self.on_tempo_increment_changed, "on_tempo_start_changed": self.on_tempo_start_changed, # meter "on_meter_even_toggled": (self.on_meter_toggled, (0, 4)), "on_meter_24_toggled": (self.on_meter_toggled, (2, 4)), "on_meter_34_toggled": (self.on_meter_toggled, (3, 4)), "on_meter_44_toggled": (self.on_meter_toggled, (4, 4)), "on_meter_other_toggled": (self.on_meter_toggled, None), "on_meter_beats_changed": self.on_meter_beats_changed, "on_meter_denom_changed": self.on_meter_denom_changed, # pattern "on_pattern_reset": self.on_pattern_reset, # others "on_start_stop": self.on_start_stop, "on_volume_changed": self.on_volume_changed, "on_window_main_delete_event": self.on_delete_event, "on_window_main_key_press_event": self.on_key_press_event, } ) widgets["item_view_markings"].set_active(config.view_markings) widgets["item_view_meter"].set_active(config.view_meter) widgets["item_view_speedtrainer"].set_active(config.view_speedtrainer) widgets["item_view_pattern"].set_active(config.view_pattern) widgets["item_view_profiles"].set_active(config.view_profiles) self.pattern_buttons = [] # create one button now to avoid window size changes later on self.readjust_pattern_table(1) self.state_changed = misc.run_idle_once(lambda: self.state_changed_callback()) self.state_changed_callback = None klick.register_methods(self)
def __init__(self): # why doesn't glade do this? widgets['spin_meter_beats'].set_value(4) widgets['spin_meter_denom'].set_value(4) wtree.signal_autoconnect({ # main menu 'on_file_quit': self.on_file_quit, 'on_edit_preferences': self.on_edit_preferences, 'on_view_markings_toggled': self.on_view_markings_toggled, 'on_view_speedtrainer_toggled': self.on_view_speedtrainer_toggled, 'on_view_meter_toggled': self.on_view_meter_toggled, 'on_view_pattern_toggled': self.on_view_pattern_toggled, 'on_view_profiles_toggled': self.on_view_profiles_toggled, 'on_help_shortcuts': self.on_help_shortcuts, 'on_help_about': self.on_help_about, # tempo 'on_tempo_scale_changed': self.on_tempo_changed, 'on_tempo_spin_changed': self.on_tempo_changed, 'on_tap_tempo': self.on_tap_tempo, 'on_tempo_format_value': self.on_tempo_format_value, # speed trainer 'on_speedtrainer_enable_toggled': self.on_speedtrainer_enable_toggled, 'on_tempo_increment_changed': self.on_tempo_increment_changed, 'on_tempo_start_changed': self.on_tempo_start_changed, # meter 'on_meter_even_toggled': (self.on_meter_toggled, (0, 4)), 'on_meter_24_toggled': (self.on_meter_toggled, (2, 4)), 'on_meter_34_toggled': (self.on_meter_toggled, (3, 4)), 'on_meter_44_toggled': (self.on_meter_toggled, (4, 4)), 'on_meter_other_toggled': (self.on_meter_toggled, None), 'on_meter_beats_changed': self.on_meter_beats_changed, 'on_meter_denom_changed': self.on_meter_denom_changed, # pattern 'on_pattern_reset': self.on_pattern_reset, # others 'on_start_stop': self.on_start_stop, 'on_volume_changed': self.on_volume_changed, 'on_window_main_delete_event': self.on_delete_event, 'on_window_main_key_press_event': self.on_key_press_event, }) widgets['item_view_markings'].set_active(config.view_markings) widgets['item_view_meter'].set_active(config.view_meter) widgets['item_view_speedtrainer'].set_active(config.view_speedtrainer) widgets['item_view_pattern'].set_active(config.view_pattern) widgets['item_view_profiles'].set_active(config.view_profiles) self.pattern_buttons = [] # create one button now to avoid window size changes later on self.readjust_pattern_table(1) self.state_changed = misc.run_idle_once(lambda: self.state_changed_callback()) self.state_changed_callback = None klick.register_methods(self)
def __init__(self, mainwin): self.mainwin = mainwin wtree.signal_autoconnect({ 'on_profile_add': self.on_profile_add, 'on_profile_remove': self.on_profile_remove, 'on_profile_save': self.on_profile_save, 'on_profile_rename': self.on_profile_rename, }) # create treeview. doing this within glade somehow breaks dnd. weird... self.treeview = gtk.TreeView() self.treeview.set_headers_visible(False) self.treeview.set_enable_search(False) self.treeview.set_reorderable(True) widgets['scrolledwindow_profiles'].add(self.treeview) widgets['label_frame_profiles'].set_mnemonic_widget(self.treeview) self.treeview.show() # create model self.model = gtk.ListStore(str, gtklick_config.Profile) self.treeview.set_model(self.model) # create renderer/column self.renderer = gtk.CellRendererText() self.column = gtk.TreeViewColumn(None, self.renderer, markup=0) self.treeview.append_column(self.column) # connect signals self.treeview.get_selection().connect('changed', self.on_selection_changed) self.treeview.connect('row-activated', self.on_row_activated) # create a weak reference to the callback function, to prevent cyclic references. # sometimes PyGTK astounds me... self.renderer.connect('edited', misc.weakref_method(self.on_cell_edited)) self.model.connect('row-changed', self.on_row_changed) self.model.connect('row-deleted', self.on_row_deleted) self.enable_buttons(False) self.idle = misc.run_idle_once(self.idle_handler) self.track_changes = False # populate treeview with profiles from config file for p in config.get_profiles(): self.model.append([cgi.escape(p.name), p]) self.mainwin.state_changed_callback = self.state_changed_callback