diff python/ide.py @ 152:b73bc14a3aa3

Light coupling ide and c3 frontend
author Windel Bouwman
date Sat, 02 Mar 2013 09:56:12 +0100
parents 1cc59ac80950
children 81e08e2e7777
line wrap: on
line diff
--- a/python/ide.py	Fri Mar 01 17:13:56 2013 +0100
+++ b/python/ide.py	Sat Mar 02 09:56:12 2013 +0100
@@ -12,6 +12,7 @@
 from astviewer import AstViewer
 from codeeditor import CodeEdit
 stutil = __import__('st-util')
+import testc3
 
 lcfospng = base64.decodestring(b'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A\n/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJEhMKBk7B678AAAA/SURBVFjD\n7dbBCQAgDATBi9h/y7EFA4Kf2QLCwH1S6XQu6sqoujublc8BAAAAAAAAAAB8B+zXT6YJAAAAAKYd\nWSgFQNUyijIAAAAASUVORK5CYII=\n')
 
@@ -33,8 +34,7 @@
    def setErrorList(self, errorlist):
       model = QStandardItemModel()
       for e in errorlist:
-         row, col, msg = e
-         item = QStandardItem(str(msg))
+         item = QStandardItem(str(e))
          item.setData(e)
          model.appendRow(item)
       self.setModel(model)
@@ -193,6 +193,11 @@
     self.settings = QSettings('windelsoft', 'lcfoside')
     self.loadSettings()
 
+    ce = self.newFile()
+    ce.setSource(testc3.testsrc)
+
+    self.diag = ppci.DiagnosticsManager()
+
   # File handling:
   def newProject(self):
      filename = QFileDialog.getSaveFileName(self, \
@@ -203,7 +208,10 @@
         self.project.save()
 
   def newFile(self):
-     self.loadFile('main.ks')
+     ce = CodeEdit()
+     self.mdiArea.addSubWindow(ce)
+     ce.show()
+     return ce
   def openFile(self):
      filename = QFileDialog.getOpenFileName(self, "Open K# file...", "*.ks", "K# source files (*.ks)")
      if filename:
@@ -281,9 +289,6 @@
         self.restoreState(self.settings.value('mainwindowstate'))
      if self.settings.contains('mainwindowgeometry'):
         self.restoreGeometry(self.settings.value('mainwindowgeometry'))
-     if self.settings.contains('openedproject'):
-        projectfile = self.settings.value('openedproject')
-        #self.loadProject(projectfile)
      if self.settings.contains('lastfile'):
         self.loadFile(self.settings.value('lastfile'))
   
@@ -297,6 +302,10 @@
      if ac:
         if ac.filename:
            self.settings.setValue('lastfile', ac.filename)
+        else:
+           self.settings.remove('lastfile')
+     else:
+        self.settings.remove('lastfile')
      ev.accept()
 
   # Error handling:
@@ -311,34 +320,38 @@
          ce.clearErrors()
 
   def errorSelected(self, err):
-     row, col, msg = err
      ce = self.activeMdiChild()
      if not ce:
         return
-     ce.highlightErrorLocation(row, col)
+     ce.highlightErrorLocation(err.loc.row, err.loc.col)
 
   # Project loading:
 
   # Build recepy:
   def buildFile(self):
      ce = self.activeMdiChild()
+     print('BUILD file')
      if ce:
         source = ce.source
         self.buildOutput.clear()
         self.buildOutput.append(str(self.compiler))
-        ast = self.compiler.compilesource(source)
+        ast = testc3.c3compile(source, self.diag)
+        #ast = self.compiler.compilesource(source)
         self.astViewer.setAst(ast)
         self.buildOutput.append("Done!")
   def buildProject(self):
      """ Build project """
+     print('BUILD project')
      self.buildOutput.clear()
+     self.diag.diags.clear()
      self.buildOutput.append(str(self.compiler))
-     mods = self.compiler.compileProject(self.project)
+     self.buildFile()
+     #mods = self.compiler.compileProject(self.project)
 
-     #self.builderrors.setErrorList(self.compiler.errorlist)
-     self.astViewer.setAst(mods[0])
-     #for err in self.compiler.errorlist:
-     #   self.buildOutput.append(str(err))
+     self.builderrors.setErrorList(self.diag.diags)
+     #self.astViewer.setAst(mods[0])
+     for err in self.diag.diags:
+        self.buildOutput.append(str(err))
      self.buildOutput.append("Done!")
 
 if __name__ == '__main__':