static PyObject * PyDiaObject_GetAttr(PyDiaObject *self, gchar *attr) { if (!strcmp(attr, "__members__")) return Py_BuildValue("[sssss]", "bounding_box", "connections", "handles", "properties", "type"); else if (!strcmp(attr, "type")) return PyDiaObjectType_New(self->object->type); else if (!strcmp(attr, "bounding_box")) return PyDiaRectangle_New(&(self->object->bounding_box), NULL); else if (!strcmp(attr, "handles")) { int i; PyObject *ret = PyTuple_New(self->object->num_handles); for (i = 0; i < self->object->num_handles; i++) PyTuple_SetItem(ret, i, PyDiaHandle_New(self->object->handles[i], self->object)); return ret; } else if (!strcmp(attr, "connections")) { int i; PyObject *ret = PyTuple_New(self->object->num_connections); for (i = 0; i < self->object->num_connections; i++) PyTuple_SetItem(ret, i, PyDiaConnectionPoint_New( self->object->connections[i])); return ret; } else if (!strcmp(attr, "properties")) { return PyDiaProperties_New(self->object); } return Py_FindMethod(PyDiaObject_Methods, (PyObject *)self, attr); }
static PyObject * PyDiaSheet_GetAttr(PyDiaSheet *self, gchar *attr) { if (!strcmp(attr, "__members__")) return Py_BuildValue("[ssss]", "name", "description", "filename", "objects"); else if (!strcmp(attr, "name")) return PyString_FromString(self->sheet->name); else if (!strcmp(attr, "description")) return PyString_FromString(self->sheet->description); else if (!strcmp(attr, "filename")) return PyString_FromString(self->sheet->filename); else if (!strcmp(attr, "user")) return PyInt_FromLong(self->sheet->scope == SHEET_SCOPE_USER ? 1 : 0); else if (!strcmp(attr, "objects")) { /* Just returning tuples with information for now. Wrapping SheetObject * looks like overkill for the time being. * - DiaObjectType or None * - description of the SheetObject * - filename of the icon file */ PyObject *ret = PyList_New(0); GSList *list; for (list = self->sheet->objects; list != NULL; list = list->next) { SheetObject *so = list->data; DiaObjectType *ot = object_get_type (so->object_type); if (!ot) Py_INCREF(Py_None); PyList_Append(ret, Py_BuildValue ("(Oss)", ot ? PyDiaObjectType_New (ot) : Py_None, PyString_FromString (so->description ? so->description : ""), PyString_FromString (so->pixmap_file ? so->pixmap_file : ""))); } return ret; } return Py_FindMethod(PyDiaSheet_Methods, (PyObject *)self, attr); }