mirror of https://github.com/Gnucash/gnucash
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.8 KiB
134 lines
3.8 KiB
/********************************************************************\
|
|
* This program is free software; you can redistribute it and/or *
|
|
* modify it under the terms of the GNU General Public License as *
|
|
* published by the Free Software Foundation; either version 2 of *
|
|
* the License, or (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License*
|
|
* along with this program; if not, contact: *
|
|
* *
|
|
* Free Software Foundation Voice: +1-617-542-5942 *
|
|
* 59 Temple Place - Suite 330 Fax: +1-617-542-2652 *
|
|
* Boston, MA 02111-1307, USA gnu@gnu.org *
|
|
* *
|
|
\********************************************************************/
|
|
|
|
/*
|
|
* FILE:
|
|
* cellblock.c
|
|
*
|
|
* FUNCTION:
|
|
* implements a rectangular array of cells. See the header file for
|
|
* additional documentation.
|
|
*
|
|
* HISTORY:
|
|
* Copyright (c) 1998 Linas Vepstas
|
|
* Copyright (c) 2000 Dave Peticolas
|
|
*/
|
|
|
|
#include "cellblock.h"
|
|
|
|
static void gnc_cellblock_init (CellBlock *cellblock, int rows, int cols);
|
|
|
|
|
|
/* =================================================== */
|
|
|
|
CellBlock *
|
|
gnc_cellblock_new (int rows, int cols)
|
|
{
|
|
CellBlock *cellblock;
|
|
|
|
cellblock = g_new0(CellBlock, 1);
|
|
|
|
gnc_cellblock_init (cellblock, rows, cols);
|
|
|
|
return cellblock;
|
|
}
|
|
|
|
/* =================================================== */
|
|
|
|
static void
|
|
gnc_cellblock_cell_construct (gpointer _cb_cell, gpointer user_data)
|
|
{
|
|
CellBlockCell *cb_cell = _cb_cell;
|
|
|
|
cb_cell->cell = NULL;
|
|
cb_cell->cell_type = -1;
|
|
|
|
cb_cell->label = NULL;
|
|
|
|
cb_cell->sample_text = NULL;
|
|
cb_cell->alignment = CELL_ALIGN_LEFT;
|
|
cb_cell->expandable = FALSE;
|
|
cb_cell->span = FALSE;
|
|
}
|
|
|
|
/* =================================================== */
|
|
|
|
static void
|
|
gnc_cellblock_cell_destroy (gpointer _cb_cell, gpointer user_data)
|
|
{
|
|
CellBlockCell *cb_cell = _cb_cell;
|
|
|
|
if (cb_cell == NULL)
|
|
return;
|
|
|
|
g_free(cb_cell->label);
|
|
cb_cell->label = NULL;
|
|
|
|
g_free(cb_cell->sample_text);
|
|
cb_cell->sample_text = NULL;
|
|
}
|
|
|
|
/* =================================================== */
|
|
|
|
static void
|
|
gnc_cellblock_init (CellBlock *cellblock, int rows, int cols)
|
|
{
|
|
/* init colors */
|
|
cellblock->active_bg_color = 0xffffff; /* white */
|
|
cellblock->passive_bg_color = 0xffffff; /* white */
|
|
cellblock->passive_bg_color2 = 0xffffff; /* white */
|
|
|
|
/* record new size */
|
|
cellblock->num_rows = rows;
|
|
cellblock->num_cols = cols;
|
|
|
|
/* malloc new cell table */
|
|
cellblock->cb_cells = g_table_new (sizeof (CellBlockCell),
|
|
gnc_cellblock_cell_construct,
|
|
gnc_cellblock_cell_destroy, NULL);
|
|
g_table_resize (cellblock->cb_cells, rows, cols);
|
|
}
|
|
|
|
/* =================================================== */
|
|
|
|
void
|
|
gnc_cellblock_destroy (CellBlock *cellblock)
|
|
{
|
|
if (!cellblock) return;
|
|
|
|
g_table_destroy (cellblock->cb_cells);
|
|
cellblock->cb_cells = NULL;
|
|
|
|
g_free (cellblock);
|
|
}
|
|
|
|
/* =================================================== */
|
|
|
|
CellBlockCell *
|
|
gnc_cellblock_get_cell (CellBlock *cellblock, int row, int col)
|
|
{
|
|
if (cellblock == NULL)
|
|
return NULL;
|
|
|
|
return g_table_index (cellblock->cb_cells, row, col);
|
|
}
|
|
|
|
/* --------------- end of file ----------------- */
|