summaryrefslogtreecommitdiff
path: root/src/anastasis/anastasis-gtk_pe-edit-policy.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/anastasis/anastasis-gtk_pe-edit-policy.c')
-rw-r--r--src/anastasis/anastasis-gtk_pe-edit-policy.c295
1 files changed, 149 insertions, 146 deletions
diff --git a/src/anastasis/anastasis-gtk_pe-edit-policy.c b/src/anastasis/anastasis-gtk_pe-edit-policy.c
index f0ac3fb..6803cc2 100644
--- a/src/anastasis/anastasis-gtk_pe-edit-policy.c
+++ b/src/anastasis/anastasis-gtk_pe-edit-policy.c
@@ -50,7 +50,7 @@ struct LineContext
* Kept in a DLL.
*/
struct LineContext *prev;
-
+
/**
* Context this line context belongs with.
*/
@@ -60,17 +60,17 @@ struct LineContext
* Our combo box.
*/
GtkComboBox *cb;
-
+
/**
* Model for our combo box.
*/
GtkTreeModel *model;
-
+
/**
- * Challenge index for this line.
+ * Challenge index for this line.
*/
unsigned int cindex;
-
+
/**
* Is this challenge used?
*/
@@ -107,7 +107,7 @@ struct EditDialogContext
/**
- * Handle the response from the edit dialog.
+ * Handle the response from the edit dialog.
*
* @param dialog the dialog
* @param response_id what the user's action was
@@ -124,65 +124,66 @@ anastasis_gtk_policy_edit_dialog_response_cb (
if (GTK_RESPONSE_OK == response_id)
{
json_t *policy;
-
+
policy = json_array ();
GNUNET_assert (NULL != policy);
for (struct LineContext *lctx = edc->lc_head;
- NULL != lctx;
- lctx = lctx->next)
+ NULL != lctx;
+ lctx = lctx->next)
{
GtkTreeIter iter;
gchar *url;
-
+
if (! lctx->on)
- continue;
+ continue;
if (! gtk_combo_box_get_active_iter (lctx->cb,
- &iter))
+ &iter))
{
- GNUNET_break (0);
- continue;
+ GNUNET_break (0);
+ continue;
}
gtk_tree_model_get (lctx->model,
- &iter,
- 0, &url,
- -1);
- GNUNET_break (0 ==
- json_array_append_new (policy,
- json_pack ("{s:I, s:s}",
- "authentication_method",
- (json_int_t) lctx->cindex,
- "provider",
- url)));
+ &iter,
+ 0, &url,
+ -1);
+ GNUNET_assert (0 ==
+ json_array_append_new (
+ policy,
+ GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_uint64 ("authentication_method",
+ lctx->cindex),
+ GNUNET_JSON_pack_string ("provider",
+ url))));
g_free (url);
}
if (UINT_MAX == edc->pindex)
{
json_t *args;
- args = json_pack ("{s:o}",
- "policy",
- (json_int_t) policy);
+ args = GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_array_steal ("policy",
+ policy));
AG_ra = ANASTASIS_redux_action (AG_redux_state,
- "add_policy",
- args,
- &AG_action_cb,
- NULL);
+ "add_policy",
+ args,
+ &AG_action_cb,
+ NULL);
json_decref (args);
}
else
{
json_t *args;
- args = json_pack ("{s:I, s:o}",
- "policy_index",
- (json_int_t) edc->pindex,
- "policy",
- policy);
+ args = GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_uint64 ("policy_index",
+ edc->pindex),
+ GNUNET_JSON_pack_array_steal ("policy",
+ policy));
AG_ra = ANASTASIS_redux_action (AG_redux_state,
- "update_policy",
- args,
- &AG_action_cb,
- NULL);
+ "update_policy",
+ args,
+ &AG_action_cb,
+ NULL);
json_decref (args);
}
}
@@ -190,11 +191,11 @@ anastasis_gtk_policy_edit_dialog_response_cb (
{
struct LineContext *lctx;
- while (NULL != (lctx =edc->lc_head))
+ while (NULL != (lctx = edc->lc_head))
{
GNUNET_CONTAINER_DLL_remove (edc->lc_head,
- edc->lc_tail,
- lctx);
+ edc->lc_tail,
+ lctx);
GNUNET_free (lctx);
}
}
@@ -224,23 +225,23 @@ combo_box_changed_cb (
/* Update our line context's on/off flag */
{
GtkTreeIter iter;
-
+
if (! gtk_combo_box_get_active_iter (lc->cb,
- &iter))
+ &iter))
{
GNUNET_break (0);
}
else
{
gchar *url;
-
+
gtk_tree_model_get (lc->model,
- &iter,
- 0, &url,
- -1);
+ &iter,
+ 0, &url,
+ -1);
lc->on = (0 !=
- strcmp (_("<off>"),
- url));
+ strcmp (_ ("<off>"),
+ url));
g_free (url);
}
}
@@ -250,13 +251,13 @@ combo_box_changed_cb (
bool legal = false;
for (struct LineContext *lctx = edc->lc_head;
- NULL != lctx;
- lctx = lctx->next)
+ NULL != lctx;
+ lctx = lctx->next)
legal |= lctx->on;
ok_button = GTK_WIDGET (gtk_builder_get_object (edc->builder,
- "ok_button"));
+ "ok_button"));
gtk_widget_set_sensitive (ok_button,
- legal);
+ legal);
}
}
@@ -268,31 +269,31 @@ combo_box_changed_cb (
* @param type method to check for
* @param ap provider to check against
* @return true if @a ap offers @a type
- */
+ */
static bool
ap_matches (const char *type,
- json_t *ap)
+ json_t *ap)
{
json_t *methods;
size_t index;
json_t *method;
methods = json_object_get (ap,
- "methods");
+ "methods");
GNUNET_break (NULL != methods);
json_array_foreach (methods, index, method)
{
const char *offer;
offer = json_string_value (json_object_get (method,
- "type"));
+ "type"));
if (NULL == offer)
{
GNUNET_break (0);
continue;
}
if (0 == strcasecmp (type,
- offer))
+ offer))
return true;
}
return false;
@@ -301,7 +302,7 @@ ap_matches (const char *type,
/**
* Create a GtkListStore containing all of the URLs
- * of Anastasis providers offering @a type as an
+ * of Anastasis providers offering @a type as an
* authentication method.
*
* @return the model
@@ -315,26 +316,26 @@ make_model (const char *type)
json_t *ap;
ls = gtk_list_store_new (1,
- G_TYPE_STRING);
+ G_TYPE_STRING);
gtk_list_store_insert_with_values (ls,
- NULL,
- -1,
- 0, _("<off>"),
- -1);
+ NULL,
+ -1,
+ 0, _ ("<off>"),
+ -1);
aps = json_object_get (AG_redux_state,
- "authentication_providers");
+ "authentication_providers");
GNUNET_break (NULL != aps);
json_object_foreach (aps, url, ap) {
if (ap_matches (type,
- ap))
+ ap))
{
gtk_list_store_insert_with_values (ls,
- NULL,
- -1,
- 0, url,
- -1);
+ NULL,
+ -1,
+ 0, url,
+ -1);
}
- }
+ }
return GTK_TREE_MODEL (ls);
}
@@ -348,12 +349,12 @@ make_model (const char *type)
*/
static void
select_by_url (const char *url,
- struct LineContext *lctx)
+ struct LineContext *lctx)
{
GtkTreeIter iter;
if (! gtk_tree_model_get_iter_first (lctx->model,
- &iter))
+ &iter))
{
GNUNET_break (0);
return;
@@ -362,21 +363,21 @@ select_by_url (const char *url,
gchar *have;
gtk_tree_model_get (lctx->model,
- &iter,
- 0, &have,
- -1);
+ &iter,
+ 0, &have,
+ -1);
if (0 == strcmp (have,
- url))
+ url))
{
gtk_combo_box_set_active_iter (lctx->cb,
- &iter);
+ &iter);
lctx->on = true;
g_free (have);
return;
}
g_free (have);
} while (gtk_tree_model_iter_next (lctx->model,
- &iter));
+ &iter));
GNUNET_break (0); /* not found */
}
@@ -390,31 +391,31 @@ select_by_url (const char *url,
*/
static void
select_by_policy (const json_t *methods,
- struct LineContext *lctx)
+ struct LineContext *lctx)
{
size_t index;
json_t *method;
GtkTreeIter iter;
if (! gtk_tree_model_get_iter_first (lctx->model,
- &iter))
+ &iter))
{
GNUNET_break (0);
return;
}
gtk_combo_box_set_active_iter (lctx->cb,
- &iter);
+ &iter);
json_array_foreach (methods, index, method) {
- json_int_t am = json_integer_value (json_object_get (method,\
- "authentication_method"));
+ json_int_t am = json_integer_value (json_object_get (method, \
+ "authentication_method"));
const char *url;
-
+
if (am != lctx->cindex)
continue;
url = json_string_value (json_object_get (method,
- "provider"));
+ "provider"));
select_by_url (url,
- lctx);
+ lctx);
break;
}
}
@@ -426,10 +427,10 @@ AG_edit_policy (guint pindex)
struct EditDialogContext *edc;
GtkGrid *grid;
json_t *methods = NULL;
-
+
edc = GNUNET_new (struct EditDialogContext);
edc->builder = GNUNET_GTK_get_new_builder ("anastasis_gtk_edit_policy.glade",
- edc);
+ edc);
edc->pindex = pindex;
if (NULL == edc->builder)
{
@@ -443,18 +444,18 @@ AG_edit_policy (guint pindex)
json_t *policy;
policies = json_object_get (AG_redux_state,
- "policies");
+ "policies");
policy = json_array_get (policies,
- pindex);
+ pindex);
methods = json_object_get (policy,
- "methods");
+ "methods");
GNUNET_break (NULL != methods);
}
grid = GTK_GRID (gtk_builder_get_object (edc->builder,
- "policy_grid"));
+ "policy_grid"));
{
json_t *ams = json_object_get (AG_redux_state,
- "authentication_methods");
+ "authentication_methods");
json_t *am;
size_t index;
gint row = 1;
@@ -464,10 +465,10 @@ AG_edit_policy (guint pindex)
const char *instructions;
struct GNUNET_JSON_Specification spec[] = {
GNUNET_JSON_spec_string ("type",
- &type),
- GNUNET_JSON_spec_string ("instructions",
- &instructions),
- GNUNET_JSON_spec_end ()
+ &type),
+ GNUNET_JSON_spec_string ("instructions",
+ &instructions),
+ GNUNET_JSON_spec_end ()
};
char *labels;
GtkWidget *label;
@@ -475,69 +476,69 @@ AG_edit_policy (guint pindex)
struct LineContext *lctx;
if (GNUNET_OK !=
- GNUNET_JSON_parse (am,
- spec,
- NULL, NULL))
+ GNUNET_JSON_parse (am,
+ spec,
+ NULL, NULL))
{
- GNUNET_break (0);
- continue;
+ GNUNET_break (0);
+ continue;
}
lctx = GNUNET_new (struct LineContext);
lctx->cindex = index;
GNUNET_asprintf (&labels,
- "<b>%s</b>: %s",
- type,
- instructions);
+ "<b>%s</b>: %s",
+ type,
+ instructions);
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
- labels);
+ labels);
GNUNET_free (labels);
lctx->model = make_model (type);
cb = gtk_combo_box_new_with_model (lctx->model);
lctx->cb = GTK_COMBO_BOX (cb);
{
- GtkCellRenderer *renderer;
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cb),
- renderer,
- true);
- gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (cb),
- renderer,
- "text",
- 0);
+ GtkCellRenderer *renderer;
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cb),
+ renderer,
+ true);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (cb),
+ renderer,
+ "text",
+ 0);
}
lctx->edc = edc;
GNUNET_CONTAINER_DLL_insert (edc->lc_head,
- edc->lc_tail,
- lctx);
+ edc->lc_tail,
+ lctx);
g_object_connect (cb,
- "signal::changed",
- &combo_box_changed_cb, lctx,
- NULL);
+ "signal::changed",
+ &combo_box_changed_cb, lctx,
+ NULL);
if (NULL != methods)
- select_by_policy (methods,
- lctx);
+ select_by_policy (methods,
+ lctx);
gtk_grid_insert_row (grid,
- row);
+ row);
gtk_widget_show (label);
gtk_grid_attach (grid,
- label,
- 0,
- row,
- 1,
- 1);
+ label,
+ 0,
+ row,
+ 1,
+ 1);
g_object_set (cb,
- "expand",
- TRUE,
- NULL);
+ "expand",
+ TRUE,
+ NULL);
gtk_widget_show (cb);
gtk_grid_attach (grid,
- cb,
- 1,
- row,
- 1,
- 1);
+ cb,
+ 1,
+ row,
+ 1,
+ 1);
row++;
}
}
@@ -547,20 +548,22 @@ AG_edit_policy (guint pindex)
GtkWidget *anchor;
GtkRequisition req;
- anchor = GTK_WIDGET (GCG_get_main_window_object ("anastasis_gtk_main_window_quit_button"));
+ anchor = GTK_WIDGET (GCG_get_main_window_object (
+ "anastasis_gtk_main_window_quit_button"));
toplevel = gtk_widget_get_toplevel (anchor);
ad = GTK_WIDGET (gtk_builder_get_object (edc->builder,
- "anastasis_gtk_policy_edit_dialog"));
+ "anastasis_gtk_policy_edit_dialog"));
gtk_widget_get_preferred_size (ad,
- NULL,
- &req);
+ NULL,
+ &req);
gtk_window_resize (GTK_WINDOW (ad),
- req.width,
- req.height);
+ req.width,
+ req.height);
gtk_window_set_transient_for (GTK_WINDOW (ad),
GTK_WINDOW (toplevel));
gtk_window_present (GTK_WINDOW (ad));
}
}
+
/* end of anastasis-gtk_pe-edit-policy.c */