home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
gkdemo.zip
/
GKFILES.SET
/
DEMOCTRL.C
< prev
next >
Wrap
C/C++ Source or Header
|
1994-12-09
|
7KB
|
249 lines
/* Demo of some of the controls */
#define GKInclAll
#include "gk.h"
static void MenuOpenNotify(GKObject menu);
static void MenuCloseNotify(GKObject menu);
static void MenuNotify(GKObject menu, GKObject mitem, int cmd);
static void PopUpMenuAccel(GKObject obj, GKEvent *eventp, GKVal proc_data);
static void PushMeNotify(GKObject obj);
static void EditNotify(GKObject obj);
static void CBNotify(GKObject obj, int cmd);
static void SliderNotify(GKObject obj, long position, int cmd);
static void ButtonNotify(GKObject obj);
static void RemoveObj(GKObject obj, GKEvent *eventp, GKVal proc_data);
static int menu_notify_flag=GKTRUE;
main(argc,argv)
int argc;
char **argv;
{
gkRegisterNamedProcedure("MenuOpenNotify", (GKNamedProcedure)MenuOpenNotify);
gkRegisterNamedProcedure("MenuCloseNotify", (GKNamedProcedure)MenuCloseNotify);
gkRegisterNamedProcedure("MenuNotify", (GKNamedProcedure)MenuNotify);
gkRegisterNamedProcedure("PopUpMenuAccel", (GKNamedProcedure)PopUpMenuAccel);
gkRegisterNamedProcedure("PushMeNotify", (GKNamedProcedure)PushMeNotify);
gkRegisterNamedProcedure("EditNotify", (GKNamedProcedure)EditNotify);
gkRegisterNamedProcedure("CBNotify", (GKNamedProcedure)CBNotify);
gkRegisterNamedProcedure("SliderNotify", (GKNamedProcedure)SliderNotify);
gkRegisterNamedProcedure("ButtonNotify", (GKNamedProcedure)ButtonNotify);
gkRegisterNamedProcedure("RemoveObj", (GKNamedProcedure)RemoveObj);
gkInit(GKInit_Args, &argc, argv,
GKInit_StripArgs,
NULL);
if (gkCreateObjectGroup("Democtrl-Fonts") == -1) {
gkError("Couldn't create democtrl object group");
exit(1);
}
if (gkCreateObjectGroup("Democtrl") == -1) {
gkError("Couldn't create democtrl object group");
exit(1);
}
gkSet(gkFindInstance("MainFrame"),
GKWindow_Show, GKTRUE,
GKWindow_TopLevelAccelerator, "Btn3Down", PopUpMenuAccel,
gkFindInstance("Options-SubMenu"),
NULL);
gkDispatch();
}
/*----------------------------------------------------------------------*/
/* Menu Item notification
*/
static void MenuOpenNotify(GKObject menu)
{
GKObject edit;
edit=gkFindInstance("MyEdit");
if (edit != NULL)
gkSet(edit,
GKEdit_Text, "Menu Opened",
NULL);
}
/*----------------------------------------------------------------------*/
static void MenuCloseNotify(GKObject menu)
{
GKObject edit;
edit=gkFindInstance("MyEdit");
if (edit != NULL)
gkSet(edit,
GKEdit_Text, "Menu Closed",
NULL);
}
/*----------------------------------------------------------------------*/
static void MenuNotify(GKObject menu, GKObject mitem, int cmd)
{
GKObject edit, obj;
char b[100], *label;
if (!menu_notify_flag)
return;
label=(char *)gkGet((GKObject)gkGet(mitem, GKMenuItem_LabelGfxObj, NULL),
GKGfxText_String, NULL);
switch (cmd) {
case GKMenuItemCmd_Highlighted:
ut_snprintf(b,sizeof(b),"Highlighted %s", label);
break;
case GKMenuItemCmd_Selected:
ut_snprintf(b,sizeof(b),"Selected %s", label);
if ((menu == gkFindInstance("File-SubMenu")) &&
(gkGet(menu, GKMenu_ItemIdx, mitem) == 0)) {
if (gkCreateObjectGroup("OpenDialogGroup") == 0) {
if ((int)gkGet(gkFindInstance("OpenDialog"), GKFileDialog_Canceled, NULL))
strcpy(b,"File Open Canceled");
else
ut_snprintf(b,sizeof(b),"Open file '%s'",
(char *)gkGet(gkFindInstance("OpenDialog"), GKFileDialog_FileName, NULL));
gkDestroy(gkFindInstance("OpenDialog"));
}
}
break;
}
edit=gkFindInstance("MyEdit");
if (edit != NULL)
gkSet(edit,
GKEdit_Text, b,
NULL);
}
/*----------------------------------------------------------------------*/
static void PopUpMenuAccel(obj,eventp,proc_data)
GKObject obj;
GKEvent *eventp;
GKVal proc_data;
{
GKPoint pt;
pt.x=eventp->u.button.x;
pt.y=eventp->u.button.y;
gkWindowCoorToDisplayCoor(eventp->window, &pt);
gkInvokePopUpMenu((GKObject)proc_data, pt.x, pt.y, eventp->u.button.button);
}
/*----------------------------------------------------------------------*/
/* Button notification
*/
static void PushMeNotify(obj)
GKObject obj;
{
if (gkCreateObjectGroup("MyDialogGroup") == -1) {
gkError("Couldn't create dialog");
return;
}
gkModalDialog(gkFindInstance("MyDialog"), GKFALSE);
}
/*----------------------------------------------------------------------*/
/* Display message about modified text in edit object
*/
static void EditNotify(obj)
GKObject obj;
{
gkInfo("Modified Text: \"%s\"", (char *)gkGet(obj, GKEdit_Text, NULL));
}
/*----------------------------------------------------------------------*/
/* Display info about ComboBox actions.
*/
static void CBNotify(obj, cmd)
GKObject obj;
int cmd;
{
char b[100], *str="???";
GKObject edit;
switch (cmd) {
case GKComboBoxCmd_TextChanged: str="TextChanged"; break;
case GKComboBoxCmd_ListOpened: str="ListOpened"; break;
case GKComboBoxCmd_ListClosed: str="ListClosed"; break;
case GKComboBoxCmd_Executed: str="Executed";
gkSet(obj,
GKComboBox_FontObj, gkFindInstance("Times-Roman-20.0"),
NULL);
break;
}
ut_snprintf(b,sizeof(b),"Combo: cmd=%s Value=\"%s\"",str,
(char *)gkGet(obj, GKComboBox_EditText, NULL));
edit=gkFindInstance("MyEdit");
if (edit != NULL) {
gkSet(edit,
GKEdit_Text, b,
NULL);
}
}
/*----------------------------------------------------------------------*/
/* Display info when slider is dragged or released.
*/
static void SliderNotify(obj, position, cmd)
GKObject obj;
long position;
int cmd;
{
char b[80], *str="???";
GKObject edit;
edit=gkFindInstance("MyEdit");
if (edit != NULL) {
if (cmd == GKSliderCmd_Drag)
str="Drag";
else if (cmd == GKSliderCmd_Set)
str="Set";
ut_snprintf(b,sizeof(b),"Slider %s pos=%ld",str,position);
gkSet(edit,
GKEdit_Text, b,
NULL);
}
}
/*----------------------------------------------------------------------*/
/* Change the label on the button when pressed
*/
static void ButtonNotify(obj)
GKObject obj;
{
GKGfxObj label;
char str[40];
int cnt;
label=(GKGfxObj)gkGet(obj, GKButton_LabelGfxObj, NULL);
cnt=(int)gkGet(obj, GKIR_KeyData, (GKVal)ButtonNotify);
if (cnt == 10)
menu_notify_flag=GKFALSE;
gkSet(obj, GKIR_KeyData, (GKVal)ButtonNotify, (GKVal)(cnt+1),
NULL);
ut_snprintf(str, sizeof(str), "{UL}B{ul}utton-%d",cnt);
gkSet(label, GKGfxText_String, str,
NULL);
}
/*----------------------------------------------------------------------*/
static void RemoveObj(obj,eventp,proc_data)
GKObject obj;
GKEvent *eventp;
GKVal proc_data;
{
gkDestroy(obj);
}