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

📄 ui_panel.c

📁 seismic software,very useful
💻 C
📖 第 1 页 / 共 3 页
字号:
	}/* synchronize size slider with slider text */UISizeSlider (widget)Widget widget;	{	int value;	string svalue;	int islider;	extern View view;	for (islider=0; islider<ui->s_nslider; islider++) {		if (ui->s_slist[islider] == widget) break;		}	if (islider == ui->s_nslider) return;	XtVaGetValues (widget,XmNvalue,&value,NULL);	if (ui->s_alist[islider] == NO_INDEX) {		sprintf (svalue, "%d", value);		}	else	{		sprintf (svalue, "%g", AxisValue (MapAxis(ViewMap(view,ui->s_alist[islider])),value));		}	XtVaSetValues (ui->s_vlist[islider],XmNvalue,svalue,NULL);	}/* synchronize slider text with size slider */UISizeText (widget)Widget widget;	{	char *svalue;	int islider, value;	double atof();	extern View view;	for (islider=0; islider<ui->s_nslider; islider++) {		if (ui->s_vlist[islider] == widget) break;		}	XtVaGetValues (widget,XmNvalue,&svalue,NULL);	if (ui->s_alist[islider] == NO_INDEX) {		value = atoi (svalue);		}	else	{		value = AxisIndex(MapAxis(ViewMap(view,ui->s_alist[islider])),atof(svalue));		}	XtVaSetValues (ui->s_slist[islider],XmNvalue,value,NULL);	}/********************************* ARRAY PANEL ******************************//* initialize array control panel */UIArrayInit ()	{	extern UIArrayDraw(), UIArrayClose(), UIArrayDir();	extern UIArrayDeltaAdjust(), UIArrayEndAdjust();	extern Data data;	extern View view;	Widget widget, parent;	ui->across = 0;	if (ui->a_shell) return;	ui->a_shell = XtVaCreatePopupShell ("array", xmDialogShellWidgetClass,ui->main,		XmNtitle, CS("ARRAY PARAMETERS"),		NULL);	ui->a_base = XtVaCreateWidget ("base", xmRowColumnWidgetClass,ui->a_shell,		XmNorientation, XmVERTICAL,		NULL);	XtVaCreateManagedWidget ("ARRAY PARAMETERS:",xmLabelWidgetClass,ui->a_base,NULL);	ui->a_dir = XmVaCreateSimpleRadioBox (ui->a_base, "dir", 		AxisDir (MapAxis (ViewMap(view,AXIS_DEEP))) - 1,		(XtCallbackProc)UIArrayDir,		XmVaRADIOBUTTON, CS(AxisLabel(DataAxis(data,DATA_AXIS1))),NULL,NULL,NULL,		XmVaRADIOBUTTON, CS(AxisLabel(DataAxis(data,DATA_AXIS2))),NULL,NULL,NULL,		XmVaRADIOBUTTON, CS(AxisLabel(DataAxis(data,DATA_AXIS3))),NULL,NULL,NULL,		XmVaRADIOBUTTON, CS(AxisLabel(DataAxis(data,DATA_AXIS4))),NULL,NULL,NULL,		NULL);	XtManageChild (ui->a_dir);	parent = ui->a_dir;	ui->a_across = XtVaCreateManagedWidget ("across", xmScaleWidgetClass, ui->a_base,		XmNminimum, 1,		XmNmaximum, 50,		XmNwidth, 250,		XmNshowValue, True,		XmNtitleString, CS("ACROSS"),		XmNorientation, XmHORIZONTAL,		NULL);	XtAddCallback (ui->a_across,XmNvalueChangedCallback,(XtCallbackProc)UIArrayEndAdjust,NULL);	ui->a_down = XtVaCreateManagedWidget ("down", xmScaleWidgetClass, ui->a_base,		XmNminimum, 1,		XmNmaximum, 50,		XmNwidth, 250,		XmNshowValue, True,		XmNtitleString, CS("DOWN"),		XmNorientation, XmHORIZONTAL,		NULL);	XtAddCallback (ui->a_down,XmNvalueChangedCallback,(XtCallbackProc)UIArrayEndAdjust,NULL);	ui->a_start = XtVaCreateManagedWidget ("start", xmScaleWidgetClass, ui->a_base,		XmNwidth, 250,		XmNshowValue, True,		XmNtitleString, CS("START"),		XmNorientation, XmHORIZONTAL,		NULL);	XtAddCallback (ui->a_start,XmNvalueChangedCallback,(XtCallbackProc)UIArrayEndAdjust,NULL);	ui->a_delta = XtVaCreateManagedWidget ("delta", xmScaleWidgetClass, ui->a_base,		XmNminimum, 1,		XmNmaximum, 50,		XmNwidth, 250,		XmNvalue, ui->delta,		XmNshowValue, True,		XmNtitleString, CS("DELTA"),		XmNorientation, XmHORIZONTAL,		NULL);	XtAddCallback (ui->a_delta,XmNvalueChangedCallback,(XtCallbackProc)UIArrayEndAdjust,NULL);	ui->a_end = XtVaCreateManagedWidget ("end", xmScaleWidgetClass, ui->a_base,		XmNminimum, 0,		XmNwidth, 250,		XmNshowValue, True,		XmNtitleString, CS("END"),		XmNorientation, XmHORIZONTAL,		NULL);	XtAddCallback (ui->a_end,XmNvalueChangedCallback,(XtCallbackProc)UIArrayDeltaAdjust,NULL);	XtVaCreateManagedWidget ("line", xmSeparatorWidgetClass, ui->a_base,NULL);	widget = XtVaCreateManagedWidget ("DRAW", xmPushButtonWidgetClass, ui->a_base, NULL);	XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)UIArrayDraw,NULL);	widget = XtVaCreateManagedWidget ("CLOSE", xmPushButtonWidgetClass, ui->a_base, NULL);	XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)UIArrayClose,NULL);	XtManageChild (ui->a_base);	XtManageChild (ui->a_shell);	}/* set array control panel direction when orientation changes */UIArrayDir (widget,item)Widget widget;int item;	{	if (XmToggleButtonGetState(widget) == True) {		UIArrayReset (item+1);		}	}/* fetch current array control panel settings */UIArrayRaise ()	{	UIArrayInit ();	UIArrayReset (0);	ui->shell = ui->a_shell;	XtPopup (ui->a_shell,XtGrabNone);	}UIArrayReset (dir)int dir;	{	extern View view;	extern Data data;	Axis axis;	Map map;	int imap, delta;	WidgetList list;	if (ui->a_shell == 0) return;	if (!dir) {		map = ViewMap(view,AXIS_DEEP);		ui->dir = AxisDir(MapAxis(map));		XtVaGetValues (ui->a_dir,XmNchildren,&list,NULL);		dir = ui->dir - 1;		XtVaSetValues (list[dir],XmNset,True,NULL);		XtVaSetValues (list[(dir+1)%3],XmNset,False,NULL);		XtVaSetValues (list[(dir+2)%3],XmNset,False,NULL);		}	else	{		ui->dir = dir;		for (imap=1; imap<=3; imap++) {			if (ui->dir == AxisDir(MapAxis(map=view->map[imap]))) break;			}		}	axis = DataAxis(data,ui->dir);	UIArrayShape (MapNFrame(map),&ui->across,&ui->down);	XtVaSetValues (ui->a_across,XmNvalue,ui->across,NULL);	XtVaSetValues (ui->a_down,XmNvalue,ui->down,NULL);	ui->delta = 1;	ui->start = MapLow(map);	delta = rint(AxisDelta(axis) * AxisScale(axis));	XtVaSetValues (ui->a_delta,		XmNdecimalPoints, AxisPrec(axis),		XmNminimum, delta,		XmNmaximum, 50*delta,		XmNvalue, ui->delta*delta,		NULL);	XtVaSetValues (ui->a_start,		XmNdecimalPoints, AxisPrec(axis),		XmNminimum, AxisScaledValue(axis,0),		XmNmaximum, AxisScaledValue(axis,AxisSize(axis)-1),		XmNvalue, AxisScaledValue(axis,ui->start),		NULL);	XtVaSetValues (ui->a_end,		XmNdecimalPoints, AxisPrec(axis),		XmNminimum, AxisScaledValue(axis,0),		XmNmaximum, AxisScaledValue(axis,AxisSize(axis)-1),		XmNvalue, AxisScaledValue(axis,			(ui->across*ui->down*ui->delta+ui->start)<			(AxisSize(axis)-1)?			AxisScaledValue(axis,ui->across*ui->down*ui->delta+ui->start):			AxisScaledValue(axis,AxisSize(axis)-1) ),		NULL);	}/* execute array control panel settings */UIArrayDraw ()	{	extern View view;	Axis axis;	int iaxis, value;	if (ui->dir != AxisDir(axis=MapAxis(ViewMap(view,AXIS_DEEP)))) {		if (ui->dir == AxisDir(axis=MapAxis(ViewMap(view,AXIS_ACROSS)))) {			MapSwap (ViewMap(view,AXIS_DEEP),ViewMap(view,AXIS_ACROSS));			}		else	{			axis = MapAxis(ViewMap(view,AXIS_DOWN));			MapSwap (ViewMap(view,AXIS_DEEP),ViewMap(view,AXIS_DOWN));			}		}	XtVaGetValues (ui->a_across,XmNvalue,&ui->across,NULL);	XtVaGetValues (ui->a_down,XmNvalue,&ui->down,NULL);	XtVaGetValues (ui->a_delta,XmNvalue,&value,NULL);	ui->delta = AxisScaledIndex(axis,value+AxisScaledValue(axis,0));	XtVaGetValues (ui->a_start,XmNvalue,&value,NULL);	ui->start = AxisScaledIndex(axis,value);	ViewArray (ui->across,ui->down,ui->start,ui->delta);	UISizeReset ();	}/* close array control panel */UIArrayClose ()	{	XtPopdown (ui->a_shell);	ui->shell = 0;	}/* synchronize array end slider with other array slider adjustments */UIArrayEndAdjust ()	{	extern Data data;	Axis axis;	int max, value;	axis = DataAxis(data,ui->dir);	XtVaGetValues (ui->a_across,XmNvalue,&ui->across,NULL);	XtVaGetValues (ui->a_down,XmNvalue,&ui->down,NULL);	XtVaGetValues (ui->a_delta,XmNvalue,&value,NULL);	ui->delta = AxisScaledIndex(axis,value+AxisScaledValue(axis,0));	XtVaGetValues (ui->a_start,XmNvalue,&value,NULL);	ui->start = AxisScaledIndex(axis,value);	XtVaGetValues (ui->a_end,XmNmaximum,&value,NULL);	max = AxisScaledIndex(axis,value);	XtVaSetValues (ui->a_end,		XmNvalue,max<		(ui->start+ui->down*ui->across*ui->delta) ?		AxisScaledValue(axis,max) :		AxisScaledValue(axis,ui->start+ui->down*ui->across*ui->delta),		NULL);	}/* synchronize array delta slider with array end slider changes */UIArrayDeltaAdjust ()	{	int last, max, value;	extern Data data;	Axis axis;	axis = DataAxis(data,ui->dir);	XtVaGetValues (ui->a_across,XmNvalue,&ui->across,NULL);	XtVaGetValues (ui->a_down,XmNvalue,&ui->down,NULL);	XtVaGetValues (ui->a_start,XmNvalue,&value,NULL);	ui->start = AxisScaledIndex(axis,value);	XtVaGetValues (ui->a_end,XmNvalue,&value,NULL);	last = AxisScaledIndex(axis,value);	ui->delta = (last - ui->start - 1) / (ui->across * ui->down);	ui->delta = ui->delta > 1 ? ui->delta : 1;	ui->delta = ui->delta < 50 ? ui->delta : 50;	XtVaSetValues (ui->a_delta,		XmNvalue,(int)rint(AxisScale(axis)*AxisDelta(axis)*ui->delta),		NULL);	}UIArrayShape (n,across,down)int n, *across, *down;	{	double sqrt();	int across_, down_;	if (n < 4) {		across_ = n;		down_ = 1;		}	else	{		across_ = (int)sqrt((double)n);		down_ = n / across_;		if (across_ * down_ < n) across_++;		}	across_ = across_ > 1 ? across_ : 1;	down_ = down_ > 1 ? down_ : 1;	across_ = across_ < 50 ? across_ : 50;	down_ = down_ < 50 ? down_ : 50;	*across = across_;	*down = down_;	}/********************************* LABEL PANEL ******************************/UILabelInit ()	{	extern View view;	string svalue;	Widget parent;	if (ui->l_shell) return;	ui->l_shell = XtVaCreatePopupShell ("label",xmDialogShellWidgetClass,ui->main,		XmNtitle, CS("LABEL PARAMETERS"),		NULL);	ui->l_base = XtVaCreateWidget ("l_base",xmRowColumnWidgetClass,ui->l_shell,		XmNnumColumns, 9,		XmNpacking, XmPACK_COLUMN,		XmNorientation, XmHORIZONTAL,		NULL);#undef LABEL#define	LABEL(name) XtVaCreateManagedWidget (name, xmLabelWidgetClass, parent,\		NULL);#undef FIELD#define FIELD(var) \	ui->var = XtVaCreateManagedWidget ("var", xmTextFieldWidgetClass, parent,\		XmNcolumns, 6,\		NULL);#undef BUTTON#define BUTTON(name,callback) {\	Widget widget;\	extern callback();\	widget = XtVaCreateManagedWidget (name, xmPushButtonWidgetClass, parent, NULL);\	XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)callback,NULL);\	}	parent = ui->l_base;	LABEL("TITLE");	FIELD(l_title);	LABEL("");	LABEL("");	LABEL("");	LABEL("");	LABEL("COLOR");	LABEL("DOWN");	LABEL("ACROSS");	LABEL("DEEP");	LABEL("LABEL");	FIELD(l_label[AXIS_COLOR]);	FIELD(l_label[AXIS_DOWN]);	FIELD(l_label[AXIS_ACROSS]);	FIELD(l_label[AXIS_DEEP]);	LABEL("ORIGIN");	FIELD(l_first[AXIS_COLOR]);	FIELD(l_first[AXIS_DOWN]);	FIELD(l_first[AXIS_ACROSS]);	FIELD(l_first[AXIS_DEEP]);	LABEL("DELTA");	FIELD(l_delta[AXIS_COLOR]);	FIELD(l_delta[AXIS_DOWN]);	FIELD(l_delta[AXIS_ACROSS]);	FIELD(l_delta[AXIS_DEEP]);	LABEL("MIN TIC");	FIELD(l_tic0[AXIS_COLOR]);	FIELD(l_tic0[AXIS_DOWN]);	FIELD(l_tic0[AXIS_ACROSS]);	FIELD(l_tic0[AXIS_DEEP]);	LABEL("TIC INC");	FIELD(l_dtic[AXIS_COLOR]);	FIELD(l_dtic[AXIS_DOWN]);	FIELD(l_dtic[AXIS_ACROSS]);	FIELD(l_dtic[AXIS_DEEP]);	LABEL("MAX TIC");	FIELD(l_tic2[AXIS_COLOR]);	FIELD(l_tic2[AXIS_DOWN]);	FIELD(l_tic2[AXIS_ACROSS]);	FIELD(l_tic2[AXIS_DEEP]);	BUTTON("EXECUTE SETTINGS",UILabelDraw);	BUTTON("CURRENT SETTINGS",UILabelReset);	BUTTON("CLOSE",UILabelClose);	XtManageChild (ui->l_base);	}UILabelRaise ()	{	UILabelInit ();	UILabelReset ();	XtPopup (ui->l_shell,XtGrabNone);	}UILabelReset ()	{	int i;	extern View view;	extern Data data;	string svalue;	XtVaSetValues (ui->l_title,XmNvalue,DataTitle(data),NULL);	for (i=0; i<4; i++) {		XtVaSetValues (ui->l_label[i],XmNvalue,AxisLabel(MapAxis(view->map[i])),NULL);		sprintf (svalue,"%g",AxisFirst(MapAxis(view->map[i])));		XtVaSetValues (ui->l_first[i],XmNvalue,svalue,NULL);		sprintf (svalue,"%g",AxisDelta(MapAxis(view->map[i])));		XtVaSetValues (ui->l_delta[i],XmNvalue,svalue,NULL);		sprintf (svalue,"%g",MapTic0(view->map[i]));		XtVaSetValues (ui->l_tic0[i],XmNvalue,svalue,NULL);		sprintf (svalue,"%g",MapDtic(view->map[i]));		XtVaSetValues (ui->l_dtic[i],XmNvalue,svalue,NULL);		sprintf (svalue,"%g",MapTic2(view->map[i]));		XtVaSetValues (ui->l_tic2[i],XmNvalue,svalue,NULL);		}	}UILabelDraw ()	{	extern Data data;	extern View view;	char *svalue;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -