def runOpenInlineDocumentSetMenuCommand(cntlr, runInBackground=False, saveTargetFiling=False): filenames = cntlr.uiFileDialog( "open", multiple=True, title=_("arelle - Multi-open inline XBRL file(s)"), initialdir=cntlr.config.setdefault("fileOpenDir", "."), filetypes=[(_("XBRL files"), "*.*")], defaultextension=".xbrl") if os.sep == "\\": filenames = [f.replace("/", "\\") for f in filenames] if not filenames: filename = "" elif len(filenames) == 1 and (filenames[0].endswith(".zip") or filenames[0].endswith(".tar.gz")): # get archive file names from arelle.FileSource import openFileSource filesource = openFileSource(filenames[0], cntlr) if filesource.isArchive: from arelle import DialogOpenArchive archiveEntries = DialogOpenArchive.askArchiveFile(cntlr, filesource, multiselect=True) if archiveEntries: ixdsFirstFile = archiveEntries[0] _archiveFilenameParts = archiveFilenameParts(ixdsFirstFile) if _archiveFilenameParts is not None: ixdsDir = _archiveFilenameParts[ 0] # it's a zip or package, use zip file name as head of ixds else: ixdsDir = os.path.dirname(ixdsFirstFile) docsetSurrogatePath = os.path.join(ixdsDir, IXDS_SURROGATE) filename = docsetSurrogatePath + IXDS_DOC_SEPARATOR.join( archiveEntries) else: filename = None filesource.close() elif len(filenames) >= MINIMUM_IXDS_DOC_COUNT: ixdsFirstFile = filenames[0] _archiveFilenameParts = archiveFilenameParts(ixdsFirstFile) if _archiveFilenameParts is not None: ixdsDir = _archiveFilenameParts[ 0] # it's a zip or package, use zip file name as head of ixds else: ixdsDir = os.path.dirname(ixdsFirstFile) docsetSurrogatePath = os.path.join(ixdsDir, IXDS_SURROGATE) filename = docsetSurrogatePath + IXDS_DOC_SEPARATOR.join(filenames) else: filename = filenames[0] if filename is not None: cntlr.fileOpenFile(filename)
def webOpen(self, *ignore): if not self.okayToContinue(): return url = DialogURL.askURL(self.parent) if url: self.updateFileHistory(url, False) filesource = openFileSource(url,self) if filesource.isArchive and not filesource.selection: # or filesource.isRss: from arelle import DialogOpenArchive url = DialogOpenArchive.askArchiveFile(self, filesource) self.updateFileHistory(url, False) thread = threading.Thread(target=lambda: self.backgroundLoadXbrl(filesource,False)) thread.daemon = True thread.start()
def runOpenInlineDocumentSetMenuCommand(cntlr, filenames, runInBackground=False, saveTargetFiling=False): if os.sep == "\\": filenames = [f.replace("/", "\\") for f in filenames] if not filenames: filename = "" elif len(filenames) == 1 and any(filenames[0].endswith(s) for s in archiveFilenameSuffixes): # get archive file names from arelle.FileSource import openFileSource filesource = openFileSource(filenames[0], cntlr) if filesource.isArchive: from arelle import DialogOpenArchive archiveEntries = DialogOpenArchive.askArchiveFile(cntlr, filesource, multiselect=True) if archiveEntries: ixdsFirstFile = archiveEntries[0] _archiveFilenameParts = archiveFilenameParts(ixdsFirstFile) if _archiveFilenameParts is not None: ixdsDir = _archiveFilenameParts[ 0] # it's a zip or package, use zip file name as head of ixds else: ixdsDir = os.path.dirname(ixdsFirstFile) docsetSurrogatePath = os.path.join(ixdsDir, IXDS_SURROGATE) filename = docsetSurrogatePath + IXDS_DOC_SEPARATOR.join( archiveEntries) else: filename = None filesource.close() elif len(filenames) >= MINIMUM_IXDS_DOC_COUNT: ixdsFirstFile = filenames[0] _archiveFilenameParts = archiveFilenameParts(ixdsFirstFile) if _archiveFilenameParts is not None: ixdsDir = _archiveFilenameParts[ 0] # it's a zip or package, use zip file name as head of ixds else: ixdsDir = os.path.dirname(ixdsFirstFile) docsetSurrogatePath = os.path.join(ixdsDir, IXDS_SURROGATE) filename = docsetSurrogatePath + IXDS_DOC_SEPARATOR.join(filenames) else: filename = filenames[0] if filename is not None: cntlr.fileOpenFile(filename)
def fileOpenFile(self, filename, importToDTS=False): if filename: filesource = None # check for archive files filesource = openFileSource(filename,self) if filesource.isArchive and not filesource.selection: # or filesource.isRss: from arelle import DialogOpenArchive filename = DialogOpenArchive.askArchiveFile(self, filesource) if filename: if importToDTS: self.config["importOpenDir"] = os.path.dirname(filename) else: if not filename.startswith("http://"): self.config["fileOpenDir"] = os.path.dirname(filename) self.updateFileHistory(filename, importToDTS) thread = threading.Thread(target=lambda: self.backgroundLoadXbrl(filesource,importToDTS)) thread.daemon = True thread.start()