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

  • Committer: Szilveszter Farkas (Phanatic)
  • Date: 2006-08-15 17:37:54 UTC
  • mto: (0.14.1 main) (93.1.1 win32.bialix)
  • mto: This revision was merged to the branch mainline in revision 83.
  • Revision ID: Szilveszter.Farkas@gmail.com-20060815173754-9877ef0e3e64660e
Some small tweaks in the .desktop file.

2006-08-15  Szilveszter Farkas <Szilveszter.Farkas@gmail.com>

    * icons/olive-gtk.png: added application icon

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
2
 
#
 
2
 
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.
7
 
#
 
7
 
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.
12
 
#
 
12
 
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
22
22
    pygtk.require("2.0")
23
23
except:
24
24
    pass
25
 
 
26
 
import gtk
27
 
 
28
 
import bzrlib.errors as errors
29
 
from dialog import error_dialog
30
 
 
31
 
from launch import launch
 
25
try:
 
26
    import gtk
 
27
    import gtk.glade
 
28
except:
 
29
    sys.exit(1)
 
30
 
 
31
import olive.backend.fileops as fileops
 
32
import olive.backend.errors as errors
 
33
 
 
34
from commit import OliveCommit
 
35
from diff import OliveDiff
32
36
 
33
37
class OliveMenu:
34
38
    """ This class is responsible for building the context menus. """
35
 
    def __init__(self):
 
39
    def __init__(self, gladefile, comm, dialog):
36
40
        # Load the UI file
37
 
        if sys.platform == 'win32':
38
 
            self.uifile = os.path.dirname(sys.executable) + "/share/olive/cmenu.ui"
39
 
        else:
40
 
            self.uifile = "/usr/share/olive/cmenu.ui"
41
 
        
 
41
        self.uifile = "/usr/share/olive/cmenu.ui"
42
42
        if not os.path.exists(self.uifile):
43
43
            # Load from current directory if not installed
44
44
            self.uifile = "cmenu.ui"
45
 
            # Check again
46
 
            if not os.path.exists(self.uifile):
47
 
                # Fail
48
 
                print _('UI description file cannot be found.')
49
 
                sys.exit(1)
 
45
        
 
46
        self.gladefile = gladefile
 
47
        self.comm = comm
 
48
        self.dialog = dialog
50
49
        
51
50
        # Create the file list context menu
52
51
        self.ui = gtk.UIManager()
53
52
        
54
53
        self.actiongroup = gtk.ActionGroup('context')
55
54
        self.actiongroup.add_actions([('add', gtk.STOCK_ADD,
56
 
                                       _('Add'), None,
57
 
                                       _('Add the selected file'),
 
55
                                       'Add', None,
 
56
                                       'Add the selected file',
58
57
                                       self.add_file),
59
58
                                      ('remove', gtk.STOCK_REMOVE,
60
 
                                       _('Remove'), None,
61
 
                                       _('Remove the selected file'),
 
59
                                       'Remove', None,
 
60
                                       'Remove the selected file',
62
61
                                       self.remove_file),
63
 
                                      ('open', gtk.STOCK_OPEN,
64
 
                                       _('Open'), None,
65
 
                                       _('Open the selected file'),
66
 
                                       self.open_file),
67
 
                                      ('commit', None,
68
 
                                       _('Commit'), None,
69
 
                                       _('Commit the changes'),
 
62
                                      ('commit', gtk.STOCK_REDO,
 
63
                                       'Commit', None,
 
64
                                       'Commit the changes',
70
65
                                       self.commit),
71
66
                                      ('diff', None,
72
 
                                       _('Diff'), None,
73
 
                                       _('Show the diff of the file'),
 
67
                                       'Diff', None,
 
68
                                       'Show the diff of the file',
74
69
                                       self.diff),
 
70
                                      ('log', None,
 
71
                                       'Log', None,
 
72
                                       'Show the log of the file',
 
73
                                       self.log),
75
74
                                      ('bookmark', None,
76
 
                                       _('Bookmark'), None,
77
 
                                       _('Bookmark current location'),
 
75
                                       'Bookmark', None,
 
76
                                       'Bookmark current location',
78
77
                                       self.bookmark),
79
 
                                      ('edit_bookmark', gtk.STOCK_EDIT,
80
 
                                       _('Edit'), None,
81
 
                                       _('Edit the selected bookmark'),
82
 
                                       self.edit_bookmark),
83
78
                                      ('remove_bookmark', gtk.STOCK_REMOVE,
84
 
                                       _('Remove'), None,
85
 
                                       _('Remove the selected bookmark'),
86
 
                                       self.remove_bookmark),
87
 
                                      ('open_folder', gtk.STOCK_OPEN,
88
 
                                       _('Open Folder'), None,
89
 
                                       _('Open bookmark folder in Nautilus'),
90
 
                                       self.open_folder),
91
 
                                      ('diff_selected', None,
92
 
                                       _('Selected...'), None,
93
 
                                       _('Show the differences of the selected file'),
94
 
                                       self.diff_selected),
95
 
                                      ('diff_all', None,
96
 
                                       _('All...'), None,
97
 
                                       _('Show the differences of all files'),
98
 
                                       self.diff_all)
 
79
                                       'Remove', None,
 
80
                                       'Remove the selected bookmark',
 
81
                                       self.remove_bookmark)
99
82
                                     ])
100
83
        
101
84
        self.ui.insert_action_group(self.actiongroup, 0)
102
85
        self.ui.add_ui_from_file(self.uifile)
103
86
        
104
87
        self.cmenu_right = self.ui.get_widget('/context_right')
 
88
        
105
89
        self.cmenu_left = self.ui.get_widget('/context_left')
106
 
        self.toolbar_diff = self.ui.get_widget('/toolbar_diff')
107
 
        
108
 
        # Set icons
109
 
        commit_menu = self.ui.get_widget('/context_right/commit')
110
 
        commit_image = self.comm.menuitem_branch_commit.get_image()
111
 
        commit_pixbuf = commit_image.get_pixbuf()
112
 
        commit_icon = gtk.Image()
113
 
        commit_icon.set_from_pixbuf(commit_pixbuf)
114
 
        commit_menu.set_image(commit_icon)
115
 
        diff_menu = self.ui.get_widget('/context_right/diff')
116
 
        diff_image = self.comm.menuitem_stats_diff.get_image()
117
 
        diff_pixbuf = diff_image.get_pixbuf()
118
 
        diff_icon = gtk.Image()
119
 
        diff_icon.set_from_pixbuf(diff_pixbuf)
120
 
        diff_menu.set_image(diff_icon)
121
90
 
122
91
    def right_context_menu(self):
123
92
        return self.cmenu_right
132
101
        filename = self.comm.get_selected_right()
133
102
            
134
103
        if filename is None:
135
 
            error_dialog(_('No file was selected'),
136
 
                         _('Please select a file from the list,\nor choose the other option.'))
 
104
            self.dialog.error_dialog('No file was selected.')
137
105
            return
138
106
        
139
107
        try:
140
 
            bzrlib.add.smart_add([directory + '/' + filename])
 
108
            fileops.add([directory + '/' + filename])
141
109
        except errors.NotBranchError:
142
 
            error_dialog(_('Directory is not a branch'),
143
 
                         _('You can perform this action only in a branch.'))
 
110
            self.dialog.error_dialog('The directory is not a branch.')
144
111
            return
 
112
        except:
 
113
            raise
145
114
        
146
115
        self.comm.refresh_right()
147
116
    
152
121
        filename = self.comm.get_selected_right()
153
122
        
154
123
        if filename is None:
155
 
            error_dialog(_('No file was selected'),
156
 
                         _('Please select a file from the list,\nor choose the other option.'))
 
124
            self.dialog.error_dialog('No file was selected.')
157
125
            return
158
126
        
159
127
        try:
160
 
            wt, path = WorkingTree.open_containing(directory+'/'+filename)
161
 
            wt.remove(path)
162
 
 
 
128
            fileops.remove([directory + '/' + filename])
163
129
        except errors.NotBranchError:
164
 
            error_dialog(_('Directory is not a branch'),
165
 
                                     _('You can perform this action only in a branch.'))
 
130
            self.dialog.error_dialog('The directory is not a branch.')
166
131
            return
167
132
        except errors.NotVersionedError:
168
 
            error_dialog(_('File not versioned'),
169
 
                                     _('The selected file is not versioned.'))
170
 
            return
171
 
        
172
 
        self.comm.refresh_right()
173
 
 
174
 
    def open_file(self, action):
175
 
        """ Right context menu -> Open """
176
 
        # Open only the selected file
177
 
        filename = self.comm.get_selected_right()
178
 
        
179
 
        if filename is None:
180
 
            error_dialog(_('No file was selected'),
181
 
                                     _('Please select a file from the list,\nor choose the other option.'))
182
 
            return
183
 
 
184
 
        if filename == '..':
185
 
            self.comm.set_path(os.path.split(self.comm.get_path())[0])
186
 
        else:
187
 
            fullpath = self.comm.get_path() + os.sep + filename
188
 
            if os.path.isdir(fullpath):
189
 
                # selected item is an existant directory
190
 
                self.comm.set_path(fullpath)
191
 
            else:
192
 
                launch(fullpath) 
 
133
            self.dialog.error_dialog('Selected file is not versioned.')
 
134
            return
 
135
        except:
 
136
            raise
193
137
        
194
138
        self.comm.refresh_right()
195
139
 
196
140
    def commit(self, action):
197
141
        """ Right context menu -> Commit """
198
 
        from commit import OliveCommit
199
 
        wt, path = WorkingTree.open_containing(self.comm.get_path())
200
 
        commit = OliveCommit(wt, path)
 
142
        commit = OliveCommit(self.gladefile, self.comm)
201
143
        commit.display()
202
144
    
203
145
    def diff(self, action):
204
146
        """ Right context menu -> Diff """
205
 
        from diff import OliveDiff
206
 
        diff = OliveDiff(self.comm)
 
147
        diff = OliveDiff(self.gladefile, self.comm)
207
148
        diff.display()
208
149
    
 
150
    def log(self, action):
 
151
        """ Right context menu -> Log """
 
152
        self.dialog.error_dialog('This feature is not yet implemented.')
 
153
    
209
154
    def bookmark(self, action):
210
155
        """ Right context menu -> Bookmark """
211
156
        if self.comm.pref.add_bookmark(self.comm.get_path()):
212
 
            info_dialog(_('Bookmark successfully added'),
213
 
                                    _('The current directory was bookmarked. You can reach\nit by selecting it from the left panel.'))
 
157
            self.dialog.info_dialog('Bookmark successfully added.')
214
158
        else:
215
 
            warning_dialog(_('Location already bookmarked'),
216
 
                                       _('The current directory is already bookmarked.\nSee the left panel for reference.'))
 
159
            self.dialog.warning_dialog('Location already bookmarked.')
217
160
        
218
161
        self.comm.refresh_left()
219
162
 
220
 
    def edit_bookmark(self, action):
221
 
        """ Left context menu -> Edit """
222
 
        from bookmark import OliveBookmark
223
 
 
224
 
        if self.comm.get_selected_left() != None:
225
 
            bookmark = OliveBookmark(self.comm)
226
 
            bookmark.display()
227
 
 
228
163
    def remove_bookmark(self, action):
229
164
        """ Left context menu -> Remove """
 
165
        self.comm.pref.remove_bookmark(self.comm.get_selected_left())
230
166
        
231
 
        if self.comm.get_selected_left() != None:
232
 
            self.comm.pref.remove_bookmark(self.comm.get_selected_left())
233
 
            self.comm.refresh_left()
234
 
    
235
 
    def open_folder(self, action):
236
 
        """ Left context menu -> Open Folder """
237
 
        path = self.comm.get_selected_left()
238
 
 
239
 
        if path != None:
240
 
            launch(path)
241
 
    
242
 
    def diff_selected(self, action):
243
 
        """ Diff toolbutton -> Selected... """
244
 
        print "DEBUG: not implemented."
245
 
    
246
 
    def diff_all(self, action):
247
 
        """ Diff toolbutton -> All... """
248
 
        from diff import OliveDiff
249
 
        diff = OliveDiff(self.comm)
250
 
        diff.display()
 
167
        self.comm.refresh_left()