*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->NetBSD man pages -> cdk_binding (3)              
Title
Content
Arch
Section
 

cdk_display(3)

Contents


NAME    [Toc]    [Back]

       bindCDKObject,     unbindCDKObject,    checkCDKObjectBind,
       cleanCDKObjectBindings - Curses Development Kit  Character
       Binding Capabilities.

SYNOPSIS    [Toc]    [Back]

       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    [Toc]    [Back]

       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 following 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 cdk-
          Type is of type EObjectType 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 parameter names  are  the  same  as  the
             description of the function bindCDKObject.

          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    [Toc]    [Back]

       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    [Toc]    [Back]

      
      
       cdk(3), cdk_display(3), cdk_screen(3)

NOTES    [Toc]    [Back]

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



                           05 Dec 1995             cdk_display(3)
[ Back ]
 Similar pages
Name OS Title
cdk_display NetBSD Curses Development Kit Display Capabilities.
cdk NetBSD Curses Development Kit
cdk_cdk NetBSD Curses Development Kit
cdk_misc NetBSD Curses Development Kit Miscellaneous Routines
tgetstr Tru64 Curses interfaces that support termcap capabilities
curs_termcap Tru64 Curses interfaces that support termcap capabilities
tgetflag Tru64 Curses interfaces that support termcap capabilities
tgoto Tru64 Curses interfaces that support termcap capabilities
tgetnum Tru64 Curses interfaces that support termcap capabilities
tgetent Tru64 Curses interfaces that support termcap capabilities
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service