def run(): import config mustQuit = False # home on win32 is broken if sys.platform == "win32": # use appdata if available if 'APPDATA' in os.environ: oldConf = os.path.expanduser("~/.anki/config.db") oldPlugins = os.path.expanduser("~/.anki/plugins") os.environ['HOME'] = os.environ['APPDATA'] else: oldConf = None os.environ['HOME'] = "c:\\anki" # make and check accessible try: os.makedirs(os.path.expanduser("~/.anki")) except: pass try: os.listdir(os.path.expanduser("~/.anki")) except: oldConf = None os.environ['HOME'] = "c:\\anki" # check accessible again try: os.makedirs(os.path.expanduser("~/.anki")) except: pass try: os.listdir(os.path.expanduser("~/.anki")) except: mustQuit = True if (oldConf and os.path.exists(oldConf) and not os.path.exists( oldConf.replace("config.db", "config.db.old"))): try: shutil.copy2(oldConf, os.path.expanduser("~/.anki/config.db")) shutil.copytree(oldPlugins, os.path.expanduser("~/.anki/plugins")) except: pass os.rename(oldConf, oldConf.replace("config.db", "config.db.old")) # setup paths for forms, icons sys.path.append(modDir) # jpeg module rd = runningDir if sys.platform.startswith("darwin"): rd = os.path.abspath(runningDir + "/../../..") QCoreApplication.setLibraryPaths(QStringList([rd])) app = AnkiApp(sys.argv) QCoreApplication.setApplicationName("Anki") if mustQuit: QMessageBox.warning( None, "Anki", "Can't open APPDATA, nor c:\\anki.\n" "Please try removing foreign characters from your username.") sys.exit(1) import forms import ui ui.splash = SplashScreen(3) import anki if anki.version != appVersion: print "You have libanki %s, but this is ankiqt %s" % ( anki.version, appVersion) print "\nPlease ensure versions match." return # parse args import optparse parser = optparse.OptionParser() parser.usage = "%prog [<deck.anki>]" parser.add_option("-c", "--config", help="path to config dir", default=os.path.expanduser("~/.anki")) (opts, args) = parser.parse_args(sys.argv[1:]) # configuration import ankiqt.config conf = ankiqt.config.Config( unicode(os.path.abspath(opts.config), sys.getfilesystemencoding())) # qt translations translationPath = '' if 'linux' in sys.platform or 'unix' in sys.platform: translationPath = "/usr/share/qt4/translations/" if translationPath: long = conf['interfaceLang'] if long == "ja_JP": # qt is inconsistent long = long.lower() short = long.split('_')[0] qtTranslator = QTranslator() if qtTranslator.load("qt_" + long, translationPath) or \ qtTranslator.load("qt_" + short, translationPath): app.installTranslator(qtTranslator) if conf['alternativeTheme']: app.setStyle("plastique") # load main window ui.importAll() ui.dialogs.registerDialogs() ui.splash.update() mw = ui.main.AnkiQt(app, conf, args) app.exec_() if sys.platform.startswith("darwin"): # buggy on osx from anki.sound import stopMplayer stopMplayer() os._exit(0) else: # ensure we kill any other threads sys.exit(0)
def run(): import config mustQuit = False # home on win32 is broken if sys.platform == "win32": # use appdata if available if 'APPDATA' in os.environ: oldConf = os.path.expanduser("~/.anki/config.db") oldPlugins = os.path.expanduser("~/.anki/plugins") os.environ['HOME'] = os.environ['APPDATA'] else: oldConf = None os.environ['HOME'] = "c:\\anki" # make and check accessible try: os.makedirs(os.path.expanduser("~/.anki")) except: pass try: os.listdir(os.path.expanduser("~/.anki")) except: oldConf = None os.environ['HOME'] = "c:\\anki" # check accessible again try: os.makedirs(os.path.expanduser("~/.anki")) except: pass try: os.listdir(os.path.expanduser("~/.anki")) except: mustQuit = True if (oldConf and os.path.exists(oldConf) and not os.path.exists( oldConf.replace("config.db", "config.db.old"))): try: shutil.copy2(oldConf, os.path.expanduser("~/.anki/config.db")) shutil.copytree(oldPlugins, os.path.expanduser("~/.anki/plugins")) except: pass os.rename(oldConf, oldConf.replace("config.db", "config.db.old")) # setup paths for forms, icons sys.path.append(modDir) # jpeg module rd = runningDir if sys.platform.startswith("darwin"): rd = os.path.abspath(runningDir + "/../../..") QCoreApplication.setLibraryPaths(QStringList([rd])) app = AnkiApp(sys.argv) QCoreApplication.setApplicationName("Anki") if mustQuit: QMessageBox.warning( None, "Anki", "Can't open APPDATA, nor c:\\anki.\n" "Please try removing foreign characters from your username.") sys.exit(1) import forms import ui ui.splash = SplashScreen(3) import anki if anki.version != appVersion: print "You have libanki %s, but this is ankiqt %s" % (anki.version, appVersion) print "\nPlease ensure versions match." return # parse args import optparse parser = optparse.OptionParser() parser.usage = "%prog [<deck.anki>]" parser.add_option("-c", "--config", help="path to config dir", default=os.path.expanduser("~/.anki")) (opts, args) = parser.parse_args(sys.argv[1:]) # configuration import ankiqt.config conf = ankiqt.config.Config( unicode(os.path.abspath(opts.config), sys.getfilesystemencoding())) # qt translations translationPath = '' if 'linux' in sys.platform or 'unix' in sys.platform: translationPath = "/usr/share/qt4/translations/" if translationPath: long = conf['interfaceLang'] if long == "ja_JP": # qt is inconsistent long = long.lower() short = long.split('_')[0] qtTranslator = QTranslator() if qtTranslator.load("qt_" + long, translationPath) or \ qtTranslator.load("qt_" + short, translationPath): app.installTranslator(qtTranslator) if conf['alternativeTheme']: app.setStyle("plastique") # load main window ui.importAll() ui.dialogs.registerDialogs() ui.splash.update() mw = ui.main.AnkiQt(app, conf, args) app.exec_() if sys.platform.startswith("darwin"): # buggy on osx from anki.sound import stopMplayer stopMplayer() os._exit(0) else: # ensure we kill any other threads sys.exit(0)