[tepl] AbstractFactory: add create_metadata_manager_file()



commit 85c9141a0c8419eee0cab5652257ff28f9af007c
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sun Apr 19 15:13:30 2020 +0200

    AbstractFactory: add create_metadata_manager_file()

 docs/reference/tepl-sections.txt |  1 +
 tepl/tepl-abstract-factory.c     | 27 +++++++++++++++++++++++++++
 tepl/tepl-abstract-factory.h     | 20 ++++++++++++++------
 3 files changed, 42 insertions(+), 6 deletions(-)
---
diff --git a/docs/reference/tepl-sections.txt b/docs/reference/tepl-sections.txt
index 77e28f6..dd62bad 100644
--- a/docs/reference/tepl-sections.txt
+++ b/docs/reference/tepl-sections.txt
@@ -19,6 +19,7 @@ tepl_abstract_factory_create_main_window
 tepl_abstract_factory_create_tab
 tepl_abstract_factory_create_tab_label
 tepl_abstract_factory_create_file
+tepl_abstract_factory_create_metadata_manager_file
 <SUBSECTION Standard>
 TEPL_ABSTRACT_FACTORY
 TEPL_ABSTRACT_FACTORY_CLASS
diff --git a/tepl/tepl-abstract-factory.c b/tepl/tepl-abstract-factory.c
index 08007a1..f135c1c 100644
--- a/tepl/tepl-abstract-factory.c
+++ b/tepl/tepl-abstract-factory.c
@@ -245,3 +245,30 @@ tepl_abstract_factory_create_file (TeplAbstractFactory *factory)
 
        return TEPL_ABSTRACT_FACTORY_GET_CLASS (factory)->create_file (factory);
 }
+
+/**
+ * tepl_abstract_factory_create_metadata_manager_file:
+ * @factory: the #TeplAbstractFactory.
+ *
+ * Creates a new #GFile that is then intended to be used as an argument to
+ * tepl_metadata_manager_load_from_disk() and
+ * tepl_metadata_manager_save_to_disk(). This function just creates the #GFile
+ * object, it doesn't call any #TeplMetadataManager function.
+ *
+ * Returns: (transfer full) (nullable): a new #GFile, or %NULL if the vfunc is
+ * not implemented.
+ * Since: 5.0
+ */
+GFile *
+tepl_abstract_factory_create_metadata_manager_file (TeplAbstractFactory *factory)
+{
+       g_return_val_if_fail (TEPL_IS_ABSTRACT_FACTORY (factory), NULL);
+
+       if (TEPL_ABSTRACT_FACTORY_GET_CLASS (factory)->create_metadata_manager_file != NULL)
+       {
+               return TEPL_ABSTRACT_FACTORY_GET_CLASS (factory)->create_metadata_manager_file (factory);
+       }
+
+       g_warning ("The TeplAbstractFactory::create_metadata_manager_file vfunc is not implemented.");
+       return NULL;
+}
diff --git a/tepl/tepl-abstract-factory.h b/tepl/tepl-abstract-factory.h
index 87a6623..d58178f 100644
--- a/tepl/tepl-abstract-factory.h
+++ b/tepl/tepl-abstract-factory.h
@@ -59,20 +59,25 @@ struct _TeplAbstractFactory
  * @create_file: Virtual function pointer for
  *   tepl_abstract_factory_create_file(). By default the #TeplFile is created
  *   with tepl_file_new().
+ * @create_metadata_manager_file: Virtual function pointer for
+ *   tepl_abstract_factory_create_metadata_manager_file(). It is not implemented
+ *   by default.
  */
 struct _TeplAbstractFactoryClass
 {
        GObjectClass parent_class;
 
-       GtkApplicationWindow *  (* create_main_window)  (TeplAbstractFactory *factory,
-                                                        GtkApplication      *app);
+       GtkApplicationWindow *  (* create_main_window)                  (TeplAbstractFactory *factory,
+                                                                        GtkApplication      *app);
+
+       TeplTab *               (* create_tab)                          (TeplAbstractFactory *factory);
 
-       TeplTab *               (* create_tab)          (TeplAbstractFactory *factory);
+       GtkWidget *             (* create_tab_label)                    (TeplAbstractFactory *factory,
+                                                                        TeplTab             *tab);
 
-       GtkWidget *             (* create_tab_label)    (TeplAbstractFactory *factory,
-                                                        TeplTab             *tab);
+       TeplFile *              (* create_file)                         (TeplAbstractFactory *factory);
 
-       TeplFile *              (* create_file)         (TeplAbstractFactory *factory);
+       GFile *                 (* create_metadata_manager_file)        (TeplAbstractFactory *factory);
 
        /*< private >*/
        gpointer padding[12];
@@ -94,6 +99,9 @@ GtkWidget *           tepl_abstract_factory_create_tab_label          (TeplAbstractFactory 
*facto
 
 TeplFile *             tepl_abstract_factory_create_file               (TeplAbstractFactory *factory);
 
+GFile *                        tepl_abstract_factory_create_metadata_manager_file
+                                                                       (TeplAbstractFactory *factory);
+
 G_GNUC_INTERNAL
 void                   _tepl_abstract_factory_unref_singleton          (void);
 


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