Exemplo n.º 1
0
static void assert_attached_objects_2(
	xorn_revision_t rev, xorn_object_t attached_to,
	xorn_object_t ob0, xorn_object_t ob1)
{
	xorn_object_t *objects;
	size_t count;
	xorn_selection_t sel;

	assert(xorn_get_objects_attached_to(
		       rev, attached_to, NULL, &count) == 0);
	assert(count == 2);

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

	assert(sel = xorn_select_attached_to(rev, attached_to));
	assert(xorn_get_selected_objects(rev, sel, &objects, &count) == 0);
	assert(objects != NULL);
	assert(count == 2);
	assert((objects[0] == ob0 && objects[1] == ob1) ||
	       (objects[0] == ob1 && objects[1] == ob0));
	free(objects);
	xorn_free_selection(sel);
}
Exemplo n.º 2
0
static PyObject *select_attached_to(
	PyObject *self, PyObject *args, PyObject *kwds)
{
	PyObject *rev_arg = NULL, *ob_arg = NULL;
	static char *kwlist[] = { "rev", "ob", NULL };

	if (!PyArg_ParseTupleAndKeywords(
		    args, kwds, "O!O:select_attached_to", kwlist,
		    &RevisionType, &rev_arg, &ob_arg))
		return NULL;

	if (ob_arg != Py_None &&
	    !PyObject_TypeCheck(ob_arg, &ObjectType)) {
		char buf[BUFSIZ];
		snprintf(buf, BUFSIZ, "select_attached_to() argument 2 "
				      "must be %.50s or None, not %.50s",
			 ObjectType.tp_name,
			 ob_arg->ob_type->tp_name);
		PyErr_SetString(PyExc_TypeError, buf);
		return NULL;
	}

	if (ob_arg != Py_None &&
	    !xorn_object_exists_in_revision(((Revision *)rev_arg)->rev,
					    ((Object *)ob_arg)->ob)) {
		PyErr_SetString(PyExc_KeyError, "Object does not exist");
		return NULL;
	}

	xorn_selection_t sel = xorn_select_attached_to(
		((Revision *)rev_arg)->rev,
		ob_arg == Py_None ? NULL : ((Object *)ob_arg)->ob);
	return sel ? build_selection(sel) : PyErr_NoMemory();
}
Exemplo n.º 3
0
static void assert_attached_objects_f(
	xorn_revision_t rev, xorn_object_t attached_to)
{
	xorn_object_t *objects;
	size_t count;

	assert(xorn_get_objects_attached_to(
		       rev, attached_to, &objects, &count) == -1);

	assert(xorn_select_attached_to(rev, attached_to) == NULL);
}
Exemplo n.º 4
0
static void assert_attached_objects_0(
	xorn_revision_t rev, xorn_object_t attached_to)
{
	xorn_object_t *objects;
	size_t count;
	xorn_selection_t sel;

	assert(xorn_get_objects_attached_to(
		       rev, attached_to, NULL, &count) == 0);
	assert(count == 0);

	count = -1;
	assert(xorn_get_objects_attached_to(
		       rev, attached_to, &objects, &count) == 0);
	assert(count == 0);
	free(objects);

	assert(sel = xorn_select_attached_to(rev, attached_to));
	assert(xorn_get_selected_objects(rev, sel, &objects, &count) == 0);
	assert(count == 0);
	free(objects);
	xorn_free_selection(sel);
}
Exemplo n.º 5
0
int main(void)
{
	xorn_revision_t src, dest;
	struct xornsch_net net_data;
	struct xornsch_text text_data;
	xorn_object_t net0, net1, text0, text1, copy;
	xorn_selection_t sel, copies;

	assert(src = xorn_new_revision(NULL));

	memset(&net_data, 0, sizeof net_data);
	net_data.color = 1;
	assert(net0 = xornsch_add_net(src, &net_data, NULL));
	net_data.color = 2;
	assert(net1 = xornsch_add_net(src, &net_data, NULL));

	memset(&text_data, 0, sizeof text_data);
	text_data.color = 3;
	assert(text0 = xornsch_add_text(src, &text_data, NULL));
	text_data.color = 4;
	assert(text1 = xornsch_add_text(src, &text_data, NULL));

	assert(xorn_relocate_object(src, text1, net1, NULL, NULL) == 0);

	xorn_finalize_revision(src);

	/* text1 is attached to net1, text0 is not attached */

	assert(dest = xorn_new_revision(NULL));
	assert(copy = xorn_copy_object(dest, src, net0, NULL));
	assert_this_net(dest, copy, 1);
	xorn_free_revision(dest);

	assert(dest = xorn_new_revision(NULL));
	assert(copy = xorn_copy_object(dest, src, net1, NULL));
	assert_this_net_with_text(dest, copy, 2, 4);
	xorn_free_revision(dest);

	assert(dest = xorn_new_revision(NULL));
	assert(sel = xorn_select_object(net0));
	assert(copies = xorn_copy_objects(dest, src, sel, NULL));
	assert_this_net(dest, get_only_selected_object(dest, copies), 1);
	xorn_free_selection(copies);
	xorn_free_selection(sel);
	xorn_free_revision(dest);

	assert(dest = xorn_new_revision(NULL));
	assert(sel = xorn_select_object(net1));
	assert(copies = xorn_copy_objects(dest, src, sel, NULL));
	assert_this_net_with_text(
		dest, get_only_selected_object(dest, copies), 2, 4);
	xorn_free_selection(copies);
	xorn_free_selection(sel);
	xorn_free_revision(dest);

	assert(dest = xorn_new_revision(NULL));
	assert(sel = xorn_select_attached_to(src, NULL));
	assert(copies = xorn_copy_objects(dest, src, sel, NULL));
	assert_four(dest, copies, 1, 2, 3, 4);
	xorn_free_selection(copies);
	xorn_free_selection(sel);
	xorn_free_revision(dest);

	xorn_free_revision(src);
	return 0;
}