//=============================================================================
//
// OpenFlipper
// Copyright (C) 2008 by Computer Graphics Group, RWTH Aachen
// www.openflipper.org
//
//-----------------------------------------------------------------------------
//
// License
//
// OpenFlipper is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// OpenFlipper is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with OpenFlipper. If not, see .
//
//-----------------------------------------------------------------------------
//
// $Revision$
// $Author$
// $Date$
//
//=============================================================================
#include "DataControlPlugin.hh"
#include
void DataControlPlugin::setDescriptions(){
emit setSlotDescription("getObject(QString)","Returns the id of an object with given name.",
QStringList("Name"), QStringList("Name of an object"));
emit setSlotDescription("getObjectName(int)","Returns the name of an object with given id.",
QStringList("objectId"), QStringList("ID of an object"));
emit setSlotDescription("hideObject(int)","Hide object with the given id.",
QStringList("objectId"), QStringList("ID of an object"));
emit setSlotDescription("showObject(int)","Show object with the given id.",
QStringList("objectId"), QStringList("ID of an object"));
emit setSlotDescription("groupObjects(idList,QString)","Group given Objects together.",
QString("objectIds,groupName").split(","),
QString("List of objects that should be grouped., Name of the group.").split(","));
emit setSlotDescription("groupObjects(idList)","Group given Objects together.",
QStringList("objectIds"), QStringList("List of objects that should be grouped."));
}
/// Returns the id of an object with given name
int DataControlPlugin::getObject( QString _name ) {
BaseObject* object = PluginFunctions::objectRoot()->childExists(_name);
if ( object == 0)
return -1;
return object->id();
}
/// Returns the name of an object with given id
QString DataControlPlugin::getObjectName( int objectId ) {
BaseObjectData* object;
if ( ! PluginFunctions::get_object(objectId,object) ) {
emit log(LOGERR,"getObjectName : unable to get object" );
return QString("Unknown Object");
} else
return object->name() ;
}
/// Hide object with the given id
void DataControlPlugin::hideObject( int objectId ) {
BaseObjectData* object;
if ( ! PluginFunctions::get_object(objectId,object) )
return;
if ( object == 0)
return;
object->hide();
}
/// Show object with the given id
void DataControlPlugin::showObject( int objectId ) {
BaseObjectData* object;
if ( ! PluginFunctions::get_object(objectId,object) )
return;
if ( object == 0)
return;
object->show();
}
/// Group given Objects together
void DataControlPlugin::groupObjects(idList _objectIDs, QString _groupName) {
QVector< BaseObject* > objs;
for (uint i=0; i < _objectIDs.size(); i++){
BaseObject* obj;
if ( PluginFunctions::get_object(_objectIDs[i],obj) )
objs.push_back(obj);
}
if (objs.size() == 0){
emit log("No objects to group.");
return;
}
//check if all objects have the same parent
//abort if the parents differ
BaseObject* parent = (objs[0])->parent();
for ( int i = 1 ; i < objs.size() ; ++i)
if ( parent != (objs[i])->parent() ){
emit log("Cannot group Objects with different parents");
return;
}
//create new group
if (parent == 0)
parent = PluginFunctions::objectRoot();
GroupObject* groupItem = new GroupObject( "newGroup", dynamic_cast< GroupObject* >(parent));
//set groupName
if (_groupName == "")
groupItem->setName("newGroup " + QString::number(groupItem->id()));
else
groupItem->setName( _groupName );
parent->appendChild( dynamic_cast< BaseObject* >( groupItem ) );
groupItem->setParent( parent );
//append new children to group
for ( int i = 0 ; i < objs.size() ; ++i) {
(objs[i])->parent()->removeChild( objs[i] );
(objs[i])->setParent( dynamic_cast< BaseObject* >( groupItem ) );
groupItem->appendChild( objs[i] );
}
emit updatedObject(-1);
}