[gnome-builder/wip/gtk4-port] plugins/vcsui: stub out workspace addin for greeter



commit 9ccb97245d47a9a72c154c0b8491ee48392c4196
Author: Christian Hergert <chergert redhat com>
Date:   Wed Apr 6 17:40:15 2022 -0700

    plugins/vcsui: stub out workspace addin for greeter
    
    This is going to eventually add the clone widget to the greeter, but this
    just gets some of the scaffolding in place for that and creates the widget
    to ensure that we can really parse the template.

 src/plugins/vcsui/gbp-vcsui-workspace-addin.c | 92 +++++++++++++++++++++++++++
 src/plugins/vcsui/gbp-vcsui-workspace-addin.h | 31 +++++++++
 src/plugins/vcsui/meson.build                 |  5 +-
 src/plugins/vcsui/vcsui-plugin.c              |  4 ++
 src/plugins/vcsui/vcsui.plugin                |  2 +-
 5 files changed, 131 insertions(+), 3 deletions(-)
---
diff --git a/src/plugins/vcsui/gbp-vcsui-workspace-addin.c b/src/plugins/vcsui/gbp-vcsui-workspace-addin.c
new file mode 100644
index 000000000..0316f0950
--- /dev/null
+++ b/src/plugins/vcsui/gbp-vcsui-workspace-addin.c
@@ -0,0 +1,92 @@
+/* gbp-vcsui-workspace-addin.c
+ *
+ * Copyright 2022 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/>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+#define G_LOG_DOMAIN "gbp-vcsui-workspace-addin"
+
+#include "config.h"
+
+#include <libide-gui.h>
+#include <libide-greeter.h>
+
+#include "gbp-vcsui-clone-widget.h"
+#include "gbp-vcsui-workspace-addin.h"
+
+struct _GbpVcsuiWorkspaceAddin
+{
+  GObject parent_instance;
+};
+
+static void
+gbp_vcsui_workspace_addin_load (IdeWorkspaceAddin *addin,
+                                IdeWorkspace      *workspace)
+{
+  GbpVcsuiWorkspaceAddin *self = (GbpVcsuiWorkspaceAddin *)addin;
+
+  IDE_ENTRY;
+
+  g_assert (GBP_IS_VCSUI_WORKSPACE_ADDIN (self));
+
+  if (IDE_IS_GREETER_WORKSPACE (workspace))
+    {
+      GbpVcsuiCloneWidget *clone;
+
+      clone = g_object_new (GBP_TYPE_VCSUI_CLONE_WIDGET,
+                            NULL);
+    }
+
+  IDE_EXIT;
+}
+
+static void
+gbp_vcsui_workspace_addin_unload (IdeWorkspaceAddin *addin,
+                                  IdeWorkspace      *workspace)
+{
+  GbpVcsuiWorkspaceAddin *self = (GbpVcsuiWorkspaceAddin *)addin;
+
+  IDE_ENTRY;
+
+  g_assert (GBP_IS_VCSUI_WORKSPACE_ADDIN (self));
+
+  if (IDE_IS_GREETER_WORKSPACE (workspace))
+    {
+    }
+
+  IDE_EXIT;
+}
+
+static void
+workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface)
+{
+  iface->load = gbp_vcsui_workspace_addin_load;
+  iface->unload = gbp_vcsui_workspace_addin_unload;
+}
+
+G_DEFINE_FINAL_TYPE_WITH_CODE (GbpVcsuiWorkspaceAddin, gbp_vcsui_workspace_addin, G_TYPE_OBJECT,
+                               G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN, workspace_addin_iface_init))
+
+static void
+gbp_vcsui_workspace_addin_class_init (GbpVcsuiWorkspaceAddinClass *klass)
+{
+}
+
+static void
+gbp_vcsui_workspace_addin_init (GbpVcsuiWorkspaceAddin *self)
+{
+}
diff --git a/src/plugins/vcsui/gbp-vcsui-workspace-addin.h b/src/plugins/vcsui/gbp-vcsui-workspace-addin.h
new file mode 100644
index 000000000..1a3b3ba5a
--- /dev/null
+++ b/src/plugins/vcsui/gbp-vcsui-workspace-addin.h
@@ -0,0 +1,31 @@
+/* gbp-vcsui-workspace-addin.h
+ *
+ * Copyright 2022 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/>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+#pragma once
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GBP_TYPE_VCSUI_WORKSPACE_ADDIN (gbp_vcsui_workspace_addin_get_type())
+
+G_DECLARE_FINAL_TYPE (GbpVcsuiWorkspaceAddin, gbp_vcsui_workspace_addin, GBP, VCSUI_WORKSPACE_ADDIN, GObject)
+
+G_END_DECLS
diff --git a/src/plugins/vcsui/meson.build b/src/plugins/vcsui/meson.build
index f81762888..ddf9b8854 100644
--- a/src/plugins/vcsui/meson.build
+++ b/src/plugins/vcsui/meson.build
@@ -1,9 +1,10 @@
 plugins_sources += files([
   'vcsui-plugin.c',
+  'gbp-vcsui-clone-widget.c',
+  'gbp-vcsui-editor-page-addin.c',
   'gbp-vcsui-tree-addin.c',
   'gbp-vcsui-workbench-addin.c',
-  'gbp-vcsui-editor-page-addin.c',
-  'gbp-vcsui-clone-widget.c',
+  'gbp-vcsui-workspace-addin.c',
 ])
 
 plugin_vcsui_resources = gnome.compile_resources(
diff --git a/src/plugins/vcsui/vcsui-plugin.c b/src/plugins/vcsui/vcsui-plugin.c
index 7ce92289c..11a5207ea 100644
--- a/src/plugins/vcsui/vcsui-plugin.c
+++ b/src/plugins/vcsui/vcsui-plugin.c
@@ -31,6 +31,7 @@
 #include "gbp-vcsui-editor-page-addin.h"
 #include "gbp-vcsui-tree-addin.h"
 #include "gbp-vcsui-workbench-addin.h"
+#include "gbp-vcsui-workspace-addin.h"
 
 _IDE_EXTERN void
 _gbp_vcsui_register_types (PeasObjectModule *module)
@@ -44,4 +45,7 @@ _gbp_vcsui_register_types (PeasObjectModule *module)
   peas_object_module_register_extension_type (module,
                                               IDE_TYPE_WORKBENCH_ADDIN,
                                               GBP_TYPE_VCSUI_WORKBENCH_ADDIN);
+  peas_object_module_register_extension_type (module,
+                                              IDE_TYPE_WORKSPACE_ADDIN,
+                                              GBP_TYPE_VCSUI_WORKSPACE_ADDIN);
 }
diff --git a/src/plugins/vcsui/vcsui.plugin b/src/plugins/vcsui/vcsui.plugin
index 6e65b2c1e..a76667263 100644
--- a/src/plugins/vcsui/vcsui.plugin
+++ b/src/plugins/vcsui/vcsui.plugin
@@ -8,4 +8,4 @@ Embedded=_gbp_vcsui_register_types
 Hidden=true
 Module=vcsui
 Name=VCS interface extensions
-X-Workspace-Kind=primary;
+X-Workspace-Kind=primary;greeter;


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