/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to olive/branch.py

  • Committer: Jelmer Vernooij
  • Date: 2006-09-27 19:52:46 UTC
  • mto: (0.12.2 olive)
  • mto: This revision was merged to the branch mainline in revision 83.
  • Revision ID: jelmer@samba.org-20060927195246-9354d7ccf56127f5
Don't pass around gladefile all the time. 
Fix bug in status information when files have been removed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
    pygtk.require("2.0")
22
22
except:
23
23
    pass
24
 
try:
25
 
    import gtk
26
 
    import gtk.glade
27
 
except:
28
 
    sys.exit(1)
29
 
 
30
 
import olive.backend.init as init
31
 
import olive.backend.errors as errors
 
24
 
 
25
import gtk
 
26
import gtk.glade
 
27
 
 
28
import bzrlib.errors as errors
 
29
from olive import gladefile
32
30
 
33
31
class OliveBranch:
34
32
    """ Display branch dialog and perform the needed operations. """
35
 
    def __init__(self, gladefile, comm, dialog):
 
33
    def __init__(self, comm):
36
34
        """ Initialize the Branch dialog. """
37
 
        self.gladefile = gladefile
38
 
        self.glade = gtk.glade.XML(self.gladefile, 'window_branch', 'olive-gtk')
 
35
        self.glade = gtk.glade.XML(gladefile, 'window_branch', 'olive-gtk')
39
36
        
40
37
        # Communication object
41
38
        self.comm = comm
42
 
        # Dialog object
43
 
        self.dialog = dialog
44
39
        
45
40
        self.window = self.glade.get_widget('window_branch')
46
41
        
63
58
        entry_location = self.glade.get_widget('entry_branch_location')
64
59
        location = entry_location.get_text()
65
60
        if location is '':
66
 
            self.dialog.error_dialog(_('Missing branch location'),
 
61
            error_dialog(_('Missing branch location'),
67
62
                                     _('You must specify a branch location.'))
68
63
            return
69
64
        
71
66
        
72
67
        spinbutton_revno = self.glade.get_widget('spinbutton_branch_revno')
73
68
        revno = spinbutton_revno.get_value_as_int()
74
 
        if revno == 0:
75
 
            revno = None
 
69
        revision_id = br_from.get_rev_id(revno)
76
70
        
77
71
        self.comm.set_busy(self.window)
78
72
        try:
79
 
            revs = init.branch(location, destination, revno)
 
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()
 
96
            info_dialog(_('Branching successful'),
 
97
                                _('%d revision(s) branched.') % revs)
 
98
            self.comm.refresh_right()
80
99
        except errors.NonExistingSource, errmsg:
81
 
            self.dialog.error_dialog(_('Non existing source'),
 
100
            error_dialog(_('Non existing source'),
82
101
                                     _("The location (%s)\ndoesn't exist.") % errmsg)
83
102
            self.comm.set_busy(self.window, False)
84
103
            return
85
104
        except errors.TargetAlreadyExists, errmsg:
86
 
            self.dialog.error_dialog(_('Target already exists'),
 
105
            error_dialog(_('Target already exists'),
87
106
                                     _('Target directory (%s)\nalready exists. Please select another target.') % errmsg)
88
107
            self.comm.set_busy(self.window, False)
89
108
            return
90
109
        except errors.NonExistingParent, errmsg:
91
 
            self.dialog.error_dialog(_('Non existing parent directory'),
 
110
            error_dialog(_('Non existing parent directory'),
92
111
                                     _("The parent directory (%s)\ndoesn't exist.") % errmsg)
93
112
            self.comm.set_busy(self.window, False)
94
113
            return
95
114
        except errors.NonExistingRevision:
96
 
            self.dialog.error_dialog(_('Non existing revision'),
 
115
            error_dialog(_('Non existing revision'),
97
116
                                     _("The revision you specified doesn't exist."))
98
117
            self.comm.set_busy(self.window, False)
99
118
            return
100
119
        except errors.NotBranchError, errmsg:
101
 
            self.dialog.error_dialog(_('Location is not a branch'),
 
120
            error_dialog(_('Location is not a branch'),
102
121
                                     _('The specified location has to be a branch.'))
103
122
            self.comm.set_busy(self.window, False)
104
123
            return
105
 
        except:
106
 
            raise
107
124
        
108
 
        self.close()
109
 
        self.dialog.info_dialog(_('Branching successful'),
110
 
                                _('%d revision(s) branched.') % revs)
111
 
        self.comm.refresh_right()
112
125
 
113
126
    def close(self, widget=None):
114
127
        self.window.destroy()