[nautilus-actions] BaseAssistant: rename GType macro to BASE_TYPE_ASSISTANT
- From: Pierre Wieser <pwieser src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus-actions] BaseAssistant: rename GType macro to BASE_TYPE_ASSISTANT
- Date: Wed, 11 Jan 2012 22:11:04 +0000 (UTC)
commit 830e160bb38e74d2e48d464a6f96b584b8b13221
Author: Pierre Wieser <pwieser trychlos org>
Date: Wed Jan 11 22:48:54 2012 +0100
BaseAssistant: rename GType macro to BASE_TYPE_ASSISTANT
ChangeLog | 8 ++
src/nact/base-assistant.c | 194 ++++++++++++++++++--------------------
src/nact/base-assistant.h | 22 +---
src/nact/nact-assistant-export.c | 2 +-
src/nact/nact-assistant-import.c | 2 +-
5 files changed, 106 insertions(+), 122 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 38ed733..87324c6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2012-01-11 Pierre Wieser <pwieser trychlos org>
+ * src/nact/base-assistant.c:
+ * src/nact/base-assistant.h:
+ BASE_ASSISTANT_TYPE GType macro is renamed as BASE_TYPE_ASSISTANT.
+ Remove the work-around against #589745 (Apply message in GtkAssistant).
+
+ * src/nact/nact-assistant-export.c (register_type):
+ * src/nact/nact-assistant-import.c (register_type): Updated accordingly.
+
* src/nact/base-dialog.c:
* src/nact/base-dialog.h:
BASE_WINDOW_TYPE is renamed as BASE_TYPE_WINDOW.
diff --git a/src/nact/base-assistant.c b/src/nact/base-assistant.c
index ccdfa44..0c48804 100644
--- a/src/nact/base-assistant.c
+++ b/src/nact/base-assistant.c
@@ -48,17 +48,16 @@ struct _BaseAssistantClassPrivate {
/* private instance data
*/
struct _BaseAssistantPrivate {
- gboolean dispose_has_run;
+ gboolean dispose_has_run;
/* properties
*/
- gboolean quit_on_escape;
- gboolean warn_on_escape;
+ gboolean quit_on_escape;
+ gboolean warn_on_escape;
/* internals
*/
- gboolean apply_has_run;
- gboolean escape_key_pressed;
+ gboolean escape_key_pressed;
};
/* instance properties
@@ -79,20 +78,15 @@ static void class_init( BaseAssistantClass *klass );
static void instance_init( GTypeInstance *instance, gpointer klass );
static void instance_get_property( GObject *object, guint property_id, GValue *value, GParamSpec *spec );
static void instance_set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *spec );
-static void instance_dispose( GObject *application );
-static void instance_finalize( GObject *application );
+static void instance_constructed( GObject *window );
+static void instance_dispose( GObject *window );
+static void instance_finalize( GObject *window );
static void on_initialize_base_window( BaseAssistant *window );
static int do_run( BaseWindow *window );
static gboolean on_key_pressed_event( GtkWidget *widget, GdkEventKey *event, BaseAssistant *assistant );
-
-static void on_prepare( GtkAssistant *assistant, GtkWidget *page, BaseAssistant *window );
-static void v_assistant_prepare( BaseAssistant *window, GtkAssistant *assistant, GtkWidget *page );
-static void do_prepare( BaseAssistant *window, GtkAssistant *assistant, GtkWidget *page );
static void on_apply( GtkAssistant *assistant, BaseAssistant *window );
-static void v_assistant_apply( BaseAssistant *window, GtkAssistant *assistant );
-static void do_apply( BaseAssistant *window, GtkAssistant *assistant );
-
+static void on_prepare( GtkAssistant *assistant, GtkWidget *page, BaseAssistant *window );
static void on_cancel( GtkAssistant *assistant, BaseAssistant *window );
static void on_close( GtkAssistant *assistant, BaseAssistant *window );
static void do_close( BaseAssistant *window, GtkAssistant *assistant );
@@ -146,10 +140,11 @@ class_init( BaseAssistantClass *klass )
st_parent_class = g_type_class_peek_parent( klass );
object_class = G_OBJECT_CLASS( klass );
- object_class->dispose = instance_dispose;
- object_class->finalize = instance_finalize;
+ object_class->constructed = instance_constructed;
object_class->get_property = instance_get_property;
object_class->set_property = instance_set_property;
+ object_class->dispose = instance_dispose;
+ object_class->finalize = instance_finalize;
g_object_class_install_property( object_class, BASE_PROP_QUIT_ON_ESCAPE_ID,
g_param_spec_boolean(
@@ -171,8 +166,8 @@ class_init( BaseAssistantClass *klass )
base_class->run = do_run;
klass->private = g_new0( BaseAssistantClassPrivate, 1 );
- klass->apply = do_apply;
- klass->prepare = do_prepare;
+ klass->apply = NULL;
+ klass->prepare = NULL;
}
static void
@@ -193,11 +188,7 @@ instance_init( GTypeInstance *instance, gpointer klass )
self->private->dispose_has_run = FALSE;
self->private->quit_on_escape = FALSE;
self->private->warn_on_escape = FALSE;
- self->private->apply_has_run = FALSE;
self->private->escape_key_pressed = FALSE;
-
- base_window_signal_connect( BASE_WINDOW( instance ),
- G_OBJECT( instance ), BASE_SIGNAL_INITIALIZE_WINDOW, G_CALLBACK( on_initialize_base_window ));
}
static void
@@ -255,21 +246,48 @@ instance_set_property( GObject *object, guint property_id, const GValue *value,
}
static void
+instance_constructed( GObject *window )
+{
+ static const gchar *thisfn = "base_assistant_instance_constructed";
+ BaseAssistantPrivate *priv;
+
+ g_return_if_fail( BASE_IS_ASSISTANT( window ));
+
+ priv = BASE_ASSISTANT( window )->private;
+
+ if( !priv->dispose_has_run ){
+
+ /* chain up to the parent class */
+ if( G_OBJECT_CLASS( st_parent_class )->constructed ){
+ G_OBJECT_CLASS( st_parent_class )->constructed( window );
+ }
+
+ g_debug( "%s: window=%p (%s)", thisfn, ( void * ) window, G_OBJECT_TYPE_NAME( window ));
+
+ base_window_signal_connect(
+ BASE_WINDOW( window ),
+ G_OBJECT( window ),
+ BASE_SIGNAL_INITIALIZE_WINDOW,
+ G_CALLBACK( on_initialize_base_window ));
+ }
+}
+
+static void
instance_dispose( GObject *window )
{
static const gchar *thisfn = "base_assistant_instance_dispose";
- BaseAssistant *self;
+ BaseAssistantPrivate *priv;
g_return_if_fail( BASE_IS_ASSISTANT( window ));
- self = BASE_ASSISTANT( window );
+ priv = BASE_ASSISTANT( window )->private;
- if( !self->private->dispose_has_run ){
+ if( !priv->dispose_has_run ){
g_debug( "%s: window=%p (%s)", thisfn, ( void * ) window, G_OBJECT_TYPE_NAME( window ));
- gtk_main_quit();
+ priv->dispose_has_run = TRUE;
- self->private->dispose_has_run = TRUE;
+ gtk_main_quit();
/* chain up to the parent class */
if( G_OBJECT_CLASS( st_parent_class )->dispose ){
@@ -282,15 +300,15 @@ static void
instance_finalize( GObject *window )
{
static const gchar *thisfn = "base_assistant_instance_finalize";
- BaseAssistant *self;
+ BaseAssistantPrivate *priv;
g_return_if_fail( BASE_IS_ASSISTANT( window ));
g_debug( "%s: window=%p (%s)", thisfn, ( void * ) window, G_OBJECT_TYPE_NAME( window ));
- self = BASE_ASSISTANT( window );
+ priv = BASE_ASSISTANT( window )->private;
- g_free( self->private );
+ g_free( priv );
/* chain call to parent class */
if( G_OBJECT_CLASS( st_parent_class )->finalize ){
@@ -313,23 +331,48 @@ on_initialize_base_window( BaseAssistant *window )
toplevel = base_window_get_gtk_toplevel( BASE_WINDOW( window ));
g_return_if_fail( GTK_IS_ASSISTANT( toplevel ));
- base_window_signal_connect( BASE_WINDOW( window ),
- G_OBJECT( toplevel ), "key-press-event", G_CALLBACK( on_key_pressed_event ));
-
- base_window_signal_connect( BASE_WINDOW( window ),
- G_OBJECT( toplevel ), "apply", G_CALLBACK( on_apply ));
-
- base_window_signal_connect( BASE_WINDOW( window ),
- G_OBJECT( toplevel ), "cancel", G_CALLBACK( on_cancel ));
-
- base_window_signal_connect( BASE_WINDOW( window ),
- G_OBJECT( toplevel ), "close", G_CALLBACK( on_close ));
-
- base_window_signal_connect( BASE_WINDOW( window ),
- G_OBJECT( toplevel ), "prepare", G_CALLBACK( on_prepare ));
+ /* deals with 'Esc' key
+ */
+ base_window_signal_connect(
+ BASE_WINDOW( window ),
+ G_OBJECT( toplevel ),
+ "key-press-event",
+ G_CALLBACK( on_key_pressed_event ));
+
+ /* transforms 'prepare' and 'apply' messages into virtual methods
+ */
+ base_window_signal_connect(
+ BASE_WINDOW( window ),
+ G_OBJECT( toplevel ),
+ "prepare",
+ G_CALLBACK( on_prepare ));
+
+ base_window_signal_connect(
+ BASE_WINDOW( window ),
+ G_OBJECT( toplevel ),
+ "apply",
+ G_CALLBACK( on_apply ));
+
+ /* close the assistant
+ */
+ base_window_signal_connect(
+ BASE_WINDOW( window ),
+ G_OBJECT( toplevel ),
+ "cancel",
+ G_CALLBACK( on_cancel ));
+
+ base_window_signal_connect(
+ BASE_WINDOW( window ),
+ G_OBJECT( toplevel ),
+ "close",
+ G_CALLBACK( on_close ));
}
}
+/*
+ * run the assistant in a main event loop, which will be quitted
+ * at dispose time
+ */
static int
do_run( BaseWindow *window )
{
@@ -341,10 +384,13 @@ do_run( BaseWindow *window )
code = BASE_EXIT_CODE_INIT_WINDOW;
if( !BASE_ASSISTANT( window )->private->dispose_has_run ){
+
g_debug( "%s: window=%p (%s), starting gtk_main",
thisfn,
( void * ) window, G_OBJECT_TYPE_NAME( window ));
+
gtk_main();
+
code = BASE_EXIT_CODE_OK;
}
@@ -373,40 +419,9 @@ on_key_pressed_event( GtkWidget *widget, GdkEventKey *event, BaseAssistant *assi
return( stop );
}
-/*
- * starting with Gtk+ 2.18, this work-around will become useless
- * so message handlers could safely be the v_xxx functions themselves
- */
static void
on_prepare( GtkAssistant *assistant, GtkWidget *page, BaseAssistant *window )
{
- static const gchar *thisfn = "base_assistant_on_prepare";
- GtkAssistantPageType type;
-
- g_return_if_fail( BASE_IS_ASSISTANT( window ));
-
- g_debug( "%s: assistant=%p, page=%p, window=%p",
- thisfn, ( void * ) assistant, ( void * ) page, ( void * ) window );
-
- type = gtk_assistant_get_page_type( assistant, page );
-
- switch( type ){
- case GTK_ASSISTANT_PAGE_SUMMARY:
- if( !window->private->apply_has_run ){
- v_assistant_apply( window, assistant );
- }
- break;
-
- default:
- break;
- }
-
- v_assistant_prepare( window, assistant, page );
-}
-
-static void
-v_assistant_prepare( BaseAssistant *window, GtkAssistant *assistant, GtkWidget *page )
-{
g_return_if_fail( BASE_IS_ASSISTANT( window ));
if( BASE_ASSISTANT_GET_CLASS( window )->prepare ){
@@ -415,42 +430,13 @@ v_assistant_prepare( BaseAssistant *window, GtkAssistant *assistant, GtkWidget *
}
static void
-do_prepare( BaseAssistant *window, GtkAssistant *assistant, GtkWidget *page )
-{
- static const gchar *thisfn = "base_assistant_do_prepare";
-
- g_debug( "%s: window=%p, assistant=%p, page=%p",
- thisfn, ( void * ) window, ( void * ) assistant, ( void * ) page );
-}
-
-static void
on_apply( GtkAssistant *assistant, BaseAssistant *window )
{
g_return_if_fail( BASE_IS_ASSISTANT( window ));
- if( !window->private->apply_has_run ){
- v_assistant_apply( window, assistant );
- }
-}
-
-static void
-v_assistant_apply( BaseAssistant *window, GtkAssistant *assistant )
-{
- g_return_if_fail( BASE_IS_ASSISTANT( window ));
-
if( BASE_ASSISTANT_GET_CLASS( window )->apply ){
BASE_ASSISTANT_GET_CLASS( window )->apply( window, assistant );
}
-
- window->private->apply_has_run = TRUE;
-}
-
-static void
-do_apply( BaseAssistant *window, GtkAssistant *assistant )
-{
- static const gchar *thisfn = "base_assistant_do_apply";
-
- g_debug( "%s: window=%p, assistant=%p", thisfn, ( void * ) window, ( void * ) assistant );
}
/*
diff --git a/src/nact/base-assistant.h b/src/nact/base-assistant.h
index 2d7310d..1c6abd9 100644
--- a/src/nact/base-assistant.h
+++ b/src/nact/base-assistant.h
@@ -38,25 +38,18 @@
*
* This class is derived from BaseWindow class, and serves as a base
* class for all Nautilus-Actions assistants.
- *
- * Note: as a work-around to #589745 (Apply message in GtkAssistant),
- * we may trigger "on_assistant_apply" function from the
- * "on_prepare_message" handler.
- * The provided patch has been applied on 2009-08-07, and released in
- * Gtk+ 2.17.7. So, this work-around will can be safely removed when
- * minimal Gtk+ version will be 2.18 or later.
*/
#include "base-window.h"
G_BEGIN_DECLS
-#define BASE_ASSISTANT_TYPE ( base_assistant_get_type())
-#define BASE_ASSISTANT( object ) ( G_TYPE_CHECK_INSTANCE_CAST( object, BASE_ASSISTANT_TYPE, BaseAssistant ))
-#define BASE_ASSISTANT_CLASS( klass ) ( G_TYPE_CHECK_CLASS_CAST( klass, BASE_ASSISTANT_TYPE, BaseAssistantClass ))
-#define BASE_IS_ASSISTANT( object ) ( G_TYPE_CHECK_INSTANCE_TYPE( object, BASE_ASSISTANT_TYPE ))
-#define BASE_IS_ASSISTANT_CLASS( klass ) ( G_TYPE_CHECK_CLASS_TYPE(( klass ), BASE_ASSISTANT_TYPE ))
-#define BASE_ASSISTANT_GET_CLASS( object ) ( G_TYPE_INSTANCE_GET_CLASS(( object ), BASE_ASSISTANT_TYPE, BaseAssistantClass ))
+#define BASE_TYPE_ASSISTANT ( base_assistant_get_type())
+#define BASE_ASSISTANT( object ) ( G_TYPE_CHECK_INSTANCE_CAST( object, BASE_TYPE_ASSISTANT, BaseAssistant ))
+#define BASE_ASSISTANT_CLASS( klass ) ( G_TYPE_CHECK_CLASS_CAST( klass, BASE_TYPE_ASSISTANT, BaseAssistantClass ))
+#define BASE_IS_ASSISTANT( object ) ( G_TYPE_CHECK_INSTANCE_TYPE( object, BASE_TYPE_ASSISTANT ))
+#define BASE_IS_ASSISTANT_CLASS( klass ) ( G_TYPE_CHECK_CLASS_TYPE(( klass ), BASE_TYPE_ASSISTANT ))
+#define BASE_ASSISTANT_GET_CLASS( object ) ( G_TYPE_INSTANCE_GET_CLASS(( object ), BASE_TYPE_ASSISTANT, BaseAssistantClass ))
typedef struct _BaseAssistantPrivate BaseAssistantPrivate;
@@ -97,9 +90,6 @@ typedef struct {
* @assistant: the #GtkAssistant toplevel.
*
* Invoked when the Gtk+ runtime is preparing a page.
- *
- * The #BaseAssistant class makes sure that the apply() method has
- * been triggered before preparing the 'Summary' page.
*/
void ( *prepare )( BaseAssistant *window, GtkAssistant *assistant, GtkWidget *page );
}
diff --git a/src/nact/nact-assistant-export.c b/src/nact/nact-assistant-export.c
index e720013..3a1c592 100644
--- a/src/nact/nact-assistant-export.c
+++ b/src/nact/nact-assistant-export.c
@@ -163,7 +163,7 @@ register_type( void )
g_debug( "%s", thisfn );
- type = g_type_register_static( BASE_ASSISTANT_TYPE, "NactAssistantExport", &info, 0 );
+ type = g_type_register_static( BASE_TYPE_ASSISTANT, "NactAssistantExport", &info, 0 );
g_type_add_interface_static( type, NA_IOPTIONS_LIST_TYPE, &ioptions_list_iface_info );
diff --git a/src/nact/nact-assistant-import.c b/src/nact/nact-assistant-import.c
index 81279ee..f7fba9f 100644
--- a/src/nact/nact-assistant-import.c
+++ b/src/nact/nact-assistant-import.c
@@ -170,7 +170,7 @@ register_type( void )
g_debug( "%s", thisfn );
- type = g_type_register_static( BASE_ASSISTANT_TYPE, "NactAssistantImport", &info, 0 );
+ type = g_type_register_static( BASE_TYPE_ASSISTANT, "NactAssistantImport", &info, 0 );
g_type_add_interface_static( type, NA_IOPTIONS_LIST_TYPE, &ioptions_list_iface_info );
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]