Ticket #1859: remove_torrent.patch

File remove_torrent.patch, 11.6 KB (added by James_Kern, 14 years ago)
  • new file deluge/ui/gtkui/glade/remove_torrent_dialog2.glade

    diff --git a/deluge/ui/gtkui/glade/remove_torrent_dialog2.glade b/deluge/ui/gtkui/glade/remove_torrent_dialog2.glade
    new file mode 100644
    index 0000000..2ee3dd6
    - +  
     1<?xml version="1.0" encoding="UTF-8"?>
     2<glade-interface>
     3  <!-- interface-requires gtk+ 2.24 -->
     4  <!-- interface-naming-policy project-wide -->
     5  <widget class="GtkDialog" id="remove_torrent_dialog">
     6    <property name="can_focus">False</property>
     7    <property name="border_width">5</property>
     8    <property name="resizable">False</property>
     9    <property name="modal">True</property>
     10    <property name="window_position">center-on-parent</property>
     11    <property name="destroy_with_parent">True</property>
     12    <property name="type_hint">dialog</property>
     13    <child internal-child="vbox">
     14      <widget class="GtkVBox" id="dialog-vbox1">
     15        <property name="visible">True</property>
     16        <property name="can_focus">False</property>
     17        <property name="spacing">2</property>
     18        <child internal-child="action_area">
     19          <widget class="GtkHButtonBox" id="dialog-action_area1">
     20            <property name="visible">True</property>
     21            <property name="can_focus">False</property>
     22            <property name="layout_style">end</property>
     23            <child>
     24              <widget class="GtkButton" id="cancel_button">
     25                <property name="label">gtk-cancel</property>
     26                <property name="visible">True</property>
     27                <property name="can_focus">True</property>
     28                <property name="receives_default">True</property>
     29                <property name="use_action_appearance">False</property>
     30                <property name="use_stock">True</property>
     31              </widget>
     32              <packing>
     33                <property name="expand">False</property>
     34                <property name="fill">False</property>
     35                <property name="position">0</property>
     36              </packing>
     37            </child>
     38            <child>
     39              <widget class="GtkButton" id="ok_button">
     40                <property name="label">gtk-ok</property>
     41                <property name="response_id">1</property>
     42                <property name="visible">True</property>
     43                <property name="can_focus">True</property>
     44                <property name="receives_default">True</property>
     45                <property name="use_action_appearance">False</property>
     46                <property name="use_stock">True</property>
     47              </widget>
     48              <packing>
     49                <property name="expand">False</property>
     50                <property name="fill">False</property>
     51                <property name="position">1</property>
     52              </packing>
     53            </child>
     54          </widget>
     55          <packing>
     56            <property name="expand">False</property>
     57            <property name="fill">True</property>
     58            <property name="pack_type">end</property>
     59            <property name="position">0</property>
     60          </packing>
     61        </child>
     62        <child>
     63          <widget class="GtkHBox" id="hbox1">
     64            <property name="visible">True</property>
     65            <property name="can_focus">False</property>
     66            <child>
     67              <widget class="GtkImage" id="image1">
     68                <property name="visible">True</property>
     69                <property name="can_focus">False</property>
     70                <property name="yalign">0</property>
     71                <property name="stock">gtk-dialog-warning</property>
     72                <property name="icon-size">6</property>
     73              </widget>
     74              <packing>
     75                <property name="expand">False</property>
     76                <property name="fill">False</property>
     77                <property name="position">0</property>
     78              </packing>
     79            </child>
     80            <child>
     81              <widget class="GtkVBox" id="vbox1">
     82                <property name="visible">True</property>
     83                <property name="can_focus">False</property>
     84                <child>
     85                  <widget class="GtkLabel" id="label_title">
     86                    <property name="visible">True</property>
     87                    <property name="can_focus">False</property>
     88                    <property name="xalign">0</property>
     89                    <property name="label" translatable="yes">&lt;big&gt;&lt;b&gt;Remove the selected torrent?&lt;/b&gt;&lt;/big&gt;</property>
     90                    <property name="use_markup">True</property>
     91                  </widget>
     92                  <packing>
     93                    <property name="expand">False</property>
     94                    <property name="fill">False</property>
     95                    <property name="padding">3</property>
     96                    <property name="position">0</property>
     97                  </packing>
     98                </child>
     99                <child>
     100                  <widget class="GtkCheckButton" id="delete_files">
     101                    <property name="label" translatable="yes">Include downloaded files</property>
     102                    <property name="visible">True</property>
     103                    <property name="can_focus">False</property>
     104                    <property name="receives_default">False</property>
     105                    <property name="use_action_appearance">False</property>
     106                    <property name="focus_on_click">False</property>
     107                    <property name="draw_indicator">True</property>
     108                  </widget>
     109                  <packing>
     110                    <property name="expand">False</property>
     111                    <property name="fill">False</property>
     112                    <property name="padding">1</property>
     113                    <property name="position">1</property>
     114                  </packing>
     115                </child>
     116                <child>
     117                  <widget class="GtkHBox" id="warning_box">
     118                    <property name="can_focus">False</property>
     119                    <child>
     120                      <widget class="GtkLabel" id="warning_label">
     121                        <property name="visible">True</property>
     122                        <property name="can_focus">False</property>
     123                        <property name="xalign">0</property>
     124                        <property name="xpad">2</property>
     125                        <property name="label" translatable="yes">&lt;b&gt;&lt;small&gt;Files will be irreversably deleted&lt;/small&gt;&lt;/b&gt;</property>
     126                        <property name="use_markup">True</property>
     127                      </widget>
     128                      <packing>
     129                        <property name="expand">False</property>
     130                        <property name="fill">False</property>
     131                        <property name="position">0</property>
     132                      </packing>
     133                    </child>
     134                    <child>
     135                      <widget class="GtkImage" id="image2">
     136                        <property name="visible">True</property>
     137                        <property name="can_focus">False</property>
     138                        <property name="stock">gtk-dialog-warning</property>
     139                      </widget>
     140                      <packing>
     141                        <property name="expand">False</property>
     142                        <property name="fill">False</property>
     143                        <property name="position">1</property>
     144                      </packing>
     145                    </child>
     146                  </widget>
     147                  <packing>
     148                    <property name="expand">False</property>
     149                    <property name="fill">False</property>
     150                    <property name="position">2</property>
     151                  </packing>
     152                </child>
     153              </widget>
     154              <packing>
     155                <property name="expand">True</property>
     156                <property name="fill">True</property>
     157                <property name="position">1</property>
     158              </packing>
     159            </child>
     160          </widget>
     161          <packing>
     162            <property name="expand">True</property>
     163            <property name="fill">True</property>
     164            <property name="padding">5</property>
     165            <property name="position">1</property>
     166          </packing>
     167        </child>
     168        <child>
     169          <widget class="GtkHSeparator" id="hseparator1">
     170            <property name="visible">True</property>
     171            <property name="can_focus">False</property>
     172          </widget>
     173          <packing>
     174            <property name="expand">False</property>
     175            <property name="fill">True</property>
     176            <property name="position">2</property>
     177          </packing>
     178        </child>
     179      </widget>
     180    </child>
     181  </widget>
     182</glade-interface>
  • deluge/ui/gtkui/removetorrentdialog.py

    diff --git a/deluge/ui/gtkui/removetorrentdialog.py b/deluge/ui/gtkui/removetorrentdialog.py
    index 36257ee..17c1788 100644
    a b def __init__(self, torrent_ids):  
    6565
    6666        glade = gtk.glade.XML(
    6767            pkg_resources.resource_filename("deluge.ui.gtkui",
    68                 "glade/remove_torrent_dialog.glade"))
     68                "glade/remove_torrent_dialog2.glade"))
    6969
    7070        self.__dialog = glade.get_widget("remove_torrent_dialog")
    7171        self.__dialog.set_transient_for(component.get("MainWindow").window)
    7272        self.__dialog.set_title("")
    7373
     74        self.__original_size = self.__dialog.get_size()
     75       
     76        self.__delete_files = glade.get_widget("delete_files")
     77        self.__warning_box = glade.get_widget("warning_box")
     78        self.__delete_files.connect("toggled", self.__toggle_warning)
     79
    7480        if len(self.__torrent_ids) > 1:
    7581            # We need to pluralize the dialog
    76             label_title = glade.get_widget("label_title")
    77             button_ok = glade.get_widget("button_ok_label")
    78             button_data = glade.get_widget("button_data_label")
     82            label_title = glade.get_widget("label_title")           
    7983
    8084            def pluralize_torrents(text):
    8185                plural_torrent = _("Torrents")
    8286                return text.replace("torrent", plural_torrent.lower()).replace("Torrent", plural_torrent)
    8387
    8488            label_title.set_markup(pluralize_torrents(label_title.get_label()))
    85             button_ok.set_label(pluralize_torrents(button_ok.get_label()))
    86             button_data.set_label(pluralize_torrents(button_data.get_label()))
    8789
    8890    def __remove_torrents(self, remove_data):
    8991        # Unselect all to avoid issues with the selection changed event
    def __remove_torrents(self, remove_data):  
    9294        for torrent_id in self.__torrent_ids:
    9395            client.core.remove_torrent(torrent_id, remove_data)
    9496
     97    def __toggle_warning(self, toggle_button):
     98        active = toggle_button.get_active()
     99        self.__warning_box.set_visible(active)
     100        self.__dialog.resize(*self.__original_size)
     101
    95102    def run(self):
    96103        """
    97104        Shows the dialog and awaits for user input.  The user can select to
    98105        remove the torrent(s) from the session with or without their data.
    99106        """
    100107        # Response IDs from the buttons
    101         RESPONSE_SESSION = 1
    102         RESPONSE_DATA = 2
     108        RESPONSE_OK = 1
    103109
    104110        response = self.__dialog.run()
    105         if response == RESPONSE_SESSION:
    106             self.__remove_torrents(False)
    107         elif response == RESPONSE_DATA:
    108             self.__remove_torrents(True)
     111        if response == RESPONSE_OK:
     112            do_file_delete = self.__delete_files.get_active()
     113            self.__remove_torrents(do_file_delete)
    109114
    110115        self.__dialog.destroy()