AG_Button *AGOL_About::CreateOKButton(void *parent) { AG_Box *bbox; AG_Button *button; bbox = AG_BoxNewHoriz(parent, AG_BOX_HFILL); // This empty box positions the button to the right AG_BoxNewHoriz(bbox, AG_BOX_HFILL); button = AG_ButtonNewFn(bbox, 0, " OK ", EventReceiver, "%p", RegisterEventHandler((EVENT_FUNC_PTR)&AGOL_About::OnOK)); return button; }
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); text = AG_TextboxNewS(lbox, AG_TEXTBOX_MULTILINE | AG_TEXTBOX_EXPAND, ""); AG_TextboxSetWordWrap(text, true); AG_TextboxSetString(text, "This program is free software; you can redistribute it" " and/or modify it under the terms of the GNU General" " Public License as published by the Free Software" " Foundation; either version 2 of the License, or (at your" " option) any later version.\n\n" "This program is distributed in the hope that it will be" " useful, but WITHOUT ANY WARRANTY; without even the" " implied warranty of MERCHANTABILITY or FITNESS FOR" " A PARTICULAR PURPOSE. See the GNU General Public" " License for more details."); return lbox; }
AG_Box *AGOL_Settings::CreateMainButtonBox(void *parent) { AG_Box *bbox; bbox = AG_BoxNewHoriz(parent, AG_BOX_HFILL); // This empty box positions the buttons to the right AG_BoxNewHoriz(bbox, AG_BOX_HFILL); AG_ButtonNewFn(bbox, 0, "Cancel", EventReceiver, "%p", RegisterEventHandler((EVENT_FUNC_PTR)&AGOL_Settings::OnCancel)); AG_ButtonNewFn(bbox, 0, " OK ", EventReceiver, "%p", RegisterEventHandler((EVENT_FUNC_PTR)&AGOL_Settings::OnOK)); return bbox; }
void osdInitPlaybackWindow() { AG_Box *box; view.playbackWindow = osdNewWindow("Quick Controls"); box = AG_BoxNewHoriz(view.playbackWindow, AG_BOX_EXPAND); // The labels for Record and Pause are the "longest legnth" versions of the // state of the button, so that no button resizing is necessary. AG_ButtonNewFn(box, 0, "Respawn", osdHandleRespawn, 0); AG_SpacerNewVert(box); view.recordButton = AG_ButtonNewFn(box, 0, "Record", osdHandleRecord, 0); AG_ButtonNewFn(box, 0, "<<", osdHandleFirst, 0); AG_ButtonNewFn(box, AG_BUTTON_REPEAT, "<", osdHandlePrev, 0); view.playButton = AG_ButtonNewFn(box, 0, "Pause", osdHandlePlay, 0); AG_ButtonNewFn(box, AG_BUTTON_REPEAT, ">", osdHandleNext, 0); AG_ButtonNewFn(box, 0, ">>", osdHandleLast, 0); AG_SpacerNewVert(box); AG_ButtonNewFn(box, 0, "Quit", osdHandleQuit, 0); AG_WindowSetPosition(view.playbackWindow, AG_WINDOW_TR, 0); AG_WindowShow(view.playbackWindow); osdUpdate(); }
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); }
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); }
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; }
AG_Box *AGOL_Settings::CreateTopOptionsBox(void *parent) { AG_Box *tbox = AG_BoxNewHoriz(parent, AG_BOX_HFILL | AG_BOX_HOMOGENOUS); AG_BoxSetPadding(tbox, 0); AG_BoxSetSpacing(tbox, 0); return tbox; }
AG_Box *AGOL_About::CreateDevBox(void *parent) { AG_Box *dbox; AG_Label *label; dbox = AG_BoxNewVert(parent, AG_BOX_HFILL); AG_LabelNewS(dbox, 0, "Developed by"); dbox = AG_BoxNewHoriz(dbox, AG_BOX_EXPAND); AG_BoxSetPadding(dbox, 5); AG_BoxSetSpacing(dbox, 5); dbox = AG_BoxNewHoriz(dbox, AG_BOX_FRAME | AG_BOX_EXPAND); label = AG_LabelNewS(dbox, AG_LABEL_EXPAND, "Michael Wood (mailto:[email protected])\n" "Russell Rice (mailto:[email protected])"); AG_LabelJustify(label, AG_TEXT_CENTER); return dbox; }
AG_Box *AGOL_Settings::CreateExtraCmdParamsBox(void *parent) { AG_Box *ecpbox; ecpbox = AG_BoxNewVert(parent, AG_BOX_HFILL | AG_BOX_FRAME); AG_LabelNewS(ecpbox, 0, "Extra command line arguments"); ecpbox = AG_BoxNewHoriz(ecpbox, AG_BOX_HFILL); AG_BoxSetPadding(ecpbox, 5); AG_BoxSetSpacing(ecpbox, 5); return ecpbox; }
AG_Box *AGOL_Settings::CreateWadDirConfigBox(void *parent) { AG_Box *wdbox; wdbox = AG_BoxNewVert(parent, AG_BOX_FRAME); AG_LabelNewS(wdbox, 0, "Wad Directories"); wdbox = AG_BoxNewHoriz(wdbox, 0); AG_BoxSetPadding(wdbox, 5); AG_BoxSetSpacing(wdbox, 5); return wdbox; }
AG_Box *AGOL_Settings::CreateOdamexPathBox(void *parent) { AG_Box *opbox; opbox = AG_BoxNewVert(parent, AG_BOX_HFILL | AG_BOX_FRAME); AG_LabelNewS(opbox, 0, "Odamex Path"); opbox = AG_BoxNewHoriz(opbox, AG_BOX_HFILL); AG_BoxSetPadding(opbox, 5); AG_BoxSetSpacing(opbox, 5); return opbox; }
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; }
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); }
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 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); }
ODA_GuiOptionsBox *AGOL_Settings::CreateGuiOptionsBox(void *parent) { char drvList[128]; AG_Box *vdbox; ODA_GuiOptionsBox *gbox = new ODA_GuiOptionsBox; gbox->optionsBox = AG_BoxNewVert(parent, AG_BOX_FRAME); AG_LabelNewS(gbox->optionsBox, 0, "Gui Options"); gbox->optionsBox = AG_BoxNewVert(gbox->optionsBox, AG_BOX_EXPAND); AG_BoxSetPadding(gbox->optionsBox, 5); AG_BoxSetSpacing(gbox->optionsBox, 5); // Video Driver Option vdbox = AG_BoxNewHoriz(gbox->optionsBox, AG_BOX_HFILL); AG_BoxSetPadding(vdbox, 0); AG_BoxSetSpacing(vdbox, 0); gbox->driverLabel = AG_LabelNewS(vdbox, 0, "Video Driver: "); gbox->driverCombo = AG_UComboNew(vdbox, AG_UCOMBO_HFILL); AG_UComboSizeHint(gbox->driverCombo, "XXXXXXXXXXXX", 3); AG_ListDriverNames(drvList, 128); if(strlen(drvList) > 0) { size_t oldpos = 0; size_t pos = 0; while(pos != string::npos) { AG_TlistItem *item; pos = string(drvList).find(' ', oldpos); item = AG_TlistAdd(gbox->driverCombo->list, NULL, string(drvList).substr(oldpos, pos - oldpos).c_str()); if(string(item->text) == string(agDriverOps->name)) AG_ButtonTextS(gbox->driverCombo->button, item->text); oldpos = pos + 1; } } // End - Video Driver Option return gbox; }
static void SelectFontDlg(AG_Event *event) { VG_Text *vt = AG_PTR(1); VG_View *vv = AG_PTR(2); AG_Window *win, *winParent; AG_FontSelector *fs; AG_Box *hBox; win = AG_WindowNew(0); AG_WindowSetCaptionS(win, _("Font selection")); fs = AG_FontSelectorNew(win, AG_FONTSELECTOR_EXPAND); hBox = AG_BoxNewHoriz(win, AG_BOX_HFILL|AG_BOX_HOMOGENOUS); AG_ButtonNewFn(hBox, 0, _("OK"), SelectFont, "%p,%p,%p", vt, win, fs); AG_ButtonNewFn(hBox, 0, _("Close"), AG_WindowCloseGenEv, "%p", win); AG_WindowShow(win); if ((winParent = AG_ParentWindow(vv)) != NULL) AG_WindowAttach(winParent, 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); }
void OnConfigDisplayMenu(AG_Event *event) { AG_MenuItem *self = (AG_MenuItem *)AG_SELF(); AG_Window *win; AG_Notebook *note; AG_Notebook *note2; AG_NotebookTab *tab; AG_NotebookTab *tab2; AG_Box *box; AG_Button *btn; struct gui_disp *cfg; int i, num; cfg = (struct gui_disp *)malloc(sizeof(struct gui_disp)); if(cfg == NULL) return; { LockVM(); cfg->nDrawFPS = configdat.nDrawFPS; cfg->nEmuFPS = configdat.nEmuFPS; cfg->nBrightness = configdat.nBrightness; cfg->nRenderMethod = configdat.nRenderMethod; cfg->uWidth = configdat.uWidth; cfg->uHeight = configdat.uHeight; cfg->bFullScan = configdat.bFullScan; cfg->bFullScanFS = configdat.bFullScanFS; cfg->bSmoosing = configdat.bSmoosing; cfg->bUseSIMD = configdat.bUseSIMD; #ifdef _USE_OPENCL cfg->bUseOpenCL = configdat.bUseOpenCL; cfg->nCLGlobalWorkThreads = configdat.nCLGlobalWorkThreads; cfg->bCLSparse = configdat.bCLSparse; cfg->nCLDeviceNum = configdat.nCLDeviceNum; cfg->nCLPlatformNum = configdat.nCLPlatformNum; cfg->bCLInteropGL = configdat.bCLInteropGL; for(i = 0; i <= 8; i++) cfg->sDeviceName[i] = NULL; if(cldraw == NULL) { num = 8; } else { num = cldraw->GetDevices(); } if(num >= 8) num = 8; if(num <= 0) num = 0; for(i = 0; i < num; i++) { cfg->sDeviceName[i] = malloc(96 * sizeof(char)); cfg->sDeviceName[i][0] = '\0'; if(cldraw == NULL) { snprintf(cfg->sDeviceName[i], 94, "Processor #%d", i); } else { char sName[64]; char sType[16]; cldraw->GetDeviceName(sName, 64, i); cldraw->GetDeviceType(sType, 16, i); snprintf(cfg->sDeviceName[i], 94, "%s(%s)", sType, sName); } } cfg->sDeviceName[8] = NULL; #endif UnlockVM(); } win= AG_WindowNew(DIALOG_WINDOW_DEFAULT); note = AG_NotebookNew(AGWIDGET(win), AG_NOTEBOOK_HFILL); { tab = AG_NotebookAddTab(note, gettext("Screen"), AG_BOX_HORIZ); OnConfigMenuScreen(cfg, tab); #ifdef USE_OPENGL tab = AG_NotebookAddTab(note, gettext("Display"), AG_BOX_HORIZ); ConfigMenuBright(cfg, tab); #endif /* USE_OPENGL */ #ifdef _USE_OPENCL tab = AG_NotebookAddTab(note, gettext("OpenCL"), AG_BOX_HORIZ); ConfigMenuOpenCL(cfg, tab); #endif /* USE_OPENGL */ } box = AG_BoxNewHoriz(AGWIDGET(win), AG_BOX_HFILL); AG_WidgetSetSize(AGWIDGET(box), 320, 24); { AG_Box *vbox; vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL); btn = AG_ButtonNewFn(AGWIDGET(box), 0, gettext("OK"), OnConfigApplyDisp, "%p", cfg); vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL); AG_WidgetSetSize(AGWIDGET(vbox), 80, 24); vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL); btn = AG_ButtonNewFn(AGWIDGET(box), 0, gettext("Cancel"), OnPushCancel2, "%p", cfg); } AG_SetEvent(win, "window-close", OnPushCancel2, "%p", cfg); AG_WindowSetCaption(win, gettext("Display")); AG_WindowShow(win); }
static void OnConfigMenuScreen(struct gui_disp *cfg, AG_NotebookTab *parent) { AG_Radio *radio; AG_Checkbox *check; AG_Numerical *fps; AG_Box *box; AG_Box *box2; AG_Combo *combo; AG_TlistItem *TlistItem[RENDERING_END]; int i; int limit; box = AG_BoxNewHoriz(AGWIDGET(parent), AG_BOX_VFILL); { radio = AG_RadioNewFn(AGWIDGET(box), 0, ScreenSizeName, OnChangeScreenReso, "%p", cfg); limit = sizeof(ScreenSizeHeight) / sizeof(WORD); for(i = 0; i <= limit; i++){ if((ScreenSizeWidth[i] == cfg->uWidth) && (ScreenSizeHeight[i] == cfg->uHeight)) break; } if(i >= limit) i = 2; AG_SetInt(radio, "value", i); box = AG_BoxNewVert(AGWIDGET(parent), AG_BOX_HFILL); fps = AG_NumericalNewS(AGWIDGET(box), AG_NUMERICAL_HFILL, NULL ,gettext("Display rate")); AG_BindUint16(fps, "value", &(cfg->nDrawFPS)); { AG_SetInt(fps, "min", 2); AG_SetInt(fps, "max", 75); AG_SetInt(fps, "inc", 1); } fps = AG_NumericalNewS(AGWIDGET(box), AG_NUMERICAL_HFILL, NULL ,gettext("Emulation rate")); AG_BindUint16(fps, "value", &(cfg->nEmuFPS)); { AG_SetInt(fps, "min", 2); AG_SetInt(fps, "max", 75); AG_SetInt(fps, "inc", 1); } box2 = AG_BoxNewHoriz(AGWIDGET(box), AG_BOX_HFILL); combo = AG_ComboNewS(AGWIDGET(box2), AG_COMBO_SCROLLTOSEL | AG_COMBO_HFILL, gettext("Rendering Method")); AG_ComboSizeHint(combo, "XXXXXXXXXXXXXX", RENDERING_END); TlistItem[0] = AG_TlistAddPtrHead(combo->list, NULL, gettext("Full Draw"), (void *)&RenderMethodsList[0]); TlistItem[1] = AG_TlistAddPtr(combo->list, NULL, gettext("Diff Block"), (void *)&RenderMethodsList[1]); TlistItem[2] = AG_TlistAddPtr(combo->list, NULL, gettext("Diff Raster"), (void *)&RenderMethodsList[2]); for(i = RENDERING_FULL; i < RENDERING_END; i++) { if(i == cfg->nRenderMethod) { AG_ComboSelect(combo, TlistItem[i]); } } AG_SetEvent(combo, "combo-selected", RenderMethodSelected, "%p", cfg); box2 = AG_BoxNewHoriz(AGWIDGET(box), AG_BOX_HFILL); check = AG_CheckboxNewInt(AGWIDGET(box2), AG_CHECKBOX_HFILL, gettext("Full Scan (15KHz)"), &(cfg->bFullScan)); box2 = AG_BoxNewHoriz(AGWIDGET(box), AG_BOX_HFILL); check = AG_CheckboxNewInt(AGWIDGET(box2), AG_CHECKBOX_HFILL, gettext("SMOOSING"), &(cfg->bSmoosing)); box2 = AG_BoxNewHoriz(AGWIDGET(box), AG_BOX_HFILL); check = AG_CheckboxNewInt(AGWIDGET(box2), AG_CHECKBOX_HFILL, gettext("Use OpenCL(Need REBOOT)"), &(cfg->bUseOpenCL)); box2 = AG_BoxNewHoriz(AGWIDGET(box), AG_BOX_HFILL); check = AG_CheckboxNewInt(AGWIDGET(box2), AG_CHECKBOX_HFILL, gettext("Use SIMD instructions(Need REBOOT)"), &(cfg->bUseSIMD)); } }
void OnConfigSoundMenu(AG_Event *event) { AG_MenuItem *self = (AG_MenuItem *)AG_SELF(); AG_Window *win; AG_Notebook *note; AG_Notebook *note2; AG_NotebookTab *tab; AG_NotebookTab *tab2; AG_Box *box; AG_Button *btn; struct gui_sound *cfg; cfg = malloc(sizeof(struct gui_sound)); if(cfg == NULL) return; { cfg->iTotalVolume = configdat.iTotalVolume; cfg->nFMVolume = configdat.nFMVolume; cfg->nPSGVolume = configdat.nPSGVolume; cfg->nBeepVolume = configdat.nBeepVolume; cfg->nCMTVolume = configdat.nCMTVolume; cfg->nWaveVolume = configdat.nWaveVolume; cfg->uChSeparation = configdat.uChSeparation; cfg->nSampleRate = configdat.nSampleRate; cfg->nSoundBuffer = configdat.nSoundBuffer; cfg->nBeepFreq = configdat.nBeepFreq; cfg->bFMHQmode = configdat.bFMHQmode; cfg->nStereoOut = configdat.nStereoOut; cfg->bTapeMon = configdat.bTapeMon; cfg->bOPNEnable = configdat.bOPNEnable; cfg->bWHGEnable = configdat.bWHGEnable; cfg->bTHGEnable = configdat.bTHGEnable; #ifdef FDDSND cfg->bFddSound = configdat.bFddSound; #endif } win= AG_WindowNew(DIALOG_WINDOW_DEFAULT); note = AG_NotebookNew(AGWIDGET(win), AG_NOTEBOOK_HFILL); { tab = AG_NotebookAddTab(note, gettext("Volume"), AG_BOX_VERT); VolumeMenu(tab, cfg); tab = AG_NotebookAddTab(note, gettext("Rendering"), AG_BOX_HORIZ); SoundMenu(tab, cfg); tab = AG_NotebookAddTab(note, gettext("Misc"), AG_BOX_HORIZ); SoundMenu2(tab, cfg); } box = AG_BoxNewHoriz(AGWIDGET(win), AG_BOX_HFILL); AG_WidgetSetSize(AGWIDGET(box), 320, 24); { AG_Box *vbox; vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL); btn = AG_ButtonNewFn(AGWIDGET(box), 0, gettext("OK"), OnConfigApplySound, "%p", cfg); vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL); AG_WidgetSetSize(AGWIDGET(vbox), 80, 24); vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL); btn = AG_ButtonNewFn(AGWIDGET(box), 0, gettext("Cancel"), OnPushCancel2, "%p", cfg); } AG_SetEvent(win, "window-close", OnPushCancel2, "%p", cfg); AG_WindowSetCaption(win, gettext("Sound Preferences")); AG_WindowShow(win); }
MenuOptions::MenuOptions(): speed_(CONFIG->speed()), visible_presumption_(CONFIG->visible_presumption()), fullscreen_(CONFIG->fullscreen()), sound_(CONFIG->sound()){ AG_Box * item; // nadpis createHeading("Options"); // jazyk item = createItem("Language"); // TODO u combo // klavesy item = createItem("Controls"); AG_SetEvent(item, "window-mousebuttondown", MenuOptionsControls::create, 0); // rychlost hry item = createItemHoriz("Game speed"); AG_AddEvent(items_.back(), "window-keydown", handlerIntItem, "%p,%i,%i", &speed_, CONFIG_SPEED_MIN, CONFIG_SPEED_MAX); AG_NumericalNewIntR(item, 0, 0, 0, &speed_, CONFIG_SPEED_MIN, CONFIG_SPEED_MAX); // viditelna presumpce item = createItemHoriz("Explosion presumptions"); AG_AddEvent(items_.back(), "window-keydown", handlerBoolItem, "%p", &visible_presumption_); item = AG_BoxNewHoriz(item, AG_BOX_HOMOGENOUS | AG_BOX_HFILL); AG_BoxSetPadding(item, 0); AG_SpacerNewVert(item); AG_CheckboxNewInt(item, 0, " ", &visible_presumption_); // fullscreen item = createItemHoriz("Play in fullscreen"); AG_AddEvent(items_.back(), "window-keydown", handlerBoolItem, "%p", &fullscreen_); item = AG_BoxNewHoriz(item, AG_BOX_HOMOGENOUS | AG_BOX_HFILL); AG_BoxSetPadding(item, 0); AG_SpacerNewVert(item); AG_CheckboxNewInt(item, 0, " ", &fullscreen_); // zvuk item = createItemHoriz("Sound enabled"); AG_AddEvent(items_.back(), "window-keydown", handlerBoolItem, "%p", &sound_); item = AG_BoxNewHoriz(item, AG_BOX_HOMOGENOUS | AG_BOX_HFILL); AG_BoxSetPadding(item, 0); AG_SpacerNewVert(item); AG_CheckboxNewInt(item, 0, " ", &sound_); // back item = createItem("Save"); AG_SetEvent(item, "window-mousebuttondown", handlerBack, 0); AG_SpacerNewHoriz(win); }