def openWiki(path: str, readonly: bool = False) -> Optional[WikiDocument]: def threadFunc(path, readonly): try: return WikiDocument.load(path, readonly) except BaseException as e: return e logger.debug('Opening notes tree from: {}'.format(path)) if not os.path.exists(path): __canNotLoadWikiMessage(path) return None preWikiOpenParams = PreWikiOpenParams(path, readonly) Application.onPreWikiOpen(Application.selectedPage, preWikiOpenParams) if preWikiOpenParams.abortOpen: logger.debug('Opening notes tree aborted') return None # The path may be changed in event handlers path = preWikiOpenParams.path logger.debug('Notes tree path after onPreWikiOpen: {}'.format(path)) # Если передан путь до файла настроек (а не до папки с вики), # то оставим только папку if not os.path.isdir(path): path = os.path.split(path)[0] runner = LongProcessRunner(threadFunc, Application.mainWindow, _(u"Loading"), _(u"Opening notes tree...")) result = runner.run(os.path.realpath(path), readonly) success = False if isinstance(result, outwiker.core.exceptions.RootFormatError): __rootFormatErrorHandle(path, readonly) elif isinstance(result, Exception): logger.error(result) __canNotLoadWikiMessage(path) else: Application.wikiroot = result success = True postWikiOpenParams = PostWikiOpenParams(path, readonly, success) Application.onPostWikiOpen(Application.selectedPage, postWikiOpenParams) return Application.wikiroot
def openWiki(path, readonly=False): if not os.path.exists(path): __canNotLoadWikiMessage(path) return # Если передан путь до файла настроек (а не до папки с вики), # то оставим только папку if not os.path.isdir(path): path = os.path.split(path)[0] def threadFunc(path, readonly): try: return WikiDocument.load(path, readonly) except BaseException as e: return e preWikiOpenParams = PreWikiOpenParams(path, readonly) Application.onPreWikiOpen(Application.selectedPage, preWikiOpenParams) runner = LongProcessRunner(threadFunc, Application.mainWindow, _(u"Loading"), _(u"Opening notes tree...")) result = runner.run(os.path.realpath(path), readonly) success = False if isinstance(result, outwiker.core.exceptions.RootFormatError): __rootFormatErrorHandle(path, readonly) elif isinstance(result, Exception): logger.error(result) __canNotLoadWikiMessage(path) else: Application.wikiroot = result success = True postWikiOpenParams = PostWikiOpenParams(path, readonly, success) Application.onPostWikiOpen(Application.selectedPage, postWikiOpenParams) return Application.wikiroot