[nautilus-actions] Prepare with XDS drag and drop



commit 9c6604ecf0985b1d77a1ff28a95fd86f5634e1f0
Author: Pierre Wieser <pwieser trychlos org>
Date:   Thu Oct 1 19:59:28 2009 +0200

    Prepare with XDS drag and drop

 ChangeLog              |   29 +++++++++++++++++++++++++++++
 src/common/na-utils.c  |   31 ++++++++++++++++++++++++++++---
 src/common/na-utils.h  |    1 +
 src/nact/base-window.c |   37 ++++++++++++++++++++++++++++---------
 src/nact/base-window.h |    1 +
 5 files changed, 87 insertions(+), 12 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 3b93c48..6b87967 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,32 @@
+2009-10-01 Pierre Wieser <pwieser trychlos org>
+
+	* src/common/na-utils.c:
+	* src/common/na-utils.h (na_utils_lines_to_string_list):
+	New function to handle uri lists.
+
+	* src/common/na-iio-provider.c:
+	* src/common/na-pivot.c:
+	* src/common/na-iprefs.c:
+	* src/common/na-iprefs.h:
+	* src/nact/nact-assistant-import.c:
+	* src/nact/nact-preferences-editor.c:
+	All preferences managed here are renamed as IPREFS_xxx.
+
+	* src/common/na-iprefs.c:
+	* src/common/na-iprefs.h (na_iprefs_get_import_mode,
+	na_iprefs_set_import_mode): New functions.
+
+	* src/common/na-xml-writer.c:
+	Replace g_assert() with g_return_if_fail().
+
+	* src/nact/base-window.c:
+	* src/nact/base-window.h (base_window_signal_connect_after):
+	New function.
+
+	* src/nact/nact-preferences-editor.c:
+	* src/nact/nautilus-actions-config-tool.ui:
+	Display in Preferences editor import mode preferences.
+
 2009-09-30 Pierre Wieser <pwieser trychlos org>
 
 	* data/nautilus-actions.schemas.in:
diff --git a/src/common/na-utils.c b/src/common/na-utils.c
index a9b055c..f54bfef 100644
--- a/src/common/na-utils.c
+++ b/src/common/na-utils.c
@@ -38,6 +38,8 @@
 
 #include "na-utils.h"
 
+static GSList *text_to_string_list( const gchar *text, const gchar *separator, const gchar *default_value );
+
 /**
  * na_utils_find_in_list:
  * @list: the GSList of strings to be searched.
@@ -195,17 +197,40 @@ na_utils_string_list_to_text( GSList *strlist )
 GSList *
 na_utils_text_to_string_list( const gchar *text )
 {
+	return( text_to_string_list( text, ";", "*" ));
+}
+
+/**
+ * na_utils_lines_to_string_list:
+ * @text: a buffer which contains embedded newlines.
+ *
+ * Returns: a list of strings from the buffer.
+ *
+ * The returned list should be na_utils_free_string_list() by the caller.
+ */
+GSList *
+na_utils_lines_to_string_list( const gchar *text )
+{
+	return( text_to_string_list( text, "\n", NULL ));
+}
+
+/*
+ * split a text buffer in lines
+ */
+static GSList *
+text_to_string_list( const gchar *text, const gchar *separator, const gchar *default_value )
+{
 	GSList *strlist = NULL;
 	gchar **tokens, **iter;
 	gchar *tmp;
 	gchar *source = g_strdup( text );
 
 	tmp = g_strstrip( source );
-	if( !strlen( tmp )){
-		strlist = g_slist_append( strlist, g_strdup( "*" ));
+	if( !strlen( tmp ) && default_value ){
+		strlist = g_slist_append( strlist, g_strdup( default_value ));
 
 	} else {
-		tokens = g_strsplit( source, ";", -1 );
+		tokens = g_strsplit( source, separator, -1 );
 		iter = tokens;
 
 		while( *iter ){
diff --git a/src/common/na-utils.h b/src/common/na-utils.h
index daeb19f..eecb1ac 100644
--- a/src/common/na-utils.h
+++ b/src/common/na-utils.h
@@ -45,6 +45,7 @@ GSList  *na_utils_remove_ascii_from_string_list( GSList *list, const gchar *text
 void     na_utils_free_string_list( GSList *list );
 gchar   *na_utils_string_list_to_text( GSList *list );
 GSList  *na_utils_text_to_string_list( const gchar *text );
+GSList  *na_utils_lines_to_string_list( const gchar *text );
 void     na_utils_dump_string_list( GSList *list );
 
 gchar   *na_utils_gslist_to_schema( GSList *list );
diff --git a/src/nact/base-window.c b/src/nact/base-window.c
index 3e28e57..9cfb4ec 100644
--- a/src/nact/base-window.c
+++ b/src/nact/base-window.c
@@ -132,6 +132,8 @@ static GtkWidget       *search_for_child_widget( GtkContainer *container, const
 static void             set_toplevel_initialized( BaseWindow *window, GtkWindow *toplevel, gboolean init );
 static void             setup_builder( BaseWindow *window );
 
+static void             record_connected_signal( BaseWindow *window, GObject *instance, gulong handler_id );
+
 GType
 base_window_get_type( void )
 {
@@ -1202,22 +1204,24 @@ base_window_yesno_dlg( BaseWindow *window, GtkMessageType type, const gchar *fir
 void
 base_window_signal_connect( BaseWindow *window, GObject *instance, const gchar *signal, GCallback fn )
 {
-	static const gchar *thisfn = "base_window_signal_connect";
-
 	g_return_if_fail( BASE_IS_WINDOW( window ));
 
 	if( !window->private->dispose_has_run ){
 
 		gulong handler_id = g_signal_connect( instance, signal, fn, window );
+		record_connected_signal( window, instance, handler_id );
+	}
+}
 
-		BaseWindowRecordedSignal *str = g_new0( BaseWindowRecordedSignal, 1 );
-		str->instance = instance;
-		str->handler_id = handler_id;
-		window->private->signals = g_slist_prepend( window->private->signals, str );
+void
+base_window_signal_connect_after( BaseWindow *window, GObject *instance, const gchar *signal, GCallback fn )
+{
+	g_return_if_fail( BASE_IS_WINDOW( window ));
 
-		if( st_debug_signal_connect ){
-			g_debug( "%s: connecting signal handler %p:%lu", thisfn, ( void * ) instance, handler_id );
-		}
+	if( !window->private->dispose_has_run ){
+
+		gulong handler_id = g_signal_connect_after( instance, signal, fn, window );
+		record_connected_signal( window, instance, handler_id );
 	}
 }
 
@@ -1235,3 +1239,18 @@ base_window_signal_connect_by_name( BaseWindow *window, const gchar *name, const
 		}
 	}
 }
+
+static void
+record_connected_signal( BaseWindow *window, GObject *instance, gulong handler_id )
+{
+	static const gchar *thisfn = "base_window_record_connected_signal";
+
+	BaseWindowRecordedSignal *str = g_new0( BaseWindowRecordedSignal, 1 );
+	str->instance = instance;
+	str->handler_id = handler_id;
+	window->private->signals = g_slist_prepend( window->private->signals, str );
+
+	if( st_debug_signal_connect ){
+		g_debug( "%s: connecting signal handler %p:%lu", thisfn, ( void * ) instance, handler_id );
+	}
+}
diff --git a/src/nact/base-window.h b/src/nact/base-window.h
index 80ffa2d..2f30019 100644
--- a/src/nact/base-window.h
+++ b/src/nact/base-window.h
@@ -88,6 +88,7 @@ void             base_window_error_dlg( BaseWindow *window, GtkMessageType type,
 gboolean         base_window_yesno_dlg( BaseWindow *window, GtkMessageType type, const gchar *first, const gchar *second );
 
 void             base_window_signal_connect( BaseWindow *window, GObject *instance, const gchar *signal, GCallback fn );
+void             base_window_signal_connect_after( BaseWindow *window, GObject *instance, const gchar *signal, GCallback fn );
 void             base_window_signal_connect_by_name( BaseWindow *window, const gchar *name, const gchar *signal, GCallback fn );
 
 G_END_DECLS



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]