mirror of https://github.com/CGAL/cgal
87 lines
2.5 KiB
C++
87 lines
2.5 KiB
C++
#include <CGAL/Three/Polyhedron_demo_plugin_interface.h>
|
|
#include <QApplication>
|
|
#include <QObject>
|
|
#include <QAction>
|
|
#include <QMainWindow>
|
|
#include <QInputDialog>
|
|
#include "Messages_interface.h"
|
|
#include "Scene_plane_item.h"
|
|
#include <CGAL/Three/Scene_group_item.h>
|
|
|
|
//This plugin crates an action in Operations that displays "Hello World" in the 'console' dockwidet.
|
|
class GroupItemPlugin :
|
|
public QObject,
|
|
public CGAL::Three::Polyhedron_demo_plugin_interface
|
|
{
|
|
Q_OBJECT
|
|
Q_INTERFACES(CGAL::Three::Polyhedron_demo_plugin_interface)
|
|
Q_PLUGIN_METADATA(IID "com.geometryfactory.PolyhedronDemo.PluginInterface/1.0")
|
|
public:
|
|
//This plugin is only applicable if there is at exactly one selected item.
|
|
bool applicable(QAction*) const
|
|
{
|
|
return true;
|
|
}
|
|
//the list of the actions of the plugin.
|
|
QList<QAction*> actions() const
|
|
{
|
|
return _actions;
|
|
}
|
|
//this acts like a constructor for the plugin. It gets the references to the mainwindow and the scene, and connects the action.
|
|
void init(QMainWindow* mainWindow, CGAL::Three::Scene_interface* sc )
|
|
{
|
|
//get the references
|
|
this->scene = sc;
|
|
this->mw = mainWindow;
|
|
|
|
//creates the action
|
|
QAction *actionHelloWorld= new QAction(QString("Hello World"), mw);
|
|
//specifies the subMenu
|
|
actionHelloWorld->setProperty("submenuName", "Basic");
|
|
//links the action
|
|
if(actionHelloWorld) {
|
|
connect(actionHelloWorld, SIGNAL(triggered()),
|
|
this, SLOT(helloWorld()));
|
|
_actions << actionHelloWorld;
|
|
}
|
|
}
|
|
|
|
void init(QMainWindow* mw, CGAL::Three::Scene_interface* sc, Messages_interface* mi)
|
|
{
|
|
//gets the reference to the message interface, to display text in the console widget
|
|
this->messageInterface = mi;
|
|
init(mw, sc);
|
|
}
|
|
private Q_SLOTS:
|
|
|
|
|
|
void helloWorld()
|
|
{
|
|
//creates an item
|
|
Scene_plane_item *child = new Scene_plane_item(scene);
|
|
child->setName("Trivial Plane");
|
|
child->setColor(Qt::blue);
|
|
child->setNormal(0.0,0.0,1.0);
|
|
scene->addItem(child);
|
|
//clears the selection to avoid adding unwanted items to the group.
|
|
scene->setSelectedItem(-1);
|
|
//Creates a new group
|
|
Scene_group_item *group = new Scene_group_item("New group");
|
|
//Then gives it its children
|
|
scene->changeGroup(child, group);
|
|
//adds it to the scene
|
|
scene->addGroup(group);
|
|
|
|
}
|
|
|
|
private:
|
|
QList<QAction*> _actions;
|
|
Messages_interface* messageInterface;
|
|
//The reference to the scene
|
|
CGAL::Three::Scene_interface* scene;
|
|
//The reference to the main window
|
|
QMainWindow* mw;
|
|
};
|
|
|
|
#include "Group_item_plugin.moc"
|