Exemplo n.º 1
0
static void
aw_captcha_dialog_init (AwCaptchaDialog *dialog)
{
  GtkWidget    *table, *widget, *content;
  GtkTreeModel *model;

  dialog->priv = G_TYPE_INSTANCE_GET_PRIVATE (dialog, AW_TYPE_CAPTCHA_DIALOG,
                                              AwCaptchaDialogPrivate);

  content = gtk_dialog_get_content_area (GTK_DIALOG (dialog));

  gtk_dialog_add_button (GTK_DIALOG (dialog), _("Submit"), GTK_RESPONSE_OK);

  table = gtk_table_new (2, 2, FALSE);
  gtk_table_set_col_spacings (GTK_TABLE (table), HILDON_MARGIN_DOUBLE);
  gtk_container_add (GTK_CONTAINER (content), table);

  widget = gtk_image_new ();
  gtk_widget_set_size_request (widget, AW_CAPTCHA_WIDTH, AW_CAPTCHA_HEIGHT);
  gtk_table_attach (GTK_TABLE (table), widget, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
  dialog->priv->challenge = widget;

  widget = hildon_entry_new (HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT);
  gtk_entry_set_overwrite_mode (GTK_ENTRY (widget), TRUE);
  gtk_entry_set_max_length (GTK_ENTRY (widget), 5);
  gtk_table_attach (GTK_TABLE (table), widget, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0);
  dialog->priv->response = widget;

  g_signal_connect_swapped (widget, "changed",
                            G_CALLBACK (aw_captcha_dialog_entry_changed_cb),
                            dialog);

  widget = hildon_touch_selector_new_text ();
  gtk_widget_set_size_request (widget, -1, 4 * 70);
  gtk_table_attach_defaults (GTK_TABLE (table), widget, 0, 2, 1, 2);
  dialog->priv->selector = widget;

  model = aw_captcha_dialog_create_model ();

  hildon_touch_selector_append_text_column
    (HILDON_TOUCH_SELECTOR (widget), model, TRUE);
  hildon_touch_selector_append_text_column
    (HILDON_TOUCH_SELECTOR (widget), model, TRUE);
  hildon_touch_selector_append_text_column
    (HILDON_TOUCH_SELECTOR (widget), model, TRUE);
  hildon_touch_selector_append_text_column
    (HILDON_TOUCH_SELECTOR (widget), model, TRUE);
  hildon_touch_selector_append_text_column
    (HILDON_TOUCH_SELECTOR (widget), model, TRUE);

  g_signal_connect_swapped
    (widget, "changed",
     G_CALLBACK (aw_captcha_dialog_selector_changed_cb), dialog);

  g_object_unref (model);

  gtk_widget_show_all (table);
}
/**
 * hildon_touch_selector_entry_new_text:
 *
 * Creates a #HildonTouchSelectorEntry with a single text column that
 * can be populated conveniently through hildon_touch_selector_append_text(),
 * hildon_touch_selector_prepend_text(), hildon_touch_selector_insert_text().
 *
 * Returns: A new #HildonTouchSelectorEntry
 *
 * Since: 2.2
 **/
GtkWidget *
hildon_touch_selector_entry_new_text (void)
{
  GtkListStore *model;
  GtkWidget *selector;
  GtkEntryCompletion *completion;
  HildonTouchSelectorEntryPrivate *priv;
  HildonTouchSelectorColumn *column = NULL;

  selector = hildon_touch_selector_entry_new ();

  priv = HILDON_TOUCH_SELECTOR_ENTRY_GET_PRIVATE (selector);

  model = gtk_list_store_new (1, G_TYPE_STRING);
  completion = gtk_entry_get_completion (GTK_ENTRY (priv->entry));
  gtk_entry_completion_set_model (completion, GTK_TREE_MODEL (model));
  column = hildon_touch_selector_append_text_column (HILDON_TOUCH_SELECTOR (selector),
                                                     GTK_TREE_MODEL (model), FALSE);
  g_object_unref (model);

  g_signal_connect (column, "notify::text-column", G_CALLBACK (_text_column_modified),
                    selector);
  hildon_touch_selector_entry_set_text_column (HILDON_TOUCH_SELECTOR_ENTRY (selector), 0);

  return selector;
}