コード例 #1
0
ファイル: style.py プロジェクト: bluezone/miro
 def get_image_path(self, item_info, first_info):
     try:
         feed_info = widgetutil.get_feed_info(item_info.feed_id)
     except KeyError:
         return first_info.thumbnail
     else:
         return feed_info.thumbnail
コード例 #2
0
ファイル: style.py プロジェクト: codito/miro
 def get_image_path(self):
     if self.feed_mode:
         feed_info = widgetutil.get_feed_info(self.info.feed_id)
         return feed_info.thumbnail
     else:
         # use placeholder image until the metadata changes happen
         return resources.path('images/album-art-placeholder.gif')
コード例 #3
0
ファイル: feedcontroller.py プロジェクト: nxmirrors/miro
    def build_widget(self):
        feed_info = widgetutil.get_feed_info(self.id)
        icon = imagepool.get(feed_info.thumbnail, size=(41, 41))
        self._make_item_views()

        add_icon_box = not self.is_folder and not feed_info.thumbnail.startswith(resources.root())
        if feed_info.is_directory_feed:
            self.titlebar = itemlistwidgets.ItemListTitlebar(feed_info.name, icon,
                    add_icon_box=add_icon_box)
        else:
            self.titlebar = itemlistwidgets.ChannelTitlebar(feed_info.name, icon,
                    add_icon_box=add_icon_box)
            self.titlebar.connect('save-search', self._on_save_search)
        self.titlebar.connect('search-changed', self._on_search_changed)
        self.widget.titlebar_vbox.pack_start(self.titlebar)
        if not self.is_folder:
            sep = separator.HSeparator((0.85, 0.85, 0.85), (0.95, 0.95, 0.95))
            self.widget.titlebar_vbox.pack_start(sep)
            self.widget.titlebar_vbox.pack_start(self._make_toolbar(feed_info))

        vbox = widgetset.VBox()
        vbox.pack_start(self.downloading_section)
        vbox.pack_start(self.full_section)
        vbox.pack_start(self.downloaded_section)

        background = widgetset.SolidBackground((1, 1, 1))
        background.add(vbox)

        scroller = widgetset.Scroller(False, True)
        scroller.add(background)

        self.widget.normal_view_vbox.pack_start(scroller, expand=True)
コード例 #4
0
 def get_image_path(self, item_info):
     try:
         feed_info = widgetutil.get_feed_info(item_info.feed_id)
         return feed_info.thumbnail
     except KeyError:
         # use placeholder image until we get one from a designer
         return resources.path('images/album-art-placeholder.gif')
コード例 #5
0
 def get_image_path(self, item_info):
     try:
         feed_info = widgetutil.get_feed_info(item_info.feed_id)
         return feed_info.thumbnail
     except KeyError:
         # use placeholder image until we get one from a designer
         return resources.path('images/album-art-placeholder.gif')
コード例 #6
0
 def get_image_path(self, item_info, first_info):
     try:
         feed_info = widgetutil.get_feed_info(item_info.feed_id)
     except KeyError:
         return first_info.thumbnail
     else:
         return feed_info.thumbnail
コード例 #7
0
 def make_titlebar(self):
     feed_info = widgetutil.get_feed_info(self.id)
     if feed_info.is_directory_feed:
         titlebar = itemlistwidgets.WatchedFolderTitlebar()
     elif feed_info.is_folder:
         titlebar = itemlistwidgets.ChannelFolderTitlebar()
     else:
         titlebar = itemlistwidgets.ChannelTitlebar()
         titlebar.connect('save-search', self._on_save_search)
     if not self.is_directory_feed:
         titlebar.hide_album_view_button()
     return titlebar
コード例 #8
0
ファイル: feedcontroller.py プロジェクト: nerdymcgee/miro
 def _update_counts(self):
     # FIXME: either find out a UI for these counts or delete them.
     return
     downloads = self.downloading_view.item_list.get_count()
     watchable = self.downloaded_view.item_list.get_count()
     full_count = self.full_view.item_list.get_count() + self._show_more_count
     info = widgetutil.get_feed_info(self.id)
     if info.autodownload_mode == "off" or info.unwatched < info.max_new:
         # don't count videos queued for other reasons
         autoqueued_count = 0
     else:
         autoqueued_count = len([i for i in self.full_view.item_list.get_items() if i.pending_auto_dl])
     self._update_downloading_section(downloads)
     self._update_downloaded_section(watchable)
     self._update_full_section(downloads, full_count, autoqueued_count)
コード例 #9
0
ファイル: feedcontroller.py プロジェクト: nerdymcgee/miro
    def build_widget(self):
        feed_info = widgetutil.get_feed_info(self.id)

        self.titlebar = self.make_titlebar(feed_info)
        self.titlebar.connect("filter-clicked", self.on_filter_clicked)
        self.titlebar.switch_to_view(self.widget.selected_view)
        self.titlebar.connect("search-changed", self._on_search_changed)
        self.widget.titlebar_vbox.pack_start(self.titlebar)
        if not self.is_folder and not self.is_directory_feed:
            self.widget.statusbar_vbox.pack_start(self._make_toolbar(feed_info))

        # this only gets shown when the user is searching for things
        # in the feed and there are no results.
        text = _("No Results")
        self.widget.list_empty_mode_vbox.pack_start(itemlistwidgets.EmptyListHeader(text))
コード例 #10
0
    def build_widget(self):
        feed_info = widgetutil.get_feed_info(self.id)

        self.titlebar.connect('filter-clicked', self.on_filter_clicked)
        self.titlebar.switch_to_view(self.widget.selected_view)
        self.titlebar.connect('search-changed', self._on_search_changed)
        self.widget.titlebar_vbox.pack_start(self.titlebar)
        if not self.is_folder and not self.is_directory_feed:
            self.widget.statusbar_vbox.pack_start(
                self._make_toolbar(feed_info))

        # this only gets shown when the user is searching for things
        # in the feed and there are no results.
        text = _('No Results')
        self.widget.list_empty_mode_vbox.pack_start(
                itemlistwidgets.EmptyListHeader(text))
コード例 #11
0
ファイル: overlay.py プロジェクト: nxmirrors/miro
 def setup(self, item_info, renderer, video_window):
     from miro.frontends.widgets import widgetutil
     self.item_info = item_info
     self.renderer = renderer
     self.titleLabel.setStringValue_(item_info.name)
     try:
         self.feedLabel.setStringValue_(widgetutil.get_feed_info(item_info.feed_id).name)
     except:
         self.feedLabel.setStringValue_("")
     self.keepButton.setEnabled_(item_info.can_be_saved)
     self.shareButton.setEnabled_(item_info.has_sharable_url)
     self.adjustContent(video_window, False)
     self.update_(nil)
     if NSApplication.sharedApplication().isActive() and video_window.isVisible():
         self.suspendAutoHiding()
         self.reveal(video_window)
コード例 #12
0
 def _update_counts(self):
     # FIXME: either find out a UI for these counts or delete them.
     return
     downloads = self.downloading_view.item_list.get_count()
     watchable = self.downloaded_view.item_list.get_count()
     full_count = (self.full_view.item_list.get_count() +
             self._show_more_count)
     info = widgetutil.get_feed_info(self.id)
     if info.autodownload_mode == 'off' or info.unwatched < info.max_new:
         # don't count videos queued for other reasons
         autoqueued_count = 0
     else:
         autoqueued_count = len([i for i in
                                 self.full_view.item_list.get_items()
                                 if i.pending_auto_dl])
     self._update_downloading_section(downloads)
     self._update_downloaded_section(watchable)
     self._update_full_section(downloads, full_count, autoqueued_count)
コード例 #13
0
 def setup(self, item_info, renderer, video_window):
     from miro.frontends.widgets import widgetutil
     self.item_info = item_info
     if item_info.remote:
         self.deleteButton.setEnabled_(False)
     self.renderer = renderer
     self.titleLabel.setStringValue_(item_info.title)
     try:
         self.feedLabel.setStringValue_(widgetutil.get_feed_info(item_info.feed_id).name)
     except:
         self.feedLabel.setStringValue_("")
     self.keepButton.setEnabled_(item_info.can_be_saved)
     self.shareButton.setEnabled_(item_info.has_shareable_url)
     self.adjustContent(video_window, False)
     self.update_(nil)
     if NSApplication.sharedApplication().isActive() and video_window.isVisible():
         self.suspendAutoHiding()
         self.reveal(video_window)
コード例 #14
0
ファイル: feedcontroller.py プロジェクト: nxmirrors/miro
 def _expand_lists_initially(self):
     item_downloaded = self.downloaded_view.item_list.get_count() > 0
     feed_info = widgetutil.get_feed_info(self.id)
     autodownload_mode = feed_info.autodownload_mode
     self.downloaded_section.expand()
     self.full_section.show()
     all_items = self.full_view.item_list.get_items()
     viewed_items = [item for item in all_items \
             if item.downloaded or item.item_viewed]
     if not (item_downloaded and len(all_items) == len(viewed_items)):
         self.full_section.expand()
     if item_downloaded and 0 < len(viewed_items) < len(all_items):
         text = ngettext('Show %(count)d More Item',
                         'Show %(count)d More Items',
                         len(viewed_items),
                         {"count": len(viewed_items)})
         self.show_more_button.set_text(text + u" >>")
         self.show_more_button.set_size(widgetconst.SIZE_SMALL)
         self.show_more_container.show()
         self.full_view.item_list.set_new_only(True)
         self.full_view.model_changed()
         self._show_more_count = len(viewed_items)
     else:
         self._show_more_count = 0
コード例 #15
0
ファイル: itemlistcontroller.py プロジェクト: nxmirrors/miro
    def on_hotspot_clicked(self, itemview, name, iter):
        """Hotspot handler for ItemViews."""

        item_info = itemview.model[iter][0]
        show_details = itemview.model[iter][1]
        if name in ('download', 'thumbnail-download'):
            messages.StartDownload(item_info.id).send_to_backend()
        elif name == 'pause':
            messages.PauseDownload(item_info.id).send_to_backend()
        elif name == 'resume':
            messages.ResumeDownload(item_info.id).send_to_backend()
        elif name == 'cancel':
            messages.CancelDownload(item_info.id).send_to_backend()
        elif name == 'keep':
            messages.KeepVideo(item_info.id).send_to_backend()
        elif name == 'stop_seeding':
            messages.StopUpload(item_info.id).send_to_backend()
        elif name == 'start_seeding':
            messages.StartUpload(item_info.id).send_to_backend()
        elif name == 'delete':
            app.widgetapp.remove_items(selection=[item_info])
        elif name == 'remove':
            messages.RemoveVideosFromPlaylist(
                itemview.playlist_id, [item_info.id]).send_to_backend()
        elif name == 'details_toggle':
            itemview.model.update_value(iter, 1, not show_details)
            itemview.model_changed()
            itemview.invalidate_size_request()
        elif name == 'visit_webpage':
            app.widgetapp.open_url(item_info.permalink)
        elif name == 'visit_comments':
            app.widgetapp.open_url(item_info.commentslink)
        elif name == 'visit_filelink':
            app.widgetapp.open_url(item_info.file_url)
        elif name == 'visit_license':
            app.widgetapp.open_url(item_info.license)
        elif name == 'show_local_file':
            app.widgetapp.check_then_reveal_file(item_info.video_path)
        elif name == 'show_contents':
            app.display_manager.push_folder_contents_display(item_info)
        elif name == 'cancel_auto_download':
            messages.CancelAutoDownload(item_info.id).send_to_backend()
        elif name.startswith('description-link:'):
            url = name.split(':', 1)[1]
            try:
                base_href = widgetutil.get_feed_info(item_info.feed_id).base_href
            except ValueError:
                logging.warn("Feed not present when clicking link (%s)",
                        item_info.feed_id)
                # Feed is not around anymore for some reason (#13310).
                # Ignore the click.
                return
            if subscription.is_subscribe_link(url):
                messages.SubscriptionLinkClicked(url).send_to_backend()
            else:
                app.widgetapp.open_url(urljoin(base_href, url))
        elif name in ('play', 'thumbnail-play'):
            id = item_info.id
            items = itemview.item_list.get_items(start_id=id)
            self._play_item_list(items)
        elif name == 'play_pause':
            app.playback_manager.play_pause()
        elif name.startswith('rate:'):
            rating = int(name.split(':', 1)[1])
            messages.RateItem(item_info.id, rating).send_to_backend()
        else:
            logging.debug("ItemView doesn't know how to handle hotspot %s.",
                name)
コード例 #16
0
 def build_renderer(self):
     feed_info = widgetutil.get_feed_info(self.id)
     return itemrenderer.ItemRenderer(display_channel=self.is_folder,
             is_podcast=(not feed_info.is_directory_feed))
コード例 #17
0
 def _on_show_settings(self, widget):
     info = widgetutil.get_feed_info(self.id)
     feedsettingspanel.run_dialog(info)
コード例 #18
0
 def _on_remove_feed(self, widget):
     info = widgetutil.get_feed_info(self.id)
     app.widgetapp.remove_feeds([info])
コード例 #19
0
 def _on_save_search(self, widget, search_text):
     info = widgetutil.get_feed_info(self.id)
     messages.NewFeedSearchFeed(info, search_text).send_to_backend()
コード例 #20
0
ファイル: itemlistcontroller.py プロジェクト: kmshi/miro
    def on_hotspot_clicked(self, itemview, name, iter_):
        """Hotspot handler for ItemViews."""

        item_info, attrs = itemview.model[iter_]
        if name == 'download':
            if item_info.remote:
                name = 'download-sharing-item'
            elif item_info.device:
                name = 'download-device-item'
        if name in ('download', 'thumbnail-download'):
            messages.StartDownload(item_info.id).send_to_backend()
        elif name == 'pause':
            messages.PauseDownload(item_info.id).send_to_backend()
        elif name == 'resume':
            messages.ResumeDownload(item_info.id).send_to_backend()
        elif name == 'cancel':
            messages.CancelDownload(item_info.id).send_to_backend()
        elif name == 'keep':
            messages.KeepVideo(item_info.id).send_to_backend()
            app.saved_items.add(item_info.id)
        elif name == 'stop_seeding':
            messages.StopUpload(item_info.id).send_to_backend()
        elif name == 'start_seeding':
            messages.StartUpload(item_info.id).send_to_backend()
        elif name == 'delete':
            app.widgetapp.remove_items(selection=[item_info])
        elif name == 'remove':
            messages.RemoveVideosFromPlaylist(
                itemview.playlist_id, [item_info.id]).send_to_backend()
        elif name == 'visit_webpage':
            app.widgetapp.open_url(item_info.permalink)
        elif name == 'visit_comments':
            app.widgetapp.open_url(item_info.commentslink)
        elif name == 'visit_filelink':
            app.widgetapp.open_url(item_info.file_url)
        elif name == 'visit_license':
            app.widgetapp.open_url(item_info.license)
        elif name == 'show_local_file':
            app.widgetapp.check_then_reveal_file(item_info.video_path)
        elif name == 'show_contents':
            app.display_manager.push_folder_contents_display(item_info)
        elif name == 'cancel_auto_download':
            messages.CancelAutoDownload(item_info.id).send_to_backend()
        elif name.startswith('description-link:'):
            url = name.split(':', 1)[1]
            try:
                base_href = widgetutil.get_feed_info(
                    item_info.feed_id).base_href
            except KeyError:
                logging.warn("Feed not present when clicking link (%s)",
                        item_info.feed_id)
                # Feed is not around anymore for some reason (#13310).
                # Try without base_href
            else:
                url = urljoin(base_href, url)
            if subscription.is_subscribe_link(url):
                messages.SubscriptionLinkClicked(url).send_to_backend()
            else:
                app.widgetapp.open_url(url)
        elif name in ('play', 'thumbnail-play'):
            self._play_item_list(item_info.id)
        elif name == 'play_pause':
            if app.playback_manager.is_playing_item(item_info):
                app.playback_manager.toggle_paused()
            else:
                self._play_item_list(item_info.id)
        elif name.startswith('rate:'):
            rating = int(name.split(':', 1)[1])
            messages.RateItem(item_info, rating).send_to_backend()
        elif name == 'download-device-item':
            messages.DownloadDeviceItems([item_info]).send_to_backend()
        elif name == 'download-sharing-item':
            messages.DownloadSharingItems([item_info]).send_to_backend()
        else:
            logging.debug("ItemView doesn't know how to handle hotspot %s.",
                name)