[nautilus-actions] Set default icon for the application



commit c009526ec7cab92b6e472332c82318be84bc227f
Author: Pierre Wieser <pwieser trychlos org>
Date:   Tue Aug 18 22:07:36 2009 +0200

    Set default icon for the application
    
    The corresponding virtual and public functions were ommitted when rewriting
    the BaseApplication class.

 src/nact/base-application-class.h |   13 +++++++
 src/nact/base-application.c       |   69 ++++++++++++++++++++++++++++++------
 src/nact/base-application.h       |    3 +-
 3 files changed, 72 insertions(+), 13 deletions(-)
---
diff --git a/src/nact/base-application-class.h b/src/nact/base-application-class.h
index 51e8c08..e42b2cd 100644
--- a/src/nact/base-application-class.h
+++ b/src/nact/base-application-class.h
@@ -199,6 +199,19 @@ typedef struct {
 	gboolean  ( *application_initialize_ui )         ( BaseApplication *appli );
 
 	/**
+	 * application_initialize_default_icon:
+	 * @appli: this #BaseApplication instance.
+	 *
+	 * Initializes the default icon for the application.
+	 *
+	 * Returns: %TRUE if the default icon has been successfully set for
+	 * the application, %FALSE else.
+	 *
+	 * The base class implementation always returns %TRUE.
+	 */
+	gboolean  ( *application_initialize_default_icon )( BaseApplication *appli );
+
+	/**
 	 * application_initialize_application:
 	 * @appli: this #BaseApplication instance.
 	 *
diff --git a/src/nact/base-application.c b/src/nact/base-application.c
index 26cf7b1..5a32429 100644
--- a/src/nact/base-application.c
+++ b/src/nact/base-application.c
@@ -89,6 +89,7 @@ static gboolean       v_initialize_i18n( BaseApplication *application );
 static gboolean       v_initialize_gtk( BaseApplication *application );
 static gboolean       v_initialize_unique_app( BaseApplication *application );
 static gboolean       v_initialize_ui( BaseApplication *application );
+static gboolean       v_initialize_default_icon( BaseApplication *application );
 static gboolean       v_initialize_application( BaseApplication *application );
 
 static int            do_application_run( BaseApplication *application );
@@ -97,6 +98,7 @@ static gboolean       do_application_initialize_i18n( BaseApplication *applicati
 static gboolean       do_application_initialize_gtk( BaseApplication *application );
 static gboolean       do_application_initialize_unique_app( BaseApplication *application );
 static gboolean       do_application_initialize_ui( BaseApplication *application );
+static gboolean       do_application_initialize_default_icon( BaseApplication *application );
 static gboolean       do_application_initialize_application( BaseApplication *application );
 
 static gboolean       check_for_unique_app( BaseApplication *application );
@@ -109,10 +111,11 @@ static void           display_error_message( BaseApplication *application );
 static void           set_get_dialog_error( BaseApplication *application, const gchar *dialog );
 static void           set_initialize_i18n_error( BaseApplication *application );
 static void           set_initialize_gtk_error( BaseApplication *application );
-static void           set_initialize_application_error( BaseApplication *application );
 static void           set_initialize_unique_app_error( BaseApplication *application );
 static void           set_initialize_ui_get_fname_error( BaseApplication *application );
 static void           set_initialize_ui_add_xml_error( BaseApplication *application, const gchar *filename, GError *error );
+static void           set_initialize_default_icon_error( BaseApplication *application );
+static void           set_initialize_application_error( BaseApplication *application );
 
 GType
 base_application_get_type( void )
@@ -233,9 +236,10 @@ class_init( BaseApplicationClass *klass )
 	klass->application_initialize = do_application_initialize;
 	klass->application_initialize_i18n = do_application_initialize_i18n;
 	klass->application_initialize_gtk = do_application_initialize_gtk;
-	klass->application_initialize_application = do_application_initialize_application;
 	klass->application_initialize_unique_app = do_application_initialize_unique_app;
 	klass->application_initialize_ui = do_application_initialize_ui;
+	klass->application_initialize_default_icon = do_application_initialize_default_icon;
+	klass->application_initialize_application = do_application_initialize_application;
 	klass->application_get_application_name = NULL;
 	klass->application_get_icon_name = NULL;
 	klass->application_get_unique_app_name = NULL;
@@ -775,9 +779,26 @@ v_initialize_ui( BaseApplication *application )
 }
 
 static gboolean
+v_initialize_default_icon( BaseApplication *application )
+{
+	static const gchar *thisfn = "base_application_v_initialize_default_icon";
+	g_debug( "%s: application=%p", thisfn, application );
+
+	g_assert( BASE_IS_APPLICATION( application ));
+
+	gboolean ok = BASE_APPLICATION_GET_CLASS( application )->application_initialize_default_icon( application );
+
+	if( !ok ){
+		set_initialize_default_icon_error( application );
+	}
+
+	return( ok );
+}
+
+static gboolean
 v_initialize_application( BaseApplication *application )
 {
-	static const gchar *thisfn = "base_application_v_initialize_application_name";
+	static const gchar *thisfn = "base_application_v_initialize_application";
 	g_debug( "%s: application=%p", thisfn, application );
 
 	g_assert( BASE_IS_APPLICATION( application ));
@@ -828,6 +849,7 @@ do_application_initialize( BaseApplication *application )
 			v_initialize_gtk( application ) &&
 			v_initialize_unique_app( application ) &&
 			v_initialize_ui( application ) &&
+			v_initialize_default_icon( application ) &&
 			v_initialize_application( application )
 	);
 }
@@ -906,6 +928,20 @@ do_application_initialize_ui( BaseApplication *application )
 }
 
 static gboolean
+do_application_initialize_default_icon( BaseApplication *application )
+{
+	gchar *name = base_application_get_icon_name( application );
+
+	if( name && strlen( name )){
+		gtk_window_set_default_icon_name( name );
+	}
+
+	g_free( name );
+
+	return( TRUE );
+}
+
+static gboolean
 do_application_initialize_application( BaseApplication *application )
 {
 	BaseWindow *window;
@@ -1079,15 +1115,6 @@ set_initialize_gtk_error( BaseApplication *application )
 }
 
 static void
-set_initialize_application_error( BaseApplication *application )
-{
-	application->private->exit_code = APPLICATION_ERROR_MAIN_WINDOW;
-
-	application->private->exit_message1 =
-		g_strdup( _( "Unable to get the main window of the application." ));
-}
-
-static void
 set_initialize_unique_app_error( BaseApplication *application )
 {
 	application->private->exit_code = APPLICATION_ERROR_UNIQUE_APP;
@@ -1118,3 +1145,21 @@ set_initialize_ui_add_xml_error( BaseApplication *application, const gchar *file
 		application->private->exit_message2 = g_strdup( error->message );
 	}
 }
+
+static void
+set_initialize_default_icon_error( BaseApplication *application )
+{
+	application->private->exit_code = APPLICATION_ERROR_DEFAULT_ICON;
+
+	application->private->exit_message1 =
+		g_strdup( _( "Unable to set the default icon for the application." ));
+}
+
+static void
+set_initialize_application_error( BaseApplication *application )
+{
+	application->private->exit_code = APPLICATION_ERROR_MAIN_WINDOW;
+
+	application->private->exit_message1 =
+		g_strdup( _( "Unable to get the main window of the application." ));
+}
diff --git a/src/nact/base-application.h b/src/nact/base-application.h
index fce8ff3..7a7f892 100644
--- a/src/nact/base-application.h
+++ b/src/nact/base-application.h
@@ -51,7 +51,8 @@ enum {
 	APPLICATION_ERROR_UNIQUE_APP,	/* another instance is running */
 	APPLICATION_ERROR_UI_FNAME,		/* empty XML filename */
 	APPLICATION_ERROR_UI_LOAD,		/* unable to load the XML definition of the UI */
-	APPLICATION_ERROR_DIALOG_LOAD	/* unable to load a dialog from the XML definition */
+	APPLICATION_ERROR_DIALOG_LOAD,	/* unable to load a dialog from the XML definition */
+	APPLICATION_ERROR_DEFAULT_ICON	/* unable to set default icon */
 };
 
 /**



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