~gustav-hartvigsson/bzr-gtk/fix-viz

271 by Jelmer Vernooij
Add common widget for selecting branches.
1
# Copyright (C) 2007 by Jelmer Vernooij <jelmer@samba.org>
2
#
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.
7
#
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.
12
#
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
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
17
from gi.repository import Gtk
18
from gi.repository import GObject
724 by Jelmer Vernooij
Fix formatting, imports.
19
271 by Jelmer Vernooij
Add common widget for selecting branches.
20
from bzrlib.branch import Branch
21
from bzrlib.config import GlobalConfig
724 by Jelmer Vernooij
Fix formatting, imports.
22
23
from bzrlib.plugins.gtk.history import UrlHistory
271 by Jelmer Vernooij
Add common widget for selecting branches.
24
734.1.51 by Curtis Hovey
Fix the initializer for many classes.
25
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
26
class BranchSelectionBox(Gtk.HBox):
724 by Jelmer Vernooij
Fix formatting, imports.
27
271 by Jelmer Vernooij
Add common widget for selecting branches.
28
    def __init__(self, path=None):
734.1.51 by Curtis Hovey
Fix the initializer for many classes.
29
        super(BranchSelectionBox, self).__init__()
734.1.15 by Curtis Hovey
Updated ComboBoxEntry -> Gtk.ComboBox.new_with_entry.
30
        self._combo = Gtk.ComboBox.new_with_entry()
734.1.51 by Curtis Hovey
Fix the initializer for many classes.
31
        self._combo.get_child().connect(
32
            'focus-out-event', self._on_combo_changed)
724 by Jelmer Vernooij
Fix formatting, imports.
33
271 by Jelmer Vernooij
Add common widget for selecting branches.
34
        # Build branch history
35
        self._history = UrlHistory(GlobalConfig(), 'branch_history')
36
        self._build_history()
37
38
        self.add(self._combo)
39
449.1.1 by Jelmer Vernooij
Fix support for default value in BranchSelectionDialog.
40
        if path is not None:
41
            self.set_url(path)
42
271 by Jelmer Vernooij
Add common widget for selecting branches.
43
    def set_url(self, url):
44
        self._combo.get_child().set_text(url)
45
46
    def get_url(self):
47
        return self._combo.get_child().get_text()
48
49
    def get_branch(self):
50
        return Branch.open(self.get_url())
51
52
    def _build_history(self):
53
        """ Build up the branch history. """
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
54
        self._combo_model = Gtk.ListStore(str)
724 by Jelmer Vernooij
Fix formatting, imports.
55
271 by Jelmer Vernooij
Add common widget for selecting branches.
56
        for item in self._history.get_entries():
57
            self._combo_model.append([ item ])
724 by Jelmer Vernooij
Fix formatting, imports.
58
271 by Jelmer Vernooij
Add common widget for selecting branches.
59
        self._combo.set_model(self._combo_model)
734.1.15 by Curtis Hovey
Updated ComboBoxEntry -> Gtk.ComboBox.new_with_entry.
60
        self._combo.set_entry_text_column(0)
271 by Jelmer Vernooij
Add common widget for selecting branches.
61
62
    def _on_combo_changed(self, widget, event):
63
        self.emit('branch-changed', widget)
625.9.1 by Markus Korn
* register BranchSelectionBox() as a gobject type to fix (LP: #294396)
64
734.1.51 by Curtis Hovey
Fix the initializer for many classes.
65
734.1.1 by Curtis Hovey
Mechanical changes made by pygi.convert.sh.
66
GObject.signal_new('branch-changed', BranchSelectionBox,
67
                   GObject.SignalFlags.RUN_LAST,
68
                   None, (GObject.TYPE_OBJECT,))
69
GObject.type_register(BranchSelectionBox)