def initialize_applet(self): # Set flags and GUI elements self.initializing = True self.log('Initializing', '...') self.icon = 'updating' self.tooltip = 'Initializing...' # Call applet's initialize method self.initialize_id = id() try: self.appletting = True self.success = self.initialize() except: self.success = None self.initialize_id = 0 self.debug() finally: self.appletting = False # Determine success if self.success: self.initialized = True self.log('Initialization', 'DONE') self.update_id = id() thread(self.run, self.update_id) else: self.log('Initialization', 'ERROR') self.icon = 'error' self.context = [] threadTimeout(self.interval, self.run) self.tooltip = None # Final self.initializing = False
def run(self, update_id=None): if not self.running: return elif not self.enabled: threadTimeout(self.interval, self.run) elif not self.initialized and not self.initializing: self.initialize_applet() elif not self.updating and update_id == self.update_id: self.update_applet()
def update_applet(self): # Set flags and GUI elements self.updating = True self.log('Updating', '...') self.icon = 'updating' self.tooltip = 'Updating...' # Call applet's update method self.update_id = id() try: self.appletting = True self.success = self.update() except: self.success = None self.update_id = 0 self.debug() finally: self.appletting = False # Determine success if self.success == True: self.log('Update', 'NEW') self.icon = 'new' elif self.success == False: self.log('Update', 'OLD') self.icon = 'idle' else: self.log('Update', 'ERROR') self.icon = 'error' self.tooltip = None self.context = [] # Add next update interval self.update_id = id() threadTimeout(self.interval, self.run, self.update_id) # Final self.updating = False if self.success and self.settings['notify']: self.notify_applet()