[gnome-commander] Migrate deprecated GnomeFileEntry to GtkFileChooserButton, fixing #29
- From: Uwe Scholz <uwescholz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-commander] Migrate deprecated GnomeFileEntry to GtkFileChooserButton, fixing #29
- Date: Sat, 11 Apr 2020 16:13:10 +0000 (UTC)
commit 10d07b28d7f38b79ec641a1bc2370ec2468b013c
Author: Uwe Scholz <u scholz83 gmx de>
Date: Sun Mar 22 22:33:46 2020 +0100
Migrate deprecated GnomeFileEntry to GtkFileChooserButton, fixing #29
libgcmd/libgcmd-widget-factory.cc | 49 ++++++++++++++++++++--------
libgcmd/libgcmd-widget-factory.h | 4 ++-
src/dialogs/gnome-cmd-options-dialog.cc | 30 ++++++++++++-----
src/dialogs/gnome-cmd-prepare-xfer-dialog.cc | 22 +++++--------
4 files changed, 68 insertions(+), 37 deletions(-)
---
diff --git a/libgcmd/libgcmd-widget-factory.cc b/libgcmd/libgcmd-widget-factory.cc
index f77938cc..4b868a1b 100644
--- a/libgcmd/libgcmd-widget-factory.cc
+++ b/libgcmd/libgcmd-widget-factory.cc
@@ -1,4 +1,4 @@
-/**
+/**
* @file libgcmd-widget-factory.cc
* @copyright (C) 2001-2006 Marcus Bjurman\n
* @copyright (C) 2007-2012 Piotr Eljasiak\n
@@ -356,23 +356,44 @@ GtkWidget *create_scale (GtkWidget *parent, const gchar *name, gint value, gint
}
-GtkWidget *create_file_entry (GtkWidget *parent, const gchar *name, const gchar *value)
+GtkWidget *create_directory_chooser_button (GtkWidget *parent, const gchar *name, const gchar *value)
{
- GtkWidget *fentry, *entry;
+ GtkWidget *chooser;
+ chooser = gtk_file_chooser_button_new (_("Folder selection"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+ if (value == nullptr)
+ {
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), "");
+ }
+ else
+ {
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), value);
+ }
+ g_object_ref (chooser);
+ g_object_set_data_full (G_OBJECT (parent), name, chooser, g_object_unref);
+ gtk_widget_show (chooser);
- fentry = gnome_file_entry_new (NULL, NULL);
- g_object_ref (fentry);
- g_object_set_data_full (G_OBJECT (parent), "fileentry", fentry, g_object_unref);
- gtk_widget_show (fentry);
+ return chooser;
+}
- entry = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (fentry));
- g_object_ref (entry);
- g_object_set_data_full (G_OBJECT (parent), name, entry, g_object_unref);
- if (value)
- gtk_entry_set_text (GTK_ENTRY (entry), value);
- gtk_widget_show (entry);
- return fentry;
+GtkWidget *create_file_chooser_button (GtkWidget *parent, const gchar *name, const gchar *value)
+{
+ GtkWidget *chooser;
+ chooser = gtk_file_chooser_button_new (_("File selection"), GTK_FILE_CHOOSER_ACTION_OPEN);
+ if (value == nullptr)
+ {
+ gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (chooser), "");
+ }
+ else
+ {
+ gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (chooser), value);
+ }
+
+ g_object_ref (chooser);
+ g_object_set_data_full (G_OBJECT (parent), name, chooser, g_object_unref);
+ gtk_widget_show (chooser);
+
+ return chooser;
}
diff --git a/libgcmd/libgcmd-widget-factory.h b/libgcmd/libgcmd-widget-factory.h
index 1b5e6bf4..872dda0e 100644
--- a/libgcmd/libgcmd-widget-factory.h
+++ b/libgcmd/libgcmd-widget-factory.h
@@ -109,7 +109,9 @@ GtkWidget *create_icon_entry (GtkWidget *parent, const gchar *name, const gchar
GtkWidget *create_scale (GtkWidget *parent, const gchar *name, gint value, gint min, gint max);
-GtkWidget *create_file_entry (GtkWidget *parent, const gchar *name, const gchar *value);
+GtkWidget *create_directory_chooser_button (GtkWidget *parent, const gchar *name, const gchar *value);
+
+GtkWidget *create_file_chooser_button (GtkWidget *parent, const gchar *name, const gchar *value);
GtkWidget *create_clist (GtkWidget *parent, const gchar *name, gint cols, gint rowh, GtkSignalFunc
on_row_selected, GtkSignalFunc on_row_moved);
diff --git a/src/dialogs/gnome-cmd-options-dialog.cc b/src/dialogs/gnome-cmd-options-dialog.cc
index 59290786..7bc19a61 100644
--- a/src/dialogs/gnome-cmd-options-dialog.cc
+++ b/src/dialogs/gnome-cmd-options-dialog.cc
@@ -851,7 +851,7 @@ static GtkWidget *create_layout_tab (GtkWidget *parent, GnomeCmdData::Options &c
table_add (table, spin, 1, 0, (GtkAttachOptions) GTK_FILL);
scale = create_scale (parent, "iconquality_scale", cfg.icon_scale_quality, 0, 3);
table_add (table, scale, 1, 1, (GtkAttachOptions) GTK_FILL);
- entry = create_file_entry (parent, "theme_icondir_entry", cfg.theme_icon_dir);
+ entry = create_directory_chooser_button (parent, "theme_icondir_entry", cfg.theme_icon_dir);
table_add (table, entry, 1, 2, (GtkAttachOptions)0);
label = create_label (parent, _("Icon size:"));
@@ -873,7 +873,7 @@ inline void store_layout_options (GtkWidget *dialog, GnomeCmdData::Options &cfg)
{
GtkWidget *iconsize_spin = lookup_widget (dialog, "iconsize_spin");
GtkWidget *iconquality_scale = lookup_widget (dialog, "iconquality_scale");
- GtkWidget *theme_icondir_entry = lookup_widget (dialog, "theme_icondir_entry");
+ GtkWidget *theme_icondir_chooser = lookup_widget (dialog, "theme_icondir_entry");
GtkWidget *row_height_spin = lookup_widget (dialog, "row_height_spin");
GtkWidget *use_ls = lookup_widget (dialog, "use_ls_colors");
@@ -892,7 +892,8 @@ inline void store_layout_options (GtkWidget *dialog, GnomeCmdData::Options &cfg)
const gchar *list_font = gtk_font_button_get_font_name (GTK_FONT_BUTTON (list_font_picker));
cfg.set_list_font (list_font);
- cfg.set_theme_icon_dir (gtk_entry_get_text (GTK_ENTRY (theme_icondir_entry)));
+ gchar* icondir = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (theme_icondir_chooser));
+ cfg.set_theme_icon_dir (g_filename_to_utf8(icondir, -1, nullptr, nullptr, nullptr));
#if defined (__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wcast-align"
@@ -913,6 +914,8 @@ inline void store_layout_options (GtkWidget *dialog, GnomeCmdData::Options &cfg)
#if defined (__GNUC__)
#pragma GCC diagnostic pop
#endif
+
+ g_free(icondir);
}
@@ -1805,17 +1808,24 @@ static void on_device_dialog_cancel (GtkButton *button, GtkWidget *dialog)
}
-inline void get_device_dialog_values (GtkWidget *dialog, gchar **alias, gchar **device, gchar **mountp,
gchar **icon_path)
+inline void get_device_dialog_values (GtkWidget *dialog, gchar **alias, gchar **device_utf8,
+ gchar **mountp_utf8, gchar **icon_path)
{
GtkWidget *alias_entry = lookup_widget (dialog, "alias_entry");
GtkWidget *device_entry = lookup_widget (dialog, "device_entry");
GtkWidget *mountp_entry = lookup_widget (dialog, "mountp_entry");
GtkWidget *icon_entry = lookup_widget (dialog, "device_iconentry");
+ gchar* device = (gchar *) gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (device_entry));
+ gchar* mountp = (gchar *) gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (mountp_entry));
+
*alias = (gchar *) gtk_entry_get_text (GTK_ENTRY (alias_entry));
- *device = (gchar *) gtk_entry_get_text (GTK_ENTRY (device_entry));
- *mountp = (gchar *) gtk_entry_get_text (GTK_ENTRY (mountp_entry));
+ *device_utf8 = g_filename_to_utf8(device, -1, nullptr, nullptr, nullptr);
+ *mountp_utf8 = g_filename_to_utf8(mountp, -1, nullptr, nullptr, nullptr);
*icon_path = gnome_icon_entry_get_filename (GNOME_ICON_ENTRY (icon_entry));
+
+ g_free(device);
+ g_free(mountp);
}
@@ -1835,6 +1845,8 @@ static void on_add_device_dialog_ok (GtkButton *button, GtkWidget *dialog)
gnome_cmd_con_list_get()->add(dev);
+ g_free (device);
+ g_free (mountp);
g_free (icon_path);
}
@@ -1855,6 +1867,8 @@ static void on_edit_device_dialog_ok (GtkButton *button, GtkWidget *dialog)
update_device_in_list (GTK_CLIST (clist), dev, alias, device, mountp, icon_path);
gtk_widget_destroy (dialog);
+ g_free (device);
+ g_free (mountp);
g_free (icon_path);
}
@@ -1892,11 +1906,11 @@ static GtkWidget *create_device_dialog (GnomeCmdConDevice *dev, GtkSignalFunc on
gtk_widget_grab_focus (entry);
if (dev) s = gnome_cmd_con_device_get_device_fn (dev);
- entry = create_file_entry (dialog, "device_entry", s);
+ entry = create_file_chooser_button (dialog, "device_entry", s);
table_add (table, entry, 1, 1, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
if (dev) s = gnome_cmd_con_device_get_mountp (dev);
- entry = create_file_entry (dialog, "mountp_entry", s);
+ entry = create_directory_chooser_button (dialog, "mountp_entry", s);
table_add (table, entry, 1, 2, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
if (dev) s = gnome_cmd_con_device_get_icon_path (dev);
diff --git a/src/dialogs/gnome-cmd-prepare-xfer-dialog.cc b/src/dialogs/gnome-cmd-prepare-xfer-dialog.cc
index 07a8a6a7..555925e7 100644
--- a/src/dialogs/gnome-cmd-prepare-xfer-dialog.cc
+++ b/src/dialogs/gnome-cmd-prepare-xfer-dialog.cc
@@ -1,4 +1,4 @@
-/**
+/**
* @file gnome-cmd-prepare-xfer-dialog.cc
* @copyright (C) 2001-2006 Marcus Bjurman\n
* @copyright (C) 2007-2012 Piotr Eljasiak\n
@@ -48,7 +48,9 @@ inline gboolean con_device_has_path (FileSelectorID fsID, GnomeCmdCon *&dev, con
static void on_ok (GtkButton *button, GnomeCmdPrepareXferDialog *dialog)
{
GnomeCmdCon *con = gnome_cmd_dir_get_connection (dialog->default_dest_dir);
- gchar *user_path = g_strstrip (g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->dest_dir_entry))));
+ gchar *user_path = g_strstrip (g_strdup (gtk_label_get_text (GTK_LABEL (dialog->dest_dir_entry))));
+ gchar *user_directory_path = g_strstrip (g_strdup (gtk_label_get_text (GTK_LABEL
(dialog->dest_dir_entry))));
+
gchar *dest_path = NULL;
gchar *dest_fn = NULL;
gint user_path_len;
@@ -255,10 +257,6 @@ static gboolean on_dest_dir_entry_keypressed (GtkEntry *entry, GdkEventKey *even
gtk_signal_emit_by_name (GTK_OBJECT (dialog->ok_button), "clicked", dialog, NULL);
return TRUE;
- case GDK_F5:
- case GDK_F6:
- gnome_cmd_toggle_file_name_selection (dialog->dest_dir_entry);
- return TRUE;
default:
return FALSE;
}
@@ -309,11 +307,9 @@ static void init (GnomeCmdPrepareXferDialog *dialog)
dialog->dest_dir_frame = create_category (GTK_WIDGET (dialog), dest_dir_vbox, "");
gnome_cmd_dialog_add_category (GNOME_CMD_DIALOG (dialog), dialog->dest_dir_frame);
- GtkWidget *dest_dir_fileentry = create_file_entry (GTK_WIDGET (dialog), "file-entry", "");
- gtk_box_pack_start (GTK_BOX (dest_dir_vbox), dest_dir_fileentry, FALSE, FALSE, 0);
- dialog->dest_dir_entry = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (dest_dir_fileentry));
-
- g_signal_connect (dialog->dest_dir_entry, "key-press-event", G_CALLBACK (on_dest_dir_entry_keypressed),
dialog);
+ GtkWidget *dest_dir_file_label = create_label (GTK_WIDGET (dialog), "");
+ gtk_box_pack_start (GTK_BOX (dest_dir_vbox), dest_dir_file_label, FALSE, FALSE, 0);
+ dialog->dest_dir_entry = dest_dir_file_label;
// options
GtkWidget *options_hbox = create_hbox (GTK_WIDGET (dialog), TRUE, 6);
@@ -430,11 +426,9 @@ GtkWidget *gnome_cmd_prepare_xfer_dialog_new (GnomeCmdFileSelector *from, GnomeC
if (dest_str)
{
- gtk_entry_set_text (GTK_ENTRY (dialog->dest_dir_entry), dest_str);
+ gtk_label_set_text (GTK_LABEL (dialog->dest_dir_entry), dest_str);
g_free (dest_str);
}
- gtk_widget_grab_focus (GTK_WIDGET (dialog->dest_dir_entry));
-
return GTK_WIDGET (dialog);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]