Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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
Пример #4
0
    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