static void Init(void *obj) { AG_GLView *glv = obj; WIDGET(glv)->flags |= AG_WIDGET_FOCUSABLE; glv->wPre = 100; glv->hPre = 100; glv->flags = AG_GLVIEW_INIT_MATRICES; glv->draw_ev = NULL; glv->overlay_ev = NULL; glv->scale_ev = NULL; glv->keydown_ev = NULL; glv->btndown_ev = NULL; glv->keyup_ev = NULL; glv->btnup_ev = NULL; glv->motion_ev = NULL; AG_SetEvent(glv, "widget-moved", WidgetMoved, NULL); AG_SetEvent(glv, "mouse-button-down", MouseButtonDown, NULL); AG_AddEvent(glv, "attached", OnAttach, NULL); /* XXX TODO should make this configurable through AG_GLView. */ AG_RedrawOnTick(glv, 1); #ifdef AG_DEBUG AG_BindUint(glv, "flags", &glv->flags); AG_BindInt(glv, "wPre", &glv->wPre); AG_BindInt(glv, "hPre", &glv->hPre); #endif }
/* * Initialization routine. Note that the object system will automatically * invoke the initialization routines of the parent classes first. */ static void Init(void *obj) { formaText *my = (formaText*)obj; /* Allow this widget to grab focus. */ AGWIDGET(my)->flags |= AG_WIDGET_FOCUSABLE; /* * We'll eventually need to create and map a surface, but we cannot * do this from Init(), because it involves texture operations in * GL mode which are thread-unsafe. We wait until Draw() to do that. */ my->mySurface = -1; /* * Map our event handlers. For a list of all meaningful events * we can handle, see AG_Object(3), AG_Widget(3) and AG_Window(3). * * Here we register handlers for the common AG_Window(3) events. */ AG_SetEvent(my, "mouse-button-up", MouseButtonUp, NULL); AG_SetEvent(my, "mouse-button-down", MouseButtonDown, NULL); AG_SetEvent(my, "mouse-motion", MouseMotion, NULL); AG_SetEvent(my, "key-up", KeyUp, NULL); AG_SetEvent(my, "key-down", KeyDown, NULL); }
static void Init(void *obj) { AG_Titlebar *tbar = obj; AG_Box *box = obj; WIDGET(tbar)->flags |= AG_WIDGET_HFILL| AG_WIDGET_UNFOCUSED_BUTTONUP; AG_BoxSetType(box, AG_BOX_HORIZ); AG_BoxSetPadding(&tbar->hb, 3); AG_BoxSetSpacing(&tbar->hb, 1); tbar->flags = 0; tbar->pressed = 0; tbar->win = NULL; tbar->maximize_btn = NULL; tbar->minimize_btn = NULL; tbar->close_btn = NULL; tbar->label = AG_LabelNewS(tbar, AG_LABEL_HFILL|AG_LABEL_NOMINSIZE, _("Untitled")); AG_LabelSizeHint(tbar->label, 1, "X"); AG_LabelSetPadding(tbar->label, 5,5,2,2); AG_SetEvent(tbar, "mouse-button-down", MouseButtonDown, NULL); AG_SetEvent(tbar, "mouse-button-up", MouseButtonUp, NULL); }
static void Init(void *obj) { AG_GLView *glv = obj; WIDGET(glv)->flags |= AG_WIDGET_FOCUSABLE; glv->wPre = 100; glv->hPre = 100; glv->bgColor = AG_ColorRGB(0,0,0); glv->flags = AG_GLVIEW_INIT_MATRICES; glv->draw_ev = NULL; glv->underlay_ev = NULL; glv->overlay_ev = NULL; glv->scale_ev = NULL; glv->keydown_ev = NULL; glv->btndown_ev = NULL; glv->keyup_ev = NULL; glv->btnup_ev = NULL; glv->motion_ev = NULL; AG_SetEvent(glv, "widget-moved", WidgetMoved, NULL); AG_SetEvent(glv, "mouse-button-down", MouseButtonDown, NULL); AG_AddEvent(glv, "attached", OnAttach, NULL); }
static void Init(void *obj) { AG_FileSelector *fs = obj; fs->flags = 0; fs->panel = NULL; fs->wSaved = 0; fs->hSaved = 0; fs->inTxt[0] = '\0'; /* XXX TODO: Check for UTF-8 support in filesystem. */ fs->tbox = AG_TextboxNewS(fs, AG_TEXTBOX_COMBO|AG_TEXTBOX_EXCL, NULL); AG_TextboxBindUTF8(fs->tbox, fs->inTxt, sizeof(fs->inTxt)); fs->button = AG_ButtonNewS(fs, AG_BUTTON_STICKY, _("Browse...")); AG_ButtonSetPadding(fs->button, 1,1,1,1); AG_WidgetSetFocusable(fs->button, 0); fs->filedlg = Malloc(sizeof(AG_FileDlg)); AG_ObjectInit(fs->filedlg, &agFileDlgClass); AG_Expand(fs->filedlg); AG_SetEvent(fs->button, "button-pushed", Expand, "%p", fs); AG_SetEvent(fs->filedlg, "file-chosen", FileChosen, "%p", fs); AG_SetEvent(fs->tbox, "textbox-return", Return, "%p", fs); }
MenuDeathmatchBonuses::MenuDeathmatchBonuses(){ AG_Box * item; // nadpis createHeading("Deathmatch bonuses setings"); // ok item = createItem("OK"); AG_SetEvent(item, "window-mousebuttondown", handlerBack, 0); // bonus item = createItemHoriz("bonus"); AG_AddEvent(items_.back(), "window-keydown", handlerIntItem, "%p,%i,%i", &bonus, MENU_DEATHMATCH_BONUSES_MIN, MENU_DEATHMATCH_BONUSES_MAX); AG_NumericalNewIntR(item, 0, 0, 0, &bonus, MENU_DEATHMATCH_BONUSES_MIN, MENU_DEATHMATCH_BONUSES_MAX); // ok item = createItem("OK"); AG_SetEvent(item, "window-mousebuttondown", handlerBack, 0); AG_SpacerNewHoriz(win); }
AG_Box *AGOL_About::CreateLicenseBox(void *parent) { AG_Box *lbox; AG_Textbox *text; lbox = AG_BoxNewVert(parent, AG_BOX_EXPAND); AG_LabelNewS(lbox, 0, "License"); lbox = AG_BoxNewHoriz(lbox, AG_BOX_EXPAND); AG_BoxSetPadding(lbox, 5); AG_BoxSetSpacing(lbox, 5); #if !AG_VERSION_ATLEAST(1,4,2) text = AG_TextboxNewS(lbox, AG_TEXTBOX_MULTILINE | AG_TEXTBOX_EXPAND, ""); #else text = AG_TextboxNewS(lbox, AG_TEXTBOX_READONLY | AG_TEXTBOX_MULTILINE | AG_TEXTBOX_EXPAND, ""); #endif AG_TextboxSetWordWrap(text, true); AG_TextboxSetString(text, license.c_str()); #if !AG_VERSION_ATLEAST(1,4,2) AG_SetEvent(text, "textbox-prechg", EventReceiver, "%p", RegisterEventHandler((EVENT_FUNC_PTR)&AGOL_About::OnLicensePrechg)); AG_SetEvent(text, "textbox-postchg", EventReceiver, "%p", RegisterEventHandler((EVENT_FUNC_PTR)&AGOL_About::OnLicensePostchg)); #else AG_TextboxSetCursorPos(text, 0); #endif return lbox; }
static void Init(void *obj) { AG_Button *bu = obj; WIDGET(bu)->flags |= AG_WIDGET_FOCUSABLE| AG_WIDGET_UNFOCUSED_MOTION| AG_WIDGET_UNFOCUSED_BUTTONUP| AG_WIDGET_TABLE_EMBEDDABLE| AG_WIDGET_USE_TEXT| AG_WIDGET_USE_MOUSEOVER; bu->flags = 0; bu->lbl = NULL; bu->surface = -1; bu->state = 0; bu->justify = AG_TEXT_CENTER; bu->valign = AG_TEXT_MIDDLE; bu->lPad = 4; bu->rPad = 4; bu->tPad = 3; bu->bPad = 3; AG_InitTimer(&bu->delayTo, "delay", 0); AG_InitTimer(&bu->repeatTo, "repeat", 0); AG_AddEvent(bu, "widget-shown", OnShow, NULL); AG_SetEvent(bu, "mouse-button-up", MouseButtonUp, NULL); AG_SetEvent(bu, "mouse-button-down", MouseButtonDown, NULL); AG_SetEvent(bu, "mouse-motion", MouseMotion, NULL); AG_SetEvent(bu, "key-up", KeyUp, NULL); AG_SetEvent(bu, "key-down", KeyDown, NULL); AG_BindInt(bu, "state", &bu->state); }
AG_Textbox * AG_TextboxNewS(void *parent, Uint flags, const char *label) { AG_Textbox *tb; tb = Malloc(sizeof(AG_Textbox)); AG_ObjectInit(tb, &agTextboxClass); if (flags & AG_TEXTBOX_HFILL) AG_ExpandHoriz(tb); if (flags & AG_TEXTBOX_VFILL) AG_ExpandVert(tb); if (flags & AG_TEXTBOX_READONLY) { AG_WidgetDisable(tb); AG_WidgetDisable(tb->ed); } if (flags & AG_TEXTBOX_PASSWORD) tb->ed->flags |= AG_EDITABLE_PASSWORD; if (flags & AG_TEXTBOX_ABANDON_FOCUS) tb->ed->flags |= AG_EDITABLE_ABANDON_FOCUS; if (flags & AG_TEXTBOX_INT_ONLY) tb->ed->flags |= AG_EDITABLE_INT_ONLY; if (flags & AG_TEXTBOX_FLT_ONLY) tb->ed->flags |= AG_EDITABLE_FLT_ONLY; if (flags & AG_TEXTBOX_CATCH_TAB) { WIDGET(tb)->flags |= AG_WIDGET_CATCH_TAB; WIDGET(tb->ed)->flags |= AG_WIDGET_CATCH_TAB; } if (flags & AG_TEXTBOX_NOEMACS) tb->ed->flags |= AG_EDITABLE_NOEMACS; if (flags & AG_TEXTBOX_NOWORDSEEK) tb->ed->flags |= AG_EDITABLE_NOWORDSEEK; if (flags & AG_TEXTBOX_NOLATIN1) tb->ed->flags |= AG_EDITABLE_NOLATIN1; if (flags & AG_TEXTBOX_MULTILINE) { tb->ed->flags |= AG_EDITABLE_MULTILINE; tb->vBar = AG_ScrollbarNew(tb, AG_SCROLLBAR_VERT, AG_SCROLLBAR_AUTOHIDE); AG_BindInt(tb->vBar, "value", &tb->ed->y); AG_BindInt(tb->vBar, "max", &tb->ed->yMax); AG_BindInt(tb->vBar, "visible", &tb->ed->yVis); AG_SetEvent(tb->vBar, "scrollbar-drag-begin", BeginScrollbarDrag, "%p", tb); AG_SetEvent(tb->vBar, "scrollbar-drag-end", EndScrollbarDrag, "%p", tb); } AG_TextboxSetStatic(tb, (flags & AG_TEXTBOX_STATIC)); AG_TextboxSetWordWrap(tb, (flags & AG_TEXTBOX_WORDWRAP)); tb->flags |= flags; if (label != NULL) { tb->lbl = AG_LabelNewS(tb, 0, label); AG_LabelSetPadding(tb->lbl, -1, 10, -1, -1); } AG_ObjectAttach(parent, tb); return (tb); }
static void MainWindow(void) { AG_Window *win; AG_Table *t; AG_Button *btn; AG_Notebook *nb; AG_NotebookTab *ntab; AG_HBox *hbox; int i, j; win = AG_WindowNewNamedS(0, "agar-benchmarks"); AG_WindowSetCaption(win, "Agar Benchmarks"); nb = AG_NotebookNew(win, AG_NOTEBOOK_HFILL|AG_NOTEBOOK_VFILL); for (i = 0; i < ntests; i++) { struct test_ops *test = tests[i]; ntab = AG_NotebookAddTab(nb, test->name, AG_BOX_VERT); t = AG_TableNewPolled(ntab, AG_TABLE_MULTI|AG_TABLE_EXPAND, poll_test, "%i", i); AG_TableAddCol(t, "Test", "70%", NULL); AG_TableAddCol(t, "Min", "10%", NULL); AG_TableAddCol(t, "Avg", "10%", NULL); AG_TableAddCol(t, "Max", "10%", NULL); AG_TableAddCol(t, NULL, NULL, NULL); hbox = AG_HBoxNew(ntab, AG_HBOX_HOMOGENOUS|AG_HBOX_HFILL); { btn = AG_ButtonNewS(hbox, 0, "Run tests"); AG_SetEvent(btn, "button-pushed", RunTests, "%p,%p", test, t); btn = AG_ButtonNewS(hbox, 0, "Save results"); AG_SetEvent(btn, "button-pushed", SaveToFileDlg, "%p,%p", test, t); btn = AG_ButtonNewS(hbox, 0, "Quit"); AG_SetEvent(btn, "button-pushed", QuitApp, NULL); } for (j = 0; j < test->nfuncs; j++) { struct testfn_ops *fn = &test->funcs[j]; fn->clksMin = 0; fn->clksAvg = 0; fn->clksMax = 0; } } AG_WindowSetGeometryAligned(win, AG_WINDOW_MC, agView->w-20, agView->h-20); AG_WindowShow(win); }
/* * Initialization routine. Note that the object system will automatically * invoke the initialization routines of all parent classes first. */ static void Init(void *obj) { Animal *animal = obj; animal->age = 0.0; animal->cellCount = 1; /* Event handler functions and timers are usually configured here. */ AG_SetEvent(animal, "die", Die, NULL); AG_SetEvent(animal, "attached", Attached, NULL); AG_SetTimeout(&animal->time, Tick, NULL, 0); }
AG_Window * DEV_UnicodeBrowser(void) { AG_Window *win; AG_Combo *comRange; AG_Treetbl *tt; int i, w, wMax = 0; if ((win = AG_WindowNewNamedS(0, "DEV_UnicodeBrowser")) == NULL) { return (NULL); } AG_WindowSetCaptionS(win, _("Unicode Browser")); AG_WindowSetCloseAction(win, AG_WINDOW_DETACH); comRange = AG_ComboNew(win, AG_COMBO_HFILL, _("Range: ")); for (i = 0; i < unicodeRangeCount; i++) { AG_TextSize(unicodeRanges[i].name, &w, NULL); if (w > wMax) { wMax = w; } AG_TlistAddPtr(comRange->list, NULL, unicodeRanges[i].name, (void *)&unicodeRanges[i]); } AG_ComboSizeHintPixels(comRange, wMax, 10); tt = AG_TreetblNew(win, AG_TREETBL_EXPAND, NULL, NULL); AG_TreetblSizeHint(tt, 200, 6); AG_TreetblAddCol(tt, 0, "<XXXXXXX>", "Char"); AG_TreetblAddCol(tt, 1, "<XXXXXXX>", "Hex"); AG_SetEvent(comRange, "combo-selected", SelectUnicodeRange, "%p", tt); AG_WidgetFocus(comRange); return (win); }
static void Expand(AG_Event *event) { AG_UCombo *com = AG_PTR(1); AG_Driver *drv = WIDGET(com)->drv; int expand = AG_INT(2); AG_SizeReq rList; int x, y, w, h; Uint wView, hView; AG_ObjectLock(com); if (expand) { com->panel = AG_WindowNew(AG_WINDOW_POPUP|AG_WINDOW_MODAL| AG_WINDOW_NOTITLE); AG_ObjectSetName(com->panel, "_UComboPopup"); AG_WindowSetPadding(com->panel, 0,0,0,0); AG_ObjectAttach(com->panel, com->list); if (WIDGET(com)->window != NULL) AG_WindowAttach(WIDGET(com)->window, com->panel); if (com->wSaved > 0) { w = com->wSaved; h = com->hSaved; } else { if (com->wPreList != -1 && com->hPreList != -1) { AG_TlistSizeHintPixels(com->list, com->wPreList, com->hPreList); } AG_WidgetSizeReq(com->list, &rList); w = rList.w + com->panel->wBorderSide*2; h = rList.h + com->panel->wBorderBot; } x = WIDGET(com)->rView.x2 - w; y = WIDGET(com)->rView.y1; AG_GetDisplaySize(WIDGET(com)->drv, &wView, &hView); if (x+w > wView) { w = wView - x; } if (y+h > hView) { h = hView - y; } if (AGDRIVER_CLASS(drv)->wm == AG_WM_MULTIPLE && WIDGET(com)->window != NULL) { x += WIDGET(WIDGET(com)->window)->x; y += WIDGET(WIDGET(com)->window)->y; } if (x < 0) { x = 0; } if (y < 0) { y = 0; } if (w < 4 || h < 4) { Collapse(com); return; } AG_SetEvent(com->panel, "window-modal-close", ModalClose, "%p", com); AG_WindowSetGeometry(com->panel, x,y, w,h); AG_WindowShow(com->panel); } else { Collapse(com); } AG_ObjectUnlock(com); }
void AG_GLViewKeyupFn(AG_GLView *glv, AG_EventFn fn, const char *fmt, ...) { AG_ObjectLock(glv); glv->keyup_ev = AG_SetEvent(glv, "key-up", fn, NULL); AG_EVENT_GET_ARGS(glv->keyup_ev, fmt); AG_ObjectUnlock(glv); }
void AG_GLViewMotionFn(AG_GLView *glv, AG_EventFn fn, const char *fmt, ...) { AG_ObjectLock(glv); glv->motion_ev = AG_SetEvent(glv, "mouse-motion", fn, NULL); AG_EVENT_GET_ARGS(glv->motion_ev, fmt); AG_ObjectUnlock(glv); }
void AG_GLViewButtonupFn(AG_GLView *glv, AG_EventFn fn, const char *fmt, ...) { AG_ObjectLock(glv); glv->btnup_ev = AG_SetEvent(glv, "mouse-button-up", fn, NULL); AG_EVENT_GET_ARGS(glv->btnup_ev, fmt); AG_ObjectUnlock(glv); }
void AG_GLViewScaleFn(AG_GLView *glv, AG_EventFn fn, const char *fmt, ...) { AG_ObjectLock(glv); glv->scale_ev = AG_SetEvent(glv, NULL, fn, NULL); AG_EVENT_GET_ARGS(glv->scale_ev, fmt); AG_ObjectUnlock(glv); }
static void Init(void *obj) { AG_Textbox *tb = obj; WIDGET(tb)->flags |= AG_WIDGET_TABLE_EMBEDDABLE; tb->ed = AG_EditableNew(tb, 0); tb->lbl = NULL; tb->boxPadX = 2; tb->boxPadY = 2; tb->flags = 0; tb->hBar = NULL; tb->vBar = NULL; tb->r = AG_RECT(0,0,0,0); tb->font = NULL; AG_SetEvent(tb, "mouse-button-down", MouseButtonDown, NULL); AG_SetEvent(tb, "widget-disabled", Disabled, NULL); AG_SetEvent(tb, "widget-enabled", Enabled, NULL); AG_SetEvent(tb->ed, "editable-prechg", EditablePreChg, "%p", tb); AG_SetEvent(tb->ed, "editable-postchg", EditablePostChg, "%p", tb); AG_SetEvent(tb->ed, "editable-return", EditableReturn, "%p", tb); AG_WidgetForwardFocus(tb, tb->ed); #ifdef AG_DEBUG AG_BindUint(tb, "flags", &tb->flags); AG_BindInt(tb, "boxPadX", &tb->boxPadX); AG_BindInt(tb, "boxPadY", &tb->boxPadY); AG_SetEvent(tb, "bound", Bound, NULL); #endif /* AG_DEBUG */ }
void AG_GLViewOverlayFn(void *obj, AG_EventFn fn, const char *fmt, ...) { AG_GLView *glv = obj; AG_ObjectLock(glv); glv->overlay_ev = AG_SetEvent(glv, NULL, fn, NULL); AG_EVENT_GET_ARGS(glv->overlay_ev, fmt); AG_ObjectUnlock(glv); }
void AG_GLViewKeydownFn(void *obj, AG_EventFn fn, const char *fmt, ...) { AG_GLView *glv = obj; AG_ObjectLock(glv); glv->keydown_ev = AG_SetEvent(glv, "key-down", fn, NULL); AG_EVENT_GET_ARGS(glv->keydown_ev, fmt); AG_ObjectUnlock(glv); }
void AG_GLViewButtondownFn(void *obj, AG_EventFn fn, const char *fmt, ...) { AG_GLView *glv = obj; AG_ObjectLock(glv); glv->btndown_ev = AG_SetEvent(glv, "mouse-button-down", fn, NULL); AG_EVENT_GET_ARGS(glv->btndown_ev, fmt); AG_ObjectUnlock(glv); }
static void Init(void *obj) { AG_HSVPal *pal = obj; WIDGET(pal)->flags |= AG_WIDGET_FOCUSABLE; pal->flags = 0; pal->h = 0.0; pal->s = 0.0; pal->v = 0.0; pal->a = 1.0; pal->pixel = 0; pal->color = AG_ColorRGBA(0,0,0,255); pal->circle.spacing = 10; pal->circle.width = 20; pal->state = AG_HSVPAL_SEL_NONE; pal->surface = NULL; pal->surfaceId = -1; pal->menu = NULL; pal->menu_item = NULL; pal->menu_win = NULL; pal->cTile = AG_ColorRGB(140,140,140); AG_SetEvent(pal, "mouse-button-up", MouseButtonUp, NULL); AG_SetEvent(pal, "mouse-button-down", MouseButtonDown, NULL); AG_SetEvent(pal, "mouse-motion", MouseMotion, NULL); AG_BindFloat(pal, "hue", &pal->h); AG_BindFloat(pal, "saturation", &pal->s); AG_BindFloat(pal, "value", &pal->v); AG_BindFloat(pal, "alpha", &pal->a); AG_BindUint32(pal, "pixel", &pal->pixel); AG_BindPointer(pal, "color", (void *)&pal->color); AG_BindPointer(pal, "pixel-format", NULL); /* AG_BindFloat(pal, "red", &pal->r); */ /* AG_BindFloat(pal, "green", &pal->g); */ /* AG_BindFloat(pal, "blue", &pal->b); */ /* AG_BindFloat(pal, "RGBAv", &pal->rgbav); */ AG_SetEvent(pal, "bound", Bound, NULL); AG_AddEvent(pal, "attached", OnAttach, NULL); }
MenuLoadGame::MenuLoadGame(){ AG_Box * item; // nadpis createHeading("Load Game"); // back item = createItem("Back"); AG_SetEvent(item, "window-mousebuttondown", handlerBack, 0); AG_SpacerNewHoriz(win); }
static void CreateCloseButton(AG_Titlebar *tbar) { tbar->close_btn = AG_ButtonNewS(tbar, 0, NULL); AG_ButtonJustify(tbar->close_btn, AG_TEXT_LEFT); AG_ButtonSetFocusable(tbar->close_btn, 0); AG_ButtonSurfaceNODUP(tbar->close_btn, agIconWinClose.s); AG_ButtonSetPadding(tbar->close_btn, 0,0,0,0); AG_SetEvent(tbar->close_btn, "button-pushed", CloseWindow, "%p", tbar); }
static void Init(void *obj) { AG_FontSelector *fs = obj; fs->flags = AG_FONTSELECTOR_UPDATE; fs->hPane = AG_PaneNewHoriz(fs, AG_PANE_EXPAND); fs->tlFaces = AG_TlistNew(fs->hPane->div[0], AG_TLIST_EXPAND); fs->hPane2 = AG_PaneNewHoriz(fs->hPane->div[1], AG_PANE_EXPAND); fs->tlStyles = AG_TlistNew(fs->hPane2->div[0], AG_TLIST_EXPAND); fs->sizeBox = AG_BoxNewVert(fs->hPane2->div[1], AG_BOX_EXPAND); fs->tlSizes = AG_TlistNew(fs->sizeBox, AG_TLIST_EXPAND); fs->font = NULL; fs->curFace[0] = '\0'; fs->curStyle = 0; fs->curSize = 0; fs->rPreview = AG_RECT(0,0,0,64); fs->sPreview = -1; AG_TlistSizeHint(fs->tlFaces, "XXXXXXXXXXXXXXX", 8); AG_TlistSizeHint(fs->tlStyles, "XXXXXXXXX", 8); AG_TlistSizeHint(fs->tlSizes, "100", 8); AG_BindPointer(fs, "font", (void *)&fs->font); AG_SetEvent(fs, "bound", Bound, NULL); AG_AddEvent(fs, "widget-shown", UpdateFaces, NULL); AG_SetEvent(fs->tlFaces, "tlist-selected", SelectedFace, "%p", fs); AG_SetEvent(fs->tlStyles, "tlist-selected", SelectedStyle, "%p", fs); AG_SetEvent(fs->tlSizes, "tlist-selected", SelectedSize, "%p", fs); #ifdef AG_DEBUG AG_BindUint(fs, "flags", &fs->flags); /* AG_BindString(fs, "curFace", fs->curFace, sizeof(fs->curFace)); */ AG_BindUint(fs, "curStyle", &fs->curStyle); AG_BindInt(fs, "curSize", &fs->curSize); AG_BindInt(fs, "sPreview", &fs->sPreview); #endif }
static void Init(void *obj) { AG_Slider *sl = obj; WIDGET(sl)->flags |= AG_WIDGET_UNFOCUSED_BUTTONUP| AG_WIDGET_UNFOCUSED_MOTION| AG_WIDGET_FOCUSABLE| AG_WIDGET_TABLE_EMBEDDABLE; sl->type = AG_SLIDER_HORIZ; sl->ctlPressed = 0; sl->flags = 0; sl->wControlPref = agTextFontHeight; sl->wControl = sl->wControlPref; sl->xOffs = 0; AG_InitTimer(&sl->moveTo, "move", 0); AG_AddEvent(sl, "widget-shown", OnShow, NULL); AG_AddEvent(sl, "widget-hidden", OnFocusLoss, NULL); AG_SetEvent(sl, "widget-lostfocus", OnFocusLoss, NULL); AG_SetEvent(sl, "mouse-button-down", MouseButtonDown, NULL); AG_SetEvent(sl, "mouse-button-up", MouseButtonUp, NULL); AG_SetEvent(sl, "mouse-motion", MouseMotion, NULL); AG_SetEvent(sl, "key-down", KeyDown, NULL); AG_SetEvent(sl, "key-up", KeyUp, NULL); #ifdef AG_DEBUG AG_BindInt(sl, "xOffs", &sl->xOffs); AG_BindInt(sl, "extent", &sl->extent); #endif /* AG_DEBUG */ }
AG_Button * AG_ButtonNewFn(void *parent, Uint flags, const char *caption, AG_EventFn fn, const char *fmt, ...) { AG_Button *bu; AG_Event *ev; if (!(flags & AG_BUTTON_NOEXCL)) { flags |= AG_BUTTON_EXCL; } bu = AG_ButtonNewS(parent, flags, caption); ev = AG_SetEvent(bu, "button-pushed", fn, NULL); AG_EVENT_GET_ARGS(ev, fmt); return (bu); }
static void Init(void *obj) { AG_UCombo *com = obj; WIDGET(com)->flags |= AG_WIDGET_UNFOCUSED_BUTTONUP| AG_WIDGET_TABLE_EMBEDDABLE; com->flags = 0; com->panel = NULL; com->wSaved = 0; com->hSaved = 0; com->wPreList = -1; com->hPreList = -1; com->button = AG_ButtonNewS(com, AG_BUTTON_STICKY, _("...")); AG_ButtonSetPadding(com->button, 0,0,0,0); AG_LabelSetPadding(com->button->lbl, 0,0,0,0); AG_WidgetSetFocusable(com->button, 0); com->list = Malloc(sizeof(AG_Tlist)); AG_ObjectInit(com->list, &agTlistClass); AG_Expand(com->list); AG_WidgetForwardFocus(com, com->button); AG_SetEvent(com, "detached", OnDetach, NULL); AG_SetEvent(com->button, "button-pushed", Expand, "%p", com); AG_SetEvent(com->list, "tlist-changed", SelectedItem, "%p", com); #ifdef AG_DEBUG AG_BindUint(com, "flags", &com->flags); AG_BindPointer(com, "list", (void *)&com->list); AG_BindPointer(com, "panel", (void *)&com->panel); AG_BindInt(com, "wSaved", &com->wSaved); AG_BindInt(com, "hSaved", &com->hSaved); AG_BindInt(com, "wPreList", &com->wPreList); AG_BindInt(com, "hPreList", &com->hPreList); #endif }
/* Toggle word wrapping */ void AG_TextboxSetWordWrap(AG_Textbox *tb, int flag) { AG_EditableSetWordWrap(tb->ed, flag); if (tb->ed->flags & AG_EDITABLE_MULTILINE) { if (tb->hBar != NULL) { AG_ObjectDetach(tb->hBar); AG_ObjectDestroy(tb->hBar); tb->hBar = NULL; } if (!flag) { tb->hBar = AG_ScrollbarNew(tb, AG_SCROLLBAR_HORIZ, AG_SCROLLBAR_AUTOHIDE); AG_BindInt(tb->hBar, "value", &tb->ed->x); AG_BindInt(tb->hBar, "max", &tb->ed->xMax); AG_BindInt(tb->hBar, "visible", &WIDTH(tb->ed)); AG_SetEvent(tb->hBar, "scrollbar-drag-begin", BeginScrollbarDrag, "%p", tb); AG_SetEvent(tb->hBar, "scrollbar-drag-end", EndScrollbarDrag, "%p", tb); AG_TextboxSizeHintLines(tb, 4); } } }
void TestState::enter() { int screenWidth = graphicsEngine->getScreenWidth(); int screenHeight = graphicsEngine->getScreenHeight(); AG_Window *chatWindow = AG_WindowNewNamed(AG_WINDOW_NOBUTTONS, "ChatWindow"); AG_WindowSetCaption(chatWindow, "Chat"); AG_WindowSetSpacing(chatWindow, 5); AG_WindowSetGeometry(chatWindow, 10, screenHeight - 185, 400, 175); AG_WindowShow(chatWindow); AG_Notebook *book = AG_NotebookNew(chatWindow, AG_NOTEBOOK_EXPAND); AG_ObjectSetName(book, "ChannelsFolder"); AG_NotebookTab *nbTab = AG_NotebookAddTab(book, "Global Chat", AG_BOX_VERT); AG_ObjectSetName(nbTab, "GlobalChat"); AG_Console *console = AG_ConsoleNew(nbTab, AG_CONSOLE_EXPAND|AG_CONSOLE_AUTOSCROLL); AG_ObjectSetName(console, "Chat"); AG_Textbox *chatInput = AG_TextboxNewS(chatWindow, AG_TEXTBOX_CATCH_TAB, ""); AG_TextboxSizeHint(chatInput, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); AG_SetEvent(chatInput, "textbox-return", submit_chat, "%p%p%p", chatServer, chatInput, console); // add elements to interface manager interfaceManager->addWindow(chatWindow); popUp = AG_WindowNew(AG_WINDOW_NOBUTTONS); AG_WindowSetCaption(popUp, "Exit Game"); AG_WindowSetGeometry(popUp, screenWidth / 2 - 75, screenHeight / 2 - 40, 150, 80); AG_WindowHide(popUp); AG_Button *logOut = AG_ButtonNewFn(popUp, 0, "Log Out", handle_logout, 0); AG_ButtonJustify(logOut, AG_TEXT_CENTER); AG_Button *exitGame = AG_ButtonNewFn(popUp, 0, "Exit to Desktop", handle_exit, 0); AG_ButtonJustify(exitGame, AG_TEXT_CENTER); interfaceManager->addWindow(popUp); std::string nick = player->getSelectedCharacter()->getName(); std::string host = "neo.us.whatnet.org"; chatServer->setNick(nick); #ifndef WITHOUT_CHAT chatServer->connect(host); #endif // add listener interfaceManager->addMouseListener(&handle_mouse); }