📄 propertydlg.cpp
字号:
case 303:
Dlg->Activate(305, true); Dlg->Activate(307, true);
Dlg->Activate(310, true); Dlg->Activate(312, true);
res = -1;
break;
}
}while (res < 0);
if(res == 1){ //OK pressed
Undo.SetDisp(cdisp);
OD_linedef(OD_GETLINE, 0L, 0L, 0L, (void *)&newLine, 0);
if(cmpLineDEF(&LineDef, &newLine)) {
Undo.Line(parent, &LineDef, undo_flags); undo_flags |= UNDO_CONTINUE;
memcpy(&LineDef, &newLine, sizeof(LineDEF));
}
tmpType = type & (~0x77);
if(Dlg->GetCheck(202)) tmpType |= 1;
else if(Dlg->GetCheck(204)) tmpType |= 2;
else if(Dlg->GetCheck(206)) tmpType |= 3;
else if(Dlg->GetCheck(208)) tmpType |= 4;
if(Dlg->GetCheck(302)) tmpType |= 0x10;
else if(Dlg->GetCheck(303)) tmpType |= 0x20;
undo_flags = CheckNewInt(&type, type, tmpType, parent, undo_flags);
Dlg->GetValue(211, &n_l5.fx); Dlg->GetValue(213, &n_l5.fy);
undo_flags = CheckNewLFPoint(&l5, &o_l5, &n_l5, parent, undo_flags);
Dlg->GetValue(305, &n_clip.Xmin); Dlg->GetValue(307, &n_clip.Xmax);
Dlg->GetValue(310, &n_clip.Ymin); Dlg->GetValue(312, &n_clip.Ymax);
undo_flags = CheckNewFloat(&uclip.Xmin, o_clip.Xmin, n_clip.Xmin, parent, undo_flags);
undo_flags = CheckNewFloat(&uclip.Xmax, o_clip.Xmax, n_clip.Xmax, parent, undo_flags);
undo_flags = CheckNewFloat(&uclip.Ymin, o_clip.Ymin, n_clip.Ymin, parent, undo_flags);
undo_flags = CheckNewFloat(&uclip.Ymax, o_clip.Ymax, n_clip.Ymax, parent, undo_flags);
if(!cp || (undo_flags & UNDO_CONTINUE)) bRet = true;
}
CloseDlgWnd(hDlg);
delete Dlg;
return bRet;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SDellipse properties
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool
SDellipse::PropertyDlg()
{
TabSHEET tab1 = {0, 40, 10, "Line"};
TabSHEET tab2 = {40, 80, 10, "Details"};
DlgInfo ellDlg[] = {
{1, 2, 0, DEFAULT, PUSHBUTTON, (void*)"OK", 150, 10, 45, 12},
{2, 3, 0, 0x0L, PUSHBUTTON, (void*)"Cancel", 150, 25, 45, 12},
{3, 0, 4, ISPARENT | CHECKED, GROUP, NULL, 138, 40, 55, 12},
{4, 5, 100, ISPARENT | CHECKED, SHEET, &tab1, 5, 10, 139, 120},
{5, 0, 200, ISPARENT, SHEET, &tab2, 5, 10, 139, 120},
{100, 0, 0, NOSELECT, ODBUTTON, (void*)OD_linedef, 10, 38, 130, 100},
{200, 201, 0, 0x0L, CHECKBOX, (void*)" show regression line", 20, 30, 80, 9},
{201, 0, 250, CHECKED, GROUPBOX, (void*)" ellipse ", 10, 55, 129, 70},
{250, 251, 0, 0x0L, LTEXT, (void*)"center (means of data)", 25, 60, 60, 8},
{251, 252, 0, 0x0L, RTEXT, (void*)"x =", 20, 70, 60, 8},
{252, 253, 0, 0x0L, LTEXT, 0L, 82, 70, 30, 8},
{253, 254, 0, 0x0L, RTEXT, (void*)"y =", 20, 78, 60, 8},
{254, 255, 0, 0x0L, LTEXT, 0L, 82, 78, 30, 8},
{255, 256, 0, 0x0L, LTEXT, (void*)"standard deviation (SD)", 25, 90, 60, 8},
{256, 257, 0, 0x0L, RTEXT, (void*)"major axis =", 20, 100, 60, 8},
{257, 258, 0, 0x0L, LTEXT, 0L, 82, 100, 30, 8},
{258, 259, 0, 0x0L, RTEXT, (void*)"minor axis =", 20, 108, 60, 8},
{259, 0, 0, LASTOBJ, LTEXT, 0L, 82, 108, 30, 8}};
DlgRoot *Dlg;
void *hDlg;
int res, tmpType;
LineDEF newLine;
bool bRet = false;
DWORD undo_flags = 0L;
anyOutput *cdisp = Undo.cdisp;
if(!parent) return false;
OD_linedef(OD_SETLINE, 0L, 0L, 0L, (void *)&LineDef, 0);
if(!(Dlg = new DlgRoot(ellDlg))) return false;
if(!(type & 0x10000)) Dlg->SetCheck(200, 0L, true);
WriteNatFloatToBuff(TmpTxt, mx); Dlg->SetText(252, TmpTxt+1);
WriteNatFloatToBuff(TmpTxt, my); Dlg->SetText(254, TmpTxt+1);
strcpy(TmpTxt, "+/-");
WriteNatFloatToBuff(TmpTxt+3, sd1); Dlg->SetText(259, TmpTxt);
WriteNatFloatToBuff(TmpTxt+3, sd2); Dlg->SetText(257, TmpTxt);
tmpType = type;
if(parent && parent->name) sprintf(TmpTxt, "SD ellipse of %s", parent->name);
else strcpy(TmpTxt, "SD ellipse properties");
hDlg = CreateDlgWnd(TmpTxt, 50, 50, 410, 300, Dlg, 0x0L);
do{
LoopDlgWnd();
res = Dlg->GetResult();
}while (res < 0);
if(res == 1){ //OK pressed
Undo.SetDisp(cdisp);
OD_linedef(OD_GETLINE, 0L, 0L, 0L, (void *)&newLine, 0);
if(cmpLineDEF(&LineDef, &newLine)) {
Undo.Line(parent, &LineDef, undo_flags); undo_flags |= UNDO_CONTINUE;
memcpy(&LineDef, &newLine, sizeof(LineDEF));
}
if(Dlg->GetCheck(200)) tmpType &= ~0x10000;
else tmpType |= 0x10000;
undo_flags = CheckNewInt(&type, type, tmpType, parent, undo_flags);
if(undo_flags & UNDO_CONTINUE) bRet = true;
}
CloseDlgWnd(hDlg); delete Dlg;
return bRet;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Normal error bars properties
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool
ErrorBar::PropertyDlg()
{
TabSHEET tab1 = {0, 38, 10, "Error Bar"};
TabSHEET tab2 = {38, 65, 10, "Type"};
TabSHEET tab3 = {65, 90, 10, "Edit"};
DlgInfo ErrDlg[] = {
{1, 2, 0, DEFAULT, PUSHBUTTON, (void*)"Apply to ERROR", 100, 10, 57, 12},
{2, 3, 0, 0x0L, PUSHBUTTON, (void*)"Apply to PLOT", 100, 25, 57, 12},
{3, 4, 0, 0x0L, PUSHBUTTON, (void*)"Cancel", 100, 40, 57, 12},
{4, 0, 5, ISPARENT | CHECKED, GROUP, 0L, 138, 40, 55, 12},
{5, 6, 100, ISPARENT | CHECKED, SHEET, &tab1, 5, 10, 90, 100},
{6, 7, 200, ISPARENT, SHEET, &tab2, 5, 10, 90, 100},
{7, 0, 300, ISPARENT, SHEET, &tab3, 5, 10, 90, 100},
{100, 101, 0, 0x0L, RTEXT, (void*)"cap width", 15, 40, 28, 8},
{101, 102, 0, 0x0L, EDVAL1, &SizeBar, 46, 40, 25, 10},
{102, 103, 0, 0x0L, LTEXT, (void *) Units[defs.cUnits].display, 73, 40, 20, 8},
{103, 104, 0, 0x0L, RTEXT, (void*)"line width", 15, 55, 28, 8},
{104, 105, 0, 0x0L, EDVAL1, &ErrLine.width, 46, 55, 25, 10},
{105, 106, 0, 0x0L, LTEXT, (void *) Units[defs.cUnits].display, 73, 55, 20, 8},
{106, 107, 0, 0x0L, RTEXT, (void*)"line color", 15, 70, 28, 8},
{107, 0, 0, OWNDIALOG, COLBUTTON, (void *)ErrLine.color, 46, 70, 25, 10},
{200, 0, 500, ISPARENT | CHECKED, GROUP, 0L, 0, 0, 0, 0},
{300, 301, 0, 0x0L, RTEXT, (void*)"x-value", 15, 40, 28, 8},
{301, 302, 0, 0x0L, EDVAL1, &fPos.fx, 46, 40, 35, 10},
{302, 303, 0, 0x0L, RTEXT, (void*)"y-value", 15, 55, 28, 8},
{303, 304, 0, 0x0L, EDVAL1, &fPos.fy, 46, 55, 35, 10},
{304, 305, 0, 0x0L, RTEXT, (void*)"error", 15, 70, 28, 8},
{305, 0, 0, 0x0L, EDVAL1, &ferr, 46, 70, 35, 10},
{500, 501, 0, TOUCHEXIT | ISRADIO, ODBUTTON, (void*)(OD_ErrBarTempl), 12, 40, 25, 25},
{501, 502, 0, TOUCHEXIT | ISRADIO, ODBUTTON, (void*)(OD_ErrBarTempl), 37, 40, 25, 25},
{502, 503, 0, TOUCHEXIT | ISRADIO, ODBUTTON, (void*)(OD_ErrBarTempl), 62, 40, 25, 25},
{503, 504, 0, TOUCHEXIT | ISRADIO, ODBUTTON, (void*)(OD_ErrBarTempl), 12, 65, 25, 25},
{504, 505, 0, TOUCHEXIT | ISRADIO, ODBUTTON, (void*)(OD_ErrBarTempl), 37, 65, 25, 25},
{505, 0, 0, LASTOBJ | TOUCHEXIT | ISRADIO, ODBUTTON, (void*)(OD_ErrBarTempl), 62, 65, 25, 25}};
DlgRoot *Dlg;
void *hDlg;
int res, tmpType = type;
double n_sb, o_sb, n_lw, o_lw, n_err, o_err;
lfPOINT n_pos, o_pos;
DWORD n_col, undo_flags = 0L;
anyOutput *cdisp = Undo.cdisp;
bool bRet = false;
if(!parent) return false;
if(!(Dlg = new DlgRoot(ErrDlg)))return false;
Dlg->SetCheck(500 + (type & 0x7), 0L, true);
if(!(Dlg->GetValue(101, &o_sb))) o_sb = SizeBar;
if(!(Dlg->GetValue(104, &o_lw))) o_lw = ErrLine.width;
if(!(Dlg->GetValue(305, &o_err))) o_err = ferr;
if(!(Dlg->GetValue(301, &o_pos.fx))) o_pos.fx = fPos.fx;
if(!(Dlg->GetValue(303, &o_pos.fy))) o_pos.fy = fPos.fy;
n_sb = o_sb; n_lw = o_lw; n_err = o_err; n_pos.fx = o_pos.fx; n_pos.fy = o_pos.fy;
if(parent && parent->name) sprintf(TmpTxt, "Error bar of %s", parent->name);
else strcpy(TmpTxt, "Error properties");
hDlg = CreateDlgWnd(TmpTxt, 50, 50, 328, 260, Dlg, 0x0L);
do {
LoopDlgWnd();
res = Dlg->GetResult();
switch (res) {
case 500: case 501: case 502:
case 503: case 504: case 505:
tmpType = res-500;
res = -1;
break;
case 1: //accept for this object
case 2: // or all objects of plot
Undo.SetDisp(cdisp);
Dlg->GetValue(101, &n_sb); Dlg->GetValue(104, &n_lw);
Dlg->GetColor(107, &n_col); Dlg->GetValue(305, &n_err);
Dlg->GetValue(301, &n_pos.fx); Dlg->GetValue(303, &n_pos.fy);
break;
}
}while (res <0);
switch (res) {
case 1: //new setting for current error bar only
undo_flags = CheckNewFloat(&SizeBar, o_sb, n_sb, parent, undo_flags);
undo_flags = CheckNewFloat(&ErrLine.width, o_lw, n_lw, parent, undo_flags);
undo_flags = CheckNewDword(&ErrLine.color, ErrLine.color, n_col, parent, undo_flags);
undo_flags = CheckNewInt(&type, type, tmpType, parent, undo_flags);
undo_flags = CheckNewFloat(&ferr, o_err, n_err, parent, undo_flags);
undo_flags = CheckNewLFPoint(&fPos, &o_pos, &n_pos, parent, undo_flags);
if(undo_flags & UNDO_CONTINUE) bRet = true;
break;
case 2: //new settings to all error bars of plot
parent->Command(CMD_SAVE_ERRS, 0L, 0L);
parent->SetSize(SIZE_ERRBAR, n_sb);
parent->SetSize(SIZE_ERRBAR_LINE, n_lw);
parent->SetColor(COL_ERROR_LINE, n_col);
if(type != tmpType) parent->Command(CMD_MRK_DIRTY, 0L, 0L);
bRet = parent->Command(CMD_ERR_TYPE, (void*)(& tmpType), 0L);
break;
}
CloseDlgWnd(hDlg);
delete Dlg;
return bRet;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Arrow properties dialog
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool
Arrow::PropertyDlg()
{
TabSHEET tab1 = {0, 29, 10, "Arrow"};
TabSHEET tab2 = {29, 59, 10, "Type"};
TabSHEET tab3 = {59, 90, 10, "Edit"};
DlgInfo ArrowDlg[] = {
{1, 2, 0, DEFAULT, PUSHBUTTON, type & ARROW_UNITS ?
(void*)"OK" : (void*)"Apply to ARROW", 100, 10, 57, 12},
{2, 3, 0, 0x0L, PUSHBUTTON, (void*)"Apply to PLOT", 100, 25, 57, 12},
{3, 4, 0, 0x0L, PUSHBUTTON, (void*)"Cancel", 100,
type & ARROW_UNITS ? 25 : 40, 57, 12},
{4, 50, 5, ISPARENT | CHECKED, GROUP, 0L, 138, 40, 55, 12},
{5, 6, 100, ISPARENT | CHECKED, SHEET, &tab1, 5, 10, 90, 100},
{6, 7, 200, ISPARENT, SHEET, &tab2, 5, 10, 90, 100},
{7, 0, 300, ISPARENT, SHEET, &tab3, 5, 10, 90, 100},
{50, 0, 600, ISPARENT | CHECKED | HIDDEN, GROUP, 0L, 0, 0, 0, 0},
{100, 101, 0, 0x0L, RTEXT, (void*)"cap width", 15, 40, 28, 8},
{101, 102, 0, 0x0L, EDVAL1, &cw, 46, 40, 25, 10},
{102, 103, 0, 0x0L, LTEXT, (void *) Units[defs.cUnits].display, 73, 40, 20, 8},
{103, 104, 0, 0x0L, RTEXT, (void*)"length", 15, 52, 28, 8},
{104, 105, 0, 0x0L, EDVAL1, &cl, 46, 52, 25, 10},
{105, 106, 0, 0x0L, LTEXT, (void *) Units[defs.cUnits].display, 73, 52, 20, 8},
{106, 107, 0, 0x0L, RTEXT, (void*)"line width", 15, 70, 28, 8},
{107, 108, 0, 0x0L, EDVAL1, &LineDef.width, 46, 70, 25, 10},
{108, 109, 0, 0x0L, LTEXT, (void *) Units[defs.cUnits].display, 73, 70, 20, 8},
{109, 110, 0, 0x0L, RTEXT, (void*)"color", 15, 82, 28, 8},
{110, 0, 0, OWNDIALOG, COLBUTTON, (void *)LineDef.color, 46, 82, 25, 10},
{200, 201, 0, TOUCHEXIT, RADIO1, (void*)"line only", 15, 40, 60, 8},
{201, 202, 0, TOUCHEXIT, RADIO1, (void*)"arrow with lines", 15, 55, 60, 8},
{202, 0, 0, TOUCHEXIT, RADIO1, (void*)"filled arrow", 15, 70, 60, 8},
{300, 301, 0, 0x0L, RTEXT, (void*)"x-value", 10, 30, 28, 8},
{301, 302, 0, 0x0L, EDVAL1, &pos2.fx, 46, 30, 35, 10},
{302, 303, 0, 0x0L, RTEXT, (void*)"y-value", 10, 42, 28, 8},
{303, 304, 0, 0x0L, EDVAL1, &pos2.fy, 46, 42, 35, 10},
{304, 305, 0, 0x0L, RTEXT, (void*)"origin x", 10, 60, 28, 8},
{305, 306, 0, 0x0L, EDVAL1, &pos1.fx, 46, 60, 35, 10},
{306, 307, 0, 0x0L, RTEXT, (void*)" y", 10, 72, 28, 8},
{307, 308, 0, 0x0L, EDVAL1, &pos1.fy, 46, 72, 35, 10},
{308, 309, 0, 0x0L, CHECKBOX, (void*)"set common origin to", 16, 85, 70, 8},
{309, 0, 0, 0x0L, LTEXT, (void*)"all arrows of plot", 25, 93, 65, 8},
{600, 601, 0, TOUCHEXIT, ODBUTTON, (void*)OD_DrawOrder, 108, 67, 15, 15},
{601, 602, 0, TOUCHEXIT, ODBUTTON, (void*)OD_DrawOrder, 134, 67, 15, 15},
{602, 603, 0, TOUCHEXIT, ODBUTTON, (void*)OD_DrawOrder, 134, 82, 15, 15},
{603, 0, 0, LASTOBJ | TOUCHEXIT, ODBUTTON, (void*)OD_DrawOrder, 108, 82, 15, 15}};
DlgRoot *Dlg;
void *hDlg;
lfPOINT o_pos1, o_pos2, n_pos1, n_pos2;
double o_cw, o_cl, n_cw, n_cl, o_lw, n_lw;
int res, tmptype = type, undo_level = *Undo.pcb;
bool bRet = false;
DWORD o_col, n_col, undo_flags = 0L;
anyOutput *cdisp = Undo.cdisp;
if(!parent) return false;
if(!(Dlg = new DlgRoot(ArrowDlg))) return false;
Dlg->GetValue(301, &o_pos2.fx); Dlg->GetValue(303, &o_pos2.fy);
Dlg->GetValue(305, &o_pos1.fx); Dlg->GetValue(307, &o_pos1.fy);
Dlg->GetValue(101, &o_cw); Dlg->GetValue(104, &o_cl);
Dlg->GetValue(107, &o_lw); Dlg->GetColor(110, &o_col);
if(parent->Id == GO_GRAPH || parent->Id == GO_PAGE) Dlg->ShowItem(50, true);
switch(type & 0xff) {
case ARROW_LINE: Dlg->SetCheck(201, 0L, true); break;
case ARROW_TRIANGLE: Dlg->SetCheck(202, 0L, true); break;
default: Dlg->SetCheck(200, 0L, true); break;
}
if(tmptype & ARROW_UNITS){
Dlg->ShowItem(2, false);
Dlg->ShowItem(308, false); Dlg->ShowItem(309, false);
}
if(parent && parent->name) sprintf(TmpTxt, "Arrow of %s", parent->name);
else strcpy(TmpTxt, "Arrow properties");
hDlg = CreateDlgWnd(TmpTxt, 50, 50, 328, 260, Dlg, 0x0L);
do {
LoopDlgWnd(); res = Dlg->GetResult();
switch (res) {
case 600: case 601: case 602: case 603:
Undo.SetDisp(cdisp);
res = ExecDrawOrderButt(parent, this, res);
}
switch (res) {
case 200: tmptype = ARROW_NOCAP; res = -1; break;
case 201: tmptype = ARROW_LINE; res = -1; break;
case 202: tmptype = ARROW_TRIANGLE; res = -1; break;
case 1: case 2:
Undo.SetDisp(cdisp);
Dlg->GetValue(301, &n_pos2.fx); Dlg->GetValue(303, &n_pos2.fy);
Dlg->GetValue(305, &n_pos1.fx); Dlg->GetValue(307, &n_pos1.fy);
Dlg->GetValue(101, &n_cw); Dlg->GetValue(104, &n_cl);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -