Example #1
0
static PyObject *Revision_get_objects(
	Revision *self, PyObject *args, PyObject *kwds)
{
	xorn_object_t *objects;
	size_t count;
	PyObject *list;
	size_t i;

	if (xorn_get_objects(self->rev, &objects, &count) == -1)
		return PyErr_NoMemory();

	list = PyList_New(count);
	if (list == NULL)
		return NULL;

	for (i = 0; i < count; i++) {
		PyObject *ob_item = build_object(objects[i]);
		if (ob_item == NULL) {
			Py_DECREF(list);
			free(objects);
			return NULL;
		}
		PyList_SET_ITEM(list, i, ob_item);
	}

	free(objects);
	return list;
}
Example #2
0
int main(void)
{
	xorn_revision_t rev0, rev1, rev2, rev3;
	xorn_object_t ob0, ob1a, ob1b;

	xorn_selection_t sel0, sel1;
	xorn_revision_t rev4;

	xorn_object_t *objects;
	size_t count;

	setup(&rev0, &rev1, &rev2, &rev3, &ob0, &ob1a, &ob1b);

	rev4 = xorn_new_revision(rev2);
	assert(rev4 != NULL);

	sel0 = xorn_select_all(rev3);
	assert(sel0 != NULL);

	sel1 = xorn_copy_objects(rev4, rev2, sel0, NULL);
	assert(sel1 != NULL);

	xorn_finalize_revision(rev4);

	assert(xorn_object_is_selected(rev4, sel0, ob0));
	assert(!xorn_object_is_selected(rev4, sel0, ob1a));
	assert(xorn_object_is_selected(rev4, sel0, ob1b));

	assert(!xorn_object_is_selected(rev4, sel1, ob0));
	assert(!xorn_object_is_selected(rev4, sel1, ob1a));
	assert(!xorn_object_is_selected(rev4, sel1, ob1b));

	assert(xorn_get_objects(rev4, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 5);

	assert(objects[0] == ob0);
	assert(objects[1] == ob1a);
	assert(objects[2] == ob1b);

	assert(!xorn_object_is_selected(rev4, sel0, objects[3]));
	assert(!xorn_object_is_selected(rev4, sel0, objects[4]));

	assert(xorn_object_is_selected(rev4, sel1, objects[3]));
	assert(xorn_object_is_selected(rev4, sel1, objects[4]));

	free(objects);

	xorn_free_selection(sel1);
	xorn_free_selection(sel0);

	xorn_free_revision(rev4);
	xorn_free_revision(rev3);
	xorn_free_revision(rev2);
	xorn_free_revision(rev1);
	xorn_free_revision(rev0);
	return 0;
}
Example #3
0
int main(void)
{
	xorn_revision_t rev0, rev1, rev2, rev3;
	xorn_object_t ob0, ob1a, ob1b;

	xorn_object_t *objects;
	size_t count;

	setup(&rev0, &rev1, &rev2, &rev3, &ob0, &ob1a, &ob1b);

	assert(xorn_get_objects(rev0, &objects, &count) == 0);
	assert(count == 0);
	free(objects);

	assert(xorn_get_objects(rev1, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 1);
	assert(objects[0] == ob0);
	free(objects);

	assert(xorn_get_objects(rev2, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 3);
	assert(objects[0] == ob0);
	assert(objects[1] == ob1a);
	assert(objects[2] == ob1b);
	free(objects);

	assert(xorn_get_objects(rev3, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 2);
	assert(objects[0] == ob0);
	assert(objects[1] == ob1b);
	free(objects);

	xorn_free_revision(rev3);
	xorn_free_revision(rev2);
	xorn_free_revision(rev1);
	xorn_free_revision(rev0);
	return 0;
}
Example #4
0
static void check_attached(xorn_revision_t rev,
			   xorn_object_t ob0, xorn_object_t ob1)
{
	xorn_object_t *objects;
	size_t count;

	assert(xorn_get_objects(rev, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 2);
	assert(objects[0] == ob0);
	assert(objects[1] == ob1);
	free(objects);

	assert(xorn_relocate_object(rev, ob0, NULL, NULL) == 0);

	assert(xorn_get_objects(rev, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 2);
	assert(objects[0] == ob0);
	assert(objects[1] == ob1);
	free(objects);
}
Example #5
0
static void assert_this_net(xorn_revision_t rev, xorn_object_t ob, int color)
{
	xorn_object_t *objects;
	size_t count;

	assert(xorn_get_objects(rev, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 1);
	assert(objects[0] == ob);
	assert(xorn_get_object_type(rev, ob) == xornsch_obtype_net);
	assert(xornsch_get_net_data(rev, ob)->color == color);
	free(objects);
}
Example #6
0
static void check_delete_0(xorn_revision_t rev, xorn_object_t del)
{
	xorn_revision_t r;
	xorn_object_t *objects;
	size_t count;

	assert(r = xorn_new_revision(rev));
	xorn_delete_object(r, del);

	assert(xorn_get_objects(r, &objects, &count) == 0);
	assert(count == 0);
	free(objects);

	xorn_free_revision(r);
}
Example #7
0
static void check(xorn_revision_t rev, xorn_object_t ob,
		  xorn_object_t attach_to, xorn_object_t insert_before,
		  int result,
		  xorn_object_t ob0, xorn_object_t ob1, xorn_object_t ob2)
{
	xorn_object_t *objects;
	size_t count;

	assert(xorn_relocate_object(
		       rev, ob, attach_to, insert_before) == result);

	assert(xorn_get_objects(rev, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 3);
	assert(objects[0] == ob0);
	assert(objects[1] == ob1);
	assert(objects[2] == ob2);
	free(objects);
}
Example #8
0
static void check_delete_2(xorn_revision_t rev, xorn_object_t del,
			   xorn_object_t ob0, xorn_object_t ob1)
{
	xorn_revision_t r;
	xorn_object_t *objects;
	size_t count;

	assert(r = xorn_new_revision(rev));
	xorn_delete_object(r, del);

	assert(xorn_get_objects(r, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 2);
	assert(objects[0] == ob0);
	assert(objects[1] == ob1);
	free(objects);

	xorn_free_revision(r);
}
Example #9
0
static void relocate_and_assert_2(
	xorn_revision_t rev,
	xorn_object_t ob, xorn_object_t insert_before,
	xorn_error_t expected_result,
	xorn_object_t ob0, xorn_object_t ob1)
{
	xorn_error_t err;
	xorn_object_t *objects;
	size_t count;

	err = E_OK;
	assert(xorn_relocate_object(rev, ob, NULL, insert_before, &err)
		   == (expected_result == E_OK ? 0 : -1));
	assert(err == expected_result);

	assert(xorn_get_objects(rev, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 2);
	assert(objects[0] == ob0);
	assert(objects[1] == ob1);
	free(objects);
}
Example #10
0
int main(void)
{
	xorn_revision_t rev;
	rev = xorn_new_revision(NULL);

/** [discrete] */
xorn_object_t *objects;
size_t count;
unsigned int i;

xorn_get_objects(rev, &objects, &count);

for (i = 0; i < count; i++) {
    xorn_obtype_t type = xorn_get_object_type(rev, objects[i]);

    if (type == xornsch_obtype_circle &&
        xornsch_get_circle_data(rev, objects[i])->radius == 0.)
        xorn_delete_object(rev, objects[i], NULL);

    if (type == xornsch_obtype_arc &&
        xornsch_get_arc_data(rev, objects[i])->radius == 0.)
        xorn_delete_object(rev, objects[i], NULL);
}

free(objects);
/** [discrete] */

/** [integrated] */
xorn_selection_t sel = xornsch_select_by_radius(rev, 0.);
xorn_delete_selected_objects(rev, sel, NULL);
xorn_free_selection(sel);
/** [integrated] */

	xorn_free_revision(rev);
	return 0;
}
Example #11
0
int main(void)
{
	xorn_revision_t rev0, rev1, rev2, rev3;
	xorn_object_t ob0, ob1a, ob1b;

	xorn_object_t *objects;
	size_t count;

	xorn_revision_t rev4;

	setup(&rev0, &rev1, &rev2, &rev3, &ob0, &ob1a, &ob1b);

	rev4 = xorn_new_revision(rev2);

	assert(xorn_get_objects(rev4, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 3);
	assert(objects[0] == ob0);
	assert(objects[1] == ob1a);
	assert(objects[2] == ob1b);
	free(objects);

	relocate_and_assert_3(rev4, ob0,  ob0,  E_OK,      ob0, ob1a, ob1b);
	relocate_and_assert_3(rev4, ob0,  ob1a, E_OK,      ob0, ob1a, ob1b);
	relocate_and_assert_3(rev4, ob0,  ob1b, E_OK,      ob1a, ob0, ob1b);
	relocate_and_assert_3(rev4, ob0,  NULL, E_OK,      ob1a, ob1b, ob0);
	relocate_and_assert_3(rev4, ob1a, ob0,  E_OK,      ob1b, ob1a, ob0);
	relocate_and_assert_3(rev4, ob1a, ob1a, E_OK,      ob1b, ob1a, ob0);
	relocate_and_assert_3(rev4, ob1a, ob1b, E_OK,      ob1a, ob1b, ob0);
	relocate_and_assert_3(rev4, ob1a, NULL, E_OK,      ob1b, ob0, ob1a);
	relocate_and_assert_3(rev4, ob1b, ob0,  E_OK,      ob1b, ob0, ob1a);
	relocate_and_assert_3(rev4, ob1b, ob1a, E_OK,      ob0, ob1b, ob1a);
	relocate_and_assert_3(rev4, ob1b, ob1b, E_OK,      ob0, ob1b, ob1a);
	relocate_and_assert_3(rev4, ob1b, NULL, E_OK,      ob0, ob1a, ob1b);
	relocate_and_assert_3(rev4, NULL, ob0,  E_NOEXIST, ob0, ob1a, ob1b);
	relocate_and_assert_3(rev4, NULL, ob1a, E_NOEXIST, ob0, ob1a, ob1b);
	relocate_and_assert_3(rev4, NULL, ob1b, E_NOEXIST, ob0, ob1a, ob1b);
	relocate_and_assert_3(rev4, NULL, NULL, E_NOEXIST, ob0, ob1a, ob1b);

	relocate_and_assert_3(rev4, ob0,  ob0,  E_OK,      ob0, ob1a, ob1b);
	relocate_and_assert_3(rev4, ob1a, ob1a, E_OK,      ob0, ob1a, ob1b);
	relocate_and_assert_3(rev4, ob1b, ob1b, E_OK,      ob0, ob1a, ob1b);

	assert(xorn_delete_object(rev4, ob0, NULL) == 0);

	assert(xorn_get_objects(rev4, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 2);
	assert(objects[0] == ob1a);
	assert(objects[1] == ob1b);
	free(objects);

	relocate_and_assert_2(rev4, ob0,  ob0,  E_NOEXIST, ob1a, ob1b);
	relocate_and_assert_2(rev4, ob0,  ob1a, E_NOEXIST, ob1a, ob1b);
	relocate_and_assert_2(rev4, ob0,  ob1b, E_NOEXIST, ob1a, ob1b);
	relocate_and_assert_2(rev4, ob0,  NULL, E_NOEXIST, ob1a, ob1b);
	relocate_and_assert_2(rev4, ob1a, ob0,  E_NOSUCC,  ob1a, ob1b);
	relocate_and_assert_2(rev4, ob1a, ob1a, E_OK,      ob1a, ob1b);
	relocate_and_assert_2(rev4, ob1a, ob1b, E_OK,      ob1a, ob1b);
	relocate_and_assert_2(rev4, ob1a, NULL, E_OK,      ob1b, ob1a);
	relocate_and_assert_2(rev4, ob1b, ob0,  E_NOSUCC,  ob1b, ob1a);
	relocate_and_assert_2(rev4, ob1b, ob1a, E_OK,      ob1b, ob1a);
	relocate_and_assert_2(rev4, ob1b, ob1b, E_OK,      ob1b, ob1a);
	relocate_and_assert_2(rev4, ob1b, NULL, E_OK,      ob1a, ob1b);
	relocate_and_assert_2(rev4, NULL, ob0,  E_NOEXIST, ob1a, ob1b);
	relocate_and_assert_2(rev4, NULL, ob1a, E_NOEXIST, ob1a, ob1b);
	relocate_and_assert_2(rev4, NULL, ob1b, E_NOEXIST, ob1a, ob1b);
	relocate_and_assert_2(rev4, NULL, NULL, E_NOEXIST, ob1a, ob1b);

	xorn_finalize_revision(rev4);

	relocate_and_assert_2(rev4, ob1a, ob1a, E_NOTRANS, ob1a, ob1b);
	relocate_and_assert_2(rev4, ob1a, ob1b, E_NOTRANS, ob1a, ob1b);
	relocate_and_assert_2(rev4, ob1a, NULL, E_NOTRANS, ob1a, ob1b);
	relocate_and_assert_2(rev4, ob1b, ob1a, E_NOTRANS, ob1a, ob1b);
	relocate_and_assert_2(rev4, ob1b, ob1b, E_NOTRANS, ob1a, ob1b);
	relocate_and_assert_2(rev4, ob1b, NULL, E_NOTRANS, ob1a, ob1b);

	xorn_free_revision(rev4);
	xorn_free_revision(rev3);
	xorn_free_revision(rev2);
	xorn_free_revision(rev1);
	xorn_free_revision(rev0);
	return 0;
}
Example #12
0
int main(void)
{
	xorn_revision_t rev;
	rev = xorn_new_revision(NULL);

	{
/** [add object] */
struct xornsch_line line_data;
memset(&line_data, 0, sizeof line_data);
line_data.pos.x = 0;
line_data.pos.y = 0;
line_data.size.x = 100;
line_data.size.y = 100;
line_data.line.width = 1;

xorn_object_t ob;
ob = xorn_add_object(rev, xornsch_obtype_line, &line_data);
if (ob == NULL)
    /* handle error */;
/** [add object] */

/** [get object data] */
const struct xornsch_line *data;

data = xorn_get_object_data(rev, ob, xornsch_obtype_line);

if (data == NULL)
    /* ob doesn't exist or isn't a line */;
/** [get object data] */
	}

	{
	struct xornsch_net net_data;
	xorn_object_t ob;

	memset(&net_data, 0, sizeof net_data);
	ob = xornsch_add_net(rev, &net_data);

/** [set object data] */
struct xornsch_line line_data;
memset(&line_data, 0, sizeof line_data);
line_data.pos.x = 0;
line_data.pos.y = 0;
line_data.size.x = 100;
line_data.size.y = 100;
line_data.line.width = 1;

if (xorn_set_object_data(rev, ob, xornsch_obtype_line, &line_data) == -1)
    /* handle error */;
/** [set object data] */
	}

	{
/** [get objects] */
xorn_object_t *objects;
size_t count;
unsigned int i;

if (xorn_get_objects(rev, &objects, &count) == -1)
    /* handle error */;

for (i = 0; i < count; i++)
    /* do something with objects[i] */;

free(objects);
/** [get objects] */
	}

	{
	struct xornsch_component component_data;
	xorn_object_t component;

	memset(&component_data, 0, sizeof component_data);
	component = xornsch_add_component(rev, &component_data);

/** [add attribute] */
struct xornsch_text text_data;
memset(&text_data, 0, sizeof text_data);
text_data.text.s = "refdes=R1";
text_data.text.len = strlen(text_data.text.s);

xorn_object_t ob;
ob = xornsch_add_text(rev, &text_data);
if (ob == NULL)
    /* handle error */;

if (xorn_relocate_object(rev, ob, component, NULL) == -1)
    /* handle error */;
/** [add attribute] */
	}

	xorn_free_revision(rev);
	return 0;
}