Diff of /trunk/src/main.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 245 by harbaum, Sun Jul 26 18:54:07 2009 UTC revision 246 by harbaum, Mon Jul 27 15:02:00 2009 UTC
# Line 1376  gboolean on_window_key_press(GtkWidget * Line 1376  gboolean on_window_key_press(GtkWidget *
1376    return handled;    return handled;
1377  }  }
1378    
1379    #ifdef DETAIL_POPUP
1380    #define HEIGHT 100
1381    
1382    static void detail_level_popup(GtkWidget *button, appdata_t *appdata) {
1383      GtkWidget *overlay = gtk_window_new(GTK_WINDOW_POPUP);
1384      gtk_window_set_default_size(GTK_WINDOW(overlay), button->allocation.width, HEIGHT);
1385      gtk_widget_realize(overlay);
1386    
1387      //  gtk_window_set_resizable(GTK_WINDOW(overlay), FALSE);
1388    
1389      gtk_window_set_transient_for(GTK_WINDOW(overlay), GTK_WINDOW(appdata->window));
1390      gtk_window_set_keep_above(GTK_WINDOW(overlay), TRUE);
1391      gtk_window_set_destroy_with_parent(GTK_WINDOW(overlay), TRUE);
1392      gtk_window_set_gravity(GTK_WINDOW(overlay), GDK_GRAVITY_STATIC);
1393      gtk_window_set_modal(GTK_WINDOW(overlay), TRUE);
1394    
1395      gdk_pointer_grab(overlay->window, TRUE,
1396                       GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_MOTION_MASK,
1397                       NULL, NULL, GDK_CURRENT_TIME);
1398      gtk_grab_add(overlay->window);
1399    
1400    #if 0
1401      gtk_window_set_position(GTK_WINDOW(overlay), GTK_WIN_POS_MOUSE);
1402    #else
1403      gint x, y;
1404      GdkWindow *wpar = gtk_widget_get_parent_window(button);
1405      gdk_window_get_root_origin(wpar, &x, &y);
1406      gtk_window_move(GTK_WINDOW(overlay),
1407                      x + button->allocation.x,
1408                      y + button->allocation.y - HEIGHT);
1409    #endif
1410    
1411      /* a frame with a vscale inside */
1412      GtkWidget *frame = gtk_frame_new(NULL);
1413      gtk_widget_show (frame);
1414      gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_OUT);
1415      GtkObject *adjustment = gtk_adjustment_new(1.0, 0.1, 10.0, +1, -1, 1);
1416      GtkWidget *scale = gtk_vscale_new(GTK_ADJUSTMENT(adjustment));
1417      gtk_container_add(GTK_CONTAINER(frame), scale);
1418      gtk_container_add(GTK_CONTAINER(overlay), frame);
1419    
1420      gtk_widget_show_all(overlay);
1421    
1422      /* handle this popup until it's gone */
1423    
1424    
1425    
1426    
1427    }
1428    #endif
1429    
1430  int main(int argc, char *argv[]) {  int main(int argc, char *argv[]) {
1431    appdata_t appdata;    appdata_t appdata;
1432    
# Line 1475  int main(int argc, char *argv[]) { Line 1526  int main(int argc, char *argv[]) {
1526    
1527    gtk_box_pack_start(GTK_BOX(vbox), map, TRUE, TRUE, 0);    gtk_box_pack_start(GTK_BOX(vbox), map, TRUE, TRUE, 0);
1528    
1529  #ifdef ZOOM_BUTTONS  #if defined(ZOOM_BUTTONS) || defined(DETAIL_POPUP)
1530    GtkWidget *zhbox = gtk_hbox_new(FALSE, 0);    GtkWidget *zhbox = gtk_hbox_new(FALSE, 0);
1531    
1532    gtk_box_pack_start_defaults(GTK_BOX(zhbox), statusbar_new(&appdata));    gtk_box_pack_start_defaults(GTK_BOX(zhbox), statusbar_new(&appdata));
1533    #endif
1534    
1535    #ifdef DETAIL_POPUP
1536      /* ---- detail popup ---- */
1537      appdata.btn_detail_popup = gtk_button_new();
1538      gtk_button_set_image(GTK_BUTTON(appdata.btn_detail_popup),
1539            gtk_image_new_from_stock(GTK_STOCK_ABOUT, GTK_ICON_SIZE_MENU));
1540      g_signal_connect(appdata.btn_detail_popup, "clicked",
1541                       G_CALLBACK(detail_level_popup), &appdata);
1542      gtk_box_pack_start(GTK_BOX(zhbox), appdata.btn_detail_popup, FALSE, FALSE, 0);
1543      gtk_box_pack_start(GTK_BOX(vbox), zhbox, FALSE, FALSE, 0);
1544    #endif
1545    
1546    #ifdef ZOOM_BUTTONS
1547    /* ---- add zoom out button right of statusbar ---- */    /* ---- add zoom out button right of statusbar ---- */
1548    appdata.btn_zoom_out = gtk_button_new();    appdata.btn_zoom_out = gtk_button_new();
1549    gtk_button_set_image(GTK_BUTTON(appdata.btn_zoom_out),    gtk_button_set_image(GTK_BUTTON(appdata.btn_zoom_out),
# Line 1495  int main(int argc, char *argv[]) { Line 1559  int main(int argc, char *argv[]) {
1559    g_signal_connect(appdata.btn_zoom_in, "clicked",    g_signal_connect(appdata.btn_zoom_in, "clicked",
1560                     G_CALLBACK(cb_menu_zoomin), &appdata);                     G_CALLBACK(cb_menu_zoomin), &appdata);
1561    gtk_box_pack_start(GTK_BOX(zhbox), appdata.btn_zoom_in, FALSE, FALSE, 0);    gtk_box_pack_start(GTK_BOX(zhbox), appdata.btn_zoom_in, FALSE, FALSE, 0);
1562    #endif
1563    
1564    #if defined(ZOOM_BUTTONS) || defined(DETAIL_POPUP)
1565    gtk_box_pack_start(GTK_BOX(vbox), zhbox, FALSE, FALSE, 0);    gtk_box_pack_start(GTK_BOX(vbox), zhbox, FALSE, FALSE, 0);
1566  #else  #else
1567    gtk_box_pack_start(GTK_BOX(vbox), statusbar_new(&appdata), FALSE, FALSE, 0);    gtk_box_pack_start(GTK_BOX(vbox), statusbar_new(&appdata), FALSE, FALSE, 0);
# Line 1534  int main(int argc, char *argv[]) { Line 1599  int main(int argc, char *argv[]) {
1599    while(gtk_events_pending())    while(gtk_events_pending())
1600      gtk_main_iteration();      gtk_main_iteration();
1601    
 #if 0  // test overlay  
   {  
     GtkWidget *overlay = gtk_window_new(GTK_WINDOW_POPUP);  
     gtk_window_set_default_size(GTK_WINDOW(overlay), 40, 20);  
     gtk_window_set_transient_for(GTK_WINDOW(overlay), GTK_WINDOW(appdata.window));  
     gtk_window_set_keep_above(GTK_WINDOW(overlay), TRUE);  
     gtk_window_set_destroy_with_parent(GTK_WINDOW(overlay), TRUE);  
     gtk_window_set_position(GTK_WINDOW(overlay), GTK_WIN_POS_CENTER_ON_PARENT);  
   
     gtk_window_set_gravity(GTK_WINDOW(overlay), GDK_GRAVITY_NORTH_EAST);  
   
     printf("x = %d\n", gdk_screen_width() - overlay->allocation.width);  
     gtk_window_move(GTK_WINDOW(overlay),  
                     gdk_screen_width() - overlay->allocation.width, 60);  
   
     gtk_window_set_decorated(GTK_WINDOW(overlay), TRUE);  
   
     /* add some zoom buttons for testing */  
     GtkWidget *hbox = gtk_hbox_new(TRUE, 0);  
     gtk_box_pack_start_defaults(GTK_BOX(hbox), gtk_button_new_with_label("+"));  
     gtk_box_pack_start_defaults(GTK_BOX(hbox), gtk_button_new_with_label("-"));  
     gtk_container_add(GTK_CONTAINER(overlay), hbox);  
   
     gtk_widget_show_all(overlay);  
   }  
 #endif  
   
1602    /* start to interact with the user now that the gui is running */    /* start to interact with the user now that the gui is running */
1603    if(appdata.settings->first_run_demo) {    if(appdata.settings->first_run_demo) {
1604      messagef(GTK_WIDGET(appdata.window), _("Welcome to OSM2Go"),      messagef(GTK_WIDGET(appdata.window), _("Welcome to OSM2Go"),

Legend:
Removed from v.245  
changed lines
  Added in v.246