summaryrefslogtreecommitdiffstats
path: root/libnautilus-extension/nautilus-properties-model-provider.h
diff options
context:
space:
mode:
Diffstat (limited to 'libnautilus-extension/nautilus-properties-model-provider.h')
-rw-r--r--libnautilus-extension/nautilus-properties-model-provider.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/libnautilus-extension/nautilus-properties-model-provider.h b/libnautilus-extension/nautilus-properties-model-provider.h
new file mode 100644
index 0000000..b4ecda5
--- /dev/null
+++ b/libnautilus-extension/nautilus-properties-model-provider.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2022 The GNOME project contributors
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#pragma once
+
+#if !defined (NAUTILUS_EXTENSION_H) && !defined (NAUTILUS_COMPILATION)
+#warning "Only <nautilus-extension.h> should be included directly."
+#endif
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define NAUTILUS_TYPE_PROPERTIES_MODEL_PROVIDER (nautilus_properties_model_provider_get_type ())
+
+G_DECLARE_INTERFACE (NautilusPropertiesModelProvider,
+ nautilus_properties_model_provider,
+ NAUTILUS, PROPERTIES_MODEL_PROVIDER,
+ GObject)
+
+/**
+ * SECTION:nautilus-properties-model-provider
+ * @title: NautilusPropertiesModelProvider
+ * @short_description: Interface to provide additional properties
+ *
+ * #NautilusPropertiesModelProvider allows extension to provide additional
+ * information for the file properties.
+ */
+
+/**
+ * NautilusPropertiesModelProviderInterface:
+ * @g_iface: The parent interface.
+ * @get_models: Returns a #GList of #NautilusPropertiesModel.
+ * See nautilus_properties_model_provider_get_models() for details.
+ *
+ * Interface for extensions to provide additional properties.
+ */
+struct _NautilusPropertiesModelProviderInterface
+{
+ GTypeInterface g_iface;
+
+ GList *(*get_models) (NautilusPropertiesModelProvider *provider,
+ GList *files);
+};
+
+/**
+ * nautilus_properties_model_provider_get_models:
+ * @provider: a #NautilusPropertiesModelProvider
+ * @files: (element-type NautilusFileInfo): a #GList of #NautilusFileInfo
+ *
+ * This function is called by the application when it wants properties models
+ * from the extension.
+ *
+ * This function is called in the main thread before the Properties are shown,
+ * so it should return quickly. The models can be populated and updated
+ * asynchronously.
+ *
+ * Returns: (nullable) (element-type NautilusPropertiesModel) (transfer full): A #GList of allocated #NautilusPropertiesModel models.
+ */
+GList *nautilus_properties_model_provider_get_models (NautilusPropertiesModelProvider *provider,
+ GList *files);
+
+G_END_DECLS