author | Laurent Bessard |
Thu, 10 Oct 2013 09:44:13 +0200 | |
changeset 1352 | 9ec4ac8e2955 |
parent 1332 | ac7d39f4e376 |
child 1448 | 20ff66dcc31d |
permissions | -rw-r--r-- |
1330
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
1 |
import os, re, traceback |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
2 |
|
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
3 |
from copy import deepcopy |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
4 |
from lxml import etree |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
5 |
from xmlclass import GenerateParserFromXSDstring |
401
8106a853a7c7
Adding support for displaying plugins available variable into Beremiz plugin tree
laurent
parents:
361
diff
changeset
|
6 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
7 |
from PLCControler import UndoBuffer |
1330
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
8 |
from ConfigTreeNode import XSDSchemaErrorMessage |
630
91b2ae63ea3d
Including external tools for editing plugin informations into Beremiz window
laurent
parents:
610
diff
changeset
|
9 |
|
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
10 |
CODEFILE_XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?> |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
11 |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
12 |
xmlns:xhtml="http://www.w3.org/1999/xhtml"> |
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
13 |
<xsd:element name="%(codefile_name)s"> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
14 |
<xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
15 |
<xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
16 |
%(includes_section)s |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
17 |
<xsd:element name="variables"> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
18 |
<xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
19 |
<xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
20 |
<xsd:element name="variable" minOccurs="0" maxOccurs="unbounded"> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
21 |
<xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
22 |
<xsd:attribute name="name" type="xsd:string" use="required"/> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
23 |
<xsd:attribute name="type" type="xsd:string" use="required"/> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
24 |
<xsd:attribute name="class" use="optional"> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
25 |
<xsd:simpleType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
26 |
<xsd:restriction base="xsd:string"> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
27 |
<xsd:enumeration value="input"/> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
28 |
<xsd:enumeration value="memory"/> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
29 |
<xsd:enumeration value="output"/> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
30 |
</xsd:restriction> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
31 |
</xsd:simpleType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
32 |
</xsd:attribute> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
33 |
<xsd:attribute name="initial" type="xsd:string" use="optional" default=""/> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
34 |
</xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
35 |
</xsd:element> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
36 |
</xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
37 |
</xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
38 |
</xsd:element> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
39 |
%(sections)s |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
40 |
</xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
41 |
</xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
42 |
</xsd:element> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
43 |
<xsd:complexType name="CodeText"> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
44 |
<xsd:annotation> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
45 |
<xsd:documentation>Formatted text according to parts of XHTML 1.1</xsd:documentation> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
46 |
</xsd:annotation> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
47 |
<xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
48 |
<xsd:any namespace="http://www.w3.org/1999/xhtml" processContents="lax"/> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
49 |
</xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
50 |
</xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
51 |
</xsd:schema>""" |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
52 |
|
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
53 |
SECTION_TAG_ELEMENT = "<xsd:element name=\"%s\" type=\"CodeText\"/>" |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
54 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
55 |
class CodeFile: |
656
c1792dfc8c7e
Fixing bug integrated plugin editors not closed when removing corresponding plugin
laurent
parents:
651
diff
changeset
|
56 |
|
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
57 |
CODEFILE_NAME = "CodeFile" |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
58 |
SECTIONS_NAMES = [] |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
59 |
|
31 | 60 |
def __init__(self): |
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
61 |
sections_str = {"codefile_name": self.CODEFILE_NAME} |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
62 |
if "includes" in self.SECTIONS_NAMES: |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
63 |
sections_str["includes_section"] = SECTION_TAG_ELEMENT % "includes" |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
64 |
else: |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
65 |
sections_str["includes_section"] = "" |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
66 |
sections_str["sections"] = "\n".join( |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
67 |
[SECTION_TAG_ELEMENT % name |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
68 |
for name in self.SECTIONS_NAMES if name != "includes"]) |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
69 |
|
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
70 |
self.CodeFileParser = GenerateParserFromXSDstring( |
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
71 |
CODEFILE_XSD % sections_str) |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
72 |
self.CodeFileVariables = etree.XPath("variables/variable") |
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
73 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
74 |
filepath = self.CodeFileName() |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
75 |
|
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
76 |
if os.path.isfile(filepath): |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
77 |
xmlfile = open(filepath, 'r') |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
78 |
codefile_xml = xmlfile.read() |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
79 |
xmlfile.close() |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
80 |
|
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
81 |
codefile_xml = codefile_xml.replace( |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
82 |
'<%s>' % self.CODEFILE_NAME, |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
83 |
'<%s xmlns:xhtml="http://www.w3.org/1999/xhtml">' % self.CODEFILE_NAME) |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
84 |
for cre, repl in [ |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
85 |
(re.compile("(?<!<xhtml:p>)(?:<!\[CDATA\[)"), "<xhtml:p><![CDATA["), |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
86 |
(re.compile("(?:]]>)(?!</xhtml:p>)"), "]]></xhtml:p>")]: |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
87 |
codefile_xml = cre.sub(repl, codefile_xml) |
1330
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
88 |
|
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
89 |
try: |
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
90 |
self.CodeFile, error = self.CodeFileParser.LoadXMLString(codefile_xml) |
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
91 |
if error is not None: |
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
92 |
self.GetCTRoot().logger.write_warning( |
1332
ac7d39f4e376
Fixed error message printed when error in XML files is detected
Laurent Bessard
parents:
1330
diff
changeset
|
93 |
XSDSchemaErrorMessage % ((self.CODEFILE_NAME,) + error)) |
1330
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
94 |
self.CreateCodeFileBuffer(True) |
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
95 |
except Exception, exc: |
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
96 |
self.GetCTRoot().logger.write_error(_("Couldn't load confnode parameters %s :\n %s") % (CTNName, unicode(exc))) |
96b242e4c59d
Added support for loading XML file even if not following XSD schema (but still following XML syntax), warning user of errors in XML file
Laurent Bessard
parents:
1315
diff
changeset
|
97 |
self.GetCTRoot().logger.write_error(traceback.format_exc()) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
98 |
else: |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
99 |
self.CodeFile = self.CodeFileParser.CreateRoot() |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
100 |
self.CreateCodeFileBuffer(False) |
718 | 101 |
self.OnCTNSave() |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
102 |
|
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
103 |
def GetBaseTypes(self): |
718 | 104 |
return self.GetCTRoot().GetBaseTypes() |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
105 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
106 |
def GetDataTypes(self, basetypes = False): |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
107 |
return self.GetCTRoot().GetDataTypes(basetypes=basetypes) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
108 |
|
1146 | 109 |
def GenerateNewName(self, format, start_idx): |
110 |
return self.GetCTRoot().GenerateNewName( |
|
111 |
None, None, format, start_idx, |
|
1153
5bdd82497925
Fixed bug in New variable name generated in CodeFileEditor Variable Panel
Laurent Bessard
parents:
1146
diff
changeset
|
112 |
dict([(var.getname().upper(), True) |
1146 | 113 |
for var in self.CodeFile.variables.getvariable()])) |
114 |
||
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
115 |
def SetVariables(self, variables): |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
116 |
self.CodeFile.variables.setvariable([]) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
117 |
for var in variables: |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
118 |
variable = self.CodeFileParser.CreateElement("variable", "variables") |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
119 |
variable.setname(var["Name"]) |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
120 |
variable.settype(var["Type"]) |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
121 |
variable.setinitial(var["Initial"]) |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
122 |
self.CodeFile.variables.appendvariable(variable) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
123 |
|
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
124 |
def GetVariables(self): |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
125 |
datas = [] |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
126 |
for var in self.CodeFileVariables(self.CodeFile): |
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
127 |
datas.append({"Name" : var.getname(), |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
128 |
"Type" : var.gettype(), |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
129 |
"Initial" : var.getinitial()}) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
130 |
return datas |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
131 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
132 |
def SetTextParts(self, parts): |
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
133 |
for section in self.SECTIONS_NAMES: |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
134 |
section_code = parts.get(section) |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
135 |
if section_code is not None: |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
136 |
getattr(self.CodeFile, section).setanyText(section_code) |
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
137 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
138 |
def GetTextParts(self): |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
139 |
return dict([(section, getattr(self.CodeFile, section).getanyText()) |
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
140 |
for section in self.SECTIONS_NAMES]) |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
141 |
|
718 | 142 |
def CTNTestModified(self): |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
143 |
return self.ChangesToSave or not self.CodeFileIsSaved() |
630
91b2ae63ea3d
Including external tools for editing plugin informations into Beremiz window
laurent
parents:
610
diff
changeset
|
144 |
|
1061 | 145 |
def OnCTNSave(self, from_project_path=None): |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
146 |
filepath = self.CodeFileName() |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
147 |
|
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
148 |
xmlfile = open(filepath,"w") |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
149 |
xmlfile.write(etree.tostring( |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
150 |
self.CodeFile, |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
151 |
pretty_print=True, |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
152 |
xml_declaration=True, |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
153 |
encoding='utf-8')) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
154 |
xmlfile.close() |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
155 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
156 |
self.MarkCodeFileAsSaved() |
31 | 157 |
return True |
158 |
||
1095 | 159 |
def CTNGlobalInstances(self): |
160 |
current_location = self.GetCurrentLocation() |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
161 |
return [(variable.getname(), |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
162 |
variable.gettype(), |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
163 |
variable.getinitial()) |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
164 |
for variable in self.CodeFileVariables(self.CodeFile)] |
656
c1792dfc8c7e
Fixing bug integrated plugin editors not closed when removing corresponding plugin
laurent
parents:
651
diff
changeset
|
165 |
|
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
166 |
#------------------------------------------------------------------------------- |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
167 |
# Current Buffering Management Functions |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
168 |
#------------------------------------------------------------------------------- |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
169 |
|
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
170 |
""" |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
171 |
Return a copy of the codefile model |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
172 |
""" |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
173 |
def Copy(self, model): |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
174 |
return deepcopy(model) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
175 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
176 |
def CreateCodeFileBuffer(self, saved): |
658 | 177 |
self.Buffering = False |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
178 |
self.CodeFileBuffer = UndoBuffer(self.CodeFileParser.Dumps(self.CodeFile), saved) |
651
cbeb769b0a56
Adding support for unifying grid table control elements
laurent
parents:
630
diff
changeset
|
179 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
180 |
def BufferCodeFile(self): |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
181 |
self.CodeFileBuffer.Buffering(self.CodeFileParser.Dumps(self.CodeFile)) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
182 |
|
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
183 |
def StartBuffering(self): |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
184 |
self.Buffering = True |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
185 |
|
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
186 |
def EndBuffering(self): |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
187 |
if self.Buffering: |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
188 |
self.CodeFileBuffer.Buffering(self.CodeFileParser.Dumps(self.CodeFile)) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
189 |
self.Buffering = False |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
190 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
191 |
def MarkCodeFileAsSaved(self): |
651
cbeb769b0a56
Adding support for unifying grid table control elements
laurent
parents:
630
diff
changeset
|
192 |
self.EndBuffering() |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
193 |
self.CodeFileBuffer.CurrentSaved() |
651
cbeb769b0a56
Adding support for unifying grid table control elements
laurent
parents:
630
diff
changeset
|
194 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
195 |
def CodeFileIsSaved(self): |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
196 |
return self.CodeFileBuffer.IsCurrentSaved() and not self.Buffering |
658 | 197 |
|
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
198 |
def LoadPrevious(self): |
651
cbeb769b0a56
Adding support for unifying grid table control elements
laurent
parents:
630
diff
changeset
|
199 |
self.EndBuffering() |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
200 |
self.CodeFile = self.CodeFileParser.Loads(self.CodeFileBuffer.Previous()) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
201 |
|
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
202 |
def LoadNext(self): |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
203 |
self.CodeFile = self.CodeFileParser.Loads(self.CodeFileBuffer.Next()) |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
204 |
|
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
205 |
def GetBufferState(self): |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
206 |
first = self.CodeFileBuffer.IsFirst() and not self.Buffering |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
207 |
last = self.CodeFileBuffer.IsLast() |
145
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
208 |
return not first, not last |
94855f7b08a9
Improving c_ext plugin by adding an XML file format for saving C files and an graphical interface for editing this file
lbessard
parents:
137
diff
changeset
|
209 |