diff --git a/include/gepetto/gui/mainwindow.hh b/include/gepetto/gui/mainwindow.hh index c8a806f6bb6b63f3762ea9606f1279bc8a917eb0..e2e8480b99364d8b76582358414e4dc90eebaa8e 100644 --- a/include/gepetto/gui/mainwindow.hh +++ b/include/gepetto/gui/mainwindow.hh @@ -29,6 +29,12 @@ namespace gepetto { Q_OBJECT public: + enum RefreshType { + RefreshBodyTree = 1, + RefreshPlugins = 2, + RefreshAll = RefreshBodyTree + RefreshPlugins + }; + Settings* settings_; explicit MainWindow(Settings* settings, QWidget *parent = 0); @@ -81,7 +87,9 @@ signals: void logJobFailed (int id, const QString& text); OSGWidget* delayedCreateView (QString name = ""); - void requestRefresh (); + /// Request a refresh of the interface. + /// \param refreshType tells what to refresh. See RefreshType + void requestRefresh (int refreshType = RefreshAll); void requestApplyCurrentConfiguration (); void requestConfigurationValidation (); void configurationValidationStatusChanged (bool valid); diff --git a/pyplugins/gepetto/gui/pythonwidget.py b/pyplugins/gepetto/gui/pythonwidget.py index 5a6039b0f10a1d50ad7252a5c793dea2ec7906d0..7c4df4b4cf0476ff080301a23312ed54528ffcc3 100644 --- a/pyplugins/gepetto/gui/pythonwidget.py +++ b/pyplugins/gepetto/gui/pythonwidget.py @@ -3,10 +3,11 @@ from gepetto.corbaserver import Client import sys sys.argv = ["none"] +### This class represents one special tab of the new QDockWidget class _NodeCreator (QtGui.QWidget): - def __init__(self, parent, client): + def __init__(self, parent, plugin): super(_NodeCreator, self).__init__ (parent) - self.client = client + self.plugin = plugin box = QtGui.QVBoxLayout(self) # Name line edit @@ -31,7 +32,7 @@ class _NodeCreator (QtGui.QWidget): def update(self): self.groupNodes.clear() - for n in self.client.gui.getSceneList(): + for n in self.plugin.client.gui.getSceneList(): self.groupNodes.addItem (n) def addWidgetsInHBox(self, widgets): @@ -49,14 +50,21 @@ class _NodeCreator (QtGui.QWidget): def addMesh (self): filename = QtGui.QFileDialog.getOpenFileName (self, "Choose a mesh") - self.client.gui.addMesh(str(self.nodeName.text), str(filename)) + self.plugin.client.gui.addMesh(str(self.nodeName.text), str(filename)) + self.refreshBodyTree() def createGroup (self): - self.client.gui.createGroup(str(self.nodeName.text)) + self.plugin.client.gui.createGroup(str(self.nodeName.text)) self.groupNodes.addItem(self.nodeName.text) + self.refreshBodyTree() def addToGroup (self): - self.client.gui.addToGroup(str(self.nodeName.text), str(self.groupNodes.currentText)) + self.plugin.client.gui.addToGroup(str(self.nodeName.text), str(self.groupNodes.currentText)) + self.refreshBodyTree() + + ## See gepetto::gui::MainWindow::requestRefresh for more information + def refreshBodyTree(self, select = 1): + self.plugin.main.requestRefresh(select) class Plugin(QtGui.QDockWidget): """ @@ -72,14 +80,18 @@ class Plugin(QtGui.QDockWidget): # Initialize the widget self.tabWidget = QtGui.QTabWidget(self) self.setWidget (self.tabWidget) - self.nodeCreator = _NodeCreator(self, self.client) + self.nodeCreator = _NodeCreator(self, self) self.tabWidget.addTab (self.nodeCreator, "Node Creator") + self.main = mainWindow mainWindow.connect('refresh()', self.refresh) ### If present, this function is called when a new OSG Widget is created. def osgWidget(self, osgWindow): osgWindow.connect('selected(QString)', self.selected) + def resetConnection(self): + self.client = Client() + def refresh(self): self.nodeCreator.update() diff --git a/src/gui/bodytreewidget.cc b/src/gui/bodytreewidget.cc index 591ade1b4b0d81d0ab0260c29c114e4b73059bd4..1a64448caf10f4132c45666c3539eb499de0c863 100644 --- a/src/gui/bodytreewidget.cc +++ b/src/gui/bodytreewidget.cc @@ -72,7 +72,6 @@ namespace gepetto { view_->setModel(model_); view_->setSelectionMode(QAbstractItemView::SingleSelection); - connect (main, SIGNAL (refresh()), SLOT (reloadBodyTree())); connect (view_, SIGNAL (customContextMenuRequested(QPoint)), SLOT(customContextMenu(QPoint))); toolBox_->removeItem(0); diff --git a/src/gui/mainwindow.cc b/src/gui/mainwindow.cc index e5d1ce765c34101636becffa65a2fcf1e1a9d1c3..b2d29aafb3f6e0830693f9eaa31578b4387de139 100644 --- a/src/gui/mainwindow.cc +++ b/src/gui/mainwindow.cc @@ -179,9 +179,12 @@ namespace gepetto { return osgWindows_.last(); } - void MainWindow::requestRefresh() + void MainWindow::requestRefresh(int type) { - emit refresh (); + if (type & RefreshBodyTree) + bodyTree()->reloadBodyTree(); + if (type & RefreshPlugins) + emit refresh (); } OSGWidget *MainWindow::onCreateView() {