AG_UCombo * AG_UComboNewPolled(void *parent, Uint flags, AG_EventFn fn, const char *fmt, ...) { AG_UCombo *com; AG_Event *ev; com = AG_UComboNew(parent, flags); AG_ObjectLock(com); com->list->flags |= AG_TLIST_POLL; ev = AG_SetEvent(com->list, "tlist-poll", fn, NULL); AG_EVENT_GET_ARGS(ev, fmt); AG_ObjectUnlock(com); return (com); }
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; }
void OptionsState::enter() { int screenWidth = graphicsEngine->getScreenWidth(); int screenHeight = graphicsEngine->getScreenHeight(); int halfScreenWidth = screenWidth / 2; int halfScreenHeight = screenHeight / 2; AG_Window *win = AG_WindowNew(AG_WINDOW_PLAIN|AG_WINDOW_DENYFOCUS); AG_WindowShow(win); AG_WindowMaximize(win); interfaceManager->addWindow(win); // create options window AG_Window *optionWindow = AG_WindowNewNamed(AG_WINDOW_NOBUTTONS, "OptionWindow"); AG_WindowSetCaption(optionWindow, "Options"); AG_WindowSetGeometry(optionWindow, halfScreenWidth - 85, halfScreenHeight - 85, 170, 170); // alignment AG_VBox *box = AG_VBoxNew(optionWindow, 0); // create list of resolutions Point pt; pt.x = 1024; pt.y = 768; mRes.push_back(pt); pt.x = 800; pt.y = 600; mRes.push_back(pt); pt.x = 1280; pt.y = 1024; mRes.push_back(pt); pt.x = 1440; pt.y = 900; mRes.push_back(pt); // add selection box for resolution selectionBox = AG_UComboNew(box, 0); AG_ExpandHoriz(selectionBox); AG_UComboSizeHint(selectionBox, "Resolution", mRes.size()); // loop through all the resolutions for (unsigned int i = 0; i < mRes.size(); ++i) { std::stringstream str; str << mRes[i].x << " x " << mRes[i].y; AG_TlistAddPtr(selectionBox->list, NULL, str.str().c_str(), &mRes[i]); } AG_TlistSelect(selectionBox->list, AG_TlistFirstItem(selectionBox->list)); AG_SetEvent(selectionBox, "ucombo-selected", selected_resolution, NULL); std::stringstream fs; fs << "Fullscreen: " << mFullscreen; logger->logDebug(fs.str()); // add checkbox for fullscreen AG_CheckboxNewInt(box, 0, "Fullscreen", &mFullscreen); // add checkbox for hardware acceleration AG_CheckboxNewInt(box, 0, "OpenGL", &mOpenGL); // add radio for languages const char *languages[] = { "English", "Portugues", "Espa\xc3\xb1ol", NULL}; AG_RadioNewInt(box, 0, languages, &mLangs); AG_HBox *hbox = AG_HBoxNew(box, 0); // add button to apply AG_ButtonNewFn(hbox, 0, "Apply", apply_options, "%p%p%p", &mOpenGL, &mFullscreen, &mLangs); // add button to cancel AG_ButtonNewFn(hbox, 0, "Cancel", cancel_options, 0); AG_WindowShow(optionWindow); interfaceManager->addWindow(optionWindow); }
MenuOptions::MenuOptions(): speed_(CONFIG->speed()), visible_presumption_(CONFIG->visible_presumption()), split_screen_(CONFIG->split_screen()), fullscreen_(CONFIG->fullscreen()), sound_(CONFIG->sound()){ AG_Box * item; AG_UCombo *combo; AG_TlistItem * combo_item; AG_Checkbox * checkbox; // nadpis createHeading(LANG_MENU(LANG_OPTIONS, LANG_HEADING)); // jazyk item = createItem(LANG_MENU(LANG_OPTIONS, LANG_LANGUAGE)); combo = AG_UComboNew(item, AG_UCOMBO_HFILL); AG_SetEvent(combo, "ucombo-selected", handlerLanguage, "%p", combo->button); for(Uint16 i=0 ; i<CONFIG->languages_.size() ; ++i){ combo_item = AG_TlistAddPtr(combo->list, 0, CONFIG->languages_[i].show.c_str(), &CONFIG->languages_[i]); if(CONFIG->language_==CONFIG->languages_[i].name) AG_ButtonText(combo->button, "%s", combo_item->text); } // klavesy item = createItem(LANG_MENU(LANG_OPTIONS, LANG_CONTROLS)); AG_SetEvent(item, "window-mousebuttondown", MenuOptionsControls::create, 0); // rychlost hry item = createItemHoriz(LANG_MENU(LANG_OPTIONS, LANG_SPEED)); AG_AddEvent(items_.back(), "window-keyup", 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 createCheckboxItem(LANG_MENU(LANG_OPTIONS, LANG_PRESUMPTIONS), &visible_presumption_); // rozedelni obrazovek createCheckboxItem(LANG_MENU(LANG_OPTIONS, LANG_SPLIT_SCREEN), &split_screen_); // fullscreen checkbox = createCheckboxItem(LANG_MENU(LANG_OPTIONS, LANG_FULLSCREEN), &fullscreen_); AG_AddEvent(items_.back(), "window-mousebuttondown", handlerToggleFullscreen, 0); AG_AddEvent(checkbox, "window-mousebuttondown", handlerToggleFullscreen, 0); // zvuk - neni implementovano // createCheckboxItem(LANG_MENU(LANG_OPTIONS, LANG_SOUND), // &sound_); // back item = createItem(LANG_MENU(LANG_OPTIONS, LANG_SAVE)); AG_SetEvent(item, "window-mousebuttondown", handlerBack, 0); AG_SpacerNewHoriz(win); }