Add - and + button after number entry

These should make it easier to work with numbers.

* src/eom-new-item-dialog.c (change): New function.  Callback for the
  `+' and `-' buttons, either adds or subtracts one from the quantity
  field.
  (eom_new_item_dialog_init): Add `+' and `-' buttons after quantity
  entry.
This commit is contained in:
Tom Willemsen 2012-10-24 23:34:19 +02:00
parent 5849e3d2e4
commit 7727a458fb

View file

@ -10,6 +10,7 @@ enum {
EOM_NEW_PROP_MID = 1 EOM_NEW_PROP_MID = 1
}; };
static void change(GtkButton*,GtkEntry*);
static void eom_new_item_dialog_class_init(EomNewItemDialogClass*); static void eom_new_item_dialog_class_init(EomNewItemDialogClass*);
static void eom_new_item_dialog_init(EomNewItemDialog*); static void eom_new_item_dialog_init(EomNewItemDialog*);
static void finalize(GObject*); static void finalize(GObject*);
@ -37,6 +38,33 @@ eom_new_item_dialog_new(void)
return g_object_new(EOM_TYPE_NEW_ITEM_DIALOG, NULL); return g_object_new(EOM_TYPE_NEW_ITEM_DIALOG, NULL);
} }
static void
change(GtkButton *button, GtkEntry *entry)
{
gchar action, *txt;
int current_value;
int delta;
action = gtk_button_get_label(button)[0];
current_value = atoi(gtk_entry_get_text(entry));
switch (action) {
case '-':
delta = -1;
break;
case '+':
delta = +1;
break;
default:
delta = 0;
break;
}
txt = g_strdup_printf("%d", current_value + delta);
gtk_entry_set_text(entry, txt);
g_free(txt);
}
static void static void
eom_new_item_dialog_class_init(EomNewItemDialogClass *klass) eom_new_item_dialog_class_init(EomNewItemDialogClass *klass)
{ {
@ -59,6 +87,7 @@ eom_new_item_dialog_init(EomNewItemDialog *dialog)
{ {
GtkWidget *content_area; GtkWidget *content_area;
GtkWidget *hbox; GtkWidget *hbox;
GtkWidget *pbutton, *mbutton;
content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
@ -75,6 +104,18 @@ eom_new_item_dialog_init(EomNewItemDialog *dialog)
hildon_entry_set_text(HILDON_ENTRY(dialog->qty_entry), "0"); hildon_entry_set_text(HILDON_ENTRY(dialog->qty_entry), "0");
gtk_box_pack_start(GTK_BOX(hbox), dialog->qty_entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), dialog->qty_entry, TRUE, TRUE, 0);
mbutton = hildon_gtk_button_new(HILDON_SIZE_AUTO);
gtk_button_set_label(GTK_BUTTON(mbutton), "-");
g_signal_connect_after(mbutton, "clicked", G_CALLBACK(change),
dialog->qty_entry);
gtk_box_pack_start(GTK_BOX(hbox), mbutton, FALSE, FALSE, 0);
pbutton = hildon_gtk_button_new(HILDON_SIZE_AUTO);
gtk_button_set_label(GTK_BUTTON(pbutton), "+");
g_signal_connect_after(pbutton, "clicked", G_CALLBACK(change),
dialog->qty_entry);
gtk_box_pack_start(GTK_BOX(hbox), pbutton, FALSE, FALSE, 0);
gtk_window_set_title(GTK_WINDOW(dialog), "New item"); gtk_window_set_title(GTK_WINDOW(dialog), "New item");
gtk_dialog_add_buttons(GTK_DIALOG(dialog), gtk_dialog_add_buttons(GTK_DIALOG(dialog),
GTK_STOCK_OK, GTK_STOCK_OK,