This repository has been archived on 2023-10-09. You can view files and clone it, but cannot push or open issues or pull requests.
Files
blender-archive/source/blender/blenkernel/BKE_screen.h
Brecht Van Lommel ecc4e55b66 2.5
Context API

This adds the context API as described here. The main practical change
now is that C is not longer directly accessible but has to be accessed
through accessor functions. This basically adds the implementation of
the API and adaption of existing code with some minor changes. The next
task of course is to actually use this design to cleanup of bad level
calls and global access, in blenkernel, blenloader.

http://wiki.blender.org/index.php/BlenderDev/Blender2.5/Context

Error, Warning and Debug Info Reporting

This adds the error reporting API as described here. It should help
clean up error() calls in non-ui code, but eventually can become used
for gathering messages for a console window, and throwing exceptions
in python scripts when an error happens executing something.

http://wiki.blender.org/index.php/BlenderDev/Blender2.5/Reports
2008-12-18 02:56:48 +00:00

144 lines
4.4 KiB
C++

/**
* blenlib/BKE_screen.h (mar-2001 nzc)
*
* $Id$
*
* ***** 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* 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.
*
* ***** END GPL LICENSE BLOCK *****
*/
#ifndef BKE_SCREEN_H
#define BKE_SCREEN_H
struct ARegion;
struct bContext;
struct bContextDataMember;
struct bContextDataResult;
struct bScreen;
struct ListBase;
struct ScrArea;
struct SpaceType;
struct wmNotifier;
struct wmWindow;
struct wmWindowManager;
/* spacetype has everything stored to get an editor working, it gets initialized via
ED_spacetypes_init() in editors/area/spacetypes.c */
/* an editor in Blender is a combined ScrArea + SpaceType + SpaceData */
#define BKE_ST_MAXNAME 32
typedef struct SpaceType {
struct SpaceType *next, *prev;
char name[BKE_ST_MAXNAME]; /* for menus */
int spaceid; /* unique space identifier */
int iconid; /* icon lookup for menus */
/* initial allocation, after this WM will call init() too */
struct SpaceLink *(*new)(void);
/* not free spacelink itself */
void (*free)(struct SpaceLink *);
/* init is to cope with file load, screen (size) changes, check handlers */
void (*init)(struct wmWindowManager *, struct ScrArea *);
/* Listeners can react to bContext changes */
void (*listener)(struct ARegion *, struct wmNotifier *);
/* after a spacedata copy, an init should result in exact same situation */
struct SpaceLink *(*duplicate)(struct SpaceLink *);
/* register operator types on startup */
void (*operatortypes)(void);
/* add default items to WM keymap */
void (*keymap)(struct wmWindowManager *);
/* sets default cursor per region */
void (*cursor)(struct wmWindow *win, struct ARegion *ar);
/* return context data */
int (*context)(const struct bContext *, const struct bContextDataMember *, struct bContextDataResult *);
/* region type definitions */
ListBase regiontypes;
/* read and write... */
/* default keymaps to add */
int keymapflag;
} SpaceType;
/* region types are also defined using spacetypes_init, via a callback */
typedef struct ARegionType {
struct ARegionType *next, *prev;
int regionid; /* unique identifier within this space */
/* add handlers, stuff you only do once or on area/region type/size changes */
void (*init)(struct wmWindowManager *, struct ARegion *);
/* draw entirely, view changes should be handled here */
void (*draw)(const struct bContext *, struct ARegion *);
/* contextual changes should be handled here */
void (*listener)(struct ARegion *, struct wmNotifier *);
void (*free)(struct ARegion *);
/* register operator types on startup */
void (*operatortypes)(void);
/* add own items to keymap */
void (*keymap)(struct wmWindowManager *);
/* return context data */
int (*context)(const struct bContext *, const struct bContextDataMember *, struct bContextDataResult *);
/* hardcoded constraints, smaller than these values region is not visible */
int minsizex, minsizey;
/* default keymaps to add */
int keymapflag;
} ARegionType;
/* spacetypes */
struct SpaceType *BKE_spacetype_from_id(int spaceid);
const struct ListBase *BKE_spacetypes_list(void);
void BKE_spacetype_register(struct SpaceType *st);
void BKE_spacetypes_free(void); /* only for quitting blender */
/* spacedata */
void BKE_spacedata_freelist(ListBase *lb);
void BKE_spacedata_copylist(ListBase *lb1, ListBase *lb2);
/* area/regions */
struct ARegion *BKE_area_region_copy(struct ARegion *ar);
void BKE_area_region_free(struct ARegion *ar);
void BKE_screen_area_free(struct ScrArea *sa);
void free_screen(struct bScreen *sc);
#endif