X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/8c3faf1b2c5ecb747deda1fde371444844da2982..80d0ff2bdf827e903afebf0bf2c687c485e0a743:/src/vikwindow.c?ds=sidebyside diff --git a/src/vikwindow.c b/src/vikwindow.c index fe61e9a4..a8aea04b 100644 --- a/src/vikwindow.c +++ b/src/vikwindow.c @@ -22,6 +22,7 @@ #include "background.h" #include "acquire.h" #include "datasources.h" +#include "googlesearch.h" #define VIKING_TITLE " - Viking" @@ -40,6 +41,8 @@ #define make_dir(dir) mkdir(dir,0777) #endif +#define VIKING_WINDOW_WIDTH 1000 +#define VIKING_WINDOW_HEIGHT 800 #define DRAW_IMAGE_DEFAULT_WIDTH 1280 #define DRAW_IMAGE_DEFAULT_HEIGHT 1024 #define DRAW_IMAGE_DEFAULT_SAVE_AS_PNG TRUE @@ -106,6 +109,7 @@ static void register_vik_icons (GtkIconFactory *icon_factory); static void load_file ( GtkAction *a, VikWindow *vw ); static gboolean save_file_as ( GtkAction *a, VikWindow *vw ); static gboolean save_file ( GtkAction *a, VikWindow *vw ); +static gboolean save_file_and_exit ( GtkAction *a, VikWindow *vw ); static gboolean window_save ( VikWindow *vw ); struct _VikWindow { @@ -181,6 +185,11 @@ GType vik_window_get_type (void) return vw_type; } +VikViewport * vik_window_viewport(VikWindow *vw) +{ + return(vw->viking_vvp); +} + void vik_window_selected_layer(VikWindow *vw, VikLayer *vl) { int i, j, tool_count; @@ -276,7 +285,7 @@ static void window_init ( VikWindow *vw ) g_signal_connect_swapped (G_OBJECT(vw->viking_vvp), "motion_notify_event", G_CALLBACK(draw_mouse_motion), vw); g_signal_connect_swapped (G_OBJECT(vw->viking_vlp), "update", G_CALLBACK(draw_update), vw); - gtk_window_set_default_size ( GTK_WINDOW(vw), 1000, 800); + gtk_window_set_default_size ( GTK_WINDOW(vw), VIKING_WINDOW_WIDTH, VIKING_WINDOW_HEIGHT); hpaned = gtk_hpaned_new (); gtk_paned_add1 ( GTK_PANED(hpaned), GTK_WIDGET (vw->viking_vlp) ); @@ -300,7 +309,11 @@ VikWindow *vik_window_new () static gboolean delete_event( VikWindow *vw ) { +#ifdef VIKING_PROMPT_IF_MODIFIED if ( vw->modified ) +#else + if (0) +#endif { GtkDialog *dia; dia = GTK_DIALOG ( gtk_message_dialog_new ( GTK_WINDOW(vw), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, @@ -1078,7 +1091,11 @@ static void load_file ( GtkAction *a, VikWindow *vw ) if ( gtk_dialog_run ( GTK_DIALOG(vw->open_dia) ) == GTK_RESPONSE_OK ) { gtk_widget_hide ( vw->open_dia ); +#ifdef VIKING_PROMPT_IF_MODIFIED if ( (vw->modified || vw->filename) && newwindow ) +#else + if ( vw->filename && newwindow ) +#endif g_signal_emit ( G_OBJECT(vw), window_signals[VW_OPENWINDOW_SIGNAL], 0, gtk_file_selection_get_selections (GTK_FILE_SELECTION(vw->open_dia) ) ); else { gchar **files = gtk_file_selection_get_selections (GTK_FILE_SELECTION(vw->open_dia) ); @@ -1156,6 +1173,11 @@ static void acquire_from_gc ( GtkAction *a, VikWindow *vw ) a_acquire(vw, vw->viking_vlp, vw->viking_vvp, &vik_datasource_gc_interface ); } +static void goto_address( GtkAction *a, VikWindow *vw) +{ + a_google_search(vw, vw->viking_vlp, vw->viking_vvp); +} + static void clear_cb ( GtkAction *a, VikWindow *vw ) { vik_layers_panel_clear ( vw->viking_vlp ); @@ -1169,6 +1191,16 @@ static void window_close ( GtkAction *a, VikWindow *vw ) gtk_widget_destroy ( GTK_WIDGET(vw) ); } +static gboolean save_file_and_exit ( GtkAction *a, VikWindow *vw ) +{ + if (save_file( NULL, vw)) { + window_close( NULL, vw); + return(TRUE); + } + else + return(FALSE); +} + static void zoom_to_cb ( GtkAction *a, VikWindow *vw ) { gdouble xmpp = vik_viewport_get_xmpp ( vw->viking_vvp ), ympp = vik_viewport_get_ympp ( vw->viking_vvp ); @@ -1566,7 +1598,9 @@ static GtkActionEntry entries[] = { { "GenImg", GTK_STOCK_CLEAR, "_Generate Image File", NULL, "Save a snapshot of the workspace into a file", (GCallback)draw_to_image_file_cb }, { "GenImgDir", GTK_STOCK_DND_MULTIPLE, "Generate _Directory of Images", NULL, "FIXME:IMGDIR", (GCallback)draw_to_image_dir_cb }, { "Exit", GTK_STOCK_QUIT, "E_xit", "W", "Exit the program", (GCallback)window_close }, + { "SaveExit", GTK_STOCK_QUIT, "Save and Exit", NULL, "Save and Exit the program", (GCallback)save_file_and_exit }, + { "GoogleMapsSearch", GTK_STOCK_GO_FORWARD, "Go To Google Maps location", NULL, "Go to address/place using Google Maps search", (GCallback)goto_address }, { "GotoLL", GTK_STOCK_QUIT, "_Go to Lat\\/Lon...", NULL, "Go to arbitrary lat\\/lon coordinate", (GCallback)draw_goto_cb }, { "GotoUTM", GTK_STOCK_QUIT, "Go to UTM...", NULL, "Go to arbitrary UTM coordinate", (GCallback)draw_goto_cb }, { "SetBGColor",GTK_STOCK_SELECT_COLOR, "Set Background Color...", NULL, NULL, (GCallback)set_bg_color },