Author: andar
Revision: 3834
Log:
Allow adding multiple trackers at once in the edit tracker dialog
Diff:
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-09-19 22:57:05 UTC (rev 3833)
+++ trunk/ChangeLog 2008-09-20 02:08:56 UTC (rev 3834)
@@ -9,3 +9,4 @@
* Add peer progress to the peers tab
* Sorting # column will place downloaders above seeds
* Remove dependency on libtorrent for add torrent dialog
+ * Allow adding multiple trackers at once in the edit tracker dialog
Modified: trunk/deluge/ui/gtkui/edittrackersdialog.py
===================================================================
--- trunk/deluge/ui/gtkui/edittrackersdialog.py 2008-09-19 22:57:05 UTC (rev
3833)
+++ trunk/deluge/ui/gtkui/edittrackersdialog.py 2008-09-20 02:08:56 UTC (rev
3834)
@@ -1,7 +1,7 @@
#
# edittrackersdialog.py
#
-# Copyright (C) 2007 Andrew Resch ('andar') <[EMAIL PROTECTED]>
+# Copyright (C) 2007, 2008 Andrew Resch ('andar') <[EMAIL PROTECTED]>
#
# Deluge is free software.
#
@@ -125,7 +125,7 @@
log.debug("on_button_add_clicked")
# Show the add tracker dialog
self.add_tracker_dialog.show()
- self.glade.get_widget("entry_tracker").grab_focus()
+ self.glade.get_widget("textview_trackers").grab_focus()
def on_button_remove_clicked(self, widget):
log.debug("on_button_remove_clicked")
@@ -185,38 +185,43 @@
def on_button_add_ok_clicked(self, widget):
log.debug("on_button_add_ok_clicked")
- from re import search as re_search
- tracker = self.glade.get_widget("entry_tracker").get_text()
- if not re_search("[udp|http]s?://", tracker):
- # Bad url.. lets prepend http://
- tracker = "http://" + tracker
-
- # Figure out what tier number to use.. it's going to be the highest+1
- # Also check for duplicates
- self.highest_tier = 0
- self.duplicate = False
- def tier_count(model, path, iter, data):
- tier = model.get_value(iter, 0)
- if tier > self.highest_tier:
- self.highest_tier = tier
- tracker = model.get_value(iter, 1)
- if data == tracker:
- # We already have this tracker in the list
- self.duplicate = True
- # Check if there are any entries
- if self.liststore.iter_n_children(None) > 0:
- self.liststore.foreach(tier_count, tracker)
- else:
- self.highest_tier = -1
-
- # If not a duplicate, then add it to the list
- if not self.duplicate:
- # Add the tracker to the list
- self.add_tracker(self.highest_tier + 1, tracker)
+ # Create a list of trackers from the textview widget
+ textview = self.glade.get_widget("textview_trackers")
+ trackers = []
+ b = textview.get_buffer()
+ lines = b.get_text(b.get_start_iter(),
b.get_end_iter()).strip().split("\n")
+ for l in lines:
+ if deluge.common.is_url(l):
+ trackers.append(l)
+ for tracker in trackers:
+ # Figure out what tier number to use.. it's going to be the
highest+1
+ # Also check for duplicates
+ highest_tier = 0
+ duplicate = False
+ def tier_count(model, path, iter, data):
+ tier = model.get_value(iter, 0)
+ if tier > data[1]:
+ data[1] = tier
+ tracker = model.get_value(iter, 1)
+ if data[0] == tracker:
+ # We already have this tracker in the list
+ data[2] = True
+
+ # Check if there are any entries
+ if self.liststore.iter_n_children(None) > 0:
+ self.liststore.foreach(tier_count, [tracker, highest_tier,
duplicate])
+ else:
+ highest_tier = -1
+
+ # If not a duplicate, then add it to the list
+ if not duplicate:
+ # Add the tracker to the list
+ self.add_tracker(highest_tier + 1, tracker)
+
# Clear the entry widget and hide the dialog
- self.glade.get_widget("entry_tracker").set_text("")
+ textview.get_buffer().set_text("")
self.add_tracker_dialog.hide()
def on_button_add_cancel_clicked(self, widget):
Modified: trunk/deluge/ui/gtkui/glade/edit_trackers.glade
===================================================================
--- trunk/deluge/ui/gtkui/glade/edit_trackers.glade 2008-09-19 22:57:05 UTC
(rev 3833)
+++ trunk/deluge/ui/gtkui/glade/edit_trackers.glade 2008-09-20 02:08:56 UTC
(rev 3834)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Wed Aug 13 20:02:28 2008 -->
+<!--Generated with glade3 3.4.5 on Fri Sep 19 18:55:00 2008 -->
<glade-interface>
<widget class="GtkDialog" id="edit_trackers_dialog">
<property name="width_request">400</property>
@@ -93,7 +93,7 @@
<property name="can_focus">True</property>
<property name="receives_default">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="no">gtk-go-up</property>
+ <property name="label">gtk-go-up</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_button_up_clicked"/>
@@ -134,7 +134,7 @@
<property name="can_focus">True</property>
<property name="receives_default">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="no">gtk-remove</property>
+ <property name="label">gtk-remove</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
<signal name="clicked"
handler="on_button_remove_clicked"/>
@@ -149,7 +149,7 @@
<property name="can_focus">True</property>
<property name="receives_default">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="no">gtk-go-down</property>
+ <property name="label">gtk-go-down</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
<signal name="clicked"
handler="on_button_down_clicked"/>
@@ -186,7 +186,7 @@
<property name="can_focus">True</property>
<property name="receives_default">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="no">gtk-cancel</property>
+ <property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_button_cancel_clicked"/>
@@ -198,7 +198,7 @@
<property name="can_focus">True</property>
<property name="receives_default">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="no">gtk-ok</property>
+ <property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_button_ok_clicked"/>
@@ -218,6 +218,7 @@
</widget>
<widget class="GtkDialog" id="add_tracker_dialog">
<property name="width_request">400</property>
+ <property name="height_request">200</property>
<property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
<property name="border_width">5</property>
<property name="title" translatable="yes">Add Tracker</property>
@@ -256,7 +257,7 @@
<widget class="GtkLabel" id="label1">
<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"><b>Add
Tracker</b></property>
+ <property name="label" translatable="yes"><b>Add
Trackers</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
@@ -290,21 +291,30 @@
<widget class="GtkLabel" id="label2">
<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">Tracker:</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="label"
translatable="yes">Trackers:</property>
</widget>
<packing>
<property name="expand">False</property>
- <property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="entry_tracker">
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="has_focus">True</property>
- <property name="is_focus">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="activates_default">True</property>
+ <property
name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property
name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTextView" id="textview_trackers">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="left_margin">1</property>
+ <property name="right_margin">1</property>
+ <property name="accepts_tab">False</property>
+ </widget>
+ </child>
</widget>
<packing>
<property name="position">1</property>
@@ -312,8 +322,6 @@
</child>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
@@ -333,7 +341,7 @@
<property name="can_focus">True</property>
<property name="receives_default">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="no">gtk-cancel</property>
+ <property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_button_add_cancel_clicked"/>
@@ -347,7 +355,7 @@
<property name="has_default">True</property>
<property name="receives_default">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="no">gtk-ok</property>
+ <property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_button_add_ok_clicked"/>
@@ -482,7 +490,7 @@
<property name="can_focus">True</property>
<property name="receives_default">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="no">gtk-cancel</property>
+ <property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
<signal name="clicked"
handler="on_button_edit_cancel_clicked"/>
@@ -496,7 +504,7 @@
<property name="has_default">True</property>
<property name="receives_default">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="no">gtk-ok</property>
+ <property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_button_edit_ok_clicked"/>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"deluge-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/deluge-commit?hl=en
-~----------~----~----~----~------~----~------~--~---