21
21
pygtk.require("2.0")
28
30
import bzrlib.errors as errors
29
from bzrlib.workingtree import WorkingTree
31
from olive import gladefile
34
33
""" Display the Remove file(s) dialog and perform the needed actions. """
34
def __init__(self, gladefile, comm, dialog):
36
35
""" Initialize the Remove file(s) dialog. """
37
self.glade = gtk.glade.XML(gladefile, 'window_remove')
36
self.gladefile = gladefile
37
self.glade = gtk.glade.XML(self.gladefile, 'window_remove')
39
# Communication object
39
44
self.window = self.glade.get_widget('window_remove')
56
61
directory = self.comm.get_path()
63
self.comm.set_busy(self.window)
58
64
if radio_selected.get_active():
59
65
# Remove only the selected file
60
66
filename = self.comm.get_selected_right()
62
68
if filename is None:
63
error_dialog(_('No file was selected'),
69
self.dialog.error_dialog(_('No file was selected'),
64
70
_('Please select a file from the list,\nor choose the other option.'))
71
self.comm.set_busy(self.window, False)
68
75
wt, path = WorkingTree.open_containing(directory + '/' + filename)
70
77
except errors.NotBranchError:
71
error_dialog(_('Directory is not a branch'),
78
self.dialog.error_dialog(_('Directory is not a branch'),
72
79
_('You can perform this action only in a branch.'))
80
self.comm.set_busy(self.window, False)
74
82
except errors.NotVersionedError:
75
error_dialog(_('File not versioned'),
83
self.dialog.error_dialog(_('File not versioned'),
76
84
_('The selected file is not versioned.'))
85
self.comm.set_busy(self.window, False)
78
89
elif radio_new.get_active():
79
90
# Remove added files recursively
81
92
wt, path = WorkingTree.open_containing(directory)
82
94
except errors.NotBranchError:
83
error_dialog(_('Directory is not a branch'),
95
self.dialog.error_dialog(_('Directory is not a branch'),
84
96
_('You can perform this action only in a branch.'))
97
self.comm.set_busy(self.window, False)
87
added = wt.changes_from(wt.basis_tree()).added
88
file_list = sorted([f[0] for f in added], reverse=True)
89
if len(file_list) == 0:
99
except errors.NoMatchingFiles:
90
100
dialog.warning_dialog(_('No matching files'),
91
101
_('No added files were found in the working tree.'))
102
self.comm.set_busy(self.window, False)
106
# This should really never happen.
110
self.comm.refresh_right()
97
112
def close(self, widget=None):
98
113
self.window.destroy()