[gnome-initial-setup] Move gis_gtk_text_buffer_insert_pango_markup into eula/



commit f1a21d24b44edbddf0050a464f8a3f7ea23cf480
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Oct 31 14:34:18 2012 -0400

    Move gis_gtk_text_buffer_insert_pango_markup into eula/
    
    This frees up gis-utils for page implementation things.

 gnome-initial-setup/gis-utils.c                  |  118 ------------------
 gnome-initial-setup/gis-utils.h                  |    4 -
 gnome-initial-setup/pages/eulas/Makefile.am      |    8 +-
 gnome-initial-setup/pages/eulas/gis-eula-pages.c |   25 +----
 gnome-initial-setup/pages/eulas/utils.c          |  142 ++++++++++++++++++++++
 gnome-initial-setup/pages/eulas/utils.h          |   21 +++
 6 files changed, 171 insertions(+), 147 deletions(-)
---
diff --git a/gnome-initial-setup/gis-utils.c b/gnome-initial-setup/gis-utils.c
index ad30f2b..09cd5b8 100644
--- a/gnome-initial-setup/gis-utils.c
+++ b/gnome-initial-setup/gis-utils.c
@@ -26,121 +26,3 @@ gis_builder (gchar *resource)
 
     return builder;
 }
-
-
-/* remove when this is landed in GTK+ itself */
-
-#include <gtk/gtk.h>
-#include <pango/pango.h>
-
-static GtkTextTag *
-gis_gtk_text_buffer_get_text_tag_from_pango (PangoAttrIterator *paiter)
-{
-  PangoAttribute *attr;
-  GtkTextTag *tag = gtk_text_tag_new (NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_LANGUAGE)))
-    g_object_set (tag, "language", pango_language_to_string ( ( (PangoAttrLanguage*)attr)->value), NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_FAMILY)))
-    g_object_set (tag, "family", ( (PangoAttrString*)attr)->value, NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_STYLE)))
-    g_object_set (tag, "style", ( (PangoAttrInt*)attr)->value, NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_WEIGHT)))
-    g_object_set (tag, "weight", ( (PangoAttrInt*)attr)->value, NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_VARIANT)))
-    g_object_set (tag, "variant", ( (PangoAttrInt*)attr)->value, NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_STRETCH)))
-    g_object_set (tag, "stretch", ( (PangoAttrInt*)attr)->value, NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_SIZE)))
-    g_object_set (tag, "size", ( (PangoAttrInt*)attr)->value, NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_FONT_DESC)))
-    g_object_set (tag, "font-desc", ( (PangoAttrFontDesc*)attr)->desc, NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_FOREGROUND))) {
-    GdkColor col = { 0,
-                     ( (PangoAttrColor*)attr)->color.red,
-                     ( (PangoAttrColor*)attr)->color.green,
-                     ( (PangoAttrColor*)attr)->color.blue
-    };
-
-    g_object_set (tag, "foreground-gdk", &col, NULL);
-  }
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_BACKGROUND))) {
-    GdkColor col = { 0,
-                     ( (PangoAttrColor*)attr)->color.red,
-                     ( (PangoAttrColor*)attr)->color.green,
-                     ( (PangoAttrColor*)attr)->color.blue
-    };
-
-    g_object_set (tag, "background-gdk", &col, NULL);
-  }
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_UNDERLINE)))
-    g_object_set (tag, "underline", ( (PangoAttrInt*)attr)->value, NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_STRIKETHROUGH)))
-    g_object_set (tag, "strikethrough", (gboolean) ( ( (PangoAttrInt*)attr)->value != 0), NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_RISE)))
-    g_object_set (tag, "rise", ( (PangoAttrInt*)attr)->value, NULL);
-
-  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_SCALE)))
-    g_object_set (tag, "scale", ( (PangoAttrFloat*)attr)->value, NULL);
-
-  return tag;
-}
-
-void
-gis_gtk_text_buffer_insert_pango_text (GtkTextBuffer *buffer,
-                                       GtkTextIter *iter,
-                                       PangoAttrList *attrlist,
-                                       gchar *text)
-{
-  GtkTextMark *mark;
-  PangoAttrIterator *paiter;
-
-  g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));
-
-  /* trivial, no markup */
-  if (attrlist == NULL) {
-    gtk_text_buffer_insert (buffer, iter, text, -1);
-    return;
-  }
-
-  /* create mark with right gravity */
-  mark = gtk_text_buffer_create_mark (buffer, NULL, iter, FALSE);
-  paiter = pango_attr_list_get_iterator (attrlist);
-
-  do {
-    GtkTextTag *tag;
-    GtkTextTag *tag_para;
-    gint start, end;
-
-    pango_attr_iterator_range (paiter, &start, &end);
-
-    if (end == G_MAXINT)	/* last chunk */
-      end = start-1; /* resulting in -1 to be passed to _insert */
-
-    tag = gis_gtk_text_buffer_get_text_tag_from_pango (paiter);
-
-    gtk_text_tag_table_add (gtk_text_buffer_get_tag_table (buffer), tag);
-
-    tag_para = gtk_text_tag_table_lookup (gtk_text_buffer_get_tag_table (buffer), "para");
-    gtk_text_buffer_insert_with_tags (buffer, iter, text+start, end - start, tag, tag_para, NULL);
-
-    /* mark had right gravity, so it should be
-     *	at the end of the inserted text now */
-    gtk_text_buffer_get_iter_at_mark (buffer, iter, mark);
-  } while (pango_attr_iterator_next (paiter));
-
-  gtk_text_buffer_delete_mark (buffer, mark);
-  pango_attr_iterator_destroy (paiter);
-}
diff --git a/gnome-initial-setup/gis-utils.h b/gnome-initial-setup/gis-utils.h
index 5e7a948..e35d9c8 100644
--- a/gnome-initial-setup/gis-utils.h
+++ b/gnome-initial-setup/gis-utils.h
@@ -10,10 +10,6 @@
 G_BEGIN_DECLS
 
 GtkBuilder * gis_builder (gchar *resource);
-void gis_gtk_text_buffer_insert_pango_text (GtkTextBuffer *buffer,
-                                            GtkTextIter *iter,
-                                            PangoAttrList *attrlist,
-                                            gchar *text);
 
 G_END_DECLS
 
diff --git a/gnome-initial-setup/pages/eulas/Makefile.am b/gnome-initial-setup/pages/eulas/Makefile.am
index 76b79b1..34199f3 100644
--- a/gnome-initial-setup/pages/eulas/Makefile.am
+++ b/gnome-initial-setup/pages/eulas/Makefile.am
@@ -1,4 +1,6 @@
 
+NULL =
+
 noinst_LTLIBRARIES = libgiseulas.la
 
 pkgdatadir = $(datadir)/gnome-initial-setup
@@ -6,8 +8,10 @@ pkgdatadir = $(datadir)/gnome-initial-setup
 AM_CPPFLAGS = \
 	-DPKGDATADIR="\"$(pkgdatadir)\""
 
-libgiseulas_la_SOURCES =	\
-	gis-eula-pages.c gis-eula-pages.h
+libgiseulas_la_SOURCES =			\
+	gis-eula-pages.c gis-eula-pages.h 	\
+	utils.c utils.h 			\
+	$(NULL)
 
 libgiseulas_la_CFLAGS = $(INITIAL_SETUP_CFLAGS) -I "$(srcdir)/../.."
 libgiseulas_la_LIBADD = $(INITIAL_SETUP_LIBS)
diff --git a/gnome-initial-setup/pages/eulas/gis-eula-pages.c b/gnome-initial-setup/pages/eulas/gis-eula-pages.c
index d553156..e72c83f 100644
--- a/gnome-initial-setup/pages/eulas/gis-eula-pages.c
+++ b/gnome-initial-setup/pages/eulas/gis-eula-pages.c
@@ -5,6 +5,7 @@
 #include "config.h"
 #include "gis-eula-pages.h"
 #include "gis-utils.h"
+#include "utils.h"
 
 #include <glib/gi18n.h>
 #include <gio/gio.h>
@@ -25,28 +26,6 @@ struct _EulaPage {
   gboolean require_scroll;
 };
 
-/* heavily lifted from g_output_stream_splice */
-static void
-splice_buffer (GInputStream  *stream,
-               GtkTextBuffer *buffer,
-               GError       **error)
-{
-  char contents[8192];
-  gssize n_read;
-  GtkTextIter iter;
-
-  while (TRUE) {
-    n_read = g_input_stream_read (stream, contents, sizeof (contents), NULL, error);
-
-    /* error or eof */
-    if (n_read <= 0)
-      break;
-
-    gtk_text_buffer_get_end_iter (buffer, &iter);
-    gtk_text_buffer_insert (buffer, &iter, contents, n_read);
-  }
-}
-
 static GtkTextBuffer *
 build_eula_text_buffer_pango_markup (GFile   *file,
                                      GError **error_out)
@@ -70,7 +49,7 @@ build_eula_text_buffer_pango_markup (GFile   *file,
   buffer = gtk_text_buffer_new (NULL);
 
   gtk_text_buffer_get_end_iter (buffer, &iter);
-  gis_gtk_text_buffer_insert_pango_text (buffer, &iter, attrlist, text);
+  text_buffer_insert_pango_text (buffer, &iter, attrlist, text);
 
   return buffer;
 
diff --git a/gnome-initial-setup/pages/eulas/utils.c b/gnome-initial-setup/pages/eulas/utils.c
new file mode 100644
index 0000000..4987431
--- /dev/null
+++ b/gnome-initial-setup/pages/eulas/utils.c
@@ -0,0 +1,142 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+#include "config.h"
+#include "utils.h"
+
+#include <gtk/gtk.h>
+#include <pango/pango.h>
+
+/* lifted from g_output_stream_splice */
+void
+splice_buffer (GInputStream  *stream,
+               GtkTextBuffer *buffer,
+               GError       **error)
+{
+  char contents[8192];
+  gssize n_read;
+  GtkTextIter iter;
+
+  while (TRUE) {
+    n_read = g_input_stream_read (stream, contents, sizeof (contents), NULL, error);
+
+    /* error or eof */
+    if (n_read <= 0)
+      break;
+
+    gtk_text_buffer_get_end_iter (buffer, &iter);
+    gtk_text_buffer_insert (buffer, &iter, contents, n_read);
+  }
+}
+
+/* remove when this is landed in GTK+ itself */
+static GtkTextTag *
+text_buffer_get_text_tag_from_pango (PangoAttrIterator *paiter)
+{
+  PangoAttribute *attr;
+  GtkTextTag *tag = gtk_text_tag_new (NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_LANGUAGE)))
+    g_object_set (tag, "language", pango_language_to_string ( ( (PangoAttrLanguage*)attr)->value), NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_FAMILY)))
+    g_object_set (tag, "family", ( (PangoAttrString*)attr)->value, NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_STYLE)))
+    g_object_set (tag, "style", ( (PangoAttrInt*)attr)->value, NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_WEIGHT)))
+    g_object_set (tag, "weight", ( (PangoAttrInt*)attr)->value, NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_VARIANT)))
+    g_object_set (tag, "variant", ( (PangoAttrInt*)attr)->value, NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_STRETCH)))
+    g_object_set (tag, "stretch", ( (PangoAttrInt*)attr)->value, NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_SIZE)))
+    g_object_set (tag, "size", ( (PangoAttrInt*)attr)->value, NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_FONT_DESC)))
+    g_object_set (tag, "font-desc", ( (PangoAttrFontDesc*)attr)->desc, NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_FOREGROUND))) {
+    GdkColor col = { 0,
+                     ( (PangoAttrColor*)attr)->color.red,
+                     ( (PangoAttrColor*)attr)->color.green,
+                     ( (PangoAttrColor*)attr)->color.blue
+    };
+
+    g_object_set (tag, "foreground-gdk", &col, NULL);
+  }
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_BACKGROUND))) {
+    GdkColor col = { 0,
+                     ( (PangoAttrColor*)attr)->color.red,
+                     ( (PangoAttrColor*)attr)->color.green,
+                     ( (PangoAttrColor*)attr)->color.blue
+    };
+
+    g_object_set (tag, "background-gdk", &col, NULL);
+  }
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_UNDERLINE)))
+    g_object_set (tag, "underline", ( (PangoAttrInt*)attr)->value, NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_STRIKETHROUGH)))
+    g_object_set (tag, "strikethrough", (gboolean) ( ( (PangoAttrInt*)attr)->value != 0), NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_RISE)))
+    g_object_set (tag, "rise", ( (PangoAttrInt*)attr)->value, NULL);
+
+  if ( (attr = pango_attr_iterator_get (paiter, PANGO_ATTR_SCALE)))
+    g_object_set (tag, "scale", ( (PangoAttrFloat*)attr)->value, NULL);
+
+  return tag;
+}
+
+void
+text_buffer_insert_pango_text (GtkTextBuffer *buffer,
+                               GtkTextIter *iter,
+                               PangoAttrList *attrlist,
+                               gchar *text)
+{
+  GtkTextMark *mark;
+  PangoAttrIterator *paiter;
+
+  g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));
+
+  /* trivial, no markup */
+  if (attrlist == NULL) {
+    gtk_text_buffer_insert (buffer, iter, text, -1);
+    return;
+  }
+
+  /* create mark with right gravity */
+  mark = gtk_text_buffer_create_mark (buffer, NULL, iter, FALSE);
+  paiter = pango_attr_list_get_iterator (attrlist);
+
+  do {
+    GtkTextTag *tag;
+    GtkTextTag *tag_para;
+    gint start, end;
+
+    pango_attr_iterator_range (paiter, &start, &end);
+
+    if (end == G_MAXINT)	/* last chunk */
+      end = start-1; /* resulting in -1 to be passed to _insert */
+
+    tag = text_buffer_get_text_tag_from_pango (paiter);
+
+    gtk_text_tag_table_add (gtk_text_buffer_get_tag_table (buffer), tag);
+
+    tag_para = gtk_text_tag_table_lookup (gtk_text_buffer_get_tag_table (buffer), "para");
+    gtk_text_buffer_insert_with_tags (buffer, iter, text+start, end - start, tag, tag_para, NULL);
+
+    /* mark had right gravity, so it should be
+     *	at the end of the inserted text now */
+    gtk_text_buffer_get_iter_at_mark (buffer, iter, mark);
+  } while (pango_attr_iterator_next (paiter));
+
+  gtk_text_buffer_delete_mark (buffer, mark);
+  pango_attr_iterator_destroy (paiter);
+}
diff --git a/gnome-initial-setup/pages/eulas/utils.h b/gnome-initial-setup/pages/eulas/utils.h
new file mode 100644
index 0000000..4afd080
--- /dev/null
+++ b/gnome-initial-setup/pages/eulas/utils.h
@@ -0,0 +1,21 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+#ifndef __UTILS_H__
+#define __UTILS_H__
+
+#include "gnome-initial-setup.h"
+
+G_BEGIN_DECLS
+
+void splice_buffer (GInputStream  *stream,
+                    GtkTextBuffer *buffer,
+                    GError       **error);
+
+void text_buffer_insert_pango_text (GtkTextBuffer *buffer,
+                                    GtkTextIter *iter,
+                                    PangoAttrList *attrlist,
+                                    gchar *text);
+
+G_END_DECLS
+
+#endif /* __UTILS_H__ */



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