23 |
#include "appdata.h" |
#include "appdata.h" |
24 |
|
|
25 |
/* disable/enable main screen control dependant on presence of open project */ |
/* disable/enable main screen control dependant on presence of open project */ |
26 |
static void main_project_loaded(appdata_t *appdata) { |
static void main_ui_enable(appdata_t *appdata) { |
27 |
gboolean loaded = (appdata->project != NULL); |
gboolean project_valid = (appdata->project != NULL); |
28 |
|
gboolean osm_valid = (appdata->osm != NULL); |
29 |
|
|
30 |
/* cancel any action in progress */ |
/* cancel any action in progress */ |
31 |
if(GTK_WIDGET_FLAGS(appdata->iconbar->cancel) & GTK_SENSITIVE) |
if(GTK_WIDGET_FLAGS(appdata->iconbar->cancel) & GTK_SENSITIVE) |
34 |
/* ---- set project name as window title ----- */ |
/* ---- set project name as window title ----- */ |
35 |
#ifndef USE_HILDON |
#ifndef USE_HILDON |
36 |
char *str = NULL; |
char *str = NULL; |
37 |
if(loaded) |
if(project_valid) |
38 |
str = g_strdup_printf("OSM2Go - %s", appdata->project->name); |
str = g_strdup_printf("OSM2Go - %s", appdata->project->name); |
39 |
else |
else |
40 |
str = g_strdup_printf("OSM2Go"); |
str = g_strdup_printf("OSM2Go"); |
42 |
gtk_window_set_title(GTK_WINDOW(appdata->window), str); |
gtk_window_set_title(GTK_WINDOW(appdata->window), str); |
43 |
g_free(str); |
g_free(str); |
44 |
#else |
#else |
45 |
if(loaded) |
if(project_valid) |
46 |
gtk_window_set_title(GTK_WINDOW(appdata->window), appdata->project->name); |
gtk_window_set_title(GTK_WINDOW(appdata->window), appdata->project->name); |
47 |
else |
else |
48 |
gtk_window_set_title(GTK_WINDOW(appdata->window), ""); |
gtk_window_set_title(GTK_WINDOW(appdata->window), ""); |
49 |
#endif |
#endif |
50 |
|
|
51 |
if(appdata->iconbar && appdata->iconbar->toolbar) |
if(appdata->iconbar && appdata->iconbar->toolbar) |
52 |
gtk_widget_set_sensitive(appdata->iconbar->toolbar, loaded); |
gtk_widget_set_sensitive(appdata->iconbar->toolbar, osm_valid); |
53 |
|
|
54 |
/* disable all menu entries related to map */ |
/* disable all menu entries related to map */ |
55 |
gtk_widget_set_sensitive(appdata->track.menu_track, loaded); |
gtk_widget_set_sensitive(appdata->menu_osm, project_valid); |
56 |
gtk_widget_set_sensitive(appdata->menu_view, loaded); |
gtk_widget_set_sensitive(appdata->menu_item_osm_upload, osm_valid); |
57 |
gtk_widget_set_sensitive(appdata->menu_osm, loaded); |
gtk_widget_set_sensitive(appdata->menu_item_osm_diff, osm_valid); |
58 |
gtk_widget_set_sensitive(appdata->menu_wms, loaded); |
gtk_widget_set_sensitive(appdata->track.menu_track, osm_valid); |
59 |
gtk_widget_set_sensitive(appdata->menu_map, loaded); |
gtk_widget_set_sensitive(appdata->menu_view, osm_valid); |
60 |
gtk_widget_set_sensitive(appdata->menu_item_project_close, loaded); |
gtk_widget_set_sensitive(appdata->menu_wms, osm_valid); |
61 |
|
gtk_widget_set_sensitive(appdata->menu_map, osm_valid); |
62 |
|
gtk_widget_set_sensitive(appdata->menu_item_project_close, project_valid); |
63 |
|
|
64 |
if(!loaded) |
if(!project_valid) |
65 |
statusbar_set(appdata, _("Plase load or create a project"), FALSE); |
statusbar_set(appdata, _("Plase load or create a project"), FALSE); |
66 |
} |
} |
67 |
|
|
84 |
cb_menu_project_open(GtkWidget *window, gpointer data) { |
cb_menu_project_open(GtkWidget *window, gpointer data) { |
85 |
appdata_t *appdata = (appdata_t*)data; |
appdata_t *appdata = (appdata_t*)data; |
86 |
project_load(appdata, NULL); |
project_load(appdata, NULL); |
87 |
main_project_loaded(appdata); |
main_ui_enable(appdata); |
88 |
} |
} |
89 |
|
|
90 |
static void |
static void |
91 |
cb_menu_project_close(GtkWidget *window, gpointer data) { |
cb_menu_project_close(GtkWidget *window, gpointer data) { |
92 |
appdata_t *appdata = (appdata_t*)data; |
appdata_t *appdata = (appdata_t*)data; |
93 |
project_close(appdata); |
project_close(appdata); |
94 |
main_project_loaded(appdata); |
main_ui_enable(appdata); |
95 |
} |
} |
96 |
|
|
97 |
static void |
static void |
139 |
static void |
static void |
140 |
cb_menu_download(GtkWidget *window, gpointer data) { |
cb_menu_download(GtkWidget *window, gpointer data) { |
141 |
appdata_t *appdata = (appdata_t*)data; |
appdata_t *appdata = (appdata_t*)data; |
142 |
if(!appdata->osm || !appdata->project) return; |
if(!appdata->project) return; |
143 |
|
|
144 |
/* redraw the entire map by destroying all map items and redrawing them */ |
/* if we have valid osm data loaded: save state first */ |
145 |
diff_save(appdata->project, appdata->osm); |
if(appdata->osm) { |
146 |
map_clear(appdata, MAP_LAYER_OBJECTS_ONLY); |
/* redraw the entire map by destroying all map items and redrawing them */ |
147 |
osm_free(&appdata->icon, appdata->osm); |
diff_save(appdata->project, appdata->osm); |
148 |
|
map_clear(appdata, MAP_LAYER_OBJECTS_ONLY); |
149 |
|
osm_free(&appdata->icon, appdata->osm); |
150 |
|
|
151 |
|
appdata->osm = NULL; |
152 |
|
} |
153 |
|
|
154 |
// download |
// download |
155 |
osm_download(GTK_WIDGET(appdata->window), appdata->project); |
if(osm_download(GTK_WIDGET(appdata->window), appdata->project)) { |
156 |
|
appdata->osm = osm_parse(appdata->project->osm); |
157 |
|
diff_restore(appdata, appdata->project, appdata->osm); |
158 |
|
map_paint(appdata); |
159 |
|
} |
160 |
|
|
161 |
appdata->osm = osm_parse(appdata->project->osm); |
main_ui_enable(appdata); |
|
diff_restore(appdata, appdata->project, appdata->osm); |
|
|
map_paint(appdata); |
|
162 |
} |
} |
163 |
|
|
164 |
static void |
static void |
383 |
|
|
384 |
item = gtk_menu_item_new_with_label( _("Zoom -") ); |
item = gtk_menu_item_new_with_label( _("Zoom -") ); |
385 |
gtk_menu_append(GTK_MENU_SHELL(submenu), item); |
gtk_menu_append(GTK_MENU_SHELL(submenu), item); |
386 |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_zoomout), appdata); |
g_signal_connect(item, "activate", |
387 |
|
GTK_SIGNAL_FUNC(cb_menu_zoomout), appdata); |
388 |
|
|
389 |
/* -------------------- OSM submenu -------------------- */ |
/* -------------------- OSM submenu -------------------- */ |
390 |
|
|
393 |
submenu = gtk_menu_new(); |
submenu = gtk_menu_new(); |
394 |
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu); |
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu); |
395 |
|
|
396 |
item = gtk_menu_item_new_with_label( _("Upload...") ); |
appdata->menu_item_osm_upload = item = |
397 |
|
gtk_menu_item_new_with_label( _("Upload...") ); |
398 |
gtk_menu_append(GTK_MENU_SHELL(submenu), item); |
gtk_menu_append(GTK_MENU_SHELL(submenu), item); |
399 |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_upload), appdata); |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_upload), appdata); |
400 |
|
|
401 |
item = gtk_menu_item_new_with_label( _("Download...") ); |
item = gtk_menu_item_new_with_label( _("Download...") ); |
402 |
gtk_menu_append(GTK_MENU_SHELL(submenu), item); |
gtk_menu_append(GTK_MENU_SHELL(submenu), item); |
403 |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_download), appdata); |
g_signal_connect(item, "activate", |
404 |
|
GTK_SIGNAL_FUNC(cb_menu_download), appdata); |
405 |
|
|
406 |
gtk_menu_append(GTK_MENU_SHELL(submenu), gtk_separator_menu_item_new()); |
gtk_menu_append(GTK_MENU_SHELL(submenu), gtk_separator_menu_item_new()); |
407 |
|
|
408 |
item = gtk_menu_item_new_with_label( _("Save diff file") ); |
appdata->menu_item_osm_diff = item = |
409 |
|
gtk_menu_item_new_with_label( _("Save diff file") ); |
410 |
gtk_menu_append(GTK_MENU_SHELL(submenu), item); |
gtk_menu_append(GTK_MENU_SHELL(submenu), item); |
411 |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_save_changes), |
g_signal_connect(item, "activate", GTK_SIGNAL_FUNC(cb_menu_save_changes), |
412 |
appdata); |
appdata); |
730 |
if(appdata.settings->project) |
if(appdata.settings->project) |
731 |
project_load(&appdata, appdata.settings->project); |
project_load(&appdata, appdata.settings->project); |
732 |
|
|
733 |
main_project_loaded(&appdata); |
main_ui_enable(&appdata); |
734 |
|
|
735 |
/* ------------ jump into main loop ---------------- */ |
/* ------------ jump into main loop ---------------- */ |
736 |
|
|
737 |
gtk_main(); |
gtk_main(); |
738 |
|
|
739 |
|
puts("gtk_main() left"); |
740 |
|
|
741 |
track_save(appdata.project, appdata.track.track); |
track_save(appdata.project, appdata.track.track); |
742 |
|
|
743 |
/* save a diff if there are dirty entries */ |
/* save a diff if there are dirty entries */ |