]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiDialog.cpp
Complete the removal of the embedding stuff. Maybe. It's hard to be sure we got every...
[lyx.git] / src / frontends / qt4 / GuiDialog.cpp
index fce86af55173ea37dd4b510ea3ea970d84a9f3c4..53a132d5ff987a300eea9908fe3fb81dee4f257f 100644 (file)
 #include <config.h>
 
 #include "GuiDialog.h"
-#include "debug.h"
+#include "GuiView.h"
 #include "qt_helpers.h"
-#include "frontends/LyXView.h"
+#include "FuncRequest.h"
+
+#include "insets/InsetCommand.h"
+
+#include "support/debug.h"
 
 #include <QCloseEvent>
+#include <QMainWindow>
 #include <QSettings>
 #include <QShowEvent>
 
-using std::string;
+using namespace std;
 
 namespace lyx {
 namespace frontend {
 
-GuiDialog::GuiDialog(LyXView & lv, std::string const & name)
-       : is_closing_(false), name_(name), controller_(0), destroy_controller_(false)
-{
-       lyxview_ = &lv;
-}
-
-
-GuiDialog::~GuiDialog()
-{
-       if (destroy_controller_)
-               delete controller_;
-}
+GuiDialog::GuiDialog(GuiView & lv, QString const & name, QString const & title)
+       :  QDialog(&lv), Dialog(lv, name, "LyX: " + title), is_closing_(false)
+{}
 
 
-void GuiDialog::setViewTitle(docstring const & title)
+void GuiDialog::closeEvent(QCloseEvent * ev)
 {
-       setWindowTitle("LyX: " + toqstr(title));
+       slotClose();
+       ev->accept();
 }
 
 
@@ -62,14 +59,14 @@ void GuiDialog::slotOK()
        is_closing_ = true;
        apply();
        is_closing_ = false;
-       QDialog::hide();
+       hideView();
        bc().ok();
 }
 
 
 void GuiDialog::slotClose()
 {
-       QDialog::hide();
+       hideView();
        bc().cancel();
 }
 
@@ -79,76 +76,24 @@ void GuiDialog::slotRestore()
        // Tell the controller that a request to refresh the dialog's contents
        // has been received. It's up to the controller to supply the necessary
        // info by calling GuiDialog::updateView().
-       controller().updateDialog(name_);
+       updateDialog();
        bc().restore();
 }
 
-void GuiDialog::checkStatus()
-{
-       // buffer independant dialogs are always active.
-       // This check allows us leave canApply unimplemented for some dialogs.
-       if (!controller().isBufferDependent())
-               return;
-
-       // deactivate the dialog if we have no buffer
-       if (!controller().isBufferAvailable()) {
-               bc().setReadOnly(true);
-               return;
-       }
-
-       // check whether this dialog may be active
-       if (controller().canApply()) {
-               bool const readonly = controller().isBufferReadonly();
-               bc().setReadOnly(readonly);
-               // refreshReadOnly() is too generous in _enabling_ widgets
-               // update dialog to disable disabled widgets again
-
-               if (!readonly || controller().canApplyToReadOnly())
-                       updateView();
-
-       } else {
-               bc().setReadOnly(true);
-       }       
-}
-
-
-bool GuiDialog::isVisibleView() const
-{
-       return QDialog::isVisible();
-}
-
 
-void GuiDialog::showView()
+void GuiDialog::changed()
 {
-       QSize const hint = sizeHint();
-       if (hint.height() >= 0 && hint.width() >= 0)
-               setMinimumSize(hint);
-
-       updateView();  // make sure its up-to-date
-       if (controller().exitEarly())
+       if (updating_)
                return;
-
-       if (QWidget::isVisible()) {
-               raise();
-               activateWindow();
-       } else {
-               QWidget::show();
-       }
-       setFocus();
+       bc().setValid(isValid());
 }
 
 
-void GuiDialog::hideView()
+void GuiDialog::enableView(bool enable)
 {
-       QDialog::hide();
-}
-
-
-void GuiDialog::changed()
-{
-       if (updating_)
-               return;
-       bc().setValid(isValid());
+       bc().setReadOnly(!enable);
+       bc().setValid(enable);
+       Dialog::enableView(enable);
 }
 
 
@@ -156,117 +101,17 @@ void GuiDialog::updateView()
 {
        setUpdatesEnabled(false);
 
+       bc().setReadOnly(isBufferReadonly());
        // protect the BC from unwarranted state transitions
        updating_ = true;
        updateContents();
        updating_ = false;
-
-       setUpdatesEnabled(true);
-       QDialog::update();
-}
-
-
-void GuiDialog::showData(string const & data)
-{
-       if (controller().isBufferDependent() && !controller().isBufferAvailable())
-               return;
-
-       if (!controller().initialiseParams(data)) {
-               lyxerr << "Dialog \"" << name_
-                      << "\" failed to translate the data "
-                       "string passed to show()" << std::endl;
-               return;
-       }
-
-       bc().setReadOnly(controller().isBufferReadonly());
-       showView();
        // The widgets may not be valid, so refresh the button controller
        bc().refresh();
-}
-
-
-void GuiDialog::updateData(string const & data)
-{
-       if (controller().isBufferDependent() && !controller().isBufferAvailable())
-               return;
-
-       if (!controller().initialiseParams(data)) {
-               lyxerr << "Dialog \"" << name_
-                      << "\" could not be initialized" << std::endl;
-               return;
-       }
 
-       bc().setReadOnly(controller().isBufferReadonly());
-       updateView();
-       // The widgets may not be valid, so refresh the button controller
-       bc().refresh();
-}
-
-
-void GuiDialog::hide()
-{
-       if (!isVisibleView())
-               return;
-
-       controller().clearParams();
-       hideView();
-       controller().disconnect(name_);
-}
-
-
-void GuiDialog::apply()
-{
-       if (controller().isBufferDependent()) {
-               if (!controller().isBufferAvailable() ||
-                   (controller().isBufferReadonly() && !controller().canApplyToReadOnly()))
-                       return;
-       }
-
-       applyView();
-       controller().dispatchParams();
-
-       if (controller().disconnectOnApply() && !is_closing_) {
-               controller().disconnect(name_);
-               controller().initialiseParams(string());
-               updateView();
-       }
-}
-
-
-void GuiDialog::setController(Controller * controller, bool destroy)
-{
-       BOOST_ASSERT(controller);
-       BOOST_ASSERT(!controller_);
-       destroy_controller_ = destroy;
-       controller_ = controller;
-       controller_->setLyXView(*lyxview_);
-}
-
-
-void GuiDialog::showEvent(QShowEvent * e)
-{
-#if (QT_VERSION >= 0x040200)
-       QSettings settings;
-       string key = name_ + "/geometry";
-       restoreGeometry(settings.value(key.c_str()).toByteArray());
-#endif
-       QDialog::showEvent(e);
-}
-
-
-void GuiDialog::closeEvent(QCloseEvent * e)
-{
-#if (QT_VERSION >= 0x040200)
-       QSettings settings;
-       string key = name_ + "/geometry";
-       settings.setValue(key.c_str(), saveGeometry());
-#endif
-       QDialog::closeEvent(e);
+       setUpdatesEnabled(true);
 }
 
-} // namespace frontend
-} // namespace lyx
-
 
 /////////////////////////////////////////////////////////////////////
 //
@@ -274,19 +119,12 @@ void GuiDialog::closeEvent(QCloseEvent * e)
 //
 /////////////////////////////////////////////////////////////////////
 
-#include "FuncRequest.h"
-#include "insets/InsetCommand.h"
-
-
-using std::string;
-
-namespace lyx {
-namespace frontend {
 
-GuiCommand::GuiCommand(LyXView & lv, string const & name)
-       : GuiDialog(lv, name), Controller(this), params_(name), lfun_name_(name)
+GuiCommand::GuiCommand(GuiView & lv, QString const & name,
+       QString const & title)
+       : GuiDialog(lv, name, title), params_(insetCode(fromqstr(name))),
+               lfun_name_(fromqstr(name))
 {
-       setController(this, false);
 }
 
 
@@ -294,7 +132,7 @@ bool GuiCommand::initialiseParams(string const & data)
 {
        // The name passed with LFUN_INSET_APPLY is also the name
        // used to identify the mailer.
-       InsetCommandMailer::string2params(lfun_name_, data, params_);
+       InsetCommand::string2params(lfun_name_, data, params_);
        return true;
 }
 
@@ -304,8 +142,7 @@ void GuiCommand::dispatchParams()
        if (lfun_name_.empty())
                return;
 
-       string const lfun = 
-               InsetCommandMailer::params2string(lfun_name_, params_);
+       string const lfun = InsetCommand::params2string(lfun_name_, params_);
        dispatch(FuncRequest(getLfun(), lfun));
 }