[PATCH 37/66] kconfig: gconf: use GtkFileChooser in on_save_as1_activate()

Masahiro Yamada posted 66 patches 3 months, 2 weeks ago
[PATCH 37/66] kconfig: gconf: use GtkFileChooser in on_save_as1_activate()
Posted by Masahiro Yamada 3 months, 2 weeks ago
gtk_file_selection_new() is deprecated, and gtk_file_chooser_dialog_new()
should be used instead. [1]

[1]: https://gitlab.gnome.org/GNOME/gtk/-/blob/2.24.33/docs/reference/gtk/tmpl/gtkfilesel.sgml?ref_type=tags#L156

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/gconf.c | 56 ++++++++++++++++++++---------------------
 1 file changed, 27 insertions(+), 29 deletions(-)

diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c
index f33f39d50f3d..b019711142c3 100644
--- a/scripts/kconfig/gconf.c
+++ b/scripts/kconfig/gconf.c
@@ -198,38 +198,36 @@ static void on_save_activate(GtkMenuItem *menuitem, gpointer user_data)
 	conf_write_autoconf(0);
 }
 
-
-static void
-store_filename(GtkFileSelection * file_selector, gpointer user_data)
-{
-	const gchar *fn;
-
-	fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION
-					     (user_data));
-
-	if (conf_write(fn))
-		text_insert_msg("Error", "Unable to save configuration !");
-
-	gtk_widget_destroy(GTK_WIDGET(user_data));
-}
-
 static void on_save_as1_activate(GtkMenuItem *menuitem, gpointer user_data)
 {
-	GtkWidget *fs;
+	GtkWidget *dialog;
+	GtkFileChooser *chooser;
+	gint res;
 
-	fs = gtk_file_selection_new("Save file as...");
-	g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button),
-			 "clicked",
-			 G_CALLBACK(store_filename), (gpointer) fs);
-	g_signal_connect_swapped(GTK_OBJECT
-				 (GTK_FILE_SELECTION(fs)->ok_button),
-				 "clicked", G_CALLBACK(gtk_widget_destroy),
-				 (gpointer) fs);
-	g_signal_connect_swapped(GTK_OBJECT
-				 (GTK_FILE_SELECTION(fs)->cancel_button),
-				 "clicked", G_CALLBACK(gtk_widget_destroy),
-				 (gpointer) fs);
-	gtk_widget_show(fs);
+	dialog = gtk_file_chooser_dialog_new("Save file as...",
+					     GTK_WINDOW(user_data),
+					     GTK_FILE_CHOOSER_ACTION_SAVE,
+					     "_Cancel", GTK_RESPONSE_CANCEL,
+					     "_Save", GTK_RESPONSE_ACCEPT,
+					     NULL);
+
+	chooser = GTK_FILE_CHOOSER(dialog);
+	gtk_file_chooser_set_filename(chooser, conf_get_configname());
+
+	res = gtk_dialog_run(GTK_DIALOG(dialog));
+	if (res == GTK_RESPONSE_ACCEPT) {
+		char *filename;
+
+		filename = gtk_file_chooser_get_filename(chooser);
+
+		if (conf_write(filename))
+			text_insert_msg("Error",
+					"Unable to save configuration !");
+
+		g_free(filename);
+	}
+
+	gtk_widget_destroy(dialog);
 }
 
 static void on_show_name1_activate(GtkMenuItem *menuitem, gpointer user_data)
-- 
2.43.0
Re: [PATCH 37/66] kconfig: gconf: use GtkFileChooser in on_save_as1_activate()
Posted by Randy Dunlap 3 months, 1 week ago

On 6/24/25 8:05 AM, Masahiro Yamada wrote:
> gtk_file_selection_new() is deprecated, and gtk_file_chooser_dialog_new()
> should be used instead. [1]
> 
> [1]: https://gitlab.gnome.org/GNOME/gtk/-/blob/2.24.33/docs/reference/gtk/tmpl/gtkfilesel.sgml?ref_type=tags#L156
> 
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>


Acked-by: Randy Dunlap <rdunlap@infradead.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org>



> ---
> 
>  scripts/kconfig/gconf.c | 56 ++++++++++++++++++++---------------------
>  1 file changed, 27 insertions(+), 29 deletions(-)
> 
> diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c
> index f33f39d50f3d..b019711142c3 100644
> --- a/scripts/kconfig/gconf.c
> +++ b/scripts/kconfig/gconf.c
> @@ -198,38 +198,36 @@ static void on_save_activate(GtkMenuItem *menuitem, gpointer user_data)
>  	conf_write_autoconf(0);
>  }
>  
> -
> -static void
> -store_filename(GtkFileSelection * file_selector, gpointer user_data)
> -{
> -	const gchar *fn;
> -
> -	fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION
> -					     (user_data));
> -
> -	if (conf_write(fn))
> -		text_insert_msg("Error", "Unable to save configuration !");
> -
> -	gtk_widget_destroy(GTK_WIDGET(user_data));
> -}
> -
>  static void on_save_as1_activate(GtkMenuItem *menuitem, gpointer user_data)
>  {
> -	GtkWidget *fs;
> +	GtkWidget *dialog;
> +	GtkFileChooser *chooser;
> +	gint res;
>  
> -	fs = gtk_file_selection_new("Save file as...");
> -	g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button),
> -			 "clicked",
> -			 G_CALLBACK(store_filename), (gpointer) fs);
> -	g_signal_connect_swapped(GTK_OBJECT
> -				 (GTK_FILE_SELECTION(fs)->ok_button),
> -				 "clicked", G_CALLBACK(gtk_widget_destroy),
> -				 (gpointer) fs);
> -	g_signal_connect_swapped(GTK_OBJECT
> -				 (GTK_FILE_SELECTION(fs)->cancel_button),
> -				 "clicked", G_CALLBACK(gtk_widget_destroy),
> -				 (gpointer) fs);
> -	gtk_widget_show(fs);
> +	dialog = gtk_file_chooser_dialog_new("Save file as...",
> +					     GTK_WINDOW(user_data),
> +					     GTK_FILE_CHOOSER_ACTION_SAVE,
> +					     "_Cancel", GTK_RESPONSE_CANCEL,
> +					     "_Save", GTK_RESPONSE_ACCEPT,
> +					     NULL);
> +
> +	chooser = GTK_FILE_CHOOSER(dialog);
> +	gtk_file_chooser_set_filename(chooser, conf_get_configname());
> +
> +	res = gtk_dialog_run(GTK_DIALOG(dialog));
> +	if (res == GTK_RESPONSE_ACCEPT) {
> +		char *filename;
> +
> +		filename = gtk_file_chooser_get_filename(chooser);
> +
> +		if (conf_write(filename))
> +			text_insert_msg("Error",
> +					"Unable to save configuration !");
> +
> +		g_free(filename);
> +	}
> +
> +	gtk_widget_destroy(dialog);
>  }
>  
>  static void on_show_name1_activate(GtkMenuItem *menuitem, gpointer user_data)

-- 
~Randy