From a17466f6b9eabe36f32727dbc068df1d179b3bbe Mon Sep 17 00:00:00 2001 From: Andrew Resch Date: Wed, 20 Jun 2007 23:34:53 +0000 Subject: [PATCH] Changed status icons size. Changed the way the download/upload speed limit is done in the system tray. --- glade/dgtkpopups.glade | 96 +++++++++- glade/preferences_dialog.glade | 325 ++++++++++++--------------------- glade/tray_menu.glade | 18 +- pixmaps/downloading22.png | Bin 0 -> 977 bytes pixmaps/downloading24.png | Bin 1083 -> 0 bytes pixmaps/inactive22.png | Bin 0 -> 884 bytes pixmaps/inactive24.png | Bin 961 -> 0 bytes pixmaps/seeding22.png | Bin 0 -> 827 bytes pixmaps/seeding24.png | Bin 935 -> 0 bytes src/dialogs.py | 6 - src/interface.py | 133 ++++++++++---- src/pref.py | 4 +- 12 files changed, 326 insertions(+), 256 deletions(-) create mode 100644 pixmaps/downloading22.png delete mode 100644 pixmaps/downloading24.png create mode 100644 pixmaps/inactive22.png delete mode 100644 pixmaps/inactive24.png create mode 100644 pixmaps/seeding22.png delete mode 100644 pixmaps/seeding24.png diff --git a/glade/dgtkpopups.glade b/glade/dgtkpopups.glade index 78809ec2c..642cddddb 100644 --- a/glade/dgtkpopups.glade +++ b/glade/dgtkpopups.glade @@ -1,6 +1,6 @@ - + True @@ -309,4 +309,98 @@ + + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + GTK_WIN_POS_MOUSE + True + GDK_WINDOW_TYPE_HINT_DIALOG + True + False + False + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 2 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 10 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Rate: + + + False + + + + + True + True + True + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + 1 + 0 -1 10000 1 10 10 + True + + + False + False + 1 + + + + + False + 1 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_BUTTONBOX_END + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-cancel + True + 0 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-ok + True + 1 + + + 1 + + + + + False + GTK_PACK_END + + + + + diff --git a/glade/preferences_dialog.glade b/glade/preferences_dialog.glade index c0fafa741..a0d3917ea 100644 --- a/glade/preferences_dialog.glade +++ b/glade/preferences_dialog.glade @@ -317,40 +317,86 @@ 4 2 - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 10 - - - True - 0 - Maximum Upload Rate (KiB/s): - - + True + The maximum upload rate for all torrents. Set -1 for unlimited. + 1 + -1 -1 9000 1 10 10 + 1 + 1 + 2 3 4 GTK_FILL - + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + The maximum download rate for all torrents. Set -1 for unlimited. + 1 + -1 -1 9000 1 10 10 + 1 + + + 1 + 2 + 2 + 3 + GTK_FILL + + + + + True + True + The maximum number of upload slots. Set -1 for unlimited. + 1 + -1 -1 1000 1 10 10 + 1 + + + 1 + 2 + 1 + 2 + GTK_FILL + + + + + True + True + The maximum number of connections allowed. Set -1 for unlimited. + 1 + -1 -1 1000 1 10 10 + 1 + + + 1 + 2 + GTK_FILL + + + + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 10 - + True 0 - Maximum Download Rate (KiB/s): + Maximum Connections: - 2 - 3 GTK_FILL @@ -374,84 +420,38 @@ - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 10 - + True 0 - Maximum Connections: + Maximum Download Rate (KiB/s): - GTK_FILL - - - - - True - True - The maximum number of connections allowed. Set -1 for unlimited. - 1 - -1 -1 1000 1 10 10 - 1 - - - 1 - 2 - GTK_FILL - - - - - True - True - The maximum number of upload slots. Set -1 for unlimited. - 1 - -1 -1 1000 1 10 10 - 1 - - - 1 - 2 - 1 - 2 - GTK_FILL - - - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - The maximum download rate for all torrents. Set -1 for unlimited. - 1 - -1 -1 9000 1 10 10 - 1 - - - 1 - 2 2 3 GTK_FILL - + True - True - The maximum upload rate for all torrents. Set -1 for unlimited. - 1 - -1 -1 9000 1 10 10 - 1 + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 10 + + + True + 0 + Maximum Upload Rate (KiB/s): + + - 1 - 2 3 4 GTK_FILL @@ -974,55 +974,54 @@ Full Stream - + True - True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 8080 0 10000 1 10 10 + Proxy Type: + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Username: - 3 - 4 1 2 - + True - True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Password: - 3 - 4 + 2 + 3 - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - None -Socksv4 -Socksv5 -Socksv5 w/ Auth -HTTP -HTTP w/ Auth + Server: - 1 - 2 + 2 + 3 - + True - True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Port: - 1 - 2 + 2 + 3 1 2 @@ -1042,58 +1041,59 @@ HTTP w/ Auth - + True + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Port: - 2 - 3 + 1 + 2 1 2 - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Server: + None +Socksv4 +Socksv5 +Socksv5 w/ Auth +HTTP +HTTP w/ Auth - 2 - 3 + 1 + 2 - + True + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Password: - 2 - 3 + 3 + 4 - + True + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Username: + 8080 0 10000 1 10 10 + 3 + 4 1 2 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Proxy Type: - - @@ -1255,97 +1255,6 @@ HTTP w/ Auth 2 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 3 - 20 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 10 - 5 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Download speed limits: - - - - - False - - - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 1 - - - - - - - 3 - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 20 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 10 - 21 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Upload speed limits: - - - - - False - - - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 1 - - - - - - - 4 - - diff --git a/glade/tray_menu.glade b/glade/tray_menu.glade index 55cc37117..01bd5e4e2 100644 --- a/glade/tray_menu.glade +++ b/glade/tray_menu.glade @@ -6,19 +6,33 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Download Limit True + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-missing-image + + - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Upload Limit True + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-missing-image + + diff --git a/pixmaps/downloading22.png b/pixmaps/downloading22.png new file mode 100644 index 0000000000000000000000000000000000000000..77e61965a142c8d1f870354c72dc4dd26637287c GIT binary patch literal 977 zcmeAS@N?(olHy`uVBq!ia0y~yU=U;YjIV zU|`@Z@Q5sCU|@R+!i+C=T-w6Gz#v)T8c`CQpH@mmtT}V z`<;yx0|T?4r;B5VMeo!p_Bqj^BFFX@|KFSb+t&Jgp|kXImX*$e5~c@)rgkx|Oif&K zr0GCOg8Bu%P)99cW(gIwZ7X861U%NPVc`_&a;TlCp&5AT&uSqV^_6eG|Bq`s7UmTb z(pNIwe}3Kfd7od#NF;w)@p)$b!@d6bd%xbQuk0~YNakS+J-mLuK~n$!DKkxS+_Hs( zx4t~u=*I9yu%StL@A@ENZ>1vHm$lbFy#DsTiDTKmg4CZ!%Cvnl3Iic=SNULE*-p zhDB?R%zpUk<;q)M&NfbHi%)O5(l2)2|K82ttTR2U#Y9{vP72z4pH^UG9@vCFi58-_ zeh~WX)Tfzcw_Zt$O7py!nj&WN`bC|DCQER>!O@)c=H172PwFr@Ot{;A^wV zoO&3NTPLr0=6~o}rHU1s;K2h83>KH1`>Z{Ddg8inr94pSa+1C~%}10mVe4mguPheT zP|K3t3JQ#et9~;+Xk0d7mPOL7CDKh-_FYZbXWIPr-CXAhF76R|=asKH#-HY7cf2(( zb>X`h{SynB%b53nWxlqHyH@p@;!n^@Ze4%amd23d3=D2EqQ5O>UHm1}ke$+V@aRqB=cli|;8l7QeK1zyi`i_2 znNEuq+ufTgI!D7V!TjE?xi4P43CXQmy8r0(XK{7M1n>1|pN>llD!C-9V&%3-x!{pT zhtQ`*EiUaD%dP7*rdgM#KDsUXApZZ!E9WOW8UCJgmixU|-hK~-@OR(kQoesTntNwU lYxT=dE7#XsTYRZ!(4RD`W&J(-O$-bS44$rjF6*2Ung9r?z6AgP literal 0 HcmV?d00001 diff --git a/pixmaps/downloading24.png b/pixmaps/downloading24.png deleted file mode 100644 index 6f9a9d456ed6752b9518f830b3b2fd60c0c11ed9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1083 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 SzGGluVDNPHb6Mw<&;$T{PqFO) diff --git a/pixmaps/seeding22.png b/pixmaps/seeding22.png new file mode 100644 index 0000000000000000000000000000000000000000..816e5e075a76cc7bfd18924790656f31735d1cfd GIT binary patch literal 827 zcmeAS@N?(olHy`uVBq!ia0y~yU=U;YjIV zU|`@Z@Q5sCU|@R+!i+C=T-w6Gz#v)T8c`CQpH@mmtT}V z`<;yx0|V0zPZ!4!i{7bIy#0j(CEDg&&YkIJt-FPz%gOPI3$xS#Z-pbRhKy!Mrkd&W zbk2U)W2mO*vuD9S=DQK)yA*w6b{H0}=S=eO*`w$d;4mRNvuoNMDFDmT$-}FMOeEZBdbG;5$2x&3Pe0h22zLAR5^AeRaKi8k+%`M@3 zb!g7(T8A|fOA^#BT1=Ep-Lp~Vl)CsqWe4E}8Ui1jLMKe!SZO6>*w*E=sIX<(r$bjV zyDqiediMETjs^m4bM2{+~8lyQ!}eH`DbZX zGuz*b7G8`?p3AA*Hmz3PoM8RVEnBwaO(XNw3s+xcJ@%}yXSF{4@`_E2e#4&=A1`bQ z46={?m|?rcJSXK|FzfPJ2Llq51o!DUsGQlFF(-`SX~2A&4ePu37k|#{N&Z?;Qohl+ z;eBSsH!&aPDCG@vp2r$FcL%W6&U(dkOUjFxVb$pcyE%<4e@tuQnyj`U`mWf63Zuuf z;`$DL*kXNQS!`>=OjU`W@8rsTPh8cJ-lLV?>aV=VjGJNSF0-j6rS47Zb_H2+*Ujad zc=qvCTj_gqLaoltPqkJMIo0y^LvrsPw#c}fQZC^Ki%xJx8@&zXHWxRFZf4<)IAx?U zZIcbxPxI|R*MG`eCC$ zJTx;IGp`<82J8a@Gu5%9gP2 zNHH)lt9ZINhFJ7Yo#LAj6Do4N{{24l_u2dIsZ5@6!-YFbvv(GoiwKLTc1J{(uB@iV z^vwb;QR1y-!6HX`T{)B_#l>7(3KwcC>fKqfdl|R4pw?6q-m}L`J{f*iGk%|3w0nnH zrqRqBG8KEu@Bf`I|G)VCLxrU&+n+ya`SasROU>8+B|%;$nyPmf1w1+-T5@NWrj&bm^2VP#0}kCYUK8N7S-9r@bhY|w&VOqU?2}2JcJRo& zM5#Hq@1M>#*Us9jCt6TH@ACV)v%l{q$fk#Be0&tpcYn5G)z*!nZ+1SgJaRcSPE-76 zad^bSmgyURYCku!F=ak0z#}VURnhlL?v$fI@X9NeF?vPIvu8@xWWVC^k85w0x)Sw( z{Q}2>`L18{(>QI~_iZ`r-zxO1Z^PsG!efS(RbS1v{5O8B^5Dkif*g@aVt2kK?&2~R zOVBv}dD*!N_nG;9#>=?Zty!B-J}*S| z7vr5(PW7{tTZI<4C4UN&Xr8h`>`;Gr;tuwCat;69gazDbTPb;=VG6G!izCl8#sk%E zb|?28-6h1nvC7?WOL>8+{DlK-Eom(4PD(pD8Qq%pGvUx-mpg2+6U2A9ZK>TX_l9>_ zCc}j%wFcV9bqh@@>-=QZfv;Huru`B^zN9Z+|O@X&;K}7 z{8M4R3(H2U?F-iGIg4j4TdKnv`z6wpW&WSCY3JWRFZa1Mv0EirY`M(jMHegU|g0?Iuxd{Mx|or{eVO*8AD5IfE3BJKp}pz`(%Z>FVdQ&MBb@0BFXbX#fBK diff --git a/src/dialogs.py b/src/dialogs.py index 9414b2b48..c3d96464e 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -85,9 +85,6 @@ class PreferencesDlg: self.glade.get_widget("ratio_spinner").set_value(self.preferences.get("auto_seed_ratio")) self.glade.get_widget("chk_dht").set_active(self.preferences.get("enable_dht", bool, default=True)) self.glade.get_widget("spin_gui").set_value(self.preferences.get("gui_update_interval", float, default=1.0)) - - self.glade.get_widget("txt_tray_downladspeed").set_text(self.preferences.get("tray_downloadspeedlist", default="")) - self.glade.get_widget("txt_tray_uploadspeed").set_text(self.preferences.get("tray_uploadspeedlist", default="")) except KeyError: pass @@ -128,9 +125,6 @@ class PreferencesDlg: self.preferences.set("enable_dht", self.glade.get_widget("chk_dht").get_active()) self.preferences.set("gui_update_interval", self.glade.get_widget("spin_gui").get_value()) - self.preferences.set("tray_downloadspeedlist", self.glade.get_widget("txt_tray_downladspeed").get_text()) - self.preferences.set("tray_uploadspeedlist", self.glade.get_widget("txt_tray_uploadspeed").get_text()) - def TestPort(self, widget): activep = str(self.parent.manager.get_state()['port']) common.open_url_in_browser(self.dialog,'http://www.deluge-torrent.org/test-port.php?port=%s' %activep) diff --git a/src/interface.py b/src/interface.py index 93296f33d..f745b9776 100644 --- a/src/interface.py +++ b/src/interface.py @@ -170,8 +170,8 @@ class DelugeGTK: "show_hide_window": self.force_show_hide, }) - self.item_bwdownset = self.tray_glade.get_widget("download_limit") - self.item_bwupset = self.tray_glade.get_widget("upload_limit") + self.tray_glade.get_widget("download-limit-image").set_from_file(common.get_pixmap('downloading22.png')) + self.tray_glade.get_widget("upload-limit-image").set_from_file(common.get_pixmap('seeding22.png')) self.build_tray_bwsetsubmenu() self.tray_icon.connect("activate", self.tray_clicked) @@ -181,37 +181,54 @@ class DelugeGTK: self.tray_menu.popup(None, None, gtk.status_icon_position_menu, button, activate_time, status_icon) - def update_tray_bwsetsubmenu(self): - self.submenu_bwdownset.destroy() - self.submenu_bwupset.destroy() - - self.build_tray_bwsetsubmenu() - def build_tray_bwsetsubmenu(self): self.submenu_bwdownset = gtk.Menu() self.submenu_bwupset = gtk.Menu() + + group = None + for value in sorted(self.config.get("tray_downloadspeedlist")): + subitem = gtk.RadioMenuItem(group, str(value) + " " + _("KiB/s")) + group = subitem + self.submenu_bwdownset.append(subitem) + if value == self.config.get("max_download_rate"): + subitem.set_active(True) + subitem.connect("toggled", self.tray_setbwdown) - subitem_downtmp = gtk.MenuItem(_("Unlimited")) - self.submenu_bwdownset.append(subitem_downtmp) - self.submenu_bwdownset.append(gtk.SeparatorMenuItem()) - subitem_downtmp.connect("activate", self.tray_setbwdown) + subitem = gtk.RadioMenuItem(group, _("Unlimited")) + self.submenu_bwdownset.append(subitem) + if self.config.get("max_download_rate") < 0: + subitem.set_active(True) + subitem.connect("toggled", self.tray_setbwdown) - subitem_uptmp = gtk.MenuItem(_("Unlimited")) - self.submenu_bwupset.append(subitem_uptmp) - self.submenu_bwupset.append(gtk.SeparatorMenuItem()) - subitem_uptmp.connect("activate", self.tray_setbwup) + subitem = gtk.SeparatorMenuItem() + self.submenu_bwdownset.append(subitem) + subitem = gtk.MenuItem(_("Other...")) + subitem.connect("activate", self.tray_setbwdown) + self.submenu_bwdownset.append(subitem) - for i in self.config.get("tray_downloadspeedlist").split(","): - subitem_downtmp = gtk.MenuItem(i+" "+_("KiB/s")) - self.submenu_bwdownset.append(subitem_downtmp) - subitem_downtmp.connect("activate", self.tray_setbwdown) - for i in self.config.get("tray_uploadspeedlist").split(","): - subitem_uptmp = gtk.MenuItem(i+" "+_("KiB/s")) - self.submenu_bwupset.append(subitem_uptmp) - subitem_uptmp.connect("activate", self.tray_setbwup) + group = None + for value in self.config.get("tray_uploadspeedlist"): + subitem = gtk.RadioMenuItem(group, str(value) + " " + _("KiB/s")) + group = subitem + if value == self.config.get("max_upload_rate"): + subitem.set_active(True) + self.submenu_bwupset.append(subitem) + subitem.connect("toggled", self.tray_setbwup) - self.item_bwdownset.set_submenu(self.submenu_bwdownset) - self.item_bwupset.set_submenu(self.submenu_bwupset) + subitem = gtk.RadioMenuItem(group, _("Unlimited")) + self.submenu_bwupset.append(subitem) + if self.config.get("max_upload_rate") < 0: + subitem.set_active(True) + subitem.connect("toggled", self.tray_setbwup) + + subitem = gtk.SeparatorMenuItem() + self.submenu_bwupset.append(subitem) + subitem = gtk.MenuItem(_("Other...")) + subitem.connect("activate", self.tray_setbwup) + self.submenu_bwupset.append(subitem) + + self.tray_glade.get_widget("download_limit").set_submenu(self.submenu_bwdownset) + self.tray_glade.get_widget("upload_limit").set_submenu(self.submenu_bwupset) self.submenu_bwdownset.show_all() self.submenu_bwupset.show_all() @@ -219,17 +236,45 @@ class DelugeGTK: def tray_setbwdown(self, widget, data=None): str_bwdown = widget.get_children()[0].get_text().rstrip(" "+_("KiB/s")) if str_bwdown == _("Unlimited"): - str_bwdown = "-1" + str_bwdown = -1 - self.config.set("max_download_rate", str_bwdown) + if str_bwdown == _("Other..."): + dialog_glade = gtk.glade.XML(common.get_glade_file("dgtkpopups.glade")) + rate_dialog = dialog_glade.get_widget("rate_dialog") + spin_rate = dialog_glade.get_widget("spin_rate") + spin_rate.set_value(self.config.get("max_download_rate")) + spin_rate.select_region(0, -1) + response = rate_dialog.run() + if response == 1: # OK Response + str_bwdown = spin_rate.get_value() + else: + rate_dialog.destroy() + return + rate_dialog.destroy() + + self.config.set("max_download_rate", float(str_bwdown)) self.apply_prefs() def tray_setbwup(self, widget, data=None): str_bwup = widget.get_children()[0].get_text().rstrip(" "+_("KiB/s")) if str_bwup == _("Unlimited"): - str_bwup = "-1" + str_bwup = -1 - self.config.set("max_upload_rate", str_bwup) + if str_bwup == _("Other..."): + dialog_glade = gtk.glade.XML(common.get_glade_file("dgtkpopups.glade")) + rate_dialog = dialog_glade.get_widget("rate_dialog") + spin_rate = dialog_glade.get_widget("spin_rate") + spin_rate.set_value(self.config.get("max_upload_rate")) + spin_rate.select_region(0, -1) + response = rate_dialog.run() + if response == 1: # OK Response + str_bwup = spin_rate.get_value() + else: + rate_dialog.destroy() + return + rate_dialog.destroy() + + self.config.set("max_upload_rate", float(str_bwup)) self.apply_prefs() def unlock_tray(self,comingnext): @@ -643,17 +688,31 @@ class DelugeGTK: def apply_prefs(self): # Show tray icon if necessary - self.tray_icon.set_visible(self.config.get("enable_system_tray", bool, default=True)) + self.tray_icon.set_visible(self.config.get("enable_system_tray")) # Update the max_*_rate_bps prefs - ulrate = self.config.get("max_upload_rate", int, default=-1) * 1024 - dlrate = self.config.get("max_download_rate", int, default=-1) * 1024 + ulrate = self.config.get("max_upload_rate") * 1024 + dlrate = self.config.get("max_download_rate") * 1024 if not (ulrate < 0): self.config.set("max_upload_rate_bps", ulrate) if not (dlrate < 0): self.config.set("max_download_rate_bps", dlrate) - self.update_tray_bwsetsubmenu() + # Update the tray download speed limits + if self.config.get("max_download_rate") not in self.config.get("tray_downloadspeedlist") and self.config.get("max_download_rate") >= 0: + # We need to prepend this value and remove the last value in the list + self.config.get("tray_downloadspeedlist").insert(0, self.config.get("max_download_rate")) + self.config.get("tray_downloadspeedlist").pop() + # Re-build the sub-menu to display new option + self.build_tray_bwsetsubmenu() + # Do the same for the upload speed limits + if self.config.get("max_upload_rate") not in self.config.get("tray_uploadspeedlist") and self.config.get("max_upload_rate") >= 0: + # We need to prepend this value and remove the last value in the list + self.config.get("tray_uploadspeedlist").insert(0, self.config.get("max_upload_rate")) + self.config.get("tray_uploadspeedlist").pop() + # Re-build the sub-menu to display new option + self.build_tray_bwsetsubmenu() + # Apply the preferences in the core self.manager.apply_prefs() @@ -699,11 +758,11 @@ class DelugeGTK: # Set the appropriate status icon if state["is_paused"]: - status_icon = gtk.gdk.pixbuf_new_from_file(common.get_pixmap("inactive24.png")) + status_icon = gtk.gdk.pixbuf_new_from_file(common.get_pixmap("inactive22.png")) elif state["is_seed"]: - status_icon = gtk.gdk.pixbuf_new_from_file(common.get_pixmap("seeding24.png")) + status_icon = gtk.gdk.pixbuf_new_from_file(common.get_pixmap("seeding22.png")) else: - status_icon = gtk.gdk.pixbuf_new_from_file(common.get_pixmap("downloading24.png")) + status_icon = gtk.gdk.pixbuf_new_from_file(common.get_pixmap("downloading22.png")) rlist = [int(unique_id), int(queue), status_icon, str(name), long(size), float(progress), str(message), int(seeds), int(seeds_t), int(peers), int(peers_t), int(dlrate), int(ulrate), int(eta), float(share)] diff --git a/src/pref.py b/src/pref.py index 2efd678e2..649ca0191 100644 --- a/src/pref.py +++ b/src/pref.py @@ -77,7 +77,9 @@ DEFAULT_PREFS = { "show_status" : True, "show_toolbar" : True, "show_ul" : True, + "tray_downloadspeedlist" : [5.0, 10.0, 30.0, 80.0, 300.0], "tray_passwd" : "", + "tray_uploadspeedlist" : [5.0, 10.0, 30.0, 80.0, 300.0] "use_compact_storage" : False, "use_default_dir" : False, "use_natpmp" : False, @@ -89,8 +91,6 @@ DEFAULT_PREFS = { "window_width" : 640, "window_x_pos" : 0, "window_y_pos" : 0, - "tray_downloadspeedlist" : "10,20,30,40,50,100,200,300,400,500,1000", - "tray_uploadspeedlist" : "10,20,30,40,50,100,200,300,400,500,1000" } class Preferences: def __init__(self, filename=None, global_defaults=True, defaults=None):