551 |
gtk_container_add(GTK_CONTAINER(window), |
gtk_container_add(GTK_CONTAINER(window), |
552 |
cachelist_create(appdata, gpx, NULL)); |
cachelist_create(appdata, gpx, NULL)); |
553 |
|
|
554 |
|
hildon_window_set_app_menu(HILDON_WINDOW(window), |
555 |
|
menu_create(appdata, MENU_CACHELIST)); |
556 |
|
|
557 |
gtk_widget_show_all(window); |
gtk_widget_show_all(window); |
558 |
} |
} |
559 |
#endif |
#endif |
1010 |
if(new) gpxlist_add(appdata, new); |
if(new) gpxlist_add(appdata, new); |
1011 |
} |
} |
1012 |
|
|
|
static void |
|
|
cb_menu_geomath(GtkWidget *window, gpointer data) { |
|
|
geomath_dialog((appdata_t *)data); |
|
|
} |
|
|
|
|
|
static void |
|
|
cb_menu_geotext(GtkWidget *window, gpointer data) { |
|
|
geotext_dialog((appdata_t *)data); |
|
|
} |
|
|
|
|
|
static void |
|
|
cb_menu_precpos(GtkWidget *window, gpointer data) { |
|
|
precise_position((appdata_t *)data); |
|
|
} |
|
|
|
|
1013 |
#ifndef USE_PANNABLE_AREA |
#ifndef USE_PANNABLE_AREA |
1014 |
static void |
static void |
1015 |
cb_menu_close(GtkWidget *window, gpointer data) { |
cb_menu_close(GtkWidget *window, gpointer data) { |
1368 |
} |
} |
1369 |
#endif |
#endif |
1370 |
|
|
1371 |
|
#ifndef NO_COPY_N_PASTE |
1372 |
static void |
static void |
1373 |
cb_menu_cut(GtkWidget *widget, gpointer data) { |
cb_menu_cut(GtkWidget *widget, gpointer data) { |
1374 |
appdata_t *appdata = (appdata_t*)data; |
appdata_t *appdata = (appdata_t*)data; |
1413 |
} else |
} else |
1414 |
printf("paste: ERROR, no active buffer\n"); |
printf("paste: ERROR, no active buffer\n"); |
1415 |
} |
} |
1416 |
|
#endif |
1417 |
|
|
1418 |
|
#ifdef USE_STACKABLE_WINDOW |
1419 |
|
typedef struct { |
1420 |
|
appdata_t *appdata; |
1421 |
|
GtkWidget *dialog; |
1422 |
|
} appmenu_context_t; |
1423 |
|
|
1424 |
|
void on_export_mmpoi_clicked(appmenu_context_t *context) { |
1425 |
|
gtk_widget_destroy(context->dialog); |
1426 |
|
while(gtk_events_pending()) |
1427 |
|
gtk_main_iteration(); |
1428 |
|
|
1429 |
|
mmpoi_export(context->appdata); |
1430 |
|
} |
1431 |
|
|
1432 |
|
void on_export_garmin_clicked(appmenu_context_t *context) { |
1433 |
|
gtk_widget_destroy(context->dialog); |
1434 |
|
while(gtk_events_pending()) |
1435 |
|
gtk_main_iteration(); |
1436 |
|
|
1437 |
|
garmin_export(context->appdata); |
1438 |
|
} |
1439 |
|
|
1440 |
|
void on_export_notes_log_clicked(appmenu_context_t *context) { |
1441 |
|
gtk_widget_destroy(context->dialog); |
1442 |
|
while(gtk_events_pending()) |
1443 |
|
gtk_main_iteration(); |
1444 |
|
|
1445 |
|
notes_log_export(context->appdata); |
1446 |
|
} |
1447 |
|
|
1448 |
|
void on_export_clicked(GtkButton *button, appdata_t *appdata) { |
1449 |
|
GtkWidget *but; |
1450 |
|
appmenu_context_t context; |
1451 |
|
|
1452 |
|
context.appdata = appdata; |
1453 |
|
context.dialog = gtk_dialog_new(); |
1454 |
|
|
1455 |
|
gtk_window_set_decorated(GTK_WINDOW(context.dialog), FALSE); |
1456 |
|
|
1457 |
|
but = hildon_button_new_with_text(HILDON_SIZE_AUTO, |
1458 |
|
HILDON_BUTTON_ARRANGEMENT_VERTICAL, |
1459 |
|
_("Export to Maemo Mapper"), |
1460 |
|
_("Save a Maemo Mapper POI file")); |
1461 |
|
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(context.dialog)->vbox), but); |
1462 |
|
g_signal_connect_swapped(but, "clicked", |
1463 |
|
G_CALLBACK(on_export_mmpoi_clicked), &context); |
1464 |
|
|
1465 |
|
but = hildon_button_new_with_text(HILDON_SIZE_AUTO, |
1466 |
|
HILDON_BUTTON_ARRANGEMENT_VERTICAL, |
1467 |
|
_("Export Field Notes"), |
1468 |
|
_("Save a Garmin Field Notes file")); |
1469 |
|
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(context.dialog)->vbox), but); |
1470 |
|
g_signal_connect_swapped(but, "clicked", |
1471 |
|
G_CALLBACK(on_export_notes_log_clicked), &context); |
1472 |
|
|
1473 |
|
|
1474 |
|
but = hildon_button_new_with_text(HILDON_SIZE_AUTO, |
1475 |
|
HILDON_BUTTON_ARRANGEMENT_VERTICAL, |
1476 |
|
_("Export Garmin GPX"), |
1477 |
|
_("Save a GPX file of modified points")); |
1478 |
|
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(context.dialog)->vbox), but); |
1479 |
|
g_signal_connect_swapped(but, "clicked", |
1480 |
|
G_CALLBACK(on_export_garmin_clicked), &context); |
1481 |
|
|
1482 |
|
gtk_widget_show_all(context.dialog); |
1483 |
|
gint result = gtk_dialog_run(GTK_DIALOG(context.dialog)); |
1484 |
|
|
1485 |
|
/* user clicked outside dialog */ |
1486 |
|
if(result == GTK_RESPONSE_DELETE_EVENT) |
1487 |
|
gtk_widget_destroy(context.dialog); |
1488 |
|
} |
1489 |
|
|
1490 |
|
void on_tools_geomath_clicked(appmenu_context_t *context) { |
1491 |
|
gtk_widget_destroy(context->dialog); |
1492 |
|
while(gtk_events_pending()) |
1493 |
|
gtk_main_iteration(); |
1494 |
|
|
1495 |
|
geomath_dialog(context->appdata); |
1496 |
|
} |
1497 |
|
|
1498 |
|
void on_tools_geotext_clicked(appmenu_context_t *context) { |
1499 |
|
gtk_widget_destroy(context->dialog); |
1500 |
|
while(gtk_events_pending()) |
1501 |
|
gtk_main_iteration(); |
1502 |
|
|
1503 |
|
geotext_dialog(context->appdata); |
1504 |
|
} |
1505 |
|
|
1506 |
|
void on_tools_precpos_clicked(appmenu_context_t *context) { |
1507 |
|
gtk_widget_destroy(context->dialog); |
1508 |
|
while(gtk_events_pending()) |
1509 |
|
gtk_main_iteration(); |
1510 |
|
|
1511 |
|
precise_position(context->appdata); |
1512 |
|
} |
1513 |
|
|
1514 |
|
void on_tools_clicked(GtkButton *button, appdata_t *appdata) { |
1515 |
|
GtkWidget *but; |
1516 |
|
appmenu_context_t context; |
1517 |
|
|
1518 |
|
context.appdata = appdata; |
1519 |
|
context.dialog = gtk_dialog_new(); |
1520 |
|
|
1521 |
|
gtk_window_set_decorated(GTK_WINDOW(context.dialog), FALSE); |
1522 |
|
|
1523 |
|
but = hildon_button_new_with_text(HILDON_SIZE_AUTO, |
1524 |
|
HILDON_BUTTON_ARRANGEMENT_VERTICAL, |
1525 |
|
_("Geomath"), |
1526 |
|
_("Geocoordinate calculation")); |
1527 |
|
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(context.dialog)->vbox), but); |
1528 |
|
g_signal_connect_swapped(but, "clicked", |
1529 |
|
G_CALLBACK(on_tools_geomath_clicked), &context); |
1530 |
|
|
1531 |
|
but = hildon_button_new_with_text(HILDON_SIZE_AUTO, |
1532 |
|
HILDON_BUTTON_ARRANGEMENT_VERTICAL, |
1533 |
|
_("Geotext"), |
1534 |
|
_("Text analysis, letter counting etc")); |
1535 |
|
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(context.dialog)->vbox), but); |
1536 |
|
g_signal_connect_swapped(but, "clicked", |
1537 |
|
G_CALLBACK(on_tools_geotext_clicked), &context); |
1538 |
|
|
1539 |
|
|
1540 |
|
but = hildon_button_new_with_text(HILDON_SIZE_AUTO, |
1541 |
|
HILDON_BUTTON_ARRANGEMENT_VERTICAL, |
1542 |
|
_("Precise Position"), |
1543 |
|
_("Calculate a very precise GPS posotions")); |
1544 |
|
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(context.dialog)->vbox), but); |
1545 |
|
g_signal_connect_swapped(but, "clicked", |
1546 |
|
G_CALLBACK(on_tools_precpos_clicked), &context); |
1547 |
|
|
1548 |
|
gtk_widget_show_all(context.dialog); |
1549 |
|
gint result = gtk_dialog_run(GTK_DIALOG(context.dialog)); |
1550 |
|
|
1551 |
|
/* user clicked outside dialog */ |
1552 |
|
if(result == GTK_RESPONSE_DELETE_EVENT) |
1553 |
|
gtk_widget_destroy(context.dialog); |
1554 |
|
} |
1555 |
|
|
1556 |
|
HildonAppMenu *menu_create(appdata_t *appdata, int mode) { |
1557 |
|
GtkWidget *button; |
1558 |
|
HildonAppMenu *menu = HILDON_APP_MENU(hildon_app_menu_new()); |
1559 |
|
|
1560 |
|
/* ------- */ |
1561 |
|
button = gtk_button_new_with_label(_("Settings")); |
1562 |
|
g_signal_connect_after(button, "clicked", G_CALLBACK(cb_menu_settings), |
1563 |
|
appdata); |
1564 |
|
hildon_app_menu_append(menu, GTK_BUTTON(button)); |
1565 |
|
|
1566 |
|
if(mode == MENU_GPXLIST) { |
1567 |
|
button = gtk_button_new_with_label(_("Import file")); |
1568 |
|
g_signal_connect_after(button, "clicked", |
1569 |
|
G_CALLBACK(cb_menu_add), appdata); |
1570 |
|
hildon_app_menu_append(menu, GTK_BUTTON(button)); |
1571 |
|
|
1572 |
|
button = gtk_button_new_with_label(_("Import dir")); |
1573 |
|
g_signal_connect_after(button, "clicked", |
1574 |
|
G_CALLBACK(cb_menu_adddir), appdata); |
1575 |
|
hildon_app_menu_append(menu, GTK_BUTTON(button)); |
1576 |
|
} |
1577 |
|
|
1578 |
|
if(mode == MENU_GPXLIST) { |
1579 |
|
button = gtk_button_new_with_label(_("Export")); |
1580 |
|
g_signal_connect_after(button, "clicked", |
1581 |
|
G_CALLBACK(on_export_clicked), appdata); |
1582 |
|
hildon_app_menu_append(menu, GTK_BUTTON(button)); |
1583 |
|
|
1584 |
|
button = gtk_button_new_with_label(_("Search")); |
1585 |
|
g_signal_connect_after(button, "clicked", |
1586 |
|
G_CALLBACK(cb_menu_search), appdata); |
1587 |
|
hildon_app_menu_append(menu, GTK_BUTTON(button)); |
1588 |
|
} |
1589 |
|
|
1590 |
|
button = gtk_button_new_with_label(_("Tools")); |
1591 |
|
g_signal_connect_after(button, "clicked", |
1592 |
|
G_CALLBACK(on_tools_clicked), appdata); |
1593 |
|
hildon_app_menu_append(menu, GTK_BUTTON(button)); |
1594 |
|
|
1595 |
|
button = gtk_button_new_with_label(_("About")); |
1596 |
|
g_signal_connect_after(button, "clicked", |
1597 |
|
G_CALLBACK(cb_menu_about), appdata); |
1598 |
|
hildon_app_menu_append(menu, GTK_BUTTON(button)); |
1599 |
|
|
1600 |
|
gtk_widget_show(GTK_WIDGET(menu)); |
1601 |
|
|
1602 |
|
return menu; |
1603 |
|
} |
1604 |
|
#else |
1605 |
static void |
static void |
1606 |
cb_menu_export_log(GtkWidget *widget, gpointer data) { |
cb_menu_export_log(GtkWidget *widget, gpointer data) { |
1607 |
appdata_t *appdata = (appdata_t*)data; |
appdata_t *appdata = (appdata_t*)data; |
1622 |
garmin_export(appdata); |
garmin_export(appdata); |
1623 |
} |
} |
1624 |
|
|
1625 |
|
static void |
1626 |
|
cb_menu_geomath(GtkWidget *window, gpointer data) { |
1627 |
|
geomath_dialog((appdata_t *)data); |
1628 |
|
} |
1629 |
|
|
1630 |
|
static void |
1631 |
|
cb_menu_geotext(GtkWidget *window, gpointer data) { |
1632 |
|
geotext_dialog((appdata_t *)data); |
1633 |
|
} |
1634 |
|
|
1635 |
|
static void |
1636 |
|
cb_menu_precpos(GtkWidget *window, gpointer data) { |
1637 |
|
precise_position((appdata_t *)data); |
1638 |
|
} |
1639 |
|
|
1640 |
void menu_create(appdata_t *appdata) { |
void menu_create(appdata_t *appdata) { |
1641 |
GtkWidget *menu, *item; |
GtkWidget *menu, *item; |
1642 |
menu = gtk_menu_new(); |
menu = gtk_menu_new(); |
1643 |
|
|
1644 |
#ifdef USE_MAEMO |
#ifdef USE_BREAD_CRUMB_TRAIL |
1645 |
appdata->menu_import = |
appdata->menu_import = |
1646 |
#endif |
#endif |
1647 |
item = gtk_menu_item_new_with_label(_("Import")); |
item = gtk_menu_item_new_with_label(_("Import")); |
1671 |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_remove), appdata); |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_remove), appdata); |
1672 |
#endif |
#endif |
1673 |
|
|
1674 |
#ifdef USE_MAEMO |
#ifdef USE_BREAD_CRUMB_TRAIL |
1675 |
appdata->menu_export = |
appdata->menu_export = |
1676 |
#endif |
#endif |
1677 |
item = gtk_menu_item_new_with_label(_("Export")); |
item = gtk_menu_item_new_with_label(_("Export")); |
1696 |
g_signal_connect(item, "activate", |
g_signal_connect(item, "activate", |
1697 |
GTK_SIGNAL_FUNC(cb_menu_export_garmin), appdata); |
GTK_SIGNAL_FUNC(cb_menu_export_garmin), appdata); |
1698 |
|
|
1699 |
#ifdef USE_MAEMO |
#ifdef USE_BREAD_CRUMB_TRAIL |
1700 |
appdata->menu_search = |
appdata->menu_search = |
1701 |
#endif |
#endif |
1702 |
item = gtk_menu_item_new_with_label( _("Search...") ); |
item = gtk_menu_item_new_with_label( _("Search...") ); |
1704 |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_search), appdata); |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_search), appdata); |
1705 |
|
|
1706 |
gtk_menu_append(GTK_MENU_SHELL(menu), gtk_separator_menu_item_new()); |
gtk_menu_append(GTK_MENU_SHELL(menu), gtk_separator_menu_item_new()); |
1707 |
|
|
1708 |
|
#ifndef NO_COPY_N_PASTE |
1709 |
/* ----------- copy'n paste submenu ----------------- */ |
/* ----------- copy'n paste submenu ----------------- */ |
1710 |
appdata->clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); |
appdata->clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); |
1711 |
gtk_clipboard_set_can_store(appdata->clipboard, NULL, 0); |
gtk_clipboard_set_can_store(appdata->clipboard, NULL, 0); |
1727 |
gtk_widget_set_sensitive(item, FALSE); |
gtk_widget_set_sensitive(item, FALSE); |
1728 |
gtk_menu_append(GTK_MENU_SHELL(submenu), item); |
gtk_menu_append(GTK_MENU_SHELL(submenu), item); |
1729 |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_paste), appdata); |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_paste), appdata); |
1730 |
|
#endif |
1731 |
|
|
1732 |
item = gtk_menu_item_new_with_label( _("Settings...") ); |
item = gtk_menu_item_new_with_label( _("Settings") ); |
1733 |
gtk_menu_append(GTK_MENU_SHELL(menu), item); |
gtk_menu_append(GTK_MENU_SHELL(menu), item); |
1734 |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_settings), |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_settings), |
1735 |
appdata); |
appdata); |
1790 |
gtk_box_pack_start(GTK_BOX(appdata->vbox), menu_bar, 0, 0, 0); |
gtk_box_pack_start(GTK_BOX(appdata->vbox), menu_bar, 0, 0, 0); |
1791 |
#endif |
#endif |
1792 |
} |
} |
1793 |
|
#endif |
1794 |
|
|
1795 |
/********************* end of menu **********************/ |
/********************* end of menu **********************/ |
1796 |
|
|
2159 |
appdata.vbox = gtk_vbox_new(FALSE, 2); |
appdata.vbox = gtk_vbox_new(FALSE, 2); |
2160 |
gtk_container_add(GTK_CONTAINER(appdata.window), appdata.vbox); |
gtk_container_add(GTK_CONTAINER(appdata.window), appdata.vbox); |
2161 |
|
|
2162 |
|
#ifndef USE_STACKABLE_WINDOW |
2163 |
menu_create(&appdata); |
menu_create(&appdata); |
2164 |
|
#else |
2165 |
|
hildon_window_set_app_menu(HILDON_WINDOW(appdata.window), |
2166 |
|
menu_create(&appdata, MENU_GPXLIST)); |
2167 |
|
#endif |
2168 |
|
|
2169 |
#ifdef USE_BREAD_CRUMB_TRAIL |
#ifdef USE_BREAD_CRUMB_TRAIL |
2170 |
appdata.bct = hildon_bread_crumb_trail_new(); |
appdata.bct = hildon_bread_crumb_trail_new(); |