Rename gplugin-gtk to gplugin-gtk3
Testing Done:
Built and ran the unit tests and gplugin-gtk3-viewer on my dev machine.
Built the debian packages, installed them in a container and ran gplugin-gtk3-viewer via broadway.
Built the fedora packages, installed them in a container and ran gplugin-gtk3-viewer via broadway.
Bugs closed: GPLUGIN-98
Reviewed at https://reviews.imfreedom.org/r/961/
--- a/convey.yml Thu Sep 30 00:56:21 2021 -0500
+++ b/convey.yml Thu Sep 30 01:07:52 2021 -0500
@@ -26,7 +26,7 @@
@@ -71,7 +71,7 @@
- build-docs/gplugin/reference/gplugin:gplugin-docs
- - build-docs/gplugin-gtk/reference/gplugin-gtk:gplugin-gtk-docs
+ - build-docs/gplugin-gtk3/reference/gplugin-gtk3:gplugin-gtk3-docs --- a/gplugin-gtk-viewer/data/gplugin-gtk-viewer.gresource.xml Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
- <gresource prefix="/org/imfreedom/keep/gplugin/gplugin/viewer/">
- <file compressed="true">window.ui</file>
--- a/gplugin-gtk-viewer/data/window.ui Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.1 -->
- <requires lib="gtk+" version="3.20"/>
- <requires lib="gplugin-gtk" version="0.28"/>
- <template class="viewer" parent="GtkWindow">
- <property name="can_focus">False</property>
- <property name="border_width">12</property>
- <property name="title" translatable="yes">GPlugin Viewer</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">12</property>
- <object class="GtkScrolledWindow">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">never</property>
- <property name="shadow_type">in</property>
- <object class="GPluginGtkView" id="view">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="headers_visible">False</property>
- <property name="headers_clickable">False</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection"/>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GPluginGtkPluginInfo" id="info">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">none</property>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">__glade_unnamed_5</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
--- a/gplugin-gtk-viewer/gplugin-gtk-viewer-window.c Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
- * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * This library 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
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <https://www.gnu.org/licenses/>.
-#include "gplugin-gtk-viewer-window.h"
-struct _GPluginGtkViewerWindow {
- GPluginGtkViewerWindow,
- gplugin_gtk_viewer_window,
-/******************************************************************************
- *****************************************************************************/
-gplugin_gtk_viewer_window_init(GPluginGtkViewerWindow *window)
- gtk_widget_init_template(GTK_WIDGET(window));
-gplugin_gtk_viewer_window_class_init(GPluginGtkViewerWindowClass *klass)
- gtk_widget_class_set_template_from_resource(
- GTK_WIDGET_CLASS(klass),
- "/org/imfreedom/keep/gplugin/gplugin/viewer/window.ui");
-/******************************************************************************
- *****************************************************************************/
-gplugin_gtk_viewer_window_new(void)
- return GTK_WIDGET(g_object_new(GPLUGIN_GTK_VIEWER_TYPE_WINDOW, NULL));
--- a/gplugin-gtk-viewer/gplugin-gtk-viewer-window.h Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
- * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * This library 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
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <https://www.gnu.org/licenses/>.
-#ifndef GPLUGIN_GTK_VIEWER_WINDOW_H
-#define GPLUGIN_GTK_VIEWER_WINDOW_H
-#include <glib-object.h>
-#define GPLUGIN_GTK_VIEWER_TYPE_WINDOW (gplugin_gtk_viewer_window_get_type())
- GPluginGtkViewerWindow,
- gplugin_gtk_viewer_window,
-GtkWidget *gplugin_gtk_viewer_window_new(void);
-#endif /* GPLUGIN_GTK_VIEWER_WINDOW_H */
--- a/gplugin-gtk-viewer/gplugin-gtk-viewer.c Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
- * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * This library 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
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <https://www.gnu.org/licenses/>.
-#include <gplugin-gtk.h>
-/******************************************************************************
- *****************************************************************************/
-static gboolean show_internal = FALSE;
-static gboolean add_default_paths = TRUE, version_only = FALSE;
-static gchar **paths = NULL;
-/******************************************************************************
- *****************************************************************************/
- G_GNUC_UNUSED GtkWidget *w,
- G_GNUC_UNUSED GdkEvent *e,
- G_GNUC_UNUSED gpointer d)
-selection_changed_cb(GtkTreeSelection *sel, gpointer data)
- GPluginGtkPluginInfo *info = GPLUGIN_GTK_PLUGIN_INFO(data);
- GPluginPlugin *plugin = NULL;
- GtkTreeModel *model = NULL;
- if(gtk_tree_selection_get_selected(sel, &model, &iter)) {
- GPLUGIN_GTK_STORE_PLUGIN_COLUMN,
- gplugin_gtk_plugin_info_set_plugin(info, plugin);
-/******************************************************************************
- *****************************************************************************/
- G_GNUC_UNUSED const gchar *n,
- G_GNUC_UNUSED const gchar *v,
- G_GNUC_UNUSED gpointer d,
- G_GNUC_UNUSED GError **e)
- G_GNUC_UNUSED const gchar *n,
- G_GNUC_UNUSED const gchar *v,
- G_GNUC_UNUSED gpointer d,
- G_GNUC_UNUSED GError **e)
- add_default_paths = FALSE;
- G_GNUC_UNUSED const gchar *n,
- G_GNUC_UNUSED const gchar *v,
- G_GNUC_UNUSED gpointer d,
- G_GNUC_UNUSED GError **e)
- printf("gplugin-gtk-viewer %s\n", GPLUGIN_VERSION);
- GtkWidget *window = NULL, *grid = NULL, *sw = NULL;
- GtkWidget *view = NULL, *info = NULL;
- GtkTreeSelection *sel = NULL;
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title(GTK_WINDOW(window), "GPlugin Viewer");
- gtk_container_set_border_width(GTK_CONTAINER(window), 12);
- G_CALLBACK(window_closed_cb),
- gtk_grid_set_row_homogeneous(GTK_GRID(grid), TRUE);
- gtk_grid_set_column_spacing(GTK_GRID(grid), 12);
- gtk_container_add(GTK_CONTAINER(window), grid);
- sw = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(
- GTK_SCROLLED_WINDOW(sw),
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
- gtk_grid_attach(GTK_GRID(grid), sw, 0, 0, 1, 1);
- view = gplugin_gtk_view_new();
- gplugin_gtk_view_set_show_internal(GPLUGIN_GTK_VIEW(view), show_internal);
- gtk_container_add(GTK_CONTAINER(sw), view);
- info = gplugin_gtk_plugin_info_new();
- gtk_grid_attach(GTK_GRID(grid), info, 1, 0, 1, 1);
- sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(view));
- G_CALLBACK(selection_changed_cb),
-/******************************************************************************
- *****************************************************************************/
-static GOptionEntry entries[] = {
- "internal", 'i', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK,
- internal_cb, "Show internal plugins",
- "no-default-paths", 'D', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK,
- no_default_cb, "Do not search the default plugin paths",
- "path", 'p', 0, G_OPTION_ARG_STRING_ARRAY,
- &paths, "Additional paths to look for plugins",
- "version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK,
- version_cb, "Display the version and exit",
- NULL, 0, 0, 0, NULL, NULL, NULL,
-main(gint argc, gchar **argv)
- GPluginManager *manager = NULL;
- GOptionContext *ctx = NULL;
- GtkWidget *window = NULL;
- ctx = g_option_context_new("");
- g_option_context_add_main_entries(ctx, entries, NULL);
- g_option_context_add_group(ctx, gtk_get_option_group(TRUE));
- g_option_context_parse(ctx, &argc, &argv, &error);
- g_option_context_free(ctx);
- fprintf(stderr, "%s\n", error->message);
- gtk_init(&argc, &argv);
- gplugin_init(GPLUGIN_CORE_FLAGS_NONE);
- manager = gplugin_manager_get_default();
- gplugin_manager_add_default_paths(manager);
- for(i = 0; paths[i]; i++) {
- gplugin_manager_prepend_path(manager, paths[i]);
- gplugin_manager_refresh(manager);
- /* now create and show the window */
- window = create_window();
- gtk_widget_show_all(window);
--- a/gplugin-gtk-viewer/meson.build Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-if not get_option('install-gplugin-gtk-viewer')
-summary('gplugin-gtk-viewer',
- 'You have disabled installation of gplugin-gtk-viewer which is a ' +
- 'very useful diagnostics tool.',
-gplugin_gtk_viewer_resources = gnome.compile_resources(
- 'gplugin-gtk-viewer-resources',
- 'data/gplugin-gtk-viewer.gresource.xml',
- c_name: 'gplugin_gtk_viewer',
-gplugin_gtk_viewer = executable('gplugin-gtk-viewer',
- 'gplugin-gtk-viewer.c',
- 'gplugin-gtk-viewer-window.c',
- 'gplugin-gtk-viewer-window.h',
- dependencies : [gplugin_dep, gplugin_gtk_dep],
- install : get_option('install-gplugin-gtk-viewer')
-if get_option('help2man')
- gplugin_gtk_viewer_man = custom_target('gplugin-gtk-viewer.1',
- '--name=View installed plugins', '--section=1',
- '--help-option=--help-all', '--no-info',
- '--output', '@OUTPUT@',
- output : 'gplugin-gtk-viewer.1',
- install : get_option('install-gplugin-gtk-viewer'),
- install_dir : get_option('mandir') / 'man1')
--- a/gplugin-gtk/data/gplugin-gtk.gresource.xml Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
- <gresource prefix="/org/imfreedom/keep/gplugin/gplugin-gtk/">
- <file compressed="true">plugin-info.ui</file>
--- a/gplugin-gtk/data/plugin-info.ui Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,582 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.2 -->
- <requires lib="gtk+" version="3.10"/>
- <template class="GPluginGtkPluginInfo" parent="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <object class="GtkLabel" id="name">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <attribute name="weight" value="bold"/>
- <attribute name="scale" value="2"/>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="version_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Version</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="version">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="authors_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Authors</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkBox" id="authors_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="website_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Website</property>
- <property name="use_underline">True</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="website">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="use_markup">True</property>
- <property name="track_visited_links">False</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="summary_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Summary</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="summary">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">4</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="description_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Description</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="description">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="wrap">True</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="dependencies_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Dependencies</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkBox" id="dependencies_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">6</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="error_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Error</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="error">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">7</property>
- <object class="GtkExpander">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label_fill">True</property>
- <signal name="activate" handler="gplugin_gtk_plugin_info_expander_activate" object="GPluginGtkPluginInfo" swapped="no"/>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="id_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">ID</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="id">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="filename_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Filename</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="filename">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="abi_version_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">ABI Version</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="abi_version">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="loader_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Loader</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="loader">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="internal_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Internal</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="internal">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">4</property>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <object class="GtkLabel" id="load_on_query_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Load on Query</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- <object class="GtkLabel" id="load_on_query">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- <object class="GtkLabel" id="expander">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">More</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">8</property>
- <object class="GtkSizeGroup" id="size_group">
- <widget name="version_label"/>
- <widget name="authors_label"/>
- <widget name="website_label"/>
- <widget name="summary_label"/>
- <widget name="description_label"/>
- <widget name="dependencies_label"/>
- <widget name="id_label"/>
- <widget name="filename_label"/>
- <widget name="abi_version_label"/>
- <widget name="loader_label"/>
- <widget name="internal_label"/>
- <widget name="load_on_query_label"/>
- <widget name="error_label"/>
--- a/gplugin-gtk/gplugin-gtk-plugin-info.c Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,494 +0,0 @@
- * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * This library 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
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <https://www.gnu.org/licenses/>.
-#include <gplugin-gtk/gplugin-gtk-plugin-info.h>
-#include <glib/gi18n-lib.h>
- * SECTION:gplugin-gtk-plugin-info
- * @title: Plugin Info Gtk Widgets
- * @short_description: Gtk Widgets for plugins
- * #GPluginGtkPluginInfo is a Gtk widget that shows information about plugins.
- * GPLUGIN_GTK_TYPE_PLUGIN_INFO:
- * The standard _get_type macro for #GPluginGtkPluginInfo.
- * GPluginGtkPluginInfo:
- * A widget that displays a #GPluginPluginInfo in a user friendly way.
-/******************************************************************************
- *****************************************************************************/
-struct _GPluginGtkPluginInfo {
- GtkWidget *authors_box;
- GtkWidget *description;
- GtkWidget *dependencies_box;
- GtkWidget *abi_version;
- GtkWidget *load_on_query;
-/*****************************************************************************s
- *****************************************************************************/
-static GParamSpec *properties[N_PROPERTIES] = {
-G_DEFINE_TYPE(GPluginGtkPluginInfo, gplugin_gtk_plugin_info, GTK_TYPE_BOX);
-/******************************************************************************
- *****************************************************************************/
-gplugin_gtk_plugin_info_expander_activate(
- G_GNUC_UNUSED gpointer data)
- if(gtk_expander_get_expanded(expander))
- gtk_expander_set_label(expander, "More");
- gtk_expander_set_label(expander, "Less");
-/******************************************************************************
- *****************************************************************************/
-_gplugin_gtk_plugin_info_refresh(GPluginGtkPluginInfo *info)
- GtkWidget *widget = NULL;
- GList *children = NULL, *iter = NULL;
- gchar *name = NULL, *version = NULL, *website = NULL;
- gchar *summary = NULL, *description = NULL, *id = NULL, *abi_version = NULL;
- gchar **authors = NULL;
- gchar **dependencies = NULL;
- guint32 abi_version_uint;
- gboolean loq = FALSE, internal = FALSE;
- const gchar *filename = NULL;
- /* remove all the children from the authors box */
- children = gtk_container_get_children(GTK_CONTAINER(info->authors_box));
- for(iter = children; iter; iter = iter->next)
- gtk_widget_destroy(GTK_WIDGET(iter->data));
- /* remove all the children from the dependencies box */
- gtk_container_get_children(GTK_CONTAINER(info->dependencies_box));
- for(iter = children; iter; iter = iter->next)
- gtk_widget_destroy(GTK_WIDGET(iter->data));
- /* now get the info if we can */
- if(GPLUGIN_IS_PLUGIN(info->plugin)) {
- GPluginPluginInfo *plugin_info = gplugin_plugin_get_info(info->plugin);
- GPluginLoader *plugin_loader = gplugin_plugin_get_loader(info->plugin);
- filename = gplugin_plugin_get_filename(info->plugin);
- error = gplugin_plugin_get_error(info->plugin);
- if(plugin_loader && GPLUGIN_IS_LOADER(plugin_loader)) {
- const char *loader_name = G_OBJECT_TYPE_NAME(plugin_loader);
- loader = g_strdup(loader_name);
- g_object_unref(G_OBJECT(plugin_loader));
- "abi_version", &abi_version_uint,
- "description", &description,
- "dependencies", &dependencies,
- /* fanagle the plugin name */
- markup = g_markup_printf_escaped(
- "<span font_size=\"large\" "
- "font_weight=\"bold\">%s</span>",
- (name) ? name : "Unnamed");
- /* fanagle the website */
- markup = g_markup_printf_escaped(
- "<a href=\"%s\">%s</a>",
- /* fanagle the abi_version */
- abi_version = g_strdup_printf("%08x", abi_version_uint);
- g_object_unref(G_OBJECT(plugin_info));
- gtk_label_set_markup(GTK_LABEL(info->name), (name) ? name : "Unnamed");
- gtk_label_set_text(GTK_LABEL(info->version), (version) ? version : "");
- gtk_label_set_markup(GTK_LABEL(info->website), (website) ? website : "");
- gtk_label_set_text(GTK_LABEL(info->summary), (summary) ? summary : "");
- GTK_LABEL(info->description),
- (description) ? description : "");
- gtk_label_set_text(GTK_LABEL(info->id), (id) ? id : "");
- GTK_LABEL(info->error),
- (error) ? error->message : "(none)");
- gtk_label_set_text(GTK_LABEL(info->filename), (filename) ? filename : "");
- GTK_LABEL(info->abi_version),
- (abi_version) ? abi_version : "");
- gtk_label_set_text(GTK_LABEL(info->loader), (loader) ? loader : "Unknown");
- gtk_label_set_text(GTK_LABEL(info->internal), (internal) ? "Yes" : "No");
- gtk_label_set_text(GTK_LABEL(info->load_on_query), (loq) ? "Yes" : "No");
- for(i = 0; authors[i]; i++) {
- widget = gtk_label_new(authors[i]);
- gtk_widget_set_halign(widget, GTK_ALIGN_START);
- gtk_widget_set_valign(widget, GTK_ALIGN_START);
- GTK_BOX(info->authors_box),
- gtk_widget_show(widget);
- /* set the dependencies */
- for(i = 0; dependencies[i]; i++) {
- widget = gtk_label_new(dependencies[i]);
- gtk_widget_set_halign(widget, GTK_ALIGN_START);
- gtk_widget_set_valign(widget, GTK_ALIGN_START);
- GTK_BOX(info->dependencies_box),
- gtk_widget_show(widget);
- widget = gtk_label_new(_("(none)"));
- GTK_BOX(info->dependencies_box),
- gtk_widget_show(widget);
- g_strfreev(dependencies);
-/******************************************************************************
- *****************************************************************************/
-gplugin_gtk_plugin_info_state_cb(GObject *obj, GParamSpec *pspec, gpointer data)
- _gplugin_gtk_plugin_info_refresh(GPLUGIN_GTK_PLUGIN_INFO(data));
-/******************************************************************************
- *****************************************************************************/
-gplugin_gtk_plugin_info_set_property(
- GPluginGtkPluginInfo *info = GPLUGIN_GTK_PLUGIN_INFO(obj);
- gplugin_gtk_plugin_info_set_plugin(info, g_value_get_object(value));
- G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
-gplugin_gtk_plugin_info_get_property(
- GPluginGtkPluginInfo *info = GPLUGIN_GTK_PLUGIN_INFO(obj);
- g_value_set_object(value, gplugin_gtk_plugin_info_get_plugin(info));
- G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
-gplugin_gtk_plugin_info_finalize(GObject *obj)
- GPluginGtkPluginInfo *info = GPLUGIN_GTK_PLUGIN_INFO(obj);
- if(info->signal_id != 0 && GPLUGIN_IS_PLUGIN(info->plugin)) {
- g_signal_handler_disconnect(G_OBJECT(info->plugin), info->signal_id);
- g_clear_object(&info->plugin);
- G_OBJECT_CLASS(gplugin_gtk_plugin_info_parent_class)->finalize(obj);
-gplugin_gtk_plugin_info_init(GPluginGtkPluginInfo *info)
- gtk_widget_init_template(GTK_WIDGET(info));
-gplugin_gtk_plugin_info_class_init(GPluginGtkPluginInfoClass *klass)
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
- GObjectClass *obj_class = G_OBJECT_CLASS(klass);
- obj_class->get_property = gplugin_gtk_plugin_info_get_property;
- obj_class->set_property = gplugin_gtk_plugin_info_set_property;
- obj_class->finalize = gplugin_gtk_plugin_info_finalize;
- properties[PROP_PLUGIN] = g_param_spec_object(
- "The GPluginPlugin who's info should be displayed",
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
- gtk_widget_class_set_template_from_resource(
- "/org/imfreedom/keep/gplugin/gplugin-gtk/plugin-info.ui");
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_child(
- gtk_widget_class_bind_template_callback(
- gplugin_gtk_plugin_info_expander_activate);
-/******************************************************************************
- *****************************************************************************/
- * gplugin_gtk_plugin_info_new:
- * Create a new GPluginGtkView which can be used to display info about a
- * Returns: (transfer full): The new #GPluginGtkView widget.
-gplugin_gtk_plugin_info_new(void)
- return GTK_WIDGET(g_object_new(GPLUGIN_GTK_TYPE_PLUGIN_INFO, NULL));
- * gplugin_gtk_plugin_info_set_plugin:
- * @info: The #GPluginGtkPluginInfo instance.
- * @plugin: The #GPluginPlugin instance.
- * Sets the #GPluginPlugin that should be displayed.
- * A @plugin value of %NULL will clear the widget.
-gplugin_gtk_plugin_info_set_plugin(
- GPluginGtkPluginInfo *info,
- g_return_if_fail(GPLUGIN_GTK_IS_PLUGIN_INFO(info));
- if(info->signal_id != 0 && GPLUGIN_IS_PLUGIN(info->plugin)) {
- g_signal_handler_disconnect(info->plugin, info->signal_id);
- if(g_set_object(&info->plugin, plugin) && GPLUGIN_IS_PLUGIN(plugin)) {
- _gplugin_gtk_plugin_info_refresh(info);
- /* Connect a signal to refresh when the plugin's state changes. We
- * can't use g_signal_connect_object because the plugin object never
- * gets destroyed, as the manager and the loader both keep a reference
- * to it and the GPluginGtkPluginInfo widget is reused for all plugins
- * so that all means that we just have to manage the callback
- info->signal_id = g_signal_connect(
- G_CALLBACK(gplugin_gtk_plugin_info_state_cb),
- * gplugin_gtk_plugin_info_get_plugin:
- * @info: The #GPluginGtkPluginInfo instance.
- * Returns the #GPluginPlugin that's being displayed.
- * Return Value: (transfer full): The #GPluginPlugin that's being
-gplugin_gtk_plugin_info_get_plugin(GPluginGtkPluginInfo *info)
- g_return_val_if_fail(GPLUGIN_GTK_IS_PLUGIN_INFO(info), NULL);
- return (info->plugin) ? GPLUGIN_PLUGIN(g_object_ref(G_OBJECT(info->plugin)))
--- a/gplugin-gtk/gplugin-gtk-plugin-info.h Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
- * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * This library 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
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <https://www.gnu.org/licenses/>.
-#if !defined(GPLUGIN_GTK_GLOBAL_HEADER_INSIDE) && \
- !defined(GPLUGIN_GTK_COMPILATION)
-#error "only <gplugin/gplugin-gtk.h> may be included directly"
-#ifndef GPLUGIN_GTK_PLUGIN_INFO_H
-#define GPLUGIN_GTK_PLUGIN_INFO_H
-#include <glib-object.h>
-#define GPLUGIN_GTK_TYPE_PLUGIN_INFO (gplugin_gtk_plugin_info_get_type())
- gplugin_gtk_plugin_info,
-GtkWidget *gplugin_gtk_plugin_info_new(void);
-void gplugin_gtk_plugin_info_set_plugin(
- GPluginGtkPluginInfo *info,
- GPluginPlugin *plugin);
-GPluginPlugin *gplugin_gtk_plugin_info_get_plugin(GPluginGtkPluginInfo *info);
-#endif /* GPLUGIN_GTK_PLUGIN_INFO_H */
--- a/gplugin-gtk/gplugin-gtk-store.c Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,325 +0,0 @@
- * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * This library 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
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <https://www.gnu.org/licenses/>.
-#include <gplugin-gtk/gplugin-gtk-store.h>
- * SECTION:gplugin-gtk-store
- * @title: GtkTreeModelStore for plugins
- * @short_description: A store for plugins
- * #GPluginGtkStore is a GtkTreeModel populated with plugins.
- * GPLUGIN_GTK_TYPE_STORE:
- * The standard _get_type macro for #GPluginGtkStore.
- * GPluginGtkStoreColumns:
- * @GPLUGIN_GTK_STORE_ENABLED_COLUMN: The disabled column. This is used when a
- * plugin is in a state that can't be
- * changed. So the row should be disabled.
- * @GPLUGIN_GTK_STORE_LOADED_COLUMN: The loaded column.
- * @GPLUGIN_GTK_STORE_PLUGIN_COLUMN: The plugin column.
- * @GPLUGIN_GTK_STORE_MARKUP_COLUMN: The markup column.
- * An enum declaring the columns in a #GPluginGtkStore.
- * A #GtkListStore that contains all of the known plugins in GPlugin.
-struct _GPluginGtkStore {
-G_DEFINE_TYPE(GPluginGtkStore, gplugin_gtk_store, GTK_TYPE_LIST_STORE);
-/******************************************************************************
- *****************************************************************************/
-static const GType column_types[] = {
-G_STATIC_ASSERT(G_N_ELEMENTS(column_types) == GPLUGIN_GTK_STORE_N_COLUMNS);
-/******************************************************************************
- *****************************************************************************/
-gplugin_gtk_store_add_plugin(GPluginGtkStore *store, GPluginPlugin *plugin)
- GPluginPluginInfo *info = gplugin_plugin_get_info(plugin);
- GPluginPluginState state = gplugin_plugin_get_state(plugin);
- GString *str = g_string_new("");
- gchar *name = NULL, *summary = NULL;
- gboolean loaded = FALSE, enabled = TRUE;
- g_string_append_printf(
- (name) ? name : "<i>Unnamed</i>");
- g_string_append_printf(
- (summary) ? summary : "<i>No Summary</i>");
- loaded = (state == GPLUGIN_PLUGIN_STATE_LOADED);
- if(state == GPLUGIN_PLUGIN_STATE_UNLOAD_FAILED) {
- gtk_list_store_append(GTK_LIST_STORE(store), &iter);
- GPLUGIN_GTK_STORE_LOADED_COLUMN,
- GPLUGIN_GTK_STORE_ENABLED_COLUMN,
- GPLUGIN_GTK_STORE_PLUGIN_COLUMN,
- GPLUGIN_GTK_STORE_MARKUP_COLUMN,
- g_string_free(str, TRUE);
- g_object_unref(G_OBJECT(info));
-gplugin_gtk_store_add_plugin_by_id(GPluginGtkStore *store, const gchar *id)
- GPluginManager *manager = NULL;
- GSList *plugins = NULL, *l = NULL;
- manager = gplugin_manager_get_default();
- plugins = gplugin_manager_find_plugins(manager, id);
- for(l = plugins; l; l = l->next)
- gplugin_gtk_store_add_plugin(store, GPLUGIN_PLUGIN(l->data));
- g_slist_free_full(plugins, g_object_unref);
-gplugin_gtk_store_update_plugin_state_cb(
- GPluginPlugin *plugin_a = GPLUGIN_PLUGIN(data);
- GPluginPlugin *plugin_b = NULL;
- GPLUGIN_GTK_STORE_PLUGIN_COLUMN,
- if(plugin_a == plugin_b) {
- GPluginPluginState state = gplugin_plugin_get_state(plugin_a);
- gboolean loaded = (state == GPLUGIN_PLUGIN_STATE_LOADED);
- gboolean enabled = TRUE;
- if(state == GPLUGIN_PLUGIN_STATE_UNLOAD_FAILED) {
- GPLUGIN_GTK_STORE_LOADED_COLUMN,
- GPLUGIN_GTK_STORE_ENABLED_COLUMN,
- /* tell gplugin_gtk_store_update_plugin_state that we're done */
- g_object_unref(G_OBJECT(plugin_b));
-gplugin_gtk_store_update_plugin_state(
- GPluginGtkStore *store,
- gtk_tree_model_foreach(
- gplugin_gtk_store_update_plugin_state_cb,
-/******************************************************************************
- *****************************************************************************/
-gplugin_gtk_store_plugin_loaded_cb(
- gplugin_gtk_store_update_plugin_state(GPLUGIN_GTK_STORE(data), plugin);
-gplugin_gtk_store_plugin_unloaded_cb(
- gplugin_gtk_store_update_plugin_state(GPLUGIN_GTK_STORE(data), plugin);
-gplugin_gtk_store_plugin_unload_failed_cb(
- G_GNUC_UNUSED GObject *manager,
- gplugin_gtk_store_update_plugin_state(GPLUGIN_GTK_STORE(data), plugin);
-/******************************************************************************
- * GObject Implementation
- *****************************************************************************/
-gplugin_gtk_store_constructed(GObject *obj)
- GPluginManager *manager = NULL;
- G_OBJECT_CLASS(gplugin_gtk_store_parent_class)->constructed(obj);
- manager = gplugin_manager_get_default();
- ids = gplugin_manager_list_plugins(manager);
- for(l = ids; l; l = l->next)
- gplugin_gtk_store_add_plugin_by_id(
- GPLUGIN_GTK_STORE(obj),
- (const gchar *)l->data);
- g_signal_connect_object(
- G_CALLBACK(gplugin_gtk_store_plugin_loaded_cb),
- g_signal_connect_object(
- G_CALLBACK(gplugin_gtk_store_plugin_unloaded_cb),
- g_signal_connect_object(
- "unload-plugin-failed",
- G_CALLBACK(gplugin_gtk_store_plugin_unload_failed_cb),
-gplugin_gtk_store_dispose(GObject *obj)
- G_OBJECT_CLASS(gplugin_gtk_store_parent_class)->dispose(obj);
-gplugin_gtk_store_init(GPluginGtkStore *store)
- GType *types = (GType *)gplugin_gtk_store_get_column_types();
- gtk_list_store_set_column_types(
- GPLUGIN_GTK_STORE_N_COLUMNS,
-gplugin_gtk_store_class_init(GPluginGtkStoreClass *klass)
- GObjectClass *obj_class = G_OBJECT_CLASS(klass);
- obj_class->constructed = gplugin_gtk_store_constructed;
- obj_class->dispose = gplugin_gtk_store_dispose;
-/******************************************************************************
- *****************************************************************************/
- * gplugin_gtk_store_new:
- * Create a new #GPluginGtkStore which is a prepopulated #GtkTreeStore.
- * Returns: (transfer full): A new #GtkTreeModel prepopulated with all of the
-gplugin_gtk_store_new(void)
- return GPLUGIN_GTK_STORE(g_object_new(GPLUGIN_GTK_TYPE_STORE, NULL));
- * gplugin_gtk_store_get_column_types:
- * Returns the columns that #GPluginGtkStore's will use.
- * Returns: (transfer none): A list of #GType's for the columns that the store
-gplugin_gtk_store_get_column_types(void)
--- a/gplugin-gtk/gplugin-gtk-store.h Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
- * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * This library 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
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <https://www.gnu.org/licenses/>.
-#if !defined(GPLUGIN_GTK_GLOBAL_HEADER_INSIDE) && \
- !defined(GPLUGIN_GTK_COMPILATION)
-#error "only <gplugin/gplugin-gtk.h> may be included directly"
-#ifndef GPLUGIN_GTK_STORE_H
-#define GPLUGIN_GTK_STORE_H
-#include <glib-object.h>
-#define GPLUGIN_GTK_TYPE_STORE (gplugin_gtk_store_get_type())
- GPLUGIN_GTK_STORE_ENABLED_COLUMN,
- GPLUGIN_GTK_STORE_LOADED_COLUMN,
- GPLUGIN_GTK_STORE_PLUGIN_COLUMN,
- GPLUGIN_GTK_STORE_MARKUP_COLUMN,
- GPLUGIN_GTK_STORE_N_COLUMNS,
-} GPluginGtkStoreColumns;
-GPluginGtkStore *gplugin_gtk_store_new(void);
-const GType *gplugin_gtk_store_get_column_types(void);
-#endif /* GPLUGIN_GTK_STORE_H */
--- a/gplugin-gtk/gplugin-gtk-view.c Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,317 +0,0 @@
- * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * This library 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
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <https://www.gnu.org/licenses/>.
-#include <gplugin-gtk/gplugin-gtk-store.h>
-#include <gplugin-gtk/gplugin-gtk-view.h>
- * SECTION:gplugin-gtk-view
- * @title: GtkTreeView for plugins
- * @short_description: A view for plugins
- * #GPluginGtkView is a display widget for a list of plugins.
- * GPLUGIN_GTK_TYPE_VIEW:
- * The standard _get_type macro for #GPluginGtkView.
- * A #GtkTreeView widget that displays all the plugins and some basic
- * information about them.
-/******************************************************************************
- *****************************************************************************/
-struct _GPluginGtkView {
- gboolean show_internal;
-/******************************************************************************
- *****************************************************************************/
-static GParamSpec *properties[N_PROPERTIES] = {
-/******************************************************************************
- *****************************************************************************/
-gplugin_gtk_view_plugin_toggled_cb(
- GtkCellRendererToggle *rend,
- GPluginGtkView *view = GPLUGIN_GTK_VIEW(data);
- GPluginManager *manager = NULL;
- GPluginPlugin *plugin = NULL;
- GPluginPluginState state;
- GtkTreeModel *model = NULL;
- GtkTreePath *tree_path = NULL;
- manager = gplugin_manager_get_default();
- tree_path = gtk_tree_path_new_from_string(path);
- model = gtk_tree_view_get_model(GTK_TREE_VIEW(view));
- gtk_tree_model_get_iter(model, &iter, tree_path);
- gtk_tree_path_free(tree_path);
- GPLUGIN_GTK_STORE_PLUGIN_COLUMN,
- if(!GPLUGIN_IS_PLUGIN(plugin)) {
- state = gplugin_plugin_get_state(plugin);
- if(state == GPLUGIN_PLUGIN_STATE_LOADED) {
- gplugin_manager_unload_plugin(manager, plugin, &error);
- g_warning("Failed to unload plugin: %s", error->message);
- gplugin_manager_load_plugin(manager, plugin, &error);
- g_warning("Failed to load plugin: %s", error->message);
- g_object_unref(G_OBJECT(plugin));
-/******************************************************************************
- * GObject Implementation
- *****************************************************************************/
-G_DEFINE_TYPE(GPluginGtkView, gplugin_gtk_view, GTK_TYPE_TREE_VIEW);
-gplugin_gtk_view_set_property(
- GPluginGtkView *view = GPLUGIN_GTK_VIEW(obj);
- case PROP_SHOW_INTERNAL:
- gplugin_gtk_view_set_show_internal(
- g_value_get_boolean(value));
- G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
-gplugin_gtk_view_get_property(
- GPluginGtkView *view = GPLUGIN_GTK_VIEW(obj);
- case PROP_SHOW_INTERNAL:
- gplugin_gtk_view_get_show_internal(view));
- G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
-gplugin_gtk_view_constructed(GObject *obj)
- G_OBJECT_CLASS(gplugin_gtk_view_parent_class)->constructed(obj);
-gplugin_gtk_view_dispose(GObject *obj)
- G_OBJECT_CLASS(gplugin_gtk_view_parent_class)->dispose(obj);
-gplugin_gtk_view_init(GPluginGtkView *view)
- GtkTreeViewColumn *col = NULL;
- GtkCellRenderer *rend = NULL;
- /* create the first column */
- col = gtk_tree_view_column_new();
- gtk_tree_view_column_set_title(col, "Enabled");
- gtk_tree_view_column_set_resizable(col, FALSE);
- rend = gtk_cell_renderer_toggle_new();
- gtk_tree_view_column_pack_start(col, rend, FALSE);
- G_CALLBACK(gplugin_gtk_view_plugin_toggled_cb),
- gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
- gtk_tree_view_column_set_attributes(
- GPLUGIN_GTK_STORE_LOADED_COLUMN,
- GPLUGIN_GTK_STORE_ENABLED_COLUMN,
- /* create the markup column */
- col = gtk_tree_view_column_new();
- gtk_tree_view_column_set_title(col, "Name");
- gtk_tree_view_column_set_resizable(col, FALSE);
- rend = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(col, rend, TRUE);
- gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
- gtk_tree_view_column_set_attributes(
- GPLUGIN_GTK_STORE_MARKUP_COLUMN,
- GPLUGIN_GTK_STORE_ENABLED_COLUMN,
-gplugin_gtk_view_class_init(GPluginGtkViewClass *klass)
- GObjectClass *obj_class = G_OBJECT_CLASS(klass);
- obj_class->get_property = gplugin_gtk_view_get_property;
- obj_class->set_property = gplugin_gtk_view_set_property;
- obj_class->constructed = gplugin_gtk_view_constructed;
- obj_class->dispose = gplugin_gtk_view_dispose;
- * GPluginGtkView:show-internal:
- * Whether or not to show internal plugins.
- properties[PROP_SHOW_INTERNAL] = g_param_spec_boolean(
- "Whether or not to show internal plugins",
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
- g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
-/******************************************************************************
- *****************************************************************************/
- * gplugin_gtk_view_new:
- * Creates a new #GPluginGtkView.
- * Returns: (transfer full): The new view.
-gplugin_gtk_view_new(void)
- GPluginGtkStore *store = gplugin_gtk_store_new();
- "model", GTK_TREE_MODEL(store),
- return GTK_WIDGET(ret);
- * gplugin_gtk_view_set_show_internal:
- * @view: The #GPluginGtkView instance.
- * @show_internal: Whether or not to show internal plugins.
- * This function will toggle whether or not the widget will show internal
-gplugin_gtk_view_set_show_internal(GPluginGtkView *view, gboolean show_internal)
- g_return_if_fail(GPLUGIN_GTK_IS_VIEW(view));
- view->show_internal = show_internal;
- g_object_notify(G_OBJECT(view), "show-internal");
- * gplugin_gtk_view_get_show_internal:
- * @view: The #GPluginGtkView instance.
- * Returns whether or not @view is showing internal plugins.
-gplugin_gtk_view_get_show_internal(GPluginGtkView *view)
- g_return_val_if_fail(GPLUGIN_GTK_IS_VIEW(view), FALSE);
- return view->show_internal;
--- a/gplugin-gtk/gplugin-gtk-view.h Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
- * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * This library 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
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <https://www.gnu.org/licenses/>.
-#if !defined(GPLUGIN_GTK_GLOBAL_HEADER_INSIDE) && \
- !defined(GPLUGIN_GTK_COMPILATION)
-#error "only <gplugin/gplugin-gtk.h> may be included directly"
-#ifndef GPLUGIN_GTK_VIEW_H
-#define GPLUGIN_GTK_VIEW_H
-#include <glib-object.h>
-#define GPLUGIN_GTK_TYPE_VIEW (gplugin_gtk_view_get_type())
-GtkWidget *gplugin_gtk_view_new(void);
-void gplugin_gtk_view_set_show_internal(
- gboolean show_internal);
-gboolean gplugin_gtk_view_get_show_internal(GPluginGtkView *view);
-#endif /* GPLUGIN_GTK_VIEW_H */
--- a/gplugin-gtk/gplugin-gtk.h.in Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
- * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * This library 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
- * Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <https://www.gnu.org/licenses/>.
-# ifdef GPLUGIN_GTK_COMPILATION
-# error "gplugin-gtk source files should not include gplugin-gtk.h"
-# endif /* GPLUGIN_GTK_COMPILATION */
-#endif /* __GI_SCANNER__ */
-#ifndef GPLUGIN_GTK_GLOBAL_HEADER_INSIDE
-# define GPLUGIN_GTK_GLOBAL_HEADER_INSIDE
-#endif /* GPLUGIN_GTK_GLOBAL_HEADER_INSIDE */
-@GPLUGIN_GTK_H_INCLUDES@
-#undef GPLUGIN_GTK_GLOBAL_HEADER_INSIDE
-#endif /* GPLUGIN_GTK_H */
--- a/gplugin-gtk/gplugin-gtk.xml.in Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<glade-catalog name="gplugin-gtk"
- version="@GPLUGIN_VERSION@"
- <!-- the get-type-function's are needed due to gplugin's weirdo namespace.
- Without them, Glade is going to look for g_plugin_*_get_type and not
- name="GPluginGtkPluginInfo"
- generic-name="plugininfo"
- get-type-function="gplugin_gtk_plugin_info_get_type"/>
- generic-name="pluginview"
- get-type-function="gplugin_gtk_view_get_type"/>
- generic-name="pluginstore"
- get-type-function="gplugin_gtk_store_get_type"
- </glade-widget-classes>
- <glade-widget-group name="gplugin-gtk" title="GPlugin Gtk Widgets">
- <glade-widget-class-ref name="GPluginGtkPluginInfo"/>
- <glade-widget-class-ref name="GPluginGtkView"/>
- <glade-widget-class-ref name="GPluginGtkStore"/>
--- a/gplugin-gtk/meson.build Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-###############################################################################
-###############################################################################
-GTK3 = dependency('gtk+-3.0', version : '>=3.0.0')
-GPLUGIN_GTK_LIBRARY_VERSION = '0.1.0'
- 'gplugin-gtk-plugin-info.c',
- 'gplugin-gtk-plugin-info.h',
-GPLUGIN_GTK_PRIVATE_SOURCES = [
-GPLUGIN_GTK_PRIVATE_HEADERS = [
-GPLUGIN_GTK_PUBLIC_BUILT_SOURCES = [
-GPLUGIN_GTK_PUBLIC_BUILT_HEADERS = [
-GPLUGIN_GTK_GENERATED_TARGETS = [
-###############################################################################
-###############################################################################
-GPLUGIN_GTK_H_INCLUDES = ''
-foreach header : GPLUGIN_GTK_HEADERS
- GPLUGIN_GTK_H_INCLUDES = '@0@\n#include <gplugin-gtk/@1@>'.format(
- GPLUGIN_GTK_H_INCLUDES,
-conf = configuration_data()
-conf.set('GPLUGIN_GTK_H_INCLUDES', GPLUGIN_GTK_H_INCLUDES)
-gplugin_gtk_h = configure_file(
- input : 'gplugin-gtk.h.in',
- output : 'gplugin-gtk.h',
- install_dir : get_option('includedir') / 'gplugin-1.0')
-gplugin_gtk_xml = configure_file(
- input : 'gplugin-gtk.xml.in',
- output: 'gplugin-gtk.xml',
- configuration : version_conf,
- install_dir : get_option('datadir') / 'glade' / 'catalogs',
-###############################################################################
-###############################################################################
-gplugin_gtk_resources = gnome.compile_resources(
- 'gplugin-gtk-resources',
- 'data/gplugin-gtk.gresource.xml',
-###############################################################################
-###############################################################################
-gplugin_gtk = shared_library('gplugin-gtk',
- GPLUGIN_GTK_PRIVATE_SOURCES,
- GPLUGIN_GTK_PRIVATE_HEADERS,
- GPLUGIN_GTK_PUBLIC_BUILT_SOURCES,
- GPLUGIN_GTK_PUBLIC_BUILT_HEADERS,
- c_args : ['-DGPLUGIN_GTK_COMPILATION', '-DG_LOG_DOMAIN="GPluginGtk"'],
- include_directories : toplevel_inc,
- dependencies : [gplugin_dep, GTK3],
- version : GPLUGIN_GTK_LIBRARY_VERSION,
-gplugin_gtk_inc = include_directories('.')
- description : 'Gtk widgets for GPlugin',
- filebase : 'gplugin-gtk',
- subdirs : 'gplugin-1.0',
- requires : [GLIB, GOBJECT, GMODULE],
-###############################################################################
-###############################################################################
-if get_option('introspection')
- gplugin_gtk_gir = gnome.generate_gir(
- sources : GPLUGIN_GTK_SOURCES + GPLUGIN_GTK_HEADERS +
- GPLUGIN_GTK_PUBLIC_BUILT_SOURCES +
- GPLUGIN_GTK_PUBLIC_BUILT_HEADERS,
- includes : [gplugin_gir[0], 'Gtk-3.0'],
- namespace : 'GPluginGtk',
- symbol_prefix : 'gplugin_gtk',
- export_packages: ['gplugin-gtk'],
- dependencies : [gplugin_dep],
- extra_args : ['--quiet', '-DGPLUGIN_GTK_COMPILATION'])
- GPLUGIN_GTK_GENERATED_TARGETS += gplugin_gtk_gir
-###############################################################################
-# Library Dependency Object
-###############################################################################
-gplugin_gtk_dep = declare_dependency(
- include_directories: [toplevel_inc, gplugin_gtk_inc],
- link_with : [gplugin, gplugin_gtk],
- sources : GPLUGIN_GTK_PUBLIC_BUILT_HEADERS + GPLUGIN_GTK_GENERATED_TARGETS,
- dependencies : [GLIB, GOBJECT, GTK3],
-if meson.version().version_compare('>=0.54.0')
- meson.override_dependency('gplugin-gtk', gplugin_gtk_dep)
-###############################################################################
-###############################################################################
-# install the normal includes into the gplugin-gtk subdirectory
- subdir : 'gplugin-1.0/gplugin-gtk'
-###############################################################################
-###############################################################################
--- a/gplugin-gtk/reference/gplugin-gtk.toml.in Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-version = "@GPLUGIN_VERSION@"
-browse_url = "https://keep.imfreedom.org/gplugin/gplugin/"
-repository_url = "https://keep.imfreedom.org/gplugin/gplugin/"
-website_url = "https://keep.imfreedom.org/gplugin/gplugin/"
-authors = "GPlugin Developers"
-license = "LGPL-2.1-or-later"
-description = "GPlugin Gtk Library"
-dependencies = [ "GLib-2.0", "GObject-2.0", "GPlugin-1.0", "Gtk-3.0" ]
- [dependencies."GLib-2.0"]
- description = "General-purpose, portable utility library."
- docs_url = "https://docs.gtk.org/glib/"
- [dependencies."GObject-2.0"]
- description = "The base type system library"
- docs_url = "https://docs.gtk.org/gobject/"
- [dependencies."GPlugin-1.0"]
- description = "Plugin library"
- docs_url = "https://docs.imfreedom.org/gplugin/"
- [dependencies."Gtk-3.0"]
- description = "Gtk Widget Toolkit"
- docs_url = "https://docs.gtk.org/gtk3/"
-show_index_summary = true
-show_class_hierarchy = true
-base_url = "https://keep.imfreedom.org/gplugin/gplugin/file/default/"
-# The same order will be used when generating the index
-urlmap_file = "urlmap.js"
--- a/gplugin-gtk/reference/meson.build Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
- gplugin_gtk_toml = configure_file(
- input : 'gplugin-gtk.toml.in',
- output : 'gplugin-gtk.toml',
- configuration : version_conf,
- install_dir : docs_dir / 'gplugin-gtk',
- gplugin_gtk_doc = custom_target('gplugin-gtk-doc',
- input : [ gplugin_gtk_toml, gplugin_gtk_gir[0] ],
- output : 'gplugin-gtk',
- '--add-include-path=@0@'.format(meson.project_build_root() / 'gplugin'),
- '--output-dir=@OUTPUT@',
- '--content-dir=@0@'.format(meson.current_source_dir()),
- depends : [ gplugin_gir[0] ],
- build_by_default : true,
- install_dir : docs_dir,
--- a/gplugin-gtk/reference/urlmap.js Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-// SPDX-FileCopyrightText: 2021 GNOME Foundation
-// SPDX-License-Identifier: LGPL-2.1-or-later
-// A map between namespaces and base URLs for their online documentation
- [ 'GLib', 'https://docs.gtk.org/glib/' ],
- [ 'GObject', 'https://docs.gtk.org/gobject/' ],
- [ 'GPlugin', 'https://docs.imfreedom.org/gplugin/' ],
- [ 'GModule', 'https://docs.gtk.org/gmodule/' ],
- [ 'Gtk3', 'https://docs.gtk.org/gtk3/' ],
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3-viewer/data/gplugin-gtk-viewer.gresource.xml Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?> + <gresource prefix="/org/imfreedom/keep/gplugin/gplugin/viewer/"> + <file compressed="true">window.ui</file> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3-viewer/data/window.ui Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.22.1 --> + <requires lib="gtk+" version="3.20"/> + <requires lib="gplugin-gtk" version="0.28"/> + <template class="viewer" parent="GtkWindow"> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="title" translatable="yes">GPlugin Viewer</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">12</property> + <object class="GtkScrolledWindow"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <object class="GPluginGtkView" id="view"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="headers_clickable">False</property> + <child internal-child="selection"> + <object class="GtkTreeSelection"/> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GPluginGtkPluginInfo" id="info"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">__glade_unnamed_5</property> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3-viewer/gplugin-gtk-viewer-window.c Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,54 @@
+ * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#include "gplugin-gtk-viewer-window.h" +struct _GPluginGtkViewerWindow { + GPluginGtkViewerWindow, + gplugin_gtk_viewer_window, +/****************************************************************************** + *****************************************************************************/ +gplugin_gtk_viewer_window_init(GPluginGtkViewerWindow *window) + gtk_widget_init_template(GTK_WIDGET(window)); +gplugin_gtk_viewer_window_class_init(GPluginGtkViewerWindowClass *klass) + gtk_widget_class_set_template_from_resource( + GTK_WIDGET_CLASS(klass), + "/org/imfreedom/keep/gplugin/gplugin/viewer/window.ui"); +/****************************************************************************** + *****************************************************************************/ +gplugin_gtk_viewer_window_new(void) + return GTK_WIDGET(g_object_new(GPLUGIN_GTK_VIEWER_TYPE_WINDOW, NULL)); --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3-viewer/gplugin-gtk-viewer-window.h Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,40 @@
+ * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#ifndef GPLUGIN_GTK_VIEWER_WINDOW_H +#define GPLUGIN_GTK_VIEWER_WINDOW_H +#include <glib-object.h> +#define GPLUGIN_GTK_VIEWER_TYPE_WINDOW (gplugin_gtk_viewer_window_get_type()) + GPluginGtkViewerWindow, + gplugin_gtk_viewer_window, +GtkWidget *gplugin_gtk_viewer_window_new(void); +#endif /* GPLUGIN_GTK_VIEWER_WINDOW_H */ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3-viewer/gplugin-gtk-viewer.c Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,237 @@
+ * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#include <gplugin-gtk.h> +/****************************************************************************** + *****************************************************************************/ +static gboolean show_internal = FALSE; +static gboolean add_default_paths = TRUE, version_only = FALSE; +static gchar **paths = NULL; +/****************************************************************************** + *****************************************************************************/ + G_GNUC_UNUSED GtkWidget *w, + G_GNUC_UNUSED GdkEvent *e, + G_GNUC_UNUSED gpointer d) +selection_changed_cb(GtkTreeSelection *sel, gpointer data) + GPluginGtkPluginInfo *info = GPLUGIN_GTK_PLUGIN_INFO(data); + GPluginPlugin *plugin = NULL; + GtkTreeModel *model = NULL; + if(gtk_tree_selection_get_selected(sel, &model, &iter)) { + GPLUGIN_GTK_STORE_PLUGIN_COLUMN, + gplugin_gtk_plugin_info_set_plugin(info, plugin); +/****************************************************************************** + *****************************************************************************/ + G_GNUC_UNUSED const gchar *n, + G_GNUC_UNUSED const gchar *v, + G_GNUC_UNUSED gpointer d, + G_GNUC_UNUSED GError **e) + G_GNUC_UNUSED const gchar *n, + G_GNUC_UNUSED const gchar *v, + G_GNUC_UNUSED gpointer d, + G_GNUC_UNUSED GError **e) + add_default_paths = FALSE; + G_GNUC_UNUSED const gchar *n, + G_GNUC_UNUSED const gchar *v, + G_GNUC_UNUSED gpointer d, + G_GNUC_UNUSED GError **e) + printf("gplugin-gtk-viewer %s\n", GPLUGIN_VERSION); + GtkWidget *window = NULL, *grid = NULL, *sw = NULL; + GtkWidget *view = NULL, *info = NULL; + GtkTreeSelection *sel = NULL; + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(window), "GPlugin Viewer"); + gtk_container_set_border_width(GTK_CONTAINER(window), 12); + G_CALLBACK(window_closed_cb), + gtk_grid_set_row_homogeneous(GTK_GRID(grid), TRUE); + gtk_grid_set_column_spacing(GTK_GRID(grid), 12); + gtk_container_add(GTK_CONTAINER(window), grid); + sw = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy( + GTK_SCROLLED_WINDOW(sw), + gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); + gtk_grid_attach(GTK_GRID(grid), sw, 0, 0, 1, 1); + view = gplugin_gtk_view_new(); + gplugin_gtk_view_set_show_internal(GPLUGIN_GTK_VIEW(view), show_internal); + gtk_container_add(GTK_CONTAINER(sw), view); + info = gplugin_gtk_plugin_info_new(); + gtk_grid_attach(GTK_GRID(grid), info, 1, 0, 1, 1); + sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(view)); + G_CALLBACK(selection_changed_cb), +/****************************************************************************** + *****************************************************************************/ +static GOptionEntry entries[] = { + "internal", 'i', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, + internal_cb, "Show internal plugins", + "no-default-paths", 'D', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, + no_default_cb, "Do not search the default plugin paths", + "path", 'p', 0, G_OPTION_ARG_STRING_ARRAY, + &paths, "Additional paths to look for plugins", + "version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, + version_cb, "Display the version and exit", + NULL, 0, 0, 0, NULL, NULL, NULL, +main(gint argc, gchar **argv) + GPluginManager *manager = NULL; + GOptionContext *ctx = NULL; + GtkWidget *window = NULL; + ctx = g_option_context_new(""); + g_option_context_add_main_entries(ctx, entries, NULL); + g_option_context_add_group(ctx, gtk_get_option_group(TRUE)); + g_option_context_parse(ctx, &argc, &argv, &error); + g_option_context_free(ctx); + fprintf(stderr, "%s\n", error->message); + gtk_init(&argc, &argv); + gplugin_init(GPLUGIN_CORE_FLAGS_NONE); + manager = gplugin_manager_get_default(); + gplugin_manager_add_default_paths(manager); + for(i = 0; paths[i]; i++) { + gplugin_manager_prepend_path(manager, paths[i]); + gplugin_manager_refresh(manager); + /* now create and show the window */ + window = create_window(); + gtk_widget_show_all(window); --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3-viewer/meson.build Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,36 @@
+if not get_option('install-gplugin-gtk3-viewer') +summary('gplugin-gtk3-viewer', + 'You have disabled installation of gplugin-gtk-viewer which is a ' + + 'very useful diagnostics tool.', +gplugin_gtk3_viewer_resources = gnome.compile_resources( + 'gplugin-gtk-viewer-resources', + 'data/gplugin-gtk-viewer.gresource.xml', + c_name: 'gplugin_gtk_viewer', +gplugin_gtk3_viewer = executable('gplugin-gtk3-viewer', + 'gplugin-gtk-viewer.c', + 'gplugin-gtk-viewer-window.c', + 'gplugin-gtk-viewer-window.h', + dependencies : [gplugin_dep, gplugin_gtk3_dep], + install : get_option('install-gplugin-gtk3-viewer') +if get_option('help2man') + gplugin_gtk_viewer_man = custom_target('gplugin-gtk3-viewer.1', + '--name=View installed plugins', '--section=1', + '--help-option=--help-all', '--no-info', + '--output', '@OUTPUT@', + output : 'gplugin-gtk3-viewer.1', + install : get_option('install-gplugin-gtk3-viewer'), + install_dir : get_option('mandir') / 'man1') --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/data/gplugin-gtk.gresource.xml Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?> + <gresource prefix="/org/imfreedom/keep/gplugin/gplugin-gtk/"> + <file compressed="true">plugin-info.ui</file> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/data/plugin-info.ui Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,582 @@
+<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.22.2 --> + <requires lib="gtk+" version="3.10"/> + <template class="GPluginGtkPluginInfo" parent="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <object class="GtkLabel" id="name"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="2"/> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="version_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Version</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="version"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="authors_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Authors</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkBox" id="authors_box"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="website_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Website</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="website"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_markup">True</property> + <property name="track_visited_links">False</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="summary_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Summary</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="summary"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">4</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="description_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Description</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="description"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="wrap">True</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">5</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="dependencies_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Dependencies</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkBox" id="dependencies_box"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">6</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="error_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Error</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="error"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">7</property> + <object class="GtkExpander"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label_fill">True</property> + <signal name="activate" handler="gplugin_gtk_plugin_info_expander_activate" object="GPluginGtkPluginInfo" swapped="no"/> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="id_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">ID</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="id"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="filename_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Filename</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="filename"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="abi_version_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">ABI Version</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="abi_version"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="loader_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Loader</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="loader"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="internal_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Internal</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="internal"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">4</property> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <object class="GtkLabel" id="load_on_query_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Load on Query</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + <object class="GtkLabel" id="load_on_query"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">5</property> + <object class="GtkLabel" id="expander"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">More</property> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">8</property> + <object class="GtkSizeGroup" id="size_group"> + <widget name="version_label"/> + <widget name="authors_label"/> + <widget name="website_label"/> + <widget name="summary_label"/> + <widget name="description_label"/> + <widget name="dependencies_label"/> + <widget name="id_label"/> + <widget name="filename_label"/> + <widget name="abi_version_label"/> + <widget name="loader_label"/> + <widget name="internal_label"/> + <widget name="load_on_query_label"/> + <widget name="error_label"/> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/gplugin-gtk-plugin-info.c Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,496 @@
+ * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#include <glib/gi18n-lib.h> +#include <gplugin-gtk-plugin-info.h> + * SECTION:gplugin-gtk-plugin-info + * @title: Plugin Info Gtk Widgets + * @short_description: Gtk Widgets for plugins + * #GPluginGtkPluginInfo is a Gtk widget that shows information about plugins. + * GPLUGIN_GTK_TYPE_PLUGIN_INFO: + * The standard _get_type macro for #GPluginGtkPluginInfo. + * GPluginGtkPluginInfo: + * A widget that displays a #GPluginPluginInfo in a user friendly way. +/****************************************************************************** + *****************************************************************************/ +struct _GPluginGtkPluginInfo { + GtkWidget *authors_box; + GtkWidget *description; + GtkWidget *dependencies_box; + GtkWidget *abi_version; + GtkWidget *load_on_query; +/*****************************************************************************s + *****************************************************************************/ +static GParamSpec *properties[N_PROPERTIES] = { +G_DEFINE_TYPE(GPluginGtkPluginInfo, gplugin_gtk_plugin_info, GTK_TYPE_BOX); +/****************************************************************************** + *****************************************************************************/ +gplugin_gtk_plugin_info_expander_activate( + G_GNUC_UNUSED gpointer data) + if(gtk_expander_get_expanded(expander)) + gtk_expander_set_label(expander, "More"); + gtk_expander_set_label(expander, "Less"); +/****************************************************************************** + *****************************************************************************/ +_gplugin_gtk_plugin_info_refresh(GPluginGtkPluginInfo *info) + GtkWidget *widget = NULL; + GList *children = NULL, *iter = NULL; + gchar *name = NULL, *version = NULL, *website = NULL; + gchar *summary = NULL, *description = NULL, *id = NULL, *abi_version = NULL; + gchar **authors = NULL; + gchar **dependencies = NULL; + guint32 abi_version_uint; + gboolean loq = FALSE, internal = FALSE; + const gchar *filename = NULL; + /* remove all the children from the authors box */ + children = gtk_container_get_children(GTK_CONTAINER(info->authors_box)); + for(iter = children; iter; iter = iter->next) + gtk_widget_destroy(GTK_WIDGET(iter->data)); + /* remove all the children from the dependencies box */ + gtk_container_get_children(GTK_CONTAINER(info->dependencies_box)); + for(iter = children; iter; iter = iter->next) + gtk_widget_destroy(GTK_WIDGET(iter->data)); + /* now get the info if we can */ + if(GPLUGIN_IS_PLUGIN(info->plugin)) { + GPluginPluginInfo *plugin_info = gplugin_plugin_get_info(info->plugin); + GPluginLoader *plugin_loader = gplugin_plugin_get_loader(info->plugin); + filename = gplugin_plugin_get_filename(info->plugin); + error = gplugin_plugin_get_error(info->plugin); + if(plugin_loader && GPLUGIN_IS_LOADER(plugin_loader)) { + const char *loader_name = G_OBJECT_TYPE_NAME(plugin_loader); + loader = g_strdup(loader_name); + g_object_unref(G_OBJECT(plugin_loader)); + "abi_version", &abi_version_uint, + "description", &description, + "dependencies", &dependencies, + /* fanagle the plugin name */ + markup = g_markup_printf_escaped( + "<span font_size=\"large\" " + "font_weight=\"bold\">%s</span>", + (name) ? name : "Unnamed"); + /* fanagle the website */ + markup = g_markup_printf_escaped( + "<a href=\"%s\">%s</a>", + /* fanagle the abi_version */ + abi_version = g_strdup_printf("%08x", abi_version_uint); + g_object_unref(G_OBJECT(plugin_info)); + gtk_label_set_markup(GTK_LABEL(info->name), (name) ? name : "Unnamed"); + gtk_label_set_text(GTK_LABEL(info->version), (version) ? version : ""); + gtk_label_set_markup(GTK_LABEL(info->website), (website) ? website : ""); + gtk_label_set_text(GTK_LABEL(info->summary), (summary) ? summary : ""); + GTK_LABEL(info->description), + (description) ? description : ""); + gtk_label_set_text(GTK_LABEL(info->id), (id) ? id : ""); + GTK_LABEL(info->error), + (error) ? error->message : "(none)"); + gtk_label_set_text(GTK_LABEL(info->filename), (filename) ? filename : ""); + GTK_LABEL(info->abi_version), + (abi_version) ? abi_version : ""); + gtk_label_set_text(GTK_LABEL(info->loader), (loader) ? loader : "Unknown"); + gtk_label_set_text(GTK_LABEL(info->internal), (internal) ? "Yes" : "No"); + gtk_label_set_text(GTK_LABEL(info->load_on_query), (loq) ? "Yes" : "No"); + for(i = 0; authors[i]; i++) { + widget = gtk_label_new(authors[i]); + gtk_widget_set_halign(widget, GTK_ALIGN_START); + gtk_widget_set_valign(widget, GTK_ALIGN_START); + GTK_BOX(info->authors_box), + gtk_widget_show(widget); + /* set the dependencies */ + for(i = 0; dependencies[i]; i++) { + widget = gtk_label_new(dependencies[i]); + gtk_widget_set_halign(widget, GTK_ALIGN_START); + gtk_widget_set_valign(widget, GTK_ALIGN_START); + GTK_BOX(info->dependencies_box), + gtk_widget_show(widget); + widget = gtk_label_new(_("(none)")); + GTK_BOX(info->dependencies_box), + gtk_widget_show(widget); + g_strfreev(dependencies); +/****************************************************************************** + *****************************************************************************/ +gplugin_gtk_plugin_info_state_cb(GObject *obj, GParamSpec *pspec, gpointer data) + _gplugin_gtk_plugin_info_refresh(GPLUGIN_GTK_PLUGIN_INFO(data)); +/****************************************************************************** + *****************************************************************************/ +gplugin_gtk_plugin_info_set_property( + GPluginGtkPluginInfo *info = GPLUGIN_GTK_PLUGIN_INFO(obj); + gplugin_gtk_plugin_info_set_plugin(info, g_value_get_object(value)); + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec); +gplugin_gtk_plugin_info_get_property( + GPluginGtkPluginInfo *info = GPLUGIN_GTK_PLUGIN_INFO(obj); + g_value_set_object(value, gplugin_gtk_plugin_info_get_plugin(info)); + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec); +gplugin_gtk_plugin_info_finalize(GObject *obj) + GPluginGtkPluginInfo *info = GPLUGIN_GTK_PLUGIN_INFO(obj); + if(info->signal_id != 0 && GPLUGIN_IS_PLUGIN(info->plugin)) { + g_signal_handler_disconnect(G_OBJECT(info->plugin), info->signal_id); + g_clear_object(&info->plugin); + G_OBJECT_CLASS(gplugin_gtk_plugin_info_parent_class)->finalize(obj); +gplugin_gtk_plugin_info_init(GPluginGtkPluginInfo *info) + gtk_widget_init_template(GTK_WIDGET(info)); +gplugin_gtk_plugin_info_class_init(GPluginGtkPluginInfoClass *klass) + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + obj_class->get_property = gplugin_gtk_plugin_info_get_property; + obj_class->set_property = gplugin_gtk_plugin_info_set_property; + obj_class->finalize = gplugin_gtk_plugin_info_finalize; + properties[PROP_PLUGIN] = g_param_spec_object( + "The GPluginPlugin who's info should be displayed", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + gtk_widget_class_set_template_from_resource( + "/org/imfreedom/keep/gplugin/gplugin-gtk/plugin-info.ui"); + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_child( + gtk_widget_class_bind_template_callback( + gplugin_gtk_plugin_info_expander_activate); +/****************************************************************************** + *****************************************************************************/ + * gplugin_gtk_plugin_info_new: + * Create a new GPluginGtkView which can be used to display info about a + * Returns: (transfer full): The new #GPluginGtkView widget. +gplugin_gtk_plugin_info_new(void) + return GTK_WIDGET(g_object_new(GPLUGIN_GTK_TYPE_PLUGIN_INFO, NULL)); + * gplugin_gtk_plugin_info_set_plugin: + * @info: The #GPluginGtkPluginInfo instance. + * @plugin: The #GPluginPlugin instance. + * Sets the #GPluginPlugin that should be displayed. + * A @plugin value of %NULL will clear the widget. +gplugin_gtk_plugin_info_set_plugin( + GPluginGtkPluginInfo *info, + g_return_if_fail(GPLUGIN_GTK_IS_PLUGIN_INFO(info)); + if(info->signal_id != 0 && GPLUGIN_IS_PLUGIN(info->plugin)) { + g_signal_handler_disconnect(info->plugin, info->signal_id); + if(g_set_object(&info->plugin, plugin) && GPLUGIN_IS_PLUGIN(plugin)) { + _gplugin_gtk_plugin_info_refresh(info); + /* Connect a signal to refresh when the plugin's state changes. We + * can't use g_signal_connect_object because the plugin object never + * gets destroyed, as the manager and the loader both keep a reference + * to it and the GPluginGtkPluginInfo widget is reused for all plugins + * so that all means that we just have to manage the callback + info->signal_id = g_signal_connect( + G_CALLBACK(gplugin_gtk_plugin_info_state_cb), + * gplugin_gtk_plugin_info_get_plugin: + * @info: The #GPluginGtkPluginInfo instance. + * Returns the #GPluginPlugin that's being displayed. + * Return Value: (transfer full): The #GPluginPlugin that's being +gplugin_gtk_plugin_info_get_plugin(GPluginGtkPluginInfo *info) + g_return_val_if_fail(GPLUGIN_GTK_IS_PLUGIN_INFO(info), NULL); + return (info->plugin) ? GPLUGIN_PLUGIN(g_object_ref(G_OBJECT(info->plugin))) --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/gplugin-gtk-plugin-info.h Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,52 @@
+ * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#if !defined(GPLUGIN_GTK_GLOBAL_HEADER_INSIDE) && \ + !defined(GPLUGIN_GTK_COMPILATION) +#error "only <gplugin-gtk.h> may be included directly" +#ifndef GPLUGIN_GTK_PLUGIN_INFO_H +#define GPLUGIN_GTK_PLUGIN_INFO_H +#include <glib-object.h> +#define GPLUGIN_GTK_TYPE_PLUGIN_INFO (gplugin_gtk_plugin_info_get_type()) + gplugin_gtk_plugin_info, +GtkWidget *gplugin_gtk_plugin_info_new(void); +void gplugin_gtk_plugin_info_set_plugin( + GPluginGtkPluginInfo *info, + GPluginPlugin *plugin); +GPluginPlugin *gplugin_gtk_plugin_info_get_plugin(GPluginGtkPluginInfo *info); +#endif /* GPLUGIN_GTK_PLUGIN_INFO_H */ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/gplugin-gtk-store.c Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,326 @@
+ * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#include <gplugin-gtk-store.h> + * SECTION:gplugin-gtk-store + * @title: GtkTreeModelStore for plugins + * @short_description: A store for plugins + * #GPluginGtkStore is a GtkTreeModel populated with plugins. + * GPLUGIN_GTK_TYPE_STORE: + * The standard _get_type macro for #GPluginGtkStore. + * GPluginGtkStoreColumns: + * @GPLUGIN_GTK_STORE_ENABLED_COLUMN: The disabled column. This is used when a + * plugin is in a state that can't be + * changed. So the row should be disabled. + * @GPLUGIN_GTK_STORE_LOADED_COLUMN: The loaded column. + * @GPLUGIN_GTK_STORE_PLUGIN_COLUMN: The plugin column. + * @GPLUGIN_GTK_STORE_MARKUP_COLUMN: The markup column. + * An enum declaring the columns in a #GPluginGtkStore. + * A #GtkListStore that contains all of the known plugins in GPlugin. +struct _GPluginGtkStore { +G_DEFINE_TYPE(GPluginGtkStore, gplugin_gtk_store, GTK_TYPE_LIST_STORE); +/****************************************************************************** + *****************************************************************************/ +static const GType column_types[] = { +G_STATIC_ASSERT(G_N_ELEMENTS(column_types) == GPLUGIN_GTK_STORE_N_COLUMNS); +/****************************************************************************** + *****************************************************************************/ +gplugin_gtk_store_add_plugin(GPluginGtkStore *store, GPluginPlugin *plugin) + GPluginPluginInfo *info = gplugin_plugin_get_info(plugin); + GPluginPluginState state = gplugin_plugin_get_state(plugin); + GString *str = g_string_new(""); + gchar *name = NULL, *summary = NULL; + gboolean loaded = FALSE, enabled = TRUE; + g_string_append_printf( + (name) ? name : "<i>Unnamed</i>"); + g_string_append_printf( + (summary) ? summary : "<i>No Summary</i>"); + loaded = (state == GPLUGIN_PLUGIN_STATE_LOADED); + if(state == GPLUGIN_PLUGIN_STATE_UNLOAD_FAILED) { + gtk_list_store_append(GTK_LIST_STORE(store), &iter); + GPLUGIN_GTK_STORE_LOADED_COLUMN, + GPLUGIN_GTK_STORE_ENABLED_COLUMN, + GPLUGIN_GTK_STORE_PLUGIN_COLUMN, + GPLUGIN_GTK_STORE_MARKUP_COLUMN, + g_string_free(str, TRUE); + g_object_unref(G_OBJECT(info)); +gplugin_gtk_store_add_plugin_by_id(GPluginGtkStore *store, const gchar *id) + GPluginManager *manager = NULL; + GSList *plugins = NULL, *l = NULL; + manager = gplugin_manager_get_default(); + plugins = gplugin_manager_find_plugins(manager, id); + for(l = plugins; l; l = l->next) + gplugin_gtk_store_add_plugin(store, GPLUGIN_PLUGIN(l->data)); + g_slist_free_full(plugins, g_object_unref); +gplugin_gtk_store_update_plugin_state_cb( + GPluginPlugin *plugin_a = GPLUGIN_PLUGIN(data); + GPluginPlugin *plugin_b = NULL; + GPLUGIN_GTK_STORE_PLUGIN_COLUMN, + if(plugin_a == plugin_b) { + GPluginPluginState state = gplugin_plugin_get_state(plugin_a); + gboolean loaded = (state == GPLUGIN_PLUGIN_STATE_LOADED); + gboolean enabled = TRUE; + if(state == GPLUGIN_PLUGIN_STATE_UNLOAD_FAILED) { + GPLUGIN_GTK_STORE_LOADED_COLUMN, + GPLUGIN_GTK_STORE_ENABLED_COLUMN, + /* tell gplugin_gtk_store_update_plugin_state that we're done */ + g_object_unref(G_OBJECT(plugin_b)); +gplugin_gtk_store_update_plugin_state( + GPluginGtkStore *store, + gtk_tree_model_foreach( + gplugin_gtk_store_update_plugin_state_cb, +/****************************************************************************** + *****************************************************************************/ +gplugin_gtk_store_plugin_loaded_cb( + gplugin_gtk_store_update_plugin_state(GPLUGIN_GTK_STORE(data), plugin); +gplugin_gtk_store_plugin_unloaded_cb( + gplugin_gtk_store_update_plugin_state(GPLUGIN_GTK_STORE(data), plugin); +gplugin_gtk_store_plugin_unload_failed_cb( + G_GNUC_UNUSED GObject *manager, + gplugin_gtk_store_update_plugin_state(GPLUGIN_GTK_STORE(data), plugin); +/****************************************************************************** + * GObject Implementation + *****************************************************************************/ +gplugin_gtk_store_constructed(GObject *obj) + GPluginManager *manager = NULL; + G_OBJECT_CLASS(gplugin_gtk_store_parent_class)->constructed(obj); + manager = gplugin_manager_get_default(); + ids = gplugin_manager_list_plugins(manager); + for(l = ids; l; l = l->next) + gplugin_gtk_store_add_plugin_by_id( + GPLUGIN_GTK_STORE(obj), + (const gchar *)l->data); + g_signal_connect_object( + G_CALLBACK(gplugin_gtk_store_plugin_loaded_cb), + g_signal_connect_object( + G_CALLBACK(gplugin_gtk_store_plugin_unloaded_cb), + g_signal_connect_object( + "unload-plugin-failed", + G_CALLBACK(gplugin_gtk_store_plugin_unload_failed_cb), +gplugin_gtk_store_dispose(GObject *obj) + G_OBJECT_CLASS(gplugin_gtk_store_parent_class)->dispose(obj); +gplugin_gtk_store_init(GPluginGtkStore *store) + GType *types = (GType *)gplugin_gtk_store_get_column_types(); + gtk_list_store_set_column_types( + GPLUGIN_GTK_STORE_N_COLUMNS, +gplugin_gtk_store_class_init(GPluginGtkStoreClass *klass) + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + obj_class->constructed = gplugin_gtk_store_constructed; + obj_class->dispose = gplugin_gtk_store_dispose; +/****************************************************************************** + *****************************************************************************/ + * gplugin_gtk_store_new: + * Create a new #GPluginGtkStore which is a prepopulated #GtkTreeStore. + * Returns: (transfer full): A new #GtkTreeModel prepopulated with all of the +gplugin_gtk_store_new(void) + return GPLUGIN_GTK_STORE(g_object_new(GPLUGIN_GTK_TYPE_STORE, NULL)); + * gplugin_gtk_store_get_column_types: + * Returns the columns that #GPluginGtkStore's will use. + * Returns: (transfer none): A list of #GType's for the columns that the store +gplugin_gtk_store_get_column_types(void) --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/gplugin-gtk-store.h Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,57 @@
+ * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#if !defined(GPLUGIN_GTK_GLOBAL_HEADER_INSIDE) && \ + !defined(GPLUGIN_GTK_COMPILATION) +#error "only <gplugin-gtk.h> may be included directly" +#ifndef GPLUGIN_GTK_STORE_H +#define GPLUGIN_GTK_STORE_H +#include <glib-object.h> +#define GPLUGIN_GTK_TYPE_STORE (gplugin_gtk_store_get_type()) + GPLUGIN_GTK_STORE_ENABLED_COLUMN, + GPLUGIN_GTK_STORE_LOADED_COLUMN, + GPLUGIN_GTK_STORE_PLUGIN_COLUMN, + GPLUGIN_GTK_STORE_MARKUP_COLUMN, + GPLUGIN_GTK_STORE_N_COLUMNS, +} GPluginGtkStoreColumns; +GPluginGtkStore *gplugin_gtk_store_new(void); +const GType *gplugin_gtk_store_get_column_types(void); +#endif /* GPLUGIN_GTK_STORE_H */ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/gplugin-gtk-view.c Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,318 @@
+ * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#include <gplugin-gtk-store.h> +#include <gplugin-gtk-view.h> + * SECTION:gplugin-gtk-view + * @title: GtkTreeView for plugins + * @short_description: A view for plugins + * #GPluginGtkView is a display widget for a list of plugins. + * GPLUGIN_GTK_TYPE_VIEW: + * The standard _get_type macro for #GPluginGtkView. + * A #GtkTreeView widget that displays all the plugins and some basic + * information about them. +/****************************************************************************** + *****************************************************************************/ +struct _GPluginGtkView { + gboolean show_internal; +/****************************************************************************** + *****************************************************************************/ +static GParamSpec *properties[N_PROPERTIES] = { +/****************************************************************************** + *****************************************************************************/ +gplugin_gtk_view_plugin_toggled_cb( + GtkCellRendererToggle *rend, + GPluginGtkView *view = GPLUGIN_GTK_VIEW(data); + GPluginManager *manager = NULL; + GPluginPlugin *plugin = NULL; + GPluginPluginState state; + GtkTreeModel *model = NULL; + GtkTreePath *tree_path = NULL; + manager = gplugin_manager_get_default(); + tree_path = gtk_tree_path_new_from_string(path); + model = gtk_tree_view_get_model(GTK_TREE_VIEW(view)); + gtk_tree_model_get_iter(model, &iter, tree_path); + gtk_tree_path_free(tree_path); + GPLUGIN_GTK_STORE_PLUGIN_COLUMN, + if(!GPLUGIN_IS_PLUGIN(plugin)) { + state = gplugin_plugin_get_state(plugin); + if(state == GPLUGIN_PLUGIN_STATE_LOADED) { + gplugin_manager_unload_plugin(manager, plugin, &error); + g_warning("Failed to unload plugin: %s", error->message); + gplugin_manager_load_plugin(manager, plugin, &error); + g_warning("Failed to load plugin: %s", error->message); + g_object_unref(G_OBJECT(plugin)); +/****************************************************************************** + * GObject Implementation + *****************************************************************************/ +G_DEFINE_TYPE(GPluginGtkView, gplugin_gtk_view, GTK_TYPE_TREE_VIEW); +gplugin_gtk_view_set_property( + GPluginGtkView *view = GPLUGIN_GTK_VIEW(obj); + case PROP_SHOW_INTERNAL: + gplugin_gtk_view_set_show_internal( + g_value_get_boolean(value)); + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec); +gplugin_gtk_view_get_property( + GPluginGtkView *view = GPLUGIN_GTK_VIEW(obj); + case PROP_SHOW_INTERNAL: + gplugin_gtk_view_get_show_internal(view)); + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec); +gplugin_gtk_view_constructed(GObject *obj) + G_OBJECT_CLASS(gplugin_gtk_view_parent_class)->constructed(obj); +gplugin_gtk_view_dispose(GObject *obj) + G_OBJECT_CLASS(gplugin_gtk_view_parent_class)->dispose(obj); +gplugin_gtk_view_init(GPluginGtkView *view) + GtkTreeViewColumn *col = NULL; + GtkCellRenderer *rend = NULL; + /* create the first column */ + col = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(col, "Enabled"); + gtk_tree_view_column_set_resizable(col, FALSE); + rend = gtk_cell_renderer_toggle_new(); + gtk_tree_view_column_pack_start(col, rend, FALSE); + G_CALLBACK(gplugin_gtk_view_plugin_toggled_cb), + gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); + gtk_tree_view_column_set_attributes( + GPLUGIN_GTK_STORE_LOADED_COLUMN, + GPLUGIN_GTK_STORE_ENABLED_COLUMN, + /* create the markup column */ + col = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(col, "Name"); + gtk_tree_view_column_set_resizable(col, FALSE); + rend = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, rend, TRUE); + gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); + gtk_tree_view_column_set_attributes( + GPLUGIN_GTK_STORE_MARKUP_COLUMN, + GPLUGIN_GTK_STORE_ENABLED_COLUMN, +gplugin_gtk_view_class_init(GPluginGtkViewClass *klass) + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + obj_class->get_property = gplugin_gtk_view_get_property; + obj_class->set_property = gplugin_gtk_view_set_property; + obj_class->constructed = gplugin_gtk_view_constructed; + obj_class->dispose = gplugin_gtk_view_dispose; + * GPluginGtkView:show-internal: + * Whether or not to show internal plugins. + properties[PROP_SHOW_INTERNAL] = g_param_spec_boolean( + "Whether or not to show internal plugins", + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_properties(obj_class, N_PROPERTIES, properties); +/****************************************************************************** + *****************************************************************************/ + * gplugin_gtk_view_new: + * Creates a new #GPluginGtkView. + * Returns: (transfer full): The new view. +gplugin_gtk_view_new(void) + GPluginGtkStore *store = gplugin_gtk_store_new(); + "model", GTK_TREE_MODEL(store), + return GTK_WIDGET(ret); + * gplugin_gtk_view_set_show_internal: + * @view: The #GPluginGtkView instance. + * @show_internal: Whether or not to show internal plugins. + * This function will toggle whether or not the widget will show internal +gplugin_gtk_view_set_show_internal(GPluginGtkView *view, gboolean show_internal) + g_return_if_fail(GPLUGIN_GTK_IS_VIEW(view)); + view->show_internal = show_internal; + g_object_notify(G_OBJECT(view), "show-internal"); + * gplugin_gtk_view_get_show_internal: + * @view: The #GPluginGtkView instance. + * Returns whether or not @view is showing internal plugins. +gplugin_gtk_view_get_show_internal(GPluginGtkView *view) + g_return_val_if_fail(GPLUGIN_GTK_IS_VIEW(view), FALSE); + return view->show_internal; --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/gplugin-gtk-view.h Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,50 @@
+ * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +#if !defined(GPLUGIN_GTK_GLOBAL_HEADER_INSIDE) && \ + !defined(GPLUGIN_GTK_COMPILATION) +#error "only <gplugin-gtk.h> may be included directly" +#ifndef GPLUGIN_GTK_VIEW_H +#define GPLUGIN_GTK_VIEW_H +#include <glib-object.h> +#define GPLUGIN_GTK_TYPE_VIEW (gplugin_gtk_view_get_type()) +GtkWidget *gplugin_gtk_view_new(void); +void gplugin_gtk_view_set_show_internal( + gboolean show_internal); +gboolean gplugin_gtk_view_get_show_internal(GPluginGtkView *view); +#endif /* GPLUGIN_GTK_VIEW_H */ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/gplugin-gtk.h.in Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,34 @@
+ * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com> + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * This library 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 + * Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <https://www.gnu.org/licenses/>. +# ifdef GPLUGIN_GTK_COMPILATION +# error "gplugin-gtk source files should not include gplugin-gtk.h" +# endif /* GPLUGIN_GTK_COMPILATION */ +#endif /* __GI_SCANNER__ */ +#ifndef GPLUGIN_GTK_GLOBAL_HEADER_INSIDE +# define GPLUGIN_GTK_GLOBAL_HEADER_INSIDE +#endif /* GPLUGIN_GTK_GLOBAL_HEADER_INSIDE */ +@GPLUGIN_GTK_H_INCLUDES@ +#undef GPLUGIN_GTK_GLOBAL_HEADER_INSIDE +#endif /* GPLUGIN_GTK_H */ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/gplugin-gtk3.xml.in Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?> +<glade-catalog name="gplugin-gtk" + version="@GPLUGIN_VERSION@" + <!-- the get-type-function's are needed due to gplugin's weirdo namespace. + Without them, Glade is going to look for g_plugin_*_get_type and not + name="GPluginGtkPluginInfo" + generic-name="plugininfo" + get-type-function="gplugin_gtk_plugin_info_get_type"/> + generic-name="pluginview" + get-type-function="gplugin_gtk_view_get_type"/> + generic-name="pluginstore" + get-type-function="gplugin_gtk_store_get_type" + </glade-widget-classes> + <glade-widget-group name="gplugin-gtk" title="GPlugin Gtk Widgets"> + <glade-widget-class-ref name="GPluginGtkPluginInfo"/> + <glade-widget-class-ref name="GPluginGtkView"/> + <glade-widget-class-ref name="GPluginGtkStore"/> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/meson.build Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,153 @@
+############################################################################### +############################################################################### +GTK3 = dependency('gtk+-3.0', version : '>=3.0.0') +GPLUGIN_GTK3_LIBRARY_VERSION = '0.1.0' +GPLUGIN_GTK3_SOURCES = [ + 'gplugin-gtk-plugin-info.c', +GPLUGIN_GTK3_HEADERS = [ + 'gplugin-gtk-plugin-info.h', +GPLUGIN_GTK3_PRIVATE_SOURCES = [ +GPLUGIN_GTK3_PRIVATE_HEADERS = [ +GPLUGIN_GTK3_PUBLIC_BUILT_SOURCES = [ +GPLUGIN_GTK3_PUBLIC_BUILT_HEADERS = [ +GPLUGIN_GTK3_GENERATED_TARGETS = [ +############################################################################### +############################################################################### +GPLUGIN_GTK3_H_INCLUDES = '' +foreach header : GPLUGIN_GTK3_HEADERS + GPLUGIN_GTK3_H_INCLUDES = '@0@\n#include <@1@>'.format( + GPLUGIN_GTK3_H_INCLUDES, +conf = configuration_data() +conf.set('GPLUGIN_GTK_H_INCLUDES', GPLUGIN_GTK3_H_INCLUDES) +gplugin_gtk3_h = configure_file( + input : 'gplugin-gtk.h.in', + output : 'gplugin-gtk.h', + install_dir : get_option('includedir') / 'gplugin-gtk3-1.0') +gplugin_gtk3_xml = configure_file( + input : 'gplugin-gtk3.xml.in', + output: 'gplugin-gtk3.xml', + configuration : version_conf, + install_dir : get_option('datadir') / 'glade' / 'catalogs', +############################################################################### +############################################################################### +gplugin_gtk3_resources = gnome.compile_resources( + 'gplugin-gtk3-resources', + 'data/gplugin-gtk.gresource.xml', +############################################################################### +############################################################################### +gplugin_gtk3 = shared_library('gplugin-gtk3', + GPLUGIN_GTK3_PRIVATE_SOURCES, + GPLUGIN_GTK3_PRIVATE_HEADERS, + GPLUGIN_GTK3_PUBLIC_BUILT_SOURCES, + GPLUGIN_GTK3_PUBLIC_BUILT_HEADERS, + gplugin_gtk3_resources, + c_args : ['-DGPLUGIN_GTK_COMPILATION', '-DG_LOG_DOMAIN="GPluginGtk"'], + include_directories : toplevel_inc, + dependencies : [gplugin_dep, GTK3], + version : GPLUGIN_GTK3_LIBRARY_VERSION, +gplugin_gtk3_inc = include_directories('.') + description : 'Gtk3 widgets for GPlugin', + filebase : 'gplugin-gtk3', + subdirs : 'gplugin-gtk3-1.0', + requires : [GLIB, GOBJECT, GMODULE, GTK3], +############################################################################### +############################################################################### +if get_option('introspection') + gplugin_gtk3_gir = gnome.generate_gir( + sources : GPLUGIN_GTK3_SOURCES + GPLUGIN_GTK3_HEADERS + + GPLUGIN_GTK3_PUBLIC_BUILT_SOURCES + + GPLUGIN_GTK3_PUBLIC_BUILT_HEADERS, + includes : [gplugin_gir[0], 'Gtk-3.0'], + namespace : 'GPluginGtk3', + symbol_prefix : 'gplugin_gtk', + identifier_prefix : 'GPluginGtk', + header : 'gplugin-gtk.h', + export_packages: ['gplugin-gtk3'], + dependencies : [gplugin_dep], + extra_args : ['--quiet', '-DGPLUGIN_GTK_COMPILATION']) + GPLUGIN_GTK3_GENERATED_TARGETS += gplugin_gtk3_gir +############################################################################### +# Library Dependency Object +############################################################################### +gplugin_gtk3_dep = declare_dependency( + include_directories: [toplevel_inc, gplugin_gtk3_inc], + link_with : [gplugin, gplugin_gtk3], + sources : GPLUGIN_GTK3_PUBLIC_BUILT_HEADERS + GPLUGIN_GTK3_GENERATED_TARGETS, + dependencies : [GLIB, GOBJECT, GTK3], +if meson.version().version_compare('>=0.54.0') + meson.override_dependency('gplugin-gtk3', gplugin_gtk3_dep) +############################################################################### +############################################################################### +# install the normal includes into the gplugin-gtk subdirectory + subdir : 'gplugin-gtk3-1.0/gplugin-gtk' +############################################################################### +############################################################################### --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/reference/gplugin-gtk3.toml.in Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,48 @@
+version = "@GPLUGIN_VERSION@" +browse_url = "https://keep.imfreedom.org/gplugin/gplugin/" +repository_url = "https://keep.imfreedom.org/gplugin/gplugin/" +website_url = "https://keep.imfreedom.org/gplugin/gplugin/" +authors = "GPlugin Developers" +license = "LGPL-2.1-or-later" +description = "GPlugin Gtk Library" +dependencies = [ "GLib-2.0", "GObject-2.0", "GPlugin-1.0", "Gtk-3.0" ] + [dependencies."GLib-2.0"] + description = "General-purpose, portable utility library." + docs_url = "https://docs.gtk.org/glib/" + [dependencies."GObject-2.0"] + description = "The base type system library" + docs_url = "https://docs.gtk.org/gobject/" + [dependencies."GPlugin-1.0"] + description = "Plugin library" + docs_url = "https://docs.imfreedom.org/gplugin/" + [dependencies."Gtk-3.0"] + description = "Gtk Widget Toolkit" + docs_url = "https://docs.gtk.org/gtk3/" +show_index_summary = true +show_class_hierarchy = true +base_url = "https://keep.imfreedom.org/gplugin/gplugin/file/default/" +# The same order will be used when generating the index +urlmap_file = "urlmap.js" --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/reference/meson.build Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,31 @@
+ gplugin_gtk_toml = configure_file( + input : 'gplugin-gtk3.toml.in', + output : 'gplugin-gtk3.toml', + configuration : version_conf, + install_dir : docs_dir / 'gplugin-gtk3', + gplugin_gtk3_doc = custom_target('gplugin-gtk3-doc', + input : [ gplugin_gtk_toml, gplugin_gtk3_gir[0] ], + output : 'gplugin-gtk3', + '--add-include-path=@0@'.format(meson.project_build_root() / 'gplugin'), + '--output-dir=@OUTPUT@', + '--content-dir=@0@'.format(meson.current_source_dir()), + depends : [ gplugin_gir[0] ], + build_by_default : true, + install_dir : docs_dir, --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gplugin-gtk3/reference/urlmap.js Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,11 @@
+// SPDX-FileCopyrightText: 2021 GNOME Foundation +// SPDX-License-Identifier: LGPL-2.1-or-later +// A map between namespaces and base URLs for their online documentation + [ 'GLib', 'https://docs.gtk.org/glib/' ], + [ 'GObject', 'https://docs.gtk.org/gobject/' ], + [ 'GPlugin', 'https://docs.imfreedom.org/gplugin/' ], + [ 'GModule', 'https://docs.gtk.org/gmodule/' ], + [ 'Gtk3', 'https://docs.gtk.org/gtk3/' ], --- a/meson.build Thu Sep 30 00:56:21 2021 -0500
+++ b/meson.build Thu Sep 30 01:07:52 2021 -0500
@@ -101,8 +101,8 @@
###############################################################################
-subdir('gplugin-gtk-viewer')
+subdir('gplugin-gtk3-viewer') @@ -117,7 +117,7 @@
doc_targets = [gplugin_doc]
- doc_targets += gplugin_gtk_doc
+ doc_targets += gplugin_gtk3_doc alias_target('doc', doc_targets)
--- a/meson_options.txt Thu Sep 30 00:56:21 2021 -0500
+++ b/meson_options.txt Thu Sep 30 01:07:52 2021 -0500
@@ -23,9 +23,9 @@
- 'install-gplugin-gtk-viewer',
+ 'install-gplugin-gtk3-viewer', type : 'boolean', value : true,
- description : 'Whether or not to install the gtk viewer application'
+ description : 'Whether or not to install the gtk3 viewer application' --- a/packaging/debian/changelog Thu Sep 30 00:56:21 2021 -0500
+++ b/packaging/debian/changelog Thu Sep 30 01:07:52 2021 -0500
@@ -1,3 +1,12 @@
+gplugin (0.35.0) UNRELEASED; urgency=medium + * Renamed gir1.2-gplugin-gtk-1.0 to gir1.2-gplugin-gtk3-1.0 + * Renamed libgplugin-gtk-bin to libgplugin-gtk3-bin + * Renamed libgplugin-gtk-dev to libgplugin-gtk3-dev + * Renamed libgplugin-gtk0 to libgplugin-gtk3-0 + -- Gary Kramlich <grim@reaperworld.com> Wed, 29 Sep 2021 23:35:01 -0500 gplugin (0.28.3) unstable; urgency=medium
* New upstream release, see official changelog
--- a/packaging/debian/control Thu Sep 30 00:56:21 2021 -0500
+++ b/packaging/debian/control Thu Sep 30 01:07:52 2021 -0500
@@ -3,7 +3,7 @@
Maintainer: Gary Kramlich <grim@reaperworld.com>
Build-Depends: debhelper (>=9),
- meson (>=0.37.0), libglib2.0-dev, libgtk-3-dev,
+ meson (>=0.56.0), libglib2.0-dev, libgtk-3-dev, gobject-introspection, libgirepository1.0-dev,
@@ -60,37 +60,43 @@
This package will install all of the gplugin loaders.
-Package: libgplugin-gtk0
+Package: libgplugin-gtk3-0 Depends: ${misc:Depends}, ${shlibs:Depends}, libgtk-3-0, libgplugin0
-Description: GTK+3 bindings for GPlugin
+Conflicts: libgplugin-gtk0 +Replaces: libgplugin-gtk0 +Provides: libgplugin-gtk0 +Description: GTK3 bindings for GPlugin GPlugin is a GObject based library that implements a reusable plugin system
which supports loading plugins in other languages via loaders. It relies
heavily on GObjectIntrospection to expose its API to the other languages.
- This library provides some default GTK+-3 widgets for GPlugin.
+ This library provides some default GTK3 widgets for GPlugin. -Package: libgplugin-gtk-dev
+Package: libgplugin-gtk3-dev -Depends: ${misc:Depends}, libgtk-3-dev, libgplugin-gtk0 (= ${binary:Version})
-Description: Development file for libgplugin-gtk
+Depends: ${misc:Depends}, libgtk-3-dev, libgplugin-gtk3-0 (= ${binary:Version}) +Conflicts: libgplugin-gtk-dev +Replaces: libgplugin-gtk-dev +Description: Development file for libgplugin-gtk3-0 GPlugin is a GObject based library that implements a reusable plugin system
which supports loading plugins in other languages via loaders. It relies
heavily on GObjectIntrospection to expose its API to the other languages.
- This library provides the developmental headers for the GPlugin GTK+-3
+ This library provides the developmental headers for the GPlugin GTK3 bindings. -Package: libgplugin-gtk-bin
+Package: libgplugin-gtk3-bin Depends: ${misc:Depends}, ${shlibs:Depends}, libgplugin-gtk0
-Description: Programs for the GTK+ interface to GPlugin
+Conflicts: libgplugin-gtk-bin +Replaces: libgplugin-gtk-bin +Description: Programs for the GTK3 interface to GPlugin GPlugin is a GObject based library that implements a reusable plugin system
which supports loading plugins in other languages via loaders. It relies
heavily on GObjectIntrospection to expose its API to the other languages.
- This package contains the gplugin-gtk-viewer application for viewing plugins.
+ This package contains the gplugin-gtk3-viewer application for viewing plugins. Package: gir1.2-gplugin-1.0
@@ -104,9 +110,11 @@
This package can be used by other packages using the GIRepository format to
generate dynamic bindings for libgplugin.
-Package: gir1.2-gplugin-gtk-1.0
+Package: gir1.2-gplugin-gtk3-1.0 -Depends: ${gir:Depends}, ${misc:Depends}, libgplugin0
+Depends: ${gir:Depends}, ${misc:Depends}, libgplugin0, libgplugin-gtk3-0 +Conflicts: gir1.2-gplugin-gtk-1.0 +Replaces: gir1.2-gplugin-gtk-1.0 Description: typelibe for libgplugin
GPlugin is a GObject based library that implements a reusable plugin system
@@ -114,12 +122,12 @@
heavily on GObjectIntrospection to expose its API to the other languages.
This package can be used by other packages using the GIRepository format to
- generate dynamic bindings for libgplugin-gtk.
+ generate dynamic bindings for libgplugin-gtk3. Depends: ${misc:Depends}, ${shlibs:Depends}, liblua5.1-0,
- libgplugin0, gir1.2-gplugin-0.0
+ libgplugin0, gir1.2-gplugin-1.0 Description: GPlugin Lua Loader
GPlugin is a GObject based library that implements a reusable plugin system
which supports loading plugins in other languages via loaders. It relies
@@ -131,7 +139,7 @@
Package: libgplugin-python3
Depends: ${misc:Depends}, ${shlibs:Depends}, python3, python3-gi,
- libgplugin0, gir1.2-gplugin-0.0
+ libgplugin0, gir1.2-gplugin-1.0 Description: GPlugin Python3 Loader
GPlugin is a GObject based library that implements a reusable plugin system
which supports loading plugins in other languages via loaders. It relies
@@ -143,7 +151,7 @@
Package: libgplugin-perl5
Depends: ${misc:Depends}, ${shlibs:Depends}, perl, libglib-perl,
- libglib-object-introspection-perl, libgplugin0, gir1.2-gplugin-0.0
+ libglib-object-introspection-perl, libgplugin0, gir1.2-gplugin-1.0 Description: GPlugin Perl5 Loader
GPlugin is a GObject based library that implements a reusable plugin system
which supports loading plugins in other languages via loaders. It relies
--- a/packaging/debian/gir1.2-gplugin-gtk-1.0.install Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-debian/tmp/usr/lib/*/girepository-1.0/GPluginGtk-1.0.typelib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/debian/gir1.2-gplugin-gtk3-1.0.install Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,1 @@
+debian/tmp/usr/lib/*/girepository-1.0/GPluginGtk3-1.0.typelib --- a/packaging/debian/libgplugin-gtk-bin.install Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-debian/tmp/usr/bin/gplugin-gtk-viewer
-debian/tmp/usr/share/man/man1/gplugin-gtk-viewer.1
--- a/packaging/debian/libgplugin-gtk-dev.install Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-usr/include/gplugin-1.0/gplugin-gtk
-usr/include/gplugin-1.0/gplugin-gtk.h
-debian/tmp/usr/lib/*/libgplugin-gtk.so
-debian/tmp/usr/lib/*/pkgconfig/gplugin-gtk.pc
-debian/tmp/usr/share/gir-1.0/GPluginGtk-1.0.gir
-debian/tmp/usr/share/vala/vapi/gplugin-gtk.deps
-debian/tmp/usr/share/vala/vapi/gplugin-gtk.vapi
\ No newline at end of file
--- a/packaging/debian/libgplugin-gtk0.install Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-debian/tmp/usr/lib/*/libgplugin-gtk.so.*
--- a/packaging/debian/libgplugin-gtk0.triggers Thu Sep 30 00:56:21 2021 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-activate-noawait ldconfig
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/debian/libgplugin-gtk3-0.install Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,1 @@
+debian/tmp/usr/lib/*/libgplugin-gtk3.so.* --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/debian/libgplugin-gtk3-0.triggers Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,1 @@
+activate-noawait ldconfig --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/debian/libgplugin-gtk3-bin.install Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,2 @@
+debian/tmp/usr/bin/gplugin-gtk3-viewer +debian/tmp/usr/share/man/man1/gplugin-gtk3-viewer.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/debian/libgplugin-gtk3-dev.install Thu Sep 30 01:07:52 2021 -0500
@@ -0,0 +1,7 @@
+usr/include/gplugin-gtk3-1.0/gplugin-gtk +usr/include/gplugin-gtk3-1.0/gplugin-gtk.h +debian/tmp/usr/lib/*/libgplugin-gtk3.so +debian/tmp/usr/lib/*/pkgconfig/gplugin-gtk3.pc +debian/tmp/usr/share/gir-1.0/GPluginGtk3-1.0.gir +debian/tmp/usr/share/vala/vapi/gplugin-gtk3.deps +debian/tmp/usr/share/vala/vapi/gplugin-gtk3.vapi --- a/packaging/gplugin.spec.in Thu Sep 30 00:56:21 2021 -0500
+++ b/packaging/gplugin.spec.in Thu Sep 30 01:07:52 2021 -0500
@@ -10,7 +10,7 @@
Url: https://keep.imfreedom.org/rw_grim/gplugin/overview
Group: Development/Libraries
-BuildRequires: meson >= 0.37.0
+BuildRequires: meson >= 0.56.0 BuildRequires: glib2-devel >= 2.44.0
BuildRequires: gobject-introspection-devel
@@ -188,35 +188,36 @@
%{_libdir}/girepository-1.0/GPlugin-1.0.typelib
%{_libdir}/libgplugin.so.0
-%{_libdir}/pkgconfig/gplugin-gtk.pc
%{_libdir}/pkgconfig/gplugin.pc
-%{_bindir}/gplugin-gtk-viewer
-%{_libdir}/libgplugin-gtk.so.0.1.0
-%{_mandir}/man1/gplugin-gtk-viewer.1*
+%{_bindir}/gplugin-gtk3-viewer +%{_libdir}/libgplugin-gtk3.so.0.1.0 +%{_mandir}/man1/gplugin-gtk3-viewer.1* %dir %{_datadir}/glade/catalogs/
-%{_datadir}/gir-1.0/GPluginGtk-1.0.gir
-%{_datadir}/glade/catalogs/gplugin-gtk.xml
-%{_datadir}/doc/gplugin-gtk/
-%{_libdir}/girepository-1.0/GPluginGtk-1.0.typelib
-%{_libdir}/libgplugin-gtk.so
-%{_libdir}/libgplugin-gtk.so.0
+%{_datadir}/gir-1.0/GPluginGtk3-1.0.gir +%{_datadir}/glade/catalogs/gplugin-gtk3.xml +%{_datadir}/doc/gplugin-gtk3/ +%{_includedir}/gplugin-gtk3-1.0/ +%{_libdir}/girepository-1.0/GPluginGtk3-1.0.typelib +%{_libdir}/libgplugin-gtk3.so +%{_libdir}/libgplugin-gtk3.so.0 +%{_libdir}/pkgconfig/gplugin-gtk3.pc -%{_datadir}/vala/vapi/gplugin-gtk.vapi
-%{_datadir}/vala/vapi/gplugin-gtk.deps
+%{_datadir}/vala/vapi/gplugin-gtk3.vapi +%{_datadir}/vala/vapi/gplugin-gtk3.deps @@ -244,6 +245,11 @@
%{_datadir}/vala/vapi/gplugin.deps
+* Wed Sep 29 2021 Gary Kramlich <grim@reaperworld.com> +- Renamed gplugin-gtk to gplugin-gtk3 +- Renamed gplugin-gtk-devel to gplugin-gtk3-devel +- Renamed gplugin-gtk-vala to gplugin-gtk3-vala * Thu Sep 02 2021 Gary Kramlich <grim@reaperworld.com>
- Update the devel packages for gi-docgen
--- a/vala/meson.build Thu Sep 30 00:56:21 2021 -0500
+++ b/vala/meson.build Thu Sep 30 01:07:52 2021 -0500
@@ -8,12 +8,11 @@
gplugin_vapi = gnome.generate_vapi('gplugin',
sources : gplugin_gir[0],
- gir_dirs : meson.current_build_dir() / '..' / 'gplugin',
- gplugin_gtk_vapi = gnome.generate_vapi('gplugin-gtk',
- sources : gplugin_gtk_gir[0],
+ gplugin_gtk_vapi = gnome.generate_vapi('gplugin-gtk3', + sources : gplugin_gtk3_gir[0], packages : [ 'gtk+-3.0' ],
gir_dirs : meson.current_build_dir() / '..' / 'gplugin',