Diff of /trunk/src/main.c

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

revision 190 by harbaum, Mon Jul 6 19:17:24 2009 UTC revision 218 by harbaum, Mon Jul 13 12:15:51 2009 UTC
# Line 35  Line 35 
35  #include "banner.h"  #include "banner.h"
36    
37  /* disable/enable main screen control dependant on presence of open project */  /* disable/enable main screen control dependant on presence of open project */
38  static void main_ui_enable(appdata_t *appdata) {  void main_ui_enable(appdata_t *appdata) {
39    gboolean project_valid = (appdata->project != NULL);    gboolean project_valid = (appdata->project != NULL);
40    gboolean osm_valid = (appdata->osm != NULL);    gboolean osm_valid = (appdata->osm != NULL);
41    
# Line 62  static void main_ui_enable(appdata_t *ap Line 62  static void main_ui_enable(appdata_t *ap
62    
63    if(appdata->iconbar && appdata->iconbar->toolbar)    if(appdata->iconbar && appdata->iconbar->toolbar)
64      gtk_widget_set_sensitive(appdata->iconbar->toolbar, osm_valid);      gtk_widget_set_sensitive(appdata->iconbar->toolbar, osm_valid);
   
65    /* disable all menu entries related to map */    /* disable all menu entries related to map */
66    gtk_widget_set_sensitive(appdata->submenu_map, project_valid);    gtk_widget_set_sensitive(appdata->submenu_map, project_valid);
67    gtk_widget_set_sensitive(appdata->menu_item_map_upload, osm_valid);    gtk_widget_set_sensitive(appdata->menu_item_map_upload, osm_valid);
# Line 75  static void main_ui_enable(appdata_t *ap Line 74  static void main_ui_enable(appdata_t *ap
74    gtk_widget_set_sensitive(appdata->submenu_view, osm_valid);    gtk_widget_set_sensitive(appdata->submenu_view, osm_valid);
75    gtk_widget_set_sensitive(appdata->submenu_wms, osm_valid);    gtk_widget_set_sensitive(appdata->submenu_wms, osm_valid);
76    
77    #ifdef ZOOM_BUTTONS
78      gtk_widget_set_sensitive(appdata->btn_zoom_in, osm_valid);
79      gtk_widget_set_sensitive(appdata->btn_zoom_out, osm_valid);
80    #endif
81    
82    if(!project_valid)    if(!project_valid)
83      statusbar_set(appdata, _("Please load or create a project"), FALSE);      statusbar_set(appdata, _("Please load or create a project"), FALSE);
84  }  }
# Line 101  cb_menu_about(GtkMenuItem *item, gpointe Line 105  cb_menu_about(GtkMenuItem *item, gpointe
105    const gchar *authors[] = {    const gchar *authors[] = {
106      "Till Harbaum <till@harbaum.org>",      "Till Harbaum <till@harbaum.org>",
107      "Andrew Chadwick <andrewc-osm2go@piffle.org>",      "Andrew Chadwick <andrewc-osm2go@piffle.org>",
108        "Marcus Bauer <marcus.bauer@gmail.com>",
109        "John Stowers <john.stowers@gmail.com>",
110      NULL };      NULL };
111    
112    const gchar *artists[] = {    const gchar *artists[] = {
# Line 270  cb_menu_undo_changes(GtkMenuItem *item, Line 276  cb_menu_undo_changes(GtkMenuItem *item,
276  }  }
277    
278  static void  static void
279  cb_menu_osm_relations(GtkMenuItem *item, gpointer data) {  cb_menu_osm_relations(GtkMenuItem *item, appdata_t *appdata) {
280    relation_list((appdata_t*)data);    /* list relations of all objects */
281      relation_list(GTK_WIDGET(appdata->window), appdata, NULL);
282  }  }
283    
284  #if !defined(USE_HILDON) || (MAEMO_VERSION_MAJOR < 5)  #if !defined(USE_HILDON) || (MAEMO_VERSION_MAJOR < 5)
# Line 604  void menu_create(appdata_t *appdata) { Line 611  void menu_create(appdata_t *appdata) {
611      0, 0, TRUE, FALSE, FALSE      0, 0, TRUE, FALSE, FALSE
612    );    );
613    
614    #ifndef USE_HILDON
615    menu_append_new_item(    menu_append_new_item(
616      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_project_wizard), _("_Wizard"),      appdata, submenu, GTK_SIGNAL_FUNC(cb_menu_project_wizard), _("_Wizard"),
617      GTK_STOCK_NEW, "<OSM2Go-Main>/Project/Wizard",      GTK_STOCK_NEW, "<OSM2Go-Main>/Project/Wizard",
618      0, 0, TRUE, FALSE, FALSE      0, 0, TRUE, FALSE, FALSE
619    );    );
620    #endif
621    
622    /* --------------- view menu ------------------- */    /* --------------- view menu ------------------- */
623    
# Line 882  static gboolean no_icon_get_toggle(appda Line 891  static gboolean no_icon_get_toggle(appda
891    
892  static gboolean enable_gps_get_toggle(appdata_t *appdata) {  static gboolean enable_gps_get_toggle(appdata_t *appdata) {
893    if(!appdata)           return FALSE;    if(!appdata)           return FALSE;
894    return appdata->gps_enabled;    if(!appdata->settings) return FALSE;
895      return appdata->settings->enable_gps;
896  }  }
897    
898  static gboolean follow_gps_get_toggle(appdata_t *appdata) {  static gboolean follow_gps_get_toggle(appdata_t *appdata) {
# Line 909  static GtkWidget *app_menu_create(appdat Line 919  static GtkWidget *app_menu_create(appdat
919      } else {      } else {
920        button = hildon_check_button_new(HILDON_SIZE_AUTO);        button = hildon_check_button_new(HILDON_SIZE_AUTO);
921        gtk_button_set_label(GTK_BUTTON(button), _(menu_entries->label));        gtk_button_set_label(GTK_BUTTON(button), _(menu_entries->label));
922          printf("requesting check for %s: %p\n", menu_entries->label,
923                 menu_entries->toggle);
924        hildon_check_button_set_active(HILDON_CHECK_BUTTON(button),        hildon_check_button_set_active(HILDON_CHECK_BUTTON(button),
925                                       menu_entries->toggle(appdata));                                       menu_entries->toggle(appdata));
926        g_signal_connect_after(button, "toggled",        g_signal_connect_after(button, "toggled",
# Line 935  void on_submenu_view_clicked(GtkButton * Line 947  void on_submenu_view_clicked(GtkButton *
947                          GTK_WINDOW(appdata->window));                          GTK_WINDOW(appdata->window));
948  }  }
949    
950    void on_submenu_map_clicked(GtkButton *button, appdata_t *appdata) {
951      hildon_app_menu_popup(HILDON_APP_MENU(appdata->app_menu_map),
952                            GTK_WINDOW(appdata->window));
953    }
954    
955  void on_submenu_wms_clicked(GtkButton *button, appdata_t *appdata) {  void on_submenu_wms_clicked(GtkButton *button, appdata_t *appdata) {
956    hildon_app_menu_popup(HILDON_APP_MENU(appdata->app_menu_wms),    hildon_app_menu_popup(HILDON_APP_MENU(appdata->app_menu_wms),
957                          GTK_WINDOW(appdata->window));                          GTK_WINDOW(appdata->window));
# Line 945  void on_submenu_track_clicked(GtkButton Line 962  void on_submenu_track_clicked(GtkButton
962                          GTK_WINDOW(appdata->window));                          GTK_WINDOW(appdata->window));
963  }  }
964    
 /* -- the view submenu -- */  
965  #define APP_OFFSET(a)  offsetof(appdata_t, a)  #define APP_OFFSET(a)  offsetof(appdata_t, a)
966  #define SIMPLE_ENTRY(a,b)     { a, NULL, TRUE,   NULL, 0, G_CALLBACK(b) }  #define SIMPLE_ENTRY(a,b)     { a, NULL, TRUE,   NULL, 0, G_CALLBACK(b) }
967  #define ENABLED_ENTRY(a,b,c) { a, NULL, TRUE,  NULL, APP_OFFSET(c), G_CALLBACK(b) }  #define ENABLED_ENTRY(a,b,c)  { a, NULL, TRUE,  NULL, APP_OFFSET(c), G_CALLBACK(b) }
968  #define DISABLED_ENTRY(a,b,c) { a, NULL, FALSE,  NULL, APP_OFFSET(c), G_CALLBACK(b) }  #define DISABLED_ENTRY(a,b,c) { a, NULL, FALSE,  NULL, APP_OFFSET(c), G_CALLBACK(b) }
969  #define TOGGLE_ENTRY(a,b,c)  { a, NULL, TRUE, c, 0, G_CALLBACK(b) }  #define TOGGLE_ENTRY(a,b,c)   { a, NULL, TRUE, c, 0, G_CALLBACK(b) }
970  #define DISABLED_TOGGLE_ENTRY(a,b,c,d)  { a, NULL, FALSE, c, APP_OFFSET(d), G_CALLBACK(b) }  #define DISABLED_TOGGLE_ENTRY(a,b,c,d)  \
971  #define ENABLED_TOGGLE_ENTRY(a,b,c,d)  { a, NULL, TRUE, c, APP_OFFSET(d), G_CALLBACK(b) }                                { a, NULL, FALSE, c, APP_OFFSET(d), G_CALLBACK(b) }
972    #define ENABLED_TOGGLE_ENTRY(a,b,c,d) \
973                                  { a, NULL, TRUE, c, APP_OFFSET(d), G_CALLBACK(b) }
974  #define LAST_ENTRY            { NULL, NULL, FALSE, NULL, 0, NULL }  #define LAST_ENTRY            { NULL, NULL, FALSE, NULL, 0, NULL }
975    
976    /* -- the view submenu -- */
977  static const menu_entry_t submenu_view[] = {  static const menu_entry_t submenu_view[] = {
978    SIMPLE_ENTRY("Zoom in",         cb_menu_zoomin),    SIMPLE_ENTRY("Zoom in",         cb_menu_zoomin),
979    SIMPLE_ENTRY("Zoom out",        cb_menu_zoomout),    SIMPLE_ENTRY("Zoom out",        cb_menu_zoomout),
# Line 973  static const menu_entry_t submenu_view[] Line 992  static const menu_entry_t submenu_view[]
992    LAST_ENTRY    LAST_ENTRY
993  };  };
994    
995    /* -- the map submenu -- */
996    static const menu_entry_t submenu_map[] = {
997      ENABLED_ENTRY("Upload",                cb_menu_upload, menu_item_map_upload),
998      SIMPLE_ENTRY("Download",               cb_menu_download),
999      ENABLED_ENTRY("Save local changes",    cb_menu_save_changes,
1000                                               menu_item_map_save_changes),
1001      ENABLED_ENTRY("Discard local changes", cb_menu_undo_changes,
1002                                               menu_item_map_undo_changes),
1003      ENABLED_ENTRY("Relations",             cb_menu_osm_relations,
1004                                               menu_item_map_relations),
1005    
1006      LAST_ENTRY
1007    };
1008    
1009  /* -- the wms submenu -- */  /* -- the wms submenu -- */
1010  static const menu_entry_t submenu_wms[] = {  static const menu_entry_t submenu_wms[] = {
1011    SIMPLE_ENTRY("Import",   cb_menu_wms_import),    SIMPLE_ENTRY("Import",   cb_menu_wms_import),
# Line 998  static const menu_entry_t submenu_track[ Line 1031  static const menu_entry_t submenu_track[
1031    
1032  /* -- the applications main menu -- */  /* -- the applications main menu -- */
1033  static const menu_entry_t main_menu[] = {  static const menu_entry_t main_menu[] = {
1034    SIMPLE_ENTRY("About",  cb_menu_about),    SIMPLE_ENTRY("About",   cb_menu_about),
1035    ENABLED_ENTRY("View",  on_submenu_view_clicked,  submenu_view),    SIMPLE_ENTRY("Project", cb_menu_project_open),
1036    ENABLED_ENTRY("WMS",   on_submenu_wms_clicked,   submenu_wms),    ENABLED_ENTRY("View",   on_submenu_view_clicked,  submenu_view),
1037    ENABLED_ENTRY("Track", on_submenu_track_clicked, track.submenu_track),    ENABLED_ENTRY("Map",    on_submenu_map_clicked,   submenu_map),
1038      ENABLED_ENTRY("WMS",    on_submenu_wms_clicked,   submenu_wms),
1039      ENABLED_ENTRY("Track",  on_submenu_track_clicked, track.submenu_track),
1040    
1041    LAST_ENTRY    LAST_ENTRY
1042  };  };
1043    
1044  void menu_create(appdata_t *appdata) {  void menu_create(appdata_t *appdata) {
1045    HildonAppMenu *menu = HILDON_APP_MENU(hildon_app_menu_new());    HildonAppMenu *menu = HILDON_APP_MENU(hildon_app_menu_new());
1046    
1047    /* build menu/submenus */    /* build menu/submenus */
1048    menu = HILDON_APP_MENU(app_menu_create(appdata, main_menu));    menu = HILDON_APP_MENU(app_menu_create(appdata, main_menu));
1049    appdata->app_menu_wms = app_menu_create(appdata, submenu_wms);    appdata->app_menu_wms   = app_menu_create(appdata, submenu_wms);
1050    appdata->app_menu_view = app_menu_create(appdata, submenu_view);    appdata->app_menu_map   = app_menu_create(appdata, submenu_map);
1051      appdata->app_menu_view  = app_menu_create(appdata, submenu_view);
1052    appdata->app_menu_track = app_menu_create(appdata, submenu_track);    appdata->app_menu_track = app_menu_create(appdata, submenu_track);
1053    
1054      /* enable/disable some entries according to settings */
1055      if(appdata && appdata->settings)
1056        gtk_widget_set_sensitive(appdata->track.menu_item_track_follow_gps,
1057                                 appdata->settings->enable_gps);
1058    
1059    hildon_window_set_app_menu(HILDON_WINDOW(appdata->window), menu);    hildon_window_set_app_menu(HILDON_WINDOW(appdata->window), menu);
1060  }  }
1061  #endif  #endif
# Line 1248  int main(int argc, char *argv[]) { Line 1289  int main(int argc, char *argv[]) {
1289    gtk_box_pack_start(GTK_BOX(vbox), map, TRUE, TRUE, 0);    gtk_box_pack_start(GTK_BOX(vbox), map, TRUE, TRUE, 0);
1290  #endif  #endif
1291    
1292    #ifdef ZOOM_BUTTONS
1293      GtkWidget *zhbox = gtk_hbox_new(FALSE, 0);
1294    
1295      gtk_box_pack_start_defaults(GTK_BOX(zhbox), statusbar_new(&appdata));
1296    
1297      /* ---- add zoom in button right of statusbar ---- */
1298      appdata.btn_zoom_in = gtk_button_new();
1299      gtk_button_set_image(GTK_BUTTON(appdata.btn_zoom_in),
1300                           gtk_image_new_from_stock(GTK_STOCK_ZOOM_IN, GTK_ICON_SIZE_MENU));
1301      g_signal_connect(appdata.btn_zoom_in, "clicked", G_CALLBACK(cb_menu_zoomin), &appdata);
1302      gtk_box_pack_start(GTK_BOX(zhbox), appdata.btn_zoom_in, FALSE, FALSE, 0);
1303    
1304      /* ---- add zoom out button right of statusbar ---- */
1305      appdata.btn_zoom_out = gtk_button_new();
1306      gtk_button_set_image(GTK_BUTTON(appdata.btn_zoom_out),
1307                           gtk_image_new_from_stock(GTK_STOCK_ZOOM_OUT, GTK_ICON_SIZE_MENU));
1308      g_signal_connect(appdata.btn_zoom_out, "clicked", G_CALLBACK(cb_menu_zoomout), &appdata);
1309      gtk_box_pack_start(GTK_BOX(zhbox), appdata.btn_zoom_out, FALSE, FALSE, 0);
1310    
1311    
1312      gtk_box_pack_start(GTK_BOX(vbox), zhbox, FALSE, FALSE, 0);
1313    #else
1314    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);
1315    #endif
1316    
1317  #ifndef PORTRAIT  #ifndef PORTRAIT
1318    gtk_box_pack_start(GTK_BOX(hbox), iconbar_new(&appdata), FALSE, FALSE, 0);    gtk_box_pack_start(GTK_BOX(hbox), iconbar_new(&appdata), FALSE, FALSE, 0);

Legend:
Removed from v.190  
changed lines
  Added in v.218