void gnc_item_edit_set_popup (GncItemEdit *item_edit, GtkWidget *popup_item, PopupGetHeight popup_get_height, PopupAutosize popup_autosize, PopupSetFocus popup_set_focus, PopupPostShow popup_post_show, PopupGetWidth popup_get_width, gpointer popup_user_data) { g_return_if_fail (GNC_IS_ITEM_EDIT(item_edit)); if (item_edit->is_popup) gnc_item_edit_hide_popup (item_edit); item_edit->is_popup = popup_item != NULL; item_edit->popup_item = popup_item; item_edit->popup_get_height = popup_get_height; item_edit->popup_autosize = popup_autosize; item_edit->popup_set_focus = popup_set_focus; item_edit->popup_post_show = popup_post_show; item_edit->popup_get_width = popup_get_width; item_edit->popup_user_data = popup_user_data; if (item_edit->is_popup) connect_popup_toggle_signals (item_edit); else { disconnect_popup_toggle_signals (item_edit); gnc_item_edit_hide_popup (item_edit); gtk_widget_hide (item_edit->popup_toggle.ebox); } }
static void key_press_item_cb (GNCDatePicker *gdp, GdkEventKey *event, gpointer data) { DateCell *cell = data; PopBox *box = cell->cell.gui_private; switch (event->keyval) { case GDK_KEY_Escape: gnc_item_edit_hide_popup (box->item_edit); box->calendar_popped = FALSE; break; default: gtk_widget_event(GTK_WIDGET (box->sheet), (GdkEvent *) event); break; } }
static void date_picked_cb (GNCDatePicker *gdp, gpointer data) { DateCell *cell = data; PopBox *box = cell->cell.gui_private; guint day, month, year; char buffer[DATE_BUF]; gtk_calendar_get_date (gdp->calendar, &year, &month, &day); qof_print_date_dmy_buff (buffer, MAX_DATE_LENGTH, day, month + 1, year); box->in_date_select = TRUE; gnucash_sheet_modify_current_cell (box->sheet, buffer); box->in_date_select = FALSE; gnc_item_edit_hide_popup (box->item_edit); box->calendar_popped = FALSE; }
static void gnc_item_edit_popup_toggled (GtkToggleButton *button, gpointer data) { GncItemEdit *item_edit = GNC_ITEM_EDIT (data); gboolean show_popup; show_popup = gtk_toggle_button_get_active (button); if (show_popup) { Table *table; VirtualLocation virt_loc; table = item_edit->sheet->table; virt_loc = table->current_cursor_loc; if (!gnc_table_confirm_change (table, virt_loc)) { g_signal_handlers_block_matched (button, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, data); gtk_toggle_button_set_active (button, FALSE); g_signal_handlers_unblock_matched (button, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, data); return; } } item_edit->show_popup = show_popup; if (!item_edit->show_popup) gnc_item_edit_hide_popup (item_edit); gnc_item_edit_configure (item_edit); }