Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorStephen Swaney <sswaney@centurytel.net>2004-06-02 10:19:56 +0400
committerStephen Swaney <sswaney@centurytel.net>2004-06-02 10:19:56 +0400
commit474ec217aefd4057429d4cbde4c08768e833cfe5 (patch)
treec0bcb9e21543f3380002ecb4d2774ddc08ce6959 /source
parent931b382d769015940be9b867fb425802c42257a7 (diff)
new Object.select() and Object.isSelected() methods to manipulate the
selection state of Objects. Contributed by Campbell Barton.
Diffstat (limited to 'source')
-rw-r--r--source/blender/python/api2_2x/Object.c80
-rw-r--r--source/blender/python/api2_2x/doc/Object.py20
2 files changed, 95 insertions, 5 deletions
diff --git a/source/blender/python/api2_2x/Object.c b/source/blender/python/api2_2x/Object.c
index 454862f4429..efa419bed0f 100644
--- a/source/blender/python/api2_2x/Object.c
+++ b/source/blender/python/api2_2x/Object.c
@@ -111,6 +111,7 @@ static PyObject *Object_getTracked (BPy_Object *self);
static PyObject *Object_getType (BPy_Object *self);
static PyObject *Object_getBoundBox (BPy_Object *self);
static PyObject *Object_getAction (BPy_Object *self);
+static PyObject *Object_isSelected (BPy_Object *self);
static PyObject *Object_makeDisplayList (BPy_Object *self);
static PyObject *Object_link (BPy_Object *self, PyObject *args);
static PyObject *Object_makeParent (BPy_Object *self, PyObject *args);
@@ -127,6 +128,7 @@ static PyObject *Object_setName (BPy_Object *self, PyObject *args);
static PyObject *Object_setSize (BPy_Object *self, PyObject *args);
static PyObject *Object_setTimeOffset (BPy_Object *self, PyObject *args);
static PyObject *Object_shareFrom (BPy_Object *self, PyObject *args);
+static PyObject *Object_Select (BPy_Object *self, PyObject *args);
/*****************************************************************************/
/* Python BPy_Object methods table: */
@@ -151,6 +153,8 @@ hierarchy (faster)"},
"Returns the object draw type"},
{"getAction", (PyCFunction)Object_getAction, METH_NOARGS,
"Returns the active action for this object"},
+ {"isSelected", (PyCFunction)Object_isSelected, METH_NOARGS,
+ "Return a 1 or 0 depending on whether the object is selected"},
{"getEuler", (PyCFunction)Object_getEuler, METH_NOARGS,
"Returns the object's rotation as Euler rotation vector\n\
(rotX, rotY, rotZ)"},
@@ -224,11 +228,14 @@ triple."},
{"shareFrom", (PyCFunction)Object_shareFrom, METH_VARARGS,
"Link data of self with object specified in the argument. This\n\
works only if self and the object specified are of the same type."},
+ {"select", (PyCFunction)Object_Select, METH_VARARGS,
+ "( 1 or 0 ) - Set the selected state of the object.\n\
+ 1 is selected, 0 not selected "},
{"setIpo", (PyCFunction)Object_setIpo, METH_VARARGS,
"(Blender Ipo) - Sets the object's ipo"},
{"clearIpo", (PyCFunction)Object_clearIpo, METH_NOARGS,
"() - Unlink ipo from this object"},
- {0}
+ {NULL, NULL, 0, NULL}
};
/*****************************************************************************/
@@ -754,6 +761,29 @@ static PyObject *Object_getAction (BPy_Object *self)
}
}
+
+static PyObject *Object_isSelected (BPy_Object *self)
+{
+ Base *base;
+
+ base= FIRSTBASE;
+ while (base) {
+ if (base->object == self->object) {
+ if (base->flag & SELECT) {
+ Py_INCREF (Py_True);
+ return Py_True;
+ } else {
+ Py_INCREF (Py_False);
+ return Py_False;
+ }
+ }
+ base= base->next;
+ }
+ return ( EXPP_ReturnPyObjError (PyExc_RuntimeError,
+ "Internal error: could not find objects selection state"));
+}
+
+
static PyObject *Object_getDrawType (BPy_Object *self)
{
PyObject *attr = Py_BuildValue ("b", self->object->dt);
@@ -1350,6 +1380,7 @@ static PyObject *Object_setMatrix (BPy_Object *self, PyObject *args)
return (Py_None);
}
+
static PyObject *Object_setIpo(BPy_Object *self, PyObject *args)
{
PyObject *pyipo = 0;
@@ -1590,6 +1621,39 @@ static PyObject *Object_shareFrom (BPy_Object *self, PyObject *args)
return (Py_None);
}
+
+
+static PyObject *Object_Select (BPy_Object *self, PyObject *args)
+{
+ Base *base;
+ int sel;
+
+ base= FIRSTBASE;
+ if (!PyArg_ParseTuple (args, "i", &sel))
+ return EXPP_ReturnPyObjError
+ (PyExc_TypeError, "expected an integer, 0 or 1");
+
+ while (base) {
+ if (base->object == self->object){
+ if (sel == 1){
+ base->flag |= SELECT;
+ self->object->flag= base->flag;
+ } else {
+ base->flag &= ~SELECT;
+ self->object->flag= base->flag;
+ }
+ break;
+ }
+ base= base->next;
+ }
+
+ countall();
+
+ Py_INCREF (Py_None);
+ return (Py_None);
+}
+
+
/*****************************************************************************/
/* Function: Object_CreatePyObject */
/* Description: This function will create a new BlenObject from an existing */
@@ -1793,7 +1857,9 @@ static PyObject* Object_getAttr (BPy_Object *obj, char *name)
return (Py_BuildValue ("b", object->dtx));
if (StringEqual (name, "name"))
return (Py_BuildValue ("s", object->id.name+2));
-
+ if (StringEqual (name, "sel"))
+ return (Object_isSelected (obj));
+
/* not an attribute, search the methods table */
return Py_FindMethod(BPy_Object_methods, (PyObject *)obj, name);
}
@@ -2002,7 +2068,15 @@ static int Object_setAttr (BPy_Object *obj, char *name, PyObject *value)
else
return (0);
}
-
+
+ if (StringEqual (name, "sel"))
+ {
+ if (Object_Select (obj, valtuple) != Py_None)
+ return (-1);
+ else
+ return (0);
+ }
+
printf ("Unknown variable.\n");
return (0);
}
diff --git a/source/blender/python/api2_2x/doc/Object.py b/source/blender/python/api2_2x/doc/Object.py
index 4422ec98dfe..3d3b94d6360 100644
--- a/source/blender/python/api2_2x/doc/Object.py
+++ b/source/blender/python/api2_2x/doc/Object.py
@@ -152,6 +152,7 @@ class Object:
of: 2 - axis, 4 - texspace, 8 - drawname, 16 - drawimage,
32 - drawwire.
@cvar name: The name of the object.
+ @cvar sel: The selection state of the object, 1/0.
"""
def buildParts():
@@ -238,7 +239,13 @@ class Object:
@rtype: Ipo
@return: the wrapped ipo or None.
"""
-
+ def isSelected():
+ """
+ Returns the objects selection state as a boolean value True or False.
+ @rtype: Boolean
+ @return: Selection state as True or False
+ """
+
def getLocation():
"""
Returns the object's location (x, y, z).
@@ -476,7 +483,16 @@ class Object:
@type object: Blender Object
@param object: A Blender Object of the same type.
"""
-
+
+ def select(boolean):
+ """
+ Sets the object's selection state.
+ @type boolean: Integer
+ @param boolean:
+ - 0 - unselected
+ - 1 - selected
+ """
+
def getBoundBox():
"""
Returns the bounding box of this object. This works for meshes (out of