/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
2
#
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
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.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
7
#
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
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.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
12
#
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
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 sys
18
19
try:
20
    import pygtk
21
    pygtk.require("2.0")
22
except:
23
    pass
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
24
25
import gtk
26
import gtk.glade
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
27
0.11.1 by Jelmer Vernooij
Eliminate olive.backend.errors.
28
import bzrlib.errors as errors
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
29
from olive import gladefile
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
30
31
class OliveBranch:
32
    """ Display branch dialog and perform the needed operations. """
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
33
    def __init__(self, comm):
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
34
        """ Initialize the Branch dialog. """
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
35
        self.glade = gtk.glade.XML(gladefile, 'window_branch', 'olive-gtk')
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
36
        
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
37
        # Communication object
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
38
        self.comm = comm
39
        
40
        self.window = self.glade.get_widget('window_branch')
41
        
42
        # Dictionary for signal_autoconnect
43
        dic = { "on_button_branch_branch_clicked": self.branch,
44
                "on_button_branch_cancel_clicked": self.close }
45
        
46
        # Connect the signals to the handlers
47
        self.glade.signal_autoconnect(dic)
48
        
49
        # Save FileChooser state
50
        self.filechooser = self.glade.get_widget('filechooserbutton_branch')
51
        self.filechooser.set_filename(self.comm.get_path())
52
53
    def display(self):
54
        """ Display the Branch dialog. """
55
        self.window.show_all()
56
    
57
    def branch(self, widget):
58
        entry_location = self.glade.get_widget('entry_branch_location')
59
        location = entry_location.get_text()
60
        if location is '':
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
61
            error_dialog(_('Missing branch location'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
62
                                     _('You must specify a branch location.'))
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
63
            return
64
        
65
        destination = self.filechooser.get_filename()
66
        
67
        spinbutton_revno = self.glade.get_widget('spinbutton_branch_revno')
68
        revno = spinbutton_revno.get_value_as_int()
0.11.7 by Jelmer Vernooij
Integrate olive.backend.init
69
        revision_id = br_from.get_rev_id(revno)
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
70
        
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
71
        self.comm.set_busy(self.window)
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
72
        try:
0.11.7 by Jelmer Vernooij
Integrate olive.backend.init
73
            from bzrlib.transport import get_transport
74
75
            br_from = Branch.open(location)
76
77
            br_from.lock_read()
78
79
            try:
80
                destination = destination + '/' + os.path.basename(location.rstrip("/\\"))
81
                to_transport = get_transport(destination)
82
83
                to_transport.mkdir('.')
84
85
                try:
86
                    dir = br_from.bzrdir.sprout(to_transport.base, revision_id)
87
                    branch = dir.open_branch()
88
                except NoSuchRevision:
89
                    to_transport.delete_tree('.')
90
                    raise
91
92
            finally:
93
                br_from.unlock()
94
                
95
            self.close()
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
96
            info_dialog(_('Branching successful'),
0.11.7 by Jelmer Vernooij
Integrate olive.backend.init
97
                                _('%d revision(s) branched.') % revs)
98
            self.comm.refresh_right()
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
99
        except errors.NonExistingSource, errmsg:
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
100
            error_dialog(_('Non existing source'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
101
                                     _("The location (%s)\ndoesn't exist.") % errmsg)
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
102
            self.comm.set_busy(self.window, False)
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
103
            return
104
        except errors.TargetAlreadyExists, errmsg:
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
105
            error_dialog(_('Target already exists'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
106
                                     _('Target directory (%s)\nalready exists. Please select another target.') % errmsg)
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
107
            self.comm.set_busy(self.window, False)
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
108
            return
109
        except errors.NonExistingParent, errmsg:
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
110
            error_dialog(_('Non existing parent directory'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
111
                                     _("The parent directory (%s)\ndoesn't exist.") % errmsg)
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
112
            self.comm.set_busy(self.window, False)
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
113
            return
114
        except errors.NonExistingRevision:
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
115
            error_dialog(_('Non existing revision'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
116
                                     _("The revision you specified doesn't exist."))
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
117
            self.comm.set_busy(self.window, False)
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
118
            return
119
        except errors.NotBranchError, errmsg:
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
120
            error_dialog(_('Location is not a branch'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
121
                                     _('The specified location has to be a branch.'))
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
122
            self.comm.set_busy(self.window, False)
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
123
            return
0.8.16 by Szilveszter Farkas (Phanatic)
* really finished branch/checkout window
124
        
125
126
    def close(self, widget=None):
127
        self.window.destroy()