/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 ui.py

Add options to viz treeview to not show the line graph, and to only show the main line.
Set the revision browser to use these options.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import gtk
23
23
import sys
24
24
 
25
 
from bzrlib import progress
 
25
import bzrlib.progress
26
26
from bzrlib.ui import UIFactory
27
27
 
28
28
 
40
40
                         gtk.RESPONSE_NO)
41
41
 
42
42
 
43
 
class GtkProgressBar(gtk.ProgressBar,progress._BaseProgressBar):
44
 
    def __init__(self, _stack=None):
45
 
        gtk.ProgressBar.__init__(self)
 
43
class GtkProgressBar(gtk.ProgressBar):
 
44
    def __init__(self, stack):
 
45
        super(GtkProgressBar, self).__init__()
46
46
        self.set_fraction(0.0)
47
 
        progress._BaseProgressBar.__init__(self, _stack=_stack)
48
 
        self.current = None
49
 
        self.total = None
 
47
        self._stack = stack
 
48
 
 
49
    def finished(self):
 
50
        self._stack.remove(self)
50
51
 
51
52
    def clear(self):
52
 
        self.hide()
 
53
        pass
53
54
 
54
55
    def tick(self):
55
56
        self.pulse()
56
57
 
57
 
    def child_update(self, message, current, total):
58
 
        pass
59
 
 
60
 
    def update(self, msg=None, current_cnt=None, total_cnt=None):
61
 
        if current_cnt:
62
 
            self.current = current_cnt
63
 
        if total_cnt:
64
 
            self.total = total_cnt
 
58
    def update(self, msg=None, current=None, total=None):
65
59
        if msg is not None:
66
60
            self.set_text(msg)
67
 
        if None not in (self.current, self.total):
68
 
            self.fraction = float(self.current) / self.total
69
 
            self.set_fraction(self.fraction)
 
61
        self.set_fraction(1.0 * current / total)
70
62
        while gtk.events_pending():
71
63
            gtk.main_iteration()
72
64
 
73
65
 
74
 
class ProgressBarWindow(gtk.Window):
 
66
class GtkProgressBarStack(gtk.Window):
75
67
    def __init__(self):
76
 
        super(ProgressBarWindow, self).__init__(type=gtk.WINDOW_TOPLEVEL)
 
68
        super(GtkProgressBarStack, self).__init__(type=gtk.WINDOW_TOPLEVEL)
77
69
        self.set_border_width(0)
78
70
        self.set_title("Progress")
79
71
        self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
80
 
        self.pb = GtkProgressBar(self)
81
 
        self.add(self.pb)
82
 
        self.resize(250, 15)
 
72
        self.vbox = gtk.VBox()
 
73
        self.add(self.vbox)
83
74
        self.set_resizable(False)
84
 
        self.show_all()
85
 
 
86
 
    def clear(self):
87
 
        self.pb.clear()
88
 
        self.destroy()
89
 
 
90
 
 
91
 
class ProgressPanel(gtk.HBox):
92
 
    def __init__(self):
93
 
        super(ProgressPanel, self).__init__()
94
 
        image_loading = gtk.image_new_from_stock(gtk.STOCK_REFRESH,
95
 
                                                 gtk.ICON_SIZE_BUTTON)
96
 
        image_loading.show()
97
 
        
98
 
        self.pb = GtkProgressBar(self)
99
 
        self.set_spacing(5)
100
 
        self.set_border_width(5)        
101
 
        self.pack_start(image_loading, False, False)
102
 
        self.pack_start(self.pb, True, True)
103
 
 
104
 
    def return_pb(self, pb):
105
 
        self._stack.return_pb(self)
106
 
 
107
 
    def get_progress_bar(self, to_file=None, show_pct=None, show_spinner=None, show_eta=None, 
108
 
                         show_bar=None, show_count=None, to_messages_file=None, 
109
 
                         _stack=None):
110
 
        self._stack = _stack
111
 
        self.show_all()
112
 
        return self
113
 
    
114
 
    def update(self, *args, **kwargs):
115
 
        self.pb.update(*args, **kwargs)
116
 
 
117
 
    def finished(self):
118
 
        self.pb.finished()
119
 
        self.hide_all()
120
 
 
121
 
    def clear(self):
122
 
        self.pb.clear()
123
 
        self.hide_all()
124
 
 
125
 
    def child_progress(self, *args, **kwargs):
126
 
        return self.pb.child_progress(*args, **kwargs)
127
 
 
128
 
    def child_update(self, *args, **kwargs):
129
 
        return self.pb.child_update(*args, **kwargs)
130
 
 
 
75
 
 
76
    def _adapt_size(self):
 
77
        self.resize(250, 15 * len(self.vbox.get_children()))
 
78
 
 
79
    def get_nested(self):
 
80
        nested = GtkProgressBar(self)
 
81
        self.vbox.pack_start(nested)
 
82
        self._adapt_size()
 
83
        self.show_all()
 
84
        return nested
 
85
 
 
86
    def remove(self, pb):
 
87
        self.vbox.remove(pb)
131
88
 
132
89
 
133
90
class PasswordDialog(gtk.Dialog):
162
119
 
163
120
        """
164
121
        super(GtkUIFactory, self).__init__()
165
 
        self.set_nested_progress_bar_widget(ProgressBarWindow)
 
122
        self._progress_bar_stack = None
166
123
 
167
124
    def get_boolean(self, prompt):
168
125
        """GtkDialog with yes/no answers"""
190
147
        else:
191
148
            return None
192
149
 
193
 
    def set_nested_progress_bar_widget(self, widget):
194
 
        self._progress_bar_stack = progress.ProgressBarStack(klass=widget)
195
 
 
196
150
    def nested_progress_bar(self):
197
151
        """Return a nested progress bar.
198
152
        """
 
153
        if self._progress_bar_stack is None:
 
154
            self._progress_bar_stack = GtkProgressBarStack()
199
155
        return self._progress_bar_stack.get_nested()
200
156
 
201
157
    def set_progress_bar_vbox(self, vbox):