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); }