diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-11-11 16:36:57 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-11-11 16:36:57 +0300 |
commit | 43f396218f5d1a8cb0449cc945eb975ec1d943d7 (patch) | |
tree | 5088eb89a601ea8ba4df9867d6b5ef874ad68688 /source/blender/editors/space_info/space_info.c | |
parent | c1a74d9bd6b186966568e6455f6fe4c50a3cf17f (diff) |
move report/operator view out of the 'Console' into the 'Info' space (file menu).
Ton will work on moving the File menu out of the Info space before release.
notes.
- reply Operator isn't working anymore.
- UI for reports is commented out so its not mixed with the file menu.
Diffstat (limited to 'source/blender/editors/space_info/space_info.c')
-rw-r--r-- | source/blender/editors/space_info/space_info.c | 100 |
1 files changed, 92 insertions, 8 deletions
diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c index 5173621d9c1..95c1614ffd5 100644 --- a/source/blender/editors/space_info/space_info.c +++ b/source/blender/editors/space_info/space_info.c @@ -49,6 +49,7 @@ #include "UI_resources.h" #include "UI_interface.h" +#include "UI_view2d.h" #include "info_intern.h" // own include @@ -62,7 +63,9 @@ static SpaceLink *info_new(const bContext *UNUSED(C)) sinfo= MEM_callocN(sizeof(SpaceInfo), "initinfo"); sinfo->spacetype= SPACE_INFO; - + + sinfo->rpt_mask= INFO_RPT_OP; + /* header */ ar= MEM_callocN(sizeof(ARegion), "header for info"); @@ -76,6 +79,17 @@ static SpaceLink *info_new(const bContext *UNUSED(C)) BLI_addtail(&sinfo->regionbase, ar); ar->regiontype= RGN_TYPE_WINDOW; + /* keep in sync with console */ + ar->v2d.scroll |= (V2D_SCROLL_RIGHT); + ar->v2d.align |= V2D_ALIGN_NO_NEG_X|V2D_ALIGN_NO_NEG_Y; /* align bottom left */ + ar->v2d.keepofs |= V2D_LOCKOFS_X; + ar->v2d.keepzoom = (V2D_LOCKZOOM_X|V2D_LOCKZOOM_Y|V2D_LIMITZOOM|V2D_KEEPASPECT); + ar->v2d.keeptot= V2D_KEEPTOT_BOUNDS; + ar->v2d.minzoom= ar->v2d.maxzoom= 1.0f; + + /* for now, aspect ratio should be maintained, and zoom is clamped within sane default limits */ + //ar->v2d.keepzoom= (V2D_KEEPASPECT|V2D_LIMITZOOM); + return (SpaceLink *)sinfo; } @@ -105,16 +119,54 @@ static SpaceLink *info_duplicate(SpaceLink *sl) /* add handlers, stuff you only do once or on area/region changes */ -static void info_main_area_init(wmWindowManager *UNUSED(wm), ARegion *UNUSED(ar)) +static void info_main_area_init(wmWindowManager *wm, ARegion *ar) { + wmKeyMap *keymap; + + UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); + + /* own keymap */ + keymap= WM_keymap_find(wm->defaultconf, "Info", SPACE_INFO, 0); + WM_event_add_keymap_handler(&ar->handlers, keymap); } -static void info_main_area_draw(const bContext *UNUSED(C), ARegion *UNUSED(ar)) +static void info_textview_update_rect(const bContext *C, ARegion *ar) { - + SpaceInfo *sinfo= CTX_wm_space_info(C); + View2D *v2d= &ar->v2d; + + UI_view2d_totRect_set(v2d, ar->winx-1, info_textview_height(sinfo, ar, CTX_wm_reports(C))); +} + +static void info_main_area_draw(const bContext *C, ARegion *ar) +{ + /* draw entirely, view changes should be handled here */ + SpaceInfo *sinfo= CTX_wm_space_info(C); + View2D *v2d= &ar->v2d; + View2DScrollers *scrollers; + /* clear and setup matrix */ UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); + + /* quick way to avoid drawing if not bug enough */ + if(ar->winy < 16) + return; + + info_textview_update_rect(C, ar); + + /* worlks best with no view2d matrix set */ + UI_view2d_view_ortho(v2d); + + info_textview_main(sinfo, ar, CTX_wm_reports(C)); + + /* reset view matrix */ + UI_view2d_view_restore(C); + + /* scrollers */ + scrollers= UI_view2d_scrollers_calc(C, v2d, V2D_ARG_DUMMY, V2D_ARG_DUMMY, V2D_ARG_DUMMY, V2D_GRID_CLAMP); + UI_view2d_scrollers_draw(C, v2d, scrollers); + UI_view2d_scrollers_free(scrollers); } void info_operatortypes(void) @@ -125,8 +177,16 @@ void info_operatortypes(void) WM_operatortype_append(FILE_OT_make_paths_absolute); WM_operatortype_append(FILE_OT_report_missing_files); WM_operatortype_append(FILE_OT_find_missing_files); - WM_operatortype_append(INFO_OT_reports_display_update); + + /* info_report.c */ + WM_operatortype_append(INFO_OT_select_pick); + WM_operatortype_append(INFO_OT_select_all_toggle); + WM_operatortype_append(INFO_OT_select_border); + + WM_operatortype_append(INFO_OT_report_replay); + WM_operatortype_append(INFO_OT_report_delete); + WM_operatortype_append(INFO_OT_report_copy); } void info_keymap(struct wmKeyConfig *keyconf) @@ -134,6 +194,20 @@ void info_keymap(struct wmKeyConfig *keyconf) wmKeyMap *keymap= WM_keymap_find(keyconf, "Window", 0, 0); WM_keymap_verify_item(keymap, "INFO_OT_reports_display_update", TIMER, KM_ANY, KM_ANY, 0); + + /* info space */ + keymap= WM_keymap_find(keyconf, "Info", SPACE_INFO, 0); + + + /* report selection */ + WM_keymap_add_item(keymap, "INFO_OT_select_pick", SELECTMOUSE, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "INFO_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "INFO_OT_select_border", BKEY, KM_PRESS, 0, 0); + + WM_keymap_add_item(keymap, "INFO_OT_report_replay", RKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "INFO_OT_report_delete", XKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "INFO_OT_report_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "INFO_OT_report_copy", CKEY, KM_PRESS, KM_CTRL, 0); } /* add handlers, stuff you only do once or on area/region changes */ @@ -147,9 +221,19 @@ static void info_header_area_draw(const bContext *C, ARegion *ar) ED_region_header(C, ar); } -static void info_main_area_listener(ARegion *UNUSED(ar), wmNotifier *UNUSED(wmn)) +static void info_main_area_listener(ARegion *ar, wmNotifier *wmn) { + // SpaceInfo *sinfo= sa->spacedata.first; + /* context changes */ + switch(wmn->category) { + case NC_SPACE: + if(wmn->data == ND_SPACE_INFO_REPORT) { + /* redraw also but only for report view, could do less redraws by checking the type */ + ED_region_tag_redraw(ar); + } + break; + } } static void info_header_listener(ARegion *ar, wmNotifier *wmn) @@ -223,10 +307,11 @@ void ED_spacetype_info(void) /* regions: main window */ art= MEM_callocN(sizeof(ARegionType), "spacetype info region"); art->regionid = RGN_TYPE_WINDOW; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->init= info_main_area_init; art->draw= info_main_area_draw; art->listener= info_main_area_listener; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; BLI_addhead(&st->regiontypes, art); @@ -246,4 +331,3 @@ void ED_spacetype_info(void) BKE_spacetype_register(st); } - |