]> git.lyx.org Git - features.git/commitdiff
* qt4/DialogView.h: new template class based on QDialog.
authorAbdelrazak Younes <younes@lyx.org>
Thu, 27 Sep 2007 11:27:52 +0000 (11:27 +0000)
committerAbdelrazak Younes <younes@lyx.org>
Thu, 27 Sep 2007 11:27:52 +0000 (11:27 +0000)
* qt4/Dialogs.cpp: use DialogView by default instead of DockView for GuiParagraph

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20534 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/DialogView.h [new file with mode: 0644]
src/frontends/qt4/Dialogs.cpp
src/frontends/qt4/GuiParagraph.cpp
src/frontends/qt4/GuiParagraph.h
src/frontends/qt4/Makefile.am

diff --git a/src/frontends/qt4/DialogView.h b/src/frontends/qt4/DialogView.h
new file mode 100644 (file)
index 0000000..6309f08
--- /dev/null
@@ -0,0 +1,97 @@
+// -*- C++ -*-
+/**
+ * \file DialogView.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Abdelrazak Younes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef DIALOG_VIEW_H
+#define DIALOG_VIEW_H
+
+#include "controllers/Dialog.h"
+#include "GuiView.h"
+#include "qt_helpers.h"
+#include "debug.h"
+
+#include <QDialog>
+
+#include <string>
+
+namespace lyx {
+namespace frontend {
+
+/// Window Dialog container for LyX dialogs.
+/// This template class that encapsulates a given Widget inside a
+/// QDialog and presents a Dialog interface
+template<class MyController, class MyWidget>
+class DialogView : public QDialog, public Dialog
+{
+public:
+       DialogView(
+               GuiViewBase & parent, ///< the main window where to dock.
+               std::string const & name, ///< dialog identifier.
+               bool modal = false, ///< Window modality.
+               Qt::WindowFlags flags = 0
+               )
+               : QDialog(&parent, flags), name_(name)
+       {
+               setModal(modal);
+               MyController * c = new MyController(*this);
+               controller_ = c;
+               controller_->setLyXView(parent);
+               widget_ = new MyWidget(*c, this);
+               setWindowTitle("LyX: " + widget_->windowTitle());
+       }
+
+       /// Dialog inherited methods
+       //@{
+       void applyView() {}
+       void hideView()
+       {
+               controller().clearParams();
+               QDialog::hide();
+       }
+       void showData(std::string const & data)
+       {
+               controller_->initialiseParams(data);
+               showView();
+       }
+       void showView()
+       {
+               widget_->updateView();  // make sure its up-to-date
+               QDialog::show();
+               raise();
+               activateWindow();
+       }
+       bool isVisibleView() const { return QDialog::isVisible(); }
+       void checkStatus() { updateView(); }
+       void redraw() { redrawView(); }
+       void redrawView() {}
+       void updateData(std::string const & data)
+       {
+               controller_->initialiseParams(data);
+               updateView();
+       }
+       void updateView()
+       {
+               widget_->updateView();
+       }
+       void partialUpdateView(int /*id*/) {}
+       Controller & controller() { return *controller_; }
+       std::string name() const { return name_; }
+       //@}
+private:
+       /// The encapsulated widget.
+       MyWidget * widget_;
+       Controller * controller_;
+       std::string name_;
+};
+
+} // frontend
+} // lyx
+
+#endif // DIALOG_VIEW_H
index 9ec2290a9120d8e28c3071fe63186f279e358d0b..2fdd7c6857515f3bbd1c29c2b4604ade19cb80b9 100644 (file)
@@ -14,6 +14,7 @@
 #include "GuiDialog.h"
 
 #include "ButtonController.h"
+#include "DialogView.h"
 #include "DockView.h"
 #include "GuiAbout.h"
 #include "GuiBibitem.h"
@@ -62,6 +63,9 @@
 #include "GuiThesaurus.h"
 #endif
 
+// Uncomment this if you prefer dock widget
+//#define USE_DOCK_WIDGET
+
 #include "qt_helpers.h"
 
 #include <boost/assert.hpp>
@@ -172,9 +176,14 @@ Dialog * Dialogs::build(string const & name)
        } else if (name == "note") {
                dialog = new GuiNoteDialog(lyxview_);
        } else if (name == "paragraph") {
+#ifdef USE_DOCK_WIDGET
                DockView<ControlParagraph, GuiParagraph> * dv =
-                       new DockView<ControlParagraph, GuiParagraph>(guiview, name);
-               dv->setFloating(true);
+                       new DockView<ControlParagraph, GuiParagraph>(guiview, name,
+                               Qt::TopDockWidgetArea);
+#else
+               DialogView<ControlParagraph, GuiParagraph> * dv =
+                       new DialogView<ControlParagraph, GuiParagraph>(guiview, name);
+#endif
                dialog = dv;
        } else if (name == "prefs") {
                dialog = new GuiPrefsDialog(lyxview_);
index 877d8a3b25a545bc52842e9b44694365659deb60..091ed7b7bbb26250764832488108cce11d411c2e 100644 (file)
@@ -36,8 +36,8 @@ using std::endl;
 namespace lyx {
 namespace frontend {
 
-GuiParagraph::GuiParagraph(ControlParagraph & controller)
-       : controller_(controller)
+GuiParagraph::GuiParagraph(ControlParagraph & controller, QWidget * parent)
+       : QWidget(parent), controller_(controller)
 {
        setupUi(this);
        setWindowTitle(qt_("Paragraph Settings"));
index 1bc66578142dccdbdf16087ce136d1b296147280..9e4604c56bfeef7c3f80221bb54de1bb6753d2c6 100644 (file)
@@ -28,7 +28,7 @@ class GuiParagraph : public QWidget, public Ui::ParagraphUi
 {
        Q_OBJECT
 public:
-       GuiParagraph(ControlParagraph & controller);
+       GuiParagraph(ControlParagraph & controller, QWidget * parent = 0);
 
        /// update
        void updateView();
index e073f62467d33bd711b53f35ed440cc37db59a61..d1709a8e82d4eec45556e65bfea990d5e96f2899 100644 (file)
@@ -129,6 +129,7 @@ MOCHEADER = \
        Action.h \
        BulletsModule.h \
        ColorCache.h \
+       DialogView.h \
        DockView.h \
        EmptyTable.h \
        FloatPlacement.h \