[gnome-builder] keybindings: allow keybindings to set a mode display name



commit e82de61ee2208c5be86134736b2362bf168cfb96
Author: Christian Hergert <christian hergert me>
Date:   Sun Mar 29 17:01:55 2015 -0700

    keybindings: allow keybindings to set a mode display name

 libide/ide-source-view-mode.c |   19 +++++++++++++++++++
 libide/ide-source-view-mode.h |    1 +
 libide/ide-source-view.c      |   29 +++++++++++++++++++++++++++++
 libide/ide-source-view.h      |    1 +
 4 files changed, 50 insertions(+), 0 deletions(-)
---
diff --git a/libide/ide-source-view-mode.c b/libide/ide-source-view-mode.c
index fd14d68..4e79889 100644
--- a/libide/ide-source-view-mode.c
+++ b/libide/ide-source-view-mode.c
@@ -29,6 +29,7 @@ typedef struct
 {
   GtkWidget             *view;
   char                  *name;
+  char                  *display_name;
   gchar                 *default_mode;
   IdeSourceViewModeType  type;
 } IdeSourceViewModePrivate;
@@ -101,6 +102,14 @@ ide_source_view_mode_get_default_mode (IdeSourceViewMode *self)
   return priv->default_mode;
 }
 
+const gchar *
+ide_source_view_mode_get_display_name (IdeSourceViewMode *self)
+{
+  IdeSourceViewModePrivate *priv = ide_source_view_mode_get_instance_private (self);
+
+  return priv->display_name;
+}
+
 gboolean
 ide_source_view_mode_get_repeat_insert_with_count (IdeSourceViewMode *self)
 {
@@ -147,6 +156,7 @@ ide_source_view_mode_finalize (GObject *object)
   g_clear_object (&priv->view);
   g_clear_pointer (&priv->name, g_free);
   g_clear_pointer (&priv->default_mode, g_free);
+  g_clear_pointer (&priv->display_name, g_free);
   priv->type = 0;
 
   G_OBJECT_CLASS (ide_source_view_mode_parent_class)->finalize (object);
@@ -280,6 +290,14 @@ ide_source_view_mode_class_init (IdeSourceViewModeClass *klass)
                                                                   G_PARAM_STATIC_STRINGS)));
 
   gtk_widget_class_install_style_property (GTK_WIDGET_CLASS (klass),
+                                           g_param_spec_string ("display-name",
+                                                                "Display Name",
+                                                                "Display name for mode",
+                                                                NULL,
+                                                                (G_PARAM_READABLE |
+                                                                 G_PARAM_STATIC_STRINGS)));
+
+  gtk_widget_class_install_style_property (GTK_WIDGET_CLASS (klass),
                                            g_param_spec_string ("default-mode",
                                                                 "Default Mode",
                                                                 "Suggest a followup default mode",
@@ -443,6 +461,7 @@ _ide_source_view_mode_new (GtkWidget             *view,
   priv->name = g_strdup (name);
   priv->type = type;
   priv->default_mode = get_string_param (mode, "default-mode");
+  priv->display_name = get_string_param (mode, "display-name");
 
   IDE_TRACE_MSG ("supress_unbound = %d", ide_source_view_mode_get_suppress_unbound (mode));
   IDE_TRACE_MSG ("block_cursor = %d", ide_source_view_mode_get_block_cursor (mode));
diff --git a/libide/ide-source-view-mode.h b/libide/ide-source-view-mode.h
index 65ff978..e68a508 100644
--- a/libide/ide-source-view-mode.h
+++ b/libide/ide-source-view-mode.h
@@ -52,6 +52,7 @@ gboolean               ide_source_view_mode_get_block_cursor             (IdeSou
 gboolean               ide_source_view_mode_get_suppress_unbound         (IdeSourceViewMode *self);
 const gchar           *ide_source_view_mode_get_name                     (IdeSourceViewMode *self);
 const gchar           *ide_source_view_mode_get_default_mode             (IdeSourceViewMode *self);
+const gchar           *ide_source_view_mode_get_display_name             (IdeSourceViewMode *self);
 gboolean               ide_source_view_mode_get_keep_mark_on_char        (IdeSourceViewMode *self);
 IdeSourceViewModeType  ide_source_view_mode_get_mode_type                (IdeSourceViewMode *self);
 
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index 392cad8..330f7d2 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -178,6 +178,7 @@ enum {
   PROP_FONT_DESC,
   PROP_HIGHLIGHT_CURRENT_LINE,
   PROP_INSERT_MATCHING_BRACE,
+  PROP_MODE_DISPLAY_NAME,
   PROP_OVERWRITE,
   PROP_OVERWRITE_BRACES,
   PROP_RUBBERBAND_SEARCH,
@@ -3093,6 +3094,8 @@ ide_source_view_real_set_mode (IdeSourceView         *self,
     gtk_text_view_set_overwrite (GTK_TEXT_VIEW (self), overwrite);
   g_object_notify (G_OBJECT (self), "overwrite");
 
+  g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_MODE_DISPLAY_NAME]);
+
   IDE_EXIT;
 }
 
@@ -4886,6 +4889,10 @@ ide_source_view_get_property (GObject    *object,
       g_value_set_boolean (value, ide_source_view_get_insert_matching_brace (self));
       break;
 
+    case PROP_MODE_DISPLAY_NAME:
+      g_value_set_string (value, ide_source_view_get_mode_display_name (self));
+      break;
+
     case PROP_OVERWRITE:
       g_value_set_boolean (value, ide_source_view_get_overwrite (self));
       break;
@@ -5161,6 +5168,15 @@ ide_source_view_class_init (IdeSourceViewClass *klass)
 
   g_object_class_override_property (object_class, PROP_OVERWRITE, "overwrite");
 
+  gParamSpecs [PROP_MODE_DISPLAY_NAME] =
+    g_param_spec_string ("mode-display-name",
+                         _("Mode Display Name"),
+                         _("The display name of the keybinding mode."),
+                         NULL,
+                         (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (object_class, PROP_MODE_DISPLAY_NAME,
+                                   gParamSpecs [PROP_MODE_DISPLAY_NAME]);
+
   gParamSpecs [PROP_OVERWRITE_BRACES] =
     g_param_spec_boolean ("overwrite-braces",
                           _("Overwrite Braces"),
@@ -5929,6 +5945,19 @@ ide_source_view_get_insert_matching_brace (IdeSourceView *self)
   return priv->insert_matching_brace;
 }
 
+const gchar *
+ide_source_view_get_mode_display_name (IdeSourceView *self)
+{
+  IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
+
+  g_return_val_if_fail (IDE_IS_SOURCE_VIEW (self), NULL);
+
+  if (priv->mode != NULL)
+    return ide_source_view_mode_get_display_name (priv->mode);
+
+  return NULL;
+}
+
 gboolean
 ide_source_view_get_overwrite_braces (IdeSourceView *self)
 {
diff --git a/libide/ide-source-view.h b/libide/ide-source-view.h
index 2db6cf4..63651de 100644
--- a/libide/ide-source-view.h
+++ b/libide/ide-source-view.h
@@ -289,6 +289,7 @@ IdeFileSettings            *ide_source_view_get_file_settings         (IdeSource
 const PangoFontDescription *ide_source_view_get_font_desc             (IdeSourceView              *self);
 gboolean                    ide_source_view_get_highlight_current_line(IdeSourceView              *self);
 gboolean                    ide_source_view_get_insert_matching_brace (IdeSourceView              *self);
+const gchar                *ide_source_view_get_mode_display_name     (IdeSourceView              *self);
 gboolean                    ide_source_view_get_overwrite_braces      (IdeSourceView              *self);
 gboolean                    ide_source_view_get_rubberband_search     (IdeSourceView              *self);
 guint                       ide_source_view_get_scroll_offset         (IdeSourceView              *self);


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