X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/db43cfa4df71667eeb27da8db6a48d3ab63e2fea..c2cf03332f51a9fa992220124635f737399fba91:/src/uibuilder.c diff --git a/src/uibuilder.c b/src/uibuilder.c index 26d7386e..d79ca435 100644 --- a/src/uibuilder.c +++ b/src/uibuilder.c @@ -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); + 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); + 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; } }