ZLGtkApplicationWindow::GtkEntryParameter::GtkEntryParameter(ZLGtkApplicationWindow &window, const ZLToolbar::ParameterItem &item) : myWindow(window), myItem(item) {
	if (item.type() == ZLToolbar::Item::COMBO_BOX) {
		myWidget = gtk_combo_box_entry_new_text();
		myEntry = GTK_ENTRY(GTK_BIN(myWidget)->child);
		ZLGtkSignalUtil::connectSignal(GTK_OBJECT(myEntry), "changed", GTK_SIGNAL_FUNC(::onValueChanged), this);
	} else {
		myWidget = gtk_entry_new();
		myEntry = GTK_ENTRY(myWidget);
	}
	gtk_entry_set_alignment(myEntry, 0.5);
	gtk_entry_set_width_chars(myEntry, item.maxWidth());
	gtk_entry_set_max_length(myEntry, item.maxWidth());
	if (item.symbolSet() == ZLToolbar::ParameterItem::SET_DIGITS) {
		hildon_gtk_entry_set_input_mode(myEntry, HILDON_GTK_INPUT_MODE_NUMERIC);
	} else {
		hildon_gtk_entry_set_input_mode(myEntry, HILDON_GTK_INPUT_MODE_FULL);
	}
	ZLGtkSignalUtil::connectSignal(GTK_OBJECT(myEntry), "key_press_event", GTK_SIGNAL_FUNC(::onKeyPressed), this);
}
/**
 * hildon_touch_selector_entry_set_input_mode:
 * @selector: a #HildonTouchSelectorEntry
 * @input_mode: #HildonGtkInputMode mask
 *
 * Sets the input mode to be used in the #GtkEntry in @selector. See hildon_gtk_entry_set_input_mode()
 * for details.
 *
 * It must be noted that not all input modes are available for the
 * entry in @selector. In particular,
 * %HILDON_GTK_INPUT_MODE_MULTILINE, %HILDON_GTK_INPUT_MODE_INVISIBLE,
 * %HILDON_GTK_INPUT_MODE_DICTIONARY are disabled, since these are irrelevant
 * for #HildonTouchSelectorEntry.
 *
 * Since: 2.2
 **/
void
hildon_touch_selector_entry_set_input_mode (HildonTouchSelectorEntry * selector,
                                            HildonGtkInputMode input_mode)
{
  HildonTouchSelectorEntryPrivate *priv;

  g_return_if_fail (HILDON_IS_TOUCH_SELECTOR_ENTRY (selector));
  g_return_if_fail (!(input_mode & (HILDON_GTK_INPUT_MODE_MULTILINE |
				    HILDON_GTK_INPUT_MODE_INVISIBLE |
				    HILDON_GTK_INPUT_MODE_DICTIONARY)));

  priv = HILDON_TOUCH_SELECTOR_ENTRY_GET_PRIVATE (selector);

  hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->entry), input_mode);
}
static void
hildon_touch_selector_entry_init (HildonTouchSelectorEntry *self)
{
  HildonTouchSelectorEntryPrivate *priv;
  GtkEntryCompletion *completion;
  HildonGtkInputMode input_mode;

  priv = HILDON_TOUCH_SELECTOR_ENTRY_GET_PRIVATE (self);

  priv->converter = g_iconv_open ("ascii//translit", "utf-8");

  priv->entry = hildon_entry_new (HILDON_SIZE_FINGER_HEIGHT);
  gtk_entry_set_activates_default (GTK_ENTRY (priv->entry), TRUE);
  input_mode = hildon_gtk_entry_get_input_mode (GTK_ENTRY (priv->entry));

  /* Disable unsupported input modes. */
  input_mode &= ~HILDON_GTK_INPUT_MODE_MULTILINE;
  input_mode &= ~HILDON_GTK_INPUT_MODE_INVISIBLE;
  input_mode &= ~HILDON_GTK_INPUT_MODE_DICTIONARY;

  hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->entry), input_mode);

  completion = gtk_entry_completion_new ();
  gtk_entry_completion_set_inline_completion (completion, TRUE);
  gtk_entry_completion_set_popup_completion (completion, FALSE);
  gtk_entry_set_completion (GTK_ENTRY (priv->entry), completion);
  g_object_unref (completion);

  gtk_widget_show (priv->entry);
  g_signal_connect (G_OBJECT (priv->entry), "changed",
                    G_CALLBACK (entry_on_text_changed), self);
  priv->signal_id = g_signal_connect (G_OBJECT (self), "changed",
                                      G_CALLBACK (hildon_touch_selector_entry_changed), NULL);

  hildon_touch_selector_set_print_func (HILDON_TOUCH_SELECTOR (self), hildon_touch_selector_entry_print_func);
  gtk_box_pack_start (GTK_BOX (self), priv->entry, FALSE, FALSE, 0);
}
Example #4
0
GtkWidget* 
et_dialog_new ( GtkWindow *parent, Token *token )
{
  GtkWidget *et_dialog;
  EtDialog *self;
  const gchar *description;
  GtkDialog *dialog;
  GtkWidget *box;


  et_dialog = g_object_new ( TYPE_ET_DIALOG, NULL );
  self = ET_DIALOG(et_dialog);
  dialog = GTK_DIALOG (self);
  
  self->token = token;

  /* title */
  gtk_window_set_title ( GTK_WINDOW (self), token->name );
  
  /* description */
  description = g_strjoin ( " ", algorithm_labels[token->algorithm],
			    counter_type_labels[token->counter_t],
			    "token", NULL );
  gtk_label_set_text ( GTK_LABEL ( self->description ), description );
  
  /* key */
  gtk_entry_set_text ( GTK_ENTRY( self->key ), token_get_key_as_str ( token ) );

  /* Algorithm specific parameters */
  switch ( self->token->algorithm )
    {
    case HOTP:
      switch ( self->token->counter_t )
	{
	case EVENT: 
	  LABELED_ENTRY ( "Counter value", self->counter );  
	  gtk_entry_set_text ( GTK_ENTRY ( self->counter ), 
			       g_strdup_printf("%lu", (gulong)token->counter ) );
	  hildon_gtk_entry_set_input_mode ( GTK_ENTRY ( self->counter ), 
					    HILDON_GTK_INPUT_MODE_NUMERIC );
	  break;
	  
	case TIME:  
	  LABELED_ENTRY ( "Interval (seconds) ", self->interval);
	  gtk_entry_set_text ( GTK_ENTRY ( self->interval ), 
			       g_strdup_printf("%u", token->interval ) );
	  hildon_gtk_entry_set_input_mode ( GTK_ENTRY ( self->interval ),
					    HILDON_GTK_INPUT_MODE_NUMERIC );
	  break;

	default:;
	}
      /* disp hex */
      self->disp_hex = hildon_check_button_new ( HILDON_SIZE_FINGER_HEIGHT );
      gtk_button_set_label ( GTK_BUTTON ( self->disp_hex ), "Display Hexadecimal" );
      hildon_check_button_set_active ( HILDON_CHECK_BUTTON(self->disp_hex), token->disp_hex );
      APPEND ( self->disp_hex );
      /* Digits */
      self->digits = integer_selector_new ( MIN_DIGITS, MAX_DIGITS );
      hildon_button_set_title ( HILDON_BUTTON(self->digits), "Digits" );
      hildon_touch_selector_set_active ( hildon_picker_button_get_selector ( HILDON_PICKER_BUTTON(self->digits) ),
					 0, (token->digits - MIN_DIGITS) );
      APPEND ( self->digits );  
      break;
      
    case MOTP:
      if ( self->token->counter_t == EVENT ){
	LABELED_ENTRY ( "Counter", self->counter );
	gtk_entry_set_text ( GTK_ENTRY ( self->counter ), 
			     g_strdup_printf("%lu", (gulong)token->counter ) );
      }
      self->pin_size = integer_selector_new ( MIN_PIN_SIZE, MAX_PIN_SIZE );
      hildon_button_set_title ( HILDON_BUTTON(self->pin_size), "PIN length" );
      hildon_touch_selector_set_active ( hildon_picker_button_get_selector ( HILDON_PICKER_BUTTON(self->pin_size) ),
					 0, (token->pin_size - MIN_PIN_SIZE) );
      APPEND ( self->pin_size );
      break;

    default:;
    }

  return et_dialog;
}
/**
 * Shows a dialog to edit the given connection (or create a new one,
 * if conn is NULL)
 */
static void
edit_connection (gpointer *parent, StrongswanConnection *conn)
{
	GtkWidget *dialog;
	dialog = gtk_dialog_new_with_buttons (
							conn ? "Edit Connection" : "New Connection",
							GTK_WINDOW (parent),
							GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR,
							GTK_STOCK_CANCEL,
							GTK_RESPONSE_CANCEL,
							GTK_STOCK_SAVE,
							GTK_RESPONSE_OK,
							NULL);
	GtkWidget *vbox = GTK_DIALOG (dialog)->vbox;
	GtkSizeGroup *group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);

	GtkWidget *name = hildon_entry_new (HILDON_SIZE_AUTO);
	hildon_gtk_entry_set_placeholder_text (GTK_ENTRY (name), "Connection Name");
	hildon_gtk_entry_set_input_mode (GTK_ENTRY (name),
									 HILDON_GTK_INPUT_MODE_AUTOCAP |
									 HILDON_GTK_INPUT_MODE_ALPHA |
									 HILDON_GTK_INPUT_MODE_NUMERIC);
	GtkWidget *ncap = hildon_caption_new (group,
										  "Name",
										  name,
										  NULL,
										  HILDON_CAPTION_OPTIONAL);
	gtk_box_pack_start (GTK_BOX (vbox), ncap, TRUE, TRUE, 0);

	GtkWidget *host = hildon_entry_new (HILDON_SIZE_AUTO);
	hildon_gtk_entry_set_placeholder_text (GTK_ENTRY (host), "Hostname / IP");
	hildon_gtk_entry_set_input_mode (GTK_ENTRY (host),
									 HILDON_GTK_INPUT_MODE_FULL);
	GtkWidget *hcap = hildon_caption_new (group,
										  "Host",
										  host,
										  NULL,
										  HILDON_CAPTION_OPTIONAL);
	gtk_box_pack_start (GTK_BOX (vbox), hcap, TRUE, TRUE, 0);

	GtkWidget *cert = hildon_button_new (HILDON_SIZE_FINGER_HEIGHT |
										 HILDON_SIZE_AUTO_WIDTH,
										 HILDON_BUTTON_ARRANGEMENT_VERTICAL);
	hildon_button_set_text (HILDON_BUTTON (cert),
							"Host or CA Certificate",
							"None");
	hildon_button_set_alignment (HILDON_BUTTON (cert), 0, 0.5, 1, 1);
	g_signal_connect (cert, "clicked", G_CALLBACK (select_cert), dialog);
	GtkWidget *ccap = hildon_caption_new (group,
										  "Certificate",
										  cert,
										  NULL,
										  HILDON_CAPTION_OPTIONAL);
	gtk_box_pack_start (GTK_BOX (vbox), ccap, TRUE, TRUE, 0);

	GtkWidget *user = hildon_entry_new (HILDON_SIZE_AUTO);
	hildon_gtk_entry_set_placeholder_text (GTK_ENTRY (user), "Username");
	hildon_gtk_entry_set_input_mode (GTK_ENTRY (user),
									 HILDON_GTK_INPUT_MODE_FULL);
	GtkWidget *ucap = hildon_caption_new (group,
										  "Username",
										  user,
										  NULL,
										  HILDON_CAPTION_OPTIONAL);
	gtk_box_pack_start (GTK_BOX (vbox), ucap, TRUE, TRUE, 0);

	if (conn)
	{
		gchar *c_name, *c_host, *c_cert, *c_user;
		g_object_get (conn,
					  "name", &c_name,
					  "host", &c_host,
					  "cert", &c_cert,
					  "user", &c_user,
					  NULL);
		gtk_entry_set_text (GTK_ENTRY (name), c_name);
		gtk_entry_set_text (GTK_ENTRY (host), c_host);
		hildon_button_set_value (HILDON_BUTTON (cert),
								 c_cert ? c_cert : "None");
		gtk_entry_set_text (GTK_ENTRY (user), c_user);
		g_free (c_name);
		g_free (c_host);
		g_free (c_cert);
		g_free (c_user);
	}

	gtk_widget_show_all (dialog);

	gint retval = gtk_dialog_run (GTK_DIALOG (dialog));
	if (retval == GTK_RESPONSE_OK)
	{
		const gchar *c_name, *c_cert;
		c_name = gtk_entry_get_text (GTK_ENTRY (name));
		if (!conn)
		{
			conn = strongswan_connection_new (c_name);
		}
		c_cert = hildon_button_get_value (HILDON_BUTTON (cert));
		c_cert = strcmp (c_cert, "None") ? c_cert : NULL;
		g_object_set (conn,
					  "name", c_name,
					  "host", gtk_entry_get_text (GTK_ENTRY (host)),
					  "cert", c_cert,
					  "user", gtk_entry_get_text (GTK_ENTRY (user)),
					  NULL);
		strongswan_connections_save_connection (ListDialog.conns, conn);
	}
	gtk_widget_destroy (dialog);
}