~mvo/software-center/purchaseviewspinner2

« back to all changes in this revision

Viewing changes to softwarecenter/ui/gtk3/views/purchaseview.py

  • Committer: Michael Vogt
  • Date: 2011-12-07 17:17:31 UTC
  • Revision ID: michael.vogt@ubuntu.com-20111207171731-kq4wgdgh86d6bjwf
add global spinner

Show diffs side-by-side

added added

removed removed

Lines of Context:
59
59
 
60
60
class ScrolledWebkitWindow(Gtk.VBox):
61
61
 
62
 
    def __init__(self):
 
62
    def __init__(self, include_progress_ui=False):
63
63
        super(ScrolledWebkitWindow, self).__init__()
 
64
        # get webkit
 
65
        self.webkit = LocaleAwareWebView()
 
66
        settings = self.webkit.get_settings()
 
67
        settings.set_property("enable-plugins", False)
 
68
        # add progress UI if needed
 
69
        if include_progress_ui:
 
70
            self._add_progress_ui()
 
71
        # create main webkitview
 
72
        self.scroll = Gtk.ScrolledWindow()
 
73
        self.scroll.set_policy(Gtk.PolicyType.AUTOMATIC, 
 
74
                               Gtk.PolicyType.AUTOMATIC)
 
75
        self.pack_start(self.scroll, True, True, 0)
 
76
        # embed the webkit view in a scrolled window
 
77
        self.scroll.add(self.webkit)
 
78
        self.show_all()
 
79
    def _add_progress_ui(self):
64
80
        # create toolbar box
65
81
        self.header = Gtk.HBox()
66
82
        # add spinner
77
93
        self.frame.set_border_width(3)
78
94
        self.frame.add(self.header)
79
95
        self.pack_start(self.frame, False, False, 6)
80
 
        # create main webkitview
81
 
        self.scroll = Gtk.ScrolledWindow()
82
 
        self.scroll.set_policy(Gtk.PolicyType.AUTOMATIC, 
83
 
                               Gtk.PolicyType.AUTOMATIC)
84
 
        self.pack_start(self.scroll, True, True, 0)
85
 
        # get the webkit
86
 
        self.webkit = LocaleAwareWebView()
 
96
        # connect the webkit stuff
87
97
        self.webkit.connect("notify::uri", self._on_uri_changed)
88
98
        self.webkit.connect("notify::load-status", self._on_load_status_changed)
89
 
        settings = self.webkit.get_settings()
90
 
        settings.set_property("enable-plugins", False)
91
 
        # embed the webkit view in a scrolled window
92
 
        self.scroll.add(self.webkit)
93
 
        self.show_all()
94
99
    def _on_uri_changed(self, view, pspec):
95
100
        prop = pspec.name
96
101
        uri = view.get_property(prop)
169
174
         'purchase-cancelled-by-user' : (GObject.SignalFlags.RUN_LAST,
170
175
                                         None,
171
176
                                         ()),
 
177
         'purchase-needs-spinner' : (GObject.SignalFlags.RUN_LAST,
 
178
                                      None,
 
179
                                     (bool, )),
 
180
                                     
172
181
    }
173
182
 
174
183
    def __init__(self):
230
239
    def _on_create_web_view(self, view, frame):
231
240
        win = Gtk.Window()
232
241
        win.set_size_request(400, 400)
233
 
        wk = ScrolledWebkitWindow()
 
242
        wk = ScrolledWebkitWindow(include_progress_ui=True)
234
243
        wk.webkit.connect("close-web-view", self._on_close_web_view)
235
244
        win.add(wk)
236
245
        win.show_all()
273
282
        prop = view.get_property(property_spec.name)
274
283
        window = self.get_window()
275
284
        if prop == webkit.LoadStatus.PROVISIONAL:
 
285
            self.emit("purchase-needs-spinner", True)
276
286
            if window:
277
287
                window.set_cursor(Gdk.Cursor.new(Gdk.CursorType.WATCH))
278
288
        elif (prop == webkit.LoadStatus.FIRST_VISUALLY_NON_EMPTY_LAYOUT or
 
289
              prop == webkit.LoadStatus.FAILED or
279
290
              prop == webkit.LoadStatus.FINISHED):
 
291
            self.emit("purchase-needs-spinner", False)
280
292
            if window:
281
293
                window.set_cursor(None)
282
294