bool Demo6Sample::handleSelectModeChanged(const CEGUI::EventArgs& e) { using namespace CEGUI; // get access to list MultiColumnList* mcl = static_cast<MultiColumnList*>(WindowManager::getSingleton().getWindow("Demo6/MainList")); // get access to the combobox Combobox* combo = static_cast<Combobox*>(WindowManager::getSingleton().getWindow("Demo6/ControlPanel/SelModeBox")); // find the selected item in the combobox ListboxItem* item = combo->findItemWithText(combo->getText(), 0); // set new selection mode according to ID of selected ListboxItem if (item) { switch (item->getID()) { case 0: mcl->setSelectionMode(MultiColumnList::RowSingle); break; case 1: mcl->setSelectionMode(MultiColumnList::RowMultiple); break; case 2: mcl->setSelectionMode(MultiColumnList::ColumnSingle); break; case 3: mcl->setSelectionMode(MultiColumnList::ColumnMultiple); break; case 4: mcl->setSelectionMode(MultiColumnList::CellSingle); break; case 5: mcl->setSelectionMode(MultiColumnList::CellMultiple); break; case 6: mcl->setSelectionMode(MultiColumnList::NominatedColumnSingle); break; case 7: mcl->setSelectionMode(MultiColumnList::NominatedColumnMultiple); break; case 8: mcl->setSelectionMode(MultiColumnList::NominatedRowSingle); break; case 9: mcl->setSelectionMode(MultiColumnList::NominatedRowMultiple); break; default: mcl->setSelectionMode(MultiColumnList::RowSingle); break; } } // event was handled. return true; }
static void init_sdlgui(char * skin_layout,int fullscreen) { SDL_Surface * screen; // atexit (SDL_Quit); SDL_Init (SDL_INIT_VIDEO); int videoFlags; const SDL_VideoInfo *videoInfo; videoInfo = SDL_GetVideoInfo( ); if ( !videoInfo ) { fprintf( stderr, "Video query failed: %s\n", SDL_GetError( ) ); } /* the flags to pass to SDL_SetVideoMode */ videoFlags = SDL_OPENGL; /* Enable OpenGL in SDL */ videoFlags |= SDL_GL_DOUBLEBUFFER; /* Enable double buffering */ videoFlags |= SDL_HWPALETTE; /* Store the palette in hardware */ videoFlags |= SDL_RESIZABLE; /* Enable window resizing */ /* This checks to see if surfaces can be stored in memory */ if ( videoInfo->hw_available ) videoFlags |= SDL_HWSURFACE; else videoFlags |= SDL_SWSURFACE; /* This checks if hardware blits can be done */ if ( videoInfo->blit_hw ) videoFlags |= SDL_HWACCEL; /* Sets up OpenGL double buffering */ SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); SDL_WM_SetCaption("NavIt - The OpenSource vector based navigation engine", NULL); /* get a SDL surface */ screen = SDL_SetVideoMode( XRES, YRES, 32, videoFlags ); if (screen == NULL) { fprintf (stderr, "Can't set SDL: %s\n", SDL_GetError ()); exit (1); } if(fullscreen){ SDL_WM_ToggleFullScreen(screen); } SDL_ShowCursor (SDL_ENABLE); SDL_EnableUNICODE (1); SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); init_GL(); // sdl_audio_init(); try { renderer = new CEGUI::OpenGLRenderer(0,XRES,YRES); new CEGUI::System(renderer); using namespace CEGUI; SDL_ShowCursor(SDL_ENABLE); SDL_EnableUNICODE(1); SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); CEGUI::DefaultResourceProvider* rp = static_cast<CEGUI::DefaultResourceProvider*> (System::getSingleton().getResourceProvider()); // FIXME This should maybe move to navit.xml static char *datafiles_path[]={ "./gui/sdl/datafiles", "/usr/share/navit/datafiles", "/usr/local/share/navit/datafiles", NULL, }; char **filename=datafiles_path; while (*filename) { if (FILE * file = fopen(*filename, "r")) { fclose(file); break; } filename++; } if(*filename==NULL){ // FIXME Elaborate the possible solutions printf("Can't find the datafiles directory for CEGUI files. Navit will probably crash :)\n"); } else { printf("Loading SDL datafiles from %s\n",*filename); } rp->setResourceGroupDirectory("schemes", g_strdup_printf("%s/schemes/",*filename)); rp->setResourceGroupDirectory("imagesets", g_strdup_printf("%s/imagesets/",*filename)); rp->setResourceGroupDirectory("fonts", g_strdup_printf("%s/fonts/",*filename)); rp->setResourceGroupDirectory("layouts", g_strdup_printf("%s/layouts/",*filename)); rp->setResourceGroupDirectory("looknfeels", g_strdup_printf("%s/looknfeel/",*filename)); rp->setResourceGroupDirectory("lua_scripts", g_strdup_printf("%s/lua_scripts/",*filename)); CEGUI::Imageset::setDefaultResourceGroup("imagesets"); CEGUI::Font::setDefaultResourceGroup("fonts"); CEGUI::Scheme::setDefaultResourceGroup("schemes"); CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeels"); CEGUI::WindowManager::setDefaultResourceGroup("layouts"); CEGUI::ScriptModule::setDefaultResourceGroup("lua_scripts"); char buffer [50]; sprintf (buffer, "%s.scheme", skin_layout); dbg(1,"Loading scheme : %s\n",buffer); CEGUI::SchemeManager::getSingleton().loadScheme(buffer); CEGUI::FontManager::getSingleton().createFont("DejaVuSans-10.font"); CEGUI::FontManager::getSingleton().createFont("DejaVuSans-14.font"); CEGUI::System::getSingleton().setDefaultFont("DejaVuSans-10"); CEGUI::WindowManager& wmgr = CEGUI::WindowManager::getSingleton(); dbg(1,"Loading layout : %s\n",buffer); sprintf (buffer, "%s.layout", skin_layout); myRoot = CEGUI::WindowManager::getSingleton().loadWindowLayout(buffer); CEGUI::System::getSingleton().setGUISheet(myRoot); try { CEGUI::WindowManager::getSingleton().getWindow("OSD/Quit")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(ButtonQuit)); // CEGUI::WindowManager::getSingleton().getWindow("OSD/Quit")->setText(_("Quit")); CEGUI::WindowManager::getSingleton().getWindow("ZoomInButton")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(ZoomIn)); // CEGUI::WindowManager::getSingleton().getWindow("ZoomInButton")->setText(_("ZoomIn")); CEGUI::WindowManager::getSingleton().getWindow("ZoomOutButton")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(ZoomOut)); // CEGUI::WindowManager::getSingleton().getWindow("ZoomOutButton")->setText(_("ZoomOut")); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/CountryEditbox")->subscribeEvent(Window::EventKeyUp, Event::Subscriber(DestinationEntryChange)); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/CountryEditbox")->subscribeEvent(Window::EventMouseButtonDown, Event::Subscriber(handleMouseEnters)); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/TownEditbox")->subscribeEvent(Window::EventKeyUp, Event::Subscriber(DestinationEntryChange)); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/TownEditbox")->subscribeEvent(Window::EventMouseButtonDown, Event::Subscriber(handleMouseEnters)); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/StreetEditbox")->subscribeEvent(Window::EventKeyUp, Event::Subscriber(DestinationEntryChange)); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/StreetEditbox")->subscribeEvent(Window::EventMouseButtonDown, Event::Subscriber(handleMouseEnters)); CEGUI::WindowManager::getSingleton().getWindow("DestinationButton")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(DialogWindowSwitch)); CEGUI::WindowManager::getSingleton().getWindow("OSD/ViewMode")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(ToggleView)); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/GO")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(ButtonGo)); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/KB")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(ShowKeyboard)); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/Listbox")->subscribeEvent(MultiColumnList::EventSelectionChanged, Event::Subscriber(ItemSelect)); // Translation for StaticTexts (labels) CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/Country")->setText(_("Country")); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/Town")->setText(_("City")); CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/Street")->setText(_("Street")); MultiColumnList* mcl = static_cast<MultiColumnList*>(WindowManager::getSingleton().getWindow("DestinationWindow/Listbox")); mcl->setSelectionMode(MultiColumnList::RowSingle) ; mcl->addColumn("Value", 0, cegui_absdim(200.0)); mcl->addColumn("ID", 1, cegui_absdim(70.0)); mcl->addColumn("Assoc", 2, cegui_absdim(70.0)); mcl->addColumn("x", 3, cegui_absdim(70.0)); mcl->addColumn("y", 4, cegui_absdim(70.0)); MultiColumnList* mcl2 = static_cast<MultiColumnList*>(WindowManager::getSingleton().getWindow("Roadbook")); mcl2->setSelectionMode(MultiColumnList::RowSingle) ; mcl2->addColumn("Instructions", 0, cegui_absdim(700.0)); BuildKeyboard(); CEGUI::WindowManager::getSingleton().getWindow("OSD/Scrollbar1")->subscribeEvent(Scrollbar::EventScrollPositionChanged, Event::Subscriber(MoveCamera)); CEGUI::WindowManager::getSingleton().getWindow("OSD/RoadbookButton")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(RoadBookSwitch)); CEGUI::WindowManager::getSingleton().getWindow("OSD/RoadbookButton")->setText(_("RoadBook")); CEGUI::WindowManager::getSingleton().getWindow("OSD/nGhostButton")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(Switch_to_nGhost)); // this one is maybe not needed anymore CEGUI::WindowManager::getSingleton().getWindow("OSD/RoadbookButton2")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(RoadBookSwitch)); } catch (CEGUI::Exception& e) { fprintf(stderr,"CEGUI Exception occured: \n%s\n", e.getMessage().c_str()); printf("Missing control!...\n"); } } catch (CEGUI::Exception& e) { fprintf(stderr,"CEGUI Exception occured: \n%s\n", e.getMessage().c_str()); printf("quiting...\n"); exit(1); } }