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/BKE_screen.h | |
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/BKE_screen.h')
-rw-r--r-- | source/blender/blenkernel/BKE_screen.h | 56 |
1 files changed, 50 insertions, 6 deletions
diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h index e20b00a00e7..442ef7cf003 100644 --- a/source/blender/blenkernel/BKE_screen.h +++ b/source/blender/blenkernel/BKE_screen.h @@ -3,15 +3,12 @@ * * $Id$ * - * ***** BEGIN GPL/BL DUAL 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 * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. + * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -29,12 +26,59 @@ * * Contributor(s): none yet. * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** + * ***** END GPL LICENSE BLOCK ***** */ #ifndef BKE_SCREEN_H #define BKE_SCREEN_H +struct SpaceType; +struct ScrArea; +struct bScreen; +struct ARegion; +struct wmNotifier; + +/* spacetype has everything stored to get an editor working, it gets initialized via +spacetypes_init() in editors/area/spacetypes.c */ +/* an editor in Blender is a combined ScrArea + SpaceType + SpaceData */ + +typedef struct SpaceType { + struct SpaceType *next, *prev; + + char name[32]; /* for menus */ + int spaceid; /* unique space identifier */ + int iconid; /* icon lookup for menus */ + + struct SpaceLink *(*new)(void); /* calls init too */ + void (*free)(struct SpaceLink *sl); /* not free sl itself */ + + void (*init)(struct ScrArea *); /* init is to cope with internal contextual changes, adds handlers, sets screarea regions */ + void (*refresh)(struct bContext *, struct ScrArea *); /* refresh is for external bContext changes */ + + struct SpaceLink *(*duplicate)(struct SpaceLink *sl); /* after a spacedata copy, an init should result in exact same situation */ + + /* read and write... */ + +} SpaceType; + +/* region type gets allocated and freed in spacetype init/free callback */ +/* data storage for regions is in space struct (also width/height of regions!) */ +typedef struct ARegionType { + + void (*init)(const struct bContext *, struct ARegion *); /* add handlers, stuff you only do once or on area/region changes */ + void (*refresh)(const struct bContext *, struct ARegion *); /* refresh to match contextual changes */ + void (*draw)(const struct bContext *, struct ARegion *); /* draw entirely, windowsize changes should be handled here */ + + void (*listener)(struct ARegion *, struct wmNotifier *); +} ARegionType; + + +void BKE_screen_area_free(struct ScrArea *sa); void free_screen(struct bScreen *sc); +struct SpaceType *BKE_spacetype_from_id(int spaceid); +void BKE_spacetype_register(struct SpaceType *st); +void BKE_spacedata_freelist(ListBase *lb); +void BKE_spacedata_copylist(ListBase *lb1, ListBase *lb2); + #endif |