Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_console/space_console.c
| Show All 22 Lines | |||||
| #include "RNA_path.h" | #include "RNA_path.h" | ||||
| #include "WM_api.h" | #include "WM_api.h" | ||||
| #include "WM_types.h" | #include "WM_types.h" | ||||
| #include "UI_resources.h" | #include "UI_resources.h" | ||||
| #include "UI_view2d.h" | #include "UI_view2d.h" | ||||
| #include "BLO_read_write.h" | |||||
| #include "console_intern.h" /* own include */ | #include "console_intern.h" /* own include */ | ||||
| /* ******************** default callbacks for console space ***************** */ | /* ******************** default callbacks for console space ***************** */ | ||||
| static SpaceLink *console_create(const ScrArea *UNUSED(area), const Scene *UNUSED(scene)) | static SpaceLink *console_create(const ScrArea *UNUSED(area), const Scene *UNUSED(scene)) | ||||
| { | { | ||||
| ARegion *region; | ARegion *region; | ||||
| SpaceConsole *sconsole; | SpaceConsole *sconsole; | ||||
| ▲ Show 20 Lines • Show All 240 Lines • ▼ Show 20 Lines | case NC_SPACE: { | ||||
| ED_region_tag_redraw(region); | ED_region_tag_redraw(region); | ||||
| } | } | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| static void console_blend_read_data(BlendDataReader *reader, SpaceLink *sl) | |||||
| { | |||||
| SpaceConsole *sconsole = (SpaceConsole *)sl; | |||||
| BLO_read_list(reader, &sconsole->scrollback); | |||||
| BLO_read_list(reader, &sconsole->history); | |||||
| /* Comma expressions, (e.g. expr1, expr2, expr3) evaluate each expression, | |||||
| * from left to right. the right-most expression sets the result of the comma | |||||
| * expression as a whole. */ | |||||
| LISTBASE_FOREACH_MUTABLE (ConsoleLine *, cl, &sconsole->history) { | |||||
| BLO_read_data_address(reader, &cl->line); | |||||
| if (cl->line) { | |||||
| /* The allocated length is not written, so reset here. */ | |||||
| cl->len_alloc = cl->len + 1; | |||||
| } | |||||
| else { | |||||
| BLI_remlink(&sconsole->history, cl); | |||||
| MEM_freeN(cl); | |||||
| } | |||||
| } | |||||
| } | |||||
| static void console_blend_write(BlendWriter *writer, SpaceLink *sl) | |||||
| { | |||||
| SpaceConsole *con = (SpaceConsole *)sl; | |||||
| LISTBASE_FOREACH (ConsoleLine *, cl, &con->history) { | |||||
| /* 'len_alloc' is invalid on write, set from 'len' on read */ | |||||
| BLO_write_struct(writer, ConsoleLine, cl); | |||||
| BLO_write_raw(writer, (size_t)cl->len + 1, cl->line); | |||||
| } | |||||
| BLO_write_struct(writer, SpaceConsole, sl); | |||||
| } | |||||
| void ED_spacetype_console(void) | void ED_spacetype_console(void) | ||||
| { | { | ||||
| SpaceType *st = MEM_callocN(sizeof(SpaceType), "spacetype console"); | SpaceType *st = MEM_callocN(sizeof(SpaceType), "spacetype console"); | ||||
| ARegionType *art; | ARegionType *art; | ||||
| st->spaceid = SPACE_CONSOLE; | st->spaceid = SPACE_CONSOLE; | ||||
| STRNCPY(st->name, "Console"); | STRNCPY(st->name, "Console"); | ||||
| st->create = console_create; | st->create = console_create; | ||||
| st->free = console_free; | st->free = console_free; | ||||
| st->init = console_init; | st->init = console_init; | ||||
| st->duplicate = console_duplicate; | st->duplicate = console_duplicate; | ||||
| st->operatortypes = console_operatortypes; | st->operatortypes = console_operatortypes; | ||||
| st->keymap = console_keymap; | st->keymap = console_keymap; | ||||
| st->dropboxes = console_dropboxes; | st->dropboxes = console_dropboxes; | ||||
| st->blend_read_data = console_blend_read_data; | |||||
| st->blend_write = console_blend_write; | |||||
| /* regions: main window */ | /* regions: main window */ | ||||
| art = MEM_callocN(sizeof(ARegionType), "spacetype console region"); | art = MEM_callocN(sizeof(ARegionType), "spacetype console region"); | ||||
| art->regionid = RGN_TYPE_WINDOW; | art->regionid = RGN_TYPE_WINDOW; | ||||
| art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D; | art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D; | ||||
| art->init = console_main_region_init; | art->init = console_main_region_init; | ||||
| art->draw = console_main_region_draw; | art->draw = console_main_region_draw; | ||||
| Show All 19 Lines | |||||