diff python/libs/project.py @ 67:99bf4f7d47f4

Changed project storage
author windel
date Fri, 12 Oct 2012 16:11:31 +0200
parents 32078200cdd6
children 654c5ac4f2c5
line wrap: on
line diff
--- a/python/libs/project.py	Sun Oct 07 17:27:09 2012 +0200
+++ b/python/libs/project.py	Fri Oct 12 16:11:31 2012 +0200
@@ -1,70 +1,32 @@
 """
- Project that can be stored to and loaded from XML.
+ source project
+ contains:
+ - modules
+   - primitives like functions, types and variables
+   - other modules
+
 """
 
-from xml.sax import ContentHandler, make_parser
-import xml.dom.minidom as md
-import os.path
-
-class ProjectContentHandler(ContentHandler):
-   def __init__(self, project):
-      self.project =  project
-      self.inFiles = False
-   def startElement(self, name, attrs):
-      if name == 'Project':
-         self.project.name = attrs['name']
-      if name == 'Files':
-         self.inFiles = True
-      if name == 'File' and self.inFiles:
-         self.project.files.append(attrs['Filename'])
-   def endElement(self, name):
-      if name == 'Files':
-         self.inFiles = False
-
-class ProjectFile:
-   def __init__(self, filename):
-      self.filename = filename
+import json
 
 class Project:
-   def __init__(self, filename, isnew=False):
+   def __init__(self, filename=None):
       self.name = ""
-      self.files = []
+      self.modules = []
+      self.elements = []
       self.settings = {}
       self.filename = filename
 
-      if not isnew:
+      if self.filename:
          """ Load the project from the XML file """
-         parser = make_parser()
-         handler = ProjectContentHandler(self)
-         parser.setContentHandler(handler)
-         parser.parse(filename)
-
-   def save(self, filename):
-      """ Save the project in XML format """
-      # Create document:
-      doc = md.Document()
-      # Add project:
-      project = doc.createElement("Project")
-      project.setAttribute("name", self.name)
-      doc.appendChild(project)
+         with open(self.filename, 'r') as f:
+            d = json.load(f)
+         self.elements = d['elements']
 
-      # Add project files:
-      filesNode = doc.createElement("Files")
-      project.appendChild(filesNode)
-      for f in self.files:
-         fe = doc.createElement("File")
-         fe.setAttribute("Filename", f)
-         filesNode.appendChild(fe)
+   def save(self):
+      if self.filename:
+         d = {'elements': self.elements}
+         print(d)
+         with open(self.filename, 'w') as f:
+            json.dump(d, f)
 
-      # Write the XML file:
-      xml = doc.toprettyxml()
-      with open(filename, 'w') as f:
-         f.write(xml)
-
-   def loadProjectFile(self, filename):
-      basedir = os.path.dirname(self.filename)
-      filename = os.path.join(basedir, filename)
-      with open(filename, 'r') as f:
-         src = f.read()
-      return src
-