[nautilus-actions] na_desktop_environment_get_label(): new function



commit f94b7204be36752557d5ab26b5b1b15f18c90043
Author: Pierre Wieser <pwieser trychlos org>
Date:   Mon Jan 16 05:38:50 2012 +0100

    na_desktop_environment_get_label(): new function

 ChangeLog                          |    8 ++++++
 src/core/na-desktop-environment.c  |   45 +++++++++++++++++++++++++++++++++--
 src/core/na-desktop-environment.h  |    2 +
 src/nact/nact-preferences-editor.c |    8 ++++--
 4 files changed, 57 insertions(+), 6 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 7df13f5..109e477 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,14 @@
 	* docs/nact/C/nact-conditions.xml: Embeds literal values between
 	<literal>..</literal> tags.
 
+	* src/core/na-desktop-environment.c
+	* src/core/na-desktop-environment.h
+	(na_desktop_environment_detect_running_desktop): Fix LXDE detection.
+	(na_desktop_environment_get_label): New function.
+
+	* src/nact/nact-preferences-editor.c
+	(desktop_setup): Display the desktop label instead of its id.
+
 	* tools/check-po.sh: Do not match binary files.
 
 	* src/io-desktop/nadp-writer.c (nadp_writer_iexporter_export_to_buffer):
diff --git a/src/core/na-desktop-environment.c b/src/core/na-desktop-environment.c
index d851497..44d04c9 100644
--- a/src/core/na-desktop-environment.c
+++ b/src/core/na-desktop-environment.c
@@ -58,7 +58,6 @@ na_desktop_environment_get_known_list( void )
 	return(( const NADesktopEnv * ) st_desktops );
 }
 
-
 /*
  * na_desktop_environment_detect_running_desktop:
  *
@@ -75,6 +74,16 @@ na_desktop_environment_detect_running_desktop( void )
 	gint exit_status;
 	GError *error;
 	gboolean ok;
+	int i;
+
+	value = g_getenv( "XDG_CURRENT_DESKTOP" );
+	if( value && strlen( value )){
+		for( i = 0 ; st_desktops[i].id ; ++i ){
+			if( !strcmp( st_desktops[i].id, value )){
+				return( st_desktops[i].id );
+			}
+		}
+	}
 
 	value = g_getenv( "KDE_FULL_SESSION" );
 	if( value && !strcmp( value, "true" )){
@@ -124,8 +133,38 @@ na_desktop_environment_detect_running_desktop( void )
 		g_error_free( error );
 	}
 
-	/* do not know how to identify ROX or LXDE (Hong Jen Yee <pcman.tw (at) gmail.com>)
-	 * environments; so other desktops are just identified as 'Old' (legacy systems)
+	/* do not know how to identify ROX
+	 * this one and other desktops are just identified as 'Old' (legacy systems)
 	 */
 	return( DESKTOP_OLD );
 }
+
+/*
+ * na_desktop_environment_get_label:
+ * @id: desktop identifier.
+ *
+ * Returns: the label of the desktop environment.
+ *
+ * Defaults to returning the provided identifier if it is not found in
+ * our internal reference.
+ *
+ * Since: 3.2
+ */
+const gchar *
+na_desktop_environment_get_label( const gchar *id )
+{
+	static const gchar *thisfn = "na_desktop_environment_get_label";
+	int i;
+
+	g_return_val_if_fail( id && strlen( id ), NULL );
+
+	for( i = 0 ; st_desktops[i].id ; ++ i ){
+		if( !strcmp( st_desktops[i].id, id )){
+			return( st_desktops[i].label );
+		}
+	}
+
+	g_warning( "%s: unknwon desktop identifier: %s", thisfn, id );
+
+	return( id );
+}
diff --git a/src/core/na-desktop-environment.h b/src/core/na-desktop-environment.h
index 4404b84..50c0129 100644
--- a/src/core/na-desktop-environment.h
+++ b/src/core/na-desktop-environment.h
@@ -72,6 +72,8 @@ const NADesktopEnv *na_desktop_environment_get_known_list        ( void );
 
 const gchar        *na_desktop_environment_detect_running_desktop( void );
 
+const gchar        *na_desktop_environment_get_label             ( const gchar *id );
+
 G_END_DECLS
 
 #endif /* __CORE_API_NA_DESKTOP_ENVIRONMENT_H__ */
diff --git a/src/nact/nact-preferences-editor.c b/src/nact/nact-preferences-editor.c
index 9c5be63..97aa721 100644
--- a/src/nact/nact-preferences-editor.c
+++ b/src/nact/nact-preferences-editor.c
@@ -843,7 +843,8 @@ desktop_setup( NactPreferencesEditor *editor )
 	guint i;
 	gint found;
 	GtkWidget *widget;
-	const gchar *desktop;
+	const gchar *desktop_id;
+	const gchar *desktop_label;
 
 	found = -1;
 	editor->private->desktop = na_settings_get_string( NA_IPREFS_DESKTOP_ENVIRONMENT, NULL, &editor->private->desktop_mandatory );
@@ -875,8 +876,9 @@ desktop_setup( NactPreferencesEditor *editor )
 	/* set the currently detected desktop
 	 */
 	widget = base_window_get_widget( BASE_WINDOW( editor ), "DesktopLabel" );
-	desktop = na_desktop_environment_detect_running_desktop();
-	gtk_label_set_text( GTK_LABEL( widget ), desktop );
+	desktop_id = na_desktop_environment_detect_running_desktop();
+	desktop_label = na_desktop_environment_get_label( desktop_id );
+	gtk_label_set_text( GTK_LABEL( widget ), desktop_label );
 }
 
 static void



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