2002-10-12 11:37:38 +00:00
|
|
|
/* toolbox (SPACEKEY) related
|
|
|
|
|
* $Id$
|
|
|
|
|
*
|
|
|
|
|
* ***** BEGIN GPL/BL DUAL 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.
|
|
|
|
|
*
|
|
|
|
|
* 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/BL DUAL LICENSE BLOCK *****
|
|
|
|
|
*/
|
|
|
|
|
|
2004-04-20 22:00:33 +00:00
|
|
|
#ifndef BIF_TOOLBOX_H
|
|
|
|
|
#define BIF_TOOLBOX_H
|
|
|
|
|
|
|
|
|
|
|
2003-04-30 13:22:26 +00:00
|
|
|
/* TBOXX: width in pixels */
|
2002-10-12 11:37:38 +00:00
|
|
|
#define TBOXXL 80
|
2003-05-03 12:17:11 +00:00
|
|
|
#define TBOXXR 200
|
2002-10-12 11:37:38 +00:00
|
|
|
#define TBOXX (TBOXXL+TBOXXR)
|
2003-04-30 13:22:26 +00:00
|
|
|
/* TBOXEL: amount of element vertically */
|
2002-10-12 11:37:38 +00:00
|
|
|
#define TBOXEL 14
|
2003-04-30 13:22:26 +00:00
|
|
|
/* TBOXH: height of 1 element */
|
2002-10-12 11:37:38 +00:00
|
|
|
#define TBOXH 20
|
|
|
|
|
#define TBOXY TBOXH*TBOXEL
|
|
|
|
|
|
|
|
|
|
#define TBOXBLACK 1
|
|
|
|
|
#define TBOXDGREY 2
|
|
|
|
|
#define TBOXWHITE 3
|
|
|
|
|
#define TBOXGREY 4
|
|
|
|
|
#define TBOXLGREY 5
|
|
|
|
|
|
|
|
|
|
/* toolbox menu code defines
|
|
|
|
|
-> SPACE->(MAIN_ENTRY) */
|
|
|
|
|
#ifdef MAART
|
|
|
|
|
enum {
|
|
|
|
|
TBOX_MAIN_FILE,
|
|
|
|
|
TBOX_MAIN_ADD,
|
|
|
|
|
TBOX_MAIN_EDIT,
|
|
|
|
|
TBOX_MAIN_OBJECT1,
|
|
|
|
|
TBOX_MAIN_OBJECT2,
|
|
|
|
|
TBOX_MAIN_MESH,
|
|
|
|
|
TBOX_MAIN_CURVE,
|
|
|
|
|
TBOX_MAIN_KEY,
|
|
|
|
|
TBOX_MAIN_RENDER,
|
|
|
|
|
TBOX_MAIN_VIEW,
|
2002-10-30 00:05:50 +00:00
|
|
|
TBOX_MAIN_SEQ,
|
2002-10-12 11:37:38 +00:00
|
|
|
TBOX_MAIN_PYTOOL = 13
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
enum {
|
|
|
|
|
TBOX_MAIN_ADD,
|
|
|
|
|
TBOX_MAIN_FILE,
|
|
|
|
|
TBOX_MAIN_EDIT,
|
|
|
|
|
TBOX_MAIN_OBJECT1,
|
|
|
|
|
TBOX_MAIN_OBJECT2,
|
|
|
|
|
TBOX_MAIN_MESH,
|
|
|
|
|
TBOX_MAIN_CURVE,
|
|
|
|
|
TBOX_MAIN_KEY,
|
|
|
|
|
TBOX_MAIN_RENDER,
|
|
|
|
|
TBOX_MAIN_VIEW,
|
2002-10-30 00:05:50 +00:00
|
|
|
TBOX_MAIN_SEQ,
|
2002-10-12 11:37:38 +00:00
|
|
|
TBOX_MAIN_PYTOOL = 13
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* protos */
|
|
|
|
|
|
|
|
|
|
/* toolbox.c */
|
|
|
|
|
void ColorFunc (int i);
|
|
|
|
|
void mygetcursor (short int *index);
|
|
|
|
|
void tbox_setinfo (int x, int y);
|
|
|
|
|
void bgnpupdraw (int startx, int starty, int endx, int endy);
|
|
|
|
|
void endpupdraw (void);
|
|
|
|
|
void asciitoraw (int ch, short unsigned int *event, short unsigned int *qual);
|
|
|
|
|
void tbox_execute (void);
|
|
|
|
|
void tbox_getmouse (short int *mval);
|
|
|
|
|
void tbox_setmain (int val);
|
|
|
|
|
void bgntoolbox (void);
|
|
|
|
|
void endtoolbox (void);
|
|
|
|
|
void tbox_embossbox (short int x1, short int y1, short int x2, short int y2, short int type);
|
|
|
|
|
void tbox_drawelem_body (int x, int y, int type);
|
|
|
|
|
void tbox_drawelem_text (int x, int y, int type);
|
|
|
|
|
void tbox_drawelem (int x, int y, int type);
|
|
|
|
|
void tbox_getactive (int *x, int *y);
|
|
|
|
|
void drawtoolbox (void);
|
|
|
|
|
void toolbox (void);
|
|
|
|
|
|
First commit of a new toolbox system.
Aim was to find a simple & easy system, script alike, to add and configure
a toolbox system, so that others can experiment, but also of course Python.
Summary:
- spacebar calls it up. SHIFT+A still does old toolbox
- hold left or rightmouse for 0.4 second, and it pops up as well
this is experimental! Can be tweaked with Userdef var "ThresA"
- it is a little bit complete for Object mode only. Needs still work
at information desing/structure level
- the code works like an engine, interpreting structs like this:
static TBitem addmenu_curve[]= {
{ 0, "Bezier Curve", 0, NULL},
{ 0, "Bezier Circle", 1, NULL},
{ 0, "NURBS Curve", 2, NULL},
{ 0, "NURBS Circle", 3, NULL},
{ 0, "Path", 4, NULL},
{ -1, "", 0, do_info_add_curvemenu}};
- first value is ICON code,
- then name
- return value
- pointer to optional child
last row has -1 to indicate its the last...
plus a callback to event function.
I also built an old toolbox style callback for this:
static TBitem tb_object_select[]= {
{ 0, "Border Select|B", 'b', NULL},
{ 0, "(De)select All|A", 'a', NULL},
{ 0, "Linked...|Shift L", 'L', NULL},
{ 0, "Grouped...|Shift G", 'G', NULL},
{ -1, "", 0, tb_do_hotkey}};
here the return values are put back as hotkeys in mainqueue.
A mainloop can do all context switching, and build menus on the fly.
Meaning, it also allows other designs such as radials...
2003-10-25 00:08:12 +00:00
|
|
|
void toolbox_n(void);
|
2003-10-29 00:23:16 +00:00
|
|
|
void toolbox_n_add(void);
|
First commit of a new toolbox system.
Aim was to find a simple & easy system, script alike, to add and configure
a toolbox system, so that others can experiment, but also of course Python.
Summary:
- spacebar calls it up. SHIFT+A still does old toolbox
- hold left or rightmouse for 0.4 second, and it pops up as well
this is experimental! Can be tweaked with Userdef var "ThresA"
- it is a little bit complete for Object mode only. Needs still work
at information desing/structure level
- the code works like an engine, interpreting structs like this:
static TBitem addmenu_curve[]= {
{ 0, "Bezier Curve", 0, NULL},
{ 0, "Bezier Circle", 1, NULL},
{ 0, "NURBS Curve", 2, NULL},
{ 0, "NURBS Circle", 3, NULL},
{ 0, "Path", 4, NULL},
{ -1, "", 0, do_info_add_curvemenu}};
- first value is ICON code,
- then name
- return value
- pointer to optional child
last row has -1 to indicate its the last...
plus a callback to event function.
I also built an old toolbox style callback for this:
static TBitem tb_object_select[]= {
{ 0, "Border Select|B", 'b', NULL},
{ 0, "(De)select All|A", 'a', NULL},
{ 0, "Linked...|Shift L", 'L', NULL},
{ 0, "Grouped...|Shift G", 'G', NULL},
{ -1, "", 0, tb_do_hotkey}};
here the return values are put back as hotkeys in mainqueue.
A mainloop can do all context switching, and build menus on the fly.
Meaning, it also allows other designs such as radials...
2003-10-25 00:08:12 +00:00
|
|
|
|
2002-10-12 11:37:38 +00:00
|
|
|
void notice (char *str, ...);
|
|
|
|
|
void error (char *fmt, ...);
|
|
|
|
|
|
|
|
|
|
int saveover (char *filename);
|
|
|
|
|
int okee (char *fmt, ...);
|
|
|
|
|
|
|
|
|
|
short button (short *var, short min, short max, char *str);
|
2004-04-11 00:23:06 +00:00
|
|
|
short fbutton (float *var, float min, float max, float a1, float a2, char *str);
|
2002-10-12 11:37:38 +00:00
|
|
|
short sbutton (char *var, float min, float max, char *str); /* __NLA */
|
|
|
|
|
int movetolayer_buts (unsigned int *lay);
|
|
|
|
|
void draw_numbuts_tip (char *str, int x1, int y1, int x2, int y2);
|
|
|
|
|
int do_clever_numbuts (char *name, int tot, int winevent);
|
2003-10-07 18:24:02 +00:00
|
|
|
void clever_numbuts_buts(void);
|
2002-10-12 11:37:38 +00:00
|
|
|
void add_numbut (int nr, int type, char *str, float min, float max, void *poin, char *tip);
|
|
|
|
|
void clever_numbuts (void);
|
|
|
|
|
void replace_names_but (void);
|
|
|
|
|
|
2004-09-29 16:27:12 +00:00
|
|
|
void BIF_screendump(int fscreen);
|
2002-10-12 11:37:38 +00:00
|
|
|
void write_screendump(char *name);
|
2002-10-30 00:05:50 +00:00
|
|
|
|
2004-04-20 22:00:33 +00:00
|
|
|
#endif
|