def __init__(self, modelXbrl, xfFile): self.modelXbrl = modelXbrl self.xfFile = xfFile self.xfLines = [] self.xmlns = {} self.eltTypeCount = {} for cfQnameArity in sorted(qnameArity for qnameArity in self.modelXbrl.modelCustomFunctionSignatures.keys() if isinstance(qnameArity, (tuple,list))): cfObject = self.modelXbrl.modelCustomFunctionSignatures[cfQnameArity] self.doObject(cfObject, None, "", set()) rootObjects = rootFormulaObjects(self) # sets var sets up # put parameters at root regardless of whether linked to for qn, param in sorted(self.modelXbrl.qnameParameters.items(), key=lambda i:i[0]): self.doObject(param, None, "", set()) for rootObject in sorted(rootObjects, key=formulaObjSortKey): self.doObject(rootObject, None, "", set()) if self.xmlns: self.xfLines.insert(0, "") for prefix, ns in sorted(self.xmlns.items(), reverse=True): self.xfLines.insert(0, "namespace \"{}\" = \"{}\";".format(prefix, ns)) self.xfLines.insert(0, "") self.xfLines.insert(0, "(: Generated from {} by Arelle on {} :)".format(modelXbrl.modelDocument.basename, XmlUtil.dateunionValue(datetime.datetime.now()))) with open(xfFile, "w", encoding="utf-8") as fh: fh.write("\n".join(self.xfLines)) modelXbrl.info("info", "saved formula file %(file)s", file=xfFile)
def __init__(self, modelXbrl, xfFile): self.modelXbrl = modelXbrl self.xfFile = xfFile self.xfLines = [] self.xmlns = {} self.eltTypeCount = {} self.nextIdDupNbr = {} for cfQnameArity in sorted(qnameArity for qnameArity in self.modelXbrl.modelCustomFunctionSignatures.keys() if isinstance(qnameArity, (tuple,list))): cfObject = self.modelXbrl.modelCustomFunctionSignatures[cfQnameArity] self.doObject(cfObject, None, "", set()) rootObjects = rootFormulaObjects(self) # sets var sets up # put parameters at root regardless of whether linked to for qn, param in sorted(self.modelXbrl.qnameParameters.items(), key=lambda i:i[0]): self.doObject(param, None, "", set()) for rootObject in sorted(rootObjects, key=formulaObjSortKey): self.doObject(rootObject, None, "", set()) if self.xmlns: self.xfLines.insert(0, "") for prefix, ns in sorted(self.xmlns.items(), reverse=True): self.xfLines.insert(0, "namespace {} = \"{}\";".format(prefix, ns)) self.xfLines.insert(0, "") self.xfLines.insert(0, "(: Generated from {} by Arelle on {} :)".format(modelXbrl.modelDocument.basename, XmlUtil.dateunionValue(datetime.datetime.now()))) with open(xfFile, "w", encoding="utf-8") as fh: fh.write("\n".join(self.xfLines)) modelXbrl.info("info", "saved formula file %(file)s", file=xfFile)
def view(self): # determine relationships indent depth rootObjects = rootFormulaObjects(self) self.treeCols = 0 for rootObject in rootObjects: self.treeDepth(rootObject, 1, set()) self.addRow(["Formula object", "Label", "Cover", "Com\u00ADple\u00ADment", "Bind as se\u00ADquence", "Expression"], asHeader=True) for rootObject in sorted(rootObjects, key=formulaObjSortKey): self.viewFormulaObjects(rootObject, None, 0, set()) for cfQname in sorted(self.modelXbrl.modelCustomFunctionSignatures.keys()): cfObject = self.modelXbrl.modelCustomFunctionSignatures[cfQname] self.viewFormulaObjects(cfObject, None, 0, set())
def view(self): self.blockSelectEvent = 1 self.blockViewModelObject = 0 self.tag_has = defaultdict(list) # temporary until Tk 8.6 self.treeView["columns"] = ("label", "cover", "complement", "bindAsSequence", "expression", "value") self.treeView.column("#0", width=200, anchor="w") self.treeView.heading("#0", text="Formula object") self.treeView.column("label", width=150, anchor="w", stretch=False) self.treeView.heading("label", text="Label") self.treeView.column("cover", width=36, anchor="center", stretch=False) self.treeView.heading("cover", text="Cvr.") self.treeView.column("complement", width=36, anchor="center", stretch=False) self.treeView.heading("complement", text="Cmp.") self.treeView.column("bindAsSequence", width=36, anchor="center", stretch=False) self.treeView.heading("bindAsSequence", text="Seq.") self.treeView.column("expression", width=350, anchor="w") self.treeView.heading("expression", text="Expression") # root node for tree view self.id = 1 n = 1 for rootObject in sorted(rootFormulaObjects(self), key=formulaObjSortKey): self.viewFormulaObjects("", rootObject, None, n, set()) n += 1 for cfQnameArity in sorted( qnameArity for qnameArity in self.modelXbrl.modelCustomFunctionSignatures.keys() if isinstance(qnameArity, (tuple, list))): cfObject = self.modelXbrl.modelCustomFunctionSignatures[ cfQnameArity] self.viewFormulaObjects("", cfObject, None, n, set()) n += 1 self.treeView.bind("<<TreeviewSelect>>", self.treeviewSelect, '+') self.treeView.bind("<Enter>", self.treeviewEnter, '+') self.treeView.bind("<Leave>", self.treeviewLeave, '+') # pop up menu menu = self.contextMenu() self.menuAddExpandCollapse() self.menuAddClipboard()
def __init__(self, modelXbrl): self.modelXbrl = modelXbrl for cfQnameArity in sorted(qnameArity for qnameArity in self.modelXbrl.modelCustomFunctionSignatures.keys() if isinstance(qnameArity, (tuple,list))): cfObject = self.modelXbrl.modelCustomFunctionSignatures[cfQnameArity] self.doObject(cfObject, None, set()) rootObjects = rootFormulaObjects(self) # sets var sets up # put parameters at root regardless of whether linked to for qn, param in sorted(self.modelXbrl.qnameParameters.items(), key=lambda i:i[0]): self.doObject(param, None, set()) for rootObject in sorted(rootObjects, key=formulaObjSortKey): self.doObject(rootObject, None, set())
def view(self): self.blockSelectEvent = 1 self.blockViewModelObject = 0 self.tag_has = defaultdict(list) # temporary until Tk 8.6 self.treeView["columns"] = ("label", "cover", "complement", "bindAsSequence", "expression", "value") self.treeView.column("#0", width=200, anchor="w") self.treeView.heading("#0", text="Formula object") self.treeView.column("label", width=150, anchor="w", stretch=False) self.treeView.heading("label", text="Label") self.treeView.column("cover", width=36, anchor="center", stretch=False) self.treeView.heading("cover", text="Cvr.") self.treeView.column("complement", width=36, anchor="center", stretch=False) self.treeView.heading("complement", text="Cmp.") self.treeView.column("bindAsSequence", width=36, anchor="center", stretch=False) self.treeView.heading("bindAsSequence", text="Seq.") self.treeView.column("expression", width=350, anchor="w") self.treeView.heading("expression", text="Expression") # root node for tree view self.id = 1 self.clearTreeView() n = 1 for rootObject in sorted(rootFormulaObjects(self), key=formulaObjSortKey): self.viewFormulaObjects("", rootObject, None, n, set()) n += 1 for cfQnameArity in sorted(qnameArity for qnameArity in self.modelXbrl.modelCustomFunctionSignatures.keys() if isinstance(qnameArity, (tuple,list))): cfObject = self.modelXbrl.modelCustomFunctionSignatures[cfQnameArity] self.viewFormulaObjects("", cfObject, None, n, set()) n += 1 self.treeView.bind("<<TreeviewSelect>>", self.treeviewSelect, '+') self.treeView.bind("<Enter>", self.treeviewEnter, '+') self.treeView.bind("<Leave>", self.treeviewLeave, '+') # pop up menu menu = self.contextMenu() self.menuAddExpandCollapse() self.menuAddClipboard()