summaryrefslogtreecommitdiff
path: root/navit/gui/sdl/gui_sdl_window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'navit/gui/sdl/gui_sdl_window.cpp')
-rw-r--r--navit/gui/sdl/gui_sdl_window.cpp903
1 files changed, 0 insertions, 903 deletions
diff --git a/navit/gui/sdl/gui_sdl_window.cpp b/navit/gui/sdl/gui_sdl_window.cpp
deleted file mode 100644
index 4afac7a3..00000000
--- a/navit/gui/sdl/gui_sdl_window.cpp
+++ /dev/null
@@ -1,903 +0,0 @@
-#include "glib.h"
-#include <stdio.h>
-#include <libintl.h>
-
-// FIXME temporary fix for enum
-#include "projection.h"
-
-#include "item.h"
-#include "navit.h"
-#include "vehicle.h"
-#include "profile.h"
-#include "transform.h"
-#include "gui.h"
-#include "coord.h"
-#include "config.h"
-#include "plugin.h"
-#include "callback.h"
-#include "point.h"
-#include "graphics.h"
-#include "gui_sdl.h"
-#include "navigation.h"
-#include "debug.h"
-#include "attr.h"
-#include "track.h"
-#include "menu.h"
-#include "map.h"
-
-
-#include "CEGUI.h"
-
-// FIXME This is for 3d fonts. Needs QuesoGLC. Could probably (and should) be moved to graphics instead
-// since fonts here are handled by CEGUI
-#include "GL/glc.h"
-
-#include "sdl_events.h"
-#include "cegui_keyboard.h"
-#include "wmcontrol.h"
-
-#define VM_2D 0
-#define VM_3D 1
-
-bool VIEW_MODE=VM_3D;
-
-GLdouble eyeX=400;
-GLdouble eyeY=900;
-GLdouble eyeZ=-800;
-GLdouble centerX=400;
-GLdouble centerY=300;
-GLdouble centerZ=0;
-GLdouble upX=0;
-GLdouble upY=-1;
-GLdouble upZ=0;
-
-struct navit *sdl_gui_navit;
-
-#include <CEGUI/RendererModules/OpenGLGUIRenderer/openglrenderer.h>
-#include "CEGUIDefaultResourceProvider.h"
-CEGUI::OpenGLRenderer* renderer;
-
-#undef profile
-#define profile(x,y)
-
-CEGUI::Window* myRoot;
-
-// Temp fix for pluginless mode
-// #define MODULE "gui_sdl"
-GLuint * DLid;
-
-#define _(STRING) gettext(STRING)
-
-char media_window_title[255], media_cmd[255];
-
-struct bookmark{
- char * name;
- struct callback *cb;
- struct bookmark *next;
-} *bookmarks;
-
-struct former_dest{
- char * name;
- struct callback *cb;
- struct former_dest *next;
-} *former_dests;
-
-static int
-gui_sdl_set_graphics(struct gui_priv *this_, struct graphics *gra)
-{
- dbg(1,"setting up the graphics\n");
-
- DLid=(GLuint *)graphics_get_data(gra, "opengl_displaylist");
- if (!DLid)
- return 1;
- return 0;
-}
-
-static void
-sdl_update_roadbook(struct navigation *nav)
-{
-
- using namespace CEGUI;
-
- struct map *map;
- struct map_rect *mr;
-
- if (! nav)
- return;
- map=navigation_get_map(nav);
- if (! map)
- return;
- mr=map_rect_new(map, NULL);
- if (! mr)
- return;
-
- // First, ensure the navigation tip is visible. quick workaround for when resuming a destination
- WindowManager::getSingleton().getWindow("Navit/Routing/Tips")->show();
-
- // update the 'Navigation Tip' on the main window
- try {
- struct attr attr;
- item_attr_get(map_rect_get_item(mr), attr_navigation_speech, &attr);
- map_rect_destroy(mr);
- mr=map_rect_new(map, NULL);
- WindowManager::getSingleton().getWindow("Navit/Routing/Tips")->setText((CEGUI::utf8*)(attr.u.str));
- }
- catch (CEGUI::Exception& e)
- {
- fprintf(stderr,"CEGUI Exception occured: \n%s\n", e.getMessage().c_str());
- printf("Missing control!...\n");
- }
-
- // Then, update the whole roadbook
- try {
-
- /* Currently we use the 'Navit' text to display the roadbook, until Mineque design a button for that
- if(! WindowManager::getSingleton().getWindow("OSD/RoadbookButton")->isVisible()){
- WindowManager::getSingleton().getWindow("OSD/RoadbookButton")->show();
- }
- */
-
- MultiColumnList* mcl = static_cast<MultiColumnList*>(WindowManager::getSingleton().getWindow("Roadbook"));
- mcl->resetList();
-
- item *item;
- struct attr attr;
-
- while ((item=map_rect_get_item(mr))) {
- mcl->addRow();
- item_attr_get(item, attr_navigation_short, &attr);
- ListboxTextItem* itemListbox = new ListboxTextItem(attr.u.str);
- itemListbox->setSelectionBrushImage("TaharezLook", "MultiListSelectionBrush");
- mcl->setItem(itemListbox, 0, mcl->getRowCount()-1);
- }
- map_rect_destroy(mr);
- }
- catch (CEGUI::Exception& e)
- {
- dbg(0,"CEGUI Exception occured: \n%s\n", e.getMessage().c_str());
- dbg(0,"Missing control!\n");
- }
-
-}
-
-static void show_road_name(){
- struct tracking *tracking;
- struct attr road_name_attr;
- tracking=navit_get_tracking(sdl_gui_navit);
-
- using namespace CEGUI;
-
-
- if (tracking && tracking_get_current_attr(tracking, attr_label, &road_name_attr) ) {
- WindowManager::getSingleton().getWindow("Navit/Routing/CurrentRoadName")->setText((CEGUI::utf8*)(road_name_attr.u.str));
- }
-
-}
-
-static gboolean gui_timeout_cb(gpointer data)
-{
- return TRUE;
-}
-
-static int gui_run_main_loop(struct gui_priv *this_)
-{
- GSource *timeout;
- using namespace CEGUI;
- dbg(0,"Entering main loop\n");
-
- bool must_quit = false;
-
- // get "run-time" in seconds
- double last_time_pulse = static_cast<double>(SDL_GetTicks());
-
- int frames=0;
- char fps [12];
-
- struct map_selection sel,sel2;
-
- memset(&sel, 0, sizeof(sel));
- memset(&sel2, 0, sizeof(sel2));
- sel.u.c_rect.rl.x=800;
- sel.u.c_rect.rl.y=600;
-#if 0
- sel.next=&sel2;
- sel2.u.c_rect.rl.x=-200;
- sel2.u.c_rect.rl.y=0;
- sel2.u.c_rect.lu.x=1000;
- sel2.u.c_rect.lu.y=-800;
- for (int i=0 ; i < layer_end ; i++)
- sel2.order[i]=-4;
-#endif
-
- transform_set_screen_selection(navit_get_trans(this_->nav), &sel);
- navit_draw(this_->nav);
-
- bool enable_timer=0;
-
- struct navigation *navig;
- navig=navit_get_navigation(sdl_gui_navit);
-
- navigation_register_callback(navig,
- attr_navigation_long,
- callback_new_0((void (*)())sdl_update_roadbook)
- );
-
- timeout = g_timeout_source_new(100);
- g_source_set_callback(timeout, gui_timeout_cb, NULL, NULL);
- g_source_attach(timeout, NULL);
- while (!must_quit)
- {
- if(enable_timer)
- profile(0,NULL);
- glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- if(VIEW_MODE==VM_3D){
- gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
- }
-
- // FIXME This is to draw a ground. This is ugly and need to be fixed.
- // Without it, we see the color of sky under the roads.
- glColor4f(0.0f,0.7f,0.35f,1.0f);
- glBegin(GL_POLYGON);
- glVertex3f( -800,-600*3, 0.0f);
- glVertex3f( -800,600*2, 0.0f);
- glVertex3f( 1600,600*2, 0.0f);
- glVertex3f( 1600,-600*3, 0.0f);
- glEnd();
-
-
- if(enable_timer)
- profile(0,"graphics_redraw");
-// if (!g_main_context_iteration (NULL, FALSE))
- // sleep(1);
- g_main_context_iteration (NULL, TRUE);
- // sleep(1);
- if(enable_timer)
- profile(0,"main context");
-
- show_road_name();
-
- if (DLid && *DLid)
- glCallList(*DLid);
- else
- navit_draw_displaylist(sdl_gui_navit);
-
- inject_input(must_quit);
- if(enable_timer)
- profile(0,"inputs");
-
- // Render the cursor.
- int x=400;
- int y=480;
- float cursor_size=15.0f;
- glColor4f(0.0f,1.0f,0.0f,0.75f);
- glEnable(GL_BLEND);
- glBegin(GL_TRIANGLES);
- glVertex3f( x, y-cursor_size, 0.0f);
- glVertex3f(x-cursor_size,y+cursor_size, 0.0f);
- glVertex3f( x+cursor_size,y+cursor_size, 0.0f);
- glEnd();
- glDisable(GL_BLEND);
- if(enable_timer)
- profile(0,"cursor");
-
- frames++;
- if(SDL_GetTicks()-last_time_pulse>1000){
- sprintf(fps,"%i fps",frames); // /(SDL_GetTicks()/1000));
- frames=0;
- last_time_pulse = SDL_GetTicks();
- }
- WindowManager::getSingleton().getWindow("OSD/Satellites")->setText(fps);
-
- if(enable_timer)
- profile(0,"fps");
-
- CEGUI::System::getSingleton().renderGUI();
- if(enable_timer)
- profile(0,"GUI");
-
- SDL_GL_SwapBuffers();
- }
- g_source_destroy(timeout);
-
-}
-
-static struct menu_priv *
-add_menu(struct menu_priv *menu, struct menu_methods *meth, char *name, enum menu_type type, struct callback *cb);
-
-static struct menu_methods menu_methods = {
- add_menu,
-};
-
-struct menu_priv {
- char *path;
-// GtkAction *action;
- struct gui_priv *gui;
- enum menu_type type;
- struct callback *cb;
- struct menu_priv *child;
- struct menu_priv *sibling;
- gulong handler_id;
- guint merge_id;
-};
-
-#define MENU_BOOKMARK 2
-#define MENU_FORMER_DEST 3
-
-static struct menu_priv *
-add_menu(struct menu_priv *menu, struct menu_methods *meth, char *name, enum menu_type type, struct callback *cb)
-{
- using namespace CEGUI;
- *meth=menu_methods;
- dbg(0,"callback : %s\n",name);
-
- if(menu==(struct menu_priv *)(MENU_BOOKMARK)){
- dbg(0,"Item is a bookmark\n");
- MultiColumnList* mcl = static_cast<MultiColumnList*>(WindowManager::getSingleton().getWindow("Bookmarks/Listbox"));
-
- ListboxTextItem* itemListbox = new ListboxTextItem((CEGUI::utf8*)(name));
- itemListbox->setSelectionBrushImage("TaharezLook", "MultiListSelectionBrush");
- mcl->addRow(itemListbox,0);
-
- struct bookmark *newB = g_new0(struct bookmark, 1);
- newB->name=g_strdup(name);
- newB->cb=cb;
- if (newB) {
- newB->next = bookmarks;
- bookmarks = newB;
- }
-
- }
-
- if(menu==(struct menu_priv *)(MENU_FORMER_DEST)){
- dbg(0,"Item is a former destination\n");
- MultiColumnList* mcl = static_cast<MultiColumnList*>(WindowManager::getSingleton().getWindow("FormerDests/Listbox"));
-
- ListboxTextItem* itemListbox = new ListboxTextItem((CEGUI::utf8*)(name));
- itemListbox->setSelectionBrushImage("TaharezLook", "MultiListSelectionBrush");
- mcl->addRow(itemListbox,0);
-
- struct former_dest *newB = g_new0(struct former_dest, 1);
- newB->name=g_strdup(name);
- newB->cb=cb;
- if (newB) {
- newB->next = former_dests;
- former_dests = newB;
- }
-
- }
-
- if(!strcmp(name,"Bookmarks")){
- dbg(0,"Menu is the bookmark menu!\n");
- return (struct menu_priv *)MENU_BOOKMARK;
- } else if(!strcmp(name,"Former Destinations")){
- dbg(0,"Menu is the Former Destinations menu!\n");
- return (struct menu_priv *)MENU_FORMER_DEST;
- } else {
- return (struct menu_priv *)1;
- }
-}
-
-bool BookmarkGo(const char * name)
-{
- dbg(0,"searching for bookmark %s\n",name);
- bookmark * bookmark_search=bookmarks;
- while ( bookmark_search ){
- dbg(0,"-> %s\n",bookmark_search->name);
- if(!strcmp(bookmark_search->name,name)){
- dbg(0,"Got it :)\n");
- callback_call_0(bookmark_search->cb);
- }
- bookmark_search=bookmark_search->next;
- }
-
-}
-
-bool FormerDestGo(const char * name)
-{
- dbg(0,"searching for former_dest %s\n",name);
- former_dest * former_dest_search=former_dests;
- while ( former_dest_search ){
- dbg(0,"-> %s\n",former_dest_search->name);
- if(!strcmp(former_dest_search->name,name)){
- dbg(0,"Got it :)\n");
- callback_call_0(former_dest_search->cb);
- }
- former_dest_search=former_dest_search->next;
- }
-
-}
-
-static struct menu_priv *
-gui_sdl_menubar_new(struct gui_priv *this_, struct menu_methods *meth)
-{
- *meth=menu_methods;
- return (struct menu_priv *) 1; //gui_gtk_ui_new(this_, meth, "/ui/MenuBar", nav, 0);
-}
-
-static struct menu_priv *
-gui_sdl_popup_new(struct gui_priv *this_, struct menu_methods *meth)
-{
- return NULL; //gui_gtk_ui_new(this_, meth, "/ui/PopUp", nav, 1);
-}
-
-struct gui_methods gui_sdl_methods = {
- gui_sdl_menubar_new,
- gui_sdl_popup_new,
- gui_sdl_set_graphics,
- gui_run_main_loop,
-};
-
-
-int init_GL() {
-
- // Blue sky
- glClearColor(0.3,0.7,1.0,0);
-
- if(VIEW_MODE==VM_2D){
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
-
- glOrtho( 0, XRES, YRES, 0, -1, 1 );
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- CEGUI::WindowManager::getSingleton().getWindow("OSD/ViewMode")->setText("2D");
- } else {
-
- // Dimensions de la fenetre de rendu
- glViewport(0, 0, XRES, YRES);
- // Initialisation de la matrice de projection
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(45, 1.0, 0.1, 2800.0);
- // Rendu avec lissage de Gouraud
-// glShadeModel(GL_SMOOTH);
- // glEnable(GL_DEPTH_TEST);
-
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-// gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
- CEGUI::WindowManager::getSingleton().getWindow("OSD/ViewMode")->setText("3D");
- }
-
- //Display list code
- // GLuint glGenLists(GLsizei numberOfIDsRequired);
- // linesDL = glGenLists(1);
-
- if( glGetError() != GL_NO_ERROR ) {
- return 0;
- }
- return 1;
-}
-
-bool ToggleView(const CEGUI::EventArgs& event)
-{
- VIEW_MODE=!VIEW_MODE;
- init_GL();
-}
-
-bool MoveCamera(const CEGUI::EventArgs& event){
-
- CEGUI::Scrollbar * sb = static_cast<const CEGUI::Scrollbar *>(CEGUI::WindowManager::getSingleton().getWindow("OSD/Scrollbar1"));
- eyeZ=-sb->getScrollPosition();
- if (eyeZ>-100){
- eyeZ=-100;
- }
-}
-
-
-
-static void init_sdlgui(char * skin_layout,int fullscreen,int tilt, char *image_codec_name)
-{
- 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();
-
- try
- {
- using namespace CEGUI;
- if (image_codec_name) {
- dbg(0, "Using image codec: %s from config\n", image_codec_name);
- } else {
-#if defined (HAVE_LIBCEGUISILLYIMAGECODEC)
- image_codec_name = "SILLYImageCodec";
-#elif defined(HAVE_LIBCEGUIDEVILIMAGECODEC)
- image_codec_name = "DevILImageCodec";
-#elif defined (HAVE_LIBCEGUITGAIMAGECODEC)
- image_codec_name = "TGAImageCodec";
-#else
- fprintf (stderr, "No default image codec available. Try setting image_codec in your config\n");
- exit (1);
-#endif
- dbg(0, "Using default image codec: %s\n", image_codec_name);
- }
- CEGUI::OpenGLRenderer::setDefaultImageCodecName(image_codec_name);
-
- CEGUI::System::setDefaultXMLParserName(CEGUI::String("TinyXMLParser"));
- dbg(0, "Using %s as the default CEGUI XML Parser\n", CEGUI::System::getDefaultXMLParserName().c_str());
- renderer = new CEGUI::OpenGLRenderer(0,XRES,YRES);
- new CEGUI::System(renderer);
-
- 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());
-
-
- char *filename;
-
- filename=g_strdup_printf("%s/share/navit/datafiles", getenv("NAVIT_PREFIX"));
-
- if (FILE * file = fopen(filename, "r")){
- fclose(file);
- dbg(0,"Ressources can be loaded from %s\n",filename);
- } else {
- filename=g_strdup_printf("./gui/sdl/datafiles");
- dbg(0,"Failling back to %s",filename);
- }
-
- dbg(0,"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));
- g_free(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-12.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("AdressSearch/CountryEditbox")->subscribeEvent(Window::EventKeyUp, Event::Subscriber(DestinationEntryChange));
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/CountryEditbox")->subscribeEvent(Window::EventMouseButtonDown, Event::Subscriber(handleMouseEnters));
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/TownEditbox")->subscribeEvent(Window::EventKeyUp, Event::Subscriber(DestinationEntryChange));
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/TownEditbox")->subscribeEvent(Window::EventMouseButtonDown, Event::Subscriber(handleMouseEnters));
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/StreetEditbox")->subscribeEvent(Window::EventKeyUp, Event::Subscriber(DestinationEntryChange));
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/StreetEditbox")->subscribeEvent(Window::EventMouseButtonDown, Event::Subscriber(handleMouseEnters));
-
- CEGUI::WindowManager::getSingleton().getWindow("DestinationButton")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(DestinationWindowSwitch));
- CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/Address")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(AddressSearchSwitch));
- CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/Bookmark")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(BookmarkSelectionSwitch));
- CEGUI::WindowManager::getSingleton().getWindow("DestinationWindow/FormerDest")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(FormerDestSelectionSwitch));
-
-
- CEGUI::WindowManager::getSingleton().getWindow("OSD/ViewMode")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(ToggleView));
-
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/GO")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(ButtonGo));
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/KB")->subscribeEvent(PushButton::EventClicked, Event::Subscriber(ShowKeyboard));
-
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/Listbox")->subscribeEvent(MultiColumnList::EventSelectionChanged, Event::Subscriber(ItemSelect));
- CEGUI::WindowManager::getSingleton().getWindow("Bookmarks/Listbox")->subscribeEvent(MultiColumnList::EventSelectionChanged, Event::Subscriber(BookmarkSelect));
- CEGUI::WindowManager::getSingleton().getWindow("FormerDests/Listbox")->subscribeEvent(MultiColumnList::EventSelectionChanged, Event::Subscriber(FormerDestSelect));
-
-
- // Translation for StaticTexts (labels)
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/Country")->setText(_("Country"));
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/Town")->setText(_("City"));
- CEGUI::WindowManager::getSingleton().getWindow("AdressSearch/Street")->setText(_("Street"));
-
-
- MultiColumnList* mcl = static_cast<MultiColumnList*>(WindowManager::getSingleton().getWindow("AdressSearch/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));
-
- MultiColumnList* mcl3 = static_cast<MultiColumnList*>(WindowManager::getSingleton().getWindow("Bookmarks/Listbox"));
-
- mcl3->setSelectionMode(MultiColumnList::RowSingle) ;
- mcl3->addColumn("Name", 0, cegui_absdim(700.0));
-
- MultiColumnList* mcl4 = static_cast<MultiColumnList*>(WindowManager::getSingleton().getWindow("FormerDests/Listbox"));
-
- mcl4->setSelectionMode(MultiColumnList::RowSingle) ;
- mcl4->addColumn("Name", 0, cegui_absdim(700.0));
-
- BuildKeyboard();
-
- CEGUI::WindowManager::getSingleton().getWindow("OSD/Scrollbar1")->subscribeEvent(Scrollbar::EventScrollPositionChanged, Event::Subscriber(MoveCamera));
-
- // FIXME : char (conf) -> int (init) -> char (property) = bad
- char buffer[4];
- sprintf (buffer,"%i",tilt);
- CEGUI::WindowManager::getSingleton().getWindow("OSD/Scrollbar1")->setProperty("ScrollPosition",buffer);
- eyeZ=-tilt;
-
- 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);
- }
- init_GL();
- // Force centering view on cursor
-// navit_toggle_cursor(gui->nav);
- // Force refresh on gps update
-// navit_toggle_tracking(gui->nav);
-
-}
-
-static void vehicle_callback_handler( struct navit *nav, struct vehicle *v){
- char buffer [50];
- struct attr attr;
- int sats=0, sats_used=0;
-
- if (vehicle_get_attr(v, attr_position_speed, &attr))
- sprintf (buffer, "%02.02f km/h", *attr.u.numd);
- else
- strcpy (buffer, "N/A");
- CEGUI::WindowManager::getSingleton().getWindow("OSD/SpeedoMeter")->setText(buffer);
-
- if (vehicle_get_attr(v, attr_position_height, &attr))
- sprintf (buffer, "%.f m", *attr.u.numd);
- else
- strcpy (buffer, "N/A");
- CEGUI::WindowManager::getSingleton().getWindow("OSD/Altimeter")->setText(buffer);
-
- if (vehicle_get_attr(v, attr_position_sats, &attr))
- sats=attr.u.num;
- if (vehicle_get_attr(v, attr_position_sats_used, &attr))
- sats_used=attr.u.num;
-// printf(" sats : %i, used %i: \n",sats,sats_used);
- // Sat image hardcoded for now. may break the TaharezSkin
- // setProperty("Image", CEGUI::PropertyHelper::imageToString( yourImageSet->getImage( "yourImageName" ) ) );
-
- try {
- if(sats_used>1){
- CEGUI::WindowManager::getSingleton().getWindow("SateliteStrenghBar1")->setProperty("Image","set:Mineque-Black image:SateliteStrenghBarOn");
- } else {
- CEGUI::WindowManager::getSingleton().getWindow("SateliteStrenghBar1")->setProperty("Image","set:Mineque-Black image:SateliteStrenghBarOff");
- }
-
- if(sats_used>3){
- CEGUI::WindowManager::getSingleton().getWindow("SateliteStrenghBar2")->setProperty("Image","set:Mineque-Black image:SateliteStrenghBarOn");
- } else {
- CEGUI::WindowManager::getSingleton().getWindow("SateliteStrenghBar2")->setProperty("Image","set:Mineque-Black image:SateliteStrenghBarOff");
- }
-
- if(sats_used>5){
- CEGUI::WindowManager::getSingleton().getWindow("SateliteStrenghBar3")->setProperty("Image","set:Mineque-Black image:SateliteStrenghBarOn");
- } else {
- CEGUI::WindowManager::getSingleton().getWindow("SateliteStrenghBar3")->setProperty("Image","set:Mineque-Black image:SateliteStrenghBarOff");
- }
-
- if(sats_used>7){
- CEGUI::WindowManager::getSingleton().getWindow("SateliteStrenghBar4")->setProperty("Image","set:Mineque-Black image:SateliteStrenghBarOn");
- } else {
- CEGUI::WindowManager::getSingleton().getWindow("SateliteStrenghBar4")->setProperty("Image","set:Mineque-Black image:SateliteStrenghBarOff");
- }
-
- if(sats_used>8){
- CEGUI::WindowManager::getSingleton().getWindow("SateliteStrenghBar5")->setProperty("Image","set:Mineque-Black image:SateliteStrenghBarOn");
- } else {
- CEGUI::WindowManager::getSingleton().getWindow("SateliteStrenghBar5")->setProperty("Image","set:Mineque-Black image:SateliteStrenghBarOff");
- }
- }
- catch (CEGUI::Exception& e)
- {
- dbg(1,"Warning : you skin doesn't have the satellitebars. You should use Mineque's skin.\n");
- }
-
-}
-
-static struct gui_priv *
-gui_sdl_new(struct navit *nav, struct gui_methods *meth, struct attr **attrs)
-{
- dbg(1,"Begin SDL init\n");
- struct gui_priv *this_;
- sdl_gui_navit=nav;
-
- if(sdl_gui_navit){
- dbg(1,"VALID navit instance in gui\n");
- } else {
- dbg(1,"Invalid navit instance in gui\n");
- }
- if(nav){
- dbg(1,"VALID source navit instance in gui\n");
- } else {
- dbg(1,"Invalid source navit instance in gui\n");
- }
-
- *meth=gui_sdl_methods;
-
- this_=g_new0(struct gui_priv, 1);
- int fullscreen=0;
-
- struct attr *fullscreen_setting=attr_search(attrs, NULL, attr_fullscreen);
- //FIXME currently, we only check if fullscreen is declared, but not its value
- if(fullscreen_setting){
- fullscreen=1;
- printf("fullscreen\n");
- } else {
- fullscreen=0;
- printf("Normal screen\n");
- }
-
- int tilt=400;
- struct attr *tilt_setting=attr_search(attrs, NULL, attr_tilt);
- if(tilt_setting){
- if(sscanf(tilt_setting->u.str,"%i",&tilt)){
- dbg(0,"tilt set to %i\n",tilt);
- } else {
- dbg(0,"title was not recognized : %s\n",tilt_setting->u.str);
- }
- } else {
- dbg(0,"tilt is not set\n");
- }
-
- struct attr *view_mode_setting=attr_search(attrs, NULL, attr_view_mode);
- if(view_mode_setting){
- if(!strcmp(view_mode_setting->u.str,"2D")){
- dbg(0,"View mode is 2D\n");
- VIEW_MODE=VM_2D;
- } else {
- dbg(0,"view mode is something else : %s\n",view_mode_setting->u.str);
- }
-
- } else {
- dbg(0,"view_mode is not set\n");
- }
-
- struct attr *media_cmd_setting=attr_search(attrs, NULL, attr_media_cmd);
- if(media_cmd_setting){
- dbg(0,"setting media_cmd to %s\n",media_cmd_setting->u.str);
- strcpy(media_cmd,media_cmd_setting->u.str);
- } else {
-// strcpy(media_cmd_setting->u.str,media_window_title);
- }
-
- struct attr *media_window_title_setting=attr_search(attrs, NULL, attr_media_window_title);
- if(media_window_title_setting){
- strcpy(media_window_title,media_window_title_setting->u.str);
- } else {
-// strcpy(media_cmd_setting->u.str,media_window_title);
- }
-
- struct attr *image_codec_setting=attr_search(attrs, NULL, attr_image_codec);
- char *image_codec_name=NULL;
- if (image_codec_setting)
- image_codec_name=image_codec_setting->u.str;
- struct attr *skin_setting=attr_search(attrs, NULL, attr_skin);
- if(skin_setting){
- init_sdlgui(skin_setting->u.str,fullscreen,tilt, image_codec_name);
- } else {
- g_warning("Warning, no skin set for <sdl> in navit.xml. Using default one");
- init_sdlgui("TaharezLook",fullscreen,tilt, image_codec_name);
- }
-
-
- dbg(1,"End SDL init\n");
-
- //gui_sdl_window.cpp:710: error: invalid conversion from 'void (*)(vehicle*)' to 'void (*)()'
-
- /* add callback for position updates */
- struct callback *cb=callback_new_attr_0(callback_cast(vehicle_callback_handler), attr_position_coord_geo);
-
- navit_add_callback(nav,cb);
- this_->nav=nav;
-
- return this_;
-}
-
-void
-plugin_init(void)
-{
- dbg(1,"registering sdl plugin\n");
- plugin_register_gui_type("sdl", gui_sdl_new);
-}