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
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')
-rw-r--r--source/blender/python/BPY_extern.h1
-rw-r--r--source/blender/python/intern/bpy_interface.c56
2 files changed, 53 insertions, 4 deletions
diff --git a/source/blender/python/BPY_extern.h b/source/blender/python/BPY_extern.h
index 690dc7144e6..f46ef0fa670 100644
--- a/source/blender/python/BPY_extern.h
+++ b/source/blender/python/BPY_extern.h
@@ -99,6 +99,7 @@ extern "C" {
/* 2.5 UI Scripts */
int BPY_run_python_script( struct bContext *C, const char *filename, struct Text *text ); // 2.5 working
int BPY_run_script_space_draw(struct bContext *C, struct SpaceScript * sc); // 2.5 working
+ void BPY_run_ui_scripts(struct bContext *C);
// int BPY_run_script_space_listener(struct bContext *C, struct SpaceScript * sc, struct ARegion *ar, struct wmNotifier *wmn); // 2.5 working
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);
+ }
+}
+