[gnome-builder/wip/libide] libide: add IdeBuffer:style-scheme-name property



commit 93654b1ba0d277e39cd7970576cc3986f79aa32d
Author: Christian Hergert <christian hergert me>
Date:   Tue Mar 3 01:09:47 2015 -0800

    libide: add IdeBuffer:style-scheme-name property

 libide/ide-buffer.c |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 libide/ide-buffer.h |    3 +++
 2 files changed, 51 insertions(+), 0 deletions(-)
---
diff --git a/libide/ide-buffer.c b/libide/ide-buffer.c
index eb08e8b..7ea0bba 100644
--- a/libide/ide-buffer.c
+++ b/libide/ide-buffer.c
@@ -75,6 +75,7 @@ enum {
   PROP_CONTEXT,
   PROP_FILE,
   PROP_HIGHLIGHT_DIAGNOSTICS,
+  PROP_STYLE_SCHEME_NAME,
   PROP_TITLE,
   LAST_PROP
 };
@@ -566,6 +567,10 @@ ide_buffer_get_property (GObject    *object,
       g_value_set_string (value, ide_buffer_get_title (self));
       break;
 
+    case PROP_STYLE_SCHEME_NAME:
+      g_value_set_string (value, ide_buffer_get_style_scheme_name (self));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
     }
@@ -593,6 +598,10 @@ ide_buffer_set_property (GObject      *object,
       ide_buffer_set_highlight_diagnostics (self, g_value_get_boolean (value));
       break;
 
+    case PROP_STYLE_SCHEME_NAME:
+      ide_buffer_set_style_scheme_name (self, g_value_get_string (value));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
     }
@@ -640,6 +649,15 @@ ide_buffer_class_init (IdeBufferClass *klass)
   g_object_class_install_property (object_class, PROP_HIGHLIGHT_DIAGNOSTICS,
                                    gParamSpecs [PROP_HIGHLIGHT_DIAGNOSTICS]);
 
+  gParamSpecs [PROP_STYLE_SCHEME_NAME] =
+    g_param_spec_string ("style-scheme-name",
+                         _("Style Scheme Name"),
+                         _("Style Scheme Name"),
+                         NULL,
+                         (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (object_class, PROP_STYLE_SCHEME_NAME,
+                                   gParamSpecs [PROP_STYLE_SCHEME_NAME]);
+
   gParamSpecs [PROP_TITLE] =
     g_param_spec_string ("title",
                          _("Title"),
@@ -1048,3 +1066,33 @@ ide_buffer_get_title (IdeBuffer *self)
 
   return self->title;
 }
+
+const gchar *
+ide_buffer_get_style_scheme_name (IdeBuffer *self)
+{
+  GtkSourceStyleScheme *scheme;
+
+  g_return_val_if_fail (IDE_IS_BUFFER (self), NULL);
+
+  scheme = gtk_source_buffer_get_style_scheme (GTK_SOURCE_BUFFER (self));
+  if (scheme)
+    return gtk_source_style_scheme_get_id (scheme);
+
+  return NULL;
+}
+
+void
+ide_buffer_set_style_scheme_name (IdeBuffer   *self,
+                                  const gchar *style_scheme_name)
+{
+  GtkSourceStyleSchemeManager *mgr;
+  GtkSourceStyleScheme *scheme;
+
+  g_return_if_fail (IDE_IS_BUFFER (self));
+
+  mgr = gtk_source_style_scheme_manager_get_default ();
+
+  scheme = gtk_source_style_scheme_manager_get_scheme (mgr, style_scheme_name);
+  if (scheme)
+    gtk_source_buffer_set_style_scheme (GTK_SOURCE_BUFFER (self), scheme);
+}
diff --git a/libide/ide-buffer.h b/libide/ide-buffer.h
index 9eb613e..9edc2e5 100644
--- a/libide/ide-buffer.h
+++ b/libide/ide-buffer.h
@@ -57,6 +57,7 @@ IdeFile            *ide_buffer_get_file                  (IdeBuffer         *sel
 IdeBufferLineFlags  ide_buffer_get_line_flags            (IdeBuffer         *buffer,
                                                           guint              line);
 gboolean            ide_buffer_get_highlight_diagnostics (IdeBuffer         *self);
+const gchar        *ide_buffer_get_style_scheme_name     (IdeBuffer         *self);
 const gchar        *ide_buffer_get_title                 (IdeBuffer         *self);
 GType               ide_buffer_get_type                  (void);
 GType               ide_buffer_line_flags_get_type       (void);
@@ -64,6 +65,8 @@ void                ide_buffer_set_file                  (IdeBuffer         *sel
                                                           IdeFile           *file);
 void                ide_buffer_set_highlight_diagnostics (IdeBuffer         *self,
                                                           gboolean           highlight_diagnostics);
+void                ide_buffer_set_style_scheme_name     (IdeBuffer         *self,
+                                                          const gchar       *style_scheme_name);
 void                ide_buffer_trim_trailing_whitespace  (IdeBuffer         *self);
 
 G_END_DECLS


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