Revision: 23852
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23852
Author:   mxcurioni
Date:     2009-10-15 05:32:53 +0200 (Thu, 15 Oct 2009)

Log Message:
-----------
TK's patch to correct the PythonInterpereter

Modified Paths:
--------------
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/application/Controller.cpp
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/application/Controller.h
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/system/PythonInterpreter.h

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/application/Controller.cpp
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/application/Controller.cpp
      2009-10-15 01:34:29 UTC (rev 23851)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/application/Controller.cpp
      2009-10-15 03:32:53 UTC (rev 23852)
@@ -71,7 +71,7 @@
 
 
 
-Controller::Controller()
+Controller::Controller(bContext* C)
 {
        
   const string sep(Config::DIR_SEP.c_str());
@@ -108,7 +108,7 @@
 
   _Canvas = new AppCanvas;
 
-  _inter = new PythonInterpreter;
+  _inter = new PythonInterpreter(C);
   _EnableQI = true;
   _ComputeRidges = true;
   _ComputeSteerableViewMap = false;

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/application/Controller.h
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/application/Controller.h
        2009-10-15 01:34:29 UTC (rev 23851)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/application/Controller.h
        2009-10-15 03:32:53 UTC (rev 23852)
@@ -66,7 +66,7 @@
 class Controller
 {
 public:
-  Controller() ;
+  Controller(bContext* C) ;
   ~Controller() ;
   
   void setView(AppView *iView);

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
     2009-10-15 01:34:29 UTC (rev 23851)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
     2009-10-15 03:32:53 UTC (rev 23852)
@@ -60,7 +60,7 @@
                if( !freestyle_is_initialized ) {
 
                        pathconfig = new Config::Path;
-                       controller = new Controller;
+                       controller = new Controller(C);
                        view = new AppView;
                        controller->setView(view);
                        

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/system/PythonInterpreter.h
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/system/PythonInterpreter.h
      2009-10-15 01:34:29 UTC (rev 23851)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/system/PythonInterpreter.h
      2009-10-15 03:32:53 UTC (rev 23852)
@@ -51,8 +51,9 @@
 {
  public:
 
-  PythonInterpreter() {
+  PythonInterpreter(bContext* C) {
     _language = "Python";
+       _context = C;
     //Py_Initialize();
   }
 
@@ -62,16 +63,33 @@
 
   int interpretFile(const string& filename) {
 
-       bContext* C = CTX_create();
-       ReportList* reports = (ReportList*) MEM_mallocN(sizeof(ReportList), 
"freestyleExecutionReportList");
+       initPath();
        
-       initPath(C);
-       
-       BKE_reports_init(reports, RPT_ERROR);
+       ReportList* reports = CTX_wm_reports(_context);
+       BKE_reports_clear(reports);
        char *fn = const_cast<char*>(filename.c_str());
+#if 0
+       int status = BPY_run_python_script(_context, fn, NULL, reports);
+#else
+       int status;
+       FILE *fp = fopen(fn, "r");
+       if (fp) {
+               struct Text *text = add_empty_text("tmp_freestyle.txt");
+               char buf[256];
+               while (fgets(buf, sizeof(buf), fp) != NULL)
+                       txt_insert_buf(text, buf);
+               fclose(fp);
 
-       int status = BPY_run_python_script( C, fn, NULL, reports);
+               status = BPY_run_python_script(_context, NULL, text, reports);
 
+               unlink_text(G.main, text);
+               free_libblock(&G.main->text, text);
+       } else {
+               BKE_reportf(reports, RPT_ERROR, "Cannot open file: %s", fn);
+               status = 0;
+       }
+#endif
+
        if (status != 1) {
                cout << "\nError executing Python script from 
PythonInterpreter::interpretFile" << endl;
                cout << "File: " << fn << endl;
@@ -81,12 +99,7 @@
        }
 
        // cleaning up
-       CTX_free( C );
        BKE_reports_clear(reports);
-       if ((reports->flag & RPT_FREE) == 0)
-       {
-               MEM_freeN(reports);
-       }
        
        return 0;
   }
@@ -110,7 +123,9 @@
 
 private:
 
-  static void initPath(bContext* C) {
+  bContext* _context;
+
+  void initPath() {
        if (_initialized)
                return;
 
@@ -129,7 +144,7 @@
                }
        }
        
-       BPY_run_python_script( C, NULL, text, NULL);
+       BPY_run_python_script(_context, NULL, text, NULL);
        
        // cleaning up
        unlink_text(G.main, text);


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to