/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
0.8.51 by Szilveszter Farkas (Phanatic)
Some fixes for the Win32 platform; typo fixed.
2
#
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
0.8.51 by Szilveszter Farkas (Phanatic)
Some fixes for the Win32 platform; typo fixed.
7
#
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
0.8.51 by Szilveszter Farkas (Phanatic)
Some fixes for the Win32 platform; typo fixed.
12
#
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
import os.path
18
import sys
19
20
try:
21
    import pygtk
22
    pygtk.require("2.0")
23
except:
24
    pass
25
try:
26
    import gtk
27
    import gtk.glade
28
except:
29
    sys.exit(1)
30
0.11.1 by Jelmer Vernooij
Eliminate olive.backend.errors.
31
import bzrlib.errors as errors
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
32
33
class OliveMenu:
34
    """ This class is responsible for building the context menus. """
35
    def __init__(self, gladefile, comm, dialog):
36
        # Load the UI file
0.8.51 by Szilveszter Farkas (Phanatic)
Some fixes for the Win32 platform; typo fixed.
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
        
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
42
        if not os.path.exists(self.uifile):
43
            # Load from current directory if not installed
44
            self.uifile = "cmenu.ui"
0.8.51 by Szilveszter Farkas (Phanatic)
Some fixes for the Win32 platform; typo fixed.
45
            # Check again
46
            if not os.path.exists(self.uifile):
47
                # Fail
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
48
                print _('UI description file cannot be found.')
0.8.51 by Szilveszter Farkas (Phanatic)
Some fixes for the Win32 platform; typo fixed.
49
                sys.exit(1)
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
50
        
51
        self.gladefile = gladefile
52
        self.comm = comm
53
        self.dialog = dialog
54
        
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
55
        # Create the file list context menu
56
        self.ui = gtk.UIManager()
57
        
58
        self.actiongroup = gtk.ActionGroup('context')
59
        self.actiongroup.add_actions([('add', gtk.STOCK_ADD,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
60
                                       _('Add'), None,
61
                                       _('Add the selected file'),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
62
                                       self.add_file),
63
                                      ('remove', gtk.STOCK_REMOVE,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
64
                                       _('Remove'), None,
65
                                       _('Remove the selected file'),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
66
                                       self.remove_file),
0.8.50 by Szilveszter Farkas (Phanatic)
Major updates in the OliveMenu class.
67
                                      ('commit', None,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
68
                                       _('Commit'), None,
69
                                       _('Commit the changes'),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
70
                                       self.commit),
71
                                      ('diff', None,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
72
                                       _('Diff'), None,
73
                                       _('Show the diff of the file'),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
74
                                       self.diff),
75
                                      ('bookmark', None,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
76
                                       _('Bookmark'), None,
77
                                       _('Bookmark current location'),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
78
                                       self.bookmark),
0.8.57 by Szilveszter Farkas (Phanatic)
Bookmarks have titles; you can also edit them.
79
                                      ('edit_bookmark', gtk.STOCK_EDIT,
80
                                       _('Edit'), None,
81
                                       _('Edit the selected bookmark'),
82
                                       self.edit_bookmark),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
83
                                      ('remove_bookmark', gtk.STOCK_REMOVE,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
84
                                       _('Remove'), None,
85
                                       _('Remove the selected bookmark'),
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
86
                                       self.remove_bookmark),
87
                                      ('diff_selected', None,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
88
                                       _('Selected...'), None,
89
                                       _('Show the differences of the selected file'),
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
90
                                       self.diff_selected),
91
                                      ('diff_all', None,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
92
                                       _('All...'), None,
93
                                       _('Show the differences of all files'),
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
94
                                       self.diff_all)
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
95
                                     ])
96
        
97
        self.ui.insert_action_group(self.actiongroup, 0)
98
        self.ui.add_ui_from_file(self.uifile)
99
        
100
        self.cmenu_right = self.ui.get_widget('/context_right')
101
        self.cmenu_left = self.ui.get_widget('/context_left')
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
102
        self.toolbar_diff = self.ui.get_widget('/toolbar_diff')
0.8.50 by Szilveszter Farkas (Phanatic)
Major updates in the OliveMenu class.
103
        
104
        # Set icons
105
        commit_menu = self.ui.get_widget('/context_right/commit')
106
        commit_image = self.comm.menuitem_branch_commit.get_image()
107
        commit_pixbuf = commit_image.get_pixbuf()
108
        commit_icon = gtk.Image()
109
        commit_icon.set_from_pixbuf(commit_pixbuf)
110
        commit_menu.set_image(commit_icon)
111
        diff_menu = self.ui.get_widget('/context_right/diff')
112
        diff_image = self.comm.menuitem_stats_diff.get_image()
113
        diff_pixbuf = diff_image.get_pixbuf()
114
        diff_icon = gtk.Image()
115
        diff_icon.set_from_pixbuf(diff_pixbuf)
116
        diff_menu.set_image(diff_icon)
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
117
118
    def right_context_menu(self):
119
        return self.cmenu_right
120
    
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
121
    def left_context_menu(self):
122
        return self.cmenu_left
123
    
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
124
    def add_file(self, action):
125
        """ Right context menu -> Add """
126
        # Add only the selected file
127
        directory = self.comm.get_path()
128
        filename = self.comm.get_selected_right()
129
            
130
        if filename is None:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
131
            self.dialog.error_dialog(_('No file was selected'),
132
                                     _('Please select a file from the list,\nor choose the other option.'))
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
133
            return
134
        
135
        try:
0.11.6 by Jelmer Vernooij
Remove mkdir, add, rename
136
            bzrlib.add.smart_add([directory + '/' + filename])
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
137
        except errors.NotBranchError:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
138
            self.dialog.error_dialog(_('Directory is not a branch'),
139
                                     _('You can perform this action only in a branch.'))
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
140
            return
141
        
142
        self.comm.refresh_right()
143
    
144
    def remove_file(self, action):
145
        """ Right context menu -> Remove """
146
        # Remove only the selected file
147
        directory = self.comm.get_path()
148
        filename = self.comm.get_selected_right()
149
        
150
        if filename is None:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
151
            self.dialog.error_dialog(_('No file was selected'),
152
                                     _('Please select a file from the list,\nor choose the other option.'))
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
153
            return
154
        
155
        try:
156
            fileops.remove([directory + '/' + filename])
157
        except errors.NotBranchError:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
158
            self.dialog.error_dialog(_('Directory is not a branch'),
159
                                     _('You can perform this action only in a branch.'))
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
160
            return
161
        except errors.NotVersionedError:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
162
            self.dialog.error_dialog(_('File not versioned'),
163
                                     _('The selected file is not versioned.'))
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
164
            return
165
        except:
166
            raise
167
        
168
        self.comm.refresh_right()
169
170
    def commit(self, action):
171
        """ Right context menu -> Commit """
0.8.50 by Szilveszter Farkas (Phanatic)
Major updates in the OliveMenu class.
172
        from commit import OliveCommit
173
        commit = OliveCommit(self.gladefile, self.comm, self.dialog)
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
174
        commit.display()
175
    
176
    def diff(self, action):
177
        """ Right context menu -> Diff """
0.8.50 by Szilveszter Farkas (Phanatic)
Major updates in the OliveMenu class.
178
        from diff import OliveDiff
179
        diff = OliveDiff(self.gladefile, self.comm, self.dialog)
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
180
        diff.display()
181
    
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
182
    def bookmark(self, action):
183
        """ Right context menu -> Bookmark """
184
        if self.comm.pref.add_bookmark(self.comm.get_path()):
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
185
            self.dialog.info_dialog(_('Bookmark successfully added'),
186
                                    _('The current directory was bookmarked. You can reach\nit by selecting it from the left panel.'))
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
187
        else:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
188
            self.dialog.warning_dialog(_('Location already bookmarked'),
189
                                       _('The current directory is already bookmarked.\nSee the left panel for reference.'))
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
190
        
191
        self.comm.refresh_left()
192
0.8.57 by Szilveszter Farkas (Phanatic)
Bookmarks have titles; you can also edit them.
193
    def edit_bookmark(self, action):
194
        """ Left context menu -> Edit """
195
        from bookmark import OliveBookmark
196
        bookmark = OliveBookmark(self.gladefile, self.comm, self.dialog)
197
        bookmark.display()
198
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
199
    def remove_bookmark(self, action):
200
        """ Left context menu -> Remove """
201
        self.comm.pref.remove_bookmark(self.comm.get_selected_left())
202
        
203
        self.comm.refresh_left()
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
204
    
205
    def diff_selected(self, action):
206
        """ Diff toolbutton -> Selected... """
207
        print "DEBUG: not implemented."
208
    
209
    def diff_all(self, action):
210
        """ Diff toolbutton -> All... """
211
        from diff import OliveDiff
212
        diff = OliveDiff(self.gladefile, self.comm, self.dialog)
213
        diff.display()