/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
227 by Jelmer Vernooij
Add push item in revision menu, clean up push code.
2
# Copyright (C) 2007 by Jelmer Vernooij <jelmer@samba.org>
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
3
#
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
8
#
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
13
#
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
734.1.4 by Curtis Hovey
Updated commit to gtk3.
18
from gi.repository import GObject
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
19
from gi.repository import Gtk
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
20
21
from errors import show_bzr_error
22
0.11.1 by Jelmer Vernooij
Eliminate olive.backend.errors.
23
import bzrlib.errors as errors
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
24
724 by Jelmer Vernooij
Fix formatting, imports.
25
from bzrlib.plugins.gtk.dialog import (
26
    info_dialog,
27
    question_dialog,
28
    )
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
29
724 by Jelmer Vernooij
Fix formatting, imports.
30
from bzrlib.plugins.gtk.history import UrlHistory
729.1.1 by Jelmer Vernooij
Move i18n support to a separate file, so gettext files aren't loaded unless bzr-gtk is used.
31
from bzrlib.plugins.gtk.i18n import _i18n
32
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
33
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
34
class PushDialog(Gtk.Dialog):
729.1.1 by Jelmer Vernooij
Move i18n support to a separate file, so gettext files aren't loaded unless bzr-gtk is used.
35
    """New implementation of the Push dialog."""
724 by Jelmer Vernooij
Fix formatting, imports.
36
227 by Jelmer Vernooij
Add push item in revision menu, clean up push code.
37
    def __init__(self, repository, revid, branch=None, parent=None):
729.1.1 by Jelmer Vernooij
Move i18n support to a separate file, so gettext files aren't loaded unless bzr-gtk is used.
38
        """Initialize the Push dialog. """
734.1.51 by Curtis Hovey
Fix the initializer for many classes.
39
        super(PushDialog, self).__init__(
40
            title="Push", parent=parent, flags=0,
41
            buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
724 by Jelmer Vernooij
Fix formatting, imports.
42
734.1.14 by Curtis Hovey
Updated gpush to gtk3.
43
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
44
        # Get arguments
227 by Jelmer Vernooij
Add push item in revision menu, clean up push code.
45
        self.repository = repository
46
        self.revid = revid
0.13.13 by Jelmer Vernooij
Update TODO
47
        self.branch = branch
724 by Jelmer Vernooij
Fix formatting, imports.
48
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
49
        # Create the widgets
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
50
        self._label_location = Gtk.Label(label=_i18n("Location:"))
734.1.14 by Curtis Hovey
Updated gpush to gtk3.
51
        self._combo = Gtk.ComboBox.new_with_entry()
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
52
        self._button_push = Gtk.Button(_i18n("_Push"), use_underline=True)
53
        self._hbox_location = Gtk.HBox()
724 by Jelmer Vernooij
Fix formatting, imports.
54
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
55
        # Set callbacks
56
        self._button_push.connect('clicked', self._on_push_clicked)
724 by Jelmer Vernooij
Fix formatting, imports.
57
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
58
        # Set properties
59
        self._label_location.set_alignment(0, 0.5)
60
        self._hbox_location.set_spacing(3)
734.1.14 by Curtis Hovey
Updated gpush to gtk3.
61
        self.get_content_area().set_spacing(3)
724 by Jelmer Vernooij
Fix formatting, imports.
62
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
63
        # Pack widgets
734.1.14 by Curtis Hovey
Updated gpush to gtk3.
64
        self._hbox_location.pack_start(
65
            self._label_location, False, False, 0)
66
        self._hbox_location.pack_start(self._combo, True, True, 0)
67
        self.get_content_area().pack_start(self._hbox_location, True, True, 0)
68
        # XXX sinzui 2011-08-12: maybe False, False, 0
69
        self.get_action_area().pack_end(self._button_push, True, True, 0)
724 by Jelmer Vernooij
Fix formatting, imports.
70
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
71
        # Show the dialog
734.1.14 by Curtis Hovey
Updated gpush to gtk3.
72
        self.get_content_area().show_all()
724 by Jelmer Vernooij
Fix formatting, imports.
73
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
74
        # Build location history
154 by Jelmer Vernooij
Add trivial generic class for storing URL history.
75
        self._history = UrlHistory(self.branch.get_config(), 'push_history')
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
76
        self._build_history()
724 by Jelmer Vernooij
Fix formatting, imports.
77
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
78
    def _build_history(self):
729.1.1 by Jelmer Vernooij
Move i18n support to a separate file, so gettext files aren't loaded unless bzr-gtk is used.
79
        """Build up the location history. """
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
80
        self._combo_model = Gtk.ListStore(str)
154 by Jelmer Vernooij
Add trivial generic class for storing URL history.
81
        for item in self._history.get_entries():
82
            self._combo_model.append([ item ])
83
        self._combo.set_model(self._combo_model)
734.1.14 by Curtis Hovey
Updated gpush to gtk3.
84
        self._combo.set_entry_text_column(0)
724 by Jelmer Vernooij
Fix formatting, imports.
85
227 by Jelmer Vernooij
Add push item in revision menu, clean up push code.
86
        if self.branch is not None:
87
            location = self.branch.get_push_location()
88
            if location is not None:
89
                self._combo.get_child().set_text(location)
724 by Jelmer Vernooij
Fix formatting, imports.
90
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
91
    @show_bzr_error
92
    def _on_push_clicked(self, widget):
729.1.1 by Jelmer Vernooij
Move i18n support to a separate file, so gettext files aren't loaded unless bzr-gtk is used.
93
        """Push button clicked handler. """
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
94
        location = self._combo.get_child().get_text()
95
        revs = 0
724 by Jelmer Vernooij
Fix formatting, imports.
96
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
97
        try:
228 by Jelmer Vernooij
Remove unused code, prefer questions to check boxes.
98
            revs = do_push(self.branch, location=location, overwrite=False)
126.1.19 by Szilveszter Farkas (Phanatic)
Refactored the Push dialog. Add 'gpush' command.
99
        except errors.DivergedBranches:
475.1.2 by Vincent Ladeuil
Fix bug #187283 fix replacing _() by _i18n().
100
            response = question_dialog(_i18n('Branches have been diverged'),
101
                                       _i18n('You cannot push if branches have diverged.\nOverwrite?'))
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
102
            if response == Gtk.ResponseType.YES:
228 by Jelmer Vernooij
Remove unused code, prefer questions to check boxes.
103
                revs = do_push(self.branch, location=location, overwrite=True)
724 by Jelmer Vernooij
Fix formatting, imports.
104
562 by Jasper Groenewegen
Merge removal of question to set default push location
105
        if self.branch is not None and self.branch.get_push_location() is None:
106
            self.branch.set_push_location(location)
724 by Jelmer Vernooij
Fix formatting, imports.
107
154 by Jelmer Vernooij
Add trivial generic class for storing URL history.
108
        self._history.add_entry(location)
475.1.2 by Vincent Ladeuil
Fix bug #187283 fix replacing _() by _i18n().
109
        info_dialog(_i18n('Push successful'),
110
                    _i18n("%d revision(s) pushed.") % revs)
724 by Jelmer Vernooij
Fix formatting, imports.
111
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
112
        self.response(Gtk.ResponseType.OK)
0.11.9 by Jelmer Vernooij
Remove last few bits from backend and integrate them where necessary.
113
724 by Jelmer Vernooij
Fix formatting, imports.
114
228 by Jelmer Vernooij
Remove unused code, prefer questions to check boxes.
115
def do_push(br_from, location, overwrite):
729.1.1 by Jelmer Vernooij
Move i18n support to a separate file, so gettext files aren't loaded unless bzr-gtk is used.
116
    """Update a mirror of a branch.
724 by Jelmer Vernooij
Fix formatting, imports.
117
228 by Jelmer Vernooij
Remove unused code, prefer questions to check boxes.
118
    :param br_from: the source branch
0.11.9 by Jelmer Vernooij
Remove last few bits from backend and integrate them where necessary.
119
    :param location: the location of the branch that you'd like to update
120
    :param overwrite: overwrite target location if it diverged
121
    :return: number of revisions pushed
122
    """
0.8.85 by Szilveszter Farkas (Phanatic)
Fix Push functionality.
123
    from bzrlib.bzrdir import BzrDir
0.11.9 by Jelmer Vernooij
Remove last few bits from backend and integrate them where necessary.
124
    from bzrlib.transport import get_transport
724 by Jelmer Vernooij
Fix formatting, imports.
125
0.11.9 by Jelmer Vernooij
Remove last few bits from backend and integrate them where necessary.
126
    transport = get_transport(location)
127
    location_url = transport.base
128
129
    old_rh = []
130
131
    try:
0.8.85 by Szilveszter Farkas (Phanatic)
Fix Push functionality.
132
        dir_to = BzrDir.open(location_url)
0.11.9 by Jelmer Vernooij
Remove last few bits from backend and integrate them where necessary.
133
        br_to = dir_to.open_branch()
0.8.85 by Szilveszter Farkas (Phanatic)
Fix Push functionality.
134
    except errors.NotBranchError:
0.11.9 by Jelmer Vernooij
Remove last few bits from backend and integrate them where necessary.
135
        # create a branch.
136
        transport = transport.clone('..')
228 by Jelmer Vernooij
Remove unused code, prefer questions to check boxes.
137
        try:
138
            relurl = transport.relpath(location_url)
139
            transport.mkdir(relurl)
140
        except errors.NoSuchFile:
475.1.2 by Vincent Ladeuil
Fix bug #187283 fix replacing _() by _i18n().
141
            response = question_dialog(_i18n('Non existing parent directory'),
142
                         _i18n("The parent directory (%s)\ndoesn't exist. Create?") % location)
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
143
            if response == Gtk.ResponseType.OK:
629 by Jelmer Vernooij
Use new transport.create_prefix.
144
                transport.create_prefix()
228 by Jelmer Vernooij
Remove unused code, prefer questions to check boxes.
145
            else:
0.8.85 by Szilveszter Farkas (Phanatic)
Fix Push functionality.
146
                return
0.11.9 by Jelmer Vernooij
Remove last few bits from backend and integrate them where necessary.
147
        dir_to = br_from.bzrdir.clone(location_url,
148
            revision_id=br_from.last_revision())
149
        br_to = dir_to.open_branch()
150
        count = len(br_to.revision_history())
151
    else:
152
        old_rh = br_to.revision_history()
153
        try:
0.13.13 by Jelmer Vernooij
Update TODO
154
            tree_to = dir_to.open_workingtree()
155
        except errors.NotLocalUrl:
156
            # FIXME - what to do here? how should we warn the user?
157
            count = br_to.pull(br_from, overwrite)
158
        except errors.NoWorkingTree:
159
            count = br_to.pull(br_from, overwrite)
160
        else:
161
            count = tree_to.pull(br_from, overwrite)
162
0.11.9 by Jelmer Vernooij
Remove last few bits from backend and integrate them where necessary.
163
    return count