Exemple #1
0
static void
write_xml_textbox (Textbox *textbox, parseXmlContext *ctxt)
{
	xmlNodePtr node_textbox;
	gchar *str;
	Coords pos;

	g_return_if_fail (textbox != NULL);
	if (!IS_TEXTBOX (textbox))
		return;

	// Create a node for the textbox.
	node_textbox = xmlNewChild (ctxt->node_textboxes, ctxt->ns,
		BAD_CAST "textbox", NULL);
	if (!node_textbox) {
		g_warning ("Failed during save of text box.\n");
		return;
	}

	item_data_get_pos (ITEM_DATA (textbox), &pos);

	str = g_strdup_printf ("(%g %g)", pos.x, pos.y);
	xmlNewChild (node_textbox, ctxt->ns, BAD_CAST "position", BAD_CAST str);
	g_free (str);

	str = textbox_get_text (textbox);
	xmlNewChild (node_textbox, ctxt->ns, BAD_CAST "text", BAD_CAST str);
}
Exemple #2
0
// Create a SheetItem from an ItemData object. This is a bit ugly.
// It could be beautified by having a method that creates the item.
// E.g. sheet_item->new_from_data (data);
SheetItem *
sheet_item_factory_create_sheet_item (Sheet *sheet, ItemData *data)
{
	SheetItem *item;

	g_return_val_if_fail (data != NULL, NULL);
	g_return_val_if_fail (IS_ITEM_DATA (data), NULL);
	g_return_val_if_fail (sheet != NULL, NULL);
	g_return_val_if_fail (IS_SHEET (sheet), NULL);

	item = NULL;

	// Pick the right model.
	if (IS_PART (data)) {
		NG_DEBUG ("sheet_item_factory_create_sheet_item part\n\n");
		item = SHEET_ITEM (part_item_new (sheet, PART (data)));
	} 
	else if (IS_WIRE (data)) {
		NG_DEBUG ("sheet_item_factory_create_sheet_item wire\n\n");
		item = SHEET_ITEM (wire_item_new (sheet, WIRE (data)));
	} 
	else if (IS_TEXTBOX (data)) {
		NG_DEBUG ("sheet_item_factory_create_sheet_item text\n\n");
		item = SHEET_ITEM (textbox_item_new (sheet, TEXTBOX (data)));
	} 
	else
		g_warning ("Unknown Item type.");

	return item;
}
Exemple #3
0
char *
textbox_get_font (Textbox *textbox)
{
	g_return_val_if_fail (textbox != NULL, NULL);
	g_return_val_if_fail (IS_TEXTBOX (textbox), NULL);

	return textbox->priv->font;
}
Exemple #4
0
static void textbox_item_paste (Sheet *sheet, ItemData *data)
{
	g_return_if_fail (sheet != NULL);
	g_return_if_fail (IS_SHEET (sheet));
	g_return_if_fail (data != NULL);
	g_return_if_fail (IS_TEXTBOX (data));

	sheet_add_ghost_item (sheet, data);
}
Exemple #5
0
static void
textbox_unregister (ItemData *data)
{
	NodeStore *store;

	g_return_if_fail (IS_TEXTBOX (data));

	store = item_data_get_store (data);
	node_store_remove_textbox (store, TEXTBOX (data));
}
Exemple #6
0
static void
textbox_copy (ItemData *dest, ItemData *src)
{
	Textbox *dest_textbox, *src_textbox;

	g_return_if_fail (dest != NULL);
	g_return_if_fail (IS_TEXTBOX (dest));
	g_return_if_fail (src != NULL);
	g_return_if_fail (IS_TEXTBOX (src));

	if (parent_class->copy != NULL)
		parent_class->copy (dest, src);

	dest_textbox = TEXTBOX (dest);
	src_textbox = TEXTBOX (src);

	dest_textbox->priv->text = src_textbox->priv->text;
	dest_textbox->priv->font = src_textbox->priv->font;
}
Exemple #7
0
static int 
textbox_register (ItemData *data)
{
	NodeStore *store;

	g_return_val_if_fail (IS_TEXTBOX (data), 0);

	store = item_data_get_store (data);
	node_store_add_textbox (store, TEXTBOX (data));
	return 0;
}
Exemple #8
0
void
textbox_set_text (Textbox *textbox, const char *text)
{
	g_return_if_fail (textbox != NULL);
	g_return_if_fail (IS_TEXTBOX (textbox));

	g_free (textbox->priv->text);
	textbox->priv->text = g_strdup (text);

	textbox_update_bbox (textbox);

	g_signal_emit_by_name (G_OBJECT(textbox), "text_changed", text);
}
Exemple #9
0
static void
textbox_flip (ItemData *data, gboolean horizontal, SheetPos *center)
{
	double affine[6];
	ArtPoint src, dst;
	Textbox *textbox;
	TextboxPriv *priv;
	SheetPos b1, b2;
	SheetPos textbox_center, delta;

	g_return_if_fail (data != NULL);
	g_return_if_fail (IS_TEXTBOX (data));

	textbox = TEXTBOX (data);

	if (center) {
		item_data_get_absolute_bbox (ITEM_DATA (textbox), &b1, &b2);
		textbox_center.x = b1.x + (b2.x - b1.x) / 2;
		textbox_center.y = b1.y + (b2.y - b1.y) / 2;
	}

	priv = textbox->priv;

	if (horizontal)
		art_affine_scale (affine, -1, 1);
	else
		art_affine_scale (affine, 1, -1);

	/*
	 * Let the views (canvas items) know about the rotation.
	 */
	g_signal_emit_by_name(G_OBJECT (textbox), "flipped", horizontal);

	if (center) {
		SheetPos textbox_pos;

		item_data_get_pos (ITEM_DATA (textbox), &textbox_pos);

		src.x = textbox_center.x - center->x;
		src.y = textbox_center.y - center->y;
		art_affine_point (&dst, &src, affine);

		delta.x = -src.x + dst.x;
		delta.y = -src.y + dst.y;

		item_data_move (ITEM_DATA (textbox), &delta);
	}
}
Exemple #10
0
void
textbox_set_font (Textbox *textbox, char *font)
{
	g_return_if_fail (textbox != NULL);
	g_return_if_fail (IS_TEXTBOX (textbox));

	g_free (textbox->priv->font);
	if (font == NULL)
		textbox->priv->font = g_strdup (TEXTBOX_DEFAULT_FONT);
	else
		textbox->priv->font = g_strdup (font);

	textbox_update_bbox (textbox);

	g_signal_emit_by_name(G_OBJECT (textbox),
		"font_changed", textbox->priv->font);
}
Exemple #11
0
static ItemData *
textbox_clone (ItemData *src)
{
	Textbox *src_textbox, *new_textbox;
	ItemDataClass *id_class;

	g_return_val_if_fail (src != NULL, NULL);
	g_return_val_if_fail (IS_TEXTBOX (src), NULL);

	id_class = ITEM_DATA_CLASS(G_OBJECT_GET_CLASS(src));
	if (id_class->copy == NULL)
		return NULL;

	src_textbox = TEXTBOX(src);
	new_textbox = TEXTBOX(g_object_new(TYPE_TEXTBOX, NULL));
	id_class->copy (ITEM_DATA (new_textbox), src);

	return ITEM_DATA (new_textbox);
}