add "open containing folder" by me and lifetime totals in tray tooltip by micah

This commit is contained in:
Marcos Pinto 2007-08-08 21:45:18 +00:00
parent 5b522678e0
commit 8bd900d189
6 changed files with 154 additions and 7 deletions

View File

@ -2245,6 +2245,80 @@ HTTP W/ Auth</property>
<property name="padding">2</property> <property name="padding">2</property>
</packing> </packing>
</child> </child>
<child>
<widget class="GtkFrame" id="frame19">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label_xalign">0</property>
<property name="shadow_type">GTK_SHADOW_NONE</property>
<child>
<widget class="GtkAlignment" id="alignment23">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkHBox" id="hbox7">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkHBox" id="hbox13">
<property name="visible">True</property>
<property name="spacing">15</property>
<child>
<widget class="GtkLabel" id="label39">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Open folders with: </property>
</widget>
<packing>
<property name="expand">False</property>
</packing>
</child>
<child>
<widget class="GtkComboBoxEntry" id="combo_file_manager">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="items" translatable="yes">Konqueror
Nautilus
Thunar</property>
<child internal-child="entry">
<widget class="GtkEntry" id="comboboxentry-entry1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
</widget>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkLabel" id="label36">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">&lt;b&gt;Desktop File Manager&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="type">label_item</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">2</property>
<property name="position">1</property>
</packing>
</child>
<child> <child>
<widget class="GtkFrame" id="frame3"> <widget class="GtkFrame" id="frame3">
<property name="label_xalign">0</property> <property name="label_xalign">0</property>
@ -2303,7 +2377,7 @@ HTTP W/ Auth</property>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="padding">2</property> <property name="padding">2</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -2355,7 +2429,7 @@ HTTP W/ Auth</property>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">2</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -2398,7 +2472,7 @@ information is sent.</property>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">3</property> <property name="position">4</property>
</packing> </packing>
</child> </child>
</widget> </widget>

View File

@ -191,5 +191,19 @@
</child> </child>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkImageMenuItem" id="menuitem1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">_Open Containing Folder</property>
<property name="use_underline">True</property>
<signal name="activate" handler="open_folder_clicked"/>
<child internal-child="image">
<widget class="GtkImage" id="menu-item-image15">
<property name="stock">gtk-open</property>
</widget>
</child>
</widget>
</child>
</widget> </widget>
</glade-interface> </glade-interface>

View File

@ -69,7 +69,13 @@ def fsize(fsize_b):
if fsize_mb < 1000: if fsize_mb < 1000:
return "%.1f %s" % (fsize_mb, _("MiB")) return "%.1f %s" % (fsize_mb, _("MiB"))
fsize_gb = float (fsize_mb / 1024.0) fsize_gb = float (fsize_mb / 1024.0)
return "%.1f %s" % (fsize_gb, _("GiB")) if fsize_gb < 1000:
return "%.1f %s" % (fsize_gb, _("GiB"))
fsize_tb = float (fsize_gb / 1024.0)
if fsize_tb < 1000:
return "%.1f %s" % (fsize_tb, _("TiB"))
fsize_pb = float (fsize_tb / 1024.0)
return "%.1f %s" % (fsize_pb, _("PiB"))
# Returns a formatted string representing a percentage # Returns a formatted string representing a percentage
def fpcnt(dec): def fpcnt(dec):
@ -159,3 +165,5 @@ class EncLevel:
class ProxyType: class ProxyType:
none, socks4, socks5, socks5_pw, http, http_pw = range(6) none, socks4, socks5, socks5_pw, http, http_pw = range(6)
class FileManager:
konqueror, nautilus, thunar = range(3)

View File

@ -56,6 +56,7 @@ class PreferencesDlg:
def show(self, interface, window): def show(self, interface, window):
# Load settings into dialog # Load settings into dialog
try: try:
self.glade.get_widget("combo_file_manager").set_active(self.preferences.get("file_manager"))
self.glade.get_widget("combo_encin").set_active(self.preferences.get("encin_state")) self.glade.get_widget("combo_encin").set_active(self.preferences.get("encin_state"))
self.glade.get_widget("combo_encout").set_active(self.preferences.get("encout_state")) self.glade.get_widget("combo_encout").set_active(self.preferences.get("encout_state"))
self.glade.get_widget("combo_enclevel").set_active(self.preferences.get("enclevel_type")) self.glade.get_widget("combo_enclevel").set_active(self.preferences.get("enclevel_type"))
@ -156,6 +157,7 @@ class PreferencesDlg:
def ok_clicked(self, source, interface): def ok_clicked(self, source, interface):
self.dialog.hide() self.dialog.hide()
self.preferences.set("file_manager", self.glade.get_widget("combo_file_manager").get_active())
self.preferences.set("encin_state", self.glade.get_widget("combo_encin").get_active()) self.preferences.set("encin_state", self.glade.get_widget("combo_encin").get_active())
self.preferences.set("encout_state", self.glade.get_widget("combo_encout").get_active()) self.preferences.set("encout_state", self.glade.get_widget("combo_encout").get_active())
self.preferences.set("enclevel_type", self.glade.get_widget("combo_enclevel").get_active()) self.preferences.set("enclevel_type", self.glade.get_widget("combo_enclevel").get_active())

View File

@ -52,6 +52,9 @@ class DelugeGTK:
#Start the Deluge Manager: #Start the Deluge Manager:
self.manager = core.Manager(common.CLIENT_CODE, common.CLIENT_VERSION, self.manager = core.Manager(common.CLIENT_CODE, common.CLIENT_VERSION,
'%s %s'%(common.PROGRAM_NAME, common.PROGRAM_VERSION), common.CONFIG_DIR) '%s %s'%(common.PROGRAM_NAME, common.PROGRAM_VERSION), common.CONFIG_DIR)
self.logdir = os.path.join(common.CONFIG_DIR, 'logs')
self.alltime_download = None
self.alltime_upload = None
self.plugins = plugins.PluginManager(self.manager, self) self.plugins = plugins.PluginManager(self.manager, self)
self.plugins.add_plugin_dir(common.PLUGIN_DIR) self.plugins.add_plugin_dir(common.PLUGIN_DIR)
if os.path.isdir(os.path.join(common.CONFIG_DIR , 'plugins')): if os.path.isdir(os.path.join(common.CONFIG_DIR , 'plugins')):
@ -499,6 +502,7 @@ class DelugeGTK:
"tor_pause": self.tor_pause, "tor_pause": self.tor_pause,
"update_tracker": self.update_tracker, "update_tracker": self.update_tracker,
"clear_finished": self.clear_finished, "clear_finished": self.clear_finished,
"open_folder_clicked": self.open_folder,
"queue_up": self.q_torrent_up, "queue_up": self.q_torrent_up,
"queue_down": self.q_torrent_down, "queue_down": self.q_torrent_down,
"queue_bottom": self.q_to_bottom, "queue_bottom": self.q_to_bottom,
@ -633,7 +637,23 @@ class DelugeGTK:
return is_selected return is_selected
else: else:
return False return False
def open_folder(self, widget):
unique_ids = self.get_selected_torrent_rows()
# try:
for uid in unique_ids:
if self.config.get("file_manager") == 0:
command = "/usr/bin/konqueror"
if self.config.get("file_manager") == 1:
command = "/usr/bin/nautilus"
if self.config.get("file_manager") == 2:
command = "/usr/bin/thunar"
# print "command %s uid %i dir %s\n" %(command, uid, self.manager.unique_IDs[uid].save_dir)
os.system('%s %s' %(command, self.manager.unique_IDs[uid].save_dir))
self.update()
# except KeyError:
# pass
def tor_start(self, widget): def tor_start(self, widget):
unique_ids = self.get_selected_torrent_rows() unique_ids = self.get_selected_torrent_rows()
try: try:
@ -800,6 +820,20 @@ class DelugeGTK:
## Start the timer that updates the interface ## Start the timer that updates the interface
def start(self, start_in_tray=False, cmd_line_torrents=None): def start(self, start_in_tray=False, cmd_line_torrents=None):
if not os.path.isdir(self.logdir):
os.mkdir(self.logdir)
log = os.path.join(self.logdir, "stats.log")
try:
logfile = open(log, "r")
except:
self.alltime_download = 0
self.alltime_upload = 0
else:
readlines = logfile.readlines()
self.alltime_download = long(readlines[0])
self.alltime_upload = long(readlines[1])
logfile.close()
if cmd_line_torrents is None: if cmd_line_torrents is None:
cmd_line_torrents = [] cmd_line_torrents = []
@ -947,10 +981,14 @@ class DelugeGTK:
max_connections = _("Unlimited") max_connections = _("Unlimited")
else: else:
max_connections = int(self.config.get("max_connections_global")) max_connections = int(self.config.get("max_connections_global"))
dlall = long(core_state['total_downloaded']) + self.alltime_download
ulall = long(core_state['total_uploaded']) + self.alltime_upload
dlspeed = common.fspeed(core_state['download_rate']) dlspeed = common.fspeed(core_state['download_rate'])
ulspeed = common.fspeed(core_state['upload_rate']) ulspeed = common.fspeed(core_state['upload_rate'])
dltotal = common.fsize(core_state['total_downloaded']) dltotal = common.fsize(dlall)
ultotal = common.fsize(core_state['total_uploaded']) ultotal = common.fsize(ulall)
if self.config.get("max_download_speed") < 0: if self.config.get("max_download_speed") < 0:
dlspeed_max = _("Unlimited") dlspeed_max = _("Unlimited")
@ -1325,6 +1363,16 @@ class DelugeGTK:
self.shutdown() self.shutdown()
def shutdown(self): def shutdown(self):
core_state = self.manager.get_state()
dlall = long(core_state['total_downloaded']) + self.alltime_download
ulall = long(core_state['total_uploaded']) + self.alltime_upload
log = os.path.join(self.logdir, "stats.log")
logfile = open(log, "w")
logfile.writelines([str(dlall)+'\n', str(ulall)+'\n'])
logfile.close()
enabled_plugins = ':'.join(self.plugins.get_enabled_plugins()) enabled_plugins = ':'.join(self.plugins.get_enabled_plugins())
self.config.set('enabled_plugins', enabled_plugins) self.config.set('enabled_plugins', enabled_plugins)
self.save_window_settings() self.save_window_settings()

View File

@ -40,6 +40,7 @@ import common
import os.path import os.path
DEFAULT_PREFS = { DEFAULT_PREFS = {
"file_manager" : common.FileManager.nautilus,
"send_info" : True, "send_info" : True,
"auto_end_seeding" : False, "auto_end_seeding" : False,
"auto_seed_ratio" : 0, "auto_seed_ratio" : 0,