]> git.street.me.uk Git - andy/viking.git/blobdiff - src/acquire.c
Fix <GTK 2.24 combo box usage.
[andy/viking.git] / src / acquire.c
index 90ee3fff6c6f58be6b037ca79b0c95e2f48b3fd2..1a65e91f9f42be58406a0248f910325fef91d3eb 100644 (file)
@@ -95,7 +95,7 @@ static void get_from_anything ( w_and_interface_t *wi )
   gchar *cmd = wi->cmd;
   gchar *extra = wi->extra;
   gboolean result = TRUE;
   gchar *cmd = wi->cmd;
   gchar *extra = wi->extra;
   gboolean result = TRUE;
-  VikTrwLayer *vtl;
+  VikTrwLayer *vtl = NULL;
 
   gboolean creating_new_layer = TRUE;
 
 
   gboolean creating_new_layer = TRUE;
 
@@ -147,8 +147,19 @@ static void get_from_anything ( w_and_interface_t *wi )
     gdk_threads_enter();
     if (w->ok) {
       gtk_label_set_text ( GTK_LABEL(w->status), _("Done.") );
     gdk_threads_enter();
     if (w->ok) {
       gtk_label_set_text ( GTK_LABEL(w->status), _("Done.") );
-      if ( creating_new_layer )
-       vik_aggregate_layer_add_layer( vik_layers_panel_get_top_layer(w->vlp), VIK_LAYER(vtl));
+      if ( creating_new_layer ) {
+       /* Only create the layer if it actually contains anything useful */
+       if ( g_hash_table_size (vik_trw_layer_get_tracks(vtl)) ||
+            g_hash_table_size (vik_trw_layer_get_waypoints(vtl)) )
+         vik_aggregate_layer_add_layer( vik_layers_panel_get_top_layer(w->vlp), VIK_LAYER(vtl));
+       else
+         gtk_label_set_text ( GTK_LABEL(w->status), _("No data.") );
+      }
+      /* View this data if available and is desired */
+      if ( vtl && source_interface->autoview ) {
+       vik_trw_layer_auto_set_view ( vtl, vik_layers_panel_get_viewport(w->vlp) );
+       vik_layers_panel_emit_update (w->vlp);
+      }
       if ( source_interface->keep_dialog_open ) {
         gtk_dialog_set_response_sensitive ( GTK_DIALOG(w->dialog), GTK_RESPONSE_ACCEPT, TRUE );
         gtk_dialog_set_response_sensitive ( GTK_DIALOG(w->dialog), GTK_RESPONSE_REJECT, FALSE );
       if ( source_interface->keep_dialog_open ) {
         gtk_dialog_set_response_sensitive ( GTK_DIALOG(w->dialog), GTK_RESPONSE_ACCEPT, TRUE );
         gtk_dialog_set_response_sensitive ( GTK_DIALOG(w->dialog), GTK_RESPONSE_REJECT, FALSE );
@@ -214,7 +225,8 @@ static void acquire ( VikWindow *vw, VikLayersPanel *vlp, VikViewport *vvp, VikD
   GtkWidget *dialog = NULL;
   GtkWidget *status;
   gchar *cmd, *extra;
   GtkWidget *dialog = NULL;
   GtkWidget *status;
   gchar *cmd, *extra;
-  gchar *cmd_off, *extra_off;
+  gchar *cmd_off = NULL;
+  gchar *extra_off = NULL;
   acq_dialog_widgets_t *w;
   gpointer user_data;
 
   acq_dialog_widgets_t *w;
   gpointer user_data;
 
@@ -247,9 +259,18 @@ static void acquire ( VikWindow *vw, VikLayersPanel *vlp, VikViewport *vvp, VikD
   if ( source_interface->add_setup_widgets_func ) {
     dialog = gtk_dialog_new_with_buttons ( "", GTK_WINDOW(vw), 0, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL );
 
   if ( source_interface->add_setup_widgets_func ) {
     dialog = gtk_dialog_new_with_buttons ( "", GTK_WINDOW(vw), 0, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL );
 
+    gtk_dialog_set_default_response ( GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT );
+    GtkWidget *response_w = NULL;
+#if GTK_CHECK_VERSION (2, 20, 0)
+    response_w = gtk_dialog_get_widget_for_response ( GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT );
+#endif
+
     source_interface->add_setup_widgets_func(dialog, vvp, user_data);
     gtk_window_set_title ( GTK_WINDOW(dialog), _(source_interface->window_title) );
 
     source_interface->add_setup_widgets_func(dialog, vvp, user_data);
     gtk_window_set_title ( GTK_WINDOW(dialog), _(source_interface->window_title) );
 
+    if ( response_w )
+      gtk_widget_grab_focus ( response_w );
+
     if ( gtk_dialog_run ( GTK_DIALOG(dialog) ) != GTK_RESPONSE_ACCEPT ) {
       source_interface->cleanup_func(user_data);
       gtk_widget_destroy(dialog);
     if ( gtk_dialog_run ( GTK_DIALOG(dialog) ) != GTK_RESPONSE_ACCEPT ) {
       source_interface->cleanup_func(user_data);
       gtk_widget_destroy(dialog);
@@ -331,6 +352,7 @@ static void acquire ( VikWindow *vw, VikLayersPanel *vlp, VikViewport *vvp, VikD
   w->ok = TRUE;
   status = gtk_label_new (_("Status: detecting gpsbabel"));
   gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(dialog)->vbox), status, FALSE, FALSE, 5 );
   w->ok = TRUE;
   status = gtk_label_new (_("Status: detecting gpsbabel"));
   gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(dialog)->vbox), status, FALSE, FALSE, 5 );
+  gtk_dialog_set_default_response ( GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT );
   gtk_widget_show_all(status);
   w->status = status;
 
   gtk_widget_show_all(status);
   w->status = status;
 
@@ -393,7 +415,7 @@ static GtkWidget *acquire_build_menu ( VikWindow *vw, VikLayersPanel *vlp, VikVi
     if ( filters[i]->inputtype == inputtype ) {
       if ( ! menu_item ) { /* do this just once, but return NULL if no filters */
         menu = gtk_menu_new();
     if ( filters[i]->inputtype == inputtype ) {
       if ( ! menu_item ) { /* do this just once, but return NULL if no filters */
         menu = gtk_menu_new();
-        menu_item = gtk_menu_item_new_with_label ( menu_title );
+        menu_item = gtk_menu_item_new_with_mnemonic ( menu_title );
         gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu );
       }
 
         gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu );
       }
 
@@ -410,7 +432,7 @@ static GtkWidget *acquire_build_menu ( VikWindow *vw, VikLayersPanel *vlp, VikVi
 
 GtkWidget *a_acquire_trwlayer_menu (VikWindow *vw, VikLayersPanel *vlp, VikViewport *vvp, VikTrwLayer *vtl)
 {
 
 GtkWidget *a_acquire_trwlayer_menu (VikWindow *vw, VikLayersPanel *vlp, VikViewport *vvp, VikTrwLayer *vtl)
 {
-  return acquire_build_menu ( vw, vlp, vvp, vtl, NULL, "Filter", VIK_DATASOURCE_INPUTTYPE_TRWLAYER );
+  return acquire_build_menu ( vw, vlp, vvp, vtl, NULL, "_Filter", VIK_DATASOURCE_INPUTTYPE_TRWLAYER );
 }
 
 GtkWidget *a_acquire_trwlayer_track_menu (VikWindow *vw, VikLayersPanel *vlp, VikViewport *vvp, VikTrwLayer *vtl)
 }
 
 GtkWidget *a_acquire_trwlayer_track_menu (VikWindow *vw, VikLayersPanel *vlp, VikViewport *vvp, VikTrwLayer *vtl)