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">&lt;b&gt;Add 
Tracker&lt;/b&gt;</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Add 
Trackers&lt;/b&gt;</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
-~----------~----~----~----~------~----~------~--~---

Reply via email to