Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2009-04-11 06:18:24 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-04-11 06:18:24 +0400
commitc7b587105fae174c47bd29291ac384037af06685 (patch)
treea2f8c88ea1bffb2864350ba3a494f2ceb9601117 /source/blender/python/intern
parent3ed5e2153796fb633f20d49ce7eac0db6bb82a74 (diff)
UI:
* Added very basic loading of .py files on startup to define panels. It now executes all .py files in .blender/ui on startup. Right now this contains the object buttons, the C code for it is commented out. These files should get embedded in the blender executable as well eventually, that's a bit more complicated so this works for now. * For scons and cmake it seems to copy & find the files OK, for make only "make release" works (same with scripts/ folder it seems). * Added BLI_gethome_folder function in BLI_util.h. This is adapted from bpy_gethome, and gives the path to a folder in .blender like scripts or ui. There's plenty of things to figure out here about paths, embedding, caching, user configs ...
Diffstat (limited to 'source/blender/python/intern')
-rw-r--r--source/blender/python/intern/bpy_interface.c56
1 files changed, 52 insertions, 4 deletions
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index f8031368f06..667dd14283f 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -1,13 +1,19 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#ifndef WIN32
+#include <dirent.h>
+#else
+#include "BLI_winstuff.h"
+#endif
#include <Python.h>
#include "compile.h" /* for the PyCodeObject */
#include "eval.h" /* for PyEval_EvalCode */
-#include "BKE_context.h"
-
#include "bpy_compat.h"
#include "bpy_rna.h"
@@ -15,11 +21,15 @@
#include "bpy_ui.h"
#include "DNA_space_types.h"
-
-#include "BKE_text.h"
#include "DNA_text_types.h"
+
#include "MEM_guardedalloc.h"
+#include "BLI_util.h"
+
+#include "BKE_context.h"
+#include "BKE_text.h"
+
void BPY_free_compiled_text( struct Text *text )
{
if( text->compiled ) {
@@ -293,3 +303,41 @@ int BPY_run_python_script_space(const char *modulename, const char *func)
return 1;
}
#endif
+
+/* XXX this is temporary, need a proper script registration system for 2.5 */
+void BPY_run_ui_scripts(bContext *C)
+{
+ DIR *dir;
+ struct dirent *de;
+ struct stat status;
+ char *file_extension;
+ char path[FILE_MAX];
+ char *dirname= BLI_gethome_folder("ui");
+
+ if(!dirname)
+ return;
+
+ dir = opendir(dirname);
+
+ if(!dir)
+ return;
+
+ if (dir != NULL) {
+ while((de = readdir(dir)) != NULL) {
+ BLI_make_file_string("/", path, dirname, de->d_name);
+
+ stat(path, &status);
+
+ /* run if it is a .py file */
+ if(S_ISREG(status.st_mode)) {
+ file_extension = strstr(de->d_name, ".py");
+
+ if(file_extension && *(file_extension + 3) == '\0')
+ BPY_run_python_script(C, path, NULL);
+ }
+ }
+
+ closedir(dir);
+ }
+}
+