Save As - add busy cursor methods

Add methods for use by activity for showing and removing a busy cursor.
This commit is contained in:
James Cameron 2017-06-01 13:19:09 +10:00
parent 6bcd664289
commit 3a574ae778

View File

@ -448,6 +448,7 @@ class Activity(Window, Gtk.Container):
bundle = get_bundle_instance(get_bundle_path()) bundle = get_bundle_instance(get_bundle_path())
self.set_icon_from_file(bundle.get_icon()) self.set_icon_from_file(bundle.get_icon())
self._busy_count = 0
self._stop_buttons = [] self._stop_buttons = []
def add_stop_button(self, button): def add_stop_button(self, button):
@ -1197,6 +1198,42 @@ class Activity(Window, Gtk.Container):
def get_document_path(self, async_cb, async_err_cb): def get_document_path(self, async_cb, async_err_cb):
async_err_cb(NotImplementedError()) async_err_cb(NotImplementedError())
def busy(self):
'''
Show that the activity is busy. If used, must be called once
before a lengthy operation, and unbusy must be called after
the operation completes.
.. code-block:: python
self.busy()
self.long_operation()
self.unbusy()
'''
if self._busy_count == 0:
self._old_cursor = self.get_window().get_cursor()
self._set_cursor(Gdk.Cursor.new(Gdk.CursorType.WATCH))
self._busy_count += 1
def unbusy(self):
'''
Returns:
int: a count of further calls to unbusy expected
Show that the activity is not busy. An equal number of calls
to unbusy are required to balance the calls to busy.
'''
self._busy_count -= 1
if self._busy_count == 0:
self._set_cursor(self._old_cursor)
return self._busy_count
def _set_cursor(self, cursor):
self.get_window().set_cursor(cursor)
Gdk.flush()
class _ClientHandler(dbus.service.Object, DBusProperties): class _ClientHandler(dbus.service.Object, DBusProperties):
def __init__(self, bundle_id, got_channel_cb): def __init__(self, bundle_id, got_channel_cb):