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