home *** CD-ROM | disk | FTP | other *** search
/ Practical Programming in Tcl & Tk (4th Edition) / TCLBOOK4.BIN / pc / exsource / 49_5.c < prev    next >
Text File  |  2003-04-16  |  2KB  |  67 lines

  1. /*
  2.  * Example 49-5
  3.  * The ClockInstanceCmd command procedure.
  4.  */
  5.  
  6. static int
  7. ClockInstanceCmd(clientData, interp, argc, argv)
  8.     ClientData clientData;                        /* A pointer to a Clock struct */
  9.     Tcl_Interp *interp;                        /* The interpreter */
  10.     int argc;                        /* The number of arguments */
  11.     char *argv[];                        /* The command line arguments */
  12. {
  13.     Clock *clockPtr = (Clock *)clientData;
  14.     int result = TCL_OK;
  15.     char c;
  16.     int len;
  17.     if (argc < 2) {
  18.         Tcl_AppendResult(interp, "wrong # args: should be \"",
  19.             argv[0], " option ?arg arg ...?\"", (char *) NULL);
  20.         return TCL_ERROR;
  21.     }
  22.     c = argv[1][0];
  23.     len = strlen(argv[1]);
  24.     if ((c == \" c\" ) && (strncmp(argv[1], "cget", len) == 0)
  25.             && (len >= 2)) {
  26.         if (argc != 3) {
  27.             Tcl_AppendResult(interp,
  28.                  "wrong # args: should be \"",
  29.                 argv[0], " cget option\"",
  30.                 (char *) NULL);
  31.             return TCL_ERROR;
  32.         }
  33.         result = Tk_ConfigureValue(interp, clockPtr->tkwin,
  34.              configSpecs, (char *) clockPtr, argv[2], 0);
  35.     } else if ((c == \" c\" ) && (strncmp(argv[1], "configure", len) 
  36.                 == 0) && (len >= 2)) {
  37.         if (argc == 2) {
  38.             /*
  39.              * Return all configuration information.
  40.              */
  41.             result = Tk_ConfigureInfo(interp, clockPtr->tkwin,
  42.                 configSpecs, (char *) clockPtr,
  43.                 (char *) NULL,0);
  44.         } else if (argc == 3) {
  45.             /*
  46.              * Return info about one attribute, like cget.
  47.              */
  48.             result = Tk_ConfigureInfo(interp, clockPtr->tkwin,
  49.                 configSpecs, (char *) clockPtr, argv[2], 0);
  50.         } else {
  51.             /*
  52.              * Change one or more attributes.
  53.              */
  54.             result = ClockConfigure(interp, clockPtr, argc-2,
  55.                 argv+2,TK_CONFIG_ARGV_ONLY);
  56.         }
  57.     } else {
  58.         Tcl_AppendResult(interp, "bad option \"", argv[1],
  59.             "\": must be cget, configure, position, or size",
  60.             (char *) NULL);
  61.         return TCL_ERROR;
  62.     }
  63.     return result;
  64. }
  65.  
  66.  
  67.