/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-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
17
try:
18
    import pygtk
19
    pygtk.require("2.0")
20
except:
21
    pass
22
23
from bzrlib.branch import Branch
24
from bzrlib.config import GlobalConfig
25
import gtk
26
from history import UrlHistory
27
from olive import Preferences
28
import gobject
29
30
class BranchSelectionBox(gtk.HBox):
31
    def __init__(self, path=None):
32
        super(BranchSelectionBox, self).__init__()
33
        self._combo = gtk.ComboBoxEntry()
34
        self._combo.child.connect('focus-out-event', self._on_combo_changed)
35
        
36
        # Build branch history
37
        self._history = UrlHistory(GlobalConfig(), 'branch_history')
38
        self._build_history()
39
40
        self.add(self._combo)
41
42
        gobject.signal_new('branch-changed', BranchSelectionBox, 
43
                           gobject.SIGNAL_RUN_LAST,
44
                           gobject.TYPE_NONE, (gobject.TYPE_OBJECT,))
45
46
    def set_url(self, url):
47
        self._combo.get_child().set_text(url)
48
49
    def get_url(self):
50
        return self._combo.get_child().get_text()
51
52
    def get_branch(self):
53
        return Branch.open(self.get_url())
54
55
    def _build_history(self):
56
        """ Build up the branch history. """
57
        self._combo_model = gtk.ListStore(str)
58
        
59
        for item in self._history.get_entries():
60
            self._combo_model.append([ item ])
61
        
62
        pref = Preferences()
63
        for item in pref.get_bookmarks():
64
            self._combo_model.append([ item ])
65
        
66
        self._combo.set_model(self._combo_model)
67
        self._combo.set_text_column(0)
68
69
    def _on_combo_changed(self, widget, event):
70
        self.emit('branch-changed', widget)
71