コード例 #1
0
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)
コード例 #2
0
ファイル: CntlrWinMain.py プロジェクト: 8maki/Arelle
 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()
コード例 #3
0
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)
コード例 #4
0
ファイル: CntlrWinMain.py プロジェクト: 8maki/Arelle
 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()