[gnome-builder] template: add priority to templates to sort
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] template: add priority to templates to sort
- Date: Sun, 21 Jan 2018 00:20:59 +0000 (UTC)
commit 3cabaf3e4e5410fa9d276e94b5af996fd791ca20
Author: Christian Hergert <chergert redhat com>
Date: Sat Jan 20 16:17:45 2018 -0800
template: add priority to templates to sort
src/libide/template/ide-project-template.c | 43 ++++++++++++++++++++++++++++++
src/libide/template/ide-project-template.h | 6 +++++
2 files changed, 49 insertions(+)
---
diff --git a/src/libide/template/ide-project-template.c b/src/libide/template/ide-project-template.c
index 47a5f2821..d83d17d1f 100644
--- a/src/libide/template/ide-project-template.c
+++ b/src/libide/template/ide-project-template.c
@@ -133,3 +133,46 @@ ide_project_template_expand_finish (IdeProjectTemplate *self,
return IDE_PROJECT_TEMPLATE_GET_IFACE (self)->expand_finish (self, result, error);
}
+
+/**
+ * ide_project_template_get_priority:
+ * @self: a #IdeProjectTemplate
+ *
+ * Gets the priority of the template. This can be used to sort the templates
+ * in the "new project" view.
+ *
+ * Returns: the priority of the template
+ *
+ * Since: 3.28
+ */
+gint
+ide_project_template_get_priority (IdeProjectTemplate *self)
+{
+ g_return_val_if_fail (IDE_IS_PROJECT_TEMPLATE (self), 0);
+
+ if (IDE_PROJECT_TEMPLATE_GET_IFACE (self)->get_priority)
+ return IDE_PROJECT_TEMPLATE_GET_IFACE (self)->get_priority (self);
+
+ return 0;
+}
+
+gint
+ide_project_template_compare (IdeProjectTemplate *a,
+ IdeProjectTemplate *b)
+{
+ gint ret;
+
+ g_return_val_if_fail (IDE_IS_PROJECT_TEMPLATE (a), 0);
+ g_return_val_if_fail (IDE_IS_PROJECT_TEMPLATE (b), 0);
+
+ ret = ide_project_template_get_priority (a) - ide_project_template_get_priority (b);
+
+ if (ret == 0)
+ {
+ g_autofree gchar *a_name = ide_project_template_get_name (a);
+ g_autofree gchar *b_name = ide_project_template_get_name (b);
+ ret = g_utf8_collate (a_name, b_name);
+ }
+
+ return ret;
+}
diff --git a/src/libide/template/ide-project-template.h b/src/libide/template/ide-project-template.h
index c0379bd84..3d9070d7d 100644
--- a/src/libide/template/ide-project-template.h
+++ b/src/libide/template/ide-project-template.h
@@ -46,10 +46,13 @@ struct _IdeProjectTemplateInterface
gboolean (*expand_finish) (IdeProjectTemplate *self,
GAsyncResult *result,
GError **error);
+ gint (*get_priority) (IdeProjectTemplate *self);
};
IDE_AVAILABLE_IN_ALL
gchar *ide_project_template_get_id (IdeProjectTemplate *self);
+IDE_AVAILABLE_IN_3_28
+gint ide_project_template_get_priority (IdeProjectTemplate *self);
IDE_AVAILABLE_IN_ALL
gchar *ide_project_template_get_name (IdeProjectTemplate *self);
IDE_AVAILABLE_IN_ALL
@@ -70,5 +73,8 @@ IDE_AVAILABLE_IN_ALL
gboolean ide_project_template_expand_finish (IdeProjectTemplate *self,
GAsyncResult *result,
GError **error);
+IDE_AVAILABLE_IN_3_28
+gint ide_project_template_compare (IdeProjectTemplate *a,
+ IdeProjectTemplate *b);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]