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

  • Committer: Szilveszter Farkas (Phanatic)
  • Date: 2006-08-20 13:02:35 UTC
  • mto: (0.14.1 main) (93.1.1 win32.bialix)
  • mto: This revision was merged to the branch mainline in revision 83.
  • Revision ID: Szilveszter.Farkas@gmail.com-20060820130235-62c9c5753f5d8774
Gettext support added.

2006-08-20  Szilveszter Farkas <Szilveszter.Farkas@gmail.com>

    * po/hu.po: added Hungarian traslation
    * Added gettext support to all files.
    * genpot.sh: added olive-gtk.pot generator script

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2006 Szilveszter Farkas <szilveszter.farkas@gmail.com>
2
 
# Copyright (C) 2007 Jelmer Vernooij <jelmer@samba.org>
3
2
 
4
3
# This program is free software; you can redistribute it and/or modify
5
4
# it under the terms of the GNU General Public License as published by
22
21
import gtk
23
22
import sys
24
23
 
25
 
from bzrlib import progress
 
24
import bzrlib.progress
 
25
from bzrlib.symbol_versioning import (deprecated_method, 
 
26
        zero_eight)
26
27
from bzrlib.ui import UIFactory
27
28
 
28
29
 
36
37
        
37
38
        self.vbox.show_all()
38
39
 
39
 
        self.add_buttons(gtk.STOCK_YES, gtk.RESPONSE_YES, gtk.STOCK_NO, 
40
 
                         gtk.RESPONSE_NO)
41
 
 
42
 
 
43
 
class GtkProgressBar(gtk.ProgressBar,progress._BaseProgressBar):
44
 
    def __init__(self, _stack=None):
45
 
        gtk.ProgressBar.__init__(self)
46
 
        self.set_fraction(0.0)
47
 
        progress._BaseProgressBar.__init__(self, _stack=_stack)
48
 
        self.current = None
49
 
        self.total = None
50
 
 
51
 
    def clear(self):
52
 
        self.hide()
53
 
 
54
 
    def tick(self):
55
 
        self.pulse()
56
 
 
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 is not None:
62
 
            self.current = current_cnt
63
 
        if total_cnt is not None:
64
 
            self.total = total_cnt
65
 
        if msg is not None:
66
 
            self.set_text(msg)
67
 
        if None not in (self.current, self.total):
68
 
            self.fraction = float(self.current) / self.total
69
 
            if self.fraction < 0.0 or self.fraction > 1.0:
70
 
                raise AssertionError
71
 
            self.set_fraction(self.fraction)
72
 
        while gtk.events_pending():
73
 
            gtk.main_iteration()
74
 
 
75
 
 
76
 
class ProgressBarWindow(gtk.Window):
77
 
    def __init__(self, to_file=None, show_pct=None, show_spinner=None, show_eta=None, 
78
 
                 show_bar=None, show_count=None, to_messages_file=None, _stack=None):
79
 
        super(ProgressBarWindow, self).__init__(type=gtk.WINDOW_TOPLEVEL)
80
 
        self._stack = _stack
81
 
        self.set_border_width(0)
82
 
        self.set_title("Progress")
83
 
        self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
84
 
        self.pb = GtkProgressBar(self)
85
 
        self.add(self.pb)
86
 
        self.resize(250, 15)
87
 
        self.set_resizable(False)
88
 
        self.show_all()
89
 
 
90
 
    def return_pb(self, pb):
91
 
        self._stack.return_pb(self)
92
 
    
93
 
    def update(self, *args, **kwargs):
94
 
        self.pb.update(*args, **kwargs)
95
 
 
96
 
    def tick(self, *args, **kwargs):
97
 
        self.pb.tick(*args, **kwargs)
98
 
 
99
 
    def finished(self):
100
 
        self.pb.finished()
101
 
        self.hide_all()
102
 
 
103
 
    def clear(self):
104
 
        self.pb.clear()
105
 
        self.destroy()
106
 
 
107
 
    def child_progress(self, *args, **kwargs):
108
 
        return self.pb.child_progress(*args, **kwargs)
109
 
 
110
 
    def child_update(self, *args, **kwargs):
111
 
        return self.pb.child_update(*args, **kwargs)
112
 
 
113
 
    def get_progress_bar(self):
114
 
        self.show_all()
115
 
        return self
116
 
 
117
 
 
118
 
class ProgressPanel(gtk.HBox):
119
 
    def __init__(self):
120
 
        super(ProgressPanel, self).__init__()
121
 
        image_loading = gtk.image_new_from_stock(gtk.STOCK_REFRESH,
122
 
                                                 gtk.ICON_SIZE_BUTTON)
123
 
        image_loading.show()
124
 
        
125
 
        self.pb = GtkProgressBar(self)
126
 
        self.set_spacing(5)
127
 
        self.set_border_width(5)        
128
 
        self.pack_start(image_loading, False, False)
129
 
        self.pack_start(self.pb, True, True)
130
 
 
131
 
    def return_pb(self, pb):
132
 
        self._stack.return_pb(self)
133
 
 
134
 
    def get_progress_bar(self, to_file=None, show_pct=None, show_spinner=None, show_eta=None, 
135
 
                         show_bar=None, show_count=None, to_messages_file=None, 
136
 
                         _stack=None):
137
 
        self._stack = _stack
138
 
        self.show_all()
139
 
        return self
140
 
 
141
 
    def tick(self, *args, **kwargs):
142
 
        self.pb.tick(*args, **kwargs)
143
 
    
144
 
    def update(self, *args, **kwargs):
145
 
        self.pb.update(*args, **kwargs)
146
 
 
147
 
    def finished(self):
148
 
        self.pb.finished()
149
 
        self.hide_all()
150
 
 
151
 
    def clear(self):
152
 
        self.pb.clear()
153
 
        self.hide_all()
154
 
 
155
 
    def child_progress(self, *args, **kwargs):
156
 
        return self.pb.child_progress(*args, **kwargs)
157
 
 
158
 
    def child_update(self, *args, **kwargs):
159
 
        return self.pb.child_update(*args, **kwargs)
160
 
 
 
40
        self.add_buttons(gtk.STOCK_YES, gtk.RESPONSE_YES, gtk.STOCK_NO, gtk.RESPONSE_NO)
161
41
 
162
42
 
163
43
class PasswordDialog(gtk.Dialog):
183
63
 
184
64
 
185
65
class GtkUIFactory(UIFactory):
186
 
    """A UI factory for GTK user interfaces."""
 
66
    """A UI factory for GTK user interefaces."""
187
67
 
188
68
    def __init__(self,
 
69
                 bar_type=None,
189
70
                 stdout=None,
190
71
                 stderr=None):
191
72
        """Create a GtkUIFactory.
192
73
 
 
74
        :param bar_type: The type of progress bar to create. It defaults to 
 
75
                         letting the bzrlib.progress.ProgressBar factory auto
 
76
                         select.
193
77
        """
194
78
        super(GtkUIFactory, self).__init__()
195
 
        self.set_nested_progress_bar_widget(ProgressBarWindow)
 
79
        self._bar_type = bar_type
 
80
        if stdout is None:
 
81
            self.stdout = sys.stdout
 
82
        else:
 
83
            self.stdout = stdout
 
84
        if stderr is None:
 
85
            self.stderr = sys.stderr
 
86
        else:
 
87
            self.stderr = stderr
196
88
 
197
89
    def get_boolean(self, prompt):
198
90
        """GtkDialog with yes/no answers"""
199
91
        dialog = PromptDialog(prompt)
200
92
        response = dialog.run()
201
93
        dialog.destroy()
202
 
        return (response == gtk.RESPONSE_YES)
 
94
        if response == gtk.RESPONSE_YES:
 
95
            return True
 
96
        else:
 
97
            return False
203
98
        
 
99
    @deprecated_method(zero_eight)
 
100
    def progress_bar(self):
 
101
        """See UIFactory.nested_progress_bar()."""
 
102
        # this in turn is abstract, and creates either a tty or dots
 
103
        # bar depending on what we think of the terminal
 
104
        return bzrlib.progress.ProgressBar()
 
105
 
204
106
    def get_password(self, prompt='', **kwargs):
205
107
        """Prompt the user for a password.
206
108
 
220
122
        else:
221
123
            return None
222
124
 
223
 
    def set_nested_progress_bar_widget(self, widget):
224
 
        self._progress_bar_stack = progress.ProgressBarStack(klass=widget)
225
 
 
226
125
    def nested_progress_bar(self):
227
126
        """Return a nested progress bar.
 
127
        
 
128
        The actual bar type returned depends on the progress module which
 
129
        may return a tty or dots bar depending on the terminal.
 
130
        
 
131
        FIXME: It should return a GtkProgressBar actually.
228
132
        """
 
133
        if self._progress_bar_stack is None:
 
134
            self._progress_bar_stack = bzrlib.progress.ProgressBarStack(
 
135
                klass=self._bar_type)
229
136
        return self._progress_bar_stack.get_nested()
230
137
 
231
 
    def set_progress_bar_vbox(self, vbox):
232
 
        """Change the vbox to put progress bars in.
233
 
        """
234
 
        self._progress_bar_stack = vbox
235
 
 
236
138
    def clear_term(self):
237
139
        """Prepare the terminal for output.
238
140