unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (NetBSD-2.0)
Page:
Section:
Apropos / Subsearch:
optional field

cdk_display(3)             Library Functions Manual             cdk_display(3)



NAME
       bindCDKObject, unbindCDKObject, checkCDKObjectBind, cleanCDKObjectBind-
       ings - Curses Development Kit Character Binding Capabilities.

SYNOPSIS
       cc [ flag ... ] file ...  -lcdk [ library ... ]

       #include <cdk.h>

       void  bindCDKObject  (EObjectTypecdkType,  void  *object,  chtype  key,
       BINDFN function, void *data);

       void unbindCDKObject (EObjectType cdkType, void *object, chtype key);

       void  checkCDKObjectBind  (EObjectType  cdkType,  void  *object, chtype
       key);

       void cleanCDKObjectBindings (EObjectType cdkType, void *object);

DESCRIPTION
       Cdk has the ability to create user definable key bindings. This ability
       makes Cdk more dynamic and usable for a wide variety of tasks. The fol-
       lowing section outlines the binding functions,  their  use,  and  their
       purpose.

       void  bindCDKObject  (EObjectType  cdkType,  void  *object, chtype key,
       BINDFN function, void *data);
          This function creates a key binding between a  specific  Cdk  widget
          (object)  given key (key). The parameter cdkType is of type EObject-
          Type which is one of the following values.

          EObjectType_Value   Corresponding_Widget         Widget_Manual_Page
          vALPHALIST          Alphalist Widget             cdk_alphalist (3)
          vCALENDAR           Calendar Widget              cdk_calendar (3)
          vDIALOG             Dialog Widget                cdk_dialog (3)
          vENTRY              Entry Widget                 cdk_entry (3)
          vFSELECT            File Selector Widget         cdk_fselect (3)
          vGRAPH              Graph Widget                 cdk_graph (3)
          vHISTOGRAM          Histogram Widget             cdk_histogram (3)
          vITEMLIST           Item List Widget             cdk_itemlist (3)
          vLABEL              Label Widget                 cdk_label (3)
          vMARQUEE            Marquee Widget               cdk_marquee (3)
          vMATRIX             Matrix Widget                cdk_matrix (3)
          vMENTRY             Multiple Line Entry Widget   cdk_mentry (3)
          vMENU               Menu Widget                  cdk_menu (3)
          vRADIO              Radio List Widget            cdk_radio (3)
          vSCALE              Numeric Scale Widget         cdk_scale (3)
          vSCROLL             Scrolling List Widget        cdk_scroll (3)
          vSELECTION          Selection List Widget        cdk_selection (3)
          vSLIDER             Slider Widget                cdk_slider (3)
          vSWINDOW            Scrolling Window Widget      cdk_swindow (3)
          vTEMPLATE           Template Entry Widget        cdk_template (3)
          vVIEWER             Viewer Widget                cdk_viewer (3)
             The parameter function is of type BINDFN which has the  following
             prototype:

          void  function (EObjectType cdktype, void *object, void *clientData,
                                      chtype key);

             The parameter data is a void * pointer to whatever data the call-
             back  function  may  need. The parameter key is the key hit which
             triggered this call-back.

          void unbindCDKObject  (EObjectType  cdkType,  void  *object,  chtype
          key);
             This function removes a specific binding to an object. The param-
             eter names are the same as the description of the function  bind-
             CDKObject.

          int  checkCDKObjectBind  (EObjectType  cdkType, void *object, chtype
          key);
             This function returns an integer value stating  whether  the  key
             key has been bound to the given widget, object.

          void cleanCDKObjectBindings (EObjectType cdkType, void *object);
             This  function  removes  all  user  defined key bindings from the
             given widget.


EXAMPLE
       To help demonstrate how to use the key bindings I  will  demonstrate  a
       simple  dialog box widget with help for each button. The following code
       segment  creates  a  dialog  box  and  a   call-back   function   named
       dialogHelpCB.

                      ________________________________________

       #include "cdk.h"

       void dialogHelpCB (EObjectType cdktype, void *object, void *clientData)
       {
          CDKDIALOG *dialog = (CDKDIALOG *)object;
          char *mesg[5];

          /* Check which button we are on.          */
          if (dialog->currentButton == 0)
          {
             mesg[0] = "<C></U>Help for </U>Who<!U>.";
             mesg[1] = "<C>When this button is picked the name of the current";
             mesg[2] = "<C>user is displayed on the screen in a pop-up window.";
             popupLabel (dialog->screen, mesg, 3);
          }
          else if (dialog->currentButton == 1)
          {
             mesg[0] = "<C></U>Help for </U>Time<!U>.";
             mesg[1] = "<C>When this button is picked the current time is";
             mesg[2] = "<C>displayed on the screen in a pop-up window.";
             popupLabel (dialog->screen, mesg, 3);
          }
          else if (dialog->currentButton == 2)
          {
             mesg[0] = "<C></U>Help for </U>Date<!U>.";
             mesg[1] = "<C>When this button is picked the current date is";
             mesg[2] = "<C>displayed on the screen in a pop-up window.";
             popupLabel (dialog->screen, mesg, 3);
          }
          else if (dialog->currentButton == 3)
          {
             mesg[0] = "<C></U>Help for </U>Quit<!U>.";
             mesg[1] = "<C>When this button is picked the dialog box is exited.";
             popupLabel (dialog->screen, mesg, 2);
          }
       }

       void main()
       {
          /* Declare variables.           */
          CDKSCREEN   *cdkscreen;
          CDKDIALOG   *question;
          WINDOW *cursesWin;
          char        *buttons[40];
          char        *message[40], *info[5], *loginName;
          char        temp[256];
          int         selection;
          int         x;
          time_t clck;
          struct tm   *currentTime;

          /* Set up CDK                   */
          cursesWin = initscr();
          cdkscreen = initCDKScreen (cursesWin);

          /* Start color.                      */
          initCDKColor();

          /* Set up the dialog box.            */
          message[0] = "<C></U>Simple Command Interface";
          message[1] = "Pick the command you wish to run.";
          message[2] = "<C>Press </R>?<!R> for help.";
          buttons[0] = "Who";
          buttons[1] = "Time";
          buttons[2] = "Date";
          buttons[3] = "Quit";

          /* Create the dialog box.            */
          question    = newCDKDialog (cdkscreen, CENTER, CENTER,
                           message, 3, buttons, 4, A_REVERSE,
                           TRUE, TRUE, FALSE);

          /* Check if we got a null value back.     */
          if (question == (CDKDIALOG *)NULL)
          {
             destroyCDKScreen (cdkscreen);

             /* End curses...                  */
             endCDK();

             /* Spit out a message.            */
             printf ("Oops. Can't seem to create the dialog box. Is the window too small?0);
             exit (1);
          }

          /* Create the key binding.           */
          bindCDKObject (vDIALOG, question, '?', dialogHelpCB, NULL);

          /* Activate the dialog box.               */
          selection = 0;
          while (selection != 3)
          {
             /* Get the users button selection.     */
             selection = activateCDKDialog (question, (chtype *)NULL);

             /* Check the results.             */
             if (selection == 0)
             {
                /* Get the users login name.        */
                info[0] = "<C>     </U>Login Name<!U>     ";
                loginName = getlogin();
                if (loginName == (char *)NULL)
                {
                   info[1] = "<C></R>Unknown";
                }
                else
                {
                    sprintf (temp, "<C><%s>", loginName); info[1] = strdup (temp);
                }
                popupLabel (question->screen, info, 2);
                free (info[1]);
             }
             else if (selection == 1)
             {
                /* Print out the time.              */
                time(&clck);
                currentTime = localtime(&clck);
                sprintf (temp, "<C>%d:%d:%d", currentTime->tm_hour,
                                currentTime->tm_min,
                                currentTime->tm_sec);
                info[0] = "<C>   </U>Current Time<!U>   ";
                info[1] = strdup (temp);
                popupLabel (question->screen, info, 2);
                free (info[1]);
             }
             else if (selection == 2)
             {
                /* Print out the date.              */
                time(&clck);
                currentTime = localtime(&clck);
                sprintf (temp, "<C>%d/%d/%d", currentTime->tm_mday,
                                currentTime->tm_mon,
                                currentTime->tm_year);
                info[0] = "<C>   </U>Current Date<!U>   ";
                info[1] = strdup (temp);
                popupLabel (question->screen, info, 2);
                free (info[1]);
             }
          }

          /* Clean up                     */
          destroyCDKDialog (question);
          destroyCDKScreen (cdkscreen);
          endCDK();
          delwin (cursesWin);
       }
                      ________________________________________


SEE ALSO
       cdk(3), cdk_display(3), cdk_screen(3)

NOTES
       The  header  file  &lt&lt;cdk.h&gt&gt;  automatically  includes  the  header  files
       &lt&lt;curses.h&gt&gt;, &lt&lt;stdlib.h&gt&gt;, &lt&lt;string.h&gt&gt;, &lt&lt;ctype.h&gt&gt;, &lt&lt;unistd.h&gt&gt;,  &lt&lt;dirent.h&gt&gt;,
       &lt&lt;time.h&gt&gt;, &lt&lt;errno.h&gt&gt;, &lt&lt;pwd.h&gt&gt;, &lt&lt;grp.h&gt&gt;, &lt&lt;sys/stat.h&gt&gt;, and &lt&lt;sys/types.h&gt&gt;.
       The &lt&lt;curses.h&gt&gt; header file includes &lt&lt;stdio.h&gt&gt; and &lt&lt;unctrl.h&gt&gt;.



                                  05 Dec 1995                   cdk_display(3)