示例#1
0
static gint
etgl_get_focus_column (ETableGroup *etg)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	return e_table_item_get_focused_column (etgl->item);
}
示例#2
0
static EPrintable *
etgl_get_printable (ETableGroup *etg)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	return e_table_item_get_printable (etgl->item);
}
示例#3
0
static gint
etgl_row_count (ETableGroup *etg)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	return e_table_model_row_count (E_TABLE_MODEL (etgl->ets));
}
示例#4
0
static void
etgl_get_property (GObject *object,
                   guint property_id,
                   GValue *value,
                   GParamSpec *pspec)
{
	ETableGroup *etg = E_TABLE_GROUP (object);
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (object);

	switch (property_id) {
	case PROP_FROZEN:
		g_value_set_boolean (value, etg->frozen);
		break;
	case PROP_HEIGHT:
		g_value_set_double (value, etgl->height);
		break;
	case PROP_WIDTH:
		g_value_set_double (value, etgl->width);
		break;
	case PROP_MINIMUM_WIDTH:
		g_value_set_double (value, etgl->minimum_width);
		break;
	case PROP_UNIFORM_ROW_HEIGHT:
		g_value_set_boolean (value, etgl->uniform_row_height);
		break;
	case PROP_IS_EDITING:
		g_value_set_boolean (value, e_table_group_leaf_is_editing (etgl));
		break;
	default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}
示例#5
0
static void
etgl_realize (GnomeCanvasItem *item)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (item);

	if (GNOME_CANVAS_ITEM_CLASS (e_table_group_leaf_parent_class)->realize)
		GNOME_CANVAS_ITEM_CLASS (e_table_group_leaf_parent_class)->realize (item);

	etgl->item = E_TABLE_ITEM (gnome_canvas_item_new (
		GNOME_CANVAS_GROUP (etgl),
		e_table_item_get_type (),
		"ETableHeader", E_TABLE_GROUP (etgl)->header,
		"ETableModel", etgl->ets,
		"alternating_row_colors", etgl->alternating_row_colors,
		"horizontal_draw_grid", etgl->horizontal_draw_grid,
		"vertical_draw_grid", etgl->vertical_draw_grid,
		"drawfocus", etgl->draw_focus,
		"cursor_mode", etgl->cursor_mode,
		"minimum_width", etgl->minimum_width,
		"length_threshold", etgl->length_threshold,
		"selection_model", etgl->selection_model,
		"uniform_row_height", etgl->uniform_row_height,
		NULL));

	etgl->etgl_cursor_change_id = g_signal_connect (
		etgl->item, "cursor_change",
		G_CALLBACK (etgl_cursor_change), etgl);

	etgl->etgl_cursor_activated_id = g_signal_connect (
		etgl->item, "cursor_activated",
		G_CALLBACK (etgl_cursor_activated), etgl);

	etgl->etgl_double_click_id = g_signal_connect (
		etgl->item, "double_click",
		G_CALLBACK (etgl_double_click), etgl);

	etgl->etgl_right_click_id = g_signal_connect (
		etgl->item, "right_click",
		G_CALLBACK (etgl_right_click), etgl);

	etgl->etgl_click_id = g_signal_connect (
		etgl->item, "click",
		G_CALLBACK (etgl_click), etgl);

	etgl->etgl_key_press_id = g_signal_connect (
		etgl->item, "key_press",
		G_CALLBACK (etgl_key_press), etgl);

	etgl->etgl_start_drag_id = g_signal_connect (
		etgl->item, "start_drag",
		G_CALLBACK (etgl_start_drag), etgl);

	etgl->notify_is_editing_id = e_signal_connect_notify (
		etgl->item, "notify::is-editing",
		G_CALLBACK (etgl_item_is_editing_changed_cb), etgl);

	e_canvas_item_request_reflow (item);
}
示例#6
0
static void
etgl_add_all (ETableGroup *etg)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	if (E_IS_TABLE_SUBSET_VARIABLE (etgl->ets)) {
		e_table_subset_variable_add_all (
			E_TABLE_SUBSET_VARIABLE (etgl->ets));
	}
}
示例#7
0
static void
etgl_compute_location (ETableGroup *etg,
                       gint *x,
                       gint *y,
                       gint *row,
                       gint *col)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	e_table_item_compute_location (etgl->item, x, y, row, col);
}
示例#8
0
static void
etgl_reflow (GnomeCanvasItem *item,
             gint flags)
{
	ETableGroupLeaf *leaf = E_TABLE_GROUP_LEAF (item);

	g_object_get (leaf->item, "height", &leaf->height, NULL);
	g_object_get (leaf->item, "width", &leaf->width, NULL);

	e_canvas_item_request_parent_reflow (item);
}
示例#9
0
static gboolean
etgl_remove (ETableGroup *etg,
             gint row)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	if (E_IS_TABLE_SUBSET_VARIABLE (etgl->ets)) {
		return e_table_subset_variable_remove (
			E_TABLE_SUBSET_VARIABLE (etgl->ets), row);
	}
	return FALSE;
}
示例#10
0
static void
etgl_add_array (ETableGroup *etg,
                const gint *array,
                gint count)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	if (E_IS_TABLE_SUBSET_VARIABLE (etgl->ets)) {
		e_table_subset_variable_add_array (
			E_TABLE_SUBSET_VARIABLE (etgl->ets), array, count);
	}
}
示例#11
0
static void
etgl_get_cell_geometry (ETableGroup *etg,
                        gint *row,
                        gint *col,
                        gint *x,
                        gint *y,
                        gint *width,
                        gint *height)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	e_table_item_get_cell_geometry (etgl->item, row, col, x, y, width, height);
}
示例#12
0
static void
etgl_decrement (ETableGroup *etg,
                gint position,
                gint amount)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	if (E_IS_TABLE_SUBSET_VARIABLE (etgl->ets)) {
		e_table_subset_variable_decrement (
			E_TABLE_SUBSET_VARIABLE (etgl->ets),
			position, amount);
	}
}
示例#13
0
static void
etgl_get_mouse_over (ETableGroup *etg,
                     gint *row,
                     gint *col)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	if (etgl->item && etgl->item->motion_row > -1 && etgl->item->motion_col > -1) {
		if (row)
			*row = etgl->item->motion_row;
		if (col)
			*col = etgl->item->motion_col;
	}
}
示例#14
0
static void
etgl_set_focus (ETableGroup *etg,
                EFocus direction,
                gint view_col)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);

	if (direction == E_FOCUS_END) {
		e_table_item_set_cursor (
			etgl->item, view_col,
			e_table_model_row_count (E_TABLE_MODEL (etgl->ets)) - 1);
	} else {
		e_table_item_set_cursor (etgl->item, view_col, 0);
	}
}
void
e_table_group_apply_to_leafs (ETableGroup *etg, ETableGroupLeafFn fn, void *closure)
{
	if (E_IS_TABLE_GROUP_CONTAINER (etg)){
		ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER (etg);
		GList *list = etgc->children;

		/* Protect from unrefs in the callback functions */
		g_object_ref (etg);

		for (list = etgc->children; list; list = list->next){
			ETableGroupContainerChildNode *child_node = list->data;

			e_table_group_apply_to_leafs (child_node->child, fn, closure);
		}

		g_object_unref (etg);
	} else if (E_IS_TABLE_GROUP_LEAF (etg)){
		(*fn) (E_TABLE_GROUP_LEAF (etg)->item, closure);
	} else {
		g_error ("Unknown ETableGroup found: %s",
			 g_type_name (G_TYPE_FROM_INSTANCE (etg)));
	}
}
示例#16
0
static void
etgl_dispose (GObject *object)
{
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (object);

	if (etgl->ets) {
		g_object_unref (etgl->ets);
		etgl->ets = NULL;
	}

	if (etgl->item) {
		if (etgl->etgl_cursor_change_id != 0)
			g_signal_handler_disconnect (
				etgl->item,
				etgl->etgl_cursor_change_id);
		if (etgl->etgl_cursor_activated_id != 0)
			g_signal_handler_disconnect (
				etgl->item,
				etgl->etgl_cursor_activated_id);
		if (etgl->etgl_double_click_id != 0)
			g_signal_handler_disconnect (
				etgl->item,
				etgl->etgl_double_click_id);
		if (etgl->etgl_right_click_id != 0)
			g_signal_handler_disconnect (
				etgl->item,
				etgl->etgl_right_click_id);
		if (etgl->etgl_click_id != 0)
			g_signal_handler_disconnect (
				etgl->item,
				etgl->etgl_click_id);
		if (etgl->etgl_key_press_id != 0)
			g_signal_handler_disconnect (
				etgl->item,
				etgl->etgl_key_press_id);
		if (etgl->etgl_start_drag_id != 0)
			g_signal_handler_disconnect (
				etgl->item,
				etgl->etgl_start_drag_id);

		e_signal_disconnect_notify_handler (etgl->item, &etgl->notify_is_editing_id);

		etgl->etgl_cursor_change_id = 0;
		etgl->etgl_cursor_activated_id = 0;
		etgl->etgl_double_click_id = 0;
		etgl->etgl_right_click_id = 0;
		etgl->etgl_click_id = 0;
		etgl->etgl_key_press_id = 0;
		etgl->etgl_start_drag_id = 0;

		g_object_run_dispose (G_OBJECT (etgl->item));
		etgl->item = NULL;
	}

	if (etgl->selection_model) {
		g_object_unref (etgl->selection_model);
		etgl->selection_model = NULL;
	}

	/* Chain up to parent's dispose() method. */
	G_OBJECT_CLASS (e_table_group_leaf_parent_class)->dispose (object);
}
示例#17
0
static void
etgl_set_property (GObject *object,
                   guint property_id,
                   const GValue *value,
                   GParamSpec *pspec)
{
	ETableGroup *etg = E_TABLE_GROUP (object);
	ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (object);

	switch (property_id) {
	case PROP_FROZEN:
		etg->frozen = g_value_get_boolean (value);
		break;
	case PROP_MINIMUM_WIDTH:
	case PROP_WIDTH:
		etgl->minimum_width = g_value_get_double (value);
		if (etgl->item) {
			gnome_canvas_item_set (
				GNOME_CANVAS_ITEM (etgl->item),
				"minimum_width", etgl->minimum_width,
				NULL);
		}
		break;
	case PROP_LENGTH_THRESHOLD:
		etgl->length_threshold = g_value_get_int (value);
		if (etgl->item) {
			gnome_canvas_item_set (
				GNOME_CANVAS_ITEM (etgl->item),
				"length_threshold", etgl->length_threshold,
				NULL);
		}
		break;
	case PROP_SELECTION_MODEL:
		if (etgl->selection_model)
			g_object_unref (etgl->selection_model);
		etgl->selection_model = E_SELECTION_MODEL (g_value_get_object (value));
		if (etgl->selection_model) {
			g_object_ref (etgl->selection_model);
		}
		if (etgl->item) {
			gnome_canvas_item_set (
				GNOME_CANVAS_ITEM (etgl->item),
				"selection_model", etgl->selection_model,
				NULL);
		}
		break;

	case PROP_UNIFORM_ROW_HEIGHT:
		etgl->uniform_row_height = g_value_get_boolean (value);
		if (etgl->item) {
			gnome_canvas_item_set (
				GNOME_CANVAS_ITEM (etgl->item),
				"uniform_row_height", etgl->uniform_row_height,
				NULL);
		}
		break;

	case PROP_TABLE_ALTERNATING_ROW_COLORS:
		etgl->alternating_row_colors = g_value_get_boolean (value);
		if (etgl->item) {
			gnome_canvas_item_set (
				GNOME_CANVAS_ITEM (etgl->item),
				"alternating_row_colors", etgl->alternating_row_colors,
				NULL);
		}
		break;

	case PROP_TABLE_HORIZONTAL_DRAW_GRID:
		etgl->horizontal_draw_grid = g_value_get_boolean (value);
		if (etgl->item) {
			gnome_canvas_item_set (
				GNOME_CANVAS_ITEM (etgl->item),
				"horizontal_draw_grid", etgl->horizontal_draw_grid,
				NULL);
		}
		break;

	case PROP_TABLE_VERTICAL_DRAW_GRID:
		etgl->vertical_draw_grid = g_value_get_boolean (value);
		if (etgl->item) {
			gnome_canvas_item_set (
				GNOME_CANVAS_ITEM (etgl->item),
				"vertical_draw_grid", etgl->vertical_draw_grid,
				NULL);
		}
		break;

	case PROP_TABLE_DRAW_FOCUS:
		etgl->draw_focus = g_value_get_boolean (value);
		if (etgl->item) {
			gnome_canvas_item_set (
				GNOME_CANVAS_ITEM (etgl->item),
				"drawfocus", etgl->draw_focus,
				NULL);
		}
		break;

	case PROP_CURSOR_MODE:
		etgl->cursor_mode = g_value_get_int (value);
		if (etgl->item) {
			gnome_canvas_item_set (
				GNOME_CANVAS_ITEM (etgl->item),
				"cursor_mode", etgl->cursor_mode,
				NULL);
		}
		break;
	default:
		break;
	}
}