[gnome-builder/wip/chergert/perspective] libide: sketch out core objects for workbench



commit c7cde0cb63bb006b5205252dd7bfb3c223946dcb
Author: Christian Hergert <chergert redhat com>
Date:   Fri Oct 30 19:02:37 2015 -0700

    libide: sketch out core objects for workbench
    
    Lots to think about, just some sketches.

 libide/ide-application.h        |   57 +++++++++++
 libide/ide-perspective.h        |   53 ++++++++++
 libide/ide-preferences-addin.h  |   43 ++++++++
 libide/ide-preferences-window.h |   65 ++++++++++++
 libide/ide-view.h               |   61 ++++++++++++
 libide/ide-workbench-addin.h    |   45 +++++++++
 libide/ide-workbench.c          |  208 +++++++++++++++++++++++++++++++++++++++
 libide/ide-workbench.h          |   62 ++++++++++++
 8 files changed, 594 insertions(+), 0 deletions(-)
---
diff --git a/libide/ide-application.h b/libide/ide-application.h
new file mode 100644
index 0000000..1debdd2
--- /dev/null
+++ b/libide/ide-application.h
@@ -0,0 +1,57 @@
+/* ide-application.h
+ *
+ * Copyright (C) 2015 Christian Hergert <chergert redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef IDE_APPLICATION_H
+#define IDE_APPLICATION_H
+
+#include <gio/gio.h>
+
+#define IDE_TYPE_APPLICATION    (ide_application_get_type())
+#define IDE_APPLICATION_DEFAULT (IDE_APPLICATION(g_application_get_default()))
+
+G_DECLARE_FINAL_TYPE (IdeApplication, ide_application, IDE, APPLICATION, GtkApplication)
+
+GDateTime  *ide_application_get_startup_time    (IdeApplication       *self);
+void        ide_application_open_project_async  (IdeApplication       *self,
+                                                 GFile                *project_file,
+                                                 GPtrArray            *additional_files,
+                                                 GCancellable         *cancellable,
+                                                 GAsyncReadyCallback   callback,
+                                                 gpointer              user_data);
+gboolean    ide_application_open_project_finish (IdeApplication       *self,
+                                                 GAsyncResult         *result,
+                                                 GError              **error);
+void        ide_application_open_files_async    (IdeApplication       *self,
+                                                 GFile               **files,
+                                                 gint                  n_files,
+                                                 GCancellable         *cancellable,
+                                                 GAsyncReadyCallback   callback,
+                                                 gpointer              user_data);
+gboolean    ide_application_open_files_finish   (IdeApplication       *self,
+                                                 GAsyncResult         *result,
+                                                 GError              **error);
+void        ide_application_get_worker_async    (IdeApplication       *self,
+                                                 const gchar          *plugin_name,
+                                                 GCancellable         *cancellable,
+                                                 GAsyncReadyCallback   callback,
+                                                 gpointer              user_data);
+GDBusProxy *ide_application_get_worker_finish   (IdeApplication       *self,
+                                                 GAsyncResult         *result,
+                                                 GError              **error);
+
+#endif /* IDE_APPLICATION_H */
diff --git a/libide/ide-perspective.h b/libide/ide-perspective.h
new file mode 100644
index 0000000..de8a4da
--- /dev/null
+++ b/libide/ide-perspective.h
@@ -0,0 +1,53 @@
+/* ide-perspective.h
+ *
+ * Copyright (C) 2015 Christian Hergert <chergert redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef IDE_PERSPECTIVE_H
+#define IDE_PERSPECTIVE_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define IDE_TYPE_PERSPECTIVE (ide_perspective_get_type())
+
+G_DECLARE_INTERFACE (IdePerspective, ide_perspective, IDE, PERSPECTIVE, GtkWidget)
+
+struct _IdePerspectiveInterface
+{
+  GTypeInterface parent;
+
+  const gchar *(*get_icon_name)       (IdePerspective *self);
+  const gchar *(*get_title)           (IdePerspective *self);
+  gboolean     (*get_needs_attention) (IdePerspective *self);
+  void         (*views_foreach)       (IdePerspective *self,
+                                       GtkCallback     callback,
+                                       gpointer        user_data);
+  GtkWidget   *(*get_titlebar)        (IdePerspective *self);
+};
+
+const gchar *ide_perspective_get_icon_name       (IdePerspective *self);
+const gchar *ide_perspective_get_title           (IdePerspective *self);
+GtkWidget   *ide_perspective_get_titlebar        (IdePerspective *self);
+gboolean     ide_perspective_get_needs_attention (IdePerspective *self);
+void         ide_perspective_views_foreach       (IdePerspective *self,
+                                                  GtkCallback     callback,
+                                                  gpointer        user_data);
+
+G_END_DECLS
+
+#endif /* IDE_PERSPECTIVE_H */
diff --git a/libide/ide-preferences-addin.h b/libide/ide-preferences-addin.h
new file mode 100644
index 0000000..8094ee7
--- /dev/null
+++ b/libide/ide-preferences-addin.h
@@ -0,0 +1,43 @@
+/* ide-preferences-addin.h
+ *
+ * Copyright (C) 2015 Christian Hergert <chergert redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef IDE_PREFERENCES_ADDIN_H
+#define IDE_PREFERENCES_ADDIN_H
+
+#include <gtk/gtk.h>
+
+#define IDE_TYPE_PREFERENCES_ADDIN (ide_preferences_addin_get_type())
+
+G_DECLARE_DERIVABLE_TYPE (IdePreferencesAddin, ide_preferences_addin, IDE, PREFERENCES_ADDIN, GObject)
+
+struct _IdePreferencesAddinInterface
+{
+  GTypeInterface parent_interface;
+
+  void (*load)   (IdePreferencesAddin  *self,
+                  IdePreferencesWindow *window);
+  void (*unload) (IdePreferencesAddin *self,
+                  IdePreferencesWindow *window);
+};
+
+void ide_preferences_addin_load   (IdePreferencesAddin  *self,
+                                   IdePreferencesWindow *window);
+void ide_preferences_addin_unload (IdePreferencesAddin  *self,
+                                   IdePreferencesWindow *window);
+
+#endif /* IDE_PREFERENCES_ADDIN_H */
diff --git a/libide/ide-preferences-window.h b/libide/ide-preferences-window.h
new file mode 100644
index 0000000..d36a967
--- /dev/null
+++ b/libide/ide-preferences-window.h
@@ -0,0 +1,65 @@
+/* ide-preferences-window.h
+ *
+ * Copyright (C) 2015 Christian Hergert <chergert redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef IDE_PREFERENCES_WINDOW
+#define IDE_PREFERENCES_WINDOW
+
+#include <gtk/gtk.h>
+
+#include "ide-application.h"
+
+#define IDE_TYPE_PREFERENCES_WINDOW (ide_preferences_window_get_type())
+
+G_DECLARE_FINAL_TYPE (IdePreferencesWindow, ide_preferences_window, IDE, PREFERENCES_WINDOW, 
GtkApplicationWindow)
+
+GtkWidget *ide_preferences_window_new            (IdeApplication *application);
+void       ide_preferences_window_add_page       (IdePreferencesWindow *self,
+                                                  const gchar          *page_name,
+                                                  const gchar          *title,
+                                                  gint                  priority);
+void       ide_preferences_window_add_group      (IdePreferencesWindow *self,
+                                                  const gchar          *page_name,
+                                                  const gchar          *group_name,
+                                                  const gchar          *title,
+                                                  gint                  priority);
+guint      ide_preferences_window_add_switch     (IdePreferencesWindow *self,
+                                                  const gchar          *page_name,
+                                                  const gchar          *group_name,
+                                                  const gchar          *schema_id,
+                                                  const gchar          *key,
+                                                  const gchar          *title,
+                                                  const gchar          *subtitle,
+                                                  const gchar          *keywords,
+                                                  gint                  priority);
+guint      ide_preferences_window_add_spinbutton (IdePreferencesWindow *self,
+                                                  const gchar          *page_name,
+                                                  const gchar          *group_name,
+                                                  const gchar          *schema_id,
+                                                  const gchar          *key,
+                                                  const gchar          *title,
+                                                  const gchar          *subtitle,
+                                                  const gchar          *keywords,
+                                                  gint                  priority);
+guint      ide_preferences_window_add_custom     (IdePreferencesWindow *self,
+                                                  const gchar          *page_name,
+                                                  const gchar          *group_name,
+                                                  GtkWidget            *widget,
+                                                  const gchar          *keywords,
+                                                  gint                  priority);
+
+#endif /* IDE_PREFERENCES_WINDOW */
diff --git a/libide/ide-view.h b/libide/ide-view.h
new file mode 100644
index 0000000..0ab5609
--- /dev/null
+++ b/libide/ide-view.h
@@ -0,0 +1,61 @@
+/* ide-view.h
+ *
+ * Copyright (C) 2015 Christian Hergert <chergert redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef IDE_VIEW_H
+#define IDE_VIEW_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define IDE_TYPE_VIEW (ide_view_get_type())
+
+G_DECLARE_INTERFACE (IdeView, ide_view, IDE, VIEW, GtkWidget)
+
+struct _IdeViewInterface
+{
+  GTypeInterface parent;
+
+  const gchar *(*get_title)           (IdeView              *self);
+  const gchar *(*get_icon_name)       (IdeView              *self);
+  gboolean     (*get_can_save)        (IdeView              *self);
+  gboolean     (*get_needs_attention) (IdeView              *self);
+  void         (*save_async)          (IdeView              *self,
+                                       GCancellable         *cancellable,
+                                       GAsyncReadyCallback   callback,
+                                       gpointer              user_data);
+  gboolean     (*save_finish)         (IdeView              *self,
+                                       GAsyncResult         *result,
+                                       GError              **error);
+};
+
+const gchar *ide_view_get_title           (IdeView              *self);
+const gchar *ide_view_get_icon_name       (IdeView              *self);
+gboolean     ide_view_get_can_save        (IdeView              *self);
+gboolean     ide_view_get_needs_attention (IdeView              *self);
+void         ide_view_save_async          (IdeView              *self,
+                                           GCancellable         *cancellable,
+                                           GAsyncReadyCallback   callback,
+                                           gpointer              user_data);
+gboolean     ide_view_save_finish         (IdeView              *self,
+                                           GAsyncResult         *result,
+                                           GError              **error);
+
+G_END_DECLS
+
+#endif /* IDE_VIEW_H */
diff --git a/libide/ide-workbench-addin.h b/libide/ide-workbench-addin.h
new file mode 100644
index 0000000..c48fcd3
--- /dev/null
+++ b/libide/ide-workbench-addin.h
@@ -0,0 +1,45 @@
+/* ide-workbench-addin.h
+ *
+ * Copyright (C) 2015 Christian Hergert <chergert redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef IDE_WORKBENCH_ADDIN_H
+#define IDE_WORKBENCH_ADDIN_H
+
+#include "ide-workbench.h"
+
+G_BEGIN_DECLS
+
+#define IDE_TYPE_WORKBENCH_ADDIN (ide_workbench_addin_get_type())
+
+struct _IdeWorkbenchAddinInterface
+{
+  GTypeInterface parent;
+
+  void (*load)   (IdeWorkbenchAddin *self,
+                  IdeWorkbench      *workbench);
+  void (*unload) (IdeWorkbenchAddin *self,
+                  IdeWorkbench      *workbench);
+};
+
+void ide_workbench_addin_load   (IdeWorkbenchAddin *self,
+                                 IdeWorkbench      *workbench);
+void ide_workbench_addin_unload (IdeWorkbenchAddin *self,
+                                 IdeWorkbench      *workbench);
+
+G_END_DECLS
+
+#endif /* IDE_WORKBENCH_ADDIN_H */
diff --git a/libide/ide-workbench.c b/libide/ide-workbench.c
new file mode 100644
index 0000000..677e8ca
--- /dev/null
+++ b/libide/ide-workbench.c
@@ -0,0 +1,208 @@
+/* ide-workbench.c
+ *
+ * Copyright (C) 2015 Christian Hergert <christian hergert me>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define G_LOG_DOMAIN "ide-workbench"
+
+#include <libpeas/peas.h>
+
+#include "ide-macros.h"
+#include "ide-workbench.h"
+
+struct _IdeWorkbench
+{
+  GtkApplicationWindow  parent;
+
+  PeasExtensionSet     *perspectives;
+  IdePerspective       *perspective;
+
+  GtkHeaderBar         *header_bar;
+  GtkStack             *perspectives_stack;
+  GtkStackSwitcher     *perspectives_stack_switcher;
+};
+
+G_DEFINE_TYPE (IdeWorkbench, ide_workbench, G_TYPE_OBJECT)
+
+enum {
+  PROP_0,
+  PROP_PERSPECTIVE,
+  LAST_PROP
+};
+
+static GParamSpec *gParamSpecs [LAST_PROP];
+
+static void
+ide_workbench_add_perspective (PeasExtensionSet *set,
+                               PeasPluginInfo   *plugin_info,
+                               PeasExtension    *extension,
+                               gpointer          user_data)
+{
+  IdeWorkbench *self = user_data;
+  IdePerspective *perspective = (IdePerspective *)extension;
+  const gchar *title;
+  const gchar *icon_name;
+
+  g_assert (IDE_IS_WORKBENCH (self));
+  g_assert (IDE_IS_PERSPECTIVE (perspective));
+
+  g_object_ref_sink (perspective);
+
+  title = ide_perspective_get_title (perspective);
+  icon_name = ide_perspective_get_icon_name (perspective);
+
+  gtk_container_add_with_properties (GTK_CONTAINER (self->perspectives_stack),
+                                     GTK_WIDGET (perspective),
+                                     "icon-name", icon_name,
+                                     "needs-attention", FALSE,
+                                     "title", title,
+                                     NULL);
+}
+
+static void
+ide_workbench_remove_perspective (PeasExtensionSet *set,
+                                  PeasPluginInfo   *plugin_info,
+                                  PeasExtension    *extension,
+                                  gpointer          user_data)
+{
+  IdeWorkbench *self = user_data;
+  IdePerspective *perspective = (IdePerspective *)extension;
+
+  g_assert (IDE_IS_WORKBENCH (self));
+  g_assert (IDE_IS_PERSPECTIVE (perspective));
+
+  gtk_container_remove (GTK_CONTAINER (self->perspectives_stack), GTK_WIDGET (perspective));
+}
+
+static void
+ide_workbench_finalize (GObject *object)
+{
+  IdeWorkbench *self = (IdeWorkbench *)object;
+
+  ide_clear_weak_pointer (&self->perspective);
+
+  G_OBJECT_CLASS (ide_workbench_parent_class)->finalize (object);
+}
+
+static void
+ide_workbench_constructed (GObject *object)
+{
+  IdeWorkbench *self = (IdeWorkbench *)object;
+
+  G_OBJECT_CLASS (ide_workbench_parent_class)->constructed (object);
+
+  self->perspectives = peas_extension_set_new (peas_engine_get_default (),
+                                               IDE_TYPE_PERSPECTIVE,
+                                               NULL);
+
+  g_signal_connect_object (self->perspectives,
+                           "extension-added",
+                           G_CALLBACK (ide_workbench_add_perspective),
+                           self);
+
+  g_signal_connect_object (self->perspectives,
+                           "extension-removed",
+                           G_CALLBACK (ide_workbench_remove_perspective),
+                           self);
+
+  peas_extension_set_foreach (self->perspectives,
+                              ide_workbench_add_perspective,
+                              self);
+}
+
+static void
+ide_workbench_destroy (GtkWidget *widget)
+{
+  IdeWorkbench *self = (IdeWorkbench *)widget;
+
+  g_assert (IDE_IS_WORKBENCH (self));
+
+  g_clear_object (&self->perspectives);
+
+  GTK_WIDGET_CLASS (ide_workbench_parent_class)->destroy (widget);
+}
+
+static void
+ide_workbench_get_property (GObject    *object,
+                            guint       prop_id,
+                            GValue     *value,
+                            GParamSpec *pspec)
+{
+  IdeWorkbench *self = IDE_WORKBENCH (object);
+
+  switch (prop_id)
+    {
+    case PROP_PERSPECTIVE:
+      g_value_set_object (value, ide_workbench_get_perspective (self));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+ide_workbench_set_property (GObject      *object,
+                            guint         prop_id,
+                            const GValue *value,
+                            GParamSpec   *pspec)
+{
+  IdeWorkbench *self = IDE_WORKBENCH (object);
+
+  switch (prop_id)
+    {
+    case PROP_PERSPECTIVE:
+      ide_workbench_set_perspective (self, g_value_get_object (value));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+ide_workbench_class_init (IdeWorkbenchClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+  object_class->constructed = ide_workbench_constructed;
+  object_class->destroy = ide_workbench_destroy;
+  object_class->finalize = ide_workbench_finalize;
+  object_class->get_property = ide_workbench_get_property;
+  object_class->set_property = ide_workbench_set_property;
+
+  gParamSpecs [PROP_PERSPECTIVE] =
+    g_param_spec_object ("perspective",
+                         "Perspective",
+                         "Perspective",
+                         IDE_TYPE_PERSPECTIVE,
+                         (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_properties (object_class, LAST_PROP, gParamSpecs);
+
+  gtk_widget_class_set_template_from_resource (widget_class,
+                                               "/org/gnome/builder/ui/ide-workbench.ui");
+
+  gtk_widget_class_bind_template_child (widget_class, IdeWorkbench, perspectives_stack);
+  gtk_widget_class_bind_template_child (widget_class, IdeWorkbench, perspectives_stack_switcher);
+}
+
+static void
+ide_workbench_init (IdeWorkbench *self)
+{
+  gtk_widget_init_template (GTK_WIDGET (self));
+}
diff --git a/libide/ide-workbench.h b/libide/ide-workbench.h
new file mode 100644
index 0000000..94b92c5
--- /dev/null
+++ b/libide/ide-workbench.h
@@ -0,0 +1,62 @@
+/* ide-workbench.h
+ *
+ * Copyright (C) 2015 Christian Hergert <chergert redhat com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef IDE_WORKBENCH_H
+#define IDE_WORKBENCH_H
+
+#include <gtk/gtk.h>
+
+#include "ide-context.h"
+#include "ide-perspective.h"
+
+G_BEGIN_DECLS
+
+#define IDE_TYPE_WORKBENCH (ide_workbench_get_type())
+
+G_DECLARE_FINAL_TYPE (IdeWorkbench, ide_workbench, IDE, WORKBENCH, GtkApplicationWindow)
+
+void            ide_workbench_open_async      (IdeWorkbench         *self,
+                                               GFile               **files,
+                                               gint                  n_files,
+                                               GCancellable         *cancellable,
+                                               GAsyncReadyCallback   callback,
+                                               gpointer              user_data);
+gboolean        ide_workbench_open_finish     (IdeWorkbench         *self,
+                                               GAsyncResult         *result,
+                                               GError              **error);
+void            ide_workbench_save_all_async  (IdeWorkbench         *self,
+                                               GCancellable         *cancellable,
+                                               GAsyncReadyCallback   callback,
+                                               gpointer              user_data);
+gboolean        ide_workbench_save_all_finish (IdeWorkbench         *self,
+                                               GAsyncResult         *result,
+                                               GError              **error);
+void            ide_workbench_focus           (IdeWorkbench         *self,
+                                               GtkWidget            *widget);
+void            ide_workbench_close           (IdeWorkbench         *self);
+IdeContext     *ide_workbench_get_context     (IdeWorkbench         *self);
+IdePerspective *ide_workbench_get_perspective (IdeWorkbench         *self);
+void            ide_workbench_set_perspective (IdeWorkbench         *self,
+                                               IdePerspective       *perspective);
+gboolean        ide_workbench_get_fullscreen  (IdeWorkbench         *self);
+void            ide_workbench_set_fullscreen  (IdeWorkbench         *self,
+                                               gboolean              fullscreen);
+
+G_END_DECLS
+
+#endif /* IDE_WORKBENCH_H */


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