def __init__(self): self.current_entry = CurrentEntry(5) self.current_entry.attach(self) self.data = self.current_entry.data self.ind = appindicator.Indicator("minutedock-ubuntu", "indicator-messages", appindicator.CATEGORY_APPLICATION_STATUS) self.ind.set_status(appindicator.STATUS_ACTIVE) self.ind.set_attention_icon("indicator-messages-new") self.ind.set_icon_theme_path(os.path.realpath('.')) self.ind.set_icon("minutedock") # create a menu self.menu = gtk.Menu() self.ind.set_menu(self.menu) self.update(self.data)
class MinutedockUbuntu: def __init__(self): self.current_entry = CurrentEntry(5) self.current_entry.attach(self) self.data = self.current_entry.data self.ind = appindicator.Indicator("minutedock-ubuntu", "indicator-messages", appindicator.CATEGORY_APPLICATION_STATUS) self.ind.set_status(appindicator.STATUS_ACTIVE) self.ind.set_attention_icon("indicator-messages-new") self.ind.set_icon_theme_path(os.path.realpath('.')) self.ind.set_icon("minutedock") # create a menu self.menu = gtk.Menu() self.ind.set_menu(self.menu) self.update(self.data) @classmethod def __get_time_from_data(cls, data): timer = timedelta(seconds=int(data['duration'])) hours = timer.seconds / 60 / 60 minutes = (timer.seconds / 60) % 60 return "%02d:%02d" % (hours, minutes) def update(self, data): self.data = data time_str = self.__get_time_from_data(self.data) self.ind.set_label(time_str) self.update_menu(time_str) # TODO get data directly from self def update_menu(self, clock_status): self.menu.hide() for i in self.menu.get_children(): self.menu.remove(i) # create items for the menu - labels, checkboxes, radio buttons and images are supported: # KDE doesn't support app indicator, so the label is created as a disabled # menu item desktoptype = os.environ.get('DESKTOP_SESSION') if 'kde' in desktoptype: item = gtk.MenuItem("MinuteDock: %s" % (clock_status,)) item.set_sensitive(False) item.show() self.menu.append(item) if self.data['timer_active']: item = gtk.MenuItem("Pause") item.show() self.menu.append(item) else: item = gtk.MenuItem("Start") item.show() self.menu.append(item) # TODO get data directly from self item.connect("activate", self.toggle_timer, self.data['timer_active']) item = gtk.MenuItem("Log") item.show() self.menu.append(item) item.connect("activate", self.log) image = gtk.ImageMenuItem(gtk.STOCK_QUIT) image.connect("activate", self.quit) image.show() self.menu.append(image) self.menu.show() def quit(self, widget, data=None): gtk.main_quit() def toggle_timer(self, widget, timer_active): if timer_active: self.current_entry.pause_timer() else: self.current_entry.start_timer() def log(self, widget, data=None): self.current_entry.log()