Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2005-04-24 17:22:24 +0400
committerTon Roosendaal <ton@blender.org>2005-04-24 17:22:24 +0400
commitd8f23c8d3cb2a56740227d7a712123afec10cc19 (patch)
tree2f73618b77fd486cce1054f7a17ef72797ddc307 /source/blender/src/space.c
parent0016d29b518f871bb88d9d9388b9a1d873b6d884 (diff)
Reflecting the discussions on Transform Manipulators...
Here you can see the notes and pictures: http://www.blender3d.org/cms/Manipulator_Widgets.548.0.html The alternative rotate widgets are still under rt=2 and rt=3. Still enough work todo here, but hope it's a good step forward!
Diffstat (limited to 'source/blender/src/space.c')
-rw-r--r--source/blender/src/space.c76
1 files changed, 44 insertions, 32 deletions
diff --git a/source/blender/src/space.c b/source/blender/src/space.c
index 04f2687aa2b..67d1e15ceab 100644
--- a/source/blender/src/space.c
+++ b/source/blender/src/space.c
@@ -713,7 +713,6 @@ void BIF_undo_menu(void)
static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
{
- static short prev_event= 0; // used to detect an alt/ctrl/shift event
unsigned short event= evt->event;
short val= evt->val;
char ascii= evt->ascii;
@@ -729,8 +728,6 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
if( uiDoBlocks(&curarea->uiblocks, event)!=UI_NOTHING ) event= 0;
if(event==MOUSEY || event==MOUSEX) return;
- prev_event= event; // for ctrl/alt/shift event
-
if(event==UI_BUT_EVENT) do_butspace(val); // temporal, view3d deserves own queue?
/* we consider manupilator a button, defaulting to leftmouse */
@@ -1059,8 +1056,31 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
do_layer_buttons(-1); break;
case SPACEKEY:
- G.vd->twflag ^= V3D_USE_MANIPULATOR;
- doredraw= 1;
+ if(G.qual == LR_CTRLKEY) {
+ val= pupmenu("Manipulator%t|Enable/Disable|Translate|Rotate|Scale|Combo");
+ if(val>0) {
+ if(val==1) v3d->twflag ^= V3D_USE_MANIPULATOR;
+ else {
+ if(val==2) v3d->twtype= V3D_MANIP_TRANSLATE;
+ else if(val==3) v3d->twtype= V3D_MANIP_ROTATE;
+ else if(val==4) v3d->twtype= V3D_MANIP_SCALE;
+ else if(val==5) v3d->twtype= V3D_MANIP_TRANSLATE|V3D_MANIP_ROTATE|V3D_MANIP_SCALE;
+ v3d->twflag |= V3D_USE_MANIPULATOR;
+ }
+ doredraw= 1;
+ }
+ }
+ else if(G.qual == LR_ALTKEY) {
+ val= pupmenu("Manipulator Orientation%t|Global|Local|Normal");
+ if(val>0) {
+ if(val==1) v3d->twmode= V3D_MANIP_GLOBAL;
+ else if(val==2) v3d->twmode= V3D_MANIP_LOCAL;
+ else if(val==3) v3d->twmode= V3D_MANIP_NORMAL;
+ v3d->twflag |= V3D_USE_MANIPULATOR;
+ doredraw= 1;
+ }
+ }
+
break;
case AKEY:
@@ -1224,7 +1244,12 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
if(okee("Clear location")) {
clear_object('g');
}
- } else if((G.qual==0)) {
+ }
+ else if(G.qual== (LR_CTRLKEY|LR_ALTKEY)) {
+ v3d->twtype= V3D_MANIP_TRANSLATE;
+ doredraw= 1;
+ }
+ else if((G.qual==0)) {
Transform(TFM_TRANSLATION, CTX_NONE);
}
break;
@@ -1484,7 +1509,12 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
if(okee("Clear rotation")) {
clear_object('r');
}
- } else if (G.obedit) {
+ }
+ else if(G.qual== (LR_CTRLKEY|LR_ALTKEY)) {
+ v3d->twtype= V3D_MANIP_ROTATE;
+ doredraw= 1;
+ }
+ else if (G.obedit) {
if((G.qual==LR_SHIFTKEY)) {
if ELEM(G.obedit->type, OB_CURVE, OB_SURF)
selectrow_nurb();
@@ -1504,7 +1534,11 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
break;
case SKEY:
- if(G.obedit) {
+ if(G.qual== (LR_CTRLKEY|LR_ALTKEY)) {
+ v3d->twtype= V3D_MANIP_SCALE;
+ doredraw= 1;
+ }
+ else if(G.obedit) {
if(G.qual==LR_ALTKEY)
Transform(TFM_SHRINKFATTEN, CTX_NONE);
else if(G.qual==LR_CTRLKEY)
@@ -1767,26 +1801,6 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
}
}
- else { // val==0, hotkeys for ctrl/alt/shift
- if(prev_event==event) {
- switch(event) {
-
- case RIGHTCTRLKEY:
- case LEFTCTRLKEY:
- if(v3d->twflag & V3D_USE_MANIPULATOR) {
- if(v3d->twtype & V3D_MANIP_SCALE)
- v3d->twtype= V3D_MANIP_TRANSLATE;
- else if(v3d->twtype & V3D_MANIP_TRANSLATE)
- v3d->twtype= V3D_MANIP_ROTATE;
- else if(v3d->twtype & V3D_MANIP_ROTATE)
- v3d->twtype= V3D_MANIP_SCALE;
-
- doredraw= 1;
- }
- break;
- }
- }
- }
if(doredraw) {
scrarea_queue_winredraw(curarea);
@@ -2502,11 +2516,9 @@ void drawinfospace(ScrArea *sa, void *spacedata)
(xpos+edgsp+(5*mpref)+(6*midsp)+(mpref/2)),y5,(mpref/2),buth,
&(U.tw_handlesize), 2, 40, 0, 0, "Size of widget handles as percentage of widget radius");
uiDefButS(block, NUM, B_REDRCURW3D, "Hotspot:",
- (xpos+edgsp+(5*mpref)+(6*midsp)),y4,(mpref/2),buth,
+ (xpos+edgsp+(5*mpref)+(6*midsp)),y4,(mpref),buth,
&(U.tw_hotspot), 4, 40, 0, 0, "Hotspot in pixels for clicking widget handles");
- uiDefButBitS(block, TOG, U_TW_ABSOLUTE, B_REDRCURW3D, "Fixed Size",
- (xpos+edgsp+(5*mpref)+(6*midsp)+(mpref/2)),y4,(mpref/2),buth,
- &(U.tw_flag), 2, 40, 0, 0, "Size of widget based on fixed window size (1000 pixels)");
+
uiBlockEndAlign(block);
} else if (U.userpref == 1) { /* edit methods */