1
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
11
# GNU General Public License for more details.
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
21
pygtk.require("2.0")
29
import bzrlib.errors as errors
31
from bzrlib.plugins.gtk import _i18n
32
from bzrlib.plugins.gtk.dialog import error_dialog
33
from guifiles import GLADEFILENAME
30
import olive.backend.errors as errors
31
import olive.backend.fileops as fileops
37
34
""" Display the Add file(s) dialog and perform the needed actions. """
38
def __init__(self, wt, wtpath, selected=[]):
35
def __init__(self, gladefile, comm):
39
36
""" Initialize the Add file(s) dialog. """
40
self.glade = gtk.glade.XML(GLADEFILENAME, 'window_add', 'olive-gtk')
37
self.gladefile = gladefile
38
self.glade = gtk.glade.XML(self.gladefile, 'window_add')
42
42
self.window = self.glade.get_widget('window_add')
48
48
# Connect the signals to the handlers
49
49
self.glade.signal_autoconnect(dic)
53
self.selected = selected
56
52
""" Display the Add file(s) dialog. """
57
53
self.window.show_all()
59
55
def add(self, widget):
56
from dialog import OliveDialog
57
dialog = OliveDialog(self.gladefile)
60
59
radio_selected = self.glade.get_widget('radiobutton_add_selected')
61
60
radio_unknown = self.glade.get_widget('radiobutton_add_unknown')
62
directory = self.comm.get_path()
64
self.comm.set_busy(self.window)
63
65
if radio_selected.get_active():
64
66
# Add only the selected file
65
filename = self.selected
67
filename = self.comm.get_selected_right()
67
69
if filename is None:
68
error_dialog(_i18n('No file was selected'),
69
_i18n('Please select a file from the list,\nor choose the other option.'))
70
dialog.error_dialog('No file was selected.')
72
fullpath = self.wt.abspath(os.path.join(self.wtpath, filename))
75
bzrlib.add.smart_add([fullpath])
74
fileops.add([directory + '/' + filename])
76
75
except errors.NotBranchError:
77
error_dialog(_i18n('Directory is not a branch'),
78
_i18n('You can perform this action only in a branch.'))
76
dialog.error_dialog('The directory is not a branch.')
77
self.comm.set_busy(self.window, False)
80
81
elif radio_unknown.get_active():
81
82
# Add unknown files recursively
82
fullpath = self.wt.abspath(self.wtpath)
85
bzrlib.add.smart_add([fullpath], True)
84
fileops.add([directory], True)
86
85
except errors.NotBranchError:
87
error_dialog(_i18n('Directory is not a branch'),
88
_i18n('You can perform this action only in a branch.'))
86
dialog.error_dialog('The directory is not a branch.')
87
self.comm.set_busy(self.window, False)
92
# This should really never happen.
96
self.comm.refresh_right()
93
98
def close(self, widget=None):
94
99
self.window.destroy()