home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / exampleCode / fconv / create.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-02  |  10.4 KB  |  367 lines

  1. /*
  2.  * Copyright (C) 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17. #include <stdio.h>
  18. #include <Xm/Xm.h>
  19. #include <X11/Shell.h>
  20. #include <Xm/CutPaste.h>
  21. #include <Xm/Label.h>
  22. #include <Xm/LabelG.h>
  23. #include <Xm/MenuShell.h>
  24. #include <Xm/PushB.h>
  25. #include <Xm/PushBG.h>
  26. #include <Xm/RowColumn.h>
  27. #include <Xm/SeparatoG.h>
  28. #include <Xm/Separator.h>
  29. #include <Xm/Text.h>
  30.  
  31. void quit_callback();
  32. void help_callback();
  33. void text_input();
  34.  
  35. Widget    text1;
  36. Widget    text2;
  37. Widget    text3;
  38.  
  39. static unsigned long
  40. COLOR(w, name)
  41. Widget w;
  42. char *name;
  43. {
  44. XrmValue    fromVal, toVal;
  45. unsigned long *pixel;
  46.  
  47.     fromVal.size = sizeof(char*);
  48.     fromVal.addr = name;
  49.  
  50.     XtConvert(w, XmRString, &fromVal, XmRPixel, &toVal);
  51.     pixel = (unsigned long*)toVal.addr;
  52.     if( pixel == NULL )
  53.     {
  54.         fromVal.addr = XtDefaultBackground;
  55.         XtConvert(w, XmRString, &fromVal, XmRPixel, &toVal);
  56.         pixel = (unsigned long*)toVal.addr;
  57.     }
  58.     return(*pixel);
  59. }
  60.  
  61. Widget
  62. CreaterowColumn(parent)
  63. Widget parent;
  64. {
  65.     Arg        args[512];
  66.     int        argcnt;
  67.     Widget     retval;
  68.     XmString    xmstr[32];
  69.     XmString    *xmstrTable[8];
  70.     Widget    rowColumn;
  71.     Widget    text;
  72.     Widget    separator;
  73.     Widget    separator1;
  74.     Widget    separator2;
  75.     Widget    pushButton;
  76.     Widget    pushButton1;
  77.     Widget    label;
  78.     Widget    label1;
  79.     Widget    label2;
  80.     Widget    label3;
  81.     XmRegisterConverters();
  82.  
  83.     argcnt = 0;
  84.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "dark sea green")); argcnt++;
  85.     XtSetArg(args[argcnt], XmNpacking, XmPACK_NONE); argcnt++;
  86.     XtSetArg(args[argcnt], XmNx, 0); argcnt++;
  87.     XtSetArg(args[argcnt], XmNy, 0); argcnt++;
  88.     XtSetArg(args[argcnt], XmNwidth, 250); argcnt++;
  89.     XtSetArg(args[argcnt], XmNheight, 235); argcnt++;
  90.     rowColumn = XtCreateWidget("rowColumn",
  91.         xmRowColumnWidgetClass,
  92.         parent,
  93.         args,
  94.         argcnt);
  95.  
  96.     retval = rowColumn;
  97.  
  98.     argcnt = 0;
  99.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "grey")); argcnt++;
  100.     XtSetArg(args[argcnt], XmNcolumns, (short)13); argcnt++;
  101.     XtSetArg(args[argcnt], XmNrows, (short)1); argcnt++;
  102.     XtSetArg(args[argcnt], XmNx, 50); argcnt++;
  103.     XtSetArg(args[argcnt], XmNy, 20); argcnt++;
  104.     text = XtCreateWidget("text",
  105.         xmTextWidgetClass,
  106.         rowColumn,
  107.         args,
  108.         argcnt);
  109.  
  110.     XtAddCallback(text, XmNactivateCallback, text_input, (caddr_t)0);
  111.     XtManageChild(text);
  112.  
  113.     argcnt = 0;
  114.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "dark sea green")); argcnt++;
  115.     XtSetArg(args[argcnt], XmNforeground, COLOR(parent, "dark green")); argcnt++;
  116.     XtSetArg(args[argcnt], XmNx, 0); argcnt++;
  117.     XtSetArg(args[argcnt], XmNy, 54); argcnt++;
  118.     XtSetArg(args[argcnt], XmNwidth, 250); argcnt++;
  119.     XtSetArg(args[argcnt], XmNheight, 24); argcnt++;
  120.     separator = XtCreateWidget("separator",
  121.         xmSeparatorWidgetClass,
  122.         rowColumn,
  123.         args,
  124.         argcnt);
  125.  
  126.     XtManageChild(separator);
  127.  
  128.     argcnt = 0;
  129.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "grey")); argcnt++;
  130.     XtSetArg(args[argcnt], XmNcolumns, (short)13); argcnt++;
  131.     XtSetArg(args[argcnt], XmNrows, (short)1); argcnt++;
  132.     XtSetArg(args[argcnt], XmNx, 50); argcnt++;
  133.     XtSetArg(args[argcnt], XmNy, 80); argcnt++;
  134.     text1 = XtCreateWidget("text1",
  135.         xmTextWidgetClass,
  136.         rowColumn,
  137.         args,
  138.         argcnt);
  139.  
  140.     XtManageChild(text1);
  141.     XmTextSetEditable(text1,0);
  142.  
  143.     argcnt = 0;
  144.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "grey")); argcnt++;
  145.     XtSetArg(args[argcnt], XmNcolumns, (short)13); argcnt++;
  146.     XtSetArg(args[argcnt], XmNrows, (short)1); argcnt++;
  147.     XtSetArg(args[argcnt], XmNx, 50); argcnt++;
  148.     XtSetArg(args[argcnt], XmNy, 110); argcnt++;
  149.     text2 = XtCreateWidget("text2",
  150.         xmTextWidgetClass,
  151.         rowColumn,
  152.         args,
  153.         argcnt);
  154.  
  155.     XtManageChild(text2);
  156.     XmTextSetEditable(text2,0);
  157.  
  158.     argcnt = 0;
  159.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "grey")); argcnt++;
  160.     XtSetArg(args[argcnt], XmNcolumns, (short)13); argcnt++;
  161.     XtSetArg(args[argcnt], XmNrows, (short)1); argcnt++;
  162.     XtSetArg(args[argcnt], XmNx, 50); argcnt++;
  163.     XtSetArg(args[argcnt], XmNy, 140); argcnt++;
  164.     text3 = XtCreateWidget("text3",
  165.         xmTextWidgetClass,
  166.         rowColumn,
  167.         args,
  168.         argcnt);
  169.  
  170.     XtManageChild(text3);
  171.     XmTextSetEditable(text3,0);
  172.  
  173.     argcnt = 0;
  174.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "dark sea green")); argcnt++;
  175.     XtSetArg(args[argcnt], XmNx, 0); argcnt++;
  176.     XtSetArg(args[argcnt], XmNy, 170); argcnt++;
  177.     XtSetArg(args[argcnt], XmNwidth, 252); argcnt++;
  178.     XtSetArg(args[argcnt], XmNheight, 24); argcnt++;
  179.     separator1 = XtCreateWidget("separator1",
  180.         xmSeparatorWidgetClass,
  181.         rowColumn,
  182.         args,
  183.         argcnt);
  184.  
  185.     XtManageChild(separator1);
  186.  
  187.     argcnt = 0;
  188.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "dark sea green")); argcnt++;
  189.     XtSetArg(args[argcnt], XmNx, 0); argcnt++;
  190.     XtSetArg(args[argcnt], XmNy, 234); argcnt++;
  191.     XtSetArg(args[argcnt], XmNwidth, 249); argcnt++;
  192.     XtSetArg(args[argcnt], XmNheight, 1); argcnt++;
  193.     separator2 = XtCreateWidget("separator2",
  194.         xmSeparatorWidgetClass,
  195.         rowColumn,
  196.         args,
  197.         argcnt);
  198.  
  199.     XtManageChild(separator2);
  200.     argcnt = 0;
  201.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "grey")); argcnt++;
  202.     XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
  203.         "Help",
  204.         XmSTRING_DEFAULT_CHARSET))); argcnt++;
  205.     XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
  206.     XtSetArg(args[argcnt], XmNx, 30); argcnt++;
  207.     XtSetArg(args[argcnt], XmNy, 195); argcnt++;
  208.     XtSetArg(args[argcnt], XmNwidth, 60); argcnt++;
  209.     XtSetArg(args[argcnt], XmNheight, 30); argcnt++;
  210.     pushButton = XtCreateWidget("pushButton",
  211.         xmPushButtonWidgetClass,
  212.         rowColumn,
  213.         args,
  214.         argcnt);
  215.     XmStringFree( xmstr[0] );
  216.  
  217.     XtAddCallback(pushButton, XmNactivateCallback, help_callback, (caddr_t)0);
  218.     XtManageChild(pushButton);
  219.  
  220.     argcnt = 0;
  221.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "grey")); argcnt++;
  222.     XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
  223.         "Quit",
  224.         XmSTRING_DEFAULT_CHARSET))); argcnt++;
  225.     XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
  226.     XtSetArg(args[argcnt], XmNx, 160); argcnt++;
  227.     XtSetArg(args[argcnt], XmNy, 195); argcnt++;
  228.     XtSetArg(args[argcnt], XmNwidth, 60); argcnt++;
  229.     XtSetArg(args[argcnt], XmNheight, 30); argcnt++;
  230.     pushButton1 = XtCreateWidget("pushButton1",
  231.         xmPushButtonWidgetClass,
  232.         rowColumn,
  233.         args,
  234.         argcnt);
  235.     XmStringFree( xmstr[0] );
  236.  
  237.     XtAddCallback(pushButton1, XmNactivateCallback, quit_callback, (caddr_t)0);
  238.     XtManageChild(pushButton1);
  239.  
  240.     argcnt = 0;
  241.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "dark sea green")); argcnt++;
  242.     XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
  243.         "HEX",
  244.         XmSTRING_DEFAULT_CHARSET))); argcnt++;
  245.     XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
  246.     XtSetArg(args[argcnt], XmNx, 5); argcnt++;
  247.     XtSetArg(args[argcnt], XmNy, 82); argcnt++;
  248.     XtSetArg(args[argcnt], XmNwidth, 42); argcnt++;
  249.     XtSetArg(args[argcnt], XmNheight, 26); argcnt++;
  250.     label = XtCreateWidget("label",
  251.         xmLabelWidgetClass,
  252.         rowColumn,
  253.         args,
  254.         argcnt);
  255.     XmStringFree( xmstr[0] );
  256.  
  257.     XtManageChild(label);
  258.  
  259.     argcnt = 0;
  260.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "dark sea green")); argcnt++;
  261.     XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
  262.         "OCT",
  263.         XmSTRING_DEFAULT_CHARSET))); argcnt++;
  264.     XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
  265.     XtSetArg(args[argcnt], XmNx, 5); argcnt++;
  266.     XtSetArg(args[argcnt], XmNy, 112); argcnt++;
  267.     XtSetArg(args[argcnt], XmNwidth, 43); argcnt++;
  268.     XtSetArg(args[argcnt], XmNheight, 25); argcnt++;
  269.     label1 = XtCreateWidget("label1",
  270.         xmLabelWidgetClass,
  271.         rowColumn,
  272.         args,
  273.         argcnt);
  274.     XmStringFree( xmstr[0] );
  275.  
  276.     XtManageChild(label1);
  277.  
  278.     argcnt = 0;
  279.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "dark sea green")); argcnt++;
  280.     XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
  281.         "DEC",
  282.         XmSTRING_DEFAULT_CHARSET))); argcnt++;
  283.     XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
  284.     XtSetArg(args[argcnt], XmNx, 5); argcnt++;
  285.     XtSetArg(args[argcnt], XmNy, 142); argcnt++;
  286.     XtSetArg(args[argcnt], XmNwidth, 42); argcnt++;
  287.     XtSetArg(args[argcnt], XmNheight, 25); argcnt++;
  288.     label2 = XtCreateWidget("label2",
  289.         xmLabelWidgetClass,
  290.         rowColumn,
  291.         args,
  292.         argcnt);
  293.     XmStringFree( xmstr[0] );
  294.  
  295.     XtManageChild(label2);
  296.  
  297.     argcnt = 0;
  298.     XtSetArg(args[argcnt], XmNbackground, COLOR(parent, "dark sea green")); argcnt++;
  299.     XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
  300.         "INP",
  301.         XmSTRING_DEFAULT_CHARSET))); argcnt++;
  302.     XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
  303.     XtSetArg(args[argcnt], XmNx, 5); argcnt++;
  304.     XtSetArg(args[argcnt], XmNy, 22); argcnt++;
  305.     XtSetArg(args[argcnt], XmNwidth, 41); argcnt++;
  306.     XtSetArg(args[argcnt], XmNheight, 28); argcnt++;
  307.     label3 = XtCreateWidget("label3",
  308.         xmLabelWidgetClass,
  309.         rowColumn,
  310.         args,
  311.         argcnt);
  312.     XmStringFree( xmstr[0] );
  313.  
  314.     XtManageChild(label3);
  315.  
  316.     return( retval );
  317. }
  318.  
  319. void
  320. quit_callback(w, client, call)
  321. Widget w;
  322. caddr_t client;
  323. caddr_t call;
  324. {
  325.     exit(0);
  326. }
  327.  
  328. void
  329. help_callback(w, client, call)
  330. Widget w;
  331. caddr_t client;
  332. caddr_t call;
  333. {
  334.         printf("\n*******************************\n");
  335.     printf("enter a number in input field\n");
  336.     printf("eg. 0x10067 for hex          \n");
  337.     printf("    0345    for octal        \n");
  338.     printf("    19067   for decimal      \n");
  339.         printf("*******************************\n");
  340. }
  341.  
  342. void
  343. text_input(w, client, call)
  344. Widget w;
  345. caddr_t client;
  346. caddr_t call;
  347. {
  348.     int i;
  349.     char *t;
  350.     char to[32],th[32],td[32];
  351.  
  352.     t = XmTextGetString(w);
  353.  
  354.     sscanf(t,"%i",&i);
  355.  
  356.     sprintf(td,"%d",i);
  357.     sprintf(to,"%o",i);
  358.     sprintf(th,"%x",i);
  359.  
  360.     XmTextSetString(text1,th);
  361.     XmTextSetString(text2,to);
  362.     XmTextSetString(text3,td);
  363.  
  364.     XtFree(t);
  365.  
  366. }
  367.