Then right-click on a tool bar, menu bar or title bar of dock widgets to open your window.
1 from PythonQt
import QtGui, Qt
5 class _NodeCreator (QtGui.QWidget):
6 def __init__(self, parent, plugin):
7 super(_NodeCreator, self).__init__ (parent)
9 box = QtGui.QVBoxLayout(self)
12 self.nodeName = QtGui.QLineEdit(
"nodeName")
13 box.addWidget(self.addWidgetsInHBox([QtGui.QLabel(
"Node name:"), self.nodeName]))
16 box.addWidget(self.bindFunctionToButton(
"Create group", self.createGroup))
19 self.groupNodes = QtGui.QComboBox(self)
20 self.groupNodes.editable =
False 21 box.addWidget(self.addWidgetsInHBox( [
23 self.bindFunctionToButton(
"Add to group", self.addToGroup)
27 box.addWidget(self.bindFunctionToButton(
"Add mesh", self.addMesh))
30 box.addWidget(self.bindFunctionToButton(
"Add box", self.addBox))
32 box.addWidget(self.bindFunctionToButton(
"Create window", self.createWindow))
37 self.groupNodes.clear()
38 for n
in self.plugin.client.gui.getSceneList():
39 self.groupNodes.addItem (n)
41 def addWidgetsInHBox(self, widgets):
42 nameParentW = QtGui.QWidget(self)
43 hboxName = QtGui.QHBoxLayout(nameParentW)
48 def bindFunctionToButton (self, buttonLabel, func):
49 button = QtGui.QPushButton(self)
50 button.text = buttonLabel
51 button.connect (
'clicked()', func)
55 filename = QtGui.QFileDialog.getOpenFileName (self,
"Choose a mesh")
56 self.plugin.client.gui.addMesh(str(self.nodeName.text), str(filename))
57 self.refreshBodyTree()
60 self.plugin.client.gui.addBox(str(self.nodeName.text), 1, 1, 1, [1, 0, 0, 1])
61 self.refreshBodyTree()
63 def createWindow (self):
64 self.plugin.windowsManager.createWindow(str(self.nodeName.text))
66 def createGroup (self):
67 self.plugin.client.gui.createGroup(str(self.nodeName.text))
68 self.groupNodes.addItem(self.nodeName.text)
69 self.refreshBodyTree()
71 def addToGroup (self):
72 self.plugin.client.gui.addToGroup(str(self.nodeName.text), str(self.groupNodes.currentText))
73 self.refreshBodyTree()
76 def refreshBodyTree(self):
77 self.plugin.main.requestRefresh()
79 class Plugin(QtGui.QDockWidget):
81 Example of plugin of the Gepetto Viewer GUI. This can interact with 82 PythonWidget C++ class. 84 def __init__ (self, mainWindow):
85 super(Plugin, self).__init__ (
"Gepetto Viewer plugin", mainWindow)
86 self.setObjectName(
"Gepetto Viewer plugin")
87 self.client = Client()
89 self.tabWidget = QtGui.QTabWidget(self)
92 p = Qt.QSizePolicy.Maximum
93 self.tabWidget.setSizePolicy(Qt.QSizePolicy(p,p))
94 self.setWidget (self.tabWidget)
95 self.nodeCreator = _NodeCreator(self, self)
96 self.tabWidget.addTab (self.nodeCreator,
"Node Creator")
97 self.main = mainWindow
98 self.windowsManager = windowsManager
99 mainWindow.connect(
'refresh()', self.refresh)
100 mainWindow.bodyTree().connect(
'bodySelected(SelectionEvent*)', self.selected)
103 def osgWidget(self, osgWindow):
106 def resetConnection(self):
107 self.client = Client()
110 self.nodeCreator.update()
112 def selected(self, event):
114 print "name: ", event.nodeName()
115 if event.hasIntersection():
116 print "point LF: ", event.point(
True)
117 print "point WF: ", event.point(
False)
118 print "normal LF: ", event.normal(
True)
119 print "normal WF: ", event.normal(
False)