/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 olive/menu.py

  • Committer: Jasper Groenewegen
  • Date: 2008-07-27 12:01:40 UTC
  • mfrom: (576.3.2 improve-merge)
  • mto: This revision was merged to the branch mainline in revision 579.
  • Revision ID: colbrac@xs4all.nl-20080727120140-1agdlzkc9fumjk5f
Merge merge dialog improvements

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
    pass
27
27
 
28
28
import gtk
29
 
from dialog import question_dialog
30
29
 
31
30
import bzrlib.errors as errors
32
31
from bzrlib.workingtree import WorkingTree
33
32
 
34
 
from bzrlib.plugins.gtk.dialog import error_dialog, info_dialog, warning_dialog
 
33
from bzrlib.plugins.gtk import _i18n
 
34
from bzrlib.plugins.gtk.dialog import error_dialog, info_dialog, question_dialog, warning_dialog
35
35
from bzrlib.plugins.gtk.errors import show_bzr_error
36
36
from bzrlib.plugins.gtk.annotate.gannotate import GAnnotateWindow
37
37
from bzrlib.plugins.gtk.annotate.config import GAnnotateConfig
38
38
from bzrlib.plugins.gtk.diff import DiffWindow
39
 
from launch import launch
40
 
from olive import Preferences
 
39
from bzrlib.plugins.gtk.olive import Preferences, launch
41
40
 
42
41
class OliveMenu:
43
42
    """ This class is responsible for building the context menus. """
60
59
        
61
60
        self.actiongroup = gtk.ActionGroup('context')
62
61
        self.actiongroup.add_actions([('add', gtk.STOCK_ADD,
63
 
                                       _('Add'), None,
64
 
                                       _('Add the selected file'),
 
62
                                       _i18n('Add'), None,
 
63
                                       _i18n('Add the selected file'),
65
64
                                       self.add_file),
66
65
                                      ('remove', gtk.STOCK_REMOVE,
67
 
                                       _('Remove'), None,
68
 
                                       _('Remove the selected file'),
 
66
                                       _i18n('Remove'), None,
 
67
                                       _i18n('Remove the selected file'),
69
68
                                       self.remove_file),
70
69
                                      ('remove_and_delete', gtk.STOCK_REMOVE,
71
 
                                       _('Remove and delete'), None,
72
 
                                       _('Remove the selected file/dir and delete from disk'),
 
70
                                       _i18n('Remove and delete'), None,
 
71
                                       _i18n('Remove the selected file/dir and delete from disk'),
73
72
                                       self.remove_and_delete_file),
74
73
                                      ('rename', None,
75
 
                                       _('Rename'), None,
76
 
                                       _('Rename the selected file'),
 
74
                                       _i18n('Rename'), None,
 
75
                                       _i18n('Rename the selected file'),
77
76
                                       self.rename_file),
78
77
                                      ('open', gtk.STOCK_OPEN,
79
 
                                       _('Open'), None,
80
 
                                       _('Open the selected file'),
 
78
                                       _i18n('Open'), None,
 
79
                                       _i18n('Open the selected file'),
81
80
                                       self.open_file),
82
81
                                      ('revert', None,
83
 
                                       _('Revert'), None,
84
 
                                       _('Revert the changes'),
 
82
                                       _i18n('Revert'), None,
 
83
                                       _i18n('Revert the changes'),
85
84
                                       self.revert),
86
85
                                      ('commit', None,
87
 
                                       _('Commit'), None,
88
 
                                       _('Commit the changes'),
 
86
                                       _i18n('Commit'), None,
 
87
                                       _i18n('Commit the changes'),
89
88
                                       self.commit),
90
89
                                      ('annotate', None,
91
 
                                       _('Annotate'), None,
92
 
                                       _('Annotate the selected file'),
 
90
                                       _i18n('Annotate'), None,
 
91
                                       _i18n('Annotate the selected file'),
93
92
                                       self.annotate),
94
93
                                      ('diff', None,
95
 
                                       _('Diff'), None,
96
 
                                       _('Show the diff of the file'),
 
94
                                       _i18n('Diff'), None,
 
95
                                       _i18n('Show the diff of the file'),
97
96
                                       self.diff),
98
97
                                      ('bookmark', None,
99
 
                                       _('Bookmark'), None,
100
 
                                       _('Bookmark current location'),
 
98
                                       _i18n('Bookmark'), None,
 
99
                                       _i18n('Bookmark current location'),
101
100
                                       self.bookmark),
102
101
                                      ('edit_bookmark', gtk.STOCK_EDIT,
103
 
                                       _('Edit'), None,
104
 
                                       _('Edit the selected bookmark'),
 
102
                                       _i18n('Edit'), None,
 
103
                                       _i18n('Edit the selected bookmark'),
105
104
                                       self.edit_bookmark),
106
105
                                      ('remove_bookmark', gtk.STOCK_REMOVE,
107
 
                                       _('Remove'), None,
108
 
                                       _('Remove the selected bookmark'),
 
106
                                       _i18n('Remove'), None,
 
107
                                       _i18n('Remove the selected bookmark'),
109
108
                                       self.remove_bookmark),
110
109
                                      ('open_folder', gtk.STOCK_OPEN,
111
 
                                       _('Open Folder'), None,
112
 
                                       _('Open bookmark folder in Nautilus'),
 
110
                                       _i18n('Open Folder'), None,
 
111
                                       _i18n('Open bookmark folder in Nautilus'),
113
112
                                       self.open_folder),
114
113
                                      ('diff_selected', None,
115
 
                                       _('Selected...'), None,
116
 
                                       _('Show the differences of the selected file'),
 
114
                                       _i18n('Selected...'), None,
 
115
                                       _i18n('Show the differences of the selected file'),
117
116
                                       self.diff_selected),
118
117
                                      ('diff_all', None,
119
 
                                       _('All...'), None,
120
 
                                       _('Show the differences of all files'),
 
118
                                       _i18n('All...'), None,
 
119
                                       _i18n('Show the differences of all files'),
121
120
                                       self.diff_all),
122
121
                                      ('view_remote', None,
123
 
                                       _('View contents'), None,
124
 
                                       _('View the contents of the file in a builtin viewer'),
 
122
                                       _i18n('View contents'), None,
 
123
                                       _i18n('View the contents of the file in a builtin viewer'),
125
124
                                       self.view_remote),
126
125
                                      ('diff_remote', None,
127
 
                                       _('Show differences'), None,
128
 
                                       _('Show the differences between two revisions of the file'),
 
126
                                       _i18n('Show differences'), None,
 
127
                                       _i18n('Show the differences between two revisions of the file'),
129
128
                                       self.diff_remote),
130
129
                                      ('revert_remote', None,
131
 
                                       _('Revert to this revision'), None,
132
 
                                       _('Revert the selected file to the selected revision'),
 
130
                                       _i18n('Revert to this revision'), None,
 
131
                                       _i18n('Revert the selected file to the selected revision'),
133
132
                                       self.revert_remote)
134
133
                                     ])
135
134
        
175
174
        filename = self.selected
176
175
            
177
176
        if filename is None:
178
 
            error_dialog(_('No file was selected'),
179
 
                         _('Please select a file from the list,\nor choose the other option.'))
 
177
            error_dialog(_i18n('No file was selected'),
 
178
                         _i18n('Please select a file from the list,\nor choose the other option.'))
180
179
            return
181
180
        
182
 
        bzrlib.add.smart_add([os.path.join(directory, filename)])
 
181
        wt, path = WorkingTree.open_containing(os.path.join(directory, filename))
 
182
        wt.add([path])
 
183
        
 
184
        self.app.refresh_right()
183
185
    
184
186
    @show_bzr_error
185
187
    def annotate(self, action):
188
190
        filename = self.selected
189
191
        
190
192
        if filename is None:
191
 
            error_dialog(_('No file was selected'),
192
 
                         _('Please select a file from the list.'))
 
193
            error_dialog(_i18n('No file was selected'),
 
194
                         _i18n('Please select a file from the list.'))
193
195
            return
194
196
        
195
197
        wt, path = WorkingTree.open_containing(os.path.join(directory, filename))
196
198
        
197
199
        branch = wt.branch
198
200
        file_id = wt.path2id(wt.relpath(os.path.join(directory, filename)))
199
 
        
200
 
        window = GAnnotateWindow(all=False, plain=False)
 
201
        if file_id is None:
 
202
            raise errors.NotVersionedError(filename)
 
203
        window = GAnnotateWindow(all=False, plain=False, parent=self.app)
201
204
        window.set_title(os.path.join(directory, filename) + " - Annotate")
202
205
        config = GAnnotateConfig(window)
203
206
        window.show()
208
211
            branch.unlock()
209
212
    
210
213
    @show_bzr_error
211
 
    def remove_file(self, action,delete_on_disk=0):
 
214
    def remove_file(self, action, delete_on_disk=False):
212
215
        """ Right context menu -> Remove """
213
216
        # Remove only the selected file
214
217
        directory = self.path
215
218
        filename = self.selected
216
219
        
217
220
        if filename is None:
218
 
            error_dialog(_('No file was selected'),
219
 
                         _('Please select a file from the list,\nor choose the other option.'))
 
221
            error_dialog(_i18n('No file was selected'),
 
222
                         _i18n('Please select a file from the list,\nor choose the other option.'))
220
223
            return
221
224
        
222
225
        wt, path = WorkingTree.open_containing(os.path.join(directory, filename))
225
228
        if delete_on_disk:
226
229
            abs_filename = os.path.join(directory,filename)
227
230
            if os.path.isdir(abs_filename):
228
 
                response = question_dialog(_('Delete directory with all directories below ?'), abs_filename )
 
231
                response = question_dialog(_i18n('Delete directory with all directories below ?'), abs_filename )
229
232
                if response == gtk.RESPONSE_YES:
230
233
                    shutil.rmtree(abs_filename)
231
234
            else:
236
239
        
237
240
    def remove_and_delete_file(self, action):
238
241
        """ Right context menu -> Remove and delete"""
239
 
        self.remove_file(action,delete_on_disk=1)
 
242
        self.remove_file(action, delete_on_disk=True)
240
243
 
241
244
    def rename_file(self, action):
242
245
        """ Right context menu -> Rename """
243
 
        from rename import OliveRename
244
 
        wt = WorkingTree.open_containing(self.path + os.sep + self.selected)[0]
245
 
        rename = OliveRename(wt, wt.relpath(self.path), self.selected)
246
 
        rename.display()
 
246
        from bzrlib.plugins.gtk.olive.rename import RenameDialog
 
247
        wt = WorkingTree.open_containing(os.path.join(self.path, self.selected))[0]
 
248
        rename = RenameDialog(wt, wt.relpath(self.path), self.selected)
 
249
        response = rename.run()
 
250
        rename.destroy()
 
251
        if response == gtk.RESPONSE_OK:
 
252
            self.app.refresh_right()
247
253
    
248
254
    def open_file(self, action):
249
255
        """ Right context menu -> Open """
251
257
        filename = self.selected
252
258
        
253
259
        if filename is None:
254
 
            error_dialog(_('No file was selected'),
255
 
                         _('Please select a file from the list,\nor choose the other option.'))
 
260
            error_dialog(_i18n('No file was selected'),
 
261
                         _i18n('Please select a file from the list,\nor choose the other option.'))
256
262
            return
257
263
 
258
264
        if filename == '..':
259
265
            # TODO: how to enter a directory?
260
266
            return
261
267
        else:
262
 
            fullpath = self.path + os.sep + filename
263
 
            if os.path.isdir(fullpath):
264
 
                # selected item is an existant directory
265
 
                # TODO: how to enter a directory?
266
 
                return
267
 
            else:
268
 
                launch(fullpath) 
 
268
            fullpath = os.path.join(self.path, filename)
 
269
            launch.launch(fullpath) 
269
270
 
270
271
    def revert(self, action):
271
272
        """ Right context menu -> Revert """
272
273
        wt, path = WorkingTree.open_containing(self.path)
273
274
        ret = wt.revert([os.path.join(path, self.selected)])
274
275
        if ret:
275
 
            warning_dialog(_('Conflicts detected'),
276
 
                           _('Please have a look at the working tree before continuing.'))
 
276
            warning_dialog(_i18n('Conflicts detected'),
 
277
                           _i18n('Please have a look at the working tree before continuing.'))
277
278
        else:
278
 
            info_dialog(_('Revert successful'),
279
 
                        _('All files reverted to last revision.'))
 
279
            info_dialog(_i18n('Revert successful'),
 
280
                        _i18n('Selected file reverted to last revision.'))
280
281
        self.app.refresh_right()       
281
282
    
282
283
    def commit(self, action):
289
290
        except NotBranchError, e:
290
291
            path = e.path
291
292
        
292
 
        commit = CommitDialog(wt, path, not branch, self.selected)
 
293
        if self.selected:
 
294
            selected = os.path.join(path, self.selected)
 
295
        else:
 
296
            selected = None
 
297
        commit = CommitDialog(wt=wt, selected=selected, parent=None)
293
298
        response = commit.run()
294
299
        if response != gtk.RESPONSE_NONE:
295
300
            commit.hide()
303
308
    def diff(self, action):
304
309
        """ Right context menu -> Diff """
305
310
        wt = WorkingTree.open_containing(self.path)[0]
306
 
        window = DiffWindow()
 
311
        window = DiffWindow(self.app)
307
312
        parent_tree = wt.branch.repository.revision_tree(wt.branch.last_revision())
308
313
        window.set_diff(wt.branch.nick, wt, parent_tree)
309
314
        window.set_file(wt.relpath(self.path + os.sep + self.selected))
312
317
    def bookmark(self, action):
313
318
        """ Right context menu -> Bookmark """
314
319
        if self.pref.add_bookmark(self.path):
315
 
            info_dialog(_('Bookmark successfully added'),
316
 
                        _('The current directory was bookmarked. You can reach\nit by selecting it from the left panel.'))
 
320
            info_dialog(_i18n('Bookmark successfully added'),
 
321
                        _i18n('The current directory was bookmarked. You can reach\nit by selecting it from the left panel.'))
317
322
            self.pref.write()
318
323
        else:
319
 
            warning_dialog(_('Location already bookmarked'),
320
 
                           _('The current directory is already bookmarked.\nSee the left panel for reference.'))
 
324
            warning_dialog(_i18n('Location already bookmarked'),
 
325
                           _i18n('The current directory is already bookmarked.\nSee the left panel for reference.'))
321
326
        
322
327
        self.app.refresh_left()
323
328
 
351
356
        path = self.selected
352
357
 
353
358
        if path != None:
354
 
            launch(path)
 
359
            launch.launch(path)
355
360
    
356
361
    def diff_selected(self, action):
357
362
        """ Diff toolbutton -> Selected... """
359
364
    
360
365
    def diff_all(self, action):
361
366
        """ Diff toolbutton -> All... """
362
 
        from diff import OliveDiff
363
 
        diff = OliveDiff(self.comm)
364
 
        diff.display()
 
367
        wt = WorkingTree.open_containing(self.path)[0]
 
368
        window = DiffWindow(self.app)
 
369
        parent_tree = wt.branch.repository.revision_tree(wt.branch.last_revision())
 
370
        window.set_diff(wt.branch.nick, wt, parent_tree)
 
371
        window.show()
365
372
    
366
373
    def view_remote(self, action):
367
374
        """ Remote context menu -> View contents """