[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20591] branches/blender2.5/blender/source /blender/editors: UI:
Brecht Van Lommel
brecht at blender.org
Wed Jun 3 02:09:30 CEST 2009
Revision: 20591
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20591
Author: blendix
Date: 2009-06-03 02:09:30 +0200 (Wed, 03 Jun 2009)
Log Message:
-----------
UI:
* Make modifier and constraint templates use left/right alignment for
buttons in the header.
* Added mdef bind operator as an example of how to use local context
for a modifier, and add some code I forgot to commit last time to
make this system actually work.
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/editors/include/ED_object.h
branches/blender2.5/blender/source/blender/editors/interface/interface.c
branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
branches/blender2.5/blender/source/blender/editors/object/object_intern.h
branches/blender2.5/blender/source/blender/editors/object/object_modifier.c
branches/blender2.5/blender/source/blender/editors/object/object_ops.c
Modified: branches/blender2.5/blender/source/blender/editors/include/ED_object.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_object.h 2009-06-03 00:04:48 UTC (rev 20590)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_object.h 2009-06-03 00:09:30 UTC (rev 20591)
@@ -56,7 +56,7 @@
void ED_object_apply_obmat(struct Object *ob);
/* single object duplicate, if dupflag==0, fully linked, else it uses U.dupflag */
-Base *ED_object_add_duplicate(struct Scene *scene, struct Base *base, int usedupflag);
+struct Base *ED_object_add_duplicate(struct Scene *scene, struct Base *base, int usedupflag);
/* bitflags for enter/exit editmode */
Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c 2009-06-03 00:04:48 UTC (rev 20590)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c 2009-06-03 00:09:30 UTC (rev 20591)
@@ -537,10 +537,17 @@
/* temp? Proper check for greying out */
if(but->optype) {
wmOperatorType *ot= but->optype;
+
+ if(but->context)
+ CTX_store_set((bContext*)C, but->context);
+
if(ot==NULL || (ot->poll && ot->poll((bContext *)C)==0)) {
but->flag |= UI_BUT_DISABLED;
but->lock = 1;
}
+
+ if(but->context)
+ CTX_store_set((bContext*)C, NULL);
}
/* only update soft range while not editing */
Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c 2009-06-03 00:04:48 UTC (rev 20590)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c 2009-06-03 00:09:30 UTC (rev 20591)
@@ -160,6 +160,8 @@
PointerRNA rnapoin;
PropertyRNA *rnaprop;
+
+ bContextStore *context;
} uiAfterFunc;
static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState state);
@@ -252,6 +254,9 @@
after->rnapoin= but->rnapoin;
after->rnaprop= but->rnaprop;
+ if(but->context)
+ after->context= CTX_store_copy(but->context);
+
but->optype= NULL;
but->opcontext= 0;
but->opptr= NULL;
@@ -273,6 +278,9 @@
after= *afterf; /* copy to avoid memleak on exit() */
BLI_freelinkN(&funcs, afterf);
+ if(after.context)
+ CTX_store_set(C, after.context);
+
if(after.func)
after.func(C, after.func_arg1, after.func_arg2);
if(after.funcN)
@@ -292,6 +300,11 @@
if(after.rnapoin.data)
RNA_property_update(C, &after.rnapoin, after.rnaprop);
+
+ if(after.context) {
+ CTX_store_set(C, NULL);
+ CTX_store_free(after.context);
+ }
}
}
Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c 2009-06-03 00:04:48 UTC (rev 20590)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c 2009-06-03 00:09:30 UTC (rev 20591)
@@ -240,33 +240,16 @@
#define ERROR_LIBDATA_MESSAGE "Can't edit external libdata"
-#define B_NOP 0
-#define B_MODIFIER_RECALC 1
-#define B_MODIFIER_REDRAW 2
-#define B_CHANGEDEP 3
-#define B_ARM_RECALCDATA 4
-
#include <string.h>
-#include "DNA_armature_types.h"
-#include "DNA_curve_types.h"
#include "DNA_object_force.h"
#include "DNA_object_types.h"
-#include "DNA_mesh_types.h"
-#include "DNA_meshdata_types.h"
#include "DNA_modifier_types.h"
-#include "DNA_particle_types.h"
#include "DNA_scene_types.h"
-#include "BKE_bmesh.h"
-#include "BKE_curve.h"
#include "BKE_depsgraph.h"
#include "BKE_DerivedMesh.h"
-#include "BKE_displist.h"
#include "BKE_global.h"
-#include "BKE_lattice.h"
-#include "BKE_main.h"
-#include "BKE_mesh.h"
#include "BKE_modifier.h"
#include "BKE_object.h"
#include "BKE_particle.h"
@@ -280,33 +263,20 @@
#include "ED_object.h"
-void do_modifier_panels(bContext *C, void *arg, int event)
+static void modifiers_del(bContext *C, void *ob_v, void *md_v)
{
Scene *scene= CTX_data_scene(C);
- Object *ob = CTX_data_active_object(C);
+ Object *ob= ob_v;
+ ReportList reports;
- switch(event) {
- case B_MODIFIER_REDRAW:
- WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
- break;
+ BKE_reports_init(&reports, RPT_STORE);
- case B_MODIFIER_RECALC:
+ if(ED_object_modifier_delete(&reports, ob_v, md_v)) {
WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
- object_handle_update(scene, ob);
- // XXX countall();
- break;
- }
-}
-static void modifiers_del(bContext *C, void *ob_v, void *md_v)
-{
- ReportList reports;
-
- BKE_reports_init(&reports, RPT_STORE);
-
- if(ED_object_modifier_delete(&reports, ob_v, md_v))
ED_undo_push(C, "Delete modifier");
+ }
else
uiPupMenuReports(C, &reports);
@@ -315,12 +285,18 @@
static void modifiers_moveUp(bContext *C, void *ob_v, void *md_v)
{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= ob_v;
ReportList reports;
BKE_reports_init(&reports, RPT_STORE);
- if(ED_object_modifier_move_up(&reports, ob_v, md_v))
+ if(ED_object_modifier_move_up(&reports, ob_v, md_v)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
ED_undo_push(C, "Move modifier");
+ }
else
uiPupMenuReports(C, &reports);
@@ -329,12 +305,18 @@
static void modifiers_moveDown(bContext *C, void *ob_v, void *md_v)
{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= ob_v;
ReportList reports;
BKE_reports_init(&reports, RPT_STORE);
- if(ED_object_modifier_move_down(&reports, ob_v, md_v))
+ if(ED_object_modifier_move_down(&reports, ob_v, md_v)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
ED_undo_push(C, "Move modifier");
+ }
else
uiPupMenuReports(C, &reports);
@@ -344,12 +326,17 @@
static void modifiers_convertParticles(bContext *C, void *obv, void *mdv)
{
Scene *scene= CTX_data_scene(C);
+ Object *ob= obv;
ReportList reports;
BKE_reports_init(&reports, RPT_STORE);
- if(ED_object_modifier_convert(&reports, scene, obv, mdv))
+ if(ED_object_modifier_convert(&reports, scene, obv, mdv)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
ED_undo_push(C, "Convert particles to mesh object(s).");
+ }
else
uiPupMenuReports(C, &reports);
@@ -359,12 +346,17 @@
static void modifiers_applyModifier(bContext *C, void *obv, void *mdv)
{
Scene *scene= CTX_data_scene(C);
+ Object *ob= obv;
ReportList reports;
BKE_reports_init(&reports, RPT_STORE);
- if(ED_object_modifier_apply(&reports, scene, obv, mdv))
+ if(ED_object_modifier_apply(&reports, scene, obv, mdv)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
ED_undo_push(C, "Apply modifier");
+ }
else
uiPupMenuReports(C, &reports);
@@ -373,12 +365,17 @@
static void modifiers_copyModifier(bContext *C, void *ob_v, void *md_v)
{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= ob_v;
ReportList reports;
BKE_reports_init(&reports, RPT_STORE);
- if(ED_object_modifier_copy(&reports, ob_v, md_v))
+ if(ED_object_modifier_copy(&reports, ob_v, md_v)) {
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
ED_undo_push(C, "Copy modifier");
+ }
else
uiPupMenuReports(C, &reports);
@@ -387,21 +384,27 @@
static void modifiers_setOnCage(bContext *C, void *ob_v, void *md_v)
{
+ Scene *scene= CTX_data_scene(C);
Object *ob = ob_v;
ModifierData *md;
int i, cageIndex = modifiers_getCageIndex(ob, NULL );
- for( i = 0, md=ob->modifiers.first; md; ++i, md=md->next )
- if( md == md_v ) {
- if( i >= cageIndex )
+ for(i = 0, md=ob->modifiers.first; md; ++i, md=md->next) {
+ if(md == md_v) {
+ if(i >= cageIndex)
md->mode ^= eModifierMode_OnCage;
break;
}
+ }
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
}
static void modifiers_convertToReal(bContext *C, void *ob_v, void *md_v)
{
+ Scene *scene= CTX_data_scene(C);
Object *ob = ob_v;
ModifierData *md = md_v;
ModifierData *nmd = modifier_new(md->type);
@@ -413,170 +416,57 @@
ob->partype = PAROBJECT;
+ WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
ED_undo_push(C, "Modifier convert to real");
}
-#if 0
-static void modifiers_clearHookOffset(bContext *C, void *ob_v, void *md_v)
+static int modifier_can_delete(ModifierData *md)
{
- Object *ob = ob_v;
- ModifierData *md = md_v;
- HookModifierData *hmd = (HookModifierData*) md;
-
- if (hmd->object) {
- Mat4Invert(hmd->object->imat, hmd->object->obmat);
- Mat4MulSerie(hmd->parentinv, hmd->object->imat, ob->obmat, NULL, NULL, NULL, NULL, NULL, NULL);
- ED_undo_push(C, "Clear hook offset");
- }
-}
+ // deletion over the deflection panel
+ // fluid particle modifier can't be deleted here
-static void modifiers_cursorHookCenter(bContext *C, void *ob_v, void *md_v)
-{
- /* XXX
- Object *ob = ob_v;
- ModifierData *md = md_v;
- HookModifierData *hmd = (HookModifierData*) md;
+ if(md->type==eModifierType_Fluidsim)
+ return 0;
+ if(md->type==eModifierType_Collision)
+ return 0;
+ if(md->type==eModifierType_Surface)
+ return 0;
+ if(md->type == eModifierType_ParticleSystem)
+ if(((ParticleSystemModifierData *)md)->psys->part->type == PART_FLUID)
+ return 0;
- if(G.vd) {
- float *curs = give_cursor();
- float bmat[3][3], imat[3][3];
-
- where_is_object(ob);
-
- Mat3CpyMat4(bmat, ob->obmat);
- Mat3Inv(imat, bmat);
-
- curs= give_cursor();
- hmd->cent[0]= curs[0]-ob->obmat[3][0];
- hmd->cent[1]= curs[1]-ob->obmat[3][1];
- hmd->cent[2]= curs[2]-ob->obmat[3][2];
- Mat3MulVecfl(imat, hmd->cent);
-
- ED_undo_push(C, "Hook cursor center");
- }*/
+ return 1;
}
-static void modifiers_selectHook(bContext *C, void *ob_v, void *md_v)
-{
- /* XXX ModifierData *md = md_v;
- HookModifierData *hmd = (HookModifierData*) md;
-
- hook_select(hmd);*/
-}
-
-static void modifiers_reassignHook(bContext *C, void *ob_v, void *md_v)
-{
- /* XXX ModifierData *md = md_v;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list