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:
authorCampbell Barton <ideasman42@gmail.com>2010-06-01 12:15:43 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-06-01 12:15:43 +0400
commited3a7bd299c4b6a0ed2712065be7ca59da9931fe (patch)
treeae6cb5bf7ae0f3e055af57b2dd9198227d5c025b
parentc902eb8d7e6b737f04c9fa0897db8a75af1fd8ec (diff)
script reload (f8), is closer to working.
there are internal memory problems which can make it crash still. If you remove all directories in the scripts folder except for 'modules' and 'ui', it runs without crashes.
-rw-r--r--release/scripts/modules/bpy/utils.py8
-rw-r--r--release/scripts/op/wm.py13
-rw-r--r--source/blender/editors/screen/screen_ops.c2
-rw-r--r--source/blender/editors/space_script/script_edit.c20
-rw-r--r--source/blender/editors/space_script/script_intern.h1
-rw-r--r--source/blender/editors/space_script/script_ops.c1
6 files changed, 31 insertions, 14 deletions
diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py
index cab5ee5e684..cdf79a760ba 100644
--- a/release/scripts/modules/bpy/utils.py
+++ b/release/scripts/modules/bpy/utils.py
@@ -144,6 +144,9 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
_loaded.append(mod)
if reload_scripts:
+
+ # TODO, this is broken but should work, needs looking into
+ '''
# reload modules that may not be directly included
for type_class_name in dir(_bpy.types):
type_class = getattr(_bpy.types, type_class_name)
@@ -156,6 +159,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
for module_name in sorted(loaded_modules):
print("Reloading:", module_name)
test_reload(_sys.modules[module_name])
+ '''
# loop over and unload all scripts
_loaded.reverse()
@@ -166,6 +170,10 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
unregister()
except:
traceback.print_exc()
+
+ for mod in _loaded:
+ reload(mod)
+
_loaded[:] = []
user_path = user_script_path()
diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py
index 0d204ce72ae..d04d6c7a1dd 100644
--- a/release/scripts/op/wm.py
+++ b/release/scripts/op/wm.py
@@ -543,17 +543,6 @@ class WM_OT_doc_edit(bpy.types.Operator):
return wm.invoke_props_dialog(self, width=600)
-class WM_OT_reload_scripts(bpy.types.Operator):
- '''Load online reference docs'''
- bl_idname = "wm.reload_scripts"
- bl_label = "Reload Scripts"
-
- def execute(self, context):
- MOD = type(bpy)
- bpy.utils.load_scripts(True)
- return {'FINISHED'}
-
-
import rna_prop_ui
classes = [
@@ -577,8 +566,6 @@ classes = [
WM_OT_doc_view,
WM_OT_doc_edit,
- WM_OT_reload_scripts,
-
# experemental!
rna_prop_ui.WM_OT_properties_edit,
rna_prop_ui.WM_OT_properties_add,
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 8b1c0045fd3..a91e6dddf75 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -2998,7 +2998,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SCREEN_OT_repeat_last", RKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_verify_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "SCREEN_OT_redo_last", F6KEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "WM_OT_reload_scripts", F8KEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "SCRIPT_OT_reload", F8KEY, KM_PRESS, 0, 0);
/* files */
WM_keymap_add_item(keymap, "FILE_OT_execute", RETKEY, KM_PRESS, 0, 0);
diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c
index 6ef9a96b478..02993549c94 100644
--- a/source/blender/editors/space_script/script_edit.c
+++ b/source/blender/editors/space_script/script_edit.c
@@ -84,3 +84,23 @@ void SCRIPT_OT_python_file_run(wmOperatorType *ot)
RNA_def_string_file_path(ot->srna, "path", "", 512, "Path", "");
}
+
+static int script_reload_exec(bContext *C, wmOperator *op)
+{
+#ifndef DISABLE_PYTHON
+ BPY_eval_string(C, "__import__('bpy').utils.load_scripts(reload_scripts=True)");
+ return OPERATOR_FINISHED;
+#endif
+ return OPERATOR_CANCELLED;
+}
+
+void SCRIPT_OT_reload(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Reload Scripts";
+ ot->description= "Reload Scripts";
+ ot->idname= "SCRIPT_OT_reload";
+
+ /* api callbacks */
+ ot->exec= script_reload_exec;
+}
diff --git a/source/blender/editors/space_script/script_intern.h b/source/blender/editors/space_script/script_intern.h
index 57e4cc6c793..ed625bb8ec6 100644
--- a/source/blender/editors/space_script/script_intern.h
+++ b/source/blender/editors/space_script/script_intern.h
@@ -39,6 +39,7 @@ void script_operatortypes(void);
void script_keymap(struct wmKeyConfig *keyconf);
/* script_edit.c */
+void SCRIPT_OT_reload(struct wmOperatorType *ot);
void SCRIPT_OT_python_file_run(struct wmOperatorType *ot);
#endif /* ED_SCRIPT_INTERN_H */
diff --git a/source/blender/editors/space_script/script_ops.c b/source/blender/editors/space_script/script_ops.c
index 353d80f1921..61f7cf425d4 100644
--- a/source/blender/editors/space_script/script_ops.c
+++ b/source/blender/editors/space_script/script_ops.c
@@ -55,6 +55,7 @@
void script_operatortypes(void)
{
WM_operatortype_append(SCRIPT_OT_python_file_run);
+ WM_operatortype_append(SCRIPT_OT_reload);
}
void script_keymap(wmKeyConfig *keyconf)