/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
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
25
26
import gtk
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
27
0.11.1 by Jelmer Vernooij
Eliminate olive.backend.errors.
28
import bzrlib.errors as errors
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
29
from bzrlib.workingtree import WorkingTree
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
30
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
31
from dialog import error_dialog, info_dialog, warning_dialog
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
32
from launch import launch
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
33
from olive import OlivePreferences
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
34
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
35
class OliveMenu:
36
    """ This class is responsible for building the context menus. """
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
37
    def __init__(self, path, selected):
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
38
        # Load the UI file
0.8.51 by Szilveszter Farkas (Phanatic)
Some fixes for the Win32 platform; typo fixed.
39
        if sys.platform == 'win32':
40
            self.uifile = os.path.dirname(sys.executable) + "/share/olive/cmenu.ui"
41
        else:
42
            self.uifile = "/usr/share/olive/cmenu.ui"
43
        
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
44
        if not os.path.exists(self.uifile):
45
            # Load from current directory if not installed
46
            self.uifile = "cmenu.ui"
0.8.51 by Szilveszter Farkas (Phanatic)
Some fixes for the Win32 platform; typo fixed.
47
            # Check again
48
            if not os.path.exists(self.uifile):
49
                # Fail
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
50
                print _('UI description file cannot be found.')
0.8.51 by Szilveszter Farkas (Phanatic)
Some fixes for the Win32 platform; typo fixed.
51
                sys.exit(1)
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
52
        
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
53
        # Preferences handler
54
        self.pref = OlivePreferences()
55
        
56
        # Set default values
57
        self.path = path
58
        self.selected = selected
59
        print "DEBUG: path =", self.path
60
        print "DEBUG: selected =", self.selected
61
        
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
62
        # Create the file list context menu
63
        self.ui = gtk.UIManager()
64
        
65
        self.actiongroup = gtk.ActionGroup('context')
66
        self.actiongroup.add_actions([('add', gtk.STOCK_ADD,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
67
                                       _('Add'), None,
68
                                       _('Add the selected file'),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
69
                                       self.add_file),
70
                                      ('remove', gtk.STOCK_REMOVE,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
71
                                       _('Remove'), None,
72
                                       _('Remove the selected file'),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
73
                                       self.remove_file),
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
74
                                      ('open', gtk.STOCK_OPEN,
75
                                       _('Open'), None,
76
                                       _('Open the selected file'),
77
                                       self.open_file),
0.8.50 by Szilveszter Farkas (Phanatic)
Major updates in the OliveMenu class.
78
                                      ('commit', None,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
79
                                       _('Commit'), None,
80
                                       _('Commit the changes'),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
81
                                       self.commit),
82
                                      ('diff', None,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
83
                                       _('Diff'), None,
84
                                       _('Show the diff of the file'),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
85
                                       self.diff),
86
                                      ('bookmark', None,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
87
                                       _('Bookmark'), None,
88
                                       _('Bookmark current location'),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
89
                                       self.bookmark),
0.8.57 by Szilveszter Farkas (Phanatic)
Bookmarks have titles; you can also edit them.
90
                                      ('edit_bookmark', gtk.STOCK_EDIT,
91
                                       _('Edit'), None,
92
                                       _('Edit the selected bookmark'),
93
                                       self.edit_bookmark),
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
94
                                      ('remove_bookmark', gtk.STOCK_REMOVE,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
95
                                       _('Remove'), None,
96
                                       _('Remove the selected bookmark'),
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
97
                                       self.remove_bookmark),
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
98
                                      ('open_folder', gtk.STOCK_OPEN,
99
                                       _('Open Folder'), None,
100
                                       _('Open bookmark folder in Nautilus'),
101
                                       self.open_folder),
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
102
                                      ('diff_selected', None,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
103
                                       _('Selected...'), None,
104
                                       _('Show the differences of the selected file'),
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
105
                                       self.diff_selected),
106
                                      ('diff_all', None,
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
107
                                       _('All...'), None,
108
                                       _('Show the differences of all files'),
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
109
                                       self.diff_all)
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
110
                                     ])
111
        
112
        self.ui.insert_action_group(self.actiongroup, 0)
113
        self.ui.add_ui_from_file(self.uifile)
114
        
115
        self.cmenu_right = self.ui.get_widget('/context_right')
116
        self.cmenu_left = self.ui.get_widget('/context_left')
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
117
        self.toolbar_diff = self.ui.get_widget('/toolbar_diff')
0.8.50 by Szilveszter Farkas (Phanatic)
Major updates in the OliveMenu class.
118
        
119
        # Set icons
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
120
        # TODO: do it without using deprecated comm
121
        #commit_menu = self.ui.get_widget('/context_right/commit')
122
        #commit_image = self.comm.menuitem_branch_commit.get_image()
123
        #commit_pixbuf = commit_image.get_pixbuf()
124
        #commit_icon = gtk.Image()
125
        #commit_icon.set_from_pixbuf(commit_pixbuf)
126
        #commit_menu.set_image(commit_icon)
127
        #diff_menu = self.ui.get_widget('/context_right/diff')
128
        #diff_image = self.comm.menuitem_stats_diff.get_image()
129
        #diff_pixbuf = diff_image.get_pixbuf()
130
        #diff_icon = gtk.Image()
131
        #diff_icon.set_from_pixbuf(diff_pixbuf)
132
        #diff_menu.set_image(diff_icon)
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
133
134
    def right_context_menu(self):
135
        return self.cmenu_right
136
    
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
137
    def left_context_menu(self):
138
        return self.cmenu_left
139
    
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
140
    def add_file(self, action):
141
        """ Right context menu -> Add """
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
142
        import bzrlib.add
143
        
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
144
        # Add only the selected file
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
145
        directory = self.path
146
        filename = self.selected
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
147
            
148
        if filename is None:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
149
            error_dialog(_('No file was selected'),
0.13.11 by Jelmer Vernooij
Bunch of small fixes, cleanups and simplifications.
150
                         _('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)
151
            return
152
        
153
        try:
0.11.6 by Jelmer Vernooij
Remove mkdir, add, rename
154
            bzrlib.add.smart_add([directory + '/' + filename])
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
155
        except errors.NotBranchError:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
156
            error_dialog(_('Directory is not a branch'),
0.13.11 by Jelmer Vernooij
Bunch of small fixes, cleanups and simplifications.
157
                         _('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)
158
            return
159
    
160
    def remove_file(self, action):
161
        """ Right context menu -> Remove """
162
        # Remove only the selected file
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
163
        directory = self.path
164
        filename = self.selected
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
165
        
166
        if filename is None:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
167
            error_dialog(_('No file was selected'),
0.13.11 by Jelmer Vernooij
Bunch of small fixes, cleanups and simplifications.
168
                         _('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)
169
            return
170
        
171
        try:
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
172
            wt, path = WorkingTree.open_containing(directory + os.sep + filename)
0.11.8 by Jelmer Vernooij
Integrate olive.backend.fileops
173
            wt.remove(path)
174
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
175
        except errors.NotBranchError:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
176
            error_dialog(_('Directory is not a branch'),
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
177
                         _('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)
178
            return
179
        except errors.NotVersionedError:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
180
            error_dialog(_('File not versioned'),
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
181
                         _('The selected file is not versioned.'))
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
182
            return
183
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
184
    def open_file(self, action):
185
        """ Right context menu -> Open """
186
        # Open only the selected file
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
187
        filename = self.selected
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
188
        
189
        if filename is None:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
190
            error_dialog(_('No file was selected'),
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
191
                         _('Please select a file from the list,\nor choose the other option.'))
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
192
            return
193
194
        if filename == '..':
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
195
            # TODO: how to enter a directory?
196
            return
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
197
        else:
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
198
            fullpath = self.path + os.sep + filename
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
199
            if os.path.isdir(fullpath):
200
                # selected item is an existant directory
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
201
                # TODO: how to enter a directory?
202
                return
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
203
            else:
204
                launch(fullpath) 
205
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
206
    def commit(self, action):
207
        """ Right context menu -> Commit """
0.8.50 by Szilveszter Farkas (Phanatic)
Major updates in the OliveMenu class.
208
        from commit import OliveCommit
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
209
        wt, path = WorkingTree.open_containing(self.path)
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
210
        commit = OliveCommit(wt, path)
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
211
        commit.display()
212
    
213
    def diff(self, action):
214
        """ Right context menu -> Diff """
0.8.50 by Szilveszter Farkas (Phanatic)
Major updates in the OliveMenu class.
215
        from diff import OliveDiff
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
216
        diff = OliveDiff(self.comm)
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
217
        diff.display()
218
    
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
219
    def bookmark(self, action):
220
        """ Right context menu -> Bookmark """
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
221
        if self.pref.add_bookmark(self.comm.get_path()):
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
222
            info_dialog(_('Bookmark successfully added'),
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
223
                        _('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.
224
        else:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
225
            warning_dialog(_('Location already bookmarked'),
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
226
                           _('The current directory is already bookmarked.\nSee the left panel for reference.'))
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
227
0.8.57 by Szilveszter Farkas (Phanatic)
Bookmarks have titles; you can also edit them.
228
    def edit_bookmark(self, action):
229
        """ Left context menu -> Edit """
230
        from bookmark import OliveBookmark
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
231
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
232
        if self.selected != None:
0.8.93 by Szilveszter Farkas (Phanatic)
Some further cleanups. More to come.
233
            bookmark = OliveBookmark(self.selected)
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
234
            bookmark.display()
0.8.57 by Szilveszter Farkas (Phanatic)
Bookmarks have titles; you can also edit them.
235
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
236
    def remove_bookmark(self, action):
237
        """ Left context menu -> Remove """
238
        
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
239
        if self.selected != None:
240
            self.pref.remove_bookmark(self.comm.get_selected_left())
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
241
            self.comm.refresh_left()
242
    
243
    def open_folder(self, action):
244
        """ Left context menu -> Open Folder """
0.8.92 by Szilveszter Farkas (Phanatic)
Cleanup Jelmer's changes.
245
        path = self.selected
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
246
247
        if path != None:
248
            launch(path)
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
249
    
250
    def diff_selected(self, action):
251
        """ Diff toolbutton -> Selected... """
252
        print "DEBUG: not implemented."
253
    
254
    def diff_all(self, action):
255
        """ Diff toolbutton -> All... """
256
        from diff import OliveDiff
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
257
        diff = OliveDiff(self.comm)
0.8.52 by Szilveszter Farkas (Phanatic)
GUI (toolbar + menu) cleanup.
258
        diff.display()