[gtranslator/dl-integration: 7/18] dl-integration: Load actual teams, refactor combo
- From: Daniel Garcia Moreno <danigm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtranslator/dl-integration: 7/18] dl-integration: Load actual teams, refactor combo
- Date: Sat, 23 Mar 2019 09:27:54 +0000 (UTC)
commit 832df2c1b8d483e882abb86947185d042636225e
Author: Teja Cetinski <teja cetinski eu>
Date: Wed Jan 9 10:43:11 2019 +0100
dl-integration: Load actual teams, refactor combo
Load teams from DL API into combo box, refactor combo box code.
src/gtr-dl-teams.c | 118 ++++++++++++++++++-----------------------------------
1 file changed, 39 insertions(+), 79 deletions(-)
---
diff --git a/src/gtr-dl-teams.c b/src/gtr-dl-teams.c
index 2df41e26..ef228d99 100644
--- a/src/gtr-dl-teams.c
+++ b/src/gtr-dl-teams.c
@@ -35,6 +35,9 @@ typedef struct
GtkWidget *main_box;
GtkWidget *open_button;
GtkWidget *dl_button;
+ GtkWidget *teams_combobox;
+
+ GtkListStore *teams_store;
GtrWindow *main_window;
} GtrDlTeamsPrivate;
@@ -48,68 +51,6 @@ G_DEFINE_TYPE_WITH_PRIVATE (GtrDlTeams, gtr_dl_teams, GTK_TYPE_BIN)
static void team_add_cb (GtkButton *btn, GtrDlTeams *self);
-static GtkTreeModel *
-create_combo_store (void)
-{
- const gchar *labels[4] = {
- "Adding",
- "Items",
- "As I",
- "Go",
- };
-
- //GtkTreeIter iter;
- GtkListStore *store;
- gint i;
-
- store = gtk_list_store_new (1, G_TYPE_STRING);
-
- for (i = 0; i < G_N_ELEMENTS (labels); i++)
- {
- //printf( labels[i]);printf("\n");
- gtk_list_store_insert_with_values(store, NULL, -1,
- 0, labels[i],
- -1);
- /*
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter,
- 0, "Test",
- -1);*/
- }
-
- return GTK_TREE_MODEL (store);
-}
-
-static void
-add_dl_teams_combo (GtkButton *btn,
- GtrDlTeams *self)
-{
- GtkWidget *combo_box;
- GtkTreeModel *model;
- GtkCellRenderer *column;
-
- GtrDlTeamsPrivate *priv = gtr_dl_teams_get_instance_private (self);
-
- combo_box = gtk_combo_box_new ();
- //model = create_combo_model_from_json (teams_json_array);
- model = create_combo_store ();
- //combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (model));
- gtk_combo_box_set_model (GTK_COMBO_BOX (combo_box), GTK_TREE_MODEL (model));
- g_object_unref (model);
-
- column = gtk_cell_renderer_text_new();
- gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo_box), column, TRUE);
-
- gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_box), column,
- "text", 0,
- //"text", 1,
- NULL);
-
- gtk_container_add (GTK_CONTAINER (priv->main_box), combo_box);
- gtk_widget_show (combo_box);
-
-}
-
static void
element_cb (JsonArray *array,
guint index,
@@ -117,22 +58,28 @@ element_cb (JsonArray *array,
gpointer data)
{
JsonObject *object = json_node_get_object (element);
+
+ gtk_list_store_insert_with_values(data, NULL, -1,
+ 0, json_object_get_string_member (object, "description"),
+ -1);
/*printf ("%s: %s\n",
json_object_get_string_member (object, "id"),
json_object_get_string_member (object, "description")
- );
- * */
+ );*/
}
static void
-load_and_parse (GObject *object, GAsyncResult *result, gpointer user_data)
+gtr_dl_teams_parse_json (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
{
g_autoptr(JsonParser) parser = json_parser_new ();
g_autoptr(GInputStream) stream;
JsonNode *node = NULL;
JsonArray *array = NULL;
- printf("load and parse\n");
+ GtrDlTeams *widget = GTR_DL_TEAMS (user_data);
+ GtrDlTeamsPrivate *priv = gtr_dl_teams_get_instance_private (widget);
/* Parse JSON */
stream = soup_session_send_finish (SOUP_SESSION (object), result, NULL);
@@ -141,25 +88,20 @@ load_and_parse (GObject *object, GAsyncResult *result, gpointer user_data)
node = json_parser_get_root (parser);
array = json_node_get_array (node);
- printf("array length: %d\n", json_array_get_length(array));
-
- // create combo and fill it with options from JSON
- //json_array_foreach_element (array, element_cb, NULL);
-
- //g_object_unref (session);
- //g_object_unref (message);
- //g_object_unref (parser);
+ /* Fill teams list store with values from JSON and set store as combo box model */
+ json_array_foreach_element (array, element_cb, GTK_TREE_MODEL (priv->teams_store));
+ gtk_combo_box_set_model (GTK_COMBO_BOX (priv->teams_combobox), GTK_TREE_MODEL (priv->teams_store));
}
static void
-gtr_dl_teams_load_json ()
+gtr_dl_teams_load_json (GtkButton *btn,
+ GtrDlTeams *self)
{
/* Get team list JSON from DL */
- printf("get JSON\n");
g_autoptr(SoupSession) session = soup_session_new ();
g_autoptr(SoupMessage) message = soup_message_new ("GET", "https://l10n.gnome.org/teams/json");
- soup_session_send_async (session, message, NULL, load_and_parse, NULL);
+ soup_session_send_async (session, message, NULL, gtr_dl_teams_parse_json, self);
}
static void
@@ -197,19 +139,37 @@ gtr_dl_teams_class_init (GtrDlTeamsClass *klass)
static void
gtr_dl_teams_init (GtrDlTeams *self)
{
- //GtkWidget *box, *combo, *entry;
+ GtkCellRenderer *column;
GtrDlTeamsPrivate *priv = gtr_dl_teams_get_instance_private (self);
gtk_widget_init_template (GTK_WIDGET (self));
priv->main_window = NULL;
+ /* Init teams list store */
+ priv->teams_store = gtk_list_store_new (1, G_TYPE_STRING);
+
+ /* Add a combo box for DL teams */
+ priv->teams_combobox = gtk_combo_box_new ();
+
+ column = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(priv->teams_combobox), column, TRUE);
+
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(priv->teams_combobox), column,
+ "text", 0,
+ //"text", 1,
+ NULL);
+
+ gtk_container_add (GTK_CONTAINER (priv->main_box), priv->teams_combobox);
+ gtk_widget_show (priv->teams_combobox);
+
g_signal_connect (priv->open_button,
"clicked",
G_CALLBACK (team_add_cb),
self);
+ /* Load JSON on click */
g_signal_connect (priv->dl_button,
"clicked",
- G_CALLBACK (add_dl_teams_combo),
+ G_CALLBACK (gtr_dl_teams_load_json),
self);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]