[gnome-builder/wip/commands] vim: wire vim command entry to the command bar



commit dfe901c8f0e6964491356ce0497436c16d362d0e
Author: Christian Hergert <christian hergert me>
Date:   Tue Oct 7 15:02:08 2014 -0700

    vim: wire vim command entry to the command bar

 src/editor/gb-editor-tab-private.h |    2 -
 src/editor/gb-editor-tab.c         |   97 ++----------------------------------
 src/workbench/gb-workbench.c       |   12 +++++
 src/workbench/gb-workbench.h       |   14 +++--
 4 files changed, 25 insertions(+), 100 deletions(-)
---
diff --git a/src/editor/gb-editor-tab-private.h b/src/editor/gb-editor-tab-private.h
index 33da9c5..8850211 100644
--- a/src/editor/gb-editor-tab-private.h
+++ b/src/editor/gb-editor-tab-private.h
@@ -107,8 +107,6 @@ struct _GbEditorTabPrivate
   GbSourceView        *source_view;
   GdTaggedEntry       *search_entry;
   GdTaggedEntryTag    *search_entry_tag;
-  GtkEntry            *vim_command_entry;
-  GtkRevealer         *vim_command_entry_revealer;
 
   /*
    * Information about our target file and encoding.
diff --git a/src/editor/gb-editor-tab.c b/src/editor/gb-editor-tab.c
index ec72794..6ae2781 100644
--- a/src/editor/gb-editor-tab.c
+++ b/src/editor/gb-editor-tab.c
@@ -981,21 +981,17 @@ on_vim_command_visibility_toggled (GbEditorVim *vim,
                                    gboolean     visible,
                                    GbEditorTab *tab)
 {
+  GtkWidget *toplevel;
+
   ENTRY;
 
   g_return_if_fail (GB_IS_EDITOR_VIM (vim));
   g_return_if_fail (GB_IS_EDITOR_TAB (tab));
 
-  gtk_revealer_set_reveal_child (tab->priv->vim_command_entry_revealer,
-                                 visible);
+  toplevel = gtk_widget_get_toplevel (GTK_WIDGET (tab));
 
-  if (visible)
-    {
-      gtk_entry_set_text (tab->priv->vim_command_entry, "");
-      gtk_widget_grab_focus (GTK_WIDGET (tab->priv->vim_command_entry));
-    }
-  else
-    gtk_widget_grab_focus (GTK_WIDGET (tab->priv->source_view));
+  if (GB_IS_WORKBENCH (toplevel))
+    gb_workbench_set_command_bar_visible (GB_WORKBENCH (toplevel), visible);
 
   EXIT;
 }
@@ -1012,53 +1008,6 @@ on_vim_begin_search (GbEditorVim *vim,
 }
 
 static void
-on_vim_command_entry_activate (GtkEntry    *entry,
-                               GbEditorTab *tab)
-{
-  GtkWidget *toplevel;
-  GbWorkspace *workspace;
-  GActionGroup *actions;
-  GAction *action = NULL;
-  const gchar *text;
-
-  g_return_if_fail (GTK_IS_ENTRY (entry));
-  g_return_if_fail (GB_IS_EDITOR_TAB (tab));
-
-  if (!(text = gtk_entry_get_text (entry)))
-    return;
-
-  while (*text == ':')
-    text++;
-
-  toplevel = gtk_widget_get_toplevel (GTK_WIDGET (tab));
-  workspace = gb_workbench_get_workspace (GB_WORKBENCH (toplevel),
-                                          GB_TYPE_EDITOR_WORKSPACE);
-  actions = gb_workspace_get_actions (workspace);
-
-  /*
-   * TODO: This is a very crappy way to commands. If you support Builder,
-   *       I'll have time to fix this ;-)
-   */
-
-  if (g_str_equal (text, "w"))
-    {
-      gb_editor_vim_set_mode (tab->priv->vim, GB_EDITOR_VIM_NORMAL);
-      action = g_action_map_lookup_action (G_ACTION_MAP (actions), "save");
-      g_action_activate (action, NULL);
-      return;
-    }
-  else if (g_str_equal (text, "e"))
-    {
-      gb_editor_vim_set_mode (tab->priv->vim, GB_EDITOR_VIM_NORMAL);
-      action = g_action_map_lookup_action (G_ACTION_MAP (actions), "open");
-      g_action_activate (action, NULL);
-      return;
-    }
-
-  gb_editor_vim_execute_command (tab->priv->vim, text);
-}
-
-static void
 on_vim_notify_phrase (GbEditorVim *vim,
                       GParamSpec  *pspec,
                       GbEditorTab *tab)
@@ -1086,28 +1035,6 @@ on_vim_notify_mode (GbEditorVim *vim,
 }
 
 static gboolean
-on_vim_command_entry_key_press_event (GtkEntry    *entry,
-                                      GdkEventKey *event,
-                                      GbEditorTab *tab)
-{
-  ENTRY;
-
-  g_return_if_fail (GTK_IS_ENTRY (entry));
-  g_return_if_fail (event);
-  g_return_if_fail (GB_IS_EDITOR_TAB (tab));
-
-  switch (event->keyval)
-    {
-    case GDK_KEY_Escape:
-      gb_editor_vim_set_mode (tab->priv->vim, GB_EDITOR_VIM_NORMAL);
-      RETURN (TRUE);
-
-    default:
-      RETURN (FALSE);
-    }
-}
-
-static gboolean
 transform_file_to_language (GBinding     *binding,
                             const GValue *src_value,
                             GValue       *dst_value,
@@ -1312,16 +1239,6 @@ gb_editor_tab_constructed (GObject *object)
                     G_CALLBACK (on_vim_notify_mode),
                     tab);
 
-  g_signal_connect (priv->vim_command_entry,
-                    "activate",
-                    G_CALLBACK (on_vim_command_entry_activate),
-                    tab);
-
-  g_signal_connect (priv->vim_command_entry,
-                    "key-press-event",
-                    G_CALLBACK (on_vim_command_entry_key_press_event),
-                    tab);
-
   settings = g_settings_new ("org.gnome.builder.editor");
   g_settings_bind (settings, "vim-mode", priv->vim, "enabled",
                    G_SETTINGS_BIND_DEFAULT);
@@ -1546,10 +1463,6 @@ gb_editor_tab_class_init (GbEditorTabClass *klass)
                                                 snippets_provider);
   gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab,
                                                 source_view);
-  gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab,
-                                                vim_command_entry);
-  gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab,
-                                                vim_command_entry_revealer);
 
   g_type_ensure (GB_TYPE_EDITOR_DOCUMENT);
   g_type_ensure (GB_TYPE_SOURCE_CHANGE_MONITOR);
diff --git a/src/workbench/gb-workbench.c b/src/workbench/gb-workbench.c
index c9ce4d3..7463d16 100644
--- a/src/workbench/gb-workbench.c
+++ b/src/workbench/gb-workbench.c
@@ -143,6 +143,18 @@ gb_workbench_workspace_changed (GbWorkbench *workbench,
   EXIT;
 }
 
+void
+gb_workbench_set_command_bar_visible (GbWorkbench *workbench,
+                                      gboolean     visible)
+{
+  g_return_if_fail (GB_IS_WORKBENCH (workbench));
+
+  if (visible)
+    gb_command_bar_show (workbench->priv->command_bar);
+  else
+    gb_command_bar_hide (workbench->priv->command_bar);
+}
+
 static void
 gb_workbench_stack_child_changed (GbWorkbench *workbench,
                                   GParamSpec  *pspec,
diff --git a/src/workbench/gb-workbench.h b/src/workbench/gb-workbench.h
index 2d58810..1541b49 100644
--- a/src/workbench/gb-workbench.h
+++ b/src/workbench/gb-workbench.h
@@ -54,13 +54,15 @@ struct _GbWorkbenchClass
                              GbWorkspace *workspace);
 };
 
-GType             gb_workbench_get_type             (void) G_GNUC_CONST;
-GbNavigationList *gb_workbench_get_navigation_list  (GbWorkbench *workbench);
-GbWorkspace      *gb_workbench_get_active_workspace (GbWorkbench *workbench);
-GbWorkspace      *gb_workbench_get_workspace        (GbWorkbench *workbench,
-                                                     GType        type);
+GType             gb_workbench_get_type                (void) G_GNUC_CONST;
+GbNavigationList *gb_workbench_get_navigation_list     (GbWorkbench *workbench);
+GbWorkspace      *gb_workbench_get_active_workspace    (GbWorkbench *workbench);
+GbWorkspace      *gb_workbench_get_workspace           (GbWorkbench *workbench,
+                                                        GType        type);
+void              gb_workbench_set_command_bar_visible (GbWorkbench *workbench,
+                                                        gboolean     visible);
 
-GbWorkbench      *gb_navigation_list_get_workbench  (GbNavigationList *list);
+GbWorkbench      *gb_navigation_list_get_workbench     (GbNavigationList *list);
 
 G_END_DECLS
 


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