class TrayApp: def get_default_config(self): config = ConfigParser.RawConfigParser() config.add_section('GUI') config.set('GUI', 'CardWindowY', '15') config.set('GUI', 'CardWindowY', '15') config.add_section('Learning') config.set('Learning', 'SlideTimeout', '10') config.set('Learning', 'SlideInterval', '40') config.set('Learning', 'FlipSides', 'false') config.set('Learning', 'DefaultDB', 'french.jml') return config def __init__(self): self.config = ConfigParser.RawConfigParser() try: self.config.readfp(open('memocard.cfg')) except: self.config = self.get_default_config() self.flip = self.config.getboolean('Learning', 'FlipSides') self.icon = TrayIcon() self.icon.connect('activate', self.slide_show_cb) # Build menu menu = gtk.Menu() self.topMenu = menu menuItem = gtk.MenuItem('Start/Stop slide show') menuItem.connect('activate', self.slide_show_cb) self.slide_show_mode = False menu.append(menuItem) menuItem = gtk.CheckMenuItem('Flip cards') menuItem.connect('activate', self.flip_cb) menu.append(menuItem) menuItem = gtk.ImageMenuItem(gtk.STOCK_QUIT) menuItem.connect('activate', self.quit_cb, self.icon) menu.append(menuItem) self.icon.connect('popup-menu', self.popup_menu_cb, menu) self.icon.show() # Init cards database self.db = jmemorize_db.jMemorizeDB() self.db.open_db(self.config.get('Learning', 'DefaultDB')) # Add Filter menu Item if backend provides it try: flt = self.db.getFilter() flt_menu = self.build_FilterMenu(flt) if flt_menu != None: menuItem = gtk.MenuItem('Filter') menuItem.set_submenu(flt_menu) menu.prepend(menuItem) menu.connect('hide', self.setToolTip_from_filter) except Exception, e: print "Unable to get Filter menu from DB: ", e