Diff of /trunk/src/main.c

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

revision 2 by harbaum, Sat Jun 20 11:44:14 2009 UTC revision 5 by harbaum, Tue Jun 23 12:53:07 2009 UTC
# Line 551  void cachelist_dialog(appdata_t *appdata Line 551  void cachelist_dialog(appdata_t *appdata
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
# Line 1007  cb_menu_adddir(GtkWidget *window, gpoint Line 1010  cb_menu_adddir(GtkWidget *window, gpoint
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) {
# Line 1427  cb_menu_paste(GtkWidget *widget, gpointe Line 1415  cb_menu_paste(GtkWidget *widget, gpointe
1415  }  }
1416  #endif  #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;
# Line 1447  cb_menu_export_garmin(GtkWidget *widget, Line 1622  cb_menu_export_garmin(GtkWidget *widget,
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"));
# Line 1481  void menu_create(appdata_t *appdata) { Line 1671  void menu_create(appdata_t *appdata) {
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"));
# Line 1506  void menu_create(appdata_t *appdata) { Line 1696  void menu_create(appdata_t *appdata) {
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...") );
# Line 1539  void menu_create(appdata_t *appdata) { Line 1729  void menu_create(appdata_t *appdata) {
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  #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);
# Line 1600  void menu_create(appdata_t *appdata) { Line 1790  void menu_create(appdata_t *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    
# Line 1968  int main(int argc, char *argv[]) { Line 2159  int main(int argc, char *argv[]) {
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();

Legend:
Removed from v.2  
changed lines
  Added in v.5