/* * @OPENGROUP_COPYRIGHT@ * COPYRIGHT NOTICE * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc. * Copyright (c) 1996, 1997, 1998, 1999, 2000 The Open Group * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for * the full copyright text. * * This software is subject to an open license. It may only be * used on, with or for operating systems which are themselves open * source systems. You must contact The Open Group for a license * allowing distribution and sublicensing of this software on, with, * or for operating systems which are not Open Source programs. * * See http://www.opengroup.org/openmotif/license for full * details of the license agreement. Any use, reproduction, or * distribution of the program constitutes recipient's acceptance of * this agreement. * * EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS * PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY * WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY * OR FITNESS FOR A PARTICULAR PURPOSE * * EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT * NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE * EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. */ /* * HISTORY */ #ifdef REV_INFO #ifndef lint static char rcsid[] = "$XConsortium: Traits1.c /main/5 1995/07/13 19:39:47 drk $" #endif #endif #include /*#include */ #include #include #include #include #include #include #include #include #include #include #include #include typedef struct { char *name; Widget w; Widget (*createfunction) (); } WidgetStruct; static WidgetStruct managerwidgets[] = { {"BulletinBoard", NULL, XmCreateBulletinBoard}, {"SelectionBox", NULL, XmCreateSelectionBox}, {"FileSelectionBox", NULL, XmCreateFileSelectionBox}, {"Command", NULL, XmCreateCommand}, {"MessageBox", NULL, XmCreateMessageBox}, {"Form", NULL, XmCreateForm}, {"RowColumn", NULL, XmCreateRowColumn}, {"DrawingArea", NULL, XmCreateDrawingArea}, {"PanedWindow", NULL, XmCreatePanedWindow}, {"Frame", NULL, XmCreateFrame}, {"Scale", NULL, XmCreateScale}, {"MainWindow", NULL, XmCreateMainWindow}, {"Notebook", NULL, XmCreateNotebook}, {"SpinBox", NULL, XmCreateSpinBox}, {NULL, NULL, NULL} }; static WidgetStruct primitivewidgets[] = { {"Label", NULL, XmCreateLabel}, {"CascadeButton", NULL, XmCreateCascadeButton}, {"DrawnButton", NULL, XmCreateDrawnButton}, {"PushButton", NULL, XmCreatePushButton}, {"ToggleButton", NULL, XmCreateToggleButton}, {"ArrowButton", NULL, XmCreateArrowButton}, {"List", NULL, XmCreateList}, {"ScrollBar", NULL, XmCreateScrollBar}, {"Separator", NULL, XmCreateSeparator}, {"Text", NULL, XmCreateText}, {"TextField", NULL, XmCreateTextField}, {NULL, NULL, NULL} }; static WidgetStruct activatablewidgets[] = { {"DrawnButton", NULL, XmCreateDrawnButton}, {"PushButton", NULL, XmCreatePushButton}, {"ArrowButton", NULL, XmCreateArrowButton}, {NULL, NULL, NULL} }; static WidgetStruct activatorwidgets[] = { {"SelectionBox", NULL, XmCreateSelectionBox}, {"FileSelectionBox", NULL, XmCreateFileSelectionBox}, {"Command", NULL, XmCreateCommand}, {"MessageBox", NULL, XmCreateMessageBox}, {"Notebook", NULL, XmCreateNotebook}, {NULL, NULL, NULL} }; static WidgetStruct rendertablewidgets[] = { {"BulletinBoard", NULL, XmCreateBulletinBoard}, {NULL, NULL, NULL} }; static WidgetStruct takesdefaultwidgets [] = { {"PushButton", NULL, XmCreatePushButton}, {NULL, NULL, NULL} }; static WidgetStruct navwidgets[] = { {"ScrollBar", NULL, XmCreateScrollBar}, {"SpinBox", NULL, XmCreateSpinBox}, {NULL, NULL, NULL} }; static WidgetStruct navigatorwidgets[] = { {"ScrolledWindow", NULL, XmCreateScrolledWindow}, {"List", NULL, XmCreateList}, {"Text", NULL, XmCreateText}, {"Notebook", NULL, XmCreateNotebook}, {NULL, NULL, NULL} }; static WidgetStruct scrollframewidgets[] = { {"ScrolledWindow", NULL, XmCreateScrolledWindow}, {"Notebook", NULL, XmCreateNotebook}, {NULL, NULL, NULL} }; static WidgetStruct scrollablewidgets[] = { {"List", NULL, XmCreateList}, {"Text", NULL, XmCreateText}, {"ScrolledWindow", NULL, XmCreateScrolledWindow}, {"Notebook", NULL, XmCreateNotebook}, {NULL, NULL, NULL} }; static WidgetStruct accesswidgets[] = { {"Notebook", NULL, XmCreateNotebook}, {"ComboBox", NULL, XmCreateComboBox}, {"SelectionBox", NULL, XmCreateSelectionBox}, {NULL, NULL, NULL} }; static WidgetStruct accessablewidgets[] = { {"Text", NULL, XmCreateText}, {"TextField", NULL, XmCreateTextField}, {"Label", NULL, XmCreateLabel}, {NULL, NULL, NULL} }; static WidgetStruct menusavvywidgets[] = { {"Label", NULL, XmCreateLabel}, {"CascadeButton", NULL, XmCreateCascadeButton}, {"DrawnButton", NULL, XmCreateDrawnButton}, {"PushButton", NULL, XmCreatePushButton}, {"ToggleButton", NULL, XmCreateToggleButton}, {"Separator", NULL, XmCreateSeparator}, {NULL, NULL, NULL} }; typedef struct { char *name; Widget g; Widget (*createfunction) (); } GadgetStruct; static GadgetStruct gadgets[] = { {"LabelGadget", NULL, XmCreateLabelGadget}, {"CascadeButtonGadget", NULL, XmCreateCascadeButtonGadget}, {"PushButtonGadget", NULL, XmCreatePushButtonGadget}, {"ToggleButtonGadget", NULL, XmCreateToggleButtonGadget}, {"ArrowButtonGadget", NULL, XmCreateArrowButtonGadget}, {"SeparatorGadget", NULL, XmCreateSeparatorGadget}, {NULL, NULL, NULL} }; static GadgetStruct activatablegadgets[] = { {"DrawButtonGadget", NULL, XmCreatePushButtonGadget}, {"PushButtonGadget", NULL, XmCreatePushButtonGadget}, {"ArrowButtonGadget", NULL, XmCreateArrowButtonGadget}, {NULL, NULL, NULL} }; static GadgetStruct takesdefaultgadgets [] = { {"PushButtonGadget", NULL, XmCreatePushButtonGadget}, {NULL, NULL, NULL} }; static GadgetStruct menusavvygadgets[] = { {"LabelGadget", NULL, XmCreateLabelGadget}, {"CascadeButtonGadget", NULL, XmCreateCascadeButtonGadget}, {"PushButtonGadget", NULL, XmCreatePushButtonGadget}, {"ToggleButtonGadget", NULL, XmCreateToggleButtonGadget}, {"SeparatorGadget", NULL, XmCreateSeparatorGadget}, {NULL, NULL, NULL} }; void main(argc, argv) unsigned int argc; char *argv[]; { Widget DialogShell1, BulletinBoard1, Notebook1; Widget VendorShell1, RowColumn1; register int i, j; /* * Initialize toolkit */ CommonTestInit(argc,argv); XtRealizeWidget(Shell1); /* * XmQTcareParentVisual test. * Loop through each manager widget and with each manager widget, * loop through each primitive widget and then gadgets and test if * the XmQTcareParentVisual trait exists */ printf("Testing for XmQTcareParentVisual trait\n"); for (i = 0; managerwidgets[i].name != NULL; i++) { managerwidgets[i].w = managerwidgets[i].createfunction(Shell1, managerwidgets[i].name, NULL, 0 ); for (j = 0; primitivewidgets[j].name != NULL; j++) { primitivewidgets[j].w = primitivewidgets[j].createfunction(managerwidgets[i].w, primitivewidgets[j].name, NULL, 0); /* loop through primitive widgets */ if((XmCareVisualTrait) XmeTraitGet((XtPointer) XtClass(primitivewidgets[j].w), XmQTcareParentVisual) != NULL) { printf("XmQTcareParentVisual trait found in %s, through %s\n", managerwidgets[i].name, primitivewidgets[j].name); } else printf("XmQTcareParentVisual trait NOT found in %s with %s\n", managerwidgets[i].name, primitivewidgets[j].name); XtDestroyWidget(primitivewidgets[j].w); } XtDestroyWidget(managerwidgets[i].w); printf("\n"); } printf("\n\n"); CommonPause(); /* * XmQTdialogShellSavvy trait test */ printf("Testing for XmQTdialogShellSavvy trait\n"); DialogShell1 = XmCreateDialogShell(Shell1, "DialogShell1", NULL, 0); BulletinBoard1 = XmCreateBulletinBoard(DialogShell1, "BulletinBoard1", NULL, 0); if((XmDialogSavvyTrait) XmeTraitGet((XtPointer)XtClass(BulletinBoard1), XmQTdialogShellSavvy) != NULL) { printf("XmQTdialogSavvy trait found in BulletinBoard through DialogShell\n"); } else { printf("XmQTdialogSavvy trait NOT found in BulletinBoard through DialogShell.\n"); } printf("\n\n"); XtDestroyWidget(DialogShell1); CommonPause(); /* * XmQTactivatable trait test * Loop through all the dialog widgets using PushButton, DrawnButton * and ArrowButton widgets and gadgets to test for the existance of * the trait. */ printf("Testing for XmQTactivatable trait\n"); for (i = 0; activatorwidgets[i].name != NULL; i++) { activatorwidgets[i].w = activatorwidgets[i].createfunction(Shell1, activatorwidgets[i].name, NULL, 0 ); for (j = 0; activatablewidgets[j].name != NULL; j++) { activatablewidgets[j].w = activatablewidgets[j].createfunction(activatorwidgets[i].w, activatablewidgets[j].name, NULL, 0); /* loop through primitive widgets */ if((XmActivatableTrait) XmeTraitGet((XtPointer) XtClass(activatablewidgets[j].w), XmQTactivatable) != NULL) { printf("XmQTactivatable trait found in %s, through %s\n", activatablewidgets[j].name, activatorwidgets[i].name); } else { printf("XmQTactivatable trait NOT found in %s through %s\n", activatablewidgets[j].name, activatorwidgets[i].name); } XtDestroyWidget(activatablewidgets[j].w); } XtDestroyWidget(activatorwidgets[i].w); printf("\n"); } printf("\n"); printf (" Testing XmQTactivatable trait using gadgets\n"); for (i = 0; activatorwidgets[i].name != NULL; i++) { activatorwidgets[i].w = activatorwidgets[i].createfunction(Shell1, activatorwidgets[i].name, NULL, 0 ); /* loop through gadgets */ for (j = 0; activatablegadgets[j].name != NULL; j++) { activatablegadgets[j].g = activatablegadgets[j].createfunction(activatorwidgets[i].w, activatablegadgets[j].name, NULL, 0); if((XmActivatableTrait) XmeTraitGet((XtPointer) XtClass(activatablegadgets[j].g), XmQTactivatable) != NULL) { printf("XmQTactivatable trait found in %s, through %s\n", activatablegadgets[j].name, activatorwidgets[i].name); } else { printf("XmQTactivatable trait NOT found in %s through %s\n", activatablegadgets[j].name, activatorwidgets[i].name); } XtDestroyWidget(activatablegadgets[j].g); } XtDestroyWidget(activatorwidgets[i].w); printf("\n"); } printf("\n\n"); CommonPause(); /* * XmQTspecifyRenderTable test. */ printf("Testing for XmQTspecifyRenderTable trait\n"); for (j = 0; rendertablewidgets[j].name != NULL; j++) { rendertablewidgets[j].w = rendertablewidgets[j].createfunction(Shell1, rendertablewidgets[j].name, NULL, 0); if((XmRenderTable) XmeTraitGet((XtPointer) XtClass(rendertablewidgets[j].w), XmQTspecifyRenderTable) != NULL) { printf("XmQTspecifyRenderTable trait found in %s, through Shell1\n", rendertablewidgets[j].name); } else { printf("XmQTspecifyRenderTable trait NOT found in %s through Shell1\n", rendertablewidgets[j].name); } XtDestroyWidget(rendertablewidgets[j].w); } printf("\n\n"); CommonPause(); /* * XmQTtakesDefault test. */ printf("Testing for XmQTtakesDefault trait\n"); BulletinBoard1 = XmCreateBulletinBoard(Shell1, "BulletinBoard1", NULL, 0 ); for (j = 0; takesdefaultwidgets[j].name != NULL; j++) { takesdefaultwidgets[j].w = takesdefaultwidgets[j].createfunction(BulletinBoard1, takesdefaultwidgets[j].name, NULL, 0); if((XmTakesDefaultTrait) XmeTraitGet((XtPointer) XtClass(takesdefaultwidgets[j].w), XmQTtakesDefault) != NULL) { printf("XmQTtakesDefault trait found in %s, through BulletinBoard\n", takesdefaultwidgets[j].name); } else { printf("XmQTtakesDefault trait NOT found in %s through BulletinBoard\n", takesdefaultwidgets[j].name); } XtDestroyWidget(takesdefaultwidgets[j].w); } printf("\n"); printf (" Testing XmQTtakesDefault trait using gadgets\n"); /* loop through gadgets */ for (j = 0; takesdefaultgadgets[j].name != NULL; j++) { takesdefaultgadgets[j].g = activatablegadgets[j].createfunction(BulletinBoard1, takesdefaultgadgets[j].name, NULL, 0); if((XmActivatableTrait) XmeTraitGet((XtPointer) XtClass(takesdefaultgadgets[j].g), XmQTactivatable) != NULL) { printf("XmQTtakesdefault trait found in %s, through BulletinBoard\n", takesdefaultgadgets[j].name); } else { printf("XmQTtakesdefault trait NOT found in %s through BulletinBoard\n", takesdefaultgadgets[j].name); } } XtDestroyWidget(BulletinBoard1); printf("\n\n"); CommonPause(); /* * XmQTnavigator test. */ for (i = 0; navigatorwidgets[i].name != NULL; i++) { navigatorwidgets[i].w = navigatorwidgets[i].createfunction(Shell1, navigatorwidgets[i].name, NULL, 0 ); for (j = 0; navwidgets[j].name != NULL; j++) { navwidgets[j].w = navwidgets[j].createfunction(navigatorwidgets[i].w, navwidgets[j].name, NULL, 0); if((XmNavigatorTrait) XmeTraitGet((XtPointer) XtClass(navwidgets[j].w), XmQTnavigator) != NULL) { printf("XmQTnavigator trait found in %s, through %s\n", navigatorwidgets[i].name, navwidgets[j].name); } else { printf("XmQTnavigator trait NOT found in %s through %s\n", navigatorwidgets[i].name, navwidgets[j].name); } XtDestroyWidget(navwidgets[j].w); } XtDestroyWidget(navigatorwidgets[i].w); printf("\n"); } printf("\n\n"); CommonPause(); /* * XmQTscrollFrame test. */ printf("Testing for XmQTscrollFrame trait\n"); for (i = 0; scrollframewidgets[i].name != NULL; i++) { scrollframewidgets[i].w = scrollframewidgets[i].createfunction(Shell1, scrollframewidgets[i].name, NULL, 0 ); if((XmScrollFrameTrait) XmeTraitGet((XtPointer) XtClass(scrollframewidgets[i].w), XmQTscrollFrame) != NULL) { printf("XmQTscrollFrame trait found in %s, through Shell1\n", scrollframewidgets[i].name); } else { printf("XmQTscrollFrame trait NOT found in %s through Shell1\n", scrollframewidgets[i].name); } XtDestroyWidget(scrollframewidgets[i].w); printf("\n"); } printf("\n\n"); CommonPause(); /* * XmQTaccessTextual test. */ printf("Testing for XmQTaccessTextual trait\n"); for (i = 0; accesswidgets[i].name != NULL; i++) { accesswidgets[i].w = accesswidgets[i].createfunction(Shell1, accesswidgets[i].name, NULL, 0 ); for (j = 0; accessablewidgets[j].name != NULL; j++) { accessablewidgets[j].w = accessablewidgets[j].createfunction(accesswidgets[i].w, accessablewidgets[j].name, NULL, 0); if((XmAccessTextualTrait) XmeTraitGet((XtPointer) XtClass(accessablewidgets[j].w), XmQTaccessTextual) != NULL) { printf("XmQTaccesTextual trait found in %s, through %s\n", accessablewidgets[j].name, accesswidgets[i].name); } else { printf("XmQTaccessTextual trait NOT found in %s through %s\n", accessablewidgets[j].name, accesswidgets[i].name); } XtDestroyWidget(accessablewidgets[j].w); } XtDestroyWidget(accesswidgets[i].w); printf("\n"); } printf("\n\n"); CommonPause(); /* * XmQTmenuSystem and XmQTmenuSavvy test */ printf("Testing for XmQTmenuSystem and XmQTmenuSavvy traits \n"); RowColumn1 = XmCreateRowColumn(Shell1, "RowColumn1", NULL, 0 ); if((XmMenuSystemTrait) XmeTraitGet((XtPointer) XtClass(RowColumn1), XmQTmenuSystem) != NULL) printf("XmQTmenuSystem trait found in RowColumn, through Shell1 \n"); else printf("XmQTmenuSystem trait NOT found in RowColumn, through Shell1\n\n"); /* loop through widgets */ for (j = 0; menusavvywidgets[j].name != NULL; j++) { menusavvywidgets[j].w = menusavvywidgets[j].createfunction(RowColumn1, menusavvywidgets[j].name, NULL, 0); if((XmMenuSavvyTrait) XmeTraitGet((XtPointer) XtClass(menusavvywidgets[j].w), XmQTmenuSavvy) != NULL) { printf("XmQTmenuSavvy trait found in %s, through %s\n", menusavvywidgets[j].name, "RowColumn"); } else { printf("XmQTmenuSavvy trait NOT found in %s through %s\n", menusavvywidgets[j].name, "RowColumn"); } XtDestroyWidget(menusavvywidgets[j].w); printf("\n"); } /* loop through gadgets */ for (j = 0; menusavvygadgets[j].name != NULL; j++) { menusavvygadgets[j].g = menusavvygadgets[j].createfunction(RowColumn1, menusavvygadgets[j].name, NULL, 0); if((XmMenuSavvyTrait) XmeTraitGet((XtPointer) XtClass(menusavvygadgets[j].g), XmQTmenuSavvy) != NULL) { printf("XmQTmenuSavvy trait found in %s, through %s\n", menusavvygadgets[j].name, "RowColumn"); } else { printf("XmQTmenuSavvy trait NOT found in %s through %s\n", menusavvygadgets[j].name, "RowColumn"); } XtDestroyWidget(menusavvygadgets[j].g); printf("\n"); } XtDestroyWidget(RowColumn1); printf("\n\n"); CommonPause(); }