Sequencer: added Nkey + UI region, with two empty panels to fill!
This commit is contained in:
Ton Roosendaal
2009-06-08 10:38:28 +00:00
parent ca6a8a233b
commit 559ab6a835
3 changed files with 87 additions and 0 deletions

View File

@@ -37,9 +37,14 @@ struct Sequence;
struct bContext;
struct rctf;
struct SpaceSeq;
struct ScrArea;
struct ARegion;
struct ARegionType;
struct Scene;
/* space_sequencer.c */
struct ARegion *sequencer_has_buttons_region(struct ScrArea *sa);
/* sequencer_header.c */
void sequencer_header_buttons(const struct bContext *C, struct ARegion *ar);
@@ -140,5 +145,10 @@ struct ImBuf *make_vectorscope_view_from_ibuf(struct ImBuf * ibuf);
struct ImBuf *make_zebra_view_from_ibuf(struct ImBuf * ibuf, float perc);
struct ImBuf *make_histogram_view_from_ibuf(struct ImBuf * ibuf);
/* sequencer_buttons.c */
void SEQUENCER_OT_properties(struct wmOperatorType *ot);
void sequencer_buttons_register(struct ARegionType *art);
#endif /* ED_SEQUENCER_INTERN_H */

View File

@@ -99,6 +99,7 @@ void sequencer_operatortypes(void)
WM_operatortype_append(SEQUENCER_OT_sound_strip_add);
WM_operatortype_append(SEQUENCER_OT_image_strip_add);
WM_operatortype_append(SEQUENCER_OT_effect_strip_add);
WM_operatortype_append(SEQUENCER_OT_properties);
}
@@ -107,6 +108,8 @@ void sequencer_keymap(wmWindowManager *wm)
ListBase *keymap= WM_keymap_listbase(wm, "Sequencer", SPACE_SEQ, 0);
wmKeymapItem *kmi;
WM_keymap_add_item(keymap, "SEQUENCER_OT_properties", NKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);

View File

@@ -61,6 +61,36 @@
#include "sequencer_intern.h" // own include
/* ******************** manage regions ********************* */
ARegion *sequencer_has_buttons_region(ScrArea *sa)
{
ARegion *ar, *arnew;
for(ar= sa->regionbase.first; ar; ar= ar->next)
if(ar->regiontype==RGN_TYPE_UI)
return ar;
/* add subdiv level; after header */
for(ar= sa->regionbase.first; ar; ar= ar->next)
if(ar->regiontype==RGN_TYPE_HEADER)
break;
/* is error! */
if(ar==NULL) return NULL;
arnew= MEM_callocN(sizeof(ARegion), "buttons for sequencer");
BLI_insertlinkafter(&sa->regionbase, ar, arnew);
arnew->regiontype= RGN_TYPE_UI;
arnew->alignment= RGN_ALIGN_RIGHT;
arnew->flag = RGN_FLAG_HIDDEN;
return arnew;
}
/* ******************** default callbacks for sequencer space ***************** */
static SpaceLink *sequencer_new(const bContext *C)
@@ -82,6 +112,14 @@ static SpaceLink *sequencer_new(const bContext *C)
ar->regiontype= RGN_TYPE_HEADER;
ar->alignment= RGN_ALIGN_BOTTOM;
/* buttons/list view */
ar= MEM_callocN(sizeof(ARegion), "buttons for sequencer");
BLI_addtail(&sseq->regionbase, ar);
ar->regiontype= RGN_TYPE_UI;
ar->alignment= RGN_ALIGN_RIGHT;
ar->flag = RGN_FLAG_HIDDEN;
/* main area */
ar= MEM_callocN(sizeof(ARegion), "main area for sequencer");
@@ -201,6 +239,30 @@ static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn)
}
}
/* *********************** buttons region ************************ */
/* add handlers, stuff you only do once or on area/region changes */
static void sequencer_buttons_area_init(wmWindowManager *wm, ARegion *ar)
{
ED_region_panels_init(wm, ar);
}
static void sequencer_buttons_area_draw(const bContext *C, ARegion *ar)
{
ED_region_panels(C, ar, 1, NULL);
}
static void sequencer_buttons_area_listener(ARegion *ar, wmNotifier *wmn)
{
/* context changes */
switch(wmn->category) {
}
}
/* ************************************* */
/* only called once, from space/spacetypes.c */
void ED_spacetype_sequencer(void)
{
@@ -226,6 +288,18 @@ void ED_spacetype_sequencer(void)
BLI_addhead(&st->regiontypes, art);
/* regions: listview/buttons */
art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region");
art->regionid = RGN_TYPE_UI;
art->minsizex= 220; // XXX
art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES;
art->listener= sequencer_buttons_area_listener;
art->init= sequencer_buttons_area_init;
art->draw= sequencer_buttons_area_draw;
BLI_addhead(&st->regiontypes, art);
sequencer_buttons_register(art);
/* regions: header */
art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region");
art->regionid = RGN_TYPE_HEADER;