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 |
|
|
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), |
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); |
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"), |