diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-10-24 12:45:55 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-10-24 12:45:55 +0400 |
commit | 70bf00a74c1688e857e3ca1b143b4d7a57a30655 (patch) | |
tree | 8015eb2525a1aeca9c77fcbdf8fe222fff67948d /source/blender/editors | |
parent | dbe2fe5043b99f8a5717bbe5b6a9e36a6519f8c7 (diff) | |
parent | f1cea89d99f0c80bdccd2ba1359142b5ff14cdb9 (diff) |
svn merge ^/trunk/blender -r41200:41226 .
Diffstat (limited to 'source/blender/editors')
20 files changed, 346 insertions, 98 deletions
diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index 7c2f969e187..95324554a06 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -552,7 +552,12 @@ KeyingSet *ANIM_builtin_keyingset_get_named (KeyingSet *prevKS, const char name[ if (strcmp(name, ks->name) == 0) return ks; } - + + /* complain about missing keying sets on debug builds */ +#ifndef NDEBUG + printf("%s: '%s' not found\n", __func__, name); +#endif + /* no matches found */ return NULL; } @@ -687,7 +692,7 @@ KeyingSet *ANIM_get_keyingset_for_autokeying(Scene *scene, const char *tranformK if (IS_AUTOKEY_FLAG(scene, ONLYKEYINGSET) && (scene->active_keyingset)) return ANIM_scene_get_active_keyingset(scene); else if (IS_AUTOKEY_FLAG(scene, INSERTAVAIL)) - return ANIM_builtin_keyingset_get_named(NULL, "Available"); + return ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_AVAILABLE_ID); else return ANIM_builtin_keyingset_get_named(NULL, tranformKSName); } diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index 25d4874379d..34ec2605cdd 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -4949,7 +4949,7 @@ static int pose_clear_transform_generic_exec(bContext *C, wmOperator *op, static int pose_clear_scale_exec(bContext *C, wmOperator *op) { - return pose_clear_transform_generic_exec(C, op, pchan_clear_scale, "Scaling"); + return pose_clear_transform_generic_exec(C, op, pchan_clear_scale, ANIM_KS_SCALING_ID); } void POSE_OT_scale_clear(wmOperatorType *ot) @@ -4970,7 +4970,7 @@ void POSE_OT_scale_clear(wmOperatorType *ot) static int pose_clear_rot_exec(bContext *C, wmOperator *op) { - return pose_clear_transform_generic_exec(C, op, pchan_clear_rot, "Rotation"); + return pose_clear_transform_generic_exec(C, op, pchan_clear_rot, ANIM_KS_ROTATION_ID); } void POSE_OT_rot_clear(wmOperatorType *ot) @@ -4991,7 +4991,7 @@ void POSE_OT_rot_clear(wmOperatorType *ot) static int pose_clear_loc_exec(bContext *C, wmOperator *op) { - return pose_clear_transform_generic_exec(C, op, pchan_clear_loc, "Location"); + return pose_clear_transform_generic_exec(C, op, pchan_clear_loc, ANIM_KS_LOCATION_ID); } void POSE_OT_loc_clear(wmOperatorType *ot) @@ -5012,7 +5012,7 @@ void POSE_OT_loc_clear(wmOperatorType *ot) static int pose_clear_transforms_exec(bContext *C, wmOperator *op) { - return pose_clear_transform_generic_exec(C, op, pchan_clear_transforms, "LocRotScale"); + return pose_clear_transform_generic_exec(C, op, pchan_clear_transforms, ANIM_KS_LOC_ROT_SCALE_ID); } void POSE_OT_transforms_clear(wmOperatorType *ot) diff --git a/source/blender/editors/armature/poseUtils.c b/source/blender/editors/armature/poseUtils.c index 4b22d76ad0b..5c98fdc08bd 100644 --- a/source/blender/editors/armature/poseUtils.c +++ b/source/blender/editors/armature/poseUtils.c @@ -223,7 +223,7 @@ void poseAnim_mapping_autoKeyframe (bContext *C, Scene *scene, Object *ob, ListB { /* insert keyframes as necessary if autokeyframing */ if (autokeyframe_cfra_can_key(scene, &ob->id)) { - KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Whole Character"); + KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, ANIM_KS_WHOLE_CHARACTER_ID); ListBase dsources = {NULL, NULL}; tPChanFCurveLink *pfl; diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c index 8e9f5c7543c..064defb1aef 100644 --- a/source/blender/editors/armature/poselib.c +++ b/source/blender/editors/armature/poselib.c @@ -433,7 +433,7 @@ static int poselib_add_exec (bContext *C, wmOperator *op) bAction *act = poselib_validate(ob); bPose *pose= (ob) ? ob->pose : NULL; TimeMarker *marker; - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Whole Character"); /* this includes custom props :)*/ + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_WHOLE_CHARACTER_ID); /* this includes custom props :)*/ int frame= RNA_int_get(op->ptr, "frame"); char name[64]; @@ -903,7 +903,7 @@ static void poselib_keytag_pose (bContext *C, Scene *scene, tPoseLib_PreviewData bAction *act= pld->act; bActionGroup *agrp; - KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Whole Character"); + KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, ANIM_KS_WHOLE_CHARACTER_ID); ListBase dsources = {NULL, NULL}; short autokey = autokeyframe_cfra_can_key(scene, &pld->ob->id); diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index a978f327993..beae9c12bfe 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -1151,7 +1151,7 @@ static int pose_paste_exec (bContext *C, wmOperator *op) int selOnly= RNA_boolean_get(op->ptr, "selected_mask"); /* get KeyingSet to use */ - KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "LocRotScale"); + KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, ANIM_KS_LOC_ROT_SCALE_ID); /* sanity checks */ if ELEM(NULL, ob, ob->pose) @@ -2165,7 +2165,7 @@ static int pose_flip_quats_exec (bContext *C, wmOperator *UNUSED(op)) { Scene *scene= CTX_data_scene(C); Object *ob= object_pose_armature_get(CTX_data_active_object(C)); - KeyingSet *ks = ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); + KeyingSet *ks = ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_LOC_ROT_SCALE_ID); /* loop through all selected pchans, flipping and keying (as needed) */ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c index 8e83b01fc2f..07858f7182c 100644 --- a/source/blender/editors/gpencil/drawgpencil.c +++ b/source/blender/editors/gpencil/drawgpencil.c @@ -778,7 +778,7 @@ void draw_gpencil_view2d (bContext *C, short onlyv2d) * Note: this gets called twice - first time with only3d=1 to draw 3d-strokes, second time with only3d=0 for screen-aligned strokes */ -void draw_gpencil_view3d_ext (Scene *scene, View3D *v3d, ARegion *ar, short only3d) +void draw_gpencil_view3d (Scene *scene, View3D *v3d, ARegion *ar, short only3d) { bGPdata *gpd; int dflag = 0; @@ -809,12 +809,4 @@ void draw_gpencil_view3d_ext (Scene *scene, View3D *v3d, ARegion *ar, short only gp_draw_data(gpd, rect.xmin, rect.ymin, rect.xmax, rect.ymax, CFRA, dflag); } -void draw_gpencil_view3d (bContext *C, short only3d) -{ - ARegion *ar= CTX_wm_region(C); - View3D *v3d= CTX_wm_view3d(C); - Scene *scene= CTX_data_scene(C); - draw_gpencil_view3d_ext(scene, v3d, ar, only3d); -} - /* ************************************************** */ diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h index bfd16487ae5..a640b5c911c 100644 --- a/source/blender/editors/include/ED_gpencil.h +++ b/source/blender/editors/include/ED_gpencil.h @@ -78,8 +78,7 @@ void ED_operatortypes_gpencil(void); void draw_gpencil_2dimage(struct bContext *C, struct ImBuf *ibuf); void draw_gpencil_view2d(struct bContext *C, short onlyv2d); -void draw_gpencil_view3d(struct bContext *C, short only3d); -void draw_gpencil_view3d_ext(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, short only3d); +void draw_gpencil_view3d(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, short only3d); void gpencil_panel_standard(const struct bContext *C, struct Panel *pa); diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h index 8dd543d8f63..eda84d0e7a4 100644 --- a/source/blender/editors/include/ED_keyframing.h +++ b/source/blender/editors/include/ED_keyframing.h @@ -317,6 +317,14 @@ typedef enum eAnimFilterFlags { int ED_autokeyframe_object(struct bContext *C, struct Scene *scene, struct Object *ob, struct KeyingSet *ks); int ED_autokeyframe_pchan(struct bContext *C, struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan, struct KeyingSet *ks); +/* Names for builtin keying sets so we don't confuse these with labels/text, + * defined in python script: keyingsets_builtins.py */ +#define ANIM_KS_LOCATION_ID "Location" +#define ANIM_KS_ROTATION_ID "Rotation" +#define ANIM_KS_SCALING_ID "Scaling" +#define ANIM_KS_LOC_ROT_SCALE_ID "LocRotScale" +#define ANIM_KS_AVAILABLE_ID "Available" +#define ANIM_KS_WHOLE_CHARACTER_ID "Whole Character" #ifdef __cplusplus } diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 43f6b36f5eb..5e9e7c65f83 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -787,6 +787,7 @@ void uiItemMenuEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propn void UI_buttons_operatortypes(void); /* Helpers for Operators */ +uiBut *uiContextActiveButton(const struct bContext *C); void uiContextActiveProperty(const struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA **prop, int *index); void uiContextActivePropertyHandle(struct bContext *C); void uiContextAnimUpdate(const struct bContext *C); @@ -817,5 +818,9 @@ const char *UI_translate_do_tooltip(const char *msgid); #define IFACE_(msgid) UI_translate_do_iface(msgid) #define TIP_(msgid) UI_translate_do_tooltip(msgid) +/* UI_OT_editsource helpers */ +int UI_editsource_enable_check(void); +void UI_editsource_active_but_test(uiBut *but); + #endif /* UI_INTERFACE_H */ diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index b7b572e7217..f9991079507 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -2562,23 +2562,10 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, const char *str, if(block->curlayout) ui_layout_add_but(block->curlayout, but); -#ifdef WITH_PYTHON_UI_INFO - { - extern void PyC_FileAndNum_Safe(const char **filename, int *lineno); - - const char *fn; - int lineno= -1; - PyC_FileAndNum_Safe(&fn, &lineno); - if (lineno != -1) { - BLI_strncpy(but->py_dbg_fn, fn, sizeof(but->py_dbg_fn)); - but->py_dbg_ln= lineno; - } - else { - but->py_dbg_fn[0]= '\0'; - but->py_dbg_ln= -1; - } + /* if the 'UI_OT_editsource' is running, extract the source info from the button */ + if (UI_editsource_enable_check()) { + UI_editsource_active_but_test(but); } -#endif /* WITH_PYTHON_UI_INFO */ return but; } diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 32c4ec21e13..9f77317292c 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1447,7 +1447,7 @@ static int ui_textedit_type_utf8(uiBut *but, uiHandleButtonData *data, const cha len= strlen(str); if(len-(but->selend - but->selsta)+1 <= data->maxlen) { - int step= BLI_strnlen(utf8_buf, sizeof(utf8_buf)); + int step= BLI_str_utf8_size(utf8_buf); /* type over the current selection */ if ((but->selend - but->selsta) > 0) { @@ -4443,16 +4443,8 @@ static int ui_but_menu(bContext *C, uiBut *but) } } -#ifdef WITH_PYTHON_UI_INFO - if (but->py_dbg_ln != -1) { - PointerRNA ptr_props; - - WM_operator_properties_create(&ptr_props, "WM_OT_text_edit"); - RNA_string_set(&ptr_props, "filepath", but->py_dbg_fn); - RNA_int_set(&ptr_props, "line", but->py_dbg_ln); - uiItemFullO(layout, "WM_OT_text_edit", "Edit Source", ICON_NONE, ptr_props.data, WM_OP_EXEC_DEFAULT, 0); - } -#endif /* WITH_PYTHON_UI_INFO */ + /* perhaps we should move this into (G.f & G_DEBUG) - campbell */ + uiItemFullO(layout, "UI_OT_editsource", "Edit Source", ICON_NONE, NULL, WM_OP_INVOKE_DEFAULT, 0); uiPupMenuEnd(C, pup); @@ -5146,9 +5138,10 @@ void ui_button_active_free(const bContext *C, uiBut *but) } } -static uiBut *ui_context_rna_button_active(const bContext *C) +/* returns the active button with an optional checking function */ +static uiBut *ui_context_button_active(const bContext *C, int (*but_check_cb)(uiBut *)) { - uiBut *rnabut= NULL; + uiBut *but_found= NULL; ARegion *ar= CTX_wm_region(C); @@ -5166,26 +5159,40 @@ static uiBut *ui_context_rna_button_active(const bContext *C) } } - if(activebut && activebut->rnapoin.data) { + if(activebut && (but_check_cb == NULL || but_check_cb(activebut))) { uiHandleButtonData *data= activebut->active; - rnabut= activebut; + but_found= activebut; /* recurse into opened menu, like colorpicker case */ if(data && data->menu && (ar != data->menu->region)) { ar = data->menu->region; } else { - return rnabut; + return but_found; } } else { /* no active button */ - return rnabut; + return but_found; } } - return rnabut; + return but_found; +} + +static int ui_context_rna_button_active_test(uiBut *but) +{ + return (but->rnapoin.data != NULL); +} +static uiBut *ui_context_rna_button_active(const bContext *C) +{ + return ui_context_button_active(C, ui_context_rna_button_active_test); +} + +uiBut *uiContextActiveButton(const struct bContext *C) +{ + return ui_context_button_active(C, NULL); } /* helper function for insert keyframe, reset to default, etc operators */ diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index b7a2227f98a..9d0383c8812 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -252,11 +252,6 @@ struct uiBut { /* pointer back */ uiBlock *block; - -#ifdef WITH_PYTHON_UI_INFO - char py_dbg_fn[240]; - int py_dbg_ln; -#endif }; struct uiBlock { diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c index 081b528d153..eee771cbd93 100644 --- a/source/blender/editors/interface/interface_ops.c +++ b/source/blender/editors/interface/interface_ops.c @@ -61,6 +61,10 @@ #include "WM_api.h" #include "WM_types.h" +/* only for UI_OT_editsource */ +#include "ED_screen.h" +#include "BKE_main.h" +#include "BLI_ghash.h" /* ********************************************************** */ @@ -474,6 +478,242 @@ static void UI_OT_reports_to_textblock(wmOperatorType *ot) ot->exec= reports_to_text_exec; } + +/* ------------------------------------------------------------------------- */ +/* EditSource Utility funcs and operator, + * note, this includes itility functions and button matching checks */ + +struct uiEditSourceStore { + uiBut but_orig; + GHash *hash; +} uiEditSourceStore; + +struct uiEditSourceButStore { + char py_dbg_fn[240]; + int py_dbg_ln; +} uiEditSourceButStore; + +/* should only ever be set while the edit source operator is running */ +struct uiEditSourceStore *ui_editsource_info= NULL; + +int UI_editsource_enable_check(void) +{ + return (ui_editsource_info != NULL); +} + +static void ui_editsource_active_but_set(uiBut *but) +{ + BLI_assert(ui_editsource_info == NULL); + + ui_editsource_info= MEM_callocN(sizeof(uiEditSourceStore), __func__); + memcpy(&ui_editsource_info->but_orig, but, sizeof(uiBut)); + + ui_editsource_info->hash = BLI_ghash_new(BLI_ghashutil_ptrhash, + BLI_ghashutil_ptrcmp, + __func__); +} + +static void ui_editsource_active_but_clear(void) +{ + BLI_ghash_free(ui_editsource_info->hash, NULL, (GHashValFreeFP)MEM_freeN); + MEM_freeN(ui_editsource_info); + ui_editsource_info= NULL; +} + +static int ui_editsource_uibut_match(uiBut *but_a, uiBut *but_b) +{ +#if 0 + printf("matching buttons: '%s' == '%s'\n", + but_a->drawstr, but_b->drawstr); +#endif + + /* this just needs to be a 'good-enough' comparison so we can know beyond + * reasonable doubt that these buttons are the same between redraws. + * if this fails it only means edit-source fails - campbell */ + if( (but_a->x1 == but_b->x1) && + (but_a->x2 == but_b->x2) && + (but_a->y1 == but_b->y1) && + (but_a->y2 == but_b->y2) && + (but_a->type == but_b->type) && + (but_a->rnaprop == but_b->rnaprop) && + (but_a->optype == but_b->optype) && + (but_a->unit_type == but_b->unit_type) && + strncmp(but_a->drawstr, but_b->drawstr, UI_MAX_DRAW_STR) == 0 + ) { + return TRUE; + } + else { + return FALSE; + } +} + +void UI_editsource_active_but_test(uiBut *but) +{ + extern void PyC_FileAndNum_Safe(const char **filename, int *lineno); + + struct uiEditSourceButStore *but_store= MEM_callocN(sizeof(uiEditSourceButStore), __func__); + + const char *fn; + int lineno= -1; + +#if 0 + printf("comparing buttons: '%s' == '%s'\n", + but->drawstr, ui_editsource_info->but_orig.drawstr); +#endif + + PyC_FileAndNum_Safe(&fn, &lineno); + + if (lineno != -1) { + BLI_strncpy(but_store->py_dbg_fn, fn, + sizeof(but_store->py_dbg_fn)); + but_store->py_dbg_ln= lineno; + } + else { + but_store->py_dbg_fn[0]= '\0'; + but_store->py_dbg_ln= -1; + } + + BLI_ghash_insert(ui_editsource_info->hash, but, but_store); +} + +/* editsource operator component */ + +static ScrArea *biggest_text_view(bContext *C) +{ + bScreen *sc= CTX_wm_screen(C); + ScrArea *sa, *big= NULL; + int size, maxsize= 0; + + for(sa= sc->areabase.first; sa; sa= sa->next) { + if(sa->spacetype==SPACE_TEXT) { + size= sa->winx * sa->winy; + if(size > maxsize) { + maxsize= size; + big= sa; + } + } + } + return big; +} + +static int editsource_text_edit(bContext *C, wmOperator *op, + char filepath[240], int line) +{ + struct Main *bmain= CTX_data_main(C); + Text *text; + + for (text=bmain->text.first; text; text=text->id.next) { + if (text->name && BLI_path_cmp(text->name, filepath) == 0) { + break; + } + } + + if (text == NULL) { + text= add_text(filepath, bmain->name); + } + + if (text == NULL) { + BKE_reportf(op->reports, RPT_WARNING, + "file: '%s' can't be opened", filepath); + return OPERATOR_CANCELLED; + } + else { + /* naughty!, find text area to set, not good behavior + * but since this is a dev tool lets allow it - campbell */ + ScrArea *sa= biggest_text_view(C); + if(sa) { + SpaceText *st= sa->spacedata.first; + st->text= text; + } + else { + BKE_reportf(op->reports, RPT_INFO, + "See '%s' in the text editor", text->id.name + 2); + } + + txt_move_toline(text, line - 1, FALSE); + WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + } + + return OPERATOR_FINISHED; +} + +static int editsource_exec(bContext *C, wmOperator *op) +{ + uiBut *but= uiContextActiveButton(C); + + if (but) { + GHashIterator ghi; + struct uiEditSourceButStore *but_store= NULL; + + ARegion *ar= CTX_wm_region(C); + int ret; + + /* needed else the active button does not get tested */ + uiFreeActiveButtons(C, CTX_wm_screen(C)); + + // printf("%s: begin\n", __func__); + + /* take care not to return before calling ui_editsource_active_but_clear */ + ui_editsource_active_but_set(but); + + /* redraw and get active button python info */ + ED_region_do_draw(C, ar); + + for(BLI_ghashIterator_init(&ghi, ui_editsource_info->hash); + !BLI_ghashIterator_isDone(&ghi); + BLI_ghashIterator_step(&ghi)) + { + uiBut *but= BLI_ghashIterator_getKey(&ghi); + if (but && ui_editsource_uibut_match(&ui_editsource_info->but_orig, but)) { + but_store= BLI_ghashIterator_getValue(&ghi); + break; + } + + } + + if (but_store) { + if (but_store->py_dbg_ln != -1) { + ret= editsource_text_edit(C, op, + but_store->py_dbg_fn, + but_store->py_dbg_ln); + } + else { + BKE_report(op->reports, RPT_ERROR, + "Active button isn't from a script, cant edit source."); + ret= OPERATOR_CANCELLED; + } + } + else { + BKE_report(op->reports, RPT_ERROR, + "Active button match can't be found."); + ret= OPERATOR_CANCELLED; + } + + + ui_editsource_active_but_clear(); + + // printf("%s: end\n", __func__); + + return ret; + } + else { + BKE_report(op->reports, RPT_ERROR, "Active button not found"); + return OPERATOR_CANCELLED; + } +} + +static void UI_OT_editsource(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Reports to Text Block"; + ot->idname= "UI_OT_editsource"; + ot->description= "Edit source code for a button"; + + /* callbacks */ + ot->exec= editsource_exec; +} + + /* ********************************************************* */ /* Registration */ @@ -485,5 +725,6 @@ void UI_buttons_operatortypes(void) WM_operatortype_append(UI_OT_reset_default_button); WM_operatortype_append(UI_OT_copy_to_selected_button); WM_operatortype_append(UI_OT_reports_to_textblock); // XXX: temp? + WM_operatortype_append(UI_OT_editsource); } diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index c86cacc960d..13c8f27ee8f 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -253,7 +253,7 @@ static int object_clear_transform_generic_exec(bContext *C, wmOperator *op, static int object_location_clear_exec(bContext *C, wmOperator *op) { - return object_clear_transform_generic_exec(C, op, object_clear_loc, "Location"); + return object_clear_transform_generic_exec(C, op, object_clear_loc, ANIM_KS_LOCATION_ID); } void OBJECT_OT_location_clear(wmOperatorType *ot) @@ -273,7 +273,7 @@ void OBJECT_OT_location_clear(wmOperatorType *ot) static int object_rotation_clear_exec(bContext *C, wmOperator *op) { - return object_clear_transform_generic_exec(C, op, object_clear_rot, "Rotation"); + return object_clear_transform_generic_exec(C, op, object_clear_rot, ANIM_KS_ROTATION_ID); } void OBJECT_OT_rotation_clear(wmOperatorType *ot) @@ -293,7 +293,7 @@ void OBJECT_OT_rotation_clear(wmOperatorType *ot) static int object_scale_clear_exec(bContext *C, wmOperator *op) { - return object_clear_transform_generic_exec(C, op, object_clear_scale, "Scaling"); + return object_clear_transform_generic_exec(C, op, object_clear_scale, ANIM_KS_SCALING_ID); } void OBJECT_OT_scale_clear(wmOperatorType *ot) diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 697cddfcee0..af2cd431a10 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -122,8 +122,6 @@ ImBuf* get_brush_icon(Brush *brush) if (!(brush->icon_imbuf)) { folder= BLI_get_folder(BLENDER_DATAFILES, "brushicons"); - path[0]= 0; - BLI_make_file_string(G.main->name, path, folder, brush->icon_filepath); if (path[0]) diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index ae9ef2c4dfd..e7f5dce14e9 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -58,7 +58,6 @@ #include "BKE_property.h" #include "BKE_tessmesh.h" - #include "BIF_gl.h" #include "BIF_glutil.h" diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index ba9faf7682e..291ef7a3bbf 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1917,7 +1917,7 @@ void draw_depth_gpencil(Scene *scene, ARegion *ar, View3D *v3d) v3d->zbuf= TRUE; glEnable(GL_DEPTH_TEST); - draw_gpencil_view3d_ext(scene, v3d, ar, 1); + draw_gpencil_view3d(scene, v3d, ar, 1); v3d->zbuf= zbuf; @@ -2151,6 +2151,7 @@ static void gpu_update_lamps_shadows(Scene *scene, View3D *v3d) CustomDataMask ED_view3d_datamask(Scene *scene, View3D *v3d) { CustomDataMask mask= 0; + if((v3d->drawtype == OB_TEXTURE) || ((v3d->drawtype == OB_SOLID) && (v3d->flag2 & V3D_SOLID_TEX))) { mask |= CD_MASK_MTFACE | CD_MASK_MCOL; @@ -2331,7 +2332,7 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx, /* must be before xray draw which clears the depth buffer */ if(v3d->zbuf) glDisable(GL_DEPTH_TEST); - draw_gpencil_view3d_ext(scene, v3d, ar, 1); + draw_gpencil_view3d(scene, v3d, ar, 1); if(v3d->zbuf) glEnable(GL_DEPTH_TEST); /* transp and X-ray afterdraw stuff */ @@ -2352,7 +2353,7 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx, ED_region_pixelspace(ar); /* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */ - draw_gpencil_view3d_ext(scene, v3d, ar, 0); + draw_gpencil_view3d(scene, v3d, ar, 0); /* freeing the images again here could be done after the operator runs, leaving for now */ GPU_free_images_anim(); @@ -2513,16 +2514,14 @@ static void draw_viewport_fps(Scene *scene, ARegion *ar) } /* warning: this function has duplicate drawing in ED_view3d_draw_offscreen() */ -void view3d_main_area_draw(const bContext *C, ARegion *ar) +static void view3d_main_area_draw_objects(const bContext *C, ARegion *ar, const char **grid_unit) { Scene *scene= CTX_data_scene(C); View3D *v3d = CTX_wm_view3d(C); RegionView3D *rv3d= CTX_wm_region_view3d(C); Base *base; - Object *ob; float backcol[3]; unsigned int lay_used; - const char *grid_unit= NULL; /* shadow buffers, before we setup matrices */ if(draw_glsl_material(scene, NULL, v3d, v3d->drawtype)) @@ -2572,7 +2571,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) if((rv3d->view == RV3D_VIEW_USER) || (rv3d->persp != RV3D_ORTHO)) { if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { - drawfloor(scene, v3d, &grid_unit); + drawfloor(scene, v3d, grid_unit); } if(rv3d->persp==RV3D_CAMOB) { if(scene->world) { @@ -2589,7 +2588,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) else { if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { ED_region_pixelspace(ar); - drawgrid(&scene->unit, ar, v3d, &grid_unit); + drawgrid(&scene->unit, ar, v3d, grid_unit); /* XXX make function? replaces persp(1) */ glMatrixMode(GL_PROJECTION); glLoadMatrixf(rv3d->winmat); @@ -2664,7 +2663,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { /* must be before xray draw which clears the depth buffer */ if(v3d->zbuf) glDisable(GL_DEPTH_TEST); - draw_gpencil_view3d((bContext *)C, 1); + draw_gpencil_view3d(scene, v3d, ar, 1); if(v3d->zbuf) glEnable(GL_DEPTH_TEST); } @@ -2697,13 +2696,16 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) // TODO: draw something else (but not this) during fly mode draw_rotation_guide(rv3d); - ED_region_pixelspace(ar); - -// retopo_paint_view_update(v3d); -// retopo_draw_paint_lines(); - - /* Draw particle edit brush XXX (removed) */ - +} + +static void view3d_main_area_draw_info(const bContext *C, ARegion *ar, const char *grid_unit) +{ + Scene *scene= CTX_data_scene(C); + View3D *v3d = CTX_wm_view3d(C); + RegionView3D *rv3d= CTX_wm_region_view3d(C); + bScreen *screen= CTX_wm_screen(C); + + Object *ob; if(rv3d->persp==RV3D_CAMOB) drawviewborder(scene, ar, v3d); @@ -2711,7 +2713,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { /* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */ // if (v3d->flag2 & V3D_DISPGP) - draw_gpencil_view3d((bContext *)C, 0); + draw_gpencil_view3d(scene, v3d, ar, 0); drawcursor(scene, ar, v3d); } @@ -2721,7 +2723,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) else draw_view_icon(rv3d); - if((U.uiflag & USER_SHOW_FPS) && (CTX_wm_screen(C)->animtimer)) { + if((U.uiflag & USER_SHOW_FPS) && screen->animtimer) { draw_viewport_fps(scene, ar); } else if(U.uiflag & USER_SHOW_VIEWPORTNAME) { @@ -2741,8 +2743,18 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) ob= OBACT; if(U.uiflag & USER_DRAWVIEWINFO) draw_selected_name(scene, ob); +} + +void view3d_main_area_draw(const bContext *C, ARegion *ar) +{ + View3D *v3d = CTX_wm_view3d(C); + const char *grid_unit= NULL; + + view3d_main_area_draw_objects(C, ar, &grid_unit); + + ED_region_pixelspace(ar); - /* XXX here was the blockhandlers for floating panels */ + view3d_main_area_draw_info(C, ar, grid_unit); v3d->flag |= V3D_INVALID_BACKBUF; } diff --git a/source/blender/editors/space_view3d/view3d_fly.c b/source/blender/editors/space_view3d/view3d_fly.c index b66440738b2..8e2a9c30193 100644 --- a/source/blender/editors/space_view3d/view3d_fly.c +++ b/source/blender/editors/space_view3d/view3d_fly.c @@ -699,11 +699,11 @@ static void move_camera(bContext* C, RegionView3D* rv3d, FlyInfo* fly, int orien * TODO: need to check in future that frame changed before doing this */ if (orientationChanged) { - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_ROTATION_ID); ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); } if (positionChanged) { - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location"); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_LOCATION_ID); ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); } diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index 4db7f2085c9..41eb76eacfa 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -546,7 +546,7 @@ static int snap_sel_to_grid(bContext *C, wmOperator *UNUSED(op)) } else { - struct KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Location"); + struct KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, ANIM_KS_LOCATION_ID); CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(ob->mode & OB_MODE_POSE) { @@ -676,7 +676,7 @@ static int snap_sel_to_curs(bContext *C, wmOperator *UNUSED(op)) } else { - struct KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Location"); + struct KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, ANIM_KS_LOCATION_ID); CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(ob->mode & OB_MODE_POSE) { diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 50cc825fb68..fb7d3a4d4b3 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -4718,21 +4718,21 @@ void autokeyframe_ob_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob, /* insert keyframes for the affected sets of channels using the builtin KeyingSets found */ if (doLoc) { - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location"); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_LOCATION_ID); ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } if (doRot) { - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_ROTATION_ID); ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } if (doScale) { - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Scale"); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_SCALING_ID); ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } } /* insert keyframe in all (transform) channels */ else { - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_LOC_ROT_SCALE_ID); ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } @@ -4833,21 +4833,21 @@ void autokeyframe_pose_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *o } if (doLoc) { - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location"); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_LOCATION_ID); ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } if (doRot) { - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_ROTATION_ID); ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } if (doScale) { - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Scale"); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_SCALING_ID); ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } } /* insert keyframe in all (transform) channels */ else { - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_LOC_ROT_SCALE_ID); ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } |