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
31
31
import olive.backend.fileops as fileops
32
32
import olive.backend.errors as errors
34
from commit import OliveCommit
35
from diff import OliveDiff
35
38
""" This class is responsible for building the context menus. """
36
39
def __init__(self, gladefile, comm, dialog):
38
if sys.platform == 'win32':
39
self.uifile = os.path.dirname(sys.executable) + "/share/olive/cmenu.ui"
41
self.uifile = "/usr/share/olive/cmenu.ui"
41
self.uifile = "/usr/share/olive/cmenu.ui"
43
42
if not os.path.exists(self.uifile):
44
43
# Load from current directory if not installed
45
44
self.uifile = "cmenu.ui"
47
if not os.path.exists(self.uifile):
49
print _('UI description file cannot be found.')
52
46
self.gladefile = gladefile
59
53
self.actiongroup = gtk.ActionGroup('context')
60
54
self.actiongroup.add_actions([('add', gtk.STOCK_ADD,
62
_('Add the selected file'),
56
'Add the selected file',
64
58
('remove', gtk.STOCK_REMOVE,
66
_('Remove the selected file'),
60
'Remove the selected file',
70
_('Commit the changes'),
62
('commit', gtk.STOCK_REDO,
74
_('Show the diff of the file'),
68
'Show the diff of the file',
72
'Show the log of the file',
78
_('Bookmark current location'),
76
'Bookmark current location',
80
78
('remove_bookmark', gtk.STOCK_REMOVE,
82
_('Remove the selected bookmark'),
83
self.remove_bookmark),
84
('diff_selected', None,
85
_('Selected...'), None,
86
_('Show the differences of the selected file'),
90
_('Show the differences of all files'),
80
'Remove the selected bookmark',
94
84
self.ui.insert_action_group(self.actiongroup, 0)
95
85
self.ui.add_ui_from_file(self.uifile)
97
87
self.cmenu_right = self.ui.get_widget('/context_right')
98
89
self.cmenu_left = self.ui.get_widget('/context_left')
99
self.toolbar_diff = self.ui.get_widget('/toolbar_diff')
102
commit_menu = self.ui.get_widget('/context_right/commit')
103
commit_image = self.comm.menuitem_branch_commit.get_image()
104
commit_pixbuf = commit_image.get_pixbuf()
105
commit_icon = gtk.Image()
106
commit_icon.set_from_pixbuf(commit_pixbuf)
107
commit_menu.set_image(commit_icon)
108
diff_menu = self.ui.get_widget('/context_right/diff')
109
diff_image = self.comm.menuitem_stats_diff.get_image()
110
diff_pixbuf = diff_image.get_pixbuf()
111
diff_icon = gtk.Image()
112
diff_icon.set_from_pixbuf(diff_pixbuf)
113
diff_menu.set_image(diff_icon)
115
91
def right_context_menu(self):
116
92
return self.cmenu_right
125
101
filename = self.comm.get_selected_right()
127
103
if filename is None:
128
self.dialog.error_dialog(_('No file was selected'),
129
_('Please select a file from the list,\nor choose the other option.'))
104
self.dialog.error_dialog('No file was selected.')
133
108
fileops.add([directory + '/' + filename])
134
109
except errors.NotBranchError:
135
self.dialog.error_dialog(_('Directory is not a branch'),
136
_('You can perform this action only in a branch.'))
110
self.dialog.error_dialog('The directory is not a branch.')
147
121
filename = self.comm.get_selected_right()
149
123
if filename is None:
150
self.dialog.error_dialog(_('No file was selected'),
151
_('Please select a file from the list,\nor choose the other option.'))
124
self.dialog.error_dialog('No file was selected.')
155
128
fileops.remove([directory + '/' + filename])
156
129
except errors.NotBranchError:
157
self.dialog.error_dialog(_('Directory is not a branch'),
158
_('You can perform this action only in a branch.'))
130
self.dialog.error_dialog('The directory is not a branch.')
160
132
except errors.NotVersionedError:
161
self.dialog.error_dialog(_('File not versioned'),
162
_('The selected file is not versioned.'))
133
self.dialog.error_dialog('Selected file is not versioned.')
169
140
def commit(self, action):
170
141
""" Right context menu -> Commit """
171
from commit import OliveCommit
172
commit = OliveCommit(self.gladefile, self.comm, self.dialog)
142
commit = OliveCommit(self.gladefile, self.comm)
175
145
def diff(self, action):
176
146
""" Right context menu -> Diff """
177
from diff import OliveDiff
178
diff = OliveDiff(self.gladefile, self.comm, self.dialog)
147
diff = OliveDiff(self.gladefile, self.comm)
150
def log(self, action):
151
""" Right context menu -> Log """
152
self.dialog.error_dialog('This feature is not yet implemented.')
181
154
def bookmark(self, action):
182
155
""" Right context menu -> Bookmark """
183
156
if self.comm.pref.add_bookmark(self.comm.get_path()):
184
self.dialog.info_dialog(_('Bookmark successfully added'),
185
_('The current directory was bookmarked. You can reach\nit by selecting it from the left panel.'))
157
self.dialog.info_dialog('Bookmark successfully added.')
187
self.dialog.warning_dialog(_('Location already bookmarked'),
188
_('The current directory is already bookmarked.\nSee the left panel for reference.'))
159
self.dialog.warning_dialog('Location already bookmarked.')
190
161
self.comm.refresh_left()
194
165
self.comm.pref.remove_bookmark(self.comm.get_selected_left())
196
167
self.comm.refresh_left()
198
def diff_selected(self, action):
199
""" Diff toolbutton -> Selected... """
200
print "DEBUG: not implemented."
202
def diff_all(self, action):
203
""" Diff toolbutton -> All... """
204
from diff import OliveDiff
205
diff = OliveDiff(self.gladefile, self.comm, self.dialog)