/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
0.8.12 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
2
#
0.8.12 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
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.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
7
#
0.8.12 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
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.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
12
#
0.8.12 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
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
0.8.77 by Szilveszter Farkas (Phanatic)
Implemented drive selector for Win32 platforms.
17
import os
0.8.12 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
18
import sys
19
20
try:
0.8.14 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
21
    import pygtk
22
    pygtk.require("2.0")
0.8.12 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
23
except:
0.8.14 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
24
    pass
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
25
26
import gtk
27
import gtk.glade
0.8.12 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
28
0.11.1 by Jelmer Vernooij
Eliminate olive.backend.errors.
29
import bzrlib.errors as errors
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
30
from bzrlib.branch import Branch
0.12.1 by Jelmer Vernooij
Don't use communicator for status.
31
from bzrlib.workingtree import WorkingTree
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
32
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
33
from dialog import about, error_dialog, info_dialog
0.8.24 by Szilveszter Farkas (Phanatic)
Implemented context menu for the file list.
34
from menu import OliveMenu
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
35
from launch import launch
0.8.13 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
36
0.8.12 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
37
class OliveHandler:
38
    """ Signal handler class for Olive. """
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
39
    def __init__(self,  comm):
0.8.15 by Szilveszter Farkas (Phanatic)
2006-07-18 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
40
        self.comm = comm
41
        
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
42
        self.menu = OliveMenu(self.comm)
0.8.13 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
43
    
44
    def on_about_activate(self, widget):
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
45
        about()
0.8.14 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
46
        
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
47
    def on_menuitem_add_files_activate(self, widget):
48
        """ Add file(s)... menu handler. """
0.8.36 by Szilveszter Farkas (Phanatic)
Implemented pull functionality.
49
        from add import OliveAdd
0.13.8 by Jelmer Vernooij
Fix add
50
        wt, path = WorkingTree.open_containing(self.comm.get_path())
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
51
        add = OliveAdd(wt, path, 
0.13.8 by Jelmer Vernooij
Fix add
52
                self.comm.get_selected_right())
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
53
        add.display()
54
    
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
55
    def on_menuitem_branch_get_activate(self, widget):
56
        """ Branch/Get... menu handler. """
0.8.36 by Szilveszter Farkas (Phanatic)
Implemented pull functionality.
57
        from branch import OliveBranch
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
58
        branch = OliveBranch(self.comm)
0.8.14 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
59
        branch.display()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
60
    
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
61
    def on_menuitem_branch_checkout_activate(self, widget):
62
        """ Branch/Checkout... menu handler. """
0.8.36 by Szilveszter Farkas (Phanatic)
Implemented pull functionality.
63
        from checkout import OliveCheckout
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
64
        checkout = OliveCheckout(self.comm)
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
65
        checkout.display()
66
    
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
67
    def on_menuitem_branch_commit_activate(self, widget):
68
        """ Branch/Commit... menu handler. """
0.8.36 by Szilveszter Farkas (Phanatic)
Implemented pull functionality.
69
        from commit import OliveCommit
0.13.1 by Jelmer Vernooij
Remove communicator use from Commit.
70
        wt, path = WorkingTree.open_containing(self.comm.get_path())
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
71
        commit = OliveCommit(wt, path)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
72
        commit.display()
73
    
0.8.66 by Szilveszter Farkas (Phanatic)
Implemented Missing revisions functionality.
74
    def on_menuitem_branch_missing_revisions_activate(self, widget):
75
        """ Branch/Missing revisions menu handler. """
76
        
77
        self.comm.set_busy(self.comm.window_main)
78
        
79
        try:
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
80
            import bzrlib
81
            
82
            try:
83
                local_branch = Branch.open_containing(self.comm.get_path())[0]
84
            except NotBranchError:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
85
                error_dialog(_('Directory is not a branch'),
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
86
                                         _('You can perform this action only in a branch.'))
87
                return
88
            
89
            other_branch = local_branch.get_parent()
90
            if other_branch is None:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
91
                error_dialog(_('Parent location is unknown'),
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
92
                                         _('Cannot determine missing revisions if no parent location is known.'))
93
                return
94
            
95
            remote_branch = Branch.open(other_branch)
96
            
97
            if remote_branch.base == local_branch.base:
98
                remote_branch = local_branch
99
100
            ret = len(local_branch.missing_revisions(remote_branch))
101
0.8.66 by Szilveszter Farkas (Phanatic)
Implemented Missing revisions functionality.
102
            if ret > 0:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
103
                info_dialog(_('There are missing revisions'),
0.8.66 by Szilveszter Farkas (Phanatic)
Implemented Missing revisions functionality.
104
                                        _('%d revision(s) missing.') % ret)
105
            else:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
106
                info_dialog(_('Local branch up to date'),
0.8.66 by Szilveszter Farkas (Phanatic)
Implemented Missing revisions functionality.
107
                                        _('There are no missing revisions.'))
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
108
        finally:
109
            self.comm.set_busy(self.comm.window_main, False)
0.8.66 by Szilveszter Farkas (Phanatic)
Implemented Missing revisions functionality.
110
    
0.8.36 by Szilveszter Farkas (Phanatic)
Implemented pull functionality.
111
    def on_menuitem_branch_pull_activate(self, widget):
112
        """ Branch/Pull menu handler. """
113
        
114
        self.comm.set_busy(self.comm.window_main)
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
115
0.8.36 by Szilveszter Farkas (Phanatic)
Implemented pull functionality.
116
        try:
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
117
            try:
0.11.11 by Jelmer Vernooij
Fix a few more bits that I broke earlier.
118
                from bzrlib.workingtree import WorkingTree
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
119
                tree_to = WorkingTree.open_containing(self.comm.get_path())[0]
120
                branch_to = tree_to.branch
0.11.11 by Jelmer Vernooij
Fix a few more bits that I broke earlier.
121
            except errors.NoWorkingTree:
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
122
                tree_to = None
123
                branch_to = Branch.open_containing(self.comm.get_path())[0]
0.11.11 by Jelmer Vernooij
Fix a few more bits that I broke earlier.
124
            except errors.NotBranchError:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
125
                 error_dialog(_('Directory is not a branch'),
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
126
                                         _('You can perform this action only in a branch.'))
127
128
            location = branch_to.get_parent()
129
            if location is None:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
130
                error_dialog(_('Parent location is unknown'),
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
131
                                         _('Pulling is not possible until there is a parent location.'))
132
                return
133
134
            try:
135
                branch_from = Branch.open(location)
136
            except errors.NotBranchError:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
137
                error_dialog(_('Directory is not a branch'),
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
138
                                         _('You can perform this action only in a branch.'))
139
140
            if branch_to.get_parent() is None:
141
                branch_to.set_parent(branch_from.base)
142
143
            old_rh = branch_to.revision_history()
144
            if tree_to is not None:
0.11.11 by Jelmer Vernooij
Fix a few more bits that I broke earlier.
145
                tree_to.pull(branch_from)
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
146
            else:
0.11.11 by Jelmer Vernooij
Fix a few more bits that I broke earlier.
147
                branch_to.pull(branch_from)
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
148
            
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
149
            info_dialog(_('Pull successful'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
150
                                    _('%d revision(s) pulled.') % ret)
0.11.5 by Jelmer Vernooij
Eliminate olive.backend.update
151
            
152
        finally:
153
            self.comm.set_busy(self.comm.window_main, False)
0.8.36 by Szilveszter Farkas (Phanatic)
Implemented pull functionality.
154
    
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
155
    def on_menuitem_branch_push_activate(self, widget):
156
        """ Branch/Push... menu handler. """
0.8.36 by Szilveszter Farkas (Phanatic)
Implemented pull functionality.
157
        from push import OlivePush
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
158
        push = OlivePush(self.comm)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
159
        push.display()
160
    
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
161
    def on_menuitem_branch_status_activate(self, widget):
162
        """ Branch/Status... menu handler. """
0.8.36 by Szilveszter Farkas (Phanatic)
Implemented pull functionality.
163
        from status import OliveStatus
0.12.1 by Jelmer Vernooij
Don't use communicator for status.
164
        wt, wtpath = WorkingTree.open_containing(self.comm.get_path())
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
165
        status = OliveStatus(wt, wtpath)
0.8.29 by Szilveszter Farkas (Phanatic)
Implemented Status window; some code cleanups.
166
        status.display()
167
    
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
168
    def on_menuitem_branch_initialize_activate(self, widget):
169
        """ Initialize current directory. """
170
        try:
0.11.7 by Jelmer Vernooij
Integrate olive.backend.init
171
            location = self.comm.get_path()
172
            from bzrlib.builtins import get_format_type
173
174
            format = get_format_type('default')
175
 
176
            if not os.path.exists(location):
177
                os.mkdir(location)
178
     
179
            try:
180
                existing_bzrdir = bzrdir.BzrDir.open(location)
181
            except NotBranchError:
182
                bzrdir.BzrDir.create_branch_convenience(location, format=format)
183
            else:
184
                if existing_bzrdir.has_branch():
185
                    if existing_bzrdir.has_workingtree():
186
                        raise AlreadyBranchError(location)
187
                    else:
188
                        raise BranchExistsWithoutWorkingTree(location)
189
                else:
190
                    existing_bzrdir.create_branch()
191
                    existing_bzrdir.create_workingtree()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
192
        except errors.AlreadyBranchError, errmsg:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
193
            error_dialog(_('Directory is already a branch'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
194
                                     _('The current directory (%s) is already a branch.\nYou can start using it, or initialize another directory.') % errmsg)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
195
        except errors.BranchExistsWithoutWorkingTree, errmsg:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
196
            error_dialog(_('Branch without a working tree'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
197
                                     _('The current directory (%s)\nis a branch without a working tree.') % errmsg)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
198
        else:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
199
            info_dialog(_('Initialize successful'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
200
                                    _('Directory successfully initialized.'))
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
201
            self.comm.refresh_right()
202
        
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
203
    def on_menuitem_file_make_directory_activate(self, widget):
204
        """ File/Make directory... menu handler. """
205
        from mkdir import OliveMkdir
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
206
        mkdir = OliveMkdir(self.comm)
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
207
        mkdir.display()
208
    
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
209
    def on_menuitem_file_move_activate(self, widget):
210
        """ File/Move... menu handler. """
211
        from move import OliveMove
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
212
        move = OliveMove(self.comm)
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
213
        move.display()
214
    
0.8.40 by Szilveszter Farkas (Phanatic)
Implemented Rename functionality.
215
    def on_menuitem_file_rename_activate(self, widget):
216
        """ File/Rename... menu handler. """
217
        from rename import OliveRename
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
218
        rename = OliveRename(self.comm)
0.8.40 by Szilveszter Farkas (Phanatic)
Implemented Rename functionality.
219
        rename.display()
220
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
221
    def on_menuitem_remove_file_activate(self, widget):
222
        """ Remove (unversion) selected file. """
0.8.36 by Szilveszter Farkas (Phanatic)
Implemented pull functionality.
223
        from remove import OliveRemove
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
224
        remove = OliveRemove(self.comm)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
225
        remove.display()
226
    
0.8.28 by Szilveszter Farkas (Phanatic)
Statistics menu added
227
    def on_menuitem_stats_diff_activate(self, widget):
228
        """ Statistics/Differences... menu handler. """
0.13.9 by Jelmer Vernooij
Turn some windows into dialogs.
229
        from bzrlib.plugins.gtk.viz.diffwin import DiffWindow
230
        window = DiffWindow()
231
        wt = WorkingTree.open_containing(self.comm.get_path())[0]
232
        parent_tree = wt.branch.repository.revision_tree(wt.branch.last_revision())
233
        window.set_diff(wt.branch.nick, wt, parent_tree)
234
        window.show()
0.8.28 by Szilveszter Farkas (Phanatic)
Statistics menu added
235
    
0.8.42 by Szilveszter Farkas (Phanatic)
Implemented Informations functionality; some bzrlib API changes handled.
236
    def on_menuitem_stats_infos_activate(self, widget):
237
        """ Statistics/Informations... menu handler. """
238
        from info import OliveInfo
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
239
        info = OliveInfo(self.comm)
0.8.42 by Szilveszter Farkas (Phanatic)
Implemented Informations functionality; some bzrlib API changes handled.
240
        info.display()
241
    
0.8.43 by Szilveszter Farkas (Phanatic)
Implemented Log functionality (via bzrk).
242
    def on_menuitem_stats_log_activate(self, widget):
243
        """ Statistics/Log... menu handler. """
244
        from log import OliveLog
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
245
        log = OliveLog(self.comm)
0.8.43 by Szilveszter Farkas (Phanatic)
Implemented Log functionality (via bzrk).
246
        log.display()
247
    
0.8.49 by Szilveszter Farkas (Phanatic)
Added View menu; implemented Refresh; some TODO changes.
248
    def on_menuitem_view_refresh_activate(self, widget):
249
        """ View/Refresh menu handler. """
250
        # Refresh the left pane
251
        self.comm.refresh_left()
252
        # Refresh the right pane
253
        self.comm.refresh_right()
254
    
255
    def on_menuitem_view_show_hidden_files_activate(self, widget):
256
        """ View/Show hidden files menu handler. """
257
        if widget.get_active():
258
            # Show hidden files
259
            self.comm.pref.set_preference('dotted_files', True)
260
            self.comm.pref.refresh()
261
            self.comm.refresh_right()
262
        else:
263
            # Do not show hidden files
264
            self.comm.pref.set_preference('dotted_files', False)
265
            self.comm.pref.refresh()
266
            self.comm.refresh_right()
267
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
268
    def on_treeview_left_button_press_event(self, widget, event):
269
        """ Occurs when somebody right-clicks in the bookmark list. """
270
        if event.button == 3:
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
271
            # Don't show context with nothing selected
272
            if self.comm.get_selected_left() == None:
273
                return
274
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
275
            self.menu.left_context_menu().popup(None, None, None, 0,
0.8.41 by Szilveszter Farkas (Phanatic)
Main window preferences (size, position) are stored.
276
                                                event.time)
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
277
        
278
    def on_treeview_left_row_activated(self, treeview, path, view_column):
279
        """ Occurs when somebody double-clicks or enters an item in the
280
        bookmark list. """
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
281
282
        newdir = self.comm.get_selected_left()
283
        if newdir == None:
284
            return
285
0.8.33 by Szilveszter Farkas (Phanatic)
Implemented bookmarking.
286
        self.comm.set_busy(treeview)
287
        self.comm.set_path(newdir)
288
        self.comm.refresh_right()
289
        self.comm.set_busy(treeview, False)
290
    
0.8.24 by Szilveszter Farkas (Phanatic)
Implemented context menu for the file list.
291
    def on_treeview_right_button_press_event(self, widget, event):
292
        """ Occurs when somebody right-clicks in the file list. """
293
        if event.button == 3:
0.8.53 by Szilveszter Farkas (Phanatic)
Set sensitivity of menus and toolbuttons.
294
            # get the menu items
295
            m_add = self.menu.ui.get_widget('/context_right/add')
296
            m_remove = self.menu.ui.get_widget('/context_right/remove')
297
            m_commit = self.menu.ui.get_widget('/context_right/commit')
298
            m_diff = self.menu.ui.get_widget('/context_right/diff')
299
            # check if we're in a branch
0.11.11 by Jelmer Vernooij
Fix a few more bits that I broke earlier.
300
            try:
301
                from bzrlib.branch import Branch
302
                Branch.open_containing(self.comm.get_path())
0.8.53 by Szilveszter Farkas (Phanatic)
Set sensitivity of menus and toolbuttons.
303
                m_add.set_sensitive(False)
304
                m_remove.set_sensitive(False)
305
                m_commit.set_sensitive(False)
306
                m_diff.set_sensitive(False)
0.11.11 by Jelmer Vernooij
Fix a few more bits that I broke earlier.
307
            except errors.NotBranchError:
0.8.53 by Szilveszter Farkas (Phanatic)
Set sensitivity of menus and toolbuttons.
308
                m_add.set_sensitive(True)
309
                m_remove.set_sensitive(True)
310
                m_commit.set_sensitive(True)
311
                m_diff.set_sensitive(True)
0.8.24 by Szilveszter Farkas (Phanatic)
Implemented context menu for the file list.
312
            self.menu.right_context_menu().popup(None, None, None, 0,
313
                                                 event.time)
314
        
0.8.18 by Szilveszter Farkas (Phanatic)
2006-07-20 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
315
    def on_treeview_right_row_activated(self, treeview, path, view_column):
316
        """ Occurs when somebody double-clicks or enters an item in the
317
        file list. """
318
        import os.path
319
        
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
320
        newdir = self.comm.get_selected_right()
0.8.18 by Szilveszter Farkas (Phanatic)
2006-07-20 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
321
        
322
        if newdir == '..':
323
            self.comm.set_path(os.path.split(self.comm.get_path())[0])
324
        else:
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
325
            fullpath = self.comm.get_path() + os.sep + newdir
0.8.54 by Szilveszter Farkas (Phanatic)
Fixed a bug when double-clicking a file.
326
            if os.path.isdir(fullpath):
327
                # selected item is an existant directory
328
                self.comm.set_path(fullpath)
329
            else:
0.8.72 by Szilveszter Farkas (Phanatic)
Merge from Richard Ferguson's development branch.
330
                launch(fullpath) 
0.8.18 by Szilveszter Farkas (Phanatic)
2006-07-20 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
331
        
332
        self.comm.refresh_right()
0.8.13 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
333
    
0.8.32 by Szilveszter Farkas (Phanatic)
Implemented OlivePreferences; some wording fixes.
334
    def on_window_main_delete_event(self, widget, event=None):
335
        """ Do some stuff before exiting. """
0.8.41 by Szilveszter Farkas (Phanatic)
Main window preferences (size, position) are stored.
336
        width, height = self.comm.window_main.get_size()
337
        self.comm.pref.set_preference('window_width', width)
338
        self.comm.pref.set_preference('window_height', height)
339
        x, y = self.comm.window_main.get_position()
340
        self.comm.pref.set_preference('window_x', x)
341
        self.comm.pref.set_preference('window_y', y)
342
        self.comm.pref.set_preference('paned_position',
343
                                      self.comm.hpaned_main.get_position())
344
        
0.8.32 by Szilveszter Farkas (Phanatic)
Implemented OlivePreferences; some wording fixes.
345
        self.comm.pref.write()
346
        self.comm.window_main.destroy()
347
0.8.13 by Szilveszter Farkas (Phanatic)
2006-07-17 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
348