class JenkinsApplet(object): """ Main GUI class that generates the applet widgets. """ def __init__(self, applet): # May decide to make these configurable in the future: self.refreshIntervalMS = 1000 self.showServerInfo = True self.preferences = JenkinsPreferences(applet) self.applet = applet self.hbox = None self.poller = JenkinsPoller(self.preferences) self.serverWidget = None self.jobWidgets = [] self.hbox = None def setupWidgets(self): """ Create widgets and start the poller """ self.poller.start() self.hbox = gtk.HBox() if self.showServerInfo: self.server = JenkinsServer(self.applet, self.preferences, self.poller, IMAGE_DIR) self.hbox.pack_start(self.server.widget) self.applet.add(self.hbox) self.refresh() gobject.timeout_add(self.refreshIntervalMS, self.refresh) def refresh(self): """ Refresh the entire applet using the latest polled info """ # Currently destroying the hbox and recreating all the widgets every time, # probably not the most efficient way... # _jobs = [JenkinsJob(jobDict, self.preferences, self.applet) for jobDict in self.poller.jobs] self.updateJobs() if self.server: self.server.refresh() for job in self.jobWidgets: job.refresh() # self.applet.show_all() return True def updateJobs(self): names = [job.name for job in self.jobWidgets] for jobDict in self.poller.jobs: if "name" in jobDict and jobDict["name"] not in names: job = JenkinsJob(jobDict["name"], self.poller, self.preferences, self.applet) print "adding", job self.jobWidgets.append(job) self.hbox.pack_start(job.createWidgets())
def __init__(self, applet): # May decide to make these configurable in the future: self.refreshIntervalMS = 1000 self.showServerInfo = True self.preferences = JenkinsPreferences(applet) self.applet = applet self.hbox = None self.poller = JenkinsPoller(self.preferences) self.serverWidget = None self.jobWidgets = [] self.hbox = None