static int TestGUI(void *obj, AG_Window *win) { char path[AG_PATHNAME_MAX]; AG_TestInstance *ti = obj; AG_Box *box; AG_Textbox *tb; someString[0] = '\0'; AG_GetString(agConfig, "load-path", path, sizeof(path)); AG_LabelNew(win, 0, "load-path: %s", path); AG_GetString(agConfig, "save-path", path, sizeof(path)); AG_LabelNew(win, 0, "save-path: %s", path); /* Tie some globals to the config settings */ AG_BindInt(agConfig, "some-int", &someInt); AG_BindInt(agConfig, "some-bool", &someBool); AG_BindString(agConfig, "some-string", someString, sizeof(someString)); AG_SetInt(agConfig, "some-int", 2345); /* Create some widgets */ AG_NumericalNewInt(win, 0, NULL, "Some int: ", &someInt); AG_CheckboxNewInt(win, 0, "Some bool", &someBool); tb = AG_TextboxNew(win, AG_TEXTBOX_HFILL, "Some string: "); AG_TextboxBindUTF8(tb, someString, sizeof(someString)); box = AG_BoxNewHoriz(win, AG_BOX_EXPAND); { AG_ButtonNewFn(box, 0, "Load configuration", LoadConfig, "%p", ti); AG_ButtonNewFn(box, 0, "Save configuration", SaveConfig, "%p", ti); } return (0); }
/* * Set up main window, draw it. */ void ui_main() { mainwin = AG_WindowNew(AG_WINDOW_PLAIN); plpane = AG_PaneNew(mainwin, AG_PANE_VERT, 0); AG_Expand(plpane); { AG_LabelNew(plpane->div[0], 0, "Playlist"); playlisttable = AG_TableNewPolled(plpane->div[0], AG_TABLE_EXPAND, update_playlisttable, NULL); AG_TableSizeHint(playlisttable, 200, 15); AG_SetInt(playlisttable->hbar, "max", 0); /* HURR jak wylaczyc scrollbar? //AG_TableAddCol(playlisttable, "id", "<foo>", NULL); */ AG_TableAddCol(playlisttable, "Artist", "<some lengthy artist name>", NULL); AG_TableAddCol(playlisttable, "Title", NULL, NULL); AG_TableAddCol(playlisttable, "Length", "<9999:99>", NULL); /*AG_TableSetRowDblClickFn(playlisttable, handle_ui_events, "%i,%p", UI_CMD_PLAY_ID, playlisttable ); */ AG_TableSetRowDblClickFn(playlisttable, handle_ui_events, "%i", UI_CMD_PLAY_ID ); //jak to samo klawiatura osiagnac?*/ //AG_SetEvent(playlisttable, "window-keydown", keyboard_handler, NULL); } { AG_LabelNew(plpane->div[1], 0, "Library"); librarytable = AG_TableNewPolled(plpane->div[1], AG_TABLE_EXPAND, update_librarytable, NULL); AG_SetInt(librarytable->hbar, "max", 0); /* HURR jak wylaczyc scrollbar? */ AG_TableAddCol(librarytable, "Artist", "<some lengthy artist name>", NULL); AG_TableAddCol(librarytable, "Title", NULL, NULL); AG_TableAddCol(librarytable, "Length", "<9999:99>", NULL); AG_TableSetRowDblClickFn(librarytable, handle_ui_events, "%i", UI_CMD_PLAYLIST_ADD ); } artistlbl = AG_LabelNewPolled(mainwin, 0, "Artist: %s", &artistBuf); titlelbl = AG_LabelNewPolled(mainwin, 0, "Title: %s", &titleBuf); buttonbox = AG_BoxNew(mainwin, AG_BOX_HORIZ, 0); AG_ExpandHoriz(buttonbox); { prevbutton = AG_ButtonNewFn(buttonbox, 0, "|<", handle_ui_events, "%i", UI_CMD_PREV); stopbutton = AG_ButtonNewFn(buttonbox, 0, "[]", handle_ui_events, "%i", UI_CMD_STOP); pausebutton = AG_ButtonNewFn(buttonbox, 0, "||", handle_ui_events, "%i", UI_CMD_PAUSE); playbutton = AG_ButtonNewFn(buttonbox, 0, ">", handle_ui_events, "%i", UI_CMD_PLAY); nextbutton = AG_ButtonNewFn(buttonbox, 0, ">|", handle_ui_events, "%i", UI_CMD_NEXT); } statuslbl = AG_LabelNewPolled(mainwin, 0, "Status: %s", &statusBuf); AG_WindowMaximize(mainwin); AG_WindowShow(mainwin); }
static void FileMenu_BootMode(AG_Event *event) { AG_Menu *self = (AG_Menu *)AG_SELF(); AG_MenuItem *item = (AG_MenuItem *)AG_SENDER(); AG_Window *w; AG_Button *btn[3]; AG_Box *box; AG_Box *box2; char *label; AG_Label *lbl; w = AG_WindowNew(AG_WINDOW_NOMINIMIZE | AG_WINDOW_NOMAXIMIZE | FILEDIALOG_WINDOW_DEFAULT); AG_WindowSetMinSize(w, 230, 80); label = gettext("Select mode (Notice: If select , reboot.)"); AG_WindowSetMinSize(w, 230, 80); box = AG_BoxNewHorizNS(w, AG_BOX_HFILL); AG_WidgetSetSize(box, 230, 32); lbl = AG_LabelNew(AGWIDGET(box), AG_LABEL_EXPAND, "%s", label); box = AG_BoxNewVert(w, AG_BOX_HFILL); AG_WidgetSetSize(box, 230, 32); box2 = AG_BoxNewHoriz(box, 0); btn[0] = AG_ButtonNewFn (AGWIDGET(box2), 0, gettext("BASIC"), SetBootMode, "%i", FALSE); box2 = AG_BoxNewVert(box, 0); btn[1] = AG_ButtonNewFn (AGWIDGET(box2), 0, gettext("DOS"), SetBootMode, "%i", TRUE); box2 = AG_BoxNewVert(box, 0); btn[2] = AG_ButtonNewFn (AGWIDGET(box2), 0, gettext("Cancel"), OnPushCancel, NULL); AG_ActionFn(AGWIDGET(w), "window-close", OnPushCancel, NULL); AG_WindowSetCaption(w, gettext("Boot Mode")); AG_WindowShow(w); }
static void SoundMenu(AG_NotebookTab *parent, struct gui_sound *cfg) { AG_Radio *radio; AG_Checkbox *check; AG_Numerical *num; AG_Label *lbl; AG_Box *box; AG_Box *box2; int i; for(i = 0; i < 6 ; i++) { if(cfg->nSampleRate == SampleRates[i]) break; } if(i > 6) i = 6; box = AG_BoxNewVert(AGWIDGET(parent), AG_BOX_VFILL); { lbl = AG_LabelNew(AGWIDGET(box), 0, "%s", gettext("Sample Rate")); radio = AG_RadioNewFn(AGWIDGET(box), 0, SampleRateName, OnChangeSampleRate, "%p", cfg); AG_SetInt(radio, "value", i); box = AG_BoxNewVert(AGWIDGET(parent), AG_BOX_HFILL); check = AG_CheckboxNewInt(AGWIDGET(box), AG_CHECKBOX_HFILL, gettext("HQ Rendering"), &(cfg->bFMHQmode)); } box = AG_BoxNewVert(AGWIDGET(parent), AG_BOX_VFILL); { num = AG_NumericalNewInt(AGWIDGET(box), AG_NUMERICAL_HFILL, gettext("Per Second") ,gettext("Sound Buffer"), &(cfg->nSoundBuffer)); AG_NumericalSetRangeInt(num, 30, 2000); AG_NumericalSetIncrement(num, 10.0); check = AG_CheckboxNewInt(AGWIDGET(box), AG_CHECKBOX_HFILL, gettext("Force Stereo"), &(cfg->nStereoOut)); check = AG_CheckboxNewInt(AGWIDGET(box), AG_CHECKBOX_HFILL, gettext("FDD Seek & Motor"), &(cfg->bFddSound)); check = AG_CheckboxNewInt(AGWIDGET(box), AG_CHECKBOX_HFILL, gettext("CMT Monitor"), &(cfg->bTapeMon)); } }
/* Edition routine. */ static void * Edit(void *obj) { Mammal *mammal = obj; AG_Window *win, *winSuper; AG_HSVPal *pal; AG_ObjectClass *super; win = AG_WindowNew(0); AG_WindowSetCaption(win, "Mammal: %s", AGOBJECT(mammal)->name); /* Invoke the "edit" operation of the superclass. */ super = AG_ObjectSuperclass(mammal); if (super->edit != NULL) { winSuper = super->edit(mammal); AG_WindowSetPosition(winSuper, AG_WINDOW_UPPER_CENTER, 0); AG_WindowShow(winSuper); } /* Allow user to edit paramters specific to this class. */ AG_LabelNew(win, 0, "Hair color:"); pal = AG_HSVPalNew(win, AG_HSVPAL_EXPAND); AG_BindFloat(pal, "hue", &mammal->hairColor.h); AG_BindFloat(pal, "saturation", &mammal->hairColor.s); AG_BindFloat(pal, "value", &mammal->hairColor.v); return (win); }
static void * Edit(void *p, VG_View *vv) { VG_Text *vt = p; AG_Box *box = AG_BoxNewVert(NULL, AG_BOX_EXPAND); AG_Pane *vPane; AG_Textbox *tb; AG_Box *bAl, *bAlv; vPane = AG_PaneNewVert(box, AG_PANE_EXPAND); AG_LabelNew(vPane->div[0], 0, _("Text: ")); tb = AG_TextboxNewS(vPane->div[0], AG_TEXTBOX_MULTILINE|AG_TEXTBOX_EXPAND, NULL); AG_TextboxBindUTF8(tb, vt->text, sizeof(vt->text)); bAlv = AG_BoxNewVertNS(vPane->div[1], AG_BOX_HFILL|AG_BOX_FRAME); AG_LabelNew(bAlv, 0, _("Alignment: ")); bAl = AG_BoxNewHorizNS(bAlv, AG_BOX_HFILL|AG_BOX_HOMOGENOUS); AG_ButtonNewFn(bAl, 0, _("TL"), SetAlign, "%p,%i", vt, VG_ALIGN_TL); AG_ButtonNewFn(bAl, 0, _("TC"), SetAlign, "%p,%i", vt, VG_ALIGN_TC); AG_ButtonNewFn(bAl, 0, _("TR"), SetAlign, "%p,%i", vt, VG_ALIGN_TR); bAl = AG_BoxNewHorizNS(bAlv, AG_BOX_HFILL|AG_BOX_HOMOGENOUS); AG_ButtonNewFn(bAl, 0, _("ML"), SetAlign, "%p,%i", vt, VG_ALIGN_ML); AG_ButtonNewFn(bAl, 0, _("MC"), SetAlign, "%p,%i", vt, VG_ALIGN_MC); AG_ButtonNewFn(bAl, 0, _("MR"), SetAlign, "%p,%i", vt, VG_ALIGN_MR); bAl = AG_BoxNewHorizNS(bAlv, AG_BOX_HFILL|AG_BOX_HOMOGENOUS); AG_ButtonNewFn(bAl, 0, _("BL"), SetAlign, "%p,%i", vt, VG_ALIGN_BL); AG_ButtonNewFn(bAl, 0, _("BC"), SetAlign, "%p,%i", vt, VG_ALIGN_BC); AG_ButtonNewFn(bAl, 0, _("BR"), SetAlign, "%p,%i", vt, VG_ALIGN_BR); AG_ButtonNewFn(vPane->div[1], AG_BUTTON_HFILL, _("Select font"), SelectFontDlg, "%p,%p", vt, vv); AG_CheckboxNewFlag(vPane->div[1], 0, _("Underline"), &vt->fontFlags, VG_TEXT_UNDERLINE); AG_CheckboxNewFlag(vPane->div[1], 0, _("Scale to view"), &vt->fontFlags, VG_TEXT_SCALED); return (box); }
static void * Edit(void *p, VG_View *vv) { VG_TextTool *t = p; AG_Box *box = AG_BoxNewVert(NULL, AG_BOX_EXPAND); AG_Textbox *tb; AG_LabelNew(box, 0, _("Text: ")); tb = AG_TextboxNewS(box, AG_TEXTBOX_MULTILINE|AG_TEXTBOX_HFILL, NULL); AG_TextboxBindUTF8(tb, t->text, sizeof(t->text)); return (box); }
AG_Box *AGOL_About::CreateTopBox(void *parent) { AG_Box *tbox; AG_Box *box; AG_Label *label; AG_DataSource *pngdata; AG_AgarVersion agv; tbox = AG_BoxNewHoriz(parent, 0); box = AG_BoxNewHoriz(tbox, 0); if((pngdata = AG_OpenConstCore(icon_odalaunch_96, sizeof(icon_odalaunch_96))) != NULL) { AG_PixmapFromSurface(box, AG_PIXMAP_EXPAND, AG_ReadSurfaceFromPNG(pngdata)); AG_CloseDataSource(pngdata); } box = AG_BoxNewVert(tbox, AG_BOX_HFILL); label = AG_LabelNewS(box, AG_LABEL_HFILL, "The Odamex Launcher"); AG_LabelJustify(label, AG_TEXT_CENTER); label = AG_LabelNewS(box, AG_LABEL_HFILL, "Copyright (C) 2010-2012 by The Odamex Team"); AG_LabelJustify(label, AG_TEXT_CENTER); label = AG_LabelNew(box, AG_LABEL_HFILL, "Version %d.%d.%d - Protocol Version %d", VERSIONMAJOR(VERSION), VERSIONMINOR(VERSION), VERSIONPATCH(VERSION), PROTOCOL_VERSION); AG_LabelJustify(label, AG_TEXT_CENTER); label = AG_LabelNewS(box, AG_LABEL_HFILL, "http://www.odamex.net"); AG_LabelJustify(label, AG_TEXT_CENTER); AG_GetVersion(&agv); label = AG_LabelNew(parent, AG_LABEL_HFILL, "Built with Agar, Version %d.%d.%d", agv.major, agv.minor, agv.patch); AG_LabelJustify(label, AG_TEXT_CENTER); label = AG_LabelNew(parent, AG_LABEL_HFILL, "(%s)", agv.release); AG_LabelJustify(label, AG_TEXT_CENTER); return tbox; }
AG_Box *AGOL_About::CreateTopBox(void *parent) { AG_Box *tbox; AG_Box *box; AG_Label *label; SDL_Surface *sf; AG_AgarVersion agv; tbox = AG_BoxNewHoriz(parent, 0); box = AG_BoxNewHoriz(tbox, 0); sf = IMG_Load_RW(SDL_RWFromConstMem(icon_odalaunch_96, sizeof(icon_odalaunch_96)), 1); if(sf) AG_PixmapFromSurface(box, AG_PIXMAP_EXPAND, AG_SurfaceFromSDL(sf)); box = AG_BoxNewVert(tbox, 0); label = AG_LabelNewS(box, AG_LABEL_HFILL, "The Odamex Launcher"); AG_LabelJustify(label, AG_TEXT_CENTER); label = AG_LabelNewS(box, AG_LABEL_HFILL, "Copyright (C) 2010 by The Odamex Team"); AG_LabelJustify(label, AG_TEXT_CENTER); label = AG_LabelNew(box, AG_LABEL_HFILL, "Version %d.%d.%d - Protocol Version %d", VERSIONMAJOR(VERSION), VERSIONMINOR(VERSION), VERSIONPATCH(VERSION), PROTOCOL_VERSION); AG_LabelJustify(label, AG_TEXT_CENTER); label = AG_LabelNewS(box, AG_LABEL_HFILL, "http://www.odamex.net"); AG_LabelJustify(label, AG_TEXT_CENTER); AG_GetVersion(&agv); label = AG_LabelNew(parent, AG_LABEL_HFILL, "Built with Agar, Version %d.%d.%d", agv.major, agv.minor, agv.patch); AG_LabelJustify(label, AG_TEXT_CENTER); label = AG_LabelNew(parent, AG_LABEL_HFILL, "(%s)", agv.release); AG_LabelJustify(label, AG_TEXT_CENTER); return tbox; }
void osdInitIntroWindow() { AG_Window *w = osdNewWindow("Welcome to Gravit!"); AG_Box *vBox = AG_BoxNewVert(w, 0); AG_Box *hBox = AG_BoxNewHoriz(w, 0); AG_Label *text; AG_BoxSetSpacing(vBox, 10); text = AG_LabelNew(vBox, 0, 0); AG_LabelText(text, "Gravit is a free, visually stunning gravity simulator, where you can spend endless\ntime experimenting with various configurations of simulated universes.\n\nQuick Start:\n\n - Click on RESPAWN to start a new simulation.\n - Click on PLAY to replay a recording\n - Click on RECORD to resume recording\n - Hold down a mouse button and move it around to change your perspective.\n - Use the A and Z keys, or the scroll wheel to zoom in and out.\n"); AG_WidgetSetSize(text, 200, 100); // AG_Checkbox *showAgain = AG_CheckboxNew(vBox, AG_CHECKBOX_SET, "Show this window on startup"); AG_ButtonNewFn(hBox, 0, " OK ", AG_WindowCloseGenEv, "%p", w); AG_WindowShow(w); }
static void Fadein(AG_Event *event) { char path[AG_PATHNAME_MAX]; AG_Window *win; win = AG_WindowNew(AG_WINDOW_FADEIN); AG_WindowSetFadeIn(win, 1.0f, 0.1f); if (!AG_ConfigFile("load-path", "agar", "bmp", path, sizeof(path))) { AG_PixmapFromBMP(win, 0, path); } AG_LabelNew(win, 0, "Testing AG_WINDOW_FADEIN"); AG_ButtonNewFn(win, AG_BUTTON_HFILL, "Close window", AGWINDETACH(win)); AG_WindowShow(win); }
static void ConfigMenuBright(struct gui_disp *cfg, AG_NotebookTab *parent) { AG_Slider *slider; AG_Box *box; AG_Box *vbox; AG_Label *lbl; lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("Bright")); // slider = AG_SliderNewFltR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &fBright0, 0.0f, 1.0f); slider = AG_SliderNew(AGWIDGET(parent), AG_SLIDER_HORIZ, AG_SLIDER_HFILL); AG_SetUint16(slider, "value", cfg->nBrightness); AG_SetUint16(slider, "min", 0); AG_SetUint16(slider, "max", 255); #ifdef USE_OPENGL AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeBright, "%p", cfg); #endif /* USE_OPENGL */ box = AG_BoxNewHoriz(AGWIDGET(parent), AG_BOX_HFILL); }
static int TestGUI(void *obj, AG_Window *win) { char path[AG_PATHNAME_MAX]; AG_Slider *sl; AG_Box *hb; hb = AG_BoxNewHoriz(win, AG_BOX_HFILL); if (!AG_ConfigFile("load-path", "agar", "bmp", path, sizeof(path))) { AG_PixmapFromBMP(hb, 0, path); AG_PixmapFromBMP(hb, 0, path); AG_PixmapFromBMP(hb, 0, path); } hb = AG_BoxNewHoriz(win, AG_BOX_HFILL); { AG_LabelNew(hb, 0, "Window Opacity: "); sl = AG_SliderNewFlt(hb, AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &opval, &opmin, &opmax); AG_SetEvent(sl, "slider-changed", Changed, "%p", win); } AG_ButtonNewFn(win, AG_BUTTON_HFILL, "Test AG_WINDOW_FADEIN", Fadein, NULL); return (0); }
static void CreateWindow(void) { AG_Window *win; AG_Label *lbl; AG_Console *cons; win = AG_WindowNew(0); AG_WindowSetCaption(win, "Agar keyboard events demo"); lbl = AG_LabelNew(win, AG_LABEL_HFILL, "Agar keyboard events demo"); AG_LabelJustify(lbl, AG_TEXT_CENTER); AG_SeparatorNewHoriz(win); cons = AG_ConsoleNew(win, AG_CONSOLE_EXPAND); AG_ConsoleMsg(cons, "Press any key..."); /* * Attach our event handler function to both keydown and keyup * events of the Window object. Note that we could have used * any other object derived from the Widget class. */ AG_SetEvent(win, "key-down", MyKeyboardHandler, "%p", cons); AG_SetEvent(win, "key-up", MyKeyboardHandler, "%p", cons); /* * Enable reception of keydown/keyup events by the window, regardless * of whether it is currently focused or not. */ AGWIDGET(win)->flags |= AG_WIDGET_UNFOCUSED_KEYUP; AGWIDGET(win)->flags |= AG_WIDGET_UNFOCUSED_KEYDOWN; AG_ButtonNewFn(win, AG_BUTTON_HFILL, "Quit", Quit, NULL); AG_WindowShow(win); AG_WindowSetGeometryAlignedPct(win, AG_WINDOW_MC, 30, 30); }
static void CreateTestWindow(AG_Event *event) { MyTestInstance *ti = AG_PTR(1); AG_Window *winParent = AG_PTR(2); AG_Window *win; if ((win = AG_WindowNew(ti->testFlags)) == NULL) { TestMsg(ti, "AG_WindowNew() failed: %s", AG_GetError()); return; } AG_WindowSetCaption(win, "Test window"); AG_LabelNewS(win, 0, "This is a test window"); AG_LabelNew(win, 0, "Flags = 0x%x", ti->testFlags); AG_ButtonNewFn(win, AG_BUTTON_HFILL, "Close this window", AGWINDETACH(win)); AG_WindowAttach(winParent, win); if (ti->makeTransient) AG_WindowMakeTransient(winParent, win); if (ti->makePinned) AG_WindowPin(winParent, win); AG_WindowShow(win); }
static void VolumeMenu(AG_NotebookTab *parent, struct gui_sound *cfg) { AG_Slider *slider; AG_Box *box; AG_Box *vbox; AG_Label *lbl; lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("Main Volume")); slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->iTotalVolume), 0, 128); AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeTotalVolume, "%p", cfg); box = AG_BoxNewHoriz(AGWIDGET(parent), AG_BOX_HFILL); AG_WidgetSetSize(AGWIDGET(box), 320, 12); lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("PSG")); slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->nPSGVolume), -40, 12); AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg); lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("FM")); slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->nFMVolume), -40, 12); AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg); lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("BEEP")); slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->nBeepVolume), -35, 12); AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg); lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("CMT")); slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->nCMTVolume), -35, 6); AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg); lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("SFX")); slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->nWaveVolume), -35, 12); AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg); lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("Channel Separation")); slider = AG_SliderNewUint32R(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->uChSeparation), 0, 16); AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg); }
static AG_Window * DEV_ConfigWindow(AG_Config *cfg) { char path[AG_PATHNAME_MAX]; AG_Window *win; AG_Box *hb; AG_Textbox *tbox; /* AG_Checkbox *cb; */ AG_Notebook *nb; AG_NotebookTab *tab; if ((win = AG_WindowNewNamedS(0, "DEV_Config")) == NULL) { return (NULL); } AG_WindowSetCaptionS(win, _("Agar settings")); AG_WindowSetCloseAction(win, AG_WINDOW_DETACH); nb = AG_NotebookNew(win, AG_NOTEBOOK_HFILL|AG_NOTEBOOK_VFILL); tab = AG_NotebookAdd(nb, _("Video"), AG_BOX_VERT); { AG_NumericalNewIntR(tab, 0, "%", _("Screenshot quality: "), &agScreenshotQuality, 1, 100); } tab = AG_NotebookAdd(nb, _("GUI"), AG_BOX_VERT); { AG_CheckboxNewInt(tab, 0, _("Built-in key composition"), &agTextComposition); AG_CheckboxNewInt(tab, 0, _("Bidirectional"), &agTextBidi); AG_SeparatorNewHoriz(tab); AG_LabelNewS(tab, 0, _("Timer settings (milliseconds):")); AG_NumericalNewIntR(tab, 0, NULL, _("Double click delay: "), &agMouseDblclickDelay, 1, 10000); AG_NumericalNewIntR(tab, 0, NULL, _("Cursor spin delay: "), &agMouseSpinDelay, 1, 10000); AG_NumericalNewIntR(tab, 0, NULL, _("Cursor spin interval: "), &agMouseSpinIval, 1, 10000); AG_NumericalNewIntR(tab, 0, NULL, _("Key repeat delay: "), &agKbdDelay, 1, 1000); AG_NumericalNewIntR(tab, 0, NULL, _("Key repeat interval: "), &agKbdRepeat, 1, 500); } tab = AG_NotebookAdd(nb, _("Directories"), AG_BOX_VERT); { hb = AG_BoxNewHoriz(tab, AG_BOX_HFILL); tbox = AG_TextboxNewS(hb, AG_TEXTBOX_HFILL, _("Temporary file directory: ")); AG_GetString(agConfig, "tmp-path", path, sizeof(path)); AG_TextboxSetString(tbox, path); AG_SetEvent(tbox, "textbox-return", SetPath, "%s", "tmp-path"); AG_TextboxSizeHint(tbox, "XXXXXXXXXXXXXXXXXXXX"); AG_ButtonNewFn(hb, 0, "...", SelectPath, "%s,%p", "tmp-path", tbox); hb = AG_BoxNewHoriz(tab, AG_BOX_HFILL); tbox = AG_TextboxNewS(hb, AG_TEXTBOX_HFILL, _("Dataset save directory: ")); AG_GetString(agConfig, "save-path", path, sizeof(path)); AG_TextboxSetString(tbox, path); AG_SetEvent(tbox, "textbox-return", SetPath, "%s", "save-path"); AG_ButtonNewFn(hb, 0, "...", SelectPath, "%s,%p", "save-path", tbox); hb = AG_BoxNewHoriz(tab, AG_BOX_HFILL); tbox = AG_TextboxNewS(hb, AG_TEXTBOX_HFILL, _("Dataset search path: ")); AG_GetString(agConfig, "load-path", path, sizeof(path)); AG_TextboxSetString(tbox, path); AG_SetEvent(tbox, "textbox-return", SetPath, "%s", "load-path"); hb = AG_BoxNewHoriz(tab, AG_BOX_HFILL); tbox = AG_TextboxNewS(hb, AG_TEXTBOX_HFILL, _("Font search path: ")); AG_GetString(agConfig, "font-path", path, sizeof(path)); AG_TextboxSetString(tbox, path); AG_SetEvent(tbox, "textbox-return", SetPath, "%s", "font-path"); } #if 0 tab = AG_NotebookAdd(nb, _("Colors"), AG_BOX_VERT); { AG_Pane *hPane; AG_HSVPal *hsv; AG_Tlist *tl; AG_TlistItem *it; AG_Label *lbl; int i; hPane = AG_PaneNew(tab, AG_PANE_HORIZ, AG_PANE_EXPAND); { tl = AG_TlistNew(hPane->div[0], AG_TLIST_EXPAND); AG_TlistSizeHint(tl, "Tileview text background", 10); for (i = 0; i < LAST_COLOR; i++) { it = AG_TlistAdd(tl, NULL, _(agColorNames[i])); it->p1 = &agColors[i]; } hsv = AG_HSVPalNew(hPane->div[1], AG_HSVPAL_EXPAND); AG_SetEvent(hsv, "h-changed", SetColor, "%p", tl); AG_SetEvent(hsv, "sv-changed", SetColor, "%p", tl); AG_SetEvent(tl, "tlist-selected", BindSelectedColor, "%p", hsv); } lbl = AG_LabelNew(tab, 0, _("Warning: Some color changes will not " "take effect until %s is restarted."), agProgName); AG_LabelSetPaddingLeft(lbl, 10); AG_LabelSetPaddingRight(lbl, 10); hb = AG_BoxNewHoriz(tab, AG_BOX_HOMOGENOUS|AG_BOX_HFILL); { AG_ButtonNewFn(hb, 0, _("Load scheme"), LoadColorSchemeDlg, NULL); AG_ButtonNewFn(hb, 0, _("Save scheme"), SaveColorSchemeDlg, NULL); } } #endif #ifdef AG_DEBUG tab = AG_NotebookAdd(nb, _("Debug"), AG_BOX_VERT); { AG_NumericalNewIntR(tab, 0, NULL, _("Debug level: "), &agDebugLvl, 0, 255); } #endif hb = AG_BoxNewHoriz(win, AG_BOX_HOMOGENOUS|AG_BOX_HFILL); { AG_ButtonNewFn(hb, 0, _("Close"), AGWINDETACH(win)); AG_ButtonNewFn(hb, 0, _("Save"), SaveConfig, NULL); } return (win); }
int main(int argc, char *argv[]) { #ifdef HAVE_SDL AG_Window *win; SDL_Surface *screen, *bmp, *tex1, *tex2, *avatar; AG_Surface *agbmp, *agavatar; int c, useGL = 0; Uint32 sdlFlags = 0; char *optArg; Uint32 rmask, gmask, bmask, amask; if (AG_InitCore("agar-sdl-demo", 0) == -1) { fprintf(stderr, "AG_InitCore: %s\n", AG_GetError()); goto fail; } while ((c = AG_Getopt(argc, argv, "?g", &optArg, NULL)) != -1) { switch (c) { case 'g': useGL = 1; break; default: printf("Usage: %s [-g]\n", agProgName); break; } } /* Set up SDL */ if (SDL_Init(SDL_INIT_VIDEO) == -1) { fprintf(stderr, "SDL_Init: %s\n", SDL_GetError()); return (1); } if (useGL) { sdlFlags = SDL_RESIZABLE|SDL_OPENGL; } else { sdlFlags = SDL_RESIZABLE|SDL_SWSURFACE; } if ((screen = SDL_SetVideoMode(320, 240, 32, sdlFlags)) == NULL) { fprintf(stderr, "SDL_SetVideoMode: %s\n", SDL_GetError()); goto fail; } if (useGL) { /* Set up OpenGL viewport and projection. */ AG_GL_InitContext(AG_RECT(0,0,320,240)); } /* Initialize Agar-GUI to reuse display */ if (AG_InitVideoSDL(screen, 0) == -1) { fprintf(stderr, "%s\n", AG_GetError()); AG_Destroy(); goto fail; } AG_BindGlobalKey(AG_KEY_ESCAPE, AG_KEYMOD_ANY, AG_QuitGUI); /* Display some test widgets. */ win = AG_WindowNew(AG_WINDOW_PLAIN); AG_LabelNew(win, 0, "Attached to existing %s display", useGL ? "SDL/OpenGL" : "SDL"); /* Test conversion from SDL_Surface to AG_Surface. */ if ((bmp = SDL_LoadBMP("agar.bmp")) != NULL) { if ((agbmp = AG_SurfaceFromSDL(bmp)) != NULL) { AG_PixmapFromSurface(win, 0, agbmp); } else { AG_LabelNewS(win, 0, AG_GetError()); } } #ifdef HAVE_SDL_IMAGE if ((tex1 = IMG_Load("test1.png")) == NULL || (tex2 = IMG_Load("test2.png")) == NULL) { fprintf(stderr, "IMG_Load() failed\n"); goto fail; } # if SDL_BYTEORDER == SDL_BIG_ENDIAN rmask = 0xff000000; gmask = 0x00ff0000; bmask = 0x0000ff00; amask = 0x000000ff; # else rmask = 0x000000ff; gmask = 0x0000ff00; bmask = 0x00ff0000; amask = 0xff000000; # endif avatar = SDL_CreateRGBSurface(SDL_SWSURFACE|SDL_SRCALPHA, 64, 128, tex1->format->BitsPerPixel, rmask, gmask, bmask, amask); SDL_SetAlpha(tex1, 0, 0); SDL_BlitSurface(tex1, NULL, avatar, NULL); SDL_SetAlpha(tex2, SDL_SRCALPHA, 0); SDL_BlitSurface(tex2, NULL, avatar, NULL); if ((agavatar = AG_SurfaceFromSDL(avatar)) != NULL) { AG_PixmapFromSurface(win, 0, agavatar); } else { AG_LabelNewS(win, 0, AG_GetError()); } #endif /* HAVE_SDL_IMAGE */ AG_WindowShow(win); AG_EventLoop(); AG_Destroy(); SDL_Quit(); return (0); fail: SDL_Quit(); return (1); #else fprintf(stderr, "Agar was compiled without SDL support\n"); return (1); #endif /* HAVE_SDL */ }
static int TestGUI(void *obj, AG_Window *win) { char path[AG_PATHNAME_MAX]; AG_Surface *su, *su2; /* Load, display and save a PNG file. */ AG_LabelNewS(win, 0, "Loading agar.png:"); if (!AG_ConfigFile("load-path", "agar", "png", path, sizeof(path))) { if ((su = AG_SurfaceFromPNG(path)) == NULL) { AG_LabelNew(win, 0, "%s: %s", path, AG_GetError()); } else { AG_PixmapFromSurface(win, 0, su); } AG_LabelNewS(win, 0, "Saving agar.png:"); if (AG_SurfaceExportPNG(su, "agar-save.png") == -1) { AG_LabelNew(win, 0, "Save failed: %s", AG_GetError()); } else { if ((su2 = AG_SurfaceFromPNG("agar-save.png")) == NULL) { AG_LabelNew(win, 0, "Load failed: %s", AG_GetError()); } else { AG_PixmapFromSurface(win, 0, su2); } } } else { AG_LabelNewS(win, 0, AG_GetError()); } /* Load/save a PNG file in indexed color format. */ AG_LabelNewS(win, 0, "Loading agar-index.png:"); if (!AG_ConfigFile("load-path", "agar-index", "png", path, sizeof(path))) { if ((su = AG_SurfaceFromPNG(path)) == NULL) { AG_LabelNew(win, 0, "Failed: %s", AG_GetError()); } else { AG_PixmapFromSurface(win, 0, su); } AG_LabelNewS(win, 0, "Saving agar-index.png:"); if (AG_SurfaceExportPNG(su, "agar-index-save.png") == -1) { AG_LabelNew(win, 0, "Save failed: %s", AG_GetError()); } else { if ((su2 = AG_SurfaceFromPNG("agar-index-save.png")) == NULL) { AG_LabelNew(win, 0, "Load failed: %s", AG_GetError()); } else { AG_PixmapFromSurface(win, 0, su2); } } } else { AG_LabelNewS(win, 0, AG_GetError()); } /* Load/save a JPEG file. */ AG_LabelNewS(win, 0, "Loading pepe.jpg:"); if (!AG_ConfigFile("load-path", "pepe", "jpg", path, sizeof(path))) { if ((su = AG_SurfaceFromJPEG(path)) == NULL) { AG_LabelNew(win, 0, "Failed: %s", AG_GetError()); } else { AG_PixmapFromSurface(win, 0, su); } AG_LabelNewS(win, 0, "Saving pepe.jpg:"); if (AG_SurfaceExportJPEG(su, "pepe-save.jpg") == -1) { AG_LabelNew(win, 0, "Save failed: %s", AG_GetError()); } else { if ((su2 = AG_SurfaceFromJPEG("pepe-save.jpg")) == NULL) { AG_LabelNew(win, 0, "Load failed: %s", AG_GetError()); } else { AG_PixmapFromSurface(win, 0, su2); } } } else { AG_LabelNewS(win, 0, AG_GetError()); } return (0); }
static void TestDesktopAlign(AG_Event *event) { AG_Window *winParent = AG_PTR(1); AG_Window *win; int i; for (i = 0; i < 2; i++) { if ((win = AG_WindowNew(0))) { AG_WindowSetCaption(win, "Auto%d", i); AG_LabelNew(win, 0, "Autopositioned #%d", i); AG_LabelNewS(win, 0, "(AG_WINDOW_ALIGNMENT_NONE)"); AG_WindowAttach(winParent, win); AG_WindowMakeTransient(winParent, win); AG_WindowShow(win); } if ((win = AG_WindowNew(0))) { AG_WindowSetCaption(win, "TL%d", i); AG_LabelNew(win, 0, "Top Left #%d", i); AG_LabelNewS(win, 0, "(AG_WINDOW_TL)"); AG_WindowSetPosition(win, AG_WINDOW_TL, 1); AG_WindowAttach(winParent, win); AG_WindowMakeTransient(winParent, win); AG_WindowShow(win); } if ((win = AG_WindowNew(0))) { AG_WindowSetCaption(win, "TC%d", i); AG_LabelNew(win, 0, "Top Center #%d", i); AG_LabelNewS(win, 0, "(AG_WINDOW_TC)"); AG_WindowSetPosition(win, AG_WINDOW_TC, 1); AG_WindowAttach(winParent, win); AG_WindowMakeTransient(winParent, win); AG_WindowShow(win); } if ((win = AG_WindowNew(0))) { AG_WindowSetCaption(win, "TR%d", i); AG_LabelNew(win, 0, "Top Right #%d", i); AG_LabelNewS(win, 0, "(AG_WINDOW_TR)"); AG_WindowSetPosition(win, AG_WINDOW_TR, 1); AG_WindowAttach(winParent, win); AG_WindowMakeTransient(winParent, win); AG_WindowShow(win); } if ((win = AG_WindowNew(0))) { AG_WindowSetCaption(win, "MC%d", i); AG_LabelNew(win, 0, "Center #%d", i); AG_LabelNewS(win, 0, "(AG_WINDOW_MC)"); AG_WindowSetPosition(win, AG_WINDOW_MC, 1); AG_WindowAttach(winParent, win); AG_WindowMakeTransient(winParent, win); AG_WindowShow(win); } if ((win = AG_WindowNew(0))) { AG_WindowSetCaption(win, "BL%d", i); AG_LabelNew(win, 0, "Bottom Left #%d", i); AG_LabelNewS(win, 0, "(AG_WINDOW_BL)"); AG_WindowSetPosition(win, AG_WINDOW_BL, 1); AG_WindowAttach(winParent, win); AG_WindowMakeTransient(winParent, win); AG_WindowShow(win); } if ((win = AG_WindowNew(0))) { AG_WindowSetCaption(win, "BR%d", i); AG_LabelNew(win, 0, "Bottom Right #%d", i); AG_LabelNewS(win, 0, "(AG_WINDOW_BR)"); AG_WindowSetPosition(win, AG_WINDOW_BR, 1); AG_WindowAttach(winParent, win); AG_WindowMakeTransient(winParent, win); AG_WindowShow(win); } if ((win = AG_WindowNew(0))) { AG_WindowSetCaption(win, "BC%d", i); AG_LabelNew(win, 0, "Bottom Center #%d", i); AG_LabelNewS(win, 0, "(AG_WINDOW_BC)"); AG_WindowSetPosition(win, AG_WINDOW_BC, 1); AG_WindowAttach(winParent, win); AG_WindowMakeTransient(winParent, win); AG_WindowShow(win); } } AG_LabelNewS(winParent, 0, "OK"); }