Made TrackerIcons a component to prevent trying to get an icon multiple
times Fixed showing the wrong tracker icon in the TorrentView when the icon could not be retrieved from the tracker
This commit is contained in:
parent
925dcd43b8
commit
7b72d79d32
|
@ -30,7 +30,6 @@ import pkg_resources
|
||||||
|
|
||||||
import deluge.component as component
|
import deluge.component as component
|
||||||
import deluge.common
|
import deluge.common
|
||||||
from deluge.ui.tracker_icons import TrackerIcons
|
|
||||||
from deluge.log import LOG as log
|
from deluge.log import LOG as log
|
||||||
from deluge.ui.client import client
|
from deluge.ui.client import client
|
||||||
from deluge.configmanager import ConfigManager
|
from deluge.configmanager import ConfigManager
|
||||||
|
@ -71,7 +70,7 @@ class FilterTreeView(component.Component):
|
||||||
self.scrolled = glade.get_widget("scrolledwindow_sidebar")
|
self.scrolled = glade.get_widget("scrolledwindow_sidebar")
|
||||||
self.sidebar = component.get("SideBar")
|
self.sidebar = component.get("SideBar")
|
||||||
self.config = ConfigManager("gtkui.conf")
|
self.config = ConfigManager("gtkui.conf")
|
||||||
self.tracker_icons = TrackerIcons()
|
self.tracker_icons = component.get("TrackerIcons")
|
||||||
|
|
||||||
self.label_view = gtk.TreeView()
|
self.label_view = gtk.TreeView()
|
||||||
self.sidebar.add_tab(self.label_view, "filters", _("Filters"))
|
self.sidebar.add_tab(self.label_view, "filters", _("Filters"))
|
||||||
|
|
|
@ -50,6 +50,7 @@ from statusbar import StatusBar
|
||||||
from connectionmanager import ConnectionManager
|
from connectionmanager import ConnectionManager
|
||||||
from pluginmanager import PluginManager
|
from pluginmanager import PluginManager
|
||||||
from ipcinterface import IPCInterface
|
from ipcinterface import IPCInterface
|
||||||
|
from deluge.ui.tracker_icons import TrackerIcons
|
||||||
|
|
||||||
from queuedtorrents import QueuedTorrents
|
from queuedtorrents import QueuedTorrents
|
||||||
from addtorrentdialog import AddTorrentDialog
|
from addtorrentdialog import AddTorrentDialog
|
||||||
|
@ -166,6 +167,7 @@ class GtkUI:
|
||||||
# We make sure that the UI components start once we get a core URI
|
# We make sure that the UI components start once we get a core URI
|
||||||
client.set_disconnect_callback(self.__on_disconnect)
|
client.set_disconnect_callback(self.__on_disconnect)
|
||||||
|
|
||||||
|
self.trackericons = TrackerIcons()
|
||||||
# Initialize various components of the gtkui
|
# Initialize various components of the gtkui
|
||||||
self.mainwindow = MainWindow()
|
self.mainwindow = MainWindow()
|
||||||
self.menubar = MenuBar()
|
self.menubar = MenuBar()
|
||||||
|
|
|
@ -75,14 +75,18 @@ def cell_data_statusicon(column, cell, model, row, data):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def cell_data_trackericon(column, cell, model, row, data):
|
def cell_data_trackericon(column, cell, model, row, data):
|
||||||
icon_path = TrackerIcons().get(model[row][data])
|
icon_path = component.get("TrackerIcons").get(model[row][data])
|
||||||
if icon_path:
|
if icon_path:
|
||||||
try:
|
try:
|
||||||
icon = gtk.gdk.pixbuf_new_from_file_at_size(icon_path, 16, 16)
|
icon = gtk.gdk.pixbuf_new_from_file_at_size(icon_path, 16, 16)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
pass
|
pass
|
||||||
if cell.get_property("pixbuf") != icon:
|
else:
|
||||||
cell.set_property("pixbuf", icon)
|
icon = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, 16, 16)
|
||||||
|
icon.fill(0x00000000)
|
||||||
|
|
||||||
|
if cell.get_property("pixbuf") != icon:
|
||||||
|
cell.set_property("pixbuf", icon)
|
||||||
|
|
||||||
|
|
||||||
def cell_data_progress(column, cell, model, row, data):
|
def cell_data_progress(column, cell, model, row, data):
|
||||||
|
|
|
@ -31,6 +31,7 @@ from deluge.log import LOG as log
|
||||||
from deluge.common import get_pixmap
|
from deluge.common import get_pixmap
|
||||||
import os
|
import os
|
||||||
import deluge.configmanager
|
import deluge.configmanager
|
||||||
|
import deluge.component as component
|
||||||
|
|
||||||
#some servers don't have their favicon at the expected location
|
#some servers don't have their favicon at the expected location
|
||||||
RENAMES = {
|
RENAMES = {
|
||||||
|
@ -60,8 +61,9 @@ def fetch_url(url, valid_subtypes=None):
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
class TrackerIcons(object):
|
class TrackerIcons(component.Component):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
component.Component.__init__(self, "TrackerIcons")
|
||||||
#set image cache dir
|
#set image cache dir
|
||||||
self.image_dir = os.path.join(deluge.configmanager.get_config_dir(), "icons")
|
self.image_dir = os.path.join(deluge.configmanager.get_config_dir(), "icons")
|
||||||
if not os.path.exists(self.image_dir):
|
if not os.path.exists(self.image_dir):
|
||||||
|
@ -140,10 +142,11 @@ class TrackerIcons(object):
|
||||||
f = open(filename,"wb")
|
f = open(filename,"wb")
|
||||||
f.write(icon_data)
|
f.write(icon_data)
|
||||||
f.close()
|
f.close()
|
||||||
self.images[tracker_host] = filename
|
|
||||||
else:
|
else:
|
||||||
filename = None
|
filename = None
|
||||||
|
|
||||||
|
self.images[tracker_host] = filename
|
||||||
|
|
||||||
if callback:
|
if callback:
|
||||||
gobject.idle_add(callback, filename)
|
gobject.idle_add(callback, filename)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue