/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-07 16:51:21 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-20060807165121-10fe27c374bbdffd
Added new artwork.

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

    * olive.galde: added custom artwork (icons)
    * icons/*: new icons for the toolbar
    * setup.py: install the icons

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
31
31
import olive.backend.fileops as fileops
32
32
import olive.backend.errors as errors
33
33
 
 
34
from commit import OliveCommit
 
35
from diff import OliveDiff
 
36
 
34
37
class OliveMenu:
35
38
    """ This class is responsible for building the context menus. """
36
39
    def __init__(self, gladefile, comm, dialog):
37
40
        # Load the UI file
38
 
        if sys.platform == 'win32':
39
 
            self.uifile = os.path.dirname(sys.executable) + "/share/olive/cmenu.ui"
40
 
        else:
41
 
            self.uifile = "/usr/share/olive/cmenu.ui"
42
 
        
 
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"
46
 
            # Check again
47
 
            if not os.path.exists(self.uifile):
48
 
                # Fail
49
 
                print _('UI description file cannot be found.')
50
 
                sys.exit(1)
51
45
        
52
46
        self.gladefile = gladefile
53
47
        self.comm = comm
54
48
        self.dialog = dialog
55
49
        
56
 
        # Create the file list context menu
57
 
        self.ui = gtk.UIManager()
58
 
        
59
 
        self.actiongroup = gtk.ActionGroup('context')
60
 
        self.actiongroup.add_actions([('add', gtk.STOCK_ADD,
61
 
                                       _('Add'), None,
62
 
                                       _('Add the selected file'),
63
 
                                       self.add_file),
64
 
                                      ('remove', gtk.STOCK_REMOVE,
65
 
                                       _('Remove'), None,
66
 
                                       _('Remove the selected file'),
67
 
                                       self.remove_file),
68
 
                                      ('commit', None,
69
 
                                       _('Commit'), None,
70
 
                                       _('Commit the changes'),
71
 
                                       self.commit),
72
 
                                      ('diff', None,
73
 
                                       _('Diff'), None,
74
 
                                       _('Show the diff of the file'),
75
 
                                       self.diff),
76
 
                                      ('bookmark', None,
77
 
                                       _('Bookmark'), None,
78
 
                                       _('Bookmark current location'),
79
 
                                       self.bookmark),
80
 
                                      ('remove_bookmark', gtk.STOCK_REMOVE,
81
 
                                       _('Remove'), None,
82
 
                                       _('Remove the selected bookmark'),
83
 
                                       self.remove_bookmark),
84
 
                                      ('diff_selected', None,
85
 
                                       _('Selected...'), None,
86
 
                                       _('Show the differences of the selected file'),
87
 
                                       self.diff_selected),
88
 
                                      ('diff_all', None,
89
 
                                       _('All...'), None,
90
 
                                       _('Show the differences of all files'),
91
 
                                       self.diff_all)
92
 
                                     ])
93
 
        
94
 
        self.ui.insert_action_group(self.actiongroup, 0)
95
 
        self.ui.add_ui_from_file(self.uifile)
96
 
        
97
 
        self.cmenu_right = self.ui.get_widget('/context_right')
98
 
        self.cmenu_left = self.ui.get_widget('/context_left')
99
 
        self.toolbar_diff = self.ui.get_widget('/toolbar_diff')
100
 
        
101
 
        # Set icons
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)
 
50
        self.ui_right = gtk.UIManager()
 
51
        
 
52
        self.actiongroup_right = gtk.ActionGroup('context_right')
 
53
        self.actiongroup_right.add_actions([('add', gtk.STOCK_ADD,
 
54
                                             'Add', None,
 
55
                                             'Add the selected file',
 
56
                                             self.add_file),
 
57
                                            ('remove', gtk.STOCK_REMOVE,
 
58
                                             'Remove', None,
 
59
                                             'Remove the selected file',
 
60
                                             self.remove_file),
 
61
                                            ('commit', gtk.STOCK_REDO,
 
62
                                             'Commit', None,
 
63
                                             'Commit the changes',
 
64
                                             self.commit),
 
65
                                            ('diff', None,
 
66
                                             'Diff', None,
 
67
                                             'Show the diff of the file',
 
68
                                             self.diff),
 
69
                                            ('log', None,
 
70
                                             'Log', None,
 
71
                                             'Show the log of the file',
 
72
                                             self.log)])
 
73
        
 
74
        self.ui_right.insert_action_group(self.actiongroup_right, 0)
 
75
        self.ui_right.add_ui_from_file(self.uifile)
 
76
        
 
77
        self.cmenu_right = self.ui_right.get_widget('/context_right')
114
78
 
115
79
    def right_context_menu(self):
116
80
        return self.cmenu_right
117
81
    
118
 
    def left_context_menu(self):
119
 
        return self.cmenu_left
120
 
    
121
82
    def add_file(self, action):
122
83
        """ Right context menu -> Add """
123
84
        # Add only the selected file
125
86
        filename = self.comm.get_selected_right()
126
87
            
127
88
        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.'))
 
89
            self.dialog.error_dialog('No file was selected.')
130
90
            return
131
91
        
132
92
        try:
133
93
            fileops.add([directory + '/' + filename])
134
94
        except errors.NotBranchError:
135
 
            self.dialog.error_dialog(_('Directory is not a branch'),
136
 
                                     _('You can perform this action only in a branch.'))
 
95
            self.dialog.error_dialog('The directory is not a branch.')
137
96
            return
138
97
        except:
139
98
            raise
147
106
        filename = self.comm.get_selected_right()
148
107
        
149
108
        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.'))
 
109
            self.dialog.error_dialog('No file was selected.')
152
110
            return
153
111
        
154
112
        try:
155
113
            fileops.remove([directory + '/' + filename])
156
114
        except errors.NotBranchError:
157
 
            self.dialog.error_dialog(_('Directory is not a branch'),
158
 
                                     _('You can perform this action only in a branch.'))
 
115
            self.dialog.error_dialog('The directory is not a branch.')
159
116
            return
160
117
        except errors.NotVersionedError:
161
 
            self.dialog.error_dialog(_('File not versioned'),
162
 
                                     _('The selected file is not versioned.'))
 
118
            self.dialog.error_dialog('Selected file is not versioned.')
163
119
            return
164
120
        except:
165
121
            raise
168
124
 
169
125
    def commit(self, action):
170
126
        """ Right context menu -> Commit """
171
 
        from commit import OliveCommit
172
 
        commit = OliveCommit(self.gladefile, self.comm, self.dialog)
 
127
        commit = OliveCommit(self.gladefile, self.comm)
173
128
        commit.display()
174
129
    
175
130
    def diff(self, action):
176
131
        """ Right context menu -> Diff """
177
 
        from diff import OliveDiff
178
 
        diff = OliveDiff(self.gladefile, self.comm, self.dialog)
179
 
        diff.display()
180
 
    
181
 
    def bookmark(self, action):
182
 
        """ Right context menu -> Bookmark """
183
 
        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.'))
186
 
        else:
187
 
            self.dialog.warning_dialog(_('Location already bookmarked'),
188
 
                                       _('The current directory is already bookmarked.\nSee the left panel for reference.'))
189
 
        
190
 
        self.comm.refresh_left()
191
 
 
192
 
    def remove_bookmark(self, action):
193
 
        """ Left context menu -> Remove """
194
 
        self.comm.pref.remove_bookmark(self.comm.get_selected_left())
195
 
        
196
 
        self.comm.refresh_left()
197
 
    
198
 
    def diff_selected(self, action):
199
 
        """ Diff toolbutton -> Selected... """
200
 
        print "DEBUG: not implemented."
201
 
    
202
 
    def diff_all(self, action):
203
 
        """ Diff toolbutton -> All... """
204
 
        from diff import OliveDiff
205
 
        diff = OliveDiff(self.gladefile, self.comm, self.dialog)
206
 
        diff.display()
 
132
        diff = OliveDiff(self.gladefile, self.comm)
 
133
        diff.display()
 
134
    
 
135
    def log(self, action):
 
136
        """ Right context menu -> Log """
 
137
        self.dialog.error_dialog('This feature is not yet implemented.')