Ejemplo n.º 1
0
    def __init__(self, totem):
        self._totem = totem

        self._dialog = DialogBox(self._totem, self)

        # Add sidebar GUI
        builder = Totem.plugin_load_interface ("lyrics-downloader",   #
                                               "ui/sidebar.ui", 
                                               True,
                                               self._totem.get_main_window (),
                                               self)
        # GUI objects
        self._container = builder.get_object ('lyrics_vbox')
        self._lyrics_buffer = builder.get_object('lyrics_text_buffer')
        self._get_button = builder.get_object('get_button')

        # Add sidebar to totem
        self._totem.add_sidebar_page ("lyrics-view", ("Lyrics view"), 
                                      self._container)
        self._container.show_all()

        # Controlling supported files
        self._totem.connect ('file-opened', self.__on_totem__file_opened)
        self._totem.connect ('file-closed', self.__on_totem__file_closed)

        # Setup signals
        self._get_button.set_sensitive(self._totem.is_playing () and
                                    self._check_is_mp3())
        self._get_button.connect('clicked', self._dialog.show_dialog)
Ejemplo n.º 2
0
    def _build_dialog(self):
        """
        Builds the main gui of the lyrics plugin
        Uses the lyrics-downloader.ui file to build the GUI

        """
        builder = Totem.plugin_load_interface(
            "lyrics-downloader", "ui/lyrics-downloader.ui", True, self._totem.get_main_window(), self
        )
        self._dialog = builder.get_object("lyrics_dialog")
        self._close_button = builder.get_object("close_button")
        self._apply_button = builder.get_object("apply_button")
        self._find_button = builder.get_object("find_button")
        self._tree_view = builder.get_object("lyrics_treeview")
        self._list_store = builder.get_object("lyrics_model")
        self._progress = builder.get_object("progress_bar")
        combobox = builder.get_object("server_combobox")
        servers = builder.get_object("server_model")

        self._apply_button.set_sensitive(False)

        # Setup the combobox
        renderer = Gtk.CellRendererText()
        sorted_servers = Gtk.TreeModelSort(model=servers)
        sorted_servers.set_sort_column_id(0, Gtk.SortType.ASCENDING)
        combobox.set_model(sorted_servers)
        combobox.pack_start(renderer, True)
        combobox.add_attribute(renderer, "text", 0)

        itera = servers.append(["Chart Lyrics", "1"])
        servers.append(["Lyrdb", "2"])
        success, parentit = sorted_servers.convert_child_iter_to_iter(itera)
        combobox.set_active_iter(parentit)

        # Set up the results treeview
        renderer = Gtk.CellRendererText()
        self._tree_view.set_model(self._list_store)
        # This is the title of the song
        column = Gtk.TreeViewColumn("Song", renderer, text=0)
        column.set_resizable(True)
        column.set_expand(True)
        self._tree_view.append_column(column)
        # This is the Artist of the song
        column = Gtk.TreeViewColumn("Artist", renderer, text=1)
        column.set_resizable(True)
        self._tree_view.append_column(column)

        # Set up signals
        combobox.connect("changed", self.__on_combobox__changed)
        self._close_button.connect("clicked", self.__on_close_clicked)

        self._dialog.connect("delete-event", self._dialog.hide_on_delete)
        self._dialog.set_transient_for(self._totem.get_main_window())
        self._apply_button.connect("clicked", self.__on_apply_clicked)
        self._find_button.connect("clicked", self.__on_find_clicked)
        self._tree_view.connect("row-activated", self.__on_treeview__row_activate)

        # connect callbacks
        self._tree_view.get_selection().connect("changed", self.__on_treeview__row_change)
Ejemplo n.º 3
0
    def _get_file_path(self, filename):
        """
        This method returns the a absolute path for the file.
        This should be used by plugin to find plugin-specific resource files.

        Arguments:
        - `filename`: filename of the resource file
        """
        return Totem.plugin_find_file("lyrics-downloader", filename)
Ejemplo n.º 4
0
    def do_activate(self):
        self.totem = self.object
        # bug, Tracker stuff should be async
        self.conn = Tracker.SparqlConnection.get (None)
        builder = Totem.plugin_load_interface ("musiclibrary", "musiclibrary.ui", True, self.totem.get_main_window (), self)
        container = builder.get_object ('root_window')

        self.music_store = builder.get_object ('music_tree_store')
        self.music_view = builder.get_object ('music_tree_view')

        container.show_all ()

        self.totem.add_sidebar_page ("musiclibrary", "Music Library", container)

        GObject.idle_add(self.populate_artists)
        self.song_clicked = self.music_view.connect("row-activated", self._song_activated_cb)
Ejemplo n.º 5
0
    def build(self):
        """ Build and obtain all the widgets we need to initialize """
        builder = Totem.plugin_load_interface(
            "opensubtitles", "opensubtitles.ui", True,
            self.totem_object.get_main_window(), None)

        self.languages = [
            builder.get_object('main_language'),
            builder.get_object('alt_language')
        ]
        self.language_model = builder.get_object('language_model')
        self.dialog = builder.get_object('subtitles_dialog')
        self.progress = builder.get_object('progress_bar')
        self.tree_view = builder.get_object('subtitle_treeview')
        self.list_store = builder.get_object('subtitle_model')
        self.find_button = builder.get_object('find_button')
        self.apply_button = builder.get_object('apply_button')
        self.close_button = builder.get_object('close_button')
Ejemplo n.º 6
0
    def do_activate(self):
        """
        Plugin activation.
        """
        self.totem = self.object
        # Initialise the interface
        builder = Totem.plugin_load_interface ("jamendo", "jamendo.ui", True, self.totem.get_main_window (), self)
        self.popup = builder.get_object('popup_menu')
        container = builder.get_object('container')
        self.notebook = builder.get_object('notebook')
        self.search_entry = builder.get_object('search_entry')
        self.search_combo = builder.get_object('search_combo')
        self.search_combo.set_active(0)
        self.album_button = builder.get_object('album_button')
        self.previous_button = builder.get_object('previous_button')
        self.next_button = builder.get_object('next_button')
        self.progressbars = [
            builder.get_object('results_progressbar'),
            builder.get_object('popular_progressbar'),
            builder.get_object('latest_progressbar'),
        ]
        self.treeviews = [
            builder.get_object('results_treeview'),
            builder.get_object('popular_treeview'),
            builder.get_object('latest_treeview'),
        ]
        self.setup_treeviews()

        # Set up signals
        builder.get_object('search_button').connect('clicked', self.on_search_button_clicked)
        self.search_entry.connect('activate', self.on_search_entry_activate)
        self.notebook.connect('switch-page', self.on_notebook_switch_page)
        self.previous_button.connect('clicked', self.on_previous_button_clicked)
        self.next_button.connect('clicked', self.on_next_button_clicked)
        self.album_button.connect('clicked', self.on_album_button_clicked)
        builder.get_object('add_to_playlist').connect('activate', self.on_add_to_playlist_activate)
        builder.get_object('jamendo_album_page').connect('activate', self.on_open_jamendo_album_page_activate)

        self.reset()
        container.show_all()
        self.totem.add_sidebar_page("jamendo", _(u"Jamendo"), container)
Ejemplo n.º 7
0
    def do_activate (self):
        self.totem = self.object
        # Build the interface
        builder = Totem.plugin_load_interface ("iplayer", "iplayer.ui", True,
                                               self.totem.get_main_window (),
                                               self)
        container = builder.get_object ('iplayer_vbox')

        self.tv_tree_store = builder.get_object ('iplayer_programme_store')
        programme_list = builder.get_object ('iplayer_programme_list')
        programme_list.connect ('row-expanded', self.__row_expanded_cb)
        programme_list.connect ('row-activated', self.__row_activated_cb)

        container.show_all ()

        self.tv_feed = iplayer2.Feed ('tv')

        # Add the interface to Totem's sidebar
        self.totem.add_sidebar_page ("iplayer", _(u"BBC iPlayer"), container)

        # Get the channel category listings
        self._populate_channel_list (self.tv_feed, self.tv_tree_store)
Ejemplo n.º 8
0
    def do_activate(self):
        self.totem = self.object
        # Build the interface
        builder = Totem.plugin_load_interface("iplayer", "iplayer.ui", True,
                                              self.totem.get_main_window(),
                                              self)
        container = builder.get_object('iplayer_vbox')

        self.tv_tree_store = builder.get_object('iplayer_programme_store')
        programme_list = builder.get_object('iplayer_programme_list')
        programme_list.connect('row-expanded', self.__row_expanded_cb)
        programme_list.connect('row-activated', self.__row_activated_cb)

        container.show_all()

        self.tv_feed = iplayer2.Feed('tv')

        # Add the interface to Totem's sidebar
        self.totem.add_sidebar_page("iplayer", _(u"BBC iPlayer"), container)

        # Get the channel category listings
        self._populate_channel_list(self.tv_feed, self.tv_tree_store)
Ejemplo n.º 9
0
    def do_create_configure_widget(self):
        """
        Plugin config widget.
        This code must be independent from the rest of the plugin. FIXME: bgo#624073
        """
        builder = Totem.plugin_load_interface ('jamendo', 'jamendo.ui', True, None, self)
        config_widget = builder.get_object ('config_widget')
        config_widget.connect ('destroy', self.on_config_widget_destroy)
        format = self.settings.get_enum ('format')
        num_per_page = self.settings.get_value ('num-per-page').get_uint32 ()

        # Set up the "format" combo box. We can't use g_settings_bind() here, as it won't automatically convert between enums and ints. To do so,
        # we'd need to use g_settings_bind_with_mapping(), but that isn't introspectable. We have to handle the binding manually.
        combo = builder.get_object('preferred_format_combo')
        combo.set_active(format)
        combo.connect ('changed', self.on_format_combo_changed)
        self.settings.connect ('changed::format', self.on_format_setting_changed, combo)

        spinbutton = builder.get_object('album_num_spinbutton')
        spinbutton.set_value(num_per_page)
        self.settings.bind ('num-per-page', spinbutton, 'value', Gio.SettingsBindFlags.DEFAULT)

        return config_widget
Ejemplo n.º 10
0
    def _build_dialog (self):
        builder = Totem.plugin_load_interface ("opensubtitles",
                                               "opensubtitles.ui", True,
                                               self._totem.get_main_window (),
                                               self)

        # Obtain all the widgets we need to initialize
        combobox = builder.get_object ('language_combobox')
        languages = builder.get_object ('language_model')
        self._progress = builder.get_object ('progress_bar')
        self._tree_view = builder.get_object ('subtitle_treeview')
        self._list_store = builder.get_object ('subtitle_model')
        self._dialog = builder.get_object ('subtitles_dialog')
        self._find_button = builder.get_object ('find_button')
        self._apply_button = builder.get_object ('apply_button')
        self._close_button = builder.get_object ('close_button')

        # Set up and populate the languages combobox
        renderer = Gtk.CellRendererText ()
        sorted_languages = Gtk.TreeModelSort (model = languages)
        sorted_languages.set_sort_column_id (0, Gtk.SortType.ASCENDING)
        combobox.set_model (sorted_languages)
        combobox.pack_start (renderer, True)
        combobox.add_attribute (renderer, 'text', 0)

        lang = self._settings.get_string ('language')
        if lang is not None:
            self._model.lang = lang

        for lang in LANGUAGES_STR:
            itera = languages.append (lang)
            if LANGUAGES[lang[1]] == self._model.lang:
                (success,
                 parentit) = sorted_languages.convert_child_iter_to_iter (itera)
                if success:
                    combobox.set_active_iter (parentit)

        # Set up the results treeview
        renderer = Gtk.CellRendererText ()
        self._tree_view.set_model (self._list_store)
        renderer.set_property ('ellipsize', Pango.EllipsizeMode.END)
        column = Gtk.TreeViewColumn (_(u"Subtitles"), renderer, text=0)
        column.set_resizable (True)
        column.set_expand (True)
        self._tree_view.append_column (column)
        # translators comment:
        # This is the file-type of the subtitle file detected
        column = Gtk.TreeViewColumn (_(u"Format"), renderer, text=1)
        column.set_resizable (False)
        self._tree_view.append_column (column)
        # translators comment:
        # This is a rating of the quality of the subtitle
        column = Gtk.TreeViewColumn (_(u"Rating"), renderer, text=2)
        column.set_resizable (False)
        self._tree_view.append_column (column)

        self._apply_button.set_sensitive (False)

        self._apply_button.connect ('clicked', self.__on_apply_clicked)
        self._find_button.connect ('clicked', self.__on_find_clicked)
        self._close_button.connect ('clicked', self.__on_close_clicked)

        # Set up signals

        combobox.connect ('changed', self.__on_combobox__changed)
        self._dialog.set_transient_for (self._totem.get_main_window ())
        self._dialog.set_position (Gtk.WindowPosition.CENTER_ON_PARENT)

        # Connect the callbacks
        self._dialog.connect ('key-press-event',
                             self.__on_window__key_press_event)
        self._tree_view.get_selection ().connect ('changed',
                                                self.__on_treeview__row_change)
        self._tree_view.connect ('row-activated',
                               self.__on_treeview__row_activate)
Ejemplo n.º 11
0
    def _build_dialog (self):
        builder = Totem.plugin_load_interface ("opensubtitles",
                                               "opensubtitles.ui", True,
                                               self._totem.get_main_window (),
                                               None)

        # Obtain all the widgets we need to initialize
        combobox = builder.get_object ('language_combobox')
        languages = builder.get_object ('language_model')
        self._progress = builder.get_object ('progress_bar')
        self._tree_view = builder.get_object ('subtitle_treeview')
        self._list_store = builder.get_object ('subtitle_model')
        self._dialog = builder.get_object ('subtitles_dialog')
        self._find_button = builder.get_object ('find_button')
        self._apply_button = builder.get_object ('apply_button')
        self._close_button = builder.get_object ('close_button')

        # Set up and populate the languages combobox
        renderer = Gtk.CellRendererText ()
        sorted_languages = Gtk.TreeModelSort (model = languages)
        sorted_languages.set_sort_column_id (0, Gtk.SortType.ASCENDING)
        combobox.set_model (sorted_languages)
        combobox.pack_start (renderer, True)
        combobox.add_attribute (renderer, 'text', 0)

        lang = self._settings.get_string ('language')
        if lang is not None:
            self._model.lang = lang

        for lang in LANGUAGES_STR:
            itera = languages.append (lang)
            if LANGUAGES[lang[1]] == self._model.lang:
                (success,
                 parentit) = sorted_languages.convert_child_iter_to_iter (itera)
                if success:
                    combobox.set_active_iter (parentit)

        # Set up the results treeview
        renderer = Gtk.CellRendererText ()
        self._tree_view.set_model (self._list_store)
        renderer.set_property ('ellipsize', Pango.EllipsizeMode.END)
        column = Gtk.TreeViewColumn (_(u"Subtitles"), renderer, text=0)
        column.set_resizable (True)
        column.set_expand (True)
        self._tree_view.append_column (column)
        # translators comment:
        # This is the file-type of the subtitle file detected
        column = Gtk.TreeViewColumn (_(u"Format"), renderer, text=1)
        column.set_resizable (False)
        self._tree_view.append_column (column)
        # translators comment:
        # This is a rating of the quality of the subtitle
        column = Gtk.TreeViewColumn (_(u"Rating"), renderer, text=2)
        column.set_resizable (False)
        self._tree_view.append_column (column)

        self._apply_button.set_sensitive (False)

        self._apply_button.connect ('clicked', self.__on_apply_clicked)
        self._find_button.connect ('clicked', self.__on_find_clicked)
        self._close_button.connect ('clicked', self.__on_close_clicked)

        # Set up signals

        combobox.connect ('changed', self.__on_combobox__changed)
        self._dialog.connect ('delete-event', self._dialog.hide_on_delete)
        self._dialog.set_transient_for (self._totem.get_main_window ())
        self._dialog.set_position (Gtk.WindowPosition.CENTER_ON_PARENT)

        # Connect the callbacks
        self._dialog.connect ('key-press-event',
                             self.__on_window__key_press_event)
        self._tree_view.get_selection ().connect ('changed',
                                                self.__on_treeview__row_change)
        self._tree_view.connect ('row-activated',
                               self.__on_treeview__row_activate)
    def os_build_dialog(self, action):
        builder = Totem.plugin_load_interface ("opensubtitles", "opensubtitles.ui", True, self.totem.get_main_window(), None)

        # Obtain all the widgets we need to initialize
        combobox =       builder.get_object('language_combobox')
        languages =      builder.get_object('language_model')
       	hash_or_title_combobox = builder.get_object('file_hash_title')
        hash_filename_model = builder.get_object('hash_filename_model');
        save_same_location_select = builder.get_object('save_same_location');
        self.save_same_location = True;
        self.progress =  builder.get_object('progress_bar')
        self.treeview =  builder.get_object('subtitle_treeview')
        self.liststore = builder.get_object('subtitle_model')
        self.dialog =    builder.get_object('subtitles_dialog')
	self.find_button = builder.get_object('find_button')
	self.apply_button = builder.get_object('apply_button')
	self.close_button = builder.get_object('close_button')

        # Set up and populate the languages combobox
        renderer = Gtk.CellRendererText()
        sorted_languages = Gtk.TreeModelSort (model = languages)
        sorted_languages.set_sort_column_id(0, Gtk.SortType.ASCENDING)
        combobox.set_model(sorted_languages)
        combobox.pack_start(renderer, True)
        combobox.add_attribute(renderer, 'text', 0)

        lang = self.settings.get_string ('language')
        if lang is not None:
            self.model.lang = lang

        for lang in LANGUAGES_STR:
            it = languages.append(lang)
            if LANGUAGES[lang[1]] == self.model.lang:
                (success, parentit) = sorted_languages.convert_child_iter_to_iter (it)
                if success:
                    combobox.set_active_iter (parentit)

	# Set up and populate hash or title option
	renderer = Gtk.CellRendererText()
	hash_or_title_combobox.pack_start(renderer, True)
	hash_or_title_combobox.add_attribute(renderer, 'text', 1)
	hash_or_title_model = Gtk.ListStore(int,str);
	hash_or_title_model.append([DOWNLOAD_BY_HASH,"Use Hash"]);
	hash_or_title_model.append([DOWNLOAD_BY_FILENAME,"Use Filename"]);
	hash_or_title_combobox.set_model(hash_or_title_model);
	hash_or_title_combobox.set_active(0);
	self.model.hash_or_filename = DOWNLOAD_BY_HASH;
	
        # Set up the results treeview 
        renderer = Gtk.CellRendererText()
        self.treeview.set_model(self.liststore)
        self.treeview.set_headers_visible(False)
        renderer.set_property('ellipsize', Pango.EllipsizeMode.END)
        column = Gtk.TreeViewColumn(_(u"Subtitles"), renderer, text=0)
        column.set_resizable(True)
        column.set_expand(True)
        self.treeview.append_column(column)
	# translators comment:
	# This is the file-type of the subtitle file detected
        column = Gtk.TreeViewColumn(_(u"Format"), renderer, text=1)
        column.set_resizable(False)
        self.treeview.append_column(column)
	# translators comment:
	# This is a rating of the quality of the subtitle
        column = Gtk.TreeViewColumn(_(u"Rating"), renderer, text=2)
        column.set_resizable(False)
        self.treeview.append_column(column)

	self.apply_button.set_sensitive(False)

        self.apply_button.connect('clicked', self.on_apply_clicked)
        self.find_button.connect('clicked', self.on_find_clicked)
        self.close_button.connect('clicked', self.on_close_clicked)

	# Set up signals

        combobox_changed_id = combobox.connect('changed', self.on_combobox__changed)
        hash_or_file_combobox_changed_id = hash_or_title_combobox.connect('changed',self.on_hash_or_filename_combobox__changed);
        save_same_location_select_changed_id = save_same_location_select.connect('toggled',self.on_save_same_select__changed);
	self.dialog.connect ('delete-event', self.dialog.hide_on_delete)
	self.dialog.set_transient_for (self.totem.get_main_window())
	self.dialog.set_position (Gtk.WindowPosition.CENTER_ON_PARENT)

	# Connect the callbacks
	self.dialog.connect ('key-press-event', self.on_window__key_press_event)
        self.treeview.get_selection().connect('changed', self.on_treeview__row_change)
        self.treeview.connect('row-activated', self.on_treeview__row_activate)