[nautilus-actions] Refactoring: update status bar management



commit 7efa61dd38a127ac34a68168b71d0c69dbd4c359
Author: Pierre Wieser <pwieser trychlos org>
Date:   Wed Feb 17 19:43:08 2010 +0100

    Refactoring: update status bar management

 src/api/na-iio-provider.h      |    2 +-
 src/core/na-io-provider.c      |   56 ++++++++++++++++++++++++++++++++++++++++
 src/core/na-io-provider.h      |    2 +
 src/nact/nact-main-statusbar.c |   56 +++------------------------------------
 4 files changed, 64 insertions(+), 52 deletions(-)
---
diff --git a/src/api/na-iio-provider.h b/src/api/na-iio-provider.h
index 143e1fe..4b0a96b 100644
--- a/src/api/na-iio-provider.h
+++ b/src/api/na-iio-provider.h
@@ -208,7 +208,7 @@ void  na_iio_provider_item_changed ( const NAIIOProvider *instance, const gchar
 
 /* The reasons for which an item may not be writable
  * adding a new status here should imply also adding a new tooltip
- * in nact_main_statusbar_set_locked().
+ * in #na_io_provider_get_tooltip().
  */
 enum {
 	NA_IIO_PROVIDER_STATUS_UNDETERMINED = 0,
diff --git a/src/core/na-io-provider.c b/src/core/na-io-provider.c
index d6a518d..341676a 100644
--- a/src/core/na-io-provider.c
+++ b/src/core/na-io-provider.c
@@ -32,6 +32,7 @@
 #include <config.h>
 #endif
 
+#include <glib/gi18n.h>
 #include <string.h>
 
 #include <api/na-iio-provider.h>
@@ -1225,3 +1226,58 @@ na_io_provider_delete_item( const NAIOProvider *provider, const NAObjectItem *it
 
 	return( ret );
 }
+
+/**
+ * na_io_provider_get_tooltip:
+ * @reason: the reason for why an item is not writable.
+ *
+ * Returns: the associated tooltip, as a newly allocated string which
+ * should be g_free() by the caller.
+ */
+gchar *
+na_io_provider_get_tooltip( guint reason )
+{
+	gchar *tooltip;
+
+	tooltip = NULL;
+
+	switch( reason ){
+		case NA_IIO_PROVIDER_STATUS_ITEM_READONLY:
+			tooltip = g_strdup( _( "Item is read-only." ));
+			break;
+
+		case NA_IIO_PROVIDER_STATUS_PROVIDER_NOT_WILLING_TO:
+			tooltip = g_strdup( _( "I/O provider is not willing to write." ));
+			break;
+
+		case NA_IIO_PROVIDER_STATUS_NO_PROVIDER_FOUND:
+			tooltip = g_strdup( _( "No writable I/O provider found." ));
+			break;
+
+		case NA_IIO_PROVIDER_STATUS_PROVIDER_LOCKED_BY_ADMIN:
+			tooltip = g_strdup( _( "I/O provider has been locked down by an administrator." ));
+			break;
+
+		case NA_IIO_PROVIDER_STATUS_PROVIDER_LOCKED_BY_USER:
+			tooltip = g_strdup( _( "I/O provider has been locked down by the user." ));
+			break;
+
+		case NA_IIO_PROVIDER_STATUS_NO_API:
+			tooltip = g_strdup( _( "I/O provider implementation lacks of required API." ));
+			break;
+
+		case NA_IIO_PROVIDER_STATUS_CONFIGURATION_LOCKED_BY_ADMIN:
+			tooltip = g_strdup( _( "The whole configuration has been locked down by an administrator." ));
+			break;
+
+		case 0:
+			tooltip = g_strdup( "" );
+			break;
+
+		default:
+			tooltip = g_strdup_printf( _( "Item is not writable for an unknown reason (%d)" ), reason );
+			break;
+	}
+
+	return( tooltip );
+}
diff --git a/src/core/na-io-provider.h b/src/core/na-io-provider.h
index a390177..6ce3035 100644
--- a/src/core/na-io-provider.h
+++ b/src/core/na-io-provider.h
@@ -101,6 +101,8 @@ gboolean       na_io_provider_has_write_api              ( const NAIOProvider *p
 guint          na_io_provider_write_item ( const NAIOProvider *provider, const NAObjectItem *item, GSList **messages );
 guint          na_io_provider_delete_item( const NAIOProvider *provider, const NAObjectItem *item, GSList **messages );
 
+gchar         *na_io_provider_get_tooltip( guint reason );
+
 G_END_DECLS
 
 #endif /* __CORE_NA_IO_PROVIDER_H__ */
diff --git a/src/nact/nact-main-statusbar.c b/src/nact/nact-main-statusbar.c
index 9e0852a..8e5af08 100644
--- a/src/nact/nact-main-statusbar.c
+++ b/src/nact/nact-main-statusbar.c
@@ -34,8 +34,9 @@
 
 #include <glib/gi18n.h>
 
-#include <runtime/na-utils.h>
+#include <core/na-io-provider.h>
 
+#include "nact-gtk-utils.h"
 #include "nact-main-statusbar.h"
 
 typedef struct {
@@ -185,15 +186,6 @@ void
 nact_main_statusbar_set_locked( NactMainWindow *window, gboolean readonly, gint reason )
 {
 	static const gchar *thisfn = "nact_main_statusbar_set_locked";
-
-	static const gchar *tooltip_item_read_only = N_( "Item is read-only." );
-	static const gchar *tooltip_provider_not_willing_to = N_( "I/O provider is not willing to write." );
-	static const gchar *tooltip_provider_not_found = N_( "No writable I/O provider found." );
-	static const gchar *tooltip_provider_locked_by_admin = N_( "I/O provider has been locked down by an administrator." );
-	static const gchar *tooltip_provider_locked_by_user = N_( "I/O provider has been locked down by the user." );
-	static const gchar *tooltip_provider_no_api = N_( "I/O provider implementation lacks of required API." );
-	static const gchar *tooltip_config_locked = N_( "The whole configuration has been locked down by an administrator." );
-
 	GtkStatusbar *bar;
 	GtkFrame *frame;
 	GtkImage *image;
@@ -216,46 +208,8 @@ nact_main_statusbar_set_locked( NactMainWindow *window, gboolean readonly, gint
 		if( readonly ){
 			gtk_image_set_from_file( image, LOCKED_IMAGE );
 			set_pixbuf = FALSE;
-
-			switch( reason ){
-				case NA_IIO_PROVIDER_STATUS_ITEM_READONLY:
-					g_free( tooltip );
-					tooltip = g_strdup( tooltip_item_read_only );
-					break;
-
-				case NA_IIO_PROVIDER_STATUS_PROVIDER_NOT_WILLING_TO:
-					g_free( tooltip );
-					tooltip = g_strdup( tooltip_provider_not_willing_to );
-					break;
-
-				case NA_IIO_PROVIDER_STATUS_NO_PROVIDER_FOUND:
-					g_free( tooltip );
-					tooltip = g_strdup( tooltip_provider_not_found );
-					break;
-
-				case NA_IIO_PROVIDER_STATUS_PROVIDER_LOCKED_BY_ADMIN:
-					g_free( tooltip );
-					tooltip = g_strdup( tooltip_provider_locked_by_admin );
-					break;
-
-				case NA_IIO_PROVIDER_STATUS_PROVIDER_LOCKED_BY_USER:
-					g_free( tooltip );
-					tooltip = g_strdup( tooltip_provider_locked_by_user );
-					break;
-
-				case NA_IIO_PROVIDER_STATUS_NO_API:
-					g_free( tooltip );
-					tooltip = g_strdup( tooltip_provider_no_api );
-					break;
-
-				case NA_IIO_PROVIDER_STATUS_CONFIGURATION_LOCKED_BY_ADMIN:
-					g_free( tooltip );
-					tooltip = g_strdup( tooltip_config_locked );
-					break;
-
-				default:
-					break;
-			}
+			g_free( tooltip );
+			tooltip = na_io_provider_get_tooltip( reason );
 		}
 
 		gtk_widget_set_tooltip_text( GTK_WIDGET( image ), tooltip );
@@ -263,7 +217,7 @@ nact_main_statusbar_set_locked( NactMainWindow *window, gboolean readonly, gint
 	}
 
 	if( set_pixbuf ){
-		pixbuf = na_utils_get_pixbuf( NULL, GTK_ICON_SIZE_MENU );
+		pixbuf = nact_gtk_utils_get_pixbuf( NULL, GTK_ICON_SIZE_MENU );
 		gtk_image_set_from_pixbuf( image, pixbuf );
 	}
 }



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