man cdk_binding (Fonctions bibliothèques) - bindCDKObject, unbindCDKObject, checkCDKObjectBind, cleanCDKObjectBindings - Curses Development Kit Character Binding Capabilities.

NAME

bindCDKObject, unbindCDKObject, checkCDKObjectBind, cleanCDKObjectBindings - 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 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 cdkType 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

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?n"); 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

NOTES

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>.

CETTE PAGE DOCUMENTE AUSSI :