DataControlPluginScripting.cc 4.9 KB
Newer Older
Jan Möbius's avatar
 
Jan Möbius committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
//=============================================================================
//
//                               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 <http://www.gnu.org/licenses/>.
//
//-----------------------------------------------------------------------------
//
//   $Revision$
//   $Author$
//   $Date$
//
//=============================================================================




#include "DataControlPlugin.hh"

#include <OpenFlipper/BasePlugin/PluginFunctions.hh>


Dirk Wilden's avatar
Dirk Wilden committed
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
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
Jan Möbius's avatar
 
Jan Möbius committed
65 66 67 68 69 70 71 72 73 74
int DataControlPlugin::getObject( QString _name ) {
  
  BaseObject* object = PluginFunctions::objectRoot()->childExists(_name); 
  
  if ( object == 0)
    return -1;
  
  return object->id();
}

Dirk Wilden's avatar
Dirk Wilden committed
75
/// Returns the name of an object with given id
Jan Möbius's avatar
 
Jan Möbius committed
76 77 78 79 80 81 82 83 84 85 86
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() ;
  
}

Dirk Wilden's avatar
Dirk Wilden committed
87
/// Hide object with the given id
Jan Möbius's avatar
 
Jan Möbius committed
88 89 90 91 92 93 94 95 96 97 98 99
void DataControlPlugin::hideObject( int objectId ) {
  
  BaseObjectData* object;
  if ( ! PluginFunctions::get_object(objectId,object) ) 
    return;
  
  if ( object == 0)
    return;
  
  object->hide();
}

Dirk Wilden's avatar
Dirk Wilden committed
100
/// Show object with the given id
Jan Möbius's avatar
 
Jan Möbius committed
101 102 103 104 105 106 107 108 109 110 111 112
void DataControlPlugin::showObject( int objectId ) {
  
  BaseObjectData* object;
  if ( ! PluginFunctions::get_object(objectId,object) ) 
    return;
  
  if ( object == 0)
    return;
  
  object->show();
}

Dirk Wilden's avatar
Dirk Wilden committed
113
/// Group given Objects together
Dirk Wilden's avatar
Dirk Wilden committed
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
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] );
  }
  
Jan Möbius's avatar
 
Jan Möbius committed
157
  emit updatedObject(-1);
Dirk Wilden's avatar
Dirk Wilden committed
158
}
Jan Möbius's avatar
 
Jan Möbius committed
159