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...
This commit is contained in:
2003-10-25 00:08:12 +00:00
parent 5f26e16c51
commit 513ae61f2b
13 changed files with 546 additions and 147 deletions

View File

@@ -5451,6 +5451,7 @@ void std_rmouse_transform(void (*xf_func)(int))
{
short mval[2];
short xo, yo;
short timer=0;
getmouseco_areawin(mval);
xo= mval[0];
@@ -5463,8 +5464,14 @@ void std_rmouse_transform(void (*xf_func)(int))
while(get_mbut()&R_MOUSE) BIF_wait_for_statechange();
return;
}
BIF_wait_for_statechange();
else {
PIL_sleep_ms(10);
timer++;
if(timer>=10*U.menuthreshold1) {
toolbox_n();
return;
}
}
}
}