# HG changeset patch # User Edouard Tisserant # Date 1336516748 -7200 # Node ID 4d437bc0ef3f95926e9f77591d2358f109fa7a8a # Parent c141dad94ff4dc74fc84c9c98865dace20fc9b01 refactoring diff -r c141dad94ff4 -r 4d437bc0ef3f PLCOpenEditor.py --- a/PLCOpenEditor.py Mon May 07 18:53:16 2012 +0200 +++ b/PLCOpenEditor.py Wed May 09 00:39:08 2012 +0200 @@ -37,7 +37,7 @@ CWD = os.path.split(os.path.realpath(__file__))[0] base_folder = os.path.split(CWD)[0] sys.path.append(base_folder) -from docutils import * +from docutil import * from types import TupleType diff -r c141dad94ff4 -r 4d437bc0ef3f docutil/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docutil/__init__.py Wed May 09 00:39:08 2012 +0200 @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor +#based on the plcopen standard. +# +#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD +# +#See COPYING file for copyrights details. +# +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. +# +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#General Public License for more details. +# +#You should have received a copy of the GNU General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +from dochtml import * +from docpdf import * +from docsvg import * \ No newline at end of file diff -r c141dad94ff4 -r 4d437bc0ef3f docutil/dochtml.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docutil/dochtml.py Wed May 09 00:39:08 2012 +0200 @@ -0,0 +1,96 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor +#based on the plcopen standard. +# +#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD +# +#See COPYING file for copyrights details. +# +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. +# +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#General Public License for more details. +# +#You should have received a copy of the GNU General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import wx, os, wx.html, subprocess + +HtmlFrameOpened = [] + +def OpenHtmlFrame(self, title, file, size): + if title not in HtmlFrameOpened: + HtmlFrameOpened.append(title) + window = HtmlFrame(self, HtmlFrameOpened) + window.SetTitle(title) + window.SetHtmlPage(file) + window.SetClientSize(size) + window.Show() + +[ID_HTMLFRAME, ID_HTMLFRAMEHTMLCONTENT] = [wx.NewId() for _init_ctrls in range(2)] +EVT_HTML_URL_CLICK = wx.NewId() + +class HtmlWindowUrlClick(wx.PyEvent): + def __init__(self, linkinfo): + wx.PyEvent.__init__(self) + self.SetEventType(EVT_HTML_URL_CLICK) + self.linkinfo = (linkinfo.GetHref(), linkinfo.GetTarget()) + +class UrlClickHtmlWindow(wx.html.HtmlWindow): + """ HTML window that generates and OnLinkClicked event. + + Use this to avoid having to override HTMLWindow + """ + def OnLinkClicked(self, linkinfo): + wx.PostEvent(self, HtmlWindowUrlClick(linkinfo)) + + def Bind(self, event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY): + if event == HtmlWindowUrlClick: + self.Connect(-1, -1, EVT_HTML_URL_CLICK, handler) + else: + wx.html.HtmlWindow.Bind(event, handler, source=source, id=id, id2=id2) + +class HtmlFrame(wx.Frame): + def _init_ctrls(self, prnt): + wx.Frame.__init__(self, id=ID_HTMLFRAME, name='HtmlFrame', + parent=prnt, pos=wx.Point(320, 231), size=wx.Size(853, 616), + style=wx.DEFAULT_FRAME_STYLE, title='') + self.Bind(wx.EVT_CLOSE, self.OnCloseFrame) + + self.HtmlContent = UrlClickHtmlWindow(id=ID_HTMLFRAMEHTMLCONTENT, + name='HtmlContent', parent=self, pos=wx.Point(0, 0), + size=wx.Size(-1, -1), style=wx.html.HW_SCROLLBAR_AUTO|wx.html.HW_NO_SELECTION) + self.HtmlContent.Bind(HtmlWindowUrlClick, self.OnLinkClick) + + def __init__(self, parent, opened): + self._init_ctrls(parent) + self.HtmlFrameOpened = opened + + def SetHtmlCode(self, htmlcode): + self.HtmlContent.SetPage(htmlcode) + + def SetHtmlPage(self, htmlpage): + self.HtmlContent.LoadPage(htmlpage) + + def OnCloseFrame(self, event): + self.HtmlFrameOpened.remove(self.GetTitle()) + event.Skip() + + def OnLinkClick(self, event): + url = event.linkinfo[0] + try: + if wx.Platform == '__WXMSW__': + import webbrowser + webbrowser.open(url) + elif subprocess.call("firefox %s"%url, shell=True) != 0: + wx.MessageBox("""Firefox browser not found.\nPlease point your browser at :\n%s""" % url) + except ImportError: + wx.MessageBox('Please point your browser at: %s' % url) \ No newline at end of file diff -r c141dad94ff4 -r 4d437bc0ef3f docutil/docpdf.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docutil/docpdf.py Wed May 09 00:39:08 2012 +0200 @@ -0,0 +1,78 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor +#based on the plcopen standard. +# +#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD +# +#See COPYING file for copyrights details. +# +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. +# +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#General Public License for more details. +# +#You should have received a copy of the GNU General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import wx, os + +readerexepath = None + +def get_acroversion(): + " Return version of Adobe Acrobat executable or None" + import _winreg + adobesoft = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'Software\Adobe') + for index in range(_winreg.QueryInfoKey(adobesoft)[0]): + key = _winreg.EnumKey(adobesoft, index) + if "acrobat" in key.lower(): + acrokey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, 'Software\\Adobe\\%s' % key) + for index in range(_winreg.QueryInfoKey(acrokey)[0]): + numver = _winreg.EnumKey(acrokey, index) + try: + res = _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE, 'Software\\Adobe\\%s\\%s\\InstallPath' % (key, numver)) + return res + except: + pass + return None + +def open_win_pdf(readerexepath, pdffile, pagenum = None): + if pagenum != None : + os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", "/A", "page=%d=OpenActions" % pagenum, '"%s"'%pdffile) + else: + os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", '"%s"'%pdffile) + +def open_lin_pdf(readerexepath, pdffile, pagenum = None): + if pagenum == None : + os.system("%s -remote DS301 %s &"%(readerexepath, pdffile)) + else: + print "Open pdf %s at page %d"%(pdffile, pagenum) + os.system("%s -remote DS301 %s %d &"%(readerexepath, pdffile, pagenum)) + +def open_pdf(pdffile, pagenum = None): + if wx.Platform == '__WXMSW__' : + try: + readerpath = get_acroversion() + except: + wx.MessageBox("Acrobat Reader is not found or installed !") + return None + + readerexepath = os.path.join(readerpath, "AcroRd32.exe") + if(os.path.isfile(readerexepath)): + open_win_pdf(readerexepath, pdffile, pagenum) + else: + return None + else: + readerexepath = os.path.join("/usr/bin","xpdf") + if(os.path.isfile(readerexepath)): + open_lin_pdf(readerexepath, pdffile, pagenum) + else: + wx.MessageBox("xpdf is not found or installed !") + return None diff -r c141dad94ff4 -r 4d437bc0ef3f docutil/docsvg.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docutil/docsvg.py Wed May 09 00:39:08 2012 +0200 @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor +#based on the plcopen standard. +# +#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD +# +#See COPYING file for copyrights details. +# +#This library is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public +#License as published by the Free Software Foundation; either +#version 2.1 of the License, or (at your option) any later version. +# +#This library is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#General Public License for more details. +# +#You should have received a copy of the GNU General Public +#License along with this library; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import wx, os, subprocess + +def get_inkscape_path(): + """ Return the Inkscape path """ + import _winreg + svgexepath = _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE, + 'Software\\Classes\\svgfile\\shell\\Inkscape\\command') + svgexepath = svgexepath.replace('"%1"', '') + return svgexepath.replace('"', '') + +def open_win_svg(svgexepath, svgfile): + """ Open Inkscape on Windows platform """ + popenargs = [svgexepath] + if svgfile is not None : + popenargs.append(svgfile) + subprocess.Popen(popenargs).pid + +def open_lin_svg(svgexepath, svgfile): + """ Open Inkscape on Linux platform """ + if os.path.isfile("/usr/bin/inkscape"): + os.system("%s %s &"%(svgexepath , svgfile)) + +def open_svg(svgfile): + """ Generic function to open SVG file """ + if wx.Platform == '__WXMSW__' : + svgexepath = get_inkscape_path() + try: + open_win_svg(svgexepath , svgfile) + except: + wx.MessageBox("Inkscape is not found or installed !") + return None + else: + svgexepath = os.path.join("/usr/bin","inkscape") + if(os.path.isfile(svgexepath)): + open_lin_svg(svgexepath, svgfile) + else: + wx.MessageBox("Inkscape is not found or installed !") + return None + diff -r c141dad94ff4 -r 4d437bc0ef3f docutils/__init__.py --- a/docutils/__init__.py Mon May 07 18:53:16 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor -#based on the plcopen standard. -# -#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD -# -#See COPYING file for copyrights details. -# -#This library is free software; you can redistribute it and/or -#modify it under the terms of the GNU General Public -#License as published by the Free Software Foundation; either -#version 2.1 of the License, or (at your option) any later version. -# -#This library is distributed in the hope that it will be useful, -#but WITHOUT ANY WARRANTY; without even the implied warranty of -#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -#General Public License for more details. -# -#You should have received a copy of the GNU General Public -#License along with this library; if not, write to the Free Software -#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -from dochtml import * -from docpdf import * -from docsvg import * \ No newline at end of file diff -r c141dad94ff4 -r 4d437bc0ef3f docutils/dochtml.py --- a/docutils/dochtml.py Mon May 07 18:53:16 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor -#based on the plcopen standard. -# -#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD -# -#See COPYING file for copyrights details. -# -#This library is free software; you can redistribute it and/or -#modify it under the terms of the GNU General Public -#License as published by the Free Software Foundation; either -#version 2.1 of the License, or (at your option) any later version. -# -#This library is distributed in the hope that it will be useful, -#but WITHOUT ANY WARRANTY; without even the implied warranty of -#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -#General Public License for more details. -# -#You should have received a copy of the GNU General Public -#License along with this library; if not, write to the Free Software -#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import wx, os, wx.html, subprocess - -HtmlFrameOpened = [] - -def OpenHtmlFrame(self, title, file, size): - if title not in HtmlFrameOpened: - HtmlFrameOpened.append(title) - window = HtmlFrame(self, HtmlFrameOpened) - window.SetTitle(title) - window.SetHtmlPage(file) - window.SetClientSize(size) - window.Show() - -[ID_HTMLFRAME, ID_HTMLFRAMEHTMLCONTENT] = [wx.NewId() for _init_ctrls in range(2)] -EVT_HTML_URL_CLICK = wx.NewId() - -class HtmlWindowUrlClick(wx.PyEvent): - def __init__(self, linkinfo): - wx.PyEvent.__init__(self) - self.SetEventType(EVT_HTML_URL_CLICK) - self.linkinfo = (linkinfo.GetHref(), linkinfo.GetTarget()) - -class UrlClickHtmlWindow(wx.html.HtmlWindow): - """ HTML window that generates and OnLinkClicked event. - - Use this to avoid having to override HTMLWindow - """ - def OnLinkClicked(self, linkinfo): - wx.PostEvent(self, HtmlWindowUrlClick(linkinfo)) - - def Bind(self, event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY): - if event == HtmlWindowUrlClick: - self.Connect(-1, -1, EVT_HTML_URL_CLICK, handler) - else: - wx.html.HtmlWindow.Bind(event, handler, source=source, id=id, id2=id2) - -class HtmlFrame(wx.Frame): - def _init_ctrls(self, prnt): - wx.Frame.__init__(self, id=ID_HTMLFRAME, name='HtmlFrame', - parent=prnt, pos=wx.Point(320, 231), size=wx.Size(853, 616), - style=wx.DEFAULT_FRAME_STYLE, title='') - self.Bind(wx.EVT_CLOSE, self.OnCloseFrame) - - self.HtmlContent = UrlClickHtmlWindow(id=ID_HTMLFRAMEHTMLCONTENT, - name='HtmlContent', parent=self, pos=wx.Point(0, 0), - size=wx.Size(-1, -1), style=wx.html.HW_SCROLLBAR_AUTO|wx.html.HW_NO_SELECTION) - self.HtmlContent.Bind(HtmlWindowUrlClick, self.OnLinkClick) - - def __init__(self, parent, opened): - self._init_ctrls(parent) - self.HtmlFrameOpened = opened - - def SetHtmlCode(self, htmlcode): - self.HtmlContent.SetPage(htmlcode) - - def SetHtmlPage(self, htmlpage): - self.HtmlContent.LoadPage(htmlpage) - - def OnCloseFrame(self, event): - self.HtmlFrameOpened.remove(self.GetTitle()) - event.Skip() - - def OnLinkClick(self, event): - url = event.linkinfo[0] - try: - if wx.Platform == '__WXMSW__': - import webbrowser - webbrowser.open(url) - elif subprocess.call("firefox %s"%url, shell=True) != 0: - wx.MessageBox("""Firefox browser not found.\nPlease point your browser at :\n%s""" % url) - except ImportError: - wx.MessageBox('Please point your browser at: %s' % url) \ No newline at end of file diff -r c141dad94ff4 -r 4d437bc0ef3f docutils/docpdf.py --- a/docutils/docpdf.py Mon May 07 18:53:16 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor -#based on the plcopen standard. -# -#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD -# -#See COPYING file for copyrights details. -# -#This library is free software; you can redistribute it and/or -#modify it under the terms of the GNU General Public -#License as published by the Free Software Foundation; either -#version 2.1 of the License, or (at your option) any later version. -# -#This library is distributed in the hope that it will be useful, -#but WITHOUT ANY WARRANTY; without even the implied warranty of -#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -#General Public License for more details. -# -#You should have received a copy of the GNU General Public -#License along with this library; if not, write to the Free Software -#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import wx, os - -readerexepath = None - -def get_acroversion(): - " Return version of Adobe Acrobat executable or None" - import _winreg - adobesoft = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'Software\Adobe') - for index in range(_winreg.QueryInfoKey(adobesoft)[0]): - key = _winreg.EnumKey(adobesoft, index) - if "acrobat" in key.lower(): - acrokey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, 'Software\\Adobe\\%s' % key) - for index in range(_winreg.QueryInfoKey(acrokey)[0]): - numver = _winreg.EnumKey(acrokey, index) - try: - res = _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE, 'Software\\Adobe\\%s\\%s\\InstallPath' % (key, numver)) - return res - except: - pass - return None - -def open_win_pdf(readerexepath, pdffile, pagenum = None): - if pagenum != None : - os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", "/A", "page=%d=OpenActions" % pagenum, '"%s"'%pdffile) - else: - os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", '"%s"'%pdffile) - -def open_lin_pdf(readerexepath, pdffile, pagenum = None): - if pagenum == None : - os.system("%s -remote DS301 %s &"%(readerexepath, pdffile)) - else: - print "Open pdf %s at page %d"%(pdffile, pagenum) - os.system("%s -remote DS301 %s %d &"%(readerexepath, pdffile, pagenum)) - -def open_pdf(pdffile, pagenum = None): - if wx.Platform == '__WXMSW__' : - try: - readerpath = get_acroversion() - except: - wx.MessageBox("Acrobat Reader is not found or installed !") - return None - - readerexepath = os.path.join(readerpath, "AcroRd32.exe") - if(os.path.isfile(readerexepath)): - open_win_pdf(readerexepath, pdffile, pagenum) - else: - return None - else: - readerexepath = os.path.join("/usr/bin","xpdf") - if(os.path.isfile(readerexepath)): - open_lin_pdf(readerexepath, pdffile, pagenum) - else: - wx.MessageBox("xpdf is not found or installed !") - return None diff -r c141dad94ff4 -r 4d437bc0ef3f docutils/docsvg.py --- a/docutils/docsvg.py Mon May 07 18:53:16 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor -#based on the plcopen standard. -# -#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD -# -#See COPYING file for copyrights details. -# -#This library is free software; you can redistribute it and/or -#modify it under the terms of the GNU General Public -#License as published by the Free Software Foundation; either -#version 2.1 of the License, or (at your option) any later version. -# -#This library is distributed in the hope that it will be useful, -#but WITHOUT ANY WARRANTY; without even the implied warranty of -#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -#General Public License for more details. -# -#You should have received a copy of the GNU General Public -#License along with this library; if not, write to the Free Software -#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import wx, os, subprocess - -def get_inkscape_path(): - """ Return the Inkscape path """ - import _winreg - svgexepath = _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE, - 'Software\\Classes\\svgfile\\shell\\Inkscape\\command') - svgexepath = svgexepath.replace('"%1"', '') - return svgexepath.replace('"', '') - -def open_win_svg(svgexepath, svgfile): - """ Open Inkscape on Windows platform """ - popenargs = [svgexepath] - if svgfile is not None : - popenargs.append(svgfile) - subprocess.Popen(popenargs).pid - -def open_lin_svg(svgexepath, svgfile): - """ Open Inkscape on Linux platform """ - if os.path.isfile("/usr/bin/inkscape"): - os.system("%s %s &"%(svgexepath , svgfile)) - -def open_svg(svgfile): - """ Generic function to open SVG file """ - if wx.Platform == '__WXMSW__' : - svgexepath = get_inkscape_path() - try: - open_win_svg(svgexepath , svgfile) - except: - wx.MessageBox("Inkscape is not found or installed !") - return None - else: - svgexepath = os.path.join("/usr/bin","inkscape") - if(os.path.isfile(svgexepath)): - open_lin_svg(svgexepath, svgfile) - else: - wx.MessageBox("Inkscape is not found or installed !") - return None - diff -r c141dad94ff4 -r 4d437bc0ef3f xmlclass/xsdschema.py --- a/xmlclass/xsdschema.py Mon May 07 18:53:16 2012 +0200 +++ b/xmlclass/xsdschema.py Wed May 09 00:39:08 2012 +0200 @@ -1086,17 +1086,17 @@ """ This function opens the xsd file and generate the classes from the xml tree """ -def GenerateClassesFromXSD(filepath, declare=False): +def GenerateClassesFromXSD(filepath): xsdfile = open(filepath, 'r') factory = XSDClassFactory(minidom.parse(xsdfile), filepath) xsdfile.close() - return GenerateClasses(factory, declare) + return GenerateClasses(factory) """ This function generate the classes from the xsd given as a string """ -def GenerateClassesFromXSDstring(xsdstring, declare=False): - return GenerateClasses(XSDClassFactory(minidom.parseString(xsdstring)), declare) +def GenerateClassesFromXSDstring(xsdstring): + return GenerateClasses(XSDClassFactory(minidom.parseString(xsdstring))) #-------------------------------------------------------------------------------