int main(int argc, char **argv){ struct keyboard_command cmd_toggle = {htons (PG_KEYBOARD_TOGGLE)}; pgInit(argc, argv); /* Find the applet container */ pglToolbar = pgFindWidget("PGL-AppletBar"); if (!pglToolbar) { pgMessageDialog(argv[0],"This applet requires PGL",PG_MSGICON_ERROR); return 1; } pglButton = pgNewWidget(PG_WIDGET_FLATBUTTON, PG_DERIVE_INSIDE, pglToolbar); pgSetWidget (pglButton, PG_WP_NAME, pgNewString("PGL-Keyboard"), PG_WP_SIDE, PG_S_RIGHT, 0); pgBind(pglButton, PG_WE_APPMSG, &recieveMessage, NULL); pgBind(pglButton, PG_WE_ACTIVATE, &handleButton, &cmd_toggle); pgAppMessage(pglToolbar, pglBuildMessage(PGL_APPLETINSTALLED, "PGL-Keyboard", "", "")); pgEventLoop(); return 0; }
int main(int argc,char **argv) { pghandle wPGLbar; pgInit(argc,argv); /* Find the applet container */ pglToolbar = pgFindWidget("PGL-AppletBar"); if (!pglToolbar) { pgMessageDialog(argv[0],"This applet requires PGL",PG_MSGICON_ERROR); return 1; } /* Clock widget. Make it a flatbutton so it normally looks fairly * unobtrusive, but it can be clicked. Clicking the clock launches * an options dialog box. */ currentClock.wClock = pgNewWidget(PG_WIDGET_FLATBUTTON, PG_DERIVE_INSIDE,pglToolbar); pgSetWidget(PGDEFAULT, PG_WP_SIDE,PG_S_RIGHT, PG_WP_NAME,pgNewString("PGL-Clock"), 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnDialog,NULL); pgBind(PGDEFAULT, PG_WE_APPMSG, &recieveMessage, NULL); /* Let the toolbar know we exist */ pgAppMessage(pglToolbar, pglBuildMessage(PGL_APPLETINSTALLED, "PGL-Clock", "", "")); /* Set up default clock */ currentClock.fClockFont = pgNewFont(NULL,0,PG_FSTYLE_FIXED); mungeSettings(); pgEventLoop(); return 0; }
/* * Initialize the keyboard canvas */ int initKbdCanvas () { selectPattern (PG_KBPATTERN_NORMAL); /* Set up an event handler for the keyboard */ pgBind (wCanvas, PG_WE_PNTR_DOWN, &evtMouse, NULL); pgBind (wCanvas, PG_WE_PNTR_RELEASE, &evtMouse, NULL); pgBind (wCanvas, PG_WE_PNTR_UP, &evtMouse, NULL); return 0; }
int main(int argc, char **argv) { pghandle wLoadbox,fntLabel; pgInit(argc,argv); pgRegisterApp(PG_APP_TOOLBAR,"OmniBar-Helio",0); /* A font for our labels */ fntLabel = pgNewFont(NULL,10,PG_FSTYLE_FIXED); /* Top-level widgets */ pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("App"), PG_WP_EXTDEVENTS,PG_EXEV_PNTR_DOWN, 0); pgBind(PGDEFAULT,PG_WE_PNTR_DOWN,&btnAppMenu,NULL); pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Sys"), PG_WP_EXTDEVENTS,PG_EXEV_PNTR_DOWN, 0); pgBind(PGDEFAULT,PG_WE_PNTR_DOWN,&btnSysMenu,NULL); wClock = pgNewWidget(PG_WIDGET_LABEL,0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE,PG_S_RIGHT, PG_WP_FONT,fntLabel, PG_WP_TRANSPARENT,0, 0); pgNewWidget(PG_WIDGET_BOX,0,0); pgNewWidget(PG_WIDGET_LABEL,PG_DERIVE_INSIDE,PGDEFAULT); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Batt:"), PG_WP_SIDE,PG_S_LEFT, PG_WP_TRANSPARENT,1, 0); wBatt = pgNewWidget(PG_WIDGET_INDICATOR,0,0); pgSetWidget(PGDEFAULT,PG_WP_SIDE,PG_S_ALL,0); /* Run it. */ pgSetIdle(5000,&sysIdle); pgEventLoop(); return 0; }
int main(int argc, char **argv) { pgInit(argc,argv); pgRegisterApp(PG_APP_NORMAL,"Blackout",0); /*** Top-level widgets: toolbar and canvas */ wToolbar = pgNewWidget(PG_WIDGET_TOOLBAR,0,0); wCanvas = pgNewWidget(PG_WIDGET_CANVAS,0,0); pgBind(PGDEFAULT,PG_WE_BUILD,&evtDrawBoard,NULL); pgBind(PGDEFAULT,PG_WE_PNTR_DOWN,&evtMouseDown,NULL); /* Toolbar thingies */ pgNewWidget(PG_WIDGET_BUTTON,PG_DERIVE_INSIDE,wToolbar); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Menu"), PG_WP_EXTDEVENTS,PG_EXEV_PNTR_DOWN, 0); pgBind(PGDEFAULT,PG_WE_PNTR_DOWN,&btnMenu,NULL); wStatusLabel = pgNewWidget(PG_WIDGET_LABEL,0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE,PG_S_ALL, PG_WP_TRANSPARENT,0, PG_WP_ALIGN,PG_A_CENTER, // PG_WP_FONT,pgNewFont(NULL,10,PG_FSTYLE_BOLD), 0); /*** Allocate default game board */ srand(time(NULL)); boardwidth = 5; boardheight = 5; boardsize = sizeof(light) * boardwidth * boardheight; board = (light *) malloc(boardsize); solution = (light *) malloc(boardsize); startLevel(1); /*** Event loop */ pgEventLoop(); return 0; }
void addheader (int msg, char *sender, char *subject, char *date) { lastItem = pgNewWidget (PG_WIDGET_LISTITEM, row ? PGDEFAULT : PG_DERIVE_INSIDE, row ? lastItem : wBox); pgReplaceTextFmt (lastItem, "[%s] %s - %s",date, subject, sender); pgBind (lastItem, PG_WE_ACTIVATE, &setSelected, (void *) (msg)); pgEventPoll (); row++; }
void bindUI(picosmUI *interface){ pgBind(interface->wLogon, PG_WE_ACTIVATE, &evtLogon, interface); pgBind(interface->wClear, PG_WE_ACTIVATE, &evtClear, interface); pgBind(interface->wReboot, PG_WE_ACTIVATE, &evtReboot, NULL); pgBind(interface->wPowerOff, PG_WE_ACTIVATE, &evtShutdown, NULL); pgBind(interface->wLogin, PG_WE_ACTIVATE, &evtLogin, interface); pgBind(interface->wPasswd, PG_WE_ACTIVATE, &evtLogon, interface); }
int main(int argc, char *argv[]) { parse_buttons(); pgInit(argc,argv); pgNewInFilter(pgGetServerRes(PGRES_INFILTER_TOUCHSCREEN), PG_TRIGGER_UP, PG_TRIGGER_UP); pgBind(PGBIND_ANY, PG_NWE_INFILTER, tap_filter, NULL); pgEventLoop(); exit(0); }
int main(int argc, char **argv) { pgInit(argc,argv); /* Insert our input filter after the KEY_PREPROCESS filter, * get a copy of all CHAR triggers, and don't automatically pass them through */ pgNewInFilter(pgGetServerRes(PGRES_INFILTER_KEY_PREPROCESS), PG_TRIGGER_CHAR, PG_TRIGGER_CHAR); pgBind(PGBIND_ANY, PG_NWE_INFILTER, myFilter, NULL); pgEventLoop(); return 0; }
/* Create the phone keypad so we can easily turn it on and off later */ void init_keypad(void) { pghandle column,button; int i,j; struct pgEvent e; pghandle font; /* Create the keypad toolbar, invisible for now */ wKeypad = pgRegisterApp(PG_APP_TOOLBAR,"pgtuxphone/keypad", PG_APPSPEC_SIDE, PG_S_BOTTOM, 0); pgSetWidget(PGDEFAULT, PG_WP_SIZE,0, 0); font = pgNewFont(NULL,20,0); /* Make our button grid */ for (i=0, column=0;i<3;i++) { column = pgNewWidget(PG_WIDGET_BOX,column ? PG_DERIVE_AFTER : PG_DERIVE_INSIDE, column); pgSetWidget(PGDEFAULT, PG_WP_TRANSPARENT,1, PG_WP_SIDE,PG_S_LEFT, 0); for (j=0, button=0; j<4;j++) { button = pgNewWidget(PG_WIDGET_BUTTON, button ? PG_DERIVE_AFTER : PG_DERIVE_INSIDE, button ? button : column); pgSetWidget(PGDEFAULT, // PG_WP_SIZE,pgFraction(1,4), // PG_WP_SIZEMODE,PG_SZMODE_CNTFRACT, PG_WP_TEXT,pgNewString(keypad[j][i]), PG_WP_FONT,font, PG_WP_SIDE,PG_S_TOP, 0); /* Extra is a pointer to the digit to dial. Since there's some padding * in the button strings, the +1 gives the character itself */ pgBind(PGDEFAULT,PG_WE_ACTIVATE,btnDial,keypad[j][i]+1); } } }
void PG_InitEvents(_THIS) { /* Turn on all the mouse and keyboard triggers for our canvas, normally less important * events like mouse movement are ignored to save bandwidth. */ pgSetWidget(this->hidden->wCanvas, PG_WP_TRIGGERMASK, pgGetWidget(this->hidden->wCanvas, PG_WP_TRIGGERMASK) | PG_TRIGGER_UP | PG_TRIGGER_DOWN | PG_TRIGGER_MOVE | PG_TRIGGER_KEYUP | PG_TRIGGER_KEYDOWN | PG_TRIGGER_CHAR,0); /* Start our canvas out focused, so we get keyboard input */ pgFocus(this->hidden->wCanvas); /* Set up bindings for all the above event handlers */ pgBind(this->hidden->wApp, PG_WE_CLOSE, &PG_HandleClose, NULL); pgBind(this->hidden->wCanvas, PG_WE_BUILD, &PG_HandleResize, NULL); pgBind(this->hidden->wCanvas, PG_WE_KBD_CHAR, &PG_HandleChar, NULL); pgBind(this->hidden->wCanvas, PG_WE_KBD_KEYUP, &PG_HandleKey, NULL); pgBind(this->hidden->wCanvas, PG_WE_KBD_KEYDOWN, &PG_HandleKey, NULL); pgBind(this->hidden->wCanvas, PG_WE_PNTR_MOVE, &PG_HandleMouseMotion, NULL); pgBind(this->hidden->wCanvas, PG_WE_PNTR_UP, &PG_HandleMouseButton, NULL); pgBind(this->hidden->wCanvas, PG_WE_PNTR_DOWN, &PG_HandleMouseButton, this); }
/* * main */ int main (int argc, char * argv []) { /* Constants to facilitate passing commands through pgBind() */ struct keyboard_command cmd_show = {htons (PG_KEYBOARD_SHOW)}; struct keyboard_command cmd_hide = {htons (PG_KEYBOARD_HIDE)}; struct keyboard_command cmd_toggle = {htons (PG_KEYBOARD_TOGGLE)}; struct keyboard_command cmd_enable = {htons (PG_KEYBOARD_ENABLE)}; struct keyboard_command cmd_disable = {htons (PG_KEYBOARD_DISABLE)}; struct keyboard_command cmd_toggle_display = {htons (PG_KEYBOARD_TOGGLE_DISPLAY)}; struct keyboard_command cmd_select_pattern = {htons (PG_KEYBOARD_SELECT_PATTERN), htons (PG_KBPATTERN_NUMERIC)}; struct keyboard_command cmd_push_context = {htons (PG_KEYBOARD_PUSH_CONTEXT)}; struct keyboard_command cmd_pop_context = {htons (PG_KEYBOARD_POP_CONTEXT)}; struct keyboard_command cmd_block = {htons (PG_KEYBOARD_BLOCK)}; struct keyboard_command cmd_release = {htons (PG_KEYBOARD_RELEASE)}; /* Handle for GUI placement */ pghandle lastBox; /* Handle for font object */ pghandle font; /* Init and register the app */ pgInit (argc, argv); pgRegisterApp (PG_APP_NORMAL, "Virtual Keyboard Commands", 0); font = pgNewFont ("Helvetica", 8, 0); /* Create all the widgets */ lastBox = pgNewWidget (PG_WIDGET_BOX, 0, 0); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("SHOW"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_show); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_AFTER, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("HIDE"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_hide); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_AFTER, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("TOGGLE"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_toggle); lastBox = pgNewWidget (PG_WIDGET_BOX, PG_DERIVE_AFTER, lastBox); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("ENABLE"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_enable); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_AFTER, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("DISABLE"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_disable); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_AFTER, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("TOGGLE_ENABLE"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_toggle_display); lastBox = pgNewWidget (PG_WIDGET_BOX, PG_DERIVE_AFTER, lastBox); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("SELECT_PATTERN NUMERIC"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_select_pattern); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_AFTER, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("PUSH_CONTEXT"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_push_context); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_AFTER, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("POP_CONTEXT"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_pop_context); lastBox = pgNewWidget (PG_WIDGET_BOX, PG_DERIVE_AFTER, lastBox); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("BLOCK"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_block); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_AFTER, PGDEFAULT); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("RELEASE"), PG_WP_SIDE, PG_S_LEFT, PG_WP_FONT, font, 0); pgBind (PGDEFAULT, PG_WE_ACTIVATE, &handleButton, &cmd_release); font = pgNewFont ("Helvetica", 12, 0); pgNewWidget (PG_WIDGET_FIELD, PG_DERIVE_AFTER, lastBox); pgSetWidget (PGDEFAULT, PG_WP_SIZE, 16, PG_WP_FONT, font, 0); /* Wait for events */ pgEventLoop (); return 0; }
/* int main(int argc,char **argv) { */ int dialogdemo(pghandle widget) { /* pgInit(argc,argv); */ /* pgRegisterApp(PG_APP_NORMAL,"Standard Dialogs",0); */ /* Scrollable box */ /* wBox = pgNewWidget(PG_WIDGET_SCROLLBOX, PG_DERIVE_INSIDE, widget); */ /* Message Dialog */ /* pgNewWidget(PG_WIDGET_BUTTON,PG_DERIVE_INSIDE,wBox); */ pgNewWidget(PG_WIDGET_BUTTON,PG_DERIVE_INSIDE, widget); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Quote"), PG_WP_SIDE,PG_S_TOP, 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnQuote,NULL); pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Confirm dialog"), PG_WP_SIDE,PG_S_TOP, 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnConfirm,NULL); /* Custom dialog box */ pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Display something"), PG_WP_SIDE,PG_S_TOP, 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnTarget,NULL); /* Date picker */ wDate = pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Select a date"), PG_WP_SIDE,PG_S_TOP, 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnDate,NULL); /* Text input */ wInputBtn = pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Input a string"), PG_WP_SIDE,PG_S_TOP, 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnInput,NULL); /* Font picker */ wFontBtn = pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Font selection"), PG_WP_SIDE,PG_S_TOP, 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnFont,NULL); /* File open */ wFileOpenBtn = pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Open a file"), PG_WP_SIDE,PG_S_TOP, 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnFileOpen,NULL); /* File save */ /* wFileSaveBtn = pgNewWidget(PG_WIDGET_BUTTON,0,0); */ /* pgSetWidget(PGDEFAULT, */ /* PG_WP_TEXT,pgNewString("pgFilePicker: Save a file"), */ /* PG_WP_SIDE,PG_S_TOP, */ /* 0); */ /* pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnFileSave,NULL); */ /* Color Picker */ pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_TEXT,pgNewString("Select a Color"), PG_WP_SIDE,PG_S_TOP, 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnColor,NULL); /* Bomb */ /* pgNewWidget(PG_WIDGET_BUTTON,0,0); */ /* pgSetWidget(PGDEFAULT, */ /* PG_WP_TEXT,pgNewString("Bomb: Cause error dialog"), */ /* PG_WP_SIDE,PG_S_TOP, */ /* 0); */ /* pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnBomb,NULL); */ /* pgEventLoop(); */ return 0; }
int main(int argc, char** argv) { pgcolor color; struct pgmodeinfo mi; int i; pghandle ttl_box; /* init PicoGUI client */ pgInit(argc,argv); pgRegisterApp(PG_APP_NORMAL, argv[0], 0); /* create the title */ ttl_box = pgNewWidget(PG_WIDGET_BOX,0,0); ttl_text = pgNewWidget(PG_WIDGET_LABEL, PG_DERIVE_INSIDE, ttl_box); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString("wclock"), 0); pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, ttl_box); pgSetWidget (PGDEFAULT, PG_WP_SIDE, PG_S_RIGHT, PG_WP_TEXT, pgNewString("?"), PG_WP_EXTDEVENTS, PG_EXEV_PNTR_DOWN, 0); pgBind (PGDEFAULT, PG_WE_PNTR_DOWN, &btn_handler, (void*)btnid_set); pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, ttl_box); pgSetWidget (PGDEFAULT, PG_WP_SIDE, PG_S_LEFT, PG_WP_TEXT, pgNewString(">"), PG_WP_EXTDEVENTS, PG_EXEV_PNTR_DOWN, 0); pgBind (PGDEFAULT, PG_WE_PNTR_DOWN, &btn_handler, (void*)btnid_right); pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, ttl_box); pgSetWidget (PGDEFAULT, PG_WP_SIDE, PG_S_LEFT, PG_WP_TEXT, pgNewString("<"), PG_WP_EXTDEVENTS, PG_EXEV_PNTR_DOWN, 0); pgBind (PGDEFAULT, PG_WE_PNTR_DOWN, &btn_handler, (void*)btnid_left); /* create the main context */ main_window = pgNewWidget(PG_WIDGET_CANVAS, PG_DERIVE_AFTER, ttl_box); pgBind(PGDEFAULT, PGBIND_ANY, &canvas_handler, NULL); /* init time zones */ init_zones(); /* activate mouse move, keyboard and focus events */ pgSetWidget(main_window, PG_WP_TRIGGERMASK, pgGetWidget(main_window, PG_WP_TRIGGERMASK) | PG_TRIGGER_MOVE | PG_TRIGGER_CHAR | PG_TRIGGER_KEYDOWN | PG_TRIGGER_KEYUP /* | PG_TRIGGER_ACTIVATE | PG_TRIGGER_DEACTIVATE */, 0); mi = *pgGetVideoMode(); width = mi.lxres; height = mi.lyres; /* Make a backbuffer bitmap */ world_bitmap = create_world_bitmap(); width = get_world_width(); height = get_world_height(); /* Set the clipping rectangle */ pgWriteCmd(main_window, PGCANVAS_GROP, 5, PG_GROP_SETCLIP, 0, 0, width, height + TIMEBAR_HEIGHT); /* Set to be always rendered */ pgWriteCmd(main_window, PGCANVAS_GROPFLAGS, 1, PG_GROPF_UNIVERSAL); /* Create contexts for the canvas itself and the back-buffer */ gfx_context = pgNewCanvasContext(main_window, PGFX_IMMEDIATE ); /* run all */ DPRINTF(">>> entering loop\n"); pgEventLoop(); return 0; }
int main (int argc, char *argv[]) { char *home, *conffile; pghandle msgscroll, msgbox; pghandle wToolbar, wScroll, wItem; row = 0; pgInit (argc, argv); picomailapp = pgRegisterApp (PG_APP_NORMAL, "PicoMail", 0); home = getenv ("HOME"); conffile = malloc (strlen (home) + strlen (CONFIG_FILE) + 1); if (home && conffile) { strcpy (conffile, home); strcat (conffile, CONFIG_FILE); if (!configfile_parse (conffile)) { pgMessageDialog ("PicoMail", "Configuration file could not be parsed.\n" "Please make sure you have a good '~/.picomail.conf'!", PG_MSGBTN_OK || PG_MSGICON_ERROR); exit (1); } free (conffile); } wToolbar = pgNewWidget (PG_WIDGET_TOOLBAR, 0, 0); wScroll = pgNewWidget (PG_WIDGET_SCROLL, 0, 0); wBox = pgNewWidget (PG_WIDGET_BOX, 0, 0); pgSetWidget (PGDEFAULT, PG_WP_SIDE, PG_S_ALL, 0); pgSetWidget (wScroll, PG_WP_BIND, wBox, 0); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, wToolbar); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("Read Message"), PG_WP_SIDE, PG_S_LEFT, PG_WP_EXTDEVENTS, PG_EXEV_PNTR_DOWN, 0); pgBind (PGDEFAULT, PG_WE_PNTR_DOWN, &readMessage, NULL); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, wToolbar); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("Delete Message"), PG_WP_SIDE, PG_S_LEFT, PG_WP_EXTDEVENTS, PG_EXEV_PNTR_DOWN, 0); pgBind (PGDEFAULT, PG_WE_PNTR_DOWN, &deleteMessage, NULL); pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, wToolbar); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("Get list of messages!"), PG_WP_SIDE, PG_S_LEFT, PG_WP_EXTDEVENTS, PG_EXEV_PNTR_DOWN, 0); pgBind (PGDEFAULT, PG_WE_PNTR_DOWN, &getList, NULL); pgBind (PGBIND_ANY, PG_WE_CLOSE, &closeboxHandler, NULL); /* message viewer */ mesgviewer = pgRegisterApp (PG_APP_NORMAL, "PicoMail Message", 0); pgBind (mesgviewer, PG_WE_CLOSE, &viewerCloseboxHandler, NULL); pgSetWidget (mesgviewer, PG_WP_SIZE, 0, 0); msgscroll = pgNewWidget (PG_WIDGET_SCROLL, 0, 0); msgbox = pgNewWidget (PG_WIDGET_BOX, 0, 0); pgSetWidget (msgbox, PG_WP_SIDE, PG_S_ALL, 0); pgSetWidget (msgscroll, PG_WP_BIND, msgbox, 0); messagebox = pgNewWidget (PG_WIDGET_TEXTBOX, PG_DERIVE_INSIDE, PGDEFAULT); // pgSetWidget(msgscroll, PG_WP_BIND,messagebox, 0); pgSetWidget (messagebox, PG_WP_TEXT, pgNewString ("Hier is uw bericht!"), 0); pgEventLoop (); configfile_free (); return 0; }
/* Create our toolbar */ void init_call_info(void) { pghandle bArrowMask,bArrow; /* Set up a bitmap/bitmask for the keypad button up arrow. * We have the mask stored in PNM format, and we paint * the arrow bitmap itself solid black. If we wanted another * color for the arrow, we could paint it that other color, * then apply the bitmask to it with the PG_LGOP_INVERT_AND * logical operation to mask out only the arrow part. */ bArrowMask = pgNewBitmap(pgFromMemory(arrow_bits,arrow_len)); bArrow = pgCreateBitmap(11,6); pgRender(bArrow,PG_GROP_SETCOLOR,0x000000); pgRender(bArrow,PG_GROP_RECT,0,0,15,8); /* Create a toolbar that starts out hidden */ wInfoBar = pgRegisterApp(PG_APP_TOOLBAR,"pgtuxphone/call_info", PG_APPSPEC_SIDE, PG_S_BOTTOM, 0); pgSetWidget(PGDEFAULT, PG_WP_SIZE,0, 0); /* Create widgets within the toolbar */ wKeypadBtn = pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE,PG_S_LEFT, PG_WP_BITMAP, bArrow, PG_WP_BITMASK, bArrowMask, PG_WP_EXTDEVENTS, PG_EXEV_TOGGLE, PG_WP_TEXT,pgNewString("Keypad"), 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnKeypad,NULL); pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE,PG_S_LEFT, PG_WP_TEXT,pgNewString("Redial"), 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&btnRedial,NULL); /* Make the connect time opaque and fixed-width to minimize the * amount of redrawing necessary to update it */ wConnectTime = pgNewWidget(PG_WIDGET_LABEL,0,0); pgSetWidget(PGDEFAULT, PG_WP_TRANSPARENT,0, PG_WP_SIDE,PG_S_RIGHT, PG_WP_FONT,pgNewFont(NULL,0,PG_FSTYLE_FIXED), 0); wCallStatus = pgNewWidget(PG_WIDGET_LABEL,0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE,PG_S_RIGHT, 0); wName = pgNewWidget(PG_WIDGET_LABEL,0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE,PG_S_LEFT, PG_WP_FONT,pgNewFont(NULL,12,0), 0); wPhoneNumber = pgNewWidget(PG_WIDGET_CANVAS,0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE,PG_S_ALL, 0); new_vfd_label(wPhoneNumber); }
int hThemeDefault(struct edemoUI* interface, pghandle widget) { pgBind(widget, PG_WE_ACTIVATE, evtThemeDefault, (void *)interface); return 0; }
int hAppBarKillall(struct edemoUI* interface, pghandle widget) { pgBind(widget, PG_WE_ACTIVATE, evtAppBarKillall, NULL); return 0; }
int hIndicatorDown(struct edemoUI* interface, pghandle widget) { pgBind(widget, PG_WE_ACTIVATE, &evtIndicatorDown, (void *)wIndicatorBar); return 0; }
int main(int argc, char **argv) { pghandle wAllBox, wTXbox, wRXbox; /* initialise and register the application */ pgInit(argc,argv); pgRegisterApp(PG_APP_NORMAL,"Network Monitor",0); /* create a box for putting all the ting inside it */ wAllBox = pgNewWidget(PG_WIDGET_BOX,0,0); /* create a widget which have the name of the interface to monitor */ wDeviceName = pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, wAllBox); pgSetWidget (PGDEFAULT, //PG_WP_DIRECTION,PG_DIR_VERTICAL, PG_WP_SIDE, PG_S_RIGHT, PG_WP_EXTDEVENTS, PG_EXEV_PNTR_DOWN, 0); pgReplaceTextFmt (wDeviceName, "%s", DEFAULT_NETWORK_INTERFACE); pgBind (PGDEFAULT, PG_WE_PNTR_DOWN, &selectInterface, NULL); /* create the widgets for monitor the RX traffic */ wRXlabel = pgNewWidget(PG_WIDGET_BUTTON, 0, 0); pgSetWidget (PGDEFAULT, PG_WP_SIDE, PG_S_TOP, PG_WP_EXTDEVENTS, PG_EXEV_PNTR_DOWN, 0); pgBind (PGDEFAULT, PG_WE_PNTR_DOWN, &changeDisplay, NULL); wRXbox = pgNewWidget(PG_WIDGET_BOX, 0,0); /* create the widgets for monitor the TX traffic */ wTXlabel = pgNewWidget(PG_WIDGET_BUTTON,0,0); pgSetWidget (PGDEFAULT, PG_WP_SIDE, PG_S_TOP, PG_WP_EXTDEVENTS, PG_EXEV_PNTR_DOWN, 0); pgBind (PGDEFAULT, PG_WE_PNTR_DOWN, &changeDisplay, NULL); wTXbox = pgNewWidget(PG_WIDGET_BOX,0,0); /* add the RX gauge */ pgNewWidget(PG_WIDGET_LABEL, PG_DERIVE_INSIDE, wRXbox); pgSetWidget(PGDEFAULT, PG_WP_TEXT, pgNewString("RX"), PG_WP_SIDE, PG_S_RIGHT, 0); wRX = pgNewWidget(PG_WIDGET_INDICATOR, 0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE, PG_S_ALL, 0); /* add the TX gauge */ pgNewWidget(PG_WIDGET_LABEL, PG_DERIVE_INSIDE, wTXbox); pgSetWidget(PGDEFAULT, PG_WP_TEXT, pgNewString("TX"), PG_WP_SIDE, PG_S_RIGHT, 0); wTX = pgNewWidget(PG_WIDGET_INDICATOR, 0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE, PG_S_ALL, 0); /* put the monitoring in the idle time */ pgSetIdle(IDLE_TIME,&sysIdle); /* the main loop */ pgEventLoop(); /* bye */ return 0; }
int main(int argc,char **argv) { /* File data */ unsigned char * file_data; #ifdef POCKETBEE /* Register the handler for SIGTERM */ signal (SIGTERM, sig_handler); /* Register exit function */ atexit (proper_exit); #endif /* POCKETBEE */ /* Make a 'toolbar' app */ pgInit(argc,argv); wApp = pgRegisterApp(PG_APP_TOOLBAR,"Keyboard",0); wCanvas = pgNewWidget(PG_WIDGET_CANVAS, PG_DERIVE_INSIDE, wApp); pgSetWidget (PGDEFAULT, PG_WP_SIDE, PG_S_ALL, 0); wDisabled = pgNewWidget (PG_WIDGET_CANVAS, PG_DERIVE_AFTER, wCanvas); pgSetWidget (PGDEFAULT, PG_WP_SIDE, PG_S_ALL, 0); drawDisabledKeyboard (); if (!argv[1] || argv[2]) { printf("usage:\n %s <keyboard file>\n",argv[0]); return 1; } /* Load patterns */ fpat = fopen(argv[1],"r"); if (!fpat) { pgMessageDialog(*argv,"Error loading keyboard file",0); return 1; } file_data = kb_validate (fpat, &mpat); fclose (fpat); if (file_data == NULL) { pgMessageDialog(*argv,"Invalid keyboard file [kb_validate()]",0); return 1; } if (kb_loadpatterns(file_data)) { free (file_data); pgMessageDialog(*argv,"Invalid keyboard file [kb_loadpatterns()]",0); return 1; } free (file_data); /* Resize app widget */ pgSetWidget(wApp, PG_WP_NAME,pgNewString(PG_KEYBOARD_APPNAME), PG_WP_SIDE,mpat->app_side, #ifdef POCKETBEE /* Start the keyboard hidden */ PG_WP_SIZE,0, #else /* POCKETBEE */ PG_WP_SIZE,mpat->app_size, #endif /* POCKETBEE */ PG_WP_SIZEMODE,mpat->app_sizemode, PG_WP_TRANSPARENT,1, 0); #ifdef POCKETBEE # ifdef USE_PM DPRINTF ("about to tell PM we are ready\n"); /* Signal the PM of a proper start */ if (pm_ready () == -1) { DPRINTF ("cannot signal PM (error during pm_ready)\n"); } # endif /* USE_PM */ /* Find the public box in the finder */ { pghandle box; int i = 0; while ( !(box = pgFindWidget ("FinderKbdBox")) && i < 5 ) { DPRINTF ("Finder public box not found, waiting ...\n"); sleep (1); i++; } if (box) { /* Create a button in this box */ pgNewWidget (PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, box); pgSetWidget (PGDEFAULT, PG_WP_TEXT, pgNewString ("Kbd"), 0); /* Attach a handler to it */ pgBind (PGDEFAULT, PG_WE_ACTIVATE, &kbd_btn_handler, NULL); } } #endif /* POCKETBEE */ initKbdCanvas (); /* Set up an event handler for the received messages */ pgBind (wApp, PG_WE_APPMSG, &evtMessage, NULL); pgEventLoop(); return 0; }
int main(int argc, char **argv) { pghandle wBox, wItem, sFoo; int i; /* Application */ pgInit(argc,argv); pgRegisterApp(PG_APP_NORMAL,"List Test App",0); /* Scrolling box */ wBox = pgNewWidget(PG_WIDGET_BOX,0,0); pgNewWidget(PG_WIDGET_SCROLL, PG_DERIVE_BEFORE, wBox); pgSetWidget(PGDEFAULT, PG_WP_BIND, wBox, 0); /* Add some normal listitems (just text) * The listitem widget is hilighted when the cursor is over them, * and turned on when clicked. They are mutually exclusive. */ for (i=0;i<5;i++) { wItem = pgNewWidget(PG_WIDGET_LISTITEM, i ? PGDEFAULT : PG_DERIVE_INSIDE, i ? PGDEFAULT : wBox); pgReplaceTextFmt(PGDEFAULT,"Normal listitem #%d",i); } /* Normally you'd want to use listitems, but just to show the * difference we'll throw in some menuitems... */ for (i=0;i<5;i++) { wItem = pgNewWidget(PG_WIDGET_MENUITEM,0,0); pgReplaceTextFmt(PGDEFAULT,"Normal menuitem #%d",i); } /* Instead of using the PG_WP_TEXT property, create some * other widgets inside the listitem. They will be hilighted * with their PG_WP_HILIGHTED property when the mouse is over them. */ sFoo = pgNewString("Foo"); for (i=0;i<5;i++) { wItem = pgNewWidget(PG_WIDGET_LISTITEM,PG_DERIVE_AFTER,wItem); pgNewWidget(PG_WIDGET_CHECKBOX, PG_DERIVE_INSIDE, wItem); pgSetWidget(PGDEFAULT, PG_WP_TEXT, sFoo, PG_WP_SIDE, PG_S_LEFT, PG_WP_SIZEMODE, PG_SZMODE_PERCENT, PG_WP_SIZE, 20, 0); pgNewWidget(PG_WIDGET_LABEL, 0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE, PG_S_LEFT, 0); pgReplaceTextFmt(PGDEFAULT,"Container listitem #%d",i); } /* For contrast, repeat the same example with menuitems */ for (i=0;i<5;i++) { wItem = pgNewWidget(PG_WIDGET_MENUITEM,PG_DERIVE_AFTER,wItem); pgNewWidget(PG_WIDGET_CHECKBOX, PG_DERIVE_INSIDE, wItem); pgSetWidget(PGDEFAULT, PG_WP_TEXT, sFoo, PG_WP_SIDE, PG_S_LEFT, PG_WP_SIZEMODE, PG_SZMODE_PERCENT, PG_WP_SIZE, 20, 0); pgNewWidget(PG_WIDGET_LABEL, 0,0); pgSetWidget(PGDEFAULT, PG_WP_SIDE, PG_S_LEFT, 0); pgReplaceTextFmt(PGDEFAULT,"Container menuitem #%d",i); } /* Just for testing the pgTraverseWidget method of finding * an item by its index: * (Normally if you wanted to print out all the items in a container * you should iterate with PG_TRAVERSE_FORWARD) */ for (i=0;;i++) { pghandle w,t; char *text = "(no text)"; w = pgTraverseWidget(wBox, PG_TRAVERSE_CHILDREN, i); if (!w) break; /* Get the widget's text if it has any */ t = pgGetWidget(w, PG_WP_TEXT); if (t) text = pgGetString(t); printf("Child #%d : %s\n",i, text); } /* Add an event handler to catch all hilighting events */ pgBind(PGBIND_ANY, PGBIND_ANY, evtHilight, NULL); pgEventLoop(); return 0; }
/* widget: the parent widget to derive inside * directory: the directory into which search for themes */ void themebar(pghandle widget, char* directory, int* themecontext) { struct dirent *dent; int i,l; DIR *d; char buf[80]; pghandle box; THEME_DIRECTORY=directory; if (! (d = opendir(THEME_DIRECTORY))) { eerror("directory not found"); exit(1); } /* simple & dirty */ /* pageContext = pagecontext; */ /* themeContext = themecontext; */ box = pgNewWidget(PG_WIDGET_SCROLLBOX, PG_DERIVE_AFTER, widget); pgSetWidget(PGDEFAULT, PG_WP_SIDE, PG_S_ALL, /* PG_WP_TRANSPARENT, 1, */ 0); /* Make handles */ rewinddir(d); i = 0; while ((dent = readdir(d))) { l = strlen(dent->d_name); if (l<4) continue; if (strcmp(dent->d_name+l-3,".th")) continue; buf[0] = 0; /* dent->d_name[l-3] = 0; */ if (idx == LENGHT) { eerror("max array lenght reached in themebar.c: too many themes."); break; } array[idx].dir = pgNewString(directory); array[idx].fname = pgNewString(dent->d_name); array[idx].active = 0; /* Add item */ pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, box); pgSetWidget(PGDEFAULT, /* PG_WP_EXTDEVENTS, pgGetWidget(PGDEFAULT, PG_WP_EXTDEVENTS) & ~PG_EXEV_EXCLUSIVE, */ /* PG_WP_EXTDEVENTS, PG_EXEV_TOGGLE, */ PG_WP_TEXT, array[idx].fname, PG_WP_SIDE, PG_S_BOTTOM, 0); pgSetPayload(PGDEFAULT, idx); idx++; pgBind(PGDEFAULT,PG_WE_ACTIVATE,evtChangeTheme, themecontext); } closedir(d); pgSubUpdate(widget); return; }
int main(int argc, char **argv) { pghandle vbox, vbox2, wToolbar; pgInit(argc,argv); pgRegisterApp(PG_APP_NORMAL,"Textedit Demo",0); /* A toolbar for the buttons */ wToolbar = pgNewWidget (PG_WIDGET_TOOLBAR, 0, 0); /* share the screen for two textedit widgets */ vbox = pgNewWidget (PG_WIDGET_BOX, 0, 0); pgSetWidget (PGDEFAULT, PG_WP_SIDE, PG_S_LEFT, PG_WP_SIZE, pgFraction (1, 2), PG_WP_SIZEMODE, PG_SZMODE_CNTFRACT, 0); vbox2 = pgNewWidget (PG_WIDGET_BOX, 0, 0); pgSetWidget (PGDEFAULT, PG_WP_SIDE, PG_S_ALL, 0); /* first edit box */ edit = pgNewWidget (PG_WIDGET_TEXTEDIT, PG_DERIVE_INSIDE, vbox); pgSetWidget (edit, PG_WP_FONT, pgNewFont (NULL, 12, PG_FSTYLE_BOLD), PG_WP_TEXT, pgNewString ("Howdy!"), PG_WP_SELECTION, pgNewString ("Hey!"), 0); /* second edit box */ edit = pgNewWidget(PG_WIDGET_TEXTEDIT, PG_DERIVE_INSIDE, vbox2); pgSetWidget (edit, PG_WP_FONT, pgNewFont (NULL, 24, PG_FSTYLE_BOLD), PG_WP_TEXT, pgNewString ("Howdy!"), PG_WP_SELECTION, pgNewString ("Hey!"), 0); /* buttons in the toolbar */ wPaste = pgNewWidget(PG_WIDGET_BUTTON,PG_DERIVE_INSIDE,wToolbar); pgSetWidget(PGDEFAULT, PG_WP_SIZE,pgFraction(1,3), PG_WP_SIZEMODE,PG_SZMODE_CNTFRACT, PG_WP_TEXT,pgNewString("Paste"), 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&evtBtn,NULL); wCopy = pgNewWidget(PG_WIDGET_BUTTON,PG_DERIVE_INSIDE,wToolbar); pgSetWidget(PGDEFAULT, PG_WP_SIZE,pgFraction(1,3), PG_WP_SIZEMODE,PG_SZMODE_CNTFRACT, PG_WP_TEXT,pgNewString("Copy"), 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&evtBtn,NULL); wCut = pgNewWidget(PG_WIDGET_BUTTON,PG_DERIVE_INSIDE,wToolbar); pgSetWidget(PGDEFAULT, PG_WP_SIZE,pgFraction(1,3), PG_WP_SIZEMODE,PG_SZMODE_CNTFRACT, PG_WP_TEXT,pgNewString("Cut"), 0); pgBind(PGDEFAULT,PG_WE_ACTIVATE,&evtBtn,NULL); pgSetWidget(edit, PG_WP_SELECTION, pgNewString("Two!"), 0); pgEventLoop(); return 0; }