author | Laurent Bessard |
Tue, 24 Sep 2013 14:45:30 +0200 | |
changeset 1326 | e2c11668addf |
parent 1315 | ff14a66bbd12 |
child 1330 | 96b242e4c59d |
permissions | -rw-r--r-- |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
1 |
import os, re |
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 |
630
91b2ae63ea3d
Including external tools for editing plugin informations into Beremiz window
laurent
parents:
610
diff
changeset
|
8 |
|
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
9 |
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
|
10 |
<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
|
11 |
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
|
12 |
<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
|
13 |
<xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
14 |
<xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
15 |
%(includes_section)s |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
16 |
<xsd:element name="variables"> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
17 |
<xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
18 |
<xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
19 |
<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
|
20 |
<xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
21 |
<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
|
22 |
<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
|
23 |
<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
|
24 |
<xsd:simpleType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
25 |
<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
|
26 |
<xsd:enumeration value="input"/> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
27 |
<xsd:enumeration value="memory"/> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
28 |
<xsd:enumeration value="output"/> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
29 |
</xsd:restriction> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
30 |
</xsd:simpleType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
31 |
</xsd:attribute> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
32 |
<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
|
33 |
</xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
34 |
</xsd:element> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
35 |
</xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
36 |
</xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
37 |
</xsd:element> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
38 |
%(sections)s |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
39 |
</xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
40 |
</xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
41 |
</xsd:element> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
42 |
<xsd:complexType name="CodeText"> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
43 |
<xsd:annotation> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
44 |
<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
|
45 |
</xsd:annotation> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
46 |
<xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
47 |
<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
|
48 |
</xsd:sequence> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
49 |
</xsd:complexType> |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
50 |
</xsd:schema>""" |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
51 |
|
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
52 |
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
|
53 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
54 |
class CodeFile: |
656
c1792dfc8c7e
Fixing bug integrated plugin editors not closed when removing corresponding plugin
laurent
parents:
651
diff
changeset
|
55 |
|
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
56 |
CODEFILE_NAME = "CodeFile" |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
57 |
SECTIONS_NAMES = [] |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
58 |
|
31 | 59 |
def __init__(self): |
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
60 |
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
|
61 |
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
|
62 |
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
|
63 |
else: |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
64 |
sections_str["includes_section"] = "" |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
65 |
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
|
66 |
[SECTION_TAG_ELEMENT % name |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
67 |
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
|
68 |
|
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
69 |
self.CodeFileParser = GenerateParserFromXSDstring( |
1124
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
70 |
CODEFILE_XSD % sections_str) |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
71 |
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
|
72 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
73 |
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
|
74 |
|
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 |
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
|
76 |
xmlfile = open(filepath, 'r') |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
77 |
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
|
78 |
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
|
79 |
|
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
80 |
codefile_xml = codefile_xml.replace( |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
81 |
'<%s>' % self.CODEFILE_NAME, |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
82 |
'<%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
|
83 |
for cre, repl in [ |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
84 |
(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
|
85 |
(re.compile("(?:]]>)(?!</xhtml:p>)"), "]]></xhtml:p>")]: |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
86 |
codefile_xml = cre.sub(repl, codefile_xml) |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
87 |
self.CodeFile = etree.fromstring(codefile_xml, self.CodeFileParser) |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
88 |
self.CreateCodeFileBuffer(True) |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
89 |
|
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
|
90 |
else: |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
91 |
self.CodeFile = self.CodeFileParser.CreateRoot() |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
92 |
self.CreateCodeFileBuffer(False) |
718 | 93 |
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
|
94 |
|
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
|
95 |
def GetBaseTypes(self): |
718 | 96 |
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
|
97 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
98 |
def GetDataTypes(self, basetypes = False): |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
99 |
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
|
100 |
|
1146 | 101 |
def GenerateNewName(self, format, start_idx): |
102 |
return self.GetCTRoot().GenerateNewName( |
|
103 |
None, None, format, start_idx, |
|
1153
5bdd82497925
Fixed bug in New variable name generated in CodeFileEditor Variable Panel
Laurent Bessard
parents:
1146
diff
changeset
|
104 |
dict([(var.getname().upper(), True) |
1146 | 105 |
for var in self.CodeFile.variables.getvariable()])) |
106 |
||
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
|
107 |
def SetVariables(self, variables): |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
108 |
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
|
109 |
for var in variables: |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
110 |
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
|
111 |
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
|
112 |
variable.settype(var["Type"]) |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
113 |
variable.setinitial(var["Initial"]) |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
114 |
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
|
115 |
|
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
|
116 |
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
|
117 |
datas = [] |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
118 |
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
|
119 |
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
|
120 |
"Type" : var.gettype(), |
b1705000eba1
Fixed support for defining python runtime code using sections like in c_ext
Laurent Bessard
parents:
1100
diff
changeset
|
121 |
"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
|
122 |
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
|
123 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
124 |
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
|
125 |
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
|
126 |
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
|
127 |
if section_code is not None: |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
128 |
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
|
129 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
130 |
def GetTextParts(self): |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
131 |
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
|
132 |
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
|
133 |
|
718 | 134 |
def CTNTestModified(self): |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
135 |
return self.ChangesToSave or not self.CodeFileIsSaved() |
630
91b2ae63ea3d
Including external tools for editing plugin informations into Beremiz window
laurent
parents:
610
diff
changeset
|
136 |
|
1061 | 137 |
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
|
138 |
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
|
139 |
|
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
|
140 |
xmlfile = open(filepath,"w") |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
141 |
xmlfile.write(etree.tostring( |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
142 |
self.CodeFile, |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
143 |
pretty_print=True, |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
144 |
xml_declaration=True, |
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
145 |
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
|
146 |
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
|
147 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
148 |
self.MarkCodeFileAsSaved() |
31 | 149 |
return True |
150 |
||
1095 | 151 |
def CTNGlobalInstances(self): |
152 |
current_location = self.GetCurrentLocation() |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
153 |
return [(variable.getname(), |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
154 |
variable.gettype(), |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
155 |
variable.getinitial()) |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
156 |
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
|
157 |
|
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
|
158 |
#------------------------------------------------------------------------------- |
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
|
159 |
# 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
|
160 |
#------------------------------------------------------------------------------- |
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
|
161 |
|
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
|
162 |
""" |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
163 |
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
|
164 |
""" |
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
|
165 |
def Copy(self, model): |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
166 |
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
|
167 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
168 |
def CreateCodeFileBuffer(self, saved): |
658 | 169 |
self.Buffering = False |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
170 |
self.CodeFileBuffer = UndoBuffer(self.CodeFileParser.Dumps(self.CodeFile), saved) |
651
cbeb769b0a56
Adding support for unifying grid table control elements
laurent
parents:
630
diff
changeset
|
171 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
172 |
def BufferCodeFile(self): |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
173 |
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
|
174 |
|
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 |
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
|
176 |
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
|
177 |
|
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
|
178 |
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
|
179 |
if self.Buffering: |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
180 |
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
|
181 |
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
|
182 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
183 |
def MarkCodeFileAsSaved(self): |
651
cbeb769b0a56
Adding support for unifying grid table control elements
laurent
parents:
630
diff
changeset
|
184 |
self.EndBuffering() |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
185 |
self.CodeFileBuffer.CurrentSaved() |
651
cbeb769b0a56
Adding support for unifying grid table control elements
laurent
parents:
630
diff
changeset
|
186 |
|
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
187 |
def CodeFileIsSaved(self): |
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
188 |
return self.CodeFileBuffer.IsCurrentSaved() and not self.Buffering |
658 | 189 |
|
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
|
190 |
def LoadPrevious(self): |
651
cbeb769b0a56
Adding support for unifying grid table control elements
laurent
parents:
630
diff
changeset
|
191 |
self.EndBuffering() |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
192 |
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
|
193 |
|
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
|
194 |
def LoadNext(self): |
1315
ff14a66bbd12
Fixed Beremiz for working with new xmlclass support using lxml
Laurent Bessard
parents:
1153
diff
changeset
|
195 |
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
|
196 |
|
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
|
197 |
def GetBufferState(self): |
1096
c9ace6a881c9
Fixed CFileEditor replacing folding panels by variable panel and STC
Laurent Bessard
parents:
1095
diff
changeset
|
198 |
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
|
199 |
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
|
200 |
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
|
201 |