#include "Dialogs.h"
#include "controllers/Dialog.h"
-#include "controllers/ButtonControllerBase.h"
+#include <boost/signals/signal2.hpp>
#include <boost/bind.hpp>
}
+namespace {
+
+BugfixSignal<boost::signal2<void, string const &, InsetBase*> > hideSignal;
+
+}
+
+
+void Dialogs::hide(string const & name, InsetBase* inset)
+{
+ hideSignal()(name, inset);
+}
+
+
Dialogs::Dialogs(LyXView & lyxview)
: lyxview_(lyxview)
{
// Connect signals
redrawGUI().connect(boost::bind(&Dialogs::redraw, this));
+ hideSignal().connect(boost::bind(&Dialogs::hideSlot, this, _1, _2));
// All this is slated to go
init_pimpl();
}
+void Dialogs::show(string const & name, string const & data)
+{
+ Dialog * dialog = find(name);
+ if (!dialog)
+ return;
+
+ // FIXME! Should check that the dialog is NOT an inset dialog.
+ dialog->show(data);
+}
+
+
void Dialogs::show(string const & name, string const & data, InsetBase * inset)
{
Dialog * dialog = find(name);
if (!dialog)
return;
+ // FIXME! Should check that the dialog IS an inset dialog.
dialog->show(data);
open_insets_[name] = inset;
}
+bool Dialogs::visible(string const & name) const
+{
+ std::map<string, DialogPtr>::const_iterator it =
+ dialogs_.find(name);
+ if (it == dialogs_.end())
+ return false;
+ return it->second.get()->isVisible();
+}
+
+
void Dialogs::update(string const & name, string const & data)
{
Dialog * dialog = find(name);
}
-void Dialogs::hide(string const & name)
+void Dialogs::hideSlot(string const & name, InsetBase * inset)
{
Dialog * dialog = find(name);
if (!dialog)
return;
+ if (inset && inset != getOpenInset(name))
+ return;
+
if (dialog->isVisible())
dialog->hide();
open_insets_[name] = 0;