コード例 #1
0
ファイル: queuedtorrents.py プロジェクト: s0undt3ch/Deluge
    def __init__(self):
        component.Component.__init__(self, "QueuedTorrents", depend=["StatusBar", "AddTorrentDialog"])
        self.queue = []
        self.status_item = None

        self.config = ConfigManager("gtkui.conf")
        self.glade = gtk.glade.XML(
            deluge.common.resource_filename("deluge.ui.gtkui", os.path.join("glade", "queuedtorrents.glade"))
        )
        self.glade.get_widget("chk_autoadd").set_active(self.config["autoadd_queued"])
        self.dialog = self.glade.get_widget("queued_torrents_dialog")
        self.dialog.set_icon(common.get_logo(32))

        self.glade.signal_autoconnect(
            {
                "on_button_remove_clicked": self.on_button_remove_clicked,
                "on_button_clear_clicked": self.on_button_clear_clicked,
                "on_button_close_clicked": self.on_button_close_clicked,
                "on_button_add_clicked": self.on_button_add_clicked,
                "on_chk_autoadd_toggled": self.on_chk_autoadd_toggled,
            }
        )

        self.treeview = self.glade.get_widget("treeview")
        self.treeview.append_column(gtk.TreeViewColumn(_("Torrent"), gtk.CellRendererText(), text=0))

        self.liststore = gtk.ListStore(str, str)
        self.treeview.set_model(self.liststore)
コード例 #2
0
    def __init__(self):
        component.Component.__init__(self,
                                     "QueuedTorrents",
                                     depend=["StatusBar", "AddTorrentDialog"])
        self.queue = []
        self.status_item = None

        self.config = ConfigManager("gtkui.conf")
        self.glade = gtk.glade.XML(
            pkg_resources.resource_filename("deluge.ui.gtkui",
                                            "glade/queuedtorrents.glade"))
        self.glade.get_widget("chk_autoadd").set_active(
            self.config["autoadd_queued"])
        self.dialog = self.glade.get_widget("queued_torrents_dialog")
        self.dialog.set_icon(common.get_logo(32))

        self.glade.signal_autoconnect({
            "on_button_remove_clicked":
            self.on_button_remove_clicked,
            "on_button_clear_clicked":
            self.on_button_clear_clicked,
            "on_button_close_clicked":
            self.on_button_close_clicked,
            "on_button_add_clicked":
            self.on_button_add_clicked,
            "on_chk_autoadd_toggled":
            self.on_chk_autoadd_toggled
        })

        self.treeview = self.glade.get_widget("treeview")
        self.treeview.append_column(
            gtk.TreeViewColumn(_("Torrent"), gtk.CellRendererText(), text=0))

        self.liststore = gtk.ListStore(str, str)
        self.treeview.set_model(self.liststore)
コード例 #3
0
 def popup(self, status):
     """popups up notification of finished torrent"""
     if not deluge.common.windows_check():
         try:
             import pynotify
         except:
             log.warning("pynotify is not installed")
         else:
             if not pynotify.init("Deluge"):
                 return
             title = deluge.common.xml_encode(_("Torrent complete"))
             message = deluge.common.xml_encode("%s\n%s %i %s"  % (status["name"], _("Including"), status["num_files"], _("files")))
             self.note = pynotify.Notification(title, message)
             self.note.set_icon_from_pixbuf(common.get_logo(48))
             if not self.note.show():
                 log.warning("pynotify failed to show notification")
コード例 #4
0
 def popup(self, status):
     """popups up notification of finished torrent"""
     if not deluge.common.windows_check():
         try:
             from gi.repository import Notify
         except:
             log.warning("pynotify is not installed")
         else:
             if not Notify.init("Deluge"):
                 return
             title = deluge.common.xml_encode(_("Torrent complete"))
             message = deluge.common.xml_encode(
                 "%s\n%s %i %s" % (status["name"], _("Including"),
                                   status["num_files"], _("files")))
             self.note = Notify.Notification(title, message)
             self.note.set_icon_from_pixbuf(common.get_logo(48))
             if not self.note.show():
                 log.warning("pynotify failed to show notification")
コード例 #5
0
ファイル: connectionmanager.py プロジェクト: malwinMP/deluge
    def show(self):
        """
        Show the ConnectionManager dialog.
        """
        # Get the glade file for the connection manager
        self.glade = gtk.glade.XML(
                    pkg_resources.resource_filename("deluge.ui.gtkui",
                                            "glade/connection_manager.glade"))
        self.window = component.get("MainWindow")

        # Setup the ConnectionManager dialog
        self.connection_manager = self.glade.get_widget("connection_manager")
        self.connection_manager.set_transient_for(self.window.window)

        self.connection_manager.set_icon(common.get_deluge_icon())

        self.glade.get_widget("image1").set_from_pixbuf(common.get_logo(32))

        self.hostlist = self.glade.get_widget("hostlist")

        # Create status pixbufs
        if not HOSTLIST_PIXBUFS:
            for stock_id in (gtk.STOCK_NO, gtk.STOCK_YES, gtk.STOCK_CONNECT):
                HOSTLIST_PIXBUFS.append(self.connection_manager.render_icon(stock_id, gtk.ICON_SIZE_MENU))

        # Create the host list gtkliststore
        # id-hash, hostname, port, status, username, password, version
        self.liststore = gtk.ListStore(str, str, int, str, str, str, str)

        # Setup host list treeview
        self.hostlist.set_model(self.liststore)
        render = gtk.CellRendererPixbuf()
        column = gtk.TreeViewColumn(_("Status"), render)
        column.set_cell_data_func(render, cell_render_status, 3)
        self.hostlist.append_column(column)
        render = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_("Host"), render, text=HOSTLIST_COL_HOST)
        column.set_cell_data_func(render, cell_render_host, (1, 2, 4))
        column.set_expand(True)
        self.hostlist.append_column(column)
        render = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_("Version"), render, text=HOSTLIST_COL_VERSION)
        self.hostlist.append_column(column)

        # Load any saved host entries
        self.__load_hostlist()
        self.__load_options()

        # Select the first host if possible
        if len(self.liststore) > 0:
            self.hostlist.get_selection().select_path("0")

        # Connect the signals to the handlers
        self.glade.signal_autoconnect(self)
        self.hostlist.get_selection().connect("changed", self.on_hostlist_selection_changed)

        self.__update_list()

        self.running = True
        response = self.connection_manager.run()
        self.running = False

        # Save the toggle options
        self.__save_options()
        self.__save_hostlist()

        self.connection_manager.destroy()
        del self.glade
        del self.window
        del self.connection_manager
        del self.liststore
        del self.hostlist
コード例 #6
0
ファイル: systemtray.py プロジェクト: NoGare/deluge1
    def enable(self):
        """Enables the system tray icon."""
        self.builder = gtk.Builder()
        self.builder.add_from_file(deluge.common.resource_filename(
            "deluge.ui.gtkui", os.path.join("glade", "tray_menu.ui"))
        )

        self.builder.connect_signals({
            "on_menuitem_show_deluge_activate": self.on_menuitem_show_deluge_activate,
            "on_menuitem_add_torrent_activate": self.on_menuitem_add_torrent_activate,
            "on_menuitem_pause_all_activate": self.on_menuitem_pause_all_activate,
            "on_menuitem_resume_all_activate": self.on_menuitem_resume_all_activate,
            "on_menuitem_quit_activate": self.on_menuitem_quit_activate,
            "on_menuitem_quitdaemon_activate": self.on_menuitem_quitdaemon_activate
        })

        self.tray_menu = self.builder.get_object("tray_menu")

        if appindicator and self.config["enable_appindicator"]:
            log.debug("Enabling the Application Indicator..")
            self.indicator = appindicator.Indicator (
                "deluge", "deluge", appindicator.CATEGORY_APPLICATION_STATUS)
            # Pass the menu to the Application Indicator
            self.indicator.set_menu(self.tray_menu)

            # Make sure the status of the Show Window MenuItem is correct
            self._sig_win_hide = self.window.window.connect("hide", self._on_window_hide)
            self._sig_win_show = self.window.window.connect("show", self._on_window_show)
            if self.window.visible():
                self.builder.get_object("menuitem_show_deluge").set_active(True)
            else:
                self.builder.get_object("menuitem_show_deluge").set_active(False)

            # Show the Application Indicator
            self.indicator.set_status(appindicator.STATUS_ACTIVE)

        else:
            log.debug("Enabling the system tray icon..")
            if deluge.common.windows_check() or deluge.common.osx_check():
                self.tray = gtk.status_icon_new_from_pixbuf(common.get_logo(32))
            else:
                try:
                    self.tray = gtk.status_icon_new_from_icon_name("deluge")
                except:
                    log.warning("Update PyGTK to 2.10 or greater for SystemTray..")
                    return

            self.tray.connect("activate", self.on_tray_clicked)
            self.tray.connect("popup-menu", self.on_tray_popup)

            # For some reason these icons do not display in appindicator
            self.builder.get_object("download-limit-image").set_from_file(
                deluge.common.get_pixmap("downloading16.png"))
            self.builder.get_object("upload-limit-image").set_from_file(
                deluge.common.get_pixmap("seeding16.png"))

        client.register_event_handler("ConfigValueChangedEvent", self.config_value_changed)
        if client.connected():
            # We're connected so we need to get some values from the core
            self.__start()
        else:
            # Hide menu widgets because we're not connected to a host.
            for widget in self.hide_widget_list:
                self.builder.get_object(widget).hide()
コード例 #7
0
    def show(self):
        """
        Show the ConnectionManager dialog.
        """
        self.config = self.__load_config()
        # Get the gtk builder file for the connection manager
        self.builder = gtk.Builder()
        # The main dialog
        self.builder.add_from_file(deluge.common.resource_filename(
            "deluge.ui.gtkui", os.path.join("glade", "connection_manager.ui")
        ))
        # The add host dialog
        self.builder.add_from_file(deluge.common.resource_filename(
            "deluge.ui.gtkui", os.path.join("glade", "connection_manager.addhost.ui")
        ))
        # The ask password dialog
        self.builder.add_from_file(deluge.common.resource_filename(
            "deluge.ui.gtkui", os.path.join("glade", "connection_manager.askpassword.ui")
        ))
        self.window = component.get("MainWindow")

        # Setup the ConnectionManager dialog
        self.connection_manager = self.builder.get_object("connection_manager")
        self.connection_manager.set_transient_for(self.window.window)

        self.connection_manager.set_icon(common.get_deluge_icon())

        self.builder.get_object("image1").set_from_pixbuf(common.get_logo(32))

        self.askpassword_dialog = self.builder.get_object("askpassword_dialog")
        self.askpassword_dialog.set_transient_for(self.connection_manager)
        self.askpassword_dialog.set_icon(common.get_deluge_icon())
        self.askpassword_dialog_entry = self.builder.get_object("askpassword_dialog_entry")

        self.hostlist = self.builder.get_object("hostlist")

        # Create status pixbufs
        if not HOSTLIST_PIXBUFS:
            for stock_id in (gtk.STOCK_NO, gtk.STOCK_YES, gtk.STOCK_CONNECT):
                HOSTLIST_PIXBUFS.append(
                    self.connection_manager.render_icon(
                        stock_id, gtk.ICON_SIZE_MENU
                    )
                )

        # Create the host list gtkliststore
        # id-hash, hostname, port, status, username, password, version
        self.liststore = gtk.ListStore(str, str, int, str, str, str, str)

        # Setup host list treeview
        self.hostlist.set_model(self.liststore)
        render = gtk.CellRendererPixbuf()
        column = gtk.TreeViewColumn(_("Status"), render)
        column.set_cell_data_func(render, cell_render_status, 3)
        self.hostlist.append_column(column)
        render = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_("Host"), render, text=HOSTLIST_COL_HOST)
        column.set_cell_data_func(render, cell_render_host, (1, 2, 4))
        column.set_expand(True)
        self.hostlist.append_column(column)
        render = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_("Version"), render, text=HOSTLIST_COL_VERSION)
        self.hostlist.append_column(column)

        # Connect the signals to the handlers
        self.builder.connect_signals(self)
        self.hostlist.get_selection().connect(
            "changed", self.on_hostlist_selection_changed
        )

        # Load any saved host entries
        self.__load_hostlist()
        self.__load_options()
        self.__update_list()

        self.running = True
        # Trigger the on_selection_changed code and select the first host
        # if possible
        self.hostlist.get_selection().unselect_all()
        if len(self.liststore) > 0:
            self.hostlist.get_selection().select_path("0")

        # Run the dialog
        response = self.connection_manager.run()
        self.running = False

        # Save the toggle options
        self.__save_options()
        self.__save_hostlist()

        self.connection_manager.destroy()
        del self.builder
        del self.window
        del self.connection_manager
        del self.liststore
        del self.hostlist
コード例 #8
0
    def enable(self):
        """Enables the system tray icon."""
        self.builder = gtk.Builder()
        self.builder.add_from_file(
            deluge.common.resource_filename(
                "deluge.ui.gtkui", os.path.join("glade", "tray_menu.ui")))

        self.builder.connect_signals({
            "on_menuitem_show_deluge_activate":
            self.on_menuitem_show_deluge_activate,
            "on_menuitem_add_torrent_activate":
            self.on_menuitem_add_torrent_activate,
            "on_menuitem_pause_all_activate":
            self.on_menuitem_pause_all_activate,
            "on_menuitem_resume_all_activate":
            self.on_menuitem_resume_all_activate,
            "on_menuitem_quit_activate":
            self.on_menuitem_quit_activate,
            "on_menuitem_quitdaemon_activate":
            self.on_menuitem_quitdaemon_activate
        })

        self.tray_menu = self.builder.get_object("tray_menu")

        if appindicator and self.config["enable_appindicator"]:
            log.debug("Enabling the Application Indicator..")
            self.indicator = appindicator.Indicator(
                "deluge", "deluge", appindicator.CATEGORY_APPLICATION_STATUS)
            try:
                self.indicator.set_property("title", _("Deluge"))
            except TypeError:
                # Catch 'title' property error for previous appindicator versions
                pass
            # Pass the menu to the Application Indicator
            self.indicator.set_menu(self.tray_menu)

            # Make sure the status of the Show Window MenuItem is correct
            self._sig_win_hide = self.window.window.connect(
                "hide", self._on_window_hide)
            self._sig_win_show = self.window.window.connect(
                "show", self._on_window_show)
            if self.window.visible():
                self.builder.get_object("menuitem_show_deluge").set_active(
                    True)
            else:
                self.builder.get_object("menuitem_show_deluge").set_active(
                    False)

            # Show the Application Indicator
            self.indicator.set_status(appindicator.STATUS_ACTIVE)

        else:
            log.debug("Enabling the system tray icon..")
            if deluge.common.windows_check() or deluge.common.osx_check():
                self.tray = gtk.status_icon_new_from_pixbuf(
                    common.get_logo(32))
            else:
                try:
                    self.tray = gtk.status_icon_new_from_icon_name("deluge")
                except:
                    log.warning(
                        "Update PyGTK to 2.10 or greater for SystemTray..")
                    return

            self.tray.connect("activate", self.on_tray_clicked)
            self.tray.connect("popup-menu", self.on_tray_popup)

        self.builder.get_object("download-limit-image").set_from_file(
            deluge.common.get_pixmap("downloading16.png"))
        self.builder.get_object("upload-limit-image").set_from_file(
            deluge.common.get_pixmap("seeding16.png"))

        client.register_event_handler("ConfigValueChangedEvent",
                                      self.config_value_changed)
        if client.connected():
            # We're connected so we need to get some values from the core
            self.__start()
        else:
            # Hide menu widgets because we're not connected to a host.
            for widget in self.hide_widget_list:
                self.builder.get_object(widget).hide()