diff options
author | Ton Roosendaal <ton@blender.org> | 2008-01-07 21:03:41 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2008-01-07 21:03:41 +0300 |
commit | 1363134dee60ce96ab0772b72283fb405b6a75ed (patch) | |
tree | ece7c62b984d1ebfa8fd1fe1890332c75efa234d /source/blender/blenkernel/intern/screen.c | |
parent | 1005d99ea5190f34c56f6b30d5eca6bf738a78e8 (diff) |
Whole lot of changes.... here a shortlist:
- removed editors/area and put this all in screen
- added first python calls (note, a new c file for scriptlinks)
- added view3d editor callbacks (no drawing yet)
- added files in editors/interface
(Cmake and Scons has to be fixed, help welcome!)
- now areas/headers are being converted on file read
- note: previously saved 2.50 files will crash!!! (.B.blend)
- area regions are being drawn, first handler for cursor added (on edge)
- window duplicate and scale works correct for screen subdiv
Todos for me:
- need to fix things in syntax (function names) a bit still
- more operators for screen
- define how Context will work... still unresolved when it gets set
- docs!
Reviews of code structure is welcome!
There are also more todos now for others, but it can wait a couple of days
Diffstat (limited to 'source/blender/blenkernel/intern/screen.c')
-rw-r--r-- | source/blender/blenkernel/intern/screen.c | 89 |
1 files changed, 77 insertions, 12 deletions
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c index b41fdbba5e4..33e131606c2 100644 --- a/source/blender/blenkernel/intern/screen.c +++ b/source/blender/blenkernel/intern/screen.c @@ -1,9 +1,7 @@ - -/* screen.c - * +/* * $Id$ * - * ***** BEGIN GP LICENSE BLOCK ***** + * ***** BEGIN GPL LICENSE BLOCK ***** * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -22,9 +20,7 @@ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. * All rights reserved. * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. + * Contributor(s): Blender Foundation 2002-2008 * * ***** END GPL LICENSE BLOCK ***** */ @@ -34,20 +30,89 @@ #include <math.h> #include "DNA_screen_types.h" +#include "DNA_space_types.h" #include "BLI_blenlib.h" #include "BKE_screen.h" -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif +#include "BPY_extern.h" + +/* keep global; this has to be accessible outside of windowmanager */ +static ListBase spacetypes= {NULL, NULL}; + +SpaceType *BKE_spacetype_from_id(int spaceid) +{ + SpaceType *st; + + for(st= spacetypes.first; st; st= st->next) { + if(st->spaceid==spaceid) + return st; + } + return NULL; +} + +void BKE_spacetype_register(SpaceType *st) +{ + BLI_addtail(&spacetypes, st); +} + +void BKE_spacedata_freelist(ListBase *lb) +{ + SpaceLink *sl; + + for (sl= lb->first; sl; sl= sl->next) { + SpaceType *st= BKE_spacetype_from_id(sl->spacetype); + + if(st && st->free) + st->free(sl); + } + + BLI_freelistN(lb); +} + +/* lb1 should be empty */ +void BKE_spacedata_copylist(ListBase *lb1, ListBase *lb2) +{ + SpaceLink *sl; + + lb1->first= lb2->last= NULL; /* to be sure */ + + for (sl= lb2->first; sl; sl= sl->next) { + SpaceType *st= BKE_spacetype_from_id(sl->spacetype); + + if(st && st->duplicate) + BLI_addtail(lb1, st->duplicate(sl)); + } +} + + +/* not area itself */ +void BKE_screen_area_free(ScrArea *sa) +{ + + BKE_spacedata_freelist(&sa->spacedata); + + BLI_freelistN(&sa->regionbase); + + BLI_freelistN(&sa->panels); + // uiFreeBlocks(&sa->uiblocks); + // uiFreePanels(&sa->panels); + + BPY_free_scriptlink(&sa->scriptlink); + +} /* don't free screen itself */ void free_screen(bScreen *sc) { - //XXX unlink_screen(sc); /* bad level call */ - + ScrArea *sa; + + for(sa= sc->areabase.first; sa; sa= sa->next) + BKE_screen_area_free(sa); + BLI_freelistN(&sc->vertbase); BLI_freelistN(&sc->edgebase); BLI_freelistN(&sc->areabase); } + + |