[gnome-builder/wip/greeter] greeter: add languages to project row
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/greeter] greeter: add languages to project row
- Date: Sun, 10 May 2015 19:41:27 +0000 (UTC)
commit a3874b3b7563d1a9949fac5bb71bf9b582b0bd68
Author: Christian Hergert <christian hergert me>
Date: Sun May 10 12:39:14 2015 -0700
greeter: add languages to project row
data/ui/gb-greeter-project-row.ui | 7 +++++
src/greeter/gb-greeter-project-row.c | 41 ++++++++++++++++++++++++++++++++-
src/greeter/gb-greeter-project-row.h | 3 ++
3 files changed, 49 insertions(+), 2 deletions(-)
---
diff --git a/data/ui/gb-greeter-project-row.ui b/data/ui/gb-greeter-project-row.ui
index e48200a..5145208 100644
--- a/data/ui/gb-greeter-project-row.ui
+++ b/data/ui/gb-greeter-project-row.ui
@@ -67,6 +67,13 @@
</attributes>
</object>
</child>
+ <child>
+ <object class="GtkBox" id="languages_box">
+ <property name="spacing">3</property>
+ <property name="orientation">horizontal</property>
+ <property name="visible">true</property>
+ </object>
+ </child>
</object>
</child>
</object>
diff --git a/src/greeter/gb-greeter-project-row.c b/src/greeter/gb-greeter-project-row.c
index 540c663..0ab374e 100644
--- a/src/greeter/gb-greeter-project-row.c
+++ b/src/greeter/gb-greeter-project-row.c
@@ -25,6 +25,7 @@
#include "gb-glib.h"
#include "gb-greeter-project-row.h"
+#include "gb-greeter-pill-box.h"
struct _GbGreeterProjectRow
{
@@ -36,6 +37,7 @@ struct _GbGreeterProjectRow
GtkLabel *date_label;
GtkLabel *description_label;
+ GtkBox *languages_box;
GtkLabel *location_label;
GtkLabel *title_label;
};
@@ -59,7 +61,39 @@ gb_greeter_project_row_get_project_info (GbGreeterProjectRow *self)
return self->project_info;
}
-void
+static void
+gb_greeter_project_row_add_languages (GbGreeterProjectRow *self,
+ IdeProjectInfo *project_info)
+{
+ IdeDoap *doap;
+ gchar **languages;
+
+ g_return_if_fail (GB_IS_GREETER_PROJECT_ROW (self));
+ g_return_if_fail (IDE_IS_PROJECT_INFO (project_info));
+
+ /*
+ * TODO: What should we do about doap?
+ */
+
+ if ((doap = ide_project_info_get_doap (project_info)) &&
+ (languages = ide_doap_get_languages (doap)))
+ {
+ gsize i;
+
+ for (i = 0; languages [i]; i++)
+ {
+ GtkWidget *pill;
+
+ pill = g_object_new (GB_TYPE_GREETER_PILL_BOX,
+ "visible", TRUE,
+ "label", languages [i],
+ NULL);
+ gtk_container_add (GTK_CONTAINER (self->languages_box), pill);
+ }
+ }
+}
+
+static void
gb_greeter_project_row_set_project_info (GbGreeterProjectRow *self,
IdeProjectInfo *project_info)
{
@@ -69,6 +103,8 @@ gb_greeter_project_row_set_project_info (GbGreeterProjectRow *self,
if (g_set_object (&self->project_info, project_info))
{
egg_binding_set_set_source (self->bindings, project_info);
+ if (project_info != NULL)
+ gb_greeter_project_row_add_languages (self, project_info);
g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_PROJECT_INFO]);
}
}
@@ -191,6 +227,7 @@ gb_greeter_project_row_class_init (GbGreeterProjectRowClass *klass)
gtk_widget_class_bind_template_child (widget_class, GbGreeterProjectRow, date_label);
gtk_widget_class_bind_template_child (widget_class, GbGreeterProjectRow, description_label);
gtk_widget_class_bind_template_child (widget_class, GbGreeterProjectRow, location_label);
+ gtk_widget_class_bind_template_child (widget_class, GbGreeterProjectRow, languages_box);
gtk_widget_class_bind_template_child (widget_class, GbGreeterProjectRow, title_label);
gParamSpecs [PROP_PROJECT_INFO] =
@@ -198,7 +235,7 @@ gb_greeter_project_row_class_init (GbGreeterProjectRowClass *klass)
_("Project Info"),
_("The project info to render."),
IDE_TYPE_PROJECT_INFO,
- (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (object_class, PROP_PROJECT_INFO,
gParamSpecs [PROP_PROJECT_INFO]);
diff --git a/src/greeter/gb-greeter-project-row.h b/src/greeter/gb-greeter-project-row.h
index bd48963..acab4ac 100644
--- a/src/greeter/gb-greeter-project-row.h
+++ b/src/greeter/gb-greeter-project-row.h
@@ -20,6 +20,7 @@
#define GB_GREETER_PROJECT_ROW_H
#include <gtk/gtk.h>
+#include <ide.h>
G_BEGIN_DECLS
@@ -27,6 +28,8 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (GbGreeterProjectRow, gb_greeter_project_row, GB, GREETER_PROJECT_ROW, GtkListBoxRow)
+IdeProjectInfo *gb_greeter_project_row_get_project_info (GbGreeterProjectRow *self);
+
G_END_DECLS
#endif /* GB_GREETER_PROJECT_ROW_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]