⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 propertydlg.cpp

📁 Linux/windows 环境下跨平台开发程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		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 + -