class RefreshButtonItem(Gtk.ToolItem): def __init__(self): super(RefreshButtonItem, self).__init__() self.__eventbus = LoadingEventBus() self.__lastConnectedRefreshListener = -1 self.layout = Gtk.Box() self.refreshButton = Gtk.Button() self.loadingSpinner = Gtk.Spinner() self.__onStopLoading() self.__eventbus.connect('start-loading', self.__onStartLoading) self.__eventbus.connect('stop-loading', self.__onStopLoading) self.__initUI() def singleConnectRefreshButtonClicked(self, listener): if self.__lastConnectedRefreshListener != -1: self.refreshButton.disconnect(self.__lastConnectedRefreshListener) self.__lastConnectedRefreshListener = self.refreshButton.connect('clicked', listener) return self.__lastConnectedRefreshListener def __onShow(self): self.refreshButton.show() self.loadingSpinner.hide() self.loadingSpinner.stop() def __onStartLoading(self, *args): self.refreshButton.hide() self.loadingSpinner.show() self.loadingSpinner.start() def __onStopLoading(self, *args): self.refreshButton.show() self.loadingSpinner.hide() self.loadingSpinner.stop() def __initUI(self): # button icon = Gtk.Image() icon.set_from_stock(Gtk.STOCK_REFRESH, Gtk.IconSize.LARGE_TOOLBAR) self.refreshButton.set_image(icon) self.refreshButton.set_relief(Gtk.ReliefStyle.NONE) self.layout.pack_start(self.refreshButton, False, True, 0) self.layout.pack_start(self.loadingSpinner, False, True, 10) self.add(self.layout)
def __init__(self): super(RefreshButtonItem, self).__init__() self.__eventbus = LoadingEventBus() self.__lastConnectedRefreshListener = -1 self.layout = Gtk.Box() self.refreshButton = Gtk.Button() self.loadingSpinner = Gtk.Spinner() self.__onStopLoading() self.__eventbus.connect('start-loading', self.__onStartLoading) self.__eventbus.connect('stop-loading', self.__onStopLoading) self.__initUI()