File: Group_item_plugin.cpp

package info (click to toggle)
cgal 6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 144,912 kB
  • sloc: cpp: 810,858; ansic: 208,477; sh: 493; python: 411; makefile: 286; javascript: 174
file content (82 lines) | stat: -rw-r--r-- 2,367 bytes parent folder | download | duplicates (2)
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
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <CGAL/Three/CGAL_Lab_plugin_interface.h>
#include <QApplication>
#include <QObject>
#include <QAction>
#include <QMainWindow>
#include <QInputDialog>
#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::CGAL_Lab_plugin_interface
{
  Q_OBJECT
  Q_INTERFACES(CGAL::Three::CGAL_Lab_plugin_interface)
  Q_PLUGIN_METADATA(IID "com.geometryfactory.CGALLab.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*)
  {
    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;
  //The reference to the scene
  CGAL::Three::Scene_interface* scene;
  //The reference to the main window
  QMainWindow* mw;
};

#include "Group_item_plugin.moc"