[gnome-builder/wip/chergert/perspective] terminal: port terminal to perspectives
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/perspective] terminal: port terminal to perspectives
- Date: Fri, 4 Dec 2015 07:16:38 +0000 (UTC)
commit f705e4c65cc3e44b7ccfeb3f4cf9ce2577588a5d
Author: Christian Hergert <chergert redhat com>
Date: Thu Dec 3 23:16:25 2015 -0800
terminal: port terminal to perspectives
plugins/terminal/Makefile.am | 2 -
plugins/terminal/gb-terminal-application-addin.c | 22 +---
plugins/terminal/gb-terminal-document.c | 161 ----------------------
plugins/terminal/gb-terminal-document.h | 36 -----
plugins/terminal/gb-terminal-plugin.c | 3 -
plugins/terminal/gb-terminal-view-actions.c | 3 -
plugins/terminal/gb-terminal-view-private.h | 8 +-
plugins/terminal/gb-terminal-view.c | 93 ++-----------
plugins/terminal/gb-terminal-view.h | 7 +-
plugins/terminal/gb-terminal-view.ui | 2 +-
plugins/terminal/gb-terminal-workbench-addin.c | 72 +++++------
plugins/terminal/gb-terminal-workbench-addin.h | 6 +-
plugins/terminal/terminal.plugin | 1 +
13 files changed, 55 insertions(+), 361 deletions(-)
---
diff --git a/plugins/terminal/Makefile.am b/plugins/terminal/Makefile.am
index b781e29..d35dfe0 100644
--- a/plugins/terminal/Makefile.am
+++ b/plugins/terminal/Makefile.am
@@ -12,8 +12,6 @@ dist_plugin_DATA = terminal.plugin
libterminal_la_SOURCES = \
gb-terminal-application-addin.c \
gb-terminal-application-addin.h \
- gb-terminal-document.c \
- gb-terminal-document.h \
gb-terminal-plugin.c \
gb-terminal-private.h \
gb-terminal-view.c \
diff --git a/plugins/terminal/gb-terminal-application-addin.c
b/plugins/terminal/gb-terminal-application-addin.c
index 2a3304a..962207b 100644
--- a/plugins/terminal/gb-terminal-application-addin.c
+++ b/plugins/terminal/gb-terminal-application-addin.c
@@ -25,12 +25,11 @@ struct _GbTerminalApplicationAddin
static void application_addin_iface_init (IdeApplicationAddinInterface *iface);
-G_DEFINE_DYNAMIC_TYPE_EXTENDED (GbTerminalApplicationAddin,
- gb_terminal_application_addin,
- G_TYPE_OBJECT,
- 0,
- G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN,
- application_addin_iface_init))
+G_DEFINE_TYPE_EXTENDED (GbTerminalApplicationAddin,
+ gb_terminal_application_addin,
+ G_TYPE_OBJECT,
+ 0,
+ G_IMPLEMENT_INTERFACE (IDE_TYPE_APPLICATION_ADDIN, application_addin_iface_init))
static void
gb_terminal_application_addin_load (IdeApplicationAddin *addin,
@@ -61,11 +60,6 @@ gb_terminal_application_addin_class_init (GbTerminalApplicationAddinClass *klass
}
static void
-gb_terminal_application_addin_class_finalize (GbTerminalApplicationAddinClass *klass)
-{
-}
-
-static void
gb_terminal_application_addin_init (GbTerminalApplicationAddin *self)
{
}
@@ -76,9 +70,3 @@ application_addin_iface_init (IdeApplicationAddinInterface *iface)
iface->load = gb_terminal_application_addin_load;
iface->unload = gb_terminal_application_addin_unload;
}
-
-void
-_gb_terminal_application_addin_register_type (GTypeModule *module)
-{
- gb_terminal_application_addin_register_type (module);
-}
diff --git a/plugins/terminal/gb-terminal-plugin.c b/plugins/terminal/gb-terminal-plugin.c
index 275bf41..8bb20fd 100644
--- a/plugins/terminal/gb-terminal-plugin.c
+++ b/plugins/terminal/gb-terminal-plugin.c
@@ -27,9 +27,6 @@
void
peas_register_types (PeasObjectModule *module)
{
- _gb_terminal_application_addin_register_type (G_TYPE_MODULE (module));
- _gb_terminal_workbench_addin_register_type (G_TYPE_MODULE (module));
-
peas_object_module_register_extension_type (module,
IDE_TYPE_APPLICATION_ADDIN,
GB_TYPE_TERMINAL_APPLICATION_ADDIN);
diff --git a/plugins/terminal/gb-terminal-view-actions.c b/plugins/terminal/gb-terminal-view-actions.c
index 16a8d3a..9ce16ef 100644
--- a/plugins/terminal/gb-terminal-view-actions.c
+++ b/plugins/terminal/gb-terminal-view-actions.c
@@ -24,9 +24,6 @@
#include "gb-terminal-view-actions.h"
#include "gb-terminal-view-private.h"
-#include "gb-view-grid.h"
-#include "gb-widget.h"
-#include "gb-workbench.h"
typedef struct
{
diff --git a/plugins/terminal/gb-terminal-view-private.h b/plugins/terminal/gb-terminal-view-private.h
index 5f83e0f..9d0ef63 100644
--- a/plugins/terminal/gb-terminal-view-private.h
+++ b/plugins/terminal/gb-terminal-view-private.h
@@ -19,18 +19,14 @@
#ifndef GB_TERMINAL_VIEW_PRIVATE_H
#define GB_TERMINAL_VIEW_PRIVATE_H
+#include <ide.h>
#include <vte/vte.h>
-#include "gb-terminal-document.h"
-#include "gb-view.h"
-
G_BEGIN_DECLS
struct _GbTerminalView
{
- GbView parent_instance;
-
- GbTerminalDocument *document;
+ IdeLayoutView parent_instance;
VteTerminal *terminal_top;
VteTerminal *terminal_bottom;
diff --git a/plugins/terminal/gb-terminal-view.c b/plugins/terminal/gb-terminal-view.c
index 6bd085b..8a14125 100644
--- a/plugins/terminal/gb-terminal-view.c
+++ b/plugins/terminal/gb-terminal-view.c
@@ -20,19 +20,14 @@
#include <ide.h>
#include <vte/vte.h>
-#include "gb-terminal-document.h"
#include "gb-terminal-view.h"
#include "gb-terminal-view-private.h"
#include "gb-terminal-view-actions.h"
-#include "gb-view.h"
-#include "gb-widget.h"
-#include "gb-workbench.h"
-G_DEFINE_TYPE (GbTerminalView, gb_terminal_view, GB_TYPE_VIEW)
+G_DEFINE_TYPE (GbTerminalView, gb_terminal_view, IDE_TYPE_LAYOUT_VIEW)
enum {
PROP_0,
- PROP_DOCUMENT,
PROP_FONT_NAME,
LAST_PROP
};
@@ -66,32 +61,6 @@ static const GdkRGBA solarized_palette[] =
static void gb_terminal_view_connect_terminal (GbTerminalView *self, VteTerminal *terminal);
-static GbDocument *
-gb_terminal_view_get_document (GbView *view)
-{
- g_return_val_if_fail (GB_IS_TERMINAL_VIEW (view), NULL);
-
- return GB_DOCUMENT (GB_TERMINAL_VIEW (view)->document);
-}
-
-static void
-gb_terminal_view_set_document (GbTerminalView *view,
- GbTerminalDocument *document)
-{
- g_return_if_fail (GB_IS_TERMINAL_VIEW (view));
-
- if (view->document != document)
- {
- if (view->document)
- g_clear_object (&view->document);
-
- if (document)
- view->document = g_object_ref (document);
-
- g_object_notify (G_OBJECT (view), "document");
- }
-}
-
static void
gb_terminal_respawn (GbTerminalView *self,
VteTerminal *terminal)
@@ -111,7 +80,7 @@ gb_terminal_respawn (GbTerminalView *self,
vte_terminal_reset (terminal, TRUE, TRUE);
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
- if (!GB_IS_WORKBENCH (toplevel))
+ if (!IDE_IS_WORKBENCH (toplevel))
return;
/* Prevent flapping */
@@ -120,7 +89,7 @@ gb_terminal_respawn (GbTerminalView *self,
return;
self->last_respawn = now;
- context = gb_workbench_get_context (GB_WORKBENCH (toplevel));
+ context = ide_workbench_get_context (IDE_WORKBENCH (toplevel));
vcs = ide_context_get_vcs (context);
workdir = ide_vcs_get_working_directory (vcs);
workpath = g_file_get_path (workdir);
@@ -159,7 +128,7 @@ child_exited_cb (VteTerminal *terminal,
g_assert (VTE_IS_TERMINAL (terminal));
g_assert (GB_IS_TERMINAL_VIEW (self));
- if (!gb_widget_activate_action (GTK_WIDGET (self), "view-stack", "close", NULL))
+ if (!ide_widget_action (GTK_WIDGET (self), "view-stack", "close", NULL))
{
if (!gtk_widget_in_destruction (GTK_WIDGET (terminal)))
gb_terminal_respawn (self, terminal);
@@ -298,7 +267,7 @@ notification_received_cb (VteTerminal *terminal,
}
static const gchar *
-gb_terminal_get_title (GbView *view)
+gb_terminal_get_title (IdeLayoutView *view)
{
const gchar *title;
GbTerminalView *self = (GbTerminalView *)view;
@@ -318,17 +287,11 @@ focus_in_event_cb (VteTerminal *terminal,
GdkEvent *event,
GbTerminalView *self)
{
- const gchar *title;
-
g_assert (VTE_IS_TERMINAL (terminal));
g_assert (GB_IS_TERMINAL_VIEW (self));
self->bottom_has_focus = (terminal != self->terminal_top);
- title = gb_terminal_get_title (GB_VIEW (self));
- if (self->document)
- gb_terminal_document_set_title (self->document, title);
-
if (terminal == self->terminal_top)
{
self->top_has_needs_attention = FALSE;
@@ -340,8 +303,6 @@ focus_in_event_cb (VteTerminal *terminal,
gb_terminal_set_needs_attention (self, FALSE, GTK_POS_BOTTOM);
}
- g_object_notify (G_OBJECT (self), "title");
-
return GDK_EVENT_PROPAGATE;
}
@@ -385,15 +346,14 @@ style_context_changed (GtkStyleContext *style_context,
G_N_ELEMENTS (solarized_palette));
}
-static GbView *
-gb_terminal_create_split (GbView *view)
+static IdeLayoutView *
+gb_terminal_create_split (IdeLayoutView *view)
{
- GbView *new_view;
+ IdeLayoutView *new_view;
g_assert (GB_IS_TERMINAL_VIEW (view));
new_view = g_object_new (GB_TYPE_TERMINAL_VIEW,
- "document", gb_terminal_view_get_document (view),
"visible", TRUE,
NULL);
@@ -423,7 +383,7 @@ gb_terminal_view_set_font_name (GbTerminalView *self,
}
static void
-gb_terminal_set_split_view (GbView *view,
+gb_terminal_set_split_view (IdeLayoutView *view,
gboolean split_view)
{
GbTerminalView *self = (GbTerminalView *)view;
@@ -539,7 +499,6 @@ gb_terminal_view_finalize (GObject *object)
{
GbTerminalView *self = GB_TERMINAL_VIEW (object);
- g_clear_object (&self->document);
g_clear_object (&self->save_as_file_top);
g_clear_object (&self->save_as_file_bottom);
g_clear_pointer (&self->selection_buffer, g_free);
@@ -548,25 +507,6 @@ gb_terminal_view_finalize (GObject *object)
}
static void
-gb_terminal_view_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GbTerminalView *self = GB_TERMINAL_VIEW (object);
-
- switch (prop_id)
- {
- case PROP_DOCUMENT:
- g_value_set_object (value, self->document);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
-static void
gb_terminal_view_set_property (GObject *object,
guint prop_id,
const GValue *value,
@@ -580,10 +520,6 @@ gb_terminal_view_set_property (GObject *object,
gb_terminal_view_set_font_name (self, g_value_get_string (value));
break;
- case PROP_DOCUMENT:
- gb_terminal_view_set_document (self, g_value_get_object (value));
- break;
-
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -594,10 +530,9 @@ gb_terminal_view_class_init (GbTerminalViewClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- GbViewClass *view_class = GB_VIEW_CLASS (klass);
+ IdeLayoutViewClass *view_class = IDE_LAYOUT_VIEW_CLASS (klass);
object_class->finalize = gb_terminal_view_finalize;
- object_class->get_property = gb_terminal_view_get_property;
object_class->set_property = gb_terminal_view_set_property;
widget_class->realize = gb_terminal_realize;
@@ -606,7 +541,6 @@ gb_terminal_view_class_init (GbTerminalViewClass *klass)
widget_class->grab_focus = gb_terminal_grab_focus;
view_class->get_title = gb_terminal_get_title;
- view_class->get_document = gb_terminal_view_get_document;
view_class->create_split = gb_terminal_create_split;
view_class->set_split_view = gb_terminal_set_split_view;
@@ -616,13 +550,6 @@ gb_terminal_view_class_init (GbTerminalViewClass *klass)
g_type_ensure (VTE_TYPE_TERMINAL);
- properties [PROP_DOCUMENT] =
- g_param_spec_object ("document",
- "Document",
- "The document for the VTE terminal view.",
- GB_TYPE_TERMINAL_DOCUMENT,
- (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
properties [PROP_FONT_NAME] =
g_param_spec_string ("font-name",
"Font Name",
diff --git a/plugins/terminal/gb-terminal-view.h b/plugins/terminal/gb-terminal-view.h
index da25f74..5b8e7a3 100644
--- a/plugins/terminal/gb-terminal-view.h
+++ b/plugins/terminal/gb-terminal-view.h
@@ -19,16 +19,13 @@
#ifndef GB_TERMINAL_VIEW_H
#define GB_TERMINAL_VIEW_H
-#include "gb-terminal-document.h"
-#include "gb-view.h"
+#include <ide.h>
G_BEGIN_DECLS
#define GB_TYPE_TERMINAL_VIEW (gb_terminal_view_get_type())
-G_DECLARE_FINAL_TYPE (GbTerminalView, gb_terminal_view, GB, TERMINAL_VIEW, GbView)
-
-GbView *gb_terminal_view_new (GbTerminalDocument *document);
+G_DECLARE_FINAL_TYPE (GbTerminalView, gb_terminal_view, GB, TERMINAL_VIEW, IdeLayoutView)
G_END_DECLS
diff --git a/plugins/terminal/gb-terminal-view.ui b/plugins/terminal/gb-terminal-view.ui
index da1c1a3..c0bc699 100644
--- a/plugins/terminal/gb-terminal-view.ui
+++ b/plugins/terminal/gb-terminal-view.ui
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.16 -->
- <template class="GbTerminalView" parent="GbView">
+ <template class="GbTerminalView" parent="IdeLayoutView">
<property name="visible">true</property>
<child>
<object class="GtkPaned" id="paned">
diff --git a/plugins/terminal/gb-terminal-workbench-addin.c b/plugins/terminal/gb-terminal-workbench-addin.c
index 176aa34..1ed7855 100644
--- a/plugins/terminal/gb-terminal-workbench-addin.c
+++ b/plugins/terminal/gb-terminal-workbench-addin.c
@@ -17,58 +17,59 @@
*/
#include <glib/gi18n.h>
+#include <ide.h>
#include "gb-terminal-view.h"
-#include "gb-terminal-document.h"
#include "gb-terminal-workbench-addin.h"
-#include "gb-view-grid.h"
-#include "gb-workspace.h"
struct _GbTerminalWorkbenchAddin
{
GObject parent_instance;
- GbWorkbench *workbench;
+ IdeWorkbench *workbench;
GbTerminalView *panel_terminal;
};
-static void workbench_addin_iface_init (GbWorkbenchAddinInterface *iface);
+static void workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface);
-G_DEFINE_DYNAMIC_TYPE_EXTENDED (GbTerminalWorkbenchAddin,
- gb_terminal_workbench_addin,
- G_TYPE_OBJECT,
- 0,
- G_IMPLEMENT_INTERFACE (GB_TYPE_WORKBENCH_ADDIN,
- workbench_addin_iface_init))
+G_DEFINE_TYPE_EXTENDED (GbTerminalWorkbenchAddin,
+ gb_terminal_workbench_addin,
+ G_TYPE_OBJECT,
+ 0,
+ G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKBENCH_ADDIN, workbench_addin_iface_init))
static void
new_terminal_activate_cb (GSimpleAction *action,
GVariant *param,
GbTerminalWorkbenchAddin *self)
{
- GbTerminalDocument *document;
- GbViewGrid *view_grid;
+ GbTerminalView *view;
+ IdePerspective *perspective;
g_assert (G_IS_SIMPLE_ACTION (action));
g_assert (GB_IS_TERMINAL_WORKBENCH_ADDIN (self));
- view_grid = GB_VIEW_GRID (gb_workbench_get_view_grid (self->workbench));
+ perspective = ide_workbench_get_perspective_by_name (self->workbench, "editor");
+ g_assert (IDE_IS_LAYOUT (perspective));
- document = g_object_new (GB_TYPE_TERMINAL_DOCUMENT, NULL);
- gb_view_grid_focus_document (view_grid, GB_DOCUMENT (document));
+ view = g_object_new (GB_TYPE_TERMINAL_VIEW,
+ "visible", TRUE,
+ NULL);
+ gtk_container_add (GTK_CONTAINER (perspective), GTK_WIDGET (view));
+ gtk_widget_grab_focus (GTK_WIDGET (view));
}
static void
-gb_terminal_workbench_addin_load (GbWorkbenchAddin *addin,
- GbWorkbench *workbench)
+gb_terminal_workbench_addin_load (IdeWorkbenchAddin *addin,
+ IdeWorkbench *workbench)
{
GbTerminalWorkbenchAddin *self = (GbTerminalWorkbenchAddin *)addin;
- GbWorkspace *workspace;
+ IdePerspective *perspective;
GtkWidget *bottom_pane;
g_autoptr(GSimpleAction) action = NULL;
g_assert (GB_IS_TERMINAL_WORKBENCH_ADDIN (self));
- g_assert (GB_IS_WORKBENCH (workbench));
+ g_assert (IDE_IS_WORKBENCH (workbench));
ide_set_weak_pointer (&self->workbench, workbench);
@@ -89,17 +90,19 @@ gb_terminal_workbench_addin_load (GbWorkbenchAddin *addin,
(gpointer *)&self->panel_terminal);
}
- workspace = GB_WORKSPACE (gb_workbench_get_workspace (workbench));
- bottom_pane = gb_workspace_get_bottom_pane (workspace);
- gb_workspace_pane_add_page (GB_WORKSPACE_PANE (bottom_pane),
- GTK_WIDGET (self->panel_terminal),
- _("Terminal"),
- "utilities-terminal-symbolic");
+ perspective = ide_workbench_get_perspective_by_name (workbench, "editor");
+ g_assert (IDE_IS_LAYOUT (perspective));
+
+ bottom_pane = ide_layout_get_bottom_pane (IDE_LAYOUT (perspective));
+ ide_layout_pane_add_page (IDE_LAYOUT_PANE (bottom_pane),
+ GTK_WIDGET (self->panel_terminal),
+ _("Terminal"),
+ "utilities-terminal-symbolic");
}
static void
-gb_terminal_workbench_addin_unload (GbWorkbenchAddin *addin,
- GbWorkbench *workbench)
+gb_terminal_workbench_addin_unload (IdeWorkbenchAddin *addin,
+ IdeWorkbench *workbench)
{
GbTerminalWorkbenchAddin *self = (GbTerminalWorkbenchAddin *)addin;
@@ -122,24 +125,13 @@ gb_terminal_workbench_addin_class_init (GbTerminalWorkbenchAddinClass *klass)
}
static void
-gb_terminal_workbench_addin_class_finalize (GbTerminalWorkbenchAddinClass *klass)
-{
-}
-
-static void
gb_terminal_workbench_addin_init (GbTerminalWorkbenchAddin *self)
{
}
static void
-workbench_addin_iface_init (GbWorkbenchAddinInterface *iface)
+workbench_addin_iface_init (IdeWorkbenchAddinInterface *iface)
{
iface->load = gb_terminal_workbench_addin_load;
iface->unload = gb_terminal_workbench_addin_unload;
}
-
-void
-_gb_terminal_workbench_addin_register_type (GTypeModule *module)
-{
- gb_terminal_workbench_addin_register_type (module);
-}
diff --git a/plugins/terminal/gb-terminal-workbench-addin.h b/plugins/terminal/gb-terminal-workbench-addin.h
index 8d719de..f045077 100644
--- a/plugins/terminal/gb-terminal-workbench-addin.h
+++ b/plugins/terminal/gb-terminal-workbench-addin.h
@@ -19,15 +19,13 @@
#ifndef GB_TERMINAL_WORKBENCH_ADDIN_H
#define GB_TERMINAL_WORKBENCH_ADDIN_H
-#include "gb-workbench-addin.h"
+#include <glib-object.h>
G_BEGIN_DECLS
#define GB_TYPE_TERMINAL_WORKBENCH_ADDIN (gb_terminal_workbench_addin_get_type())
-G_DECLARE_FINAL_TYPE (GbTerminalWorkbenchAddin, gb_terminal_workbench_addin,
- GB, TERMINAL_WORKBENCH_ADDIN,
- GObject)
+G_DECLARE_FINAL_TYPE (GbTerminalWorkbenchAddin, gb_terminal_workbench_addin, GB, TERMINAL_WORKBENCH_ADDIN,
GObject)
G_END_DECLS
diff --git a/plugins/terminal/terminal.plugin b/plugins/terminal/terminal.plugin
index f99920e..c735216 100644
--- a/plugins/terminal/terminal.plugin
+++ b/plugins/terminal/terminal.plugin
@@ -4,5 +4,6 @@ Name=Terminal
Description=A terminal for Builder
Authors=Christian Hergert <christian hergert me>
Copyright=Copyright © 2015 Christian Hergert
+Depends=editor
Builtin=true
Hidden=true
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]