static gboolean gnc_plugin_page_invoice_focus (InvoiceWindow *iw) { GtkWidget *regWidget = gnc_invoice_get_register(iw); GtkWidget *notes = gnc_invoice_get_notes(iw); GnucashSheet *sheet; if (!GNUCASH_IS_REGISTER(regWidget)) return FALSE; sheet = gnucash_register_get_sheet (GNUCASH_REGISTER(regWidget)); // Test for the sheet being read only if (!gnucash_sheet_is_read_only (sheet)) { if (!gtk_widget_is_focus (GTK_WIDGET(sheet))) gtk_widget_grab_focus (GTK_WIDGET(sheet)); } else // set focus to the notes field { if (!gtk_widget_is_focus (GTK_WIDGET(notes))) gtk_widget_grab_focus (GTK_WIDGET(notes)); } return FALSE; }
void gnucash_register_goto_next_virt_row (GnucashRegister *reg) { GnucashSheet *sheet; VirtualLocation virt_loc; int start_virt_row; g_return_if_fail (reg != NULL); g_return_if_fail (GNUCASH_IS_REGISTER(reg)); sheet = GNUCASH_SHEET(reg->sheet); gnucash_cursor_get_virt (GNUCASH_CURSOR(sheet->cursor), &virt_loc); /* Move down one physical row at a time until we * reach the next visible virtual cell. */ start_virt_row = virt_loc.vcell_loc.virt_row; do { if (!gnc_table_move_vertical_position (sheet->table, &virt_loc, 1)) return; } while (start_virt_row == virt_loc.vcell_loc.virt_row); if (virt_loc.vcell_loc.virt_row >= sheet->num_virt_rows) return; virt_loc.phys_row_offset = 0; virt_loc.phys_col_offset = 0; gnucash_sheet_goto_virt_loc (sheet, virt_loc); }
GnucashSheet *gnucash_register_get_sheet (GnucashRegister *reg) { g_return_val_if_fail (reg != NULL, NULL); g_return_val_if_fail (GNUCASH_IS_REGISTER(reg), NULL); return GNUCASH_SHEET(reg->sheet); }
static void gnucash_register_update_hadjustment (GtkAdjustment *adj, GnucashRegister *reg) { g_return_if_fail (reg != NULL); g_return_if_fail (GNUCASH_IS_REGISTER(reg)); if (gtk_adjustment_get_upper (adj) - gtk_adjustment_get_lower (adj) > gtk_adjustment_get_page_size (adj)) { if (!reg->hscrollbar_visible) { gtk_widget_show(reg->hscrollbar); reg->hscrollbar_visible = TRUE; } } else { if (reg->hscrollbar_visible) { gtk_widget_hide(reg->hscrollbar); reg->hscrollbar_visible = FALSE; // When sheet first loaded and the scrollbar is hidden, the space left // is not always automaticly taken up by the sheet so queue a resize // when all is idle g_idle_add ((GSourceFunc) gnucash_register_sheet_resize, reg); } } }
void gnucash_register_attach_popup (GnucashRegister *reg, GtkWidget *popup, gpointer data) { g_return_if_fail (GNUCASH_IS_REGISTER(reg)); g_return_if_fail (reg->sheet != NULL); if (popup) g_return_if_fail (GTK_IS_WIDGET(popup)); gnucash_sheet_set_popup (GNUCASH_SHEET (reg->sheet), popup, data); }
void gnucash_register_refresh_from_prefs (GnucashRegister *reg) { GnucashSheet *sheet; g_return_if_fail(reg != NULL); g_return_if_fail(GNUCASH_IS_REGISTER(reg)); sheet = GNUCASH_SHEET(reg->sheet); gnucash_sheet_refresh_from_prefs(sheet); gnc_header_request_redraw (GNC_HEADER(sheet->header_item)); }
void gnucash_register_goto_virt_loc (GnucashRegister *reg, VirtualLocation virt_loc) { GnucashSheet *sheet; g_return_if_fail(reg != NULL); g_return_if_fail(GNUCASH_IS_REGISTER(reg)); sheet = GNUCASH_SHEET(reg->sheet); gnucash_sheet_goto_virt_loc(sheet, virt_loc); }
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); }
void gnucash_register_goto_virt_cell (GnucashRegister *reg, VirtualCellLocation vcell_loc) { GnucashSheet *sheet; VirtualLocation virt_loc; g_return_if_fail(reg != NULL); g_return_if_fail(GNUCASH_IS_REGISTER(reg)); sheet = GNUCASH_SHEET(reg->sheet); virt_loc.vcell_loc = vcell_loc; virt_loc.phys_row_offset = 0; virt_loc.phys_col_offset = 0; gnucash_sheet_goto_virt_loc(sheet, virt_loc); }
void gnucash_register_goto_next_matching_row (GnucashRegister *reg, VirtualLocationMatchFunc match, gpointer user_data) { GnucashSheet *sheet; SheetBlockStyle *style; VirtualLocation virt_loc; g_return_if_fail (reg != NULL); g_return_if_fail (GNUCASH_IS_REGISTER(reg)); g_return_if_fail (match != NULL); sheet = GNUCASH_SHEET (reg->sheet); gnucash_cursor_get_virt (GNUCASH_CURSOR(sheet->cursor), &virt_loc); do { if (!gnc_table_move_vertical_position (sheet->table, &virt_loc, 1)) return; if (virt_loc.vcell_loc.virt_row >= sheet->num_virt_rows) return; style = gnucash_sheet_get_style (sheet, virt_loc.vcell_loc); if (!style || !style->cursor) return; } while (!match (virt_loc, user_data)); virt_loc.phys_row_offset = 0; virt_loc.phys_col_offset = 0; gnucash_sheet_goto_virt_loc (sheet, virt_loc); }
void gnc_table_init_gui (GtkWidget *widget, gchar * state_key) { GNCHeaderWidths widths; GnucashSheet *sheet; GnucashRegister *greg; Table *table; GList *node; gchar *key; guint value; // Stuff for per-register settings load. g_return_if_fail (widget != NULL); g_return_if_fail (GNUCASH_IS_REGISTER (widget)); PINFO("state_key=%s",state_key); ENTER("widget=%p, data=%p", widget, ""); greg = GNUCASH_REGISTER (widget); sheet = GNUCASH_SHEET (greg->sheet); table = sheet->table; table->gui_handlers.redraw_help = table_ui_redraw_cb; table->gui_handlers.destroy = table_destroy_cb; table->ui_data = sheet; g_object_ref (sheet); /* config the cell-block styles */ widths = gnc_header_widths_new (); if (gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL, GNC_PREF_SAVE_GEOMETRY)) { node = gnc_table_layout_get_cells (table->layout); for (; node; node = node->next) { BasicCell *cell = node->data; if (cell->expandable) continue; /* Remember whether the column is visible */ key = g_strdup_printf("%s_width", cell->cell_name); // FIXME the actual state loading is currently not implemented value = 0; if (value != 0) gnc_header_widths_set_width (widths, cell->cell_name, value); g_free(key); } } gnucash_sheet_create_styles (sheet); gnucash_sheet_set_header_widths (sheet, widths); gnucash_sheet_compile_styles (sheet); gnucash_sheet_table_load (sheet, TRUE); gnucash_sheet_cursor_set_from_table (sheet, TRUE); gnucash_sheet_redraw_all (sheet); gnc_header_widths_destroy (widths); LEAVE(" "); }