static void gnc_item_edit_get_preferred_height (GtkWidget *widget, gint *minimal_width, gint *natural_width) { gint x, y, w, h; gnc_item_edit_get_pixel_coords (GNC_ITEM_EDIT (widget), &x, &y, &w, &h); *minimal_width = *natural_width = h - 1; }
static gboolean key_press_popup_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GncItemEdit *item_edit = GNC_ITEM_EDIT (data); g_signal_stop_emission_by_name (widget, "key_press_event"); gtk_widget_event (GTK_WIDGET(item_edit->sheet), (GdkEvent *) event); return TRUE; }
gboolean gnucash_register_has_selection (GnucashRegister *reg) { GnucashSheet *sheet; GncItemEdit *item_edit; g_return_val_if_fail((reg != NULL), FALSE); g_return_val_if_fail(GNUCASH_IS_REGISTER(reg), FALSE); sheet = GNUCASH_SHEET(reg->sheet); item_edit = GNC_ITEM_EDIT(sheet->item_editor); return gnc_item_edit_get_has_selection(item_edit); }
void gnucash_register_paste_clipboard (GnucashRegister *reg) { GnucashSheet *sheet; GncItemEdit *item_edit; g_return_if_fail(reg != NULL); g_return_if_fail(GNUCASH_IS_REGISTER(reg)); sheet = GNUCASH_SHEET(reg->sheet); item_edit = GNC_ITEM_EDIT(sheet->item_editor); gnc_item_edit_paste_clipboard (item_edit); }
static void gnc_header_resize_column (GncHeader *header, gint col, gint width) { GnucashSheet *sheet = header->sheet; gnucash_sheet_set_col_width (sheet, col, width); gnucash_cursor_configure (GNUCASH_CURSOR(sheet->cursor)); gnc_item_edit_configure (GNC_ITEM_EDIT(sheet->item_editor)); gnc_header_reconfigure (header); gnucash_sheet_set_scroll_region (sheet); gnucash_sheet_update_adjustments (sheet); gnc_header_request_redraw (header); gnucash_sheet_redraw_all (sheet); }
static void gnc_item_edit_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec) { GncItemEdit *item_edit = GNC_ITEM_EDIT (object); switch (param_id) { case PROP_SHEET: item_edit->sheet = GNUCASH_SHEET (g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } }
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); }
static gboolean draw_background_cb (GtkWidget *widget, cairo_t *cr, gpointer user_data) { GtkStyleContext *stylectxt = gtk_widget_get_style_context (widget); GncItemEdit *item_edit = GNC_ITEM_EDIT (user_data); gint width = gtk_widget_get_allocated_width (widget); gint height = gtk_widget_get_allocated_height (widget); guint32 color_type; gtk_style_context_save (stylectxt); // Get the background and foreground color types and apply the css class color_type = gnc_table_get_bg_color (item_edit->sheet->table, item_edit->virt_loc, NULL); gnucash_get_style_classes (item_edit->sheet, stylectxt, color_type); color_type = gnc_table_get_fg_color (item_edit->sheet->table, item_edit->virt_loc); gnucash_get_style_classes (item_edit->sheet, stylectxt, color_type); gtk_render_background (stylectxt, cr, 0, 1, width, height - 2); gtk_style_context_restore (stylectxt); return FALSE; }
static gboolean draw_arrow_cb (GtkWidget *widget, cairo_t *cr, gpointer data) { GncItemEdit *item_edit = GNC_ITEM_EDIT (data); GtkStyleContext *context = gtk_widget_get_style_context (widget); gint width = gtk_widget_get_allocated_width (widget); gint height = gtk_widget_get_allocated_height (widget); gint size; gtk_render_background (context, cr, 0, 0, width, height); gtk_style_context_add_class (context, GTK_STYLE_CLASS_ARROW); size = MIN(width / 2, height / 2); if (item_edit->popup_toggle.arrow_down == 0) gtk_render_arrow (context, cr, 0, (width - size)/2, (height - size)/2, size); else gtk_render_arrow (context, cr, G_PI, (width - size)/2, (height - size)/2, size); return FALSE; }