made sticky UV editing options more accessible by adding them to a popup in the header.

Changed how the sticky setting is stored in DNA - (as a char rather then 2 flags).
replaced the UV/FACE icon with another needed for the sticky menu.
removed 2 unused icons.

commented the UV transform panel since it only had 2 buttons in it.

depgraph update calls needed to be added to Ctrl+V/E/F menu's because some commands were crashing.
This commit is contained in:
Campbell Barton 2007-09-22 06:58:40 +00:00
parent 2244d19bc2
commit 0ed3e0bb4f
12 changed files with 2190 additions and 2225 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

@ -6101,20 +6101,6 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
sce->toolsettings->unwrapper = 1; sce->toolsettings->unwrapper = 1;
} }
/* enable uv editor local sticky by default */
for (sc= main->screen.first; sc; sc= sc->id.next) {
ScrArea *sa;
for (sa= sc->areabase.first; sa; sa= sa->next) {
SpaceLink *sl;
for (sl= sa->spacedata.first; sl; sl= sl->next) {
if(sl->spacetype==SPACE_IMAGE) {
SpaceImage *sima= (SpaceImage*)sl;
if(!(sima->flag & SI_STICKYUVS))
sima->flag |= SI_LOCALSTICKY;
}
}
}
}
if(sce->r.mode & R_PANORAMA) { if(sce->r.mode & R_PANORAMA) {
/* all these checks to ensure saved files with cvs version keep working... */ /* all these checks to ensure saved files with cvs version keep working... */
if(sce->r.xsch < sce->r.ysch) { if(sce->r.xsch < sce->r.ysch) {

@ -94,7 +94,6 @@ void reveal_tface_uv(void);
void stitch_uv_tface(int mode); void stitch_uv_tface(int mode);
void unlink_selection(void); void unlink_selection(void);
void select_linked_tface_uv(int mode); void select_linked_tface_uv(int mode);
void toggle_uv_select(int mode);
void pin_tface_uv(int mode); void pin_tface_uv(int mode);
void weld_align_menu_tface_uv(void); void weld_align_menu_tface_uv(void);
void weld_align_tface_uv(char tool); void weld_align_tface_uv(char tool);

@ -123,9 +123,9 @@ typedef enum {
ICON_AXIS_SIDE, ICON_AXIS_SIDE,
ICON_AXIS_FRONT, ICON_AXIS_FRONT,
ICON_AXIS_TOP, ICON_AXIS_TOP,
ICON_DRAW_UVFACES, ICON_STICKY_UVS_LOC,
ICON_STICKY_UVS, ICON_STICKY_UVS_DISABLE,
ICON_STICKY2_UVS, ICON_STICKY_UVS_VERT,
ICON_PREV_KEYFRAME, ICON_PREV_KEYFRAME,
ICON_NEXT_KEYFRAME, ICON_NEXT_KEYFRAME,
ICON_ENVMAP, ICON_ENVMAP,
@ -317,8 +317,8 @@ typedef enum {
ICON_HOME, ICON_HOME,
ICON_CLIPUV_DEHLT, ICON_CLIPUV_DEHLT,
ICON_CLIPUV_HLT, ICON_CLIPUV_HLT,
ICON_SOME_WACKY_VERTS_AND_LINES, ICON_BLANK2,
ICON_A_WACKY_VERT_AND_SOME_LINES, ICON_BLANK3,
ICON_VPAINT_COL, ICON_VPAINT_COL,
ICON_RESTRICT_SELECT_OFF, ICON_RESTRICT_SELECT_OFF,
ICON_RESTRICT_SELECT_ON, ICON_RESTRICT_SELECT_ON,

@ -65,8 +65,8 @@ struct SpaceOops;
#define IMAGE_HANDLER_CURVES 32 #define IMAGE_HANDLER_CURVES 32
#define IMAGE_HANDLER_PREVIEW 33 #define IMAGE_HANDLER_PREVIEW 33
#define IMAGE_HANDLER_GAME_PROPERTIES 34 #define IMAGE_HANDLER_GAME_PROPERTIES 34
#define IMAGE_HANDLER_TRANSFORM_PROPERTIES 35 #define IMAGE_HANDLER_VIEW_PROPERTIES 35
#define IMAGE_HANDLER_VIEW_PROPERTIES 36 /*#define IMAGE_HANDLER_TRANSFORM_PROPERTIES 36*/
/* action handler codes */ /* action handler codes */
#define ACTION_HANDLER_PROPERTIES 40 #define ACTION_HANDLER_PROPERTIES 40

@ -238,7 +238,9 @@ typedef struct SpaceImage {
short imtypenr, lock; short imtypenr, lock;
short showspare, pin; short showspare, pin;
float zoom; float zoom;
char dt_uv; char pad[7]; /* UV draw type */ char dt_uv; /* UV draw type */
char sticky; /* sticky selection type */
char pad[6];
float xof, yof; /* user defined offset, image is centered */ float xof, yof; /* user defined offset, image is centered */
float centx, centy; /* storage for offset while render drawing */ float centx, centy; /* storage for offset while render drawing */
@ -468,11 +470,11 @@ typedef struct SpaceImaSel {
#define SI_EDITTILE 1<<1 #define SI_EDITTILE 1<<1
#define SI_CLIP_UV 1<<2 #define SI_CLIP_UV 1<<2
#define SI_DRAWTOOL 1<<3 #define SI_DRAWTOOL 1<<3
#define SI_STICKYUVS 1<<4 #define SI_DEPRECATED1 1<<4 /* stick UVs to others in the same location */
#define SI_DRAWSHADOW 1<<5 #define SI_DRAWSHADOW 1<<5
#define SI_SELACTFACE 1<<6 #define SI_SELACTFACE 1<<6
#define SI_DEPRECATED 1<<7 #define SI_DEPRECATED2 1<<7
#define SI_LOCALSTICKY 1<<8 #define SI_DEPRECATED3 1<<8 /* stick UV selection to mesh vertex (UVs wont always be touching) */
#define SI_COORDFLOATS 1<<9 #define SI_COORDFLOATS 1<<9
#define SI_PIXELSNAP 1<<10 #define SI_PIXELSNAP 1<<10
#define SI_LIVE_UNWRAP 1<<11 #define SI_LIVE_UNWRAP 1<<11

File diff suppressed because it is too large Load Diff

@ -805,30 +805,14 @@ static void draw_image_view_icon(void)
if (G.sima->flag & SI_SYNC_UVSEL) { if (G.sima->flag & SI_SYNC_UVSEL) {
/* take settings from the editmesh */ /* take settings from the editmesh */
if (G.scene->selectmode == SCE_SELECT_FACE) {
BIF_icon_draw_aspect(xPos, 5.0, ICON_STICKY_UVS, 1.0f);
} else {
BIF_icon_draw_aspect(xPos, 5.0, ICON_STICKY2_UVS, 1.0f);
}
xPos = 25.0;
if (G.scene->selectmode == SCE_SELECT_FACE || G.sima->flag & SI_SELACTFACE) { if (G.scene->selectmode == SCE_SELECT_FACE || G.sima->flag & SI_SELACTFACE) {
BIF_icon_draw_aspect(xPos, 5.0, ICON_DRAW_UVFACES, 1.0f); BIF_icon_draw_aspect(xPos, 5.0, ICON_FACESEL_HLT, 1.0f);
} }
} else { } else {
/* use the flags for UV mode - normal operation */ /* use the flags for UV mode - normal operation */
if(G.sima->flag & SI_STICKYUVS) {
BIF_icon_draw_aspect(xPos, 5.0, ICON_STICKY2_UVS, 1.0f);
xPos = 25.0;
}
else if(!(G.sima->flag & SI_LOCALSTICKY)) {
BIF_icon_draw_aspect(xPos, 5.0, ICON_STICKY_UVS, 1.0f);
xPos = 25.0;
}
if(G.sima->flag & SI_SELACTFACE) { if(G.sima->flag & SI_SELACTFACE) {
BIF_icon_draw_aspect(xPos, 5.0, ICON_DRAW_UVFACES, 1.0f); BIF_icon_draw_aspect(xPos, 5.0, ICON_FACESEL_HLT, 1.0f);
} }
} }
@ -940,16 +924,16 @@ void image_editvertex_buts(uiBlock *block)
ocent[1] *= imy; ocent[1] *= imy;
} }
uiBlockBeginAlign(block); //uiBlockBeginAlign(block);
if(nactive==1) { if(nactive==1) {
uiDefButF(block, NUM, B_TRANS_IMAGE, "Vertex X:", 10, 40, 145, 19, &ocent[0], -10*imx, 10.0*imx, step, digits, ""); uiDefButF(block, NUM, B_TRANS_IMAGE, "Vertex X:", 10, 10, 145, 19, &ocent[0], -10*imx, 10.0*imx, step, digits, "");
uiDefButF(block, NUM, B_TRANS_IMAGE, "Vertex Y:", 10, 20, 145, 19, &ocent[1], -10*imy, 10.0*imy, step, digits, ""); uiDefButF(block, NUM, B_TRANS_IMAGE, "Vertex Y:", 165, 10, 145, 19, &ocent[1], -10*imy, 10.0*imy, step, digits, "");
} }
else { else {
uiDefButF(block, NUM, B_TRANS_IMAGE, "Median X:", 10, 40, 145, 19, &ocent[0], -10*imx, 10.0*imx, step, digits, ""); uiDefButF(block, NUM, B_TRANS_IMAGE, "Median X:", 10, 10, 145, 19, &ocent[0], -10*imx, 10.0*imx, step, digits, "");
uiDefButF(block, NUM, B_TRANS_IMAGE, "Median Y:", 10, 20, 145, 19, &ocent[1], -10*imy, 10.0*imy, step, digits, ""); uiDefButF(block, NUM, B_TRANS_IMAGE, "Median Y:", 165, 10, 145, 19, &ocent[1], -10*imy, 10.0*imy, step, digits, "");
} }
uiBlockEndAlign(block); //uiBlockEndAlign(block);
} }
} }
else { // apply event else { // apply event
@ -1088,6 +1072,7 @@ static void image_panel_properties(short cntrl) // IMAGE_HANDLER_PROPERTIES
/* note, it draws no bottom half in facemode, for vertex buttons */ /* note, it draws no bottom half in facemode, for vertex buttons */
uiblock_image_panel(block, &G.sima->image, &G.sima->iuser, B_REDR, B_REDR); uiblock_image_panel(block, &G.sima->image, &G.sima->iuser, B_REDR, B_REDR);
image_editvertex_buts(block);
} }
static void image_panel_game_properties(short cntrl) // IMAGE_HANDLER_GAME_PROPERTIES static void image_panel_game_properties(short cntrl) // IMAGE_HANDLER_GAME_PROPERTIES
@ -1127,19 +1112,18 @@ static void image_panel_game_properties(short cntrl) // IMAGE_HANDLER_GAME_PROPE
} }
} }
static void image_panel_transform_properties(short cntrl) // IMAGE_HANDLER_TRANSFORM_PROPERTIES //static void image_panel_transform_properties(short cntrl) // IMAGE_HANDLER_TRANSFORM_PROPERTIES
{ //{
uiBlock *block; // uiBlock *block;
//
block= uiNewBlock(&curarea->uiblocks, "image_transform_properties", UI_EMBOSS, UI_HELV, curarea->win); // block= uiNewBlock(&curarea->uiblocks, "image_transform_properties", UI_EMBOSS, UI_HELV, curarea->win);
uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl); // uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl);
uiSetPanelHandler(IMAGE_HANDLER_TRANSFORM_PROPERTIES); // for close and esc // uiSetPanelHandler(IMAGE_HANDLER_TRANSFORM_PROPERTIES); // for close and esc
if(uiNewPanel(curarea, block, "Transform Properties", "Image", 10, 10, 318, 204)==0) // if(uiNewPanel(curarea, block, "Transform Properties", "Image", 10, 10, 318, 204)==0)
return; // return;
//
image_editvertex_buts(block); // image_editvertex_buts(block);
//}
}
static void image_panel_view_properties(short cntrl) // IMAGE_HANDLER_VIEW_PROPERTIES static void image_panel_view_properties(short cntrl) // IMAGE_HANDLER_VIEW_PROPERTIES
{ {
@ -1491,10 +1475,10 @@ static void image_blockhandlers(ScrArea *sa)
case IMAGE_HANDLER_GAME_PROPERTIES: case IMAGE_HANDLER_GAME_PROPERTIES:
image_panel_game_properties(sima->blockhandler[a+1]); image_panel_game_properties(sima->blockhandler[a+1]);
break; break;
case IMAGE_HANDLER_TRANSFORM_PROPERTIES: // case IMAGE_HANDLER_TRANSFORM_PROPERTIES:
if (EM_texFaceCheck()) // if (EM_texFaceCheck())
image_panel_transform_properties(sima->blockhandler[a+1]); // image_panel_transform_properties(sima->blockhandler[a+1]);
break; // break;
case IMAGE_HANDLER_VIEW_PROPERTIES: case IMAGE_HANDLER_VIEW_PROPERTIES:
image_panel_view_properties(sima->blockhandler[a+1]); image_panel_view_properties(sima->blockhandler[a+1]);
break; break;

@ -3347,8 +3347,9 @@ void Vertex_Menu() {
case 6: case 6:
shape_propagate(); shape_propagate();
break; break;
} }
/* some items crashed because this is in the original W menu but not here. should really manage this better */
DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA);
} }
@ -3402,6 +3403,8 @@ void Edge_Menu() {
DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA); DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA);
break; break;
} }
/* some items crashed because this is in the original W menu but not here. should really manage this better */
DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA);
} }
void Face_Menu() { void Face_Menu() {
@ -3463,6 +3466,8 @@ void Face_Menu() {
mesh_mirror_colors(); mesh_mirror_colors();
break; break;
} }
/* some items crashed because this is in the original W menu but not here. should really manage this better */
DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA);
} }

@ -531,7 +531,8 @@ void mouse_select_sima(void) /* TODO - SYNCSEL */
EditFace *efa; EditFace *efa;
MTFace *tf, *nearesttf; MTFace *tf, *nearesttf;
EditFace *nearestefa=NULL; EditFace *nearestefa=NULL;
int a, selectsticky, sticky, actface, nearestuv, i; int a, selectsticky, actface, nearestuv, i;
char sticky;
short flush = 0; /* 0 == dont flush, 1 == sel, -1 == desel; only use when selection sync is enabled */ short flush = 0; /* 0 == dont flush, 1 == sel, -1 == desel; only use when selection sync is enabled */
unsigned int hitv[4], nearestv; unsigned int hitv[4], nearestv;
float *hituv[4], limit[2]; float *hituv[4], limit[2];
@ -553,14 +554,20 @@ void mouse_select_sima(void) /* TODO - SYNCSEL */
/* normal operation */ /* normal operation */
actface= (G.qual & LR_ALTKEY || G.sima->flag & SI_SELACTFACE); actface= (G.qual & LR_ALTKEY || G.sima->flag & SI_SELACTFACE);
if(G.qual & LR_CTRLKEY) { switch(G.sima->sticky) {
if(G.sima->flag & SI_STICKYUVS) sticky= 0; case 0:
else sticky= 1; sticky=2;
} break;
else { case 1:
if(G.sima->flag & SI_STICKYUVS) sticky= 1; sticky=0;
else if(G.sima->flag & SI_LOCALSTICKY) sticky= 2; break;
else sticky= 0; case 2:
if(G.qual & LR_CTRLKEY) {
sticky=0;
} else {
sticky=1;
}
break;
} }
} }
@ -1356,6 +1363,7 @@ void unlink_selection(void)
scrarea_queue_winredraw(curarea); scrarea_queue_winredraw(curarea);
} }
/*
void toggle_uv_select(int mode) void toggle_uv_select(int mode)
{ {
switch(mode){ switch(mode){
@ -1363,21 +1371,21 @@ void toggle_uv_select(int mode)
G.sima->flag ^= SI_SELACTFACE; G.sima->flag ^= SI_SELACTFACE;
break; break;
case 's': case 's':
G.sima->flag ^= SI_STICKYUVS; G.sima->flag &= ~SI_LOCALSTICKY;
if (G.sima->flag & SI_STICKYUVS) G.sima->flag &= ~SI_LOCALSTICKY; G.sima->flag |= SI_STICKYUVS;
else G.sima->flag |= SI_LOCALSTICKY;
break; break;
case 'l': case 'l':
G.sima->flag ^= SI_LOCALSTICKY; G.sima->flag &= ~SI_STICKYUVS;
if (G.sima->flag & SI_LOCALSTICKY) G.sima->flag &= ~SI_STICKYUVS; G.sima->flag &= ~SI_LOCALSTICKY;
break; break;
case 'o': case 'o':
G.sima->flag &= ~SI_STICKYUVS; G.sima->flag &= ~SI_STICKYUVS;
G.sima->flag &= ~SI_LOCALSTICKY; G.sima->flag |= SI_LOCALSTICKY;
break; break;
} }
allqueue(REDRAWIMAGE, 0); allqueue(REDRAWIMAGE, 0);
} }
*/
void pin_tface_uv(int mode) void pin_tface_uv(int mode)
{ {

@ -476,7 +476,7 @@ static uiBlock *image_viewmenu(void *arg_unused)
uiBlockSetButmFunc(block, do_image_viewmenu, NULL); uiBlockSetButmFunc(block, do_image_viewmenu, NULL);
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "View Properties...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, ""); uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "View Properties...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, "");
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Image Properties...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, ""); uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Image Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, "");
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Real-time Properties...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 13, ""); uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Real-time Properties...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 13, "");
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Paint Tool...|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 8, ""); uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Paint Tool...|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 8, "");
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Curves Tool...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 11, ""); uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Curves Tool...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 11, "");
@ -549,26 +549,6 @@ static void do_image_selectmenu(void *arg, int event)
case 3: /* Linked UVs */ case 3: /* Linked UVs */
select_linked_tface_uv(2); select_linked_tface_uv(2);
break; break;
case 4: /* Toggle Local UVs Stick to Vertex in Mesh */
if(G.sima->flag & SI_LOCALSTICKY)
G.sima->flag &= ~SI_LOCALSTICKY;
else {
G.sima->flag |= SI_LOCALSTICKY;
G.sima->flag &= ~SI_STICKYUVS;
}
allqueue(REDRAWIMAGE, 0);
break;
case 5: /* Toggle UVs Stick to Vertex in Mesh */
if(G.sima->flag & SI_STICKYUVS) {
G.sima->flag &= ~SI_STICKYUVS;
G.sima->flag |= SI_LOCALSTICKY;
}
else {
G.sima->flag |= SI_STICKYUVS;
G.sima->flag &= ~SI_LOCALSTICKY;
}
allqueue(REDRAWIMAGE, 0);
break;
case 6: /* Toggle Active Face Select */ case 6: /* Toggle Active Face Select */
if(G.sima->flag & SI_SELACTFACE) if(G.sima->flag & SI_SELACTFACE)
G.sima->flag &= ~SI_SELACTFACE; G.sima->flag &= ~SI_SELACTFACE;
@ -598,16 +578,6 @@ static uiBlock *image_selectmenu(void *arg_unused)
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
} }
if ((G.sima->flag & SI_SYNC_UVSEL)==0) {
if(G.sima->flag & SI_LOCALSTICKY) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Stick Local UVs to Mesh Vertex|Shift C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, "");
else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Stick Local UVs to Mesh Vertex|Shift C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, "");
if(G.sima->flag & SI_STICKYUVS) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Stick UVs to Mesh Vertex|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 5, "");
else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Stick UVs to Mesh Vertex|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 5, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
}
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select Pinned|Shift B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 8, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select Pinned|Shift B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 8, "");
@ -988,9 +958,9 @@ static void do_image_uvsmenu(void *arg, int event)
{ {
switch(event) { switch(event) {
case 0: /* UV Transform Properties Panel... */ // case 0: /* UV Transform Properties Panel... */
add_blockhandler(curarea, IMAGE_HANDLER_TRANSFORM_PROPERTIES, UI_PNL_UNSTOW); // add_blockhandler(curarea, IMAGE_HANDLER_TRANSFORM_PROPERTIES, UI_PNL_UNSTOW);
break; // break;
case 1: /* UVs Constrained Rectangular */ case 1: /* UVs Constrained Rectangular */
if(G.sima->flag & SI_BE_SQUARE) G.sima->flag &= ~SI_BE_SQUARE; if(G.sima->flag & SI_BE_SQUARE) G.sima->flag &= ~SI_BE_SQUARE;
else G.sima->flag |= SI_BE_SQUARE; else G.sima->flag |= SI_BE_SQUARE;
@ -1044,7 +1014,7 @@ static uiBlock *image_uvsmenu(void *arg_unused)
block= uiNewBlock(&curarea->uiblocks, "image_uvsmenu", UI_EMBOSSP, UI_HELV, curarea->headwin); block= uiNewBlock(&curarea->uiblocks, "image_uvsmenu", UI_EMBOSSP, UI_HELV, curarea->headwin);
uiBlockSetButmFunc(block, do_image_uvsmenu, NULL); uiBlockSetButmFunc(block, do_image_uvsmenu, NULL);
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Transform Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, ""); //uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Transform Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
if(G.sima->flag & SI_PIXELSNAP) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap to Pixels|", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, ""); if(G.sima->flag & SI_PIXELSNAP) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap to Pixels|", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, "");
else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap to Pixels|", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, ""); else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap to Pixels|", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, "");
@ -1106,18 +1076,6 @@ static uiBlock *image_uvsmenu(void *arg_unused)
return block; return block;
} }
static char *around_pup(void)
{
static char string[512];
char *str = string;
str += sprintf(str, "%s", "Pivot: %t");
str += sprintf(str, "%s", "|Bounding Box Center %x0");
str += sprintf(str, "%s", "|Median Point %x3");
str += sprintf(str, "%s", "|2D Cursor %x1");
return string;
}
void image_buttons(void) void image_buttons(void)
{ {
Image *ima; Image *ima;
@ -1205,19 +1163,33 @@ void image_buttons(void)
/* UV EditMode buttons, not painting or rencering or compositing */ /* UV EditMode buttons, not painting or rencering or compositing */
if ( EM_texFaceCheck() && (G.sima->flag & SI_DRAWTOOL)==0 && !is_render) { if ( EM_texFaceCheck() && (G.sima->flag & SI_DRAWTOOL)==0 && !is_render) {
uiBut *ubut;
int layercount; int layercount;
xco+=10; xco+=10;
uiDefIconTextButS(block, ICONTEXTROW,B_AROUND, ICON_ROTATE, around_pup(), xco,0,XIC+10,YIC, &(G.v2d->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period) ");
xco+= XIC + 12;
uiDefIconButBitI(block, TOG, SI_SYNC_UVSEL, B_REDR, ICON_MESH_HLT, xco,0,XIC,YIC, &G.sima->flag, 0, 0, 0, 0, "Sync Mesh Selection");
uiDefIconTextButS(block, ICONTEXTROW, B_NOP, ICON_ROTATE,
"Pivot: %t|Bounding Box Center %x0|Median Point %x3|2D Cursor %x1",
xco,0,XIC+10,YIC, &(G.v2d->around), 0, 3.0, 0, 0,
"Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period)");
xco+= XIC + 18;
uiBlockBeginAlign(block);
uiDefIconButBitI(block, TOG, SI_SYNC_UVSEL, B_REDR, ICON_MESH_HLT, xco,0,XIC,YIC, &G.sima->flag, 0, 0, 0, 0, "Sync Mesh Selection");
if ((G.sima->flag & SI_SYNC_UVSEL)==0) {
xco+= XIC;
ubut = uiDefIconTextButC(block, ICONTEXTROW, B_REDR, ICON_STICKY_UVS_LOC,
"Sticky UV Selection: %t|Disable%x1|Shared Location%x0|Shared Vertex%x2",
xco,0,XIC+10,YIC, &(G.sima->sticky), 0, 3.0, 0, 0,
"Sticky UV Selection (Hotkeys: Shift C, Alt C, Ctrl C)");
}
uiBlockEndAlign(block);
/* Layer Menu */ /* Layer Menu */
layercount = CustomData_number_of_layers(&G.editMesh->fdata, CD_MTFACE); layercount = CustomData_number_of_layers(&G.editMesh->fdata, CD_MTFACE);
if (layercount>1 && layercount < 12) { /* could allow any number but limit of 11 means no malloc needed */ if (layercount>1 && layercount < 12) { /* could allow any number but limit of 11 means no malloc needed */
uiBut *ubut;
char str_menu[384], *str_pt; /*384 allows for 11 layers */
static int act; static int act;
char str_menu[384], *str_pt; /*384 allows for 11 layers */
act = CustomData_get_active_layer(&G.editMesh->fdata, CD_MTFACE); act = CustomData_get_active_layer(&G.editMesh->fdata, CD_MTFACE);
@ -1230,7 +1202,7 @@ void image_buttons(void)
uiButSetFunc(ubut, do_image_buttons_set_uvlayer_callback, &act, NULL); uiButSetFunc(ubut, do_image_buttons_set_uvlayer_callback, &act, NULL);
/*MEM_freeN(str);*/ /*MEM_freeN(str);*/
xco+= 120; xco+= 80;
} else { } else {
xco+= XIC+16; xco+= XIC+16;

@ -4820,21 +4820,28 @@ static void winqreadimagespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
if (G.sima->flag & SI_SYNC_UVSEL) { if (G.sima->flag & SI_SYNC_UVSEL) {
/* operate on the editmesh */ /* operate on the editmesh */
if (G.qual==0) { if (G.qual==0) {
if (G.scene->selectmode != SCE_SELECT_FACE) if (G.scene->selectmode != SCE_SELECT_FACE) {
toggle_uv_select('f'); G.sima->flag ^= SI_SELACTFACE;
scrarea_queue_winredraw(curarea);
}
} else { } else {
error("Sync selection to Edit Mesh disables UV select options"); error("Sync selection to Edit Mesh disables UV select options");
} }
} else { } else {
/* normal operaton */ /* normal operaton */
if(G.qual==LR_CTRLKEY) if(G.qual==LR_CTRLKEY) {
toggle_uv_select('s'); G.sima->sticky = 2;
else if(G.qual==LR_SHIFTKEY) scrarea_do_headdraw(curarea);
toggle_uv_select('l'); } else if(G.qual==LR_SHIFTKEY) {
else if(G.qual==LR_ALTKEY) G.sima->sticky = 1;
toggle_uv_select('o'); scrarea_do_headdraw(curarea);
else } else if(G.qual==LR_ALTKEY) {
toggle_uv_select('f'); G.sima->sticky = 0;
scrarea_do_headdraw(curarea);
} else {
G.sima->flag ^= SI_SELACTFACE;
scrarea_queue_winredraw(curarea);
}
} }
break; break;
case EKEY : case EKEY :
@ -5000,13 +5007,13 @@ static void winqreadimagespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
case NKEY: case NKEY:
if(G.qual==LR_ALTKEY) { if(G.qual==LR_ALTKEY) {
new_image_sima(); new_image_sima();
} } else if(G.qual==0) {
else if(G.qual==0) { /*if (EM_texFaceCheck()) {
if (EM_texFaceCheck()) {
toggle_blockhandler(sa, IMAGE_HANDLER_TRANSFORM_PROPERTIES, UI_PNL_TO_MOUSE); toggle_blockhandler(sa, IMAGE_HANDLER_TRANSFORM_PROPERTIES, UI_PNL_TO_MOUSE);
} else { } else {
toggle_blockhandler(sa, IMAGE_HANDLER_PROPERTIES, UI_PNL_TO_MOUSE); toggle_blockhandler(sa, IMAGE_HANDLER_PROPERTIES, UI_PNL_TO_MOUSE);
} }*/
toggle_blockhandler(sa, IMAGE_HANDLER_PROPERTIES, UI_PNL_TO_MOUSE);
scrarea_queue_winredraw(sa); scrarea_queue_winredraw(sa);
} }
break; break;
@ -5058,7 +5065,6 @@ static void init_imagespace(ScrArea *sa)
sima->spacetype= SPACE_IMAGE; sima->spacetype= SPACE_IMAGE;
sima->zoom= 1; sima->zoom= 1;
sima->blockscale= 0.7; sima->blockscale= 0.7;
sima->flag = SI_LOCALSTICKY;
sima->iuser.ok= 1; sima->iuser.ok= 1;
sima->iuser.fie_ima= 2; sima->iuser.fie_ima= 2;