]> git.street.me.uk Git - andy/viking.git/blobdiff - src/uibuilder.c
Fix mislabelled distance markers when using Nautical Miles.
[andy/viking.git] / src / uibuilder.c
index 67a7bcd1b654a06aa267e5f9d698a514ca9dcbe2..d79ca43531c8fb1565cecb173bf262dc9257485c 100644 (file)
@@ -188,7 +188,7 @@ GtkWidget *a_uibuilder_new_widget ( VikLayerParam *param, VikLayerParamData data
     case VIK_LAYER_WIDGET_FILEENTRY:
       if ( param->type == VIK_LAYER_PARAM_STRING )
       {
-        rv = vik_file_entry_new (GTK_FILE_CHOOSER_ACTION_OPEN, GPOINTER_TO_INT(param->widget_data));
+        rv = vik_file_entry_new (GTK_FILE_CHOOSER_ACTION_OPEN, GPOINTER_TO_INT(param->widget_data), NULL, NULL);
         if ( vlpd.s )
           vik_file_entry_set_filename ( VIK_FILE_ENTRY(rv), vlpd.s );
       }
@@ -196,7 +196,7 @@ GtkWidget *a_uibuilder_new_widget ( VikLayerParam *param, VikLayerParamData data
     case VIK_LAYER_WIDGET_FOLDERENTRY:
       if ( param->type == VIK_LAYER_PARAM_STRING )
       {
-        rv = vik_file_entry_new (GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, VF_FILTER_NONE);
+        rv = vik_file_entry_new (GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, VF_FILTER_NONE, NULL, NULL);
         if ( vlpd.s )
           vik_file_entry_set_filename ( VIK_FILE_ENTRY(rv), vlpd.s );
       }
@@ -219,6 +219,15 @@ GtkWidget *a_uibuilder_new_widget ( VikLayerParam *param, VikLayerParamData data
         gtk_scale_set_digits ( GTK_SCALE(rv), scale->digits );
         gtk_range_set_value ( GTK_RANGE(rv), init_val );
       }
+
+    case VIK_LAYER_WIDGET_BUTTON:
+      if ( param->type == VIK_LAYER_PARAM_PTR && param->widget_data ) {
+        rv = gtk_button_new_with_label ( param->widget_data );
+        g_signal_connect ( G_OBJECT(rv), "clicked", G_CALLBACK (vlpd.ptr), param->extra_widget_data );
+      }
+      break;
+
+    default: break;
   }
   if ( rv && !gtk_widget_get_tooltip_text ( rv ) ) {
     if ( param->tooltip )
@@ -300,6 +309,7 @@ VikLayerParamData a_uibuilder_widget_get_value ( GtkWidget *widget, VikLayerPara
       else
         rv.d = gtk_range_get_value ( GTK_RANGE(widget) );
       break;
+    default: break;
   }
 
   // Perform conversion if necessary
@@ -463,20 +473,23 @@ gint a_uibuilder_properties_factory ( const gchar *dialog_name,
         }
       }
 
-      gtk_widget_destroy ( dialog ); /* hide before redrawing. */
       g_free ( widgets );
       g_free ( labels );
       g_free ( change_values );
       if ( tables )
         g_free ( tables );
+      gtk_widget_destroy ( dialog ); /* hide before redrawing. */
 
       return must_redraw ? 2 : 3; /* user clicked OK */
     }
 
+    g_free ( widgets );
+    g_free ( labels );
+    g_free ( change_values );
     if ( tables )
       g_free ( tables );
     gtk_widget_destroy ( dialog );
-    g_free ( widgets );
+
     return 0;
   }
 }