diff options
Diffstat (limited to 'source/blender/editors/space_buttons/buttons_object.c')
-rw-r--r-- | source/blender/editors/space_buttons/buttons_object.c | 77 |
1 files changed, 57 insertions, 20 deletions
diff --git a/source/blender/editors/space_buttons/buttons_object.c b/source/blender/editors/space_buttons/buttons_object.c index bb7bf346808..965376b731a 100644 --- a/source/blender/editors/space_buttons/buttons_object.c +++ b/source/blender/editors/space_buttons/buttons_object.c @@ -30,14 +30,19 @@ #include <stdio.h> #include <stdlib.h> +#include "MEM_guardedalloc.h" + #include "DNA_group_types.h" #include "DNA_object_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" +#include "BLI_listbase.h" + #include "BKE_context.h" #include "BKE_group.h" #include "BKE_main.h" +#include "BKE_screen.h" #include "UI_interface.h" #include "UI_resources.h" @@ -46,8 +51,9 @@ #include "WM_types.h" -static void object_panel_transform(const bContext *C, uiLayout *layout) +static void object_panel_transform(const bContext *C, Panel *pnl) { + uiLayout *layout= pnl->layout; Object *ob= CTX_data_active_object(C); PointerRNA obptr; @@ -59,8 +65,9 @@ static void object_panel_transform(const bContext *C, uiLayout *layout) uiItemR(layout, UI_TSLOT_COLUMN_3, NULL, 0, &obptr, "scale"); } -static void object_panel_groups(const bContext *C, uiLayout *layout) +static void object_panel_groups(const bContext *C, Panel *pnl) { + uiLayout *layout= pnl->layout; Main *bmain= CTX_data_main(C); Object *ob= CTX_data_active_object(C); Group *group; @@ -93,8 +100,9 @@ static void object_panel_groups(const bContext *C, uiLayout *layout) } } -static void object_panel_display(const bContext *C, uiLayout *layout) +static void object_panel_display(const bContext *C, Panel *pnl) { + uiLayout *layout= pnl->layout; Object *ob= CTX_data_active_object(C); PointerRNA obptr; @@ -115,8 +123,9 @@ static void object_panel_display(const bContext *C, uiLayout *layout) uiItemR(layout, UI_TSLOT_COLUMN_2, "Transparency", 0, &obptr, "draw_transparent"); } -static void object_panel_duplication(const bContext *C, uiLayout *layout) +static void object_panel_duplication(const bContext *C, Panel *pnl) { + uiLayout *layout= pnl->layout; Object *ob= CTX_data_active_object(C); PointerRNA obptr; @@ -138,8 +147,9 @@ static void object_panel_duplication(const bContext *C, uiLayout *layout) } } -static void object_panel_animation(const bContext *C, uiLayout *layout) +static void object_panel_animation(const bContext *C, Panel *pnl) { + uiLayout *layout= pnl->layout; Object *ob= CTX_data_active_object(C); PointerRNA obptr; @@ -159,21 +169,48 @@ static void object_panel_animation(const bContext *C, uiLayout *layout) uiItemR(layout, UI_TSLOT_COLUMN_2, "Rotation", 0, &obptr, "track_rotation"); } -void buttons_object(const bContext *C, ARegion *ar) +void buttons_object_register(ARegionType *art) { - SpaceButs *sbuts= (SpaceButs*)CTX_wm_space_data(C); - Object *ob= CTX_data_active_object(C); - int tab= sbuts->tab[CONTEXT_OBJECT]; - - if(tab == TAB_OBJECT_OBJECT) { - if(!ob) - return; - - uiPanelLayout(C, ar, "OBJECT_PT_transform", "Transform", "Object", object_panel_transform, 0); - uiPanelLayout(C, ar, "OBJECT_PT_groups", "Groups", "Object", object_panel_groups, 1); - uiPanelLayout(C, ar, "OBJECT_PT_display", "Display", "Object", object_panel_display, 2); - uiPanelLayout(C, ar, "OBJECT_PT_duplication", "Duplication", "Object", object_panel_duplication, 3); - uiPanelLayout(C, ar, "OBJECT_PT_animation", "Animation", "Object", object_panel_animation, 4); - } + PanelType *pt; + + /* panels: transform */ + pt= MEM_callocN(sizeof(PanelType), "spacetype buttons panel"); + pt->idname= "OBJECT_PT_transform"; + pt->name= "Transform"; + pt->context= "object"; + pt->draw= object_panel_transform; + BLI_addtail(&art->paneltypes, pt); + + /* panels: groups */ + pt= MEM_callocN(sizeof(PanelType), "spacetype buttons panel"); + pt->idname= "OBJECT_PT_groups"; + pt->name= "Groups"; + pt->context= "object"; + pt->draw= object_panel_groups; + BLI_addtail(&art->paneltypes, pt); + + /* panels: display */ + pt= MEM_callocN(sizeof(PanelType), "spacetype buttons panel"); + pt->idname= "OBJECT_PT_display"; + pt->name= "Display"; + pt->context= "object"; + pt->draw= object_panel_display; + BLI_addtail(&art->paneltypes, pt); + + /* panels: duplication */ + pt= MEM_callocN(sizeof(PanelType), "spacetype buttons panel"); + pt->idname= "OBJECT_PT_duplication"; + pt->name= "Duplication"; + pt->context= "object"; + pt->draw= object_panel_duplication; + BLI_addtail(&art->paneltypes, pt); + + /* panels: animation */ + pt= MEM_callocN(sizeof(PanelType), "spacetype buttons panel"); + pt->idname= "OBJECT_PT_animation"; + pt->name= "Animation"; + pt->context= "object"; + pt->draw= object_panel_animation; + BLI_addtail(&art->paneltypes, pt); } |