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)
Example #2
0
 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)
Example #3
0
 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())
Example #4
0
 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())
Example #5
0
    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()
Example #6
0
 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())
Example #7
0
    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()