Пример #1
0
    def do_activate(self):
        self.load_css()
        self.settings = Gio.Settings("org.gnome.rhythmbox.plugins.looper")
        # old value will be needed when removing/adding(moving) GUI
        self.gui_position = self.POSITIONS[self.settings['position']]
        self.shell = self.object
        self.shell_player = self.shell.props.shell_player
        self.player = self.shell_player.props.player
        self.db = self.shell.props.db

        self.appshell = ApplicationShell(self.shell)
        self.main_box = Gtk.Box()
        self.main_box.set_orientation(Gtk.Orientation.VERTICAL)

        self.controls_box = Gtk.Box()
        self.controls_box.set_orientation(Gtk.Orientation.VERTICAL)

        self._create_main_action()

        self.controls = Controls(self)
        controls_frame = Gtk.Frame()
        controls_frame.add(self.controls)
        controls_frame.set_property('margin-left', 2)
        controls_frame.set_property('margin-right', 2)
        self.rbpitch = RbPitch(self)
        rbpitch_frame = Gtk.Frame()
        rbpitch_frame.add(self.rbpitch)
        rbpitch_frame.set_property('margin-left', 2)
        rbpitch_frame.set_property('margin-right', 2)
        self.controls_box.pack_start(rbpitch_frame, True, True, 5)
        self.controls_box.pack_start(controls_frame, True, True, 5)

        self.loops_box = Gtk.Grid()
        self.loops_box.set_row_spacing(2)
        self.loops_box.set_column_spacing(2)
        self.loops_box.set_column_homogeneous(True)
        self.loops_box.set_row_homogeneous(True)
        self.loops_box.set_border_width(0)

        self.rb_slider = self.find_rb_slider()

        self.main_box.pack_start(self.controls_box, True, True, 10)
        self.main_box.pack_start(
            Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL), True, True,
            0)
        self.main_box.pack_start(self.loops_box, True, True, 10)

        # position = self.POSITIONS[self.settings['position']]
        self.shell.add_widget(self.main_box, self.gui_position, True, False)

        self.rbpitch.tempo.slider.set_value(self.rbpitch.tempo_val)
        self.rbpitch.pitch.slider.set_value(self.rbpitch.pitch_val)
        self.rbpitch.rate.slider.set_value(self.rbpitch.rate_val)

        self.save_crossfade_settings()

        self.settings_changed_sigid = self.settings.connect(
            'changed', self.on_settings_changed)

        self.song_changed_sigid = self.shell_player.connect(
            "playing-song-changed", self.on_playing_song_changed)

        # a song COULD be playing, so refresh sliders
        self.refresh_widgets()
        self.refresh_status_label()

        if self.settings['always-show']:
            self.refresh_rb_position_slider()
            self.main_box.show_all()

        self.loops = {}
        self.load_loops_file()
        self.loops_box.hide()