From 9cd56de865473c5eea34a232bdf9b223592962fc Mon Sep 17 00:00:00 2001 From: Alexander Schwinn Date: Fri, 13 Mar 2020 00:30:54 +0100 Subject: [PATCH 2/2] Added properties for max-length and original-filename --- libxfce4ui/libxfce4ui.symbols | 2 - libxfce4ui/xfce-filename-input.c | 80 +++++++++++++++++++++++++++----- libxfce4ui/xfce-filename-input.h | 6 --- 3 files changed, 69 insertions(+), 19 deletions(-) diff --git a/libxfce4ui/libxfce4ui.symbols b/libxfce4ui/libxfce4ui.symbols index e4017b1..80744ff 100644 --- a/libxfce4ui/libxfce4ui.symbols +++ b/libxfce4ui/libxfce4ui.symbols @@ -108,8 +108,6 @@ xfce_filename_input_get_type xfce_filename_input_get_text xfce_filename_input_sensitise_widget xfce_filename_input_desensitise_widget -xfce_filename_input_set_original_filename -xfce_filename_input_set_max_length xfce_filename_input_check xfce_filename_input_get_entry #endif diff --git a/libxfce4ui/xfce-filename-input.c b/libxfce4ui/xfce-filename-input.c index a11eb69..7ecd085 100644 --- a/libxfce4ui/xfce-filename-input.c +++ b/libxfce4ui/xfce-filename-input.c @@ -49,6 +49,14 @@ #include #include +/* Property identifiers */ +enum +{ + PROP_0, + PROP_ORIGINAL_FILE_NAME, + PROP_MAX_LENGTH, + N_PROPERTIES +}; /* Signal identifiers */ enum @@ -59,14 +67,22 @@ enum }; -static void xfce_filename_input_changed (GtkEditable *editable, - gpointer data); -static void xfce_filename_input_finalize (GObject *object); +static void xfce_filename_input_changed (GtkEditable *editable, + gpointer data); +static void xfce_filename_input_finalize (GObject *object); +static gboolean xfce_filename_input_entry_undo (GtkWidget *widget, + GdkEvent *event, + gpointer data); +static void xfce_filename_input_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void xfce_filename_input_set_original_filename (XfceFilenameInput *filename_input, + const gchar *filename); +static void xfce_filename_input_set_max_length (XfceFilenameInput *filename_input, + gint max_length); -static gboolean xfce_filename_input_entry_undo (GtkWidget *widget, - GdkEvent *event, - gpointer data); struct _XfceFilenameInputClass @@ -103,6 +119,23 @@ xfce_filename_input_class_init (XfceFilenameInputClass *klass) GObjectClass *gobject_class = (GObjectClass *)klass; gobject_class->finalize = xfce_filename_input_finalize; + gobject_class->set_property = xfce_filename_input_set_property; + + g_object_class_install_property (gobject_class, + PROP_ORIGINAL_FILE_NAME, + g_param_spec_string ("original-file-name", + "original-file-name", + "original-file-name", + "", /*default*/ + G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (gobject_class, + PROP_MAX_LENGTH, + g_param_spec_int ("max-length", + "max-length", + NULL, + 1, G_MAXINT, 30, /* min, max, default */ + G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); /** * XfceFilenameInput::text-valid: @@ -176,6 +209,32 @@ xfce_filename_input_init (XfceFilenameInput *filename_input) G_CALLBACK (xfce_filename_input_changed), filename_input); } + + +static void +xfce_filename_input_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + XfceFilenameInput *filename_input = XFCE_FILENAME_INPUT (object); + + switch (prop_id) + { + case PROP_ORIGINAL_FILE_NAME: + xfce_filename_input_set_original_filename (filename_input, g_value_get_string (value)); + break; + case PROP_MAX_LENGTH: + xfce_filename_input_set_max_length (filename_input, g_value_get_int (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + + + static void xfce_filename_input_finalize (GObject *object) { @@ -202,19 +261,18 @@ xfce_filename_input_check (XfceFilenameInput *filename_input) g_signal_emit_by_name (filename_input->entry, "changed", 0); } -void +static void xfce_filename_input_set_original_filename (XfceFilenameInput *filename_input, - gchar *filename) + const gchar *filename) { - /* we only allow the original filename to be set once */ - if (filename == NULL || filename_input->original_filename != NULL) + if (filename == NULL) return; filename_input->original_filename = g_strdup (filename); gtk_entry_set_text (filename_input->entry, filename_input->original_filename); } -void +static void xfce_filename_input_set_max_length (XfceFilenameInput *filename_input, gint max_length) { diff --git a/libxfce4ui/xfce-filename-input.h b/libxfce4ui/xfce-filename-input.h index b9c798a..5ed858a 100644 --- a/libxfce4ui/xfce-filename-input.h +++ b/libxfce4ui/xfce-filename-input.h @@ -46,12 +46,6 @@ void xfce_filename_input_sensitise_widget (GtkWidget *widge void xfce_filename_input_desensitise_widget (GtkWidget *widget); -void xfce_filename_input_set_original_filename (XfceFilenameInput *filename_input, - gchar *filename); - -void xfce_filename_input_set_max_length (XfceFilenameInput *filename_input, - gint max_length); - void xfce_filename_input_check (XfceFilenameInput *filename_input); GtkEntry *xfce_filename_input_get_entry (XfceFilenameInput *filename_input); -- 2.25.0