42
45
self.dialog = OliveDialog(self.gladefile)
44
self.menu = OliveMenu(self.gladefile, self.comm, self.dialog)
46
47
def on_about_activate(self, widget):
47
48
self.dialog.about()
49
50
def on_menuitem_add_files_activate(self, widget):
50
51
""" Add file(s)... menu handler. """
51
from add import OliveAdd
52
add = OliveAdd(self.gladefile, self.comm, self.dialog)
52
add = OliveAdd(self.gladefile, self.comm)
55
def on_menuitem_branch_get_activate(self, widget):
56
""" Branch/Get... menu handler. """
57
from branch import OliveBranch
58
branch = OliveBranch(self.gladefile, self.comm, self.dialog)
55
def on_menuitem_branch_branch_activate(self, widget):
56
""" Branch/Branch... menu handler. """
57
branch = OliveBranch(self.gladefile, self.comm)
61
def on_menuitem_branch_checkout_activate(self, widget):
62
""" Branch/Checkout... menu handler. """
63
from checkout import OliveCheckout
64
checkout = OliveCheckout(self.gladefile, self.comm, self.dialog)
67
60
def on_menuitem_branch_commit_activate(self, widget):
68
61
""" Branch/Commit... menu handler. """
69
from commit import OliveCommit
70
commit = OliveCommit(self.gladefile, self.comm, self.dialog)
62
commit = OliveCommit(self.gladefile, self.comm)
73
def on_menuitem_branch_pull_activate(self, widget):
74
""" Branch/Pull menu handler. """
75
import olive.backend.update as update
77
self.comm.set_busy(self.comm.window_main)
80
ret = update.pull(self.comm.get_path())
81
except errors.NotBranchError:
82
self.dialog.error_dialog(_('Directory is not a branch'),
83
_('You can perform this action only in a branch.'))
84
except errors.NoLocationKnown:
85
self.dialog.error_dialog(_('Parent location is unknown'),
86
_('Pulling is not possible until there is no parent location.'))
88
self.dialog.info_dialog(_('Pull successful'),
89
_('%d revision(s) pulled.') % ret)
91
self.comm.set_busy(self.comm.window_main, False)
93
65
def on_menuitem_branch_push_activate(self, widget):
94
66
""" Branch/Push... menu handler. """
95
from push import OlivePush
96
push = OlivePush(self.gladefile, self.comm, self.dialog)
67
push = OlivePush(self.gladefile, self.comm)
99
def on_menuitem_branch_status_activate(self, widget):
100
""" Branch/Status... menu handler. """
101
from status import OliveStatus
102
status = OliveStatus(self.gladefile, self.comm, self.dialog)
105
70
def on_menuitem_branch_initialize_activate(self, widget):
106
71
""" Initialize current directory. """
107
72
import olive.backend.init as init
110
75
init.init(self.comm.get_path())
111
76
except errors.AlreadyBranchError, errmsg:
112
self.dialog.error_dialog(_('Directory is already a branch'),
113
_('The current directory (%s) is already a branch.\nYou can start using it, or initialize another directory.') % errmsg)
77
self.dialog.error_dialog('Directory is already a branch: %s' % errmsg)
114
78
except errors.BranchExistsWithoutWorkingTree, errmsg:
115
self.dialog.error_dialog(_('Branch without a working tree'),
116
_('The current directory (%s)\nis a branch without a working tree.') % errmsg)
79
self.dialog.error_dialog('Branch exists without a working tree: %s' % errmsg)
120
self.dialog.info_dialog(_('Ininialize successful'),
121
_('Directory successfully initialized.'))
81
self.dialog.info_dialog('Directory successfully initialized.')
122
82
self.comm.refresh_right()
124
def on_menuitem_file_make_directory_activate(self, widget):
125
""" File/Make directory... menu handler. """
126
from mkdir import OliveMkdir
127
mkdir = OliveMkdir(self.gladefile, self.comm, self.dialog)
130
def on_menuitem_file_move_activate(self, widget):
131
""" File/Move... menu handler. """
132
from move import OliveMove
133
move = OliveMove(self.gladefile, self.comm, self.dialog)
136
def on_menuitem_file_rename_activate(self, widget):
137
""" File/Rename... menu handler. """
138
from rename import OliveRename
139
rename = OliveRename(self.gladefile, self.comm, self.dialog)
142
84
def on_menuitem_remove_file_activate(self, widget):
143
85
""" Remove (unversion) selected file. """
144
from remove import OliveRemove
145
remove = OliveRemove(self.gladefile, self.comm, self.dialog)
86
remove = OliveRemove(self.gladefile, self.comm)
148
def on_menuitem_stats_diff_activate(self, widget):
149
""" Statistics/Differences... menu handler. """
150
from diff import OliveDiff
151
diff = OliveDiff(self.gladefile, self.comm, self.dialog)
154
def on_menuitem_stats_infos_activate(self, widget):
155
""" Statistics/Informations... menu handler. """
156
from info import OliveInfo
157
info = OliveInfo(self.gladefile, self.comm, self.dialog)
160
def on_menuitem_stats_log_activate(self, widget):
161
""" Statistics/Log... menu handler. """
162
from log import OliveLog
163
log = OliveLog(self.gladefile, self.comm, self.dialog)
166
def on_menuitem_view_refresh_activate(self, widget):
167
""" View/Refresh menu handler. """
168
# Refresh the left pane
169
self.comm.refresh_left()
170
# Refresh the right pane
171
self.comm.refresh_right()
173
def on_menuitem_view_show_hidden_files_activate(self, widget):
174
""" View/Show hidden files menu handler. """
175
if widget.get_active():
177
self.comm.pref.set_preference('dotted_files', True)
178
self.comm.pref.refresh()
179
self.comm.refresh_right()
181
# Do not show hidden files
182
self.comm.pref.set_preference('dotted_files', False)
183
self.comm.pref.refresh()
184
self.comm.refresh_right()
186
def on_treeview_left_button_press_event(self, widget, event):
187
""" Occurs when somebody right-clicks in the bookmark list. """
188
if event.button == 3:
189
self.menu.left_context_menu().popup(None, None, None, 0,
192
def on_treeview_left_row_activated(self, treeview, path, view_column):
193
""" Occurs when somebody double-clicks or enters an item in the
195
self.comm.set_busy(treeview)
197
newdir = self.comm.get_selected_left()
198
self.comm.set_path(newdir)
200
self.comm.refresh_right()
202
self.comm.set_busy(treeview, False)
204
def on_treeview_right_button_press_event(self, widget, event):
205
""" Occurs when somebody right-clicks in the file list. """
206
if event.button == 3:
208
m_add = self.menu.ui.get_widget('/context_right/add')
209
m_remove = self.menu.ui.get_widget('/context_right/remove')
210
m_commit = self.menu.ui.get_widget('/context_right/commit')
211
m_diff = self.menu.ui.get_widget('/context_right/diff')
212
# check if we're in a branch
213
if not is_branch(self.comm.get_path()):
214
m_add.set_sensitive(False)
215
m_remove.set_sensitive(False)
216
m_commit.set_sensitive(False)
217
m_diff.set_sensitive(False)
219
m_add.set_sensitive(True)
220
m_remove.set_sensitive(True)
221
m_commit.set_sensitive(True)
222
m_diff.set_sensitive(True)
223
self.menu.right_context_menu().popup(None, None, None, 0,
226
89
def on_treeview_right_row_activated(self, treeview, path, view_column):
227
90
""" Occurs when somebody double-clicks or enters an item in the
233
96
if newdir == '..':
234
97
self.comm.set_path(os.path.split(self.comm.get_path())[0])
236
fullpath = self.comm.get_path() + '/' + newdir
237
if os.path.isdir(fullpath):
238
# selected item is an existant directory
239
self.comm.set_path(fullpath)
241
if sys.platform == 'win32':
242
# open the file with the default application
243
os.startfile(fullpath)
245
# TODO: support other OSes
246
print "DEBUG: double-click on non-Win32 platforms not supported."
99
self.comm.set_path(self.comm.get_path() + '/' + newdir)
248
101
self.comm.refresh_right()
250
def on_window_main_delete_event(self, widget, event=None):
251
""" Do some stuff before exiting. """
252
width, height = self.comm.window_main.get_size()
253
self.comm.pref.set_preference('window_width', width)
254
self.comm.pref.set_preference('window_height', height)
255
x, y = self.comm.window_main.get_position()
256
self.comm.pref.set_preference('window_x', x)
257
self.comm.pref.set_preference('window_y', y)
258
self.comm.pref.set_preference('paned_position',
259
self.comm.hpaned_main.get_position())
261
self.comm.pref.write()
262
self.comm.window_main.destroy()
264
103
def not_implemented(self, widget):
265
104
""" Display a Not implemented error message. """
266
self.dialog.error_dialog(_('We feel sorry'),
267
_('This feature is not yet implemented.'))
105
self.dialog.error_dialog('This feature is not yet implemented.')