/* * Motif * * Copyright (c) 1987-2012, The Open Group. All rights reserved. * * These libraries and programs are free software; you can * redistribute them and/or modify them under the terms of the GNU * Lesser General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * These libraries and programs are distributed in the hope that * they will be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public * License along with these librararies and programs; if not, write * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth * Floor, Boston, MA 02110-1301 USA */ /* * HISTORY */ #ifdef REV_INFO #ifndef lint static char rcsid[] = "$XConsortium: Baseline1.c /main/7 1995/07/13 18:28:00 drk $" #endif #endif #include char val_string[] = "Thomas, Lofton, Reed, and Kelly, spells victory\nfor \ the Bills in Minneapolis.\nSo I was wrong - so shoot me!!\nGo Bills!!"; Widget TitleWidget, Frame1; void CreateChangeDialog(); static void ChangeVertAlign(); static void ChangeHorizAlign(); static void ChangeShadowType(); static void ChangeShadowThickness(); static void SetAlignmentString(); void main (argc, argv) int argc; char **argv; { register int n; Arg args[MAX_ARGS]; XmString tcs; Widget Label2; Widget BulletinB1, Text1; CommonTestInit(argc, argv); n = 0; XtSetArg(args[n], XmNshadowType, XmSHADOW_OUT); n++; XtSetArg(args[n], XmNshadowThickness, 10); n++; Frame1 = XmCreateFrame(Shell1, "Frame1", args, n); XtManageChild(Frame1); tcs = XmStringCreateSimple("Alignment String"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; XtSetArg(args[n], XmNchildType, XmFRAME_TITLE_CHILD); n++; XtSetArg(args[n], XmNchildHorizontalAlignment, XmALIGNMENT_CENTER); n++; TitleWidget = XmCreateLabel(Frame1, "TitleWidget", args, n); XtManageChild(TitleWidget); n = 0; BulletinB1 = XmCreateBulletinBoard(Frame1, "BulletinB1", args, n); XtManageChild(BulletinB1); XmStringFree(tcs); XtRealizeWidget(Shell1); CommonPause(); tcs = XmStringCreateSimple("Another Label"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; XtSetArg(args[n], XmNchildType, XmFRAME_TITLE_CHILD); n++; XtSetArg(args[n], XmNchildHorizontalAlignment, XmALIGNMENT_CENTER); n++; Label2 = XmCreateLabel(Frame1, "Label2", args, n); XtManageChild(Label2); XmStringFree(tcs); CommonPause(); XtDestroyWidget(Label2); /* reset the original label to be XmFRAME_TITLE_CHILD, it was reset when Label2 was set as XmFRAME_TITLE_CHILD. */ n = 0; XtSetArg(args[n], XmNchildType, XmFRAME_TITLE_CHILD); n++; XtSetValues(TitleWidget, args, n); n = 0; XtSetArg(args[n], XmNcolumns, 50); n++; XtSetArg(args[n], XmNrows, 5); n++; XtSetArg(args[n], XmNvalue, val_string); n++; XtSetArg(args[n], XmNchildType, XmFRAME_WORKAREA_CHILD); n++; XtSetArg(args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++; Text1 = XmCreateScrolledText(BulletinB1, "ScrolledText1", args, n); XtManageChild(Text1); CommonPause(); n = 0; XtSetArg(args[n], XmNmarginWidth, 20); n++; XtSetArg(args[n], XmNmarginHeight, 20); n++; XtSetValues(Frame1, args, n); CommonPause(); CreateChangeDialog(Frame1); CommonPause(); n = 0; XtSetArg(args[n], XmNfontList, CommonGetFontList("9x15bold")); n++; XtSetValues(TitleWidget, args, n); CommonPause(); tcs = XmStringLtoRCreate("Motif\nScrolled Text Widget", XmSTRING_DEFAULT_CHARSET); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; XtSetValues(TitleWidget, args, n); XmStringFree(tcs); CommonPause(); n = 0; XtSetArg(args[n], XmNchildType, XmFRAME_GENERIC_CHILD); n++; XtSetValues(TitleWidget, args, n); CommonPause(); XtDestroyWidget(TitleWidget); n = 0; XtSetArg(args[n], XmNvalue, "You can even use a Text widget"); n++; XtSetArg(args[n], XmNchildType, XmFRAME_TITLE_CHILD); n++; XtSetArg(args[n], XmNchildHorizontalAlignment, XmALIGNMENT_END); n++; XtSetArg(args[n], XmNwordWrap, True); n++; XtSetArg(args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++; XtSetArg(args[n], XmNrows, 2); n++; TitleWidget = XmCreateText(Frame1, "Text1", args, n); XtManageChild(TitleWidget); CommonPause(); XtAppMainLoop(app_context); } void CreateChangeDialog(widget) Widget widget; { int n; Arg args[MAX_ARGS]; Widget Toggle1, Toggle2, Toggle3, Toggle4, Toggle5; Widget RadioBox1, PopupS; Widget RadioBox2, RadioBox3, RowCol; Widget Toggle1a, Toggle2a, Toggle3a, Toggle4a; Widget Toggle1b, Toggle2b, Toggle3b; Widget Scale1; Widget Text, ApplyBtn; XmString tcs; tcs = XmStringCreateSimple("Control Panel"); n = 0; XtSetArg(args[n], XmNx, 0); n++; XtSetArg(args[n], XmNy, 300); n++; XtSetArg(args[n], XmNdefaultPosition, False); n++; XtSetArg(args[n], XmNdialogTitle, tcs); n++; PopupS = XmCreateBulletinBoardDialog(Shell1, "BulletinBD", args, n); XmStringFree(tcs); n = 0; XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++; XtSetArg(args[n], XmNnumColumns, 2); n++; XtSetArg(args[n], XmNpacking, XmPACK_COLUMN); n++; RowCol = XmCreateRowColumn(PopupS, "RowCol1", args, n); XtManageChild(RowCol); n = 0; RadioBox1 = XmCreateRadioBox(RowCol, "RadioBox1", args, n); XtManageChild(RadioBox1); tcs = XmStringCreateSimple("XmALIGNMENT_BASELINE_BOTTOM"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle1 = XmCreateToggleButton(RadioBox1, "Toggle1", args, n); XtManageChild(Toggle1); XtAddCallback(Toggle1, XmNarmCallback, (XtCallbackProc) ChangeVertAlign, (XtPointer) XmALIGNMENT_BASELINE_BOTTOM); XmStringFree(tcs); tcs = XmStringCreateSimple("XmALIGNMENT_BASELINE_TOP"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle2 = XmCreateToggleButton(RadioBox1, "Toggle2", args, n); XtManageChild(Toggle2); XtAddCallback(Toggle2, XmNarmCallback, (XtCallbackProc) ChangeVertAlign, (XtPointer) XmALIGNMENT_BASELINE_TOP); XmStringFree(tcs); tcs = XmStringCreateSimple("XmALIGNMENT_WIDGET_TOP"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle3 = XmCreateToggleButton(RadioBox1, "Toggle3", args, n); XtManageChild(Toggle3); XtAddCallback(Toggle3, XmNarmCallback, (XtCallbackProc) ChangeVertAlign, (XtPointer) XmALIGNMENT_WIDGET_TOP); XmStringFree(tcs); tcs = XmStringCreateSimple("XmALIGNMENT_CENTER"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle4 = XmCreateToggleButton(RadioBox1, "Toggle4", args, n); XtManageChild(Toggle4); XtAddCallback(Toggle4, XmNarmCallback, (XtCallbackProc) ChangeVertAlign, (XtPointer) XmALIGNMENT_CENTER); XmStringFree(tcs); tcs = XmStringCreateSimple("XmALIGNMENT_WIDGET_BOTTOM"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle5 = XmCreateToggleButton(RadioBox1, "Toggle5", args, n); XtManageChild(Toggle5); XtAddCallback(Toggle5, XmNarmCallback, (XtCallbackProc) ChangeVertAlign, (XtPointer) XmALIGNMENT_WIDGET_BOTTOM); XmStringFree(tcs); n = 0; RadioBox2 = XmCreateRadioBox(RowCol, "RadioBox1", args, n); XtManageChild(RadioBox2); tcs = XmStringCreateSimple("XmSHADOW_IN"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle1a = XmCreateToggleButton(RadioBox2, "Toggle1a", args, n); XtManageChild(Toggle1a); XtAddCallback(Toggle1a, XmNarmCallback, (XtCallbackProc) ChangeShadowType, (XtPointer)XmSHADOW_IN); XmStringFree(tcs); tcs = XmStringCreateSimple("XmSHADOW_OUT"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle2a = XmCreateToggleButton(RadioBox2, "Toggle2a", args, n); XtManageChild(Toggle2a); XtAddCallback(Toggle2a, XmNarmCallback, (XtCallbackProc) ChangeShadowType, (XtPointer) XmSHADOW_OUT); XmStringFree(tcs); tcs = XmStringCreateSimple("XmSHADOW_ETCHED_IN"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle3a = XmCreateToggleButton(RadioBox2, "Toggle3a", args, n); XtManageChild(Toggle3a); XtAddCallback(Toggle3a, XmNarmCallback, (XtCallbackProc) ChangeShadowType, (XtPointer) XmSHADOW_ETCHED_IN); XmStringFree(tcs); tcs = XmStringCreateSimple("XmSHADOW_ETCHED_OUT"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle4a = XmCreateToggleButton(RadioBox2, "Toggle4a", args, n); XtManageChild(Toggle4a); XtAddCallback(Toggle4a, XmNarmCallback, ChangeShadowType, (XtPointer) XmSHADOW_ETCHED_OUT); XmStringFree(tcs); n = 0; RadioBox3 = XmCreateRadioBox(RowCol, "RadioBox3", args, n); XtManageChild(RadioBox3); tcs = XmStringCreateSimple("XmALIGNMENT_BEGINNING"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle1b = XmCreateToggleButton(RadioBox3, "Toggle1b", args, n); XtManageChild(Toggle1b); XtAddCallback(Toggle1b, XmNarmCallback, (XtCallbackProc) ChangeHorizAlign, (XtPointer) XmALIGNMENT_BEGINNING); XmStringFree(tcs); tcs = XmStringCreateSimple("XmALIGNMENT_CENTER"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle2b = XmCreateToggleButton(RadioBox3, "Toggle2b", args, n); XtManageChild(Toggle2b); XtAddCallback(Toggle2b, XmNarmCallback, (XtCallbackProc) ChangeHorizAlign, (XtPointer) XmALIGNMENT_CENTER); XmStringFree(tcs); tcs = XmStringCreateSimple("XmALIGNMENT_END"); n = 0; XtSetArg(args[n], XmNlabelString, tcs); n++; Toggle3b = XmCreateToggleButton(RadioBox3, "Toggle3b", args, n); XtManageChild(Toggle3b); XtAddCallback(Toggle3b, XmNarmCallback, (XtCallbackProc) ChangeHorizAlign, (XtPointer) XmALIGNMENT_END); XmStringFree(tcs); n = 0; XtSetArg (args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++; XtSetArg (args[n], XmNrows, 2); n++; Text = XmCreateText (RowCol, "Text", args, n); XtManageChild (Text); tcs = XmStringCreateSimple ("Apply String"); n = 0; XtSetArg (args[n], XmNlabelString, tcs); n++; ApplyBtn = XmCreatePushButton (RowCol, "ApplyBtn", args, n); XtManageChild (ApplyBtn); XtAddCallback (ApplyBtn, XmNactivateCallback, SetAlignmentString, Text); XmStringFree(tcs); tcs = XmStringCreateSimple("Frame's ShadowThickness"); n = 0; XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++; XtSetArg(args[n], XmNmaximum, 50); n++; XtSetArg(args[n], XmNminimum, 0); n++; XtSetArg(args[n], XmNvalue, 10); n++; XtSetArg(args[n], XmNshowValue, True); n++; XtSetArg(args[n], XmNtitleString, tcs); n++; Scale1 = XmCreateScale(RowCol, "Scale1", args, n); XtManageChild(Scale1); XmStringFree(tcs); XtAddCallback(Scale1, XmNvalueChangedCallback, (XtCallbackProc) ChangeShadowThickness, NULL); XtManageChild(PopupS); } static void ChangeHorizAlign(w, client_data, call_data) Widget w; unsigned char client_data; caddr_t call_data; { int n; Arg args[1]; n = 0; XtSetArg(args[n], XmNchildHorizontalAlignment, client_data); n++; XtSetValues(TitleWidget, args, n); } static void ChangeShadowThickness(w, client_data, call_data) Widget w; caddr_t client_data; caddr_t call_data; { int n; Arg args[1]; XmScaleCallbackStruct *eventStruct; int value; eventStruct = (XmScaleCallbackStruct *) call_data; value = eventStruct->value; n = 0; XtSetArg(args[n], XmNshadowThickness, value); n++; XtSetValues(Frame1, args, n); } static void ChangeVertAlign(w, client_data, call_data) Widget w; unsigned char client_data; caddr_t call_data; { int n; Arg args[1]; n = 0; XtSetArg(args[n], XmNchildVerticalAlignment, client_data); n++; XtSetValues(TitleWidget, args, n); } static void ChangeShadowType(w, client_data, call_data) Widget w; XtPointer client_data; caddr_t call_data; { int n; Arg args[1]; n = 0; XtSetArg(args[n], XmNshadowType, client_data); n++; XtSetValues(Frame1, args, n); } static void SetAlignmentString(w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { /* this fn. sets the Baseline Alignment String to the contents of the Text widget */ int n; Arg args[1]; String value_string; XmString cs; n = 0; XtSetArg (args[n], XmNvalue, &value_string); n++; XtGetValues ((Widget) client_data, args, n); cs = XmStringCreateLtoR (value_string, XmFONTLIST_DEFAULT_TAG); n = 0; XtSetArg (args[n], XmNlabelString, cs); n++; XtSetValues (TitleWidget, args, n); XmStringFree (cs); }