/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to tags.py

  • Committer: Szilveszter Farkas (Phanatic)
  • Date: 2007-04-16 14:31:26 UTC
  • mto: This revision was merged to the branch mainline in revision 193.
  • Revision ID: szilveszter.farkas@gmail.com-20070416143126-15x3ba8z650cbvnq
Implemented Add tag dialog.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
 
25
25
from bzrlib.plugins.gtk.logview import LogView
26
26
 
 
27
from dialog import error_dialog
 
28
 
27
29
 
28
30
class TagsWindow(gtk.Window):
29
31
    """ Tags window. Allows the user to view/add/remove tags. """
130
132
                self._no_tags = False
131
133
                for name, target in tags.items():
132
134
                    self._model.append([name, target])
 
135
                
 
136
                self._button_add.set_sensitive(True)
 
137
                self._button_remove.set_sensitive(True)
133
138
            else:
134
139
                self._no_tags = True
135
140
                self._no_tags_available()
148
153
    def _no_tags_available(self):
149
154
        """ No tags in the branch. """
150
155
        self._model.append([_("No tagged revisions in the branch."), ""])
 
156
        self._button_add.set_sensitive(True)
151
157
        self._button_remove.set_sensitive(False)
152
158
    
153
159
    def _on_add_clicked(self, widget):
154
160
        """ Add button event handler. """
155
 
        return
 
161
        dialog = AddTagDialog(self.branch, self)
 
162
        response = dialog.run()
 
163
        if response != gtk.RESPONSE_NONE:
 
164
            dialog.hide()
 
165
        
 
166
            if response == gtk.RESPONSE_OK:
 
167
                self.branch.tags.set_tag(dialog.tagname, dialog.revid)
 
168
                self._refresh_tags()
 
169
            
 
170
            dialog.destroy()
156
171
    
157
172
    def _on_close_clicked(self, widget):
158
173
        """ Close button event handler. """
167
182
    def _on_remove_clicked(self, widget):
168
183
        """ Remove button event handler. """
169
184
        (path, col) = self._treeview_tags.get_cursor()
 
185
        if path is None:
 
186
            return
 
187
        
170
188
        tag = self._model[path][0]
171
189
        
172
190
        dialog = RemoveTagDialog(tag, self)
246
264
    def _on_remove_clicked(self, widget):
247
265
        """ Remove button event handler. """
248
266
        self.response(gtk.RESPONSE_OK)
 
267
 
 
268
 
 
269
class AddTagDialog(gtk.Dialog):
 
270
    """ Add tag dialog. """
 
271
    def __init__(self, branch, parent):
 
272
        """ Initialize Add tag dialog. """
 
273
        gtk.Dialog.__init__(self, title="Add tag - Olive",
 
274
                                  parent=parent,
 
275
                                  flags=0,
 
276
                                  buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
 
277
        
 
278
        # Get arguments
 
279
        self._branch = branch
 
280
        
 
281
        # Create the widgets
 
282
        self._button_add = gtk.Button(_("_Add tag"), use_underline=True)
 
283
        self._button_revid = gtk.Button('')
 
284
        self._table = gtk.Table(2, 2)
 
285
        self._label_name = gtk.Label(_("Tag Name:"))
 
286
        self._label_revid = gtk.Label(_("Revision ID:"))
 
287
        self._entry_name = gtk.Entry()
 
288
        self._entry_revid = gtk.Entry()
 
289
        self._hbox_revid = gtk.HBox()
 
290
        
 
291
        # Set callbacks
 
292
        self._button_add.connect('clicked', self._on_add_clicked)
 
293
        self._button_revid.connect('clicked', self._on_revid_clicked)
 
294
        
 
295
        # Set properties
 
296
        self._label_name.set_alignment(0, 0.5)
 
297
        self._label_revid.set_alignment(0, 0.5)
 
298
        self._button_add.set_image(gtk.image_new_from_stock(gtk.STOCK_ADD,
 
299
                                                            gtk.ICON_SIZE_BUTTON))
 
300
        self._button_revid.set_image(gtk.image_new_from_stock(gtk.STOCK_OPEN,
 
301
                                                               gtk.ICON_SIZE_BUTTON))
 
302
        self._button_add.set_flags(gtk.CAN_DEFAULT)
 
303
        
 
304
        # Construct the dialog
 
305
        self._hbox_revid.pack_start(self._entry_revid, True, True)
 
306
        self._hbox_revid.pack_start(self._button_revid, False, False) 
 
307
        self._table.attach(self._label_name, 0, 1, 0, 1)
 
308
        self._table.attach(self._label_revid, 0, 1, 1, 2)
 
309
        self._table.attach(self._entry_name, 1, 2, 0, 1)
 
310
        self._table.attach(self._hbox_revid, 1, 2, 1, 2)
 
311
        self.vbox.add(self._table)
 
312
        self.action_area.pack_end(self._button_add)
 
313
        
 
314
        # Show the dialog
 
315
        self.vbox.show_all()
 
316
    
 
317
    def _on_revid_clicked(self, widget):
 
318
        """ Browse for revision button clicked handler. """
 
319
        from revbrowser import RevisionBrowser
 
320
        
 
321
        revb = RevisionBrowser(self._branch, self)
 
322
        response = revb.run()
 
323
        if response != gtk.RESPONSE_NONE:
 
324
            revb.hide()
 
325
        
 
326
            if response == gtk.RESPONSE_OK:
 
327
                if revb.selected_revno is not None:
 
328
                    self._entry_revid.set_text(revb.selected_revid)
 
329
            
 
330
            revb.destroy()
 
331
    
 
332
    def _on_add_clicked(self, widget):
 
333
        """ Add button clicked handler. """
 
334
        if len(self._entry_name.get_text()) == 0:
 
335
            error_dialog(_("No tag name specified"),
 
336
                         _("You have to specify the tag's desired name."))
 
337
            return
 
338
        
 
339
        if len(self._entry_revid.get_text()) == 0:
 
340
            self.revid = self._branch.last_revision()
 
341
        else:
 
342
            self.revid = self._entry_revid.get_text()
 
343
        
 
344
        self.tagname = self._entry_name.get_text()
 
345
        
 
346
        self.response(gtk.RESPONSE_OK)