From 77ae5a404834889e20859a3ee20f142152377508 Mon Sep 17 00:00:00 2001 From: JosephMcc Date: Wed, 11 Jan 2017 23:21:23 -0800 Subject: [PATCH] trailsave-plugin: Port to WindowActivatable --- plugins/Makefile.am | 6 +- plugins/trailsave/xed-trail-save-plugin.c | 293 +++++++++++----------- plugins/trailsave/xed-trail-save-plugin.h | 30 +-- 3 files changed, 154 insertions(+), 175 deletions(-) diff --git a/plugins/Makefile.am b/plugins/Makefile.am index 522da2c..ebe0703 100644 --- a/plugins/Makefile.am +++ b/plugins/Makefile.am @@ -6,7 +6,8 @@ DIST_SUBDIRS = \ sort \ spell \ taglist \ - time + time \ + trailsave SUBDIRS = \ changecase \ @@ -16,7 +17,8 @@ SUBDIRS = \ sort \ spell \ taglist \ - time + time \ + trailsave if ENABLE_ENCHANT SUBDIRS += spell diff --git a/plugins/trailsave/xed-trail-save-plugin.c b/plugins/trailsave/xed-trail-save-plugin.c index 86f5914..a6a4dc7 100644 --- a/plugins/trailsave/xed-trail-save-plugin.c +++ b/plugins/trailsave/xed-trail-save-plugin.c @@ -14,220 +14,217 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $Id$ */ #ifdef HAVE_CONFIG_H #include #endif -#include - -#include -#include - #include "xed-trail-save-plugin.h" -#define XED_TRAIL_SAVE_PLUGIN_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \ - XED_TYPE_TRAIL_SAVE_PLUGIN, \ - XedTrailSavePluginPrivate)) +#include +#include +#include -static void peas_activatable_iface_init (PeasActivatableInterface *iface); +#define XED_TRAIL_SAVE_PLUGIN_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \ + XED_TYPE_TRAIL_SAVE_PLUGIN, \ + XedTrailSavePluginPrivate)) + +static void xed_window_activatable_iface_init (XedWindowActivatableInterface *iface); G_DEFINE_DYNAMIC_TYPE_EXTENDED (XedTrailSavePlugin, xed_trail_save_plugin, PEAS_TYPE_EXTENSION_BASE, 0, - G_IMPLEMENT_INTERFACE_DYNAMIC (PEAS_TYPE_ACTIVATABLE, - peas_activatable_iface_init)) + G_IMPLEMENT_INTERFACE_DYNAMIC (XED_TYPE_WINDOW_ACTIVATABLE, + xed_window_activatable_iface_init)) struct _XedTrailSavePluginPrivate { - GtkWidget *window; + XedWindow *window; }; enum { PROP_0, - PROP_OBJECT + PROP_WINDOW }; static void strip_trailing_spaces (GtkTextBuffer *text_buffer) { - gint line_count, line_num; - GtkTextIter line_start, line_end; - gchar *slice; - gchar byte; - gint byte_index; - gint strip_start_index, strip_end_index; - gboolean should_strip; - GtkTextIter strip_start, strip_end; + gint line_count, line_num; + GtkTextIter line_start, line_end; + gchar *slice; + gchar byte; + gint byte_index; + gint strip_start_index, strip_end_index; + gboolean should_strip; + GtkTextIter strip_start, strip_end; - g_assert (text_buffer != NULL); + g_assert (text_buffer != NULL); - line_count = gtk_text_buffer_get_line_count (text_buffer); + line_count = gtk_text_buffer_get_line_count (text_buffer); - for (line_num = 0; line_num < line_count; ++line_num) - { - /* Get line text */ - gtk_text_buffer_get_iter_at_line (text_buffer, &line_start, line_num); + for (line_num = 0; line_num < line_count; ++line_num) + { + /* Get line text */ + gtk_text_buffer_get_iter_at_line (text_buffer, &line_start, line_num); - if (line_num == line_count - 1) - { - gtk_text_buffer_get_end_iter (text_buffer, &line_end); - } - else - { - gtk_text_buffer_get_iter_at_line (text_buffer, &line_end, line_num + 1); - } + if (line_num == line_count - 1) + { + gtk_text_buffer_get_end_iter (text_buffer, &line_end); + } + else + { + gtk_text_buffer_get_iter_at_line (text_buffer, &line_end, line_num + 1); + } - slice = gtk_text_buffer_get_slice (text_buffer, &line_start, &line_end, TRUE); + slice = gtk_text_buffer_get_slice (text_buffer, &line_start, &line_end, TRUE); - if (slice == NULL) - { - continue; - } + if (slice == NULL) + { + continue; + } - /* Find indices of bytes that should be stripped */ - should_strip = FALSE; + /* Find indices of bytes that should be stripped */ + should_strip = FALSE; - for (byte_index = 0; slice [byte_index] != 0; ++byte_index) - { - byte = slice [byte_index]; + for (byte_index = 0; slice [byte_index] != 0; ++byte_index) + { + byte = slice [byte_index]; - if ((byte == ' ') || (byte == '\t')) - { - if (!should_strip) - { - strip_start_index = byte_index; - should_strip = TRUE; - } + if ((byte == ' ') || (byte == '\t')) + { + if (!should_strip) + { + strip_start_index = byte_index; + should_strip = TRUE; + } - strip_end_index = byte_index + 1; - } - else if ((byte == '\r') || (byte == '\n')) - { - break; - } - else - { - should_strip = FALSE; - } - } + strip_end_index = byte_index + 1; + } + else if ((byte == '\r') || (byte == '\n')) + { + break; + } + else + { + should_strip = FALSE; + } + } - g_free (slice); + g_free (slice); - /* Strip trailing spaces */ - if (should_strip) - { - gtk_text_buffer_get_iter_at_line_index (text_buffer, &strip_start, line_num, strip_start_index); - gtk_text_buffer_get_iter_at_line_index (text_buffer, &strip_end, line_num, strip_end_index); - gtk_text_buffer_delete (text_buffer, &strip_start, &strip_end); - } - } + /* Strip trailing spaces */ + if (should_strip) + { + gtk_text_buffer_get_iter_at_line_index (text_buffer, &strip_start, line_num, strip_start_index); + gtk_text_buffer_get_iter_at_line_index (text_buffer, &strip_end, line_num, strip_end_index); + gtk_text_buffer_delete (text_buffer, &strip_start, &strip_end); + } + } } static void -on_save (XedDocument *document, - const gchar *uri, - XedEncoding *encoding, - XedDocumentSaveFlags save_flags, - XedTrailSavePlugin *plugin) +on_save (XedDocument *document, + const gchar *uri, + XedEncoding *encoding, + XedDocumentSaveFlags save_flags, + XedTrailSavePlugin *plugin) { - GtkTextBuffer *text_buffer = GTK_TEXT_BUFFER (document); + GtkTextBuffer *text_buffer = GTK_TEXT_BUFFER (document); - strip_trailing_spaces (text_buffer); + strip_trailing_spaces (text_buffer); } static void -on_tab_added (XedWindow *window, - XedTab *tab, - XedTrailSavePlugin *plugin) +on_tab_added (XedWindow *window, + XedTab *tab, + XedTrailSavePlugin *plugin) { - XedDocument *document; + XedDocument *document; - document = xed_tab_get_document (tab); - g_signal_connect (document, "save", G_CALLBACK (on_save), plugin); + document = xed_tab_get_document (tab); + g_signal_connect (document, "save", + G_CALLBACK (on_save), plugin); } static void -on_tab_removed (XedWindow *window, - XedTab *tab, - XedTrailSavePlugin *plugin) +on_tab_removed (XedWindow *window, + XedTab *tab, + XedTrailSavePlugin *plugin) { - XedDocument *document; + XedDocument *document; - document = xed_tab_get_document (tab); - g_signal_handlers_disconnect_by_data (document, plugin); + document = xed_tab_get_document (tab); + g_signal_handlers_disconnect_by_data (document, plugin); } static void -xed_trail_save_plugin_activate (PeasActivatable *activatable) +xed_trail_save_plugin_activate (XedWindowActivatable *activatable) { - XedTrailSavePlugin *plugin; - XedWindow *window; - GList *documents; - GList *documents_iter; - XedDocument *document; + XedTrailSavePluginPrivate *priv; + GList *documents; + GList *documents_iter; + XedDocument *document; - xed_debug (DEBUG_PLUGINS); + xed_debug (DEBUG_PLUGINS); - plugin = XED_TRAIL_SAVE_PLUGIN (activatable); - window = XED_WINDOW (plugin->priv->window); + priv = XED_TRAIL_SAVE_PLUGIN (activatable)->priv; - g_signal_connect (window, "tab_added", G_CALLBACK (on_tab_added), plugin); - g_signal_connect (window, "tab_removed", G_CALLBACK (on_tab_removed), plugin); + g_signal_connect (priv->window, "tab_added", + G_CALLBACK (on_tab_added), XED_TRAIL_SAVE_PLUGIN (activatable)); + g_signal_connect (priv->window, "tab_removed", + G_CALLBACK (on_tab_removed), XED_TRAIL_SAVE_PLUGIN (activatable)); - documents = xed_window_get_documents (window); + documents = xed_window_get_documents (priv->window); - for (documents_iter = documents; - documents_iter && documents_iter->data; - documents_iter = documents_iter->next) - { - document = (XedDocument *) documents_iter->data; - g_signal_connect (document, "save", G_CALLBACK (on_save), plugin); - } + for (documents_iter = documents; + documents_iter && documents_iter->data; + documents_iter = documents_iter->next) + { + document = (XedDocument *) documents_iter->data; + g_signal_connect (document, "save", + G_CALLBACK (on_save), XED_TRAIL_SAVE_PLUGIN (activatable)); + } - g_list_free (documents); + g_list_free (documents); } static void -xed_trail_save_plugin_deactivate (PeasActivatable *activatable) +xed_trail_save_plugin_deactivate (XedWindowActivatable *activatable) { - XedTrailSavePlugin *plugin; - XedWindow *window; - GList *documents; - GList *documents_iter; - XedDocument *document; + XedTrailSavePluginPrivate *priv; + GList *documents; + GList *documents_iter; + XedDocument *document; - xed_debug (DEBUG_PLUGINS); + xed_debug (DEBUG_PLUGINS); - plugin = XED_TRAIL_SAVE_PLUGIN (activatable); - window = XED_WINDOW (plugin->priv->window); + priv = XED_TRAIL_SAVE_PLUGIN (activatable)->priv; - g_signal_handlers_disconnect_by_data (window, plugin); + g_signal_handlers_disconnect_by_data (priv->window, XED_TRAIL_SAVE_PLUGIN (activatable)); - documents = xed_window_get_documents (window); + documents = xed_window_get_documents (priv->window); - for (documents_iter = documents; - documents_iter && documents_iter->data; - documents_iter = documents_iter->next) - { - document = (XedDocument *) documents_iter->data; - g_signal_handlers_disconnect_by_data (document, plugin); - } + for (documents_iter = documents; + documents_iter && documents_iter->data; + documents_iter = documents_iter->next) + { + document = (XedDocument *) documents_iter->data; + g_signal_handlers_disconnect_by_data (document, XED_TRAIL_SAVE_PLUGIN (activatable)); + } - g_list_free (documents); + g_list_free (documents); } static void xed_trail_save_plugin_init (XedTrailSavePlugin *plugin) { - xed_debug_message (DEBUG_PLUGINS, "XedTrailSavePlugin initializing"); + xed_debug_message (DEBUG_PLUGINS, "XedTrailSavePlugin initializing"); - plugin->priv = XED_TRAIL_SAVE_PLUGIN_GET_PRIVATE (plugin); + plugin->priv = G_TYPE_INSTANCE_GET_PRIVATE (plugin, XED_TYPE_TRAIL_SAVE_PLUGIN, XedTrailSavePluginPrivate); } static void @@ -237,11 +234,7 @@ xed_trail_save_plugin_dispose (GObject *object) xed_debug_message (DEBUG_PLUGINS, "XedTrailSavePlugin disposing"); - if (plugin->priv->window != NULL) - { - g_object_unref (plugin->priv->window); - plugin->priv->window = NULL; - } + g_clear_object (&plugin->priv->window); G_OBJECT_CLASS (xed_trail_save_plugin_parent_class)->dispose (object); } @@ -252,12 +245,12 @@ xed_trail_save_plugin_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - XedTrailSavePlugin *plugin = XED_TRAIL_SAVE_PLUGIN (object); + XedTrailSavePlugin *plugin = XED_TRAIL_SAVE_PLUGIN (object); - switch (prop_id) + switch (prop_id) { - case PROP_OBJECT: - plugin->priv->window = GTK_WIDGET (g_value_dup_object (value)); + case PROP_WINDOW: + plugin->priv->window = XED_WINDOW (g_value_dup_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -275,7 +268,7 @@ xed_trail_save_plugin_get_property (GObject *object, switch (prop_id) { - case PROP_OBJECT: + case PROP_WINDOW: g_value_set_object (value, plugin->priv->window); break; default: @@ -287,13 +280,13 @@ xed_trail_save_plugin_get_property (GObject *object, static void xed_trail_save_plugin_class_init (XedTrailSavePluginClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->dispose = xed_trail_save_plugin_dispose; + object_class->dispose = xed_trail_save_plugin_dispose; object_class->set_property = xed_trail_save_plugin_set_property; object_class->get_property = xed_trail_save_plugin_get_property; - g_object_class_override_property (object_class, PROP_OBJECT, "object"); + g_object_class_override_property (object_class, PROP_WINDOW, "window"); g_type_class_add_private (object_class, sizeof (XedTrailSavePluginPrivate)); } @@ -305,7 +298,7 @@ xed_trail_save_plugin_class_finalize (XedTrailSavePluginClass *klass) } static void -peas_activatable_iface_init (PeasActivatableInterface *iface) +xed_window_activatable_iface_init (XedWindowActivatableInterface *iface) { iface->activate = xed_trail_save_plugin_activate; iface->deactivate = xed_trail_save_plugin_deactivate; @@ -316,7 +309,7 @@ peas_register_types (PeasObjectModule *module) { xed_trail_save_plugin_register_type (G_TYPE_MODULE (module)); - peas_object_module_register_extension_type (module, - PEAS_TYPE_ACTIVATABLE, + peas_object_module_register_extension_type (module, + XED_TYPE_WINDOW_ACTIVATABLE, XED_TYPE_TRAIL_SAVE_PLUGIN); } diff --git a/plugins/trailsave/xed-trail-save-plugin.h b/plugins/trailsave/xed-trail-save-plugin.h index 8454fac..ce66d8f 100644 --- a/plugins/trailsave/xed-trail-save-plugin.h +++ b/plugins/trailsave/xed-trail-save-plugin.h @@ -28,23 +28,16 @@ G_BEGIN_DECLS -/* - * Type checking and casting macros - */ -#define XED_TYPE_TRAIL_SAVE_PLUGIN (xed_trail_save_plugin_get_type ()) -#define XED_TRAIL_SAVE_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), XED_TYPE_TRAIL_SAVE_PLUGIN, XedTrailSavePlugin)) -#define XED_TRAIL_SAVE_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), XED_TYPE_TRAIL_SAVE_PLUGIN, XedTrailSavePluginClass)) -#define XED_IS_TRAIL_SAVE_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), XED_TYPE_TRAIL_SAVE_PLUGIN)) +#define XED_TYPE_TRAIL_SAVE_PLUGIN (xed_trail_save_plugin_get_type ()) +#define XED_TRAIL_SAVE_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), XED_TYPE_TRAIL_SAVE_PLUGIN, XedTrailSavePlugin)) +#define XED_TRAIL_SAVE_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), XED_TYPE_TRAIL_SAVE_PLUGIN, XedTrailSavePluginClass)) +#define XED_IS_TRAIL_SAVE_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), XED_TYPE_TRAIL_SAVE_PLUGIN)) #define XED_IS_TRAIL_SAVE_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), XED_TYPE_TRAIL_SAVE_PLUGIN)) #define XED_TRAIL_SAVE_PLUGIN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), XED_TYPE_TRAIL_SAVE_PLUGIN, XedTrailSavePluginClass)) -/* Private structure type */ -typedef struct _XedTrailSavePluginPrivate XedTrailSavePluginPrivate; - -/* - * Main object structure - */ typedef struct _XedTrailSavePlugin XedTrailSavePlugin; +typedef struct _XedTrailSavePluginPrivate XedTrailSavePluginPrivate; +typedef struct _XedTrailSavePluginClass XedTrailSavePluginClass; struct _XedTrailSavePlugin { @@ -54,22 +47,13 @@ struct _XedTrailSavePlugin XedTrailSavePluginPrivate *priv; }; -/* - * Class definition - */ -typedef struct _XedTrailSavePluginClass XedTrailSavePluginClass; - struct _XedTrailSavePluginClass { PeasExtensionBaseClass parent_class; }; -/* - * Public methods - */ -GType xed_trail_save_plugin_get_type (void) G_GNUC_CONST; +GType xed_trail_save_plugin_get_type (void) G_GNUC_CONST; -/* All the plugins must implement this function */ G_MODULE_EXPORT void peas_register_types (PeasObjectModule *module); G_END_DECLS