Skip to content
Snippets Groups Projects
Commit 0487a08f authored by hdallard's avatar hdallard
Browse files

Add a way to access widget's slots from other widget

parent 51806255
No related branches found
No related tags found
No related merge requests found
......@@ -145,6 +145,12 @@ signals:
/// Open the plugin manager dialog.
void onOpenPluginManager ();
void registerSlot(const char *slot, QObject* obj);
QObject* getFromSlot(const char *slot);
void connectSlot(const char *slot, const char *signal, QObject* obj);
private slots:
OSGWidget* onCreateView(QString name);
OSGWidget* onCreateView();
......@@ -184,6 +190,8 @@ signals:
QMutex delayedCreateView_;
QStringList robotNames_;
QStringList lastBodiesInCollision_;
std::map<std::string, QObject *> registeredSlots_;
};
} // namespace gui
} // namespace gepetto
......
......@@ -413,6 +413,34 @@ namespace gepetto {
d.exec ();
}
void MainWindow::registerSlot(const char *slot, QObject *obj)
{
if (registeredSlots_.find(slot) == registeredSlots_.end())
{
registeredSlots_[slot] = obj;
qDebug() << slot << " registered";
}
else
std::cout << "Slot " << slot << "already registered." << std::endl;
}
QObject* MainWindow::getFromSlot(const char* slot)
{
if (registeredSlots_.find(slot) == registeredSlots_.end())
{
std::cout << "slot " << slot << "isn't registered" << std::endl;
return NULL;
}
return registeredSlots_[slot];
}
void MainWindow::connectSlot(const char *slot, const char *signal, QObject* obj)
{
if (registeredSlots_.find(slot) != registeredSlots_.end()) {
QObject::connect(obj, signal, registeredSlots_[slot], slot);
}
}
void MainWindow::configurationValidationStatusChanged (bool valid)
{
collisionIndicator_->switchLed (valid);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment