]> git.lyx.org Git - lyx.git/commitdiff
Move the float dialog to the new scheme.
authorAngus Leeming <leeming@lyx.org>
Wed, 5 Mar 2003 19:46:08 +0000 (19:46 +0000)
committerAngus Leeming <leeming@lyx.org>
Wed, 5 Mar 2003 19:46:08 +0000 (19:46 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6355 a592a061-630c-0410-9148-cb99ea01b6c8

28 files changed:
src/frontends/ChangeLog
src/frontends/Dialogs.h
src/frontends/controllers/ChangeLog
src/frontends/controllers/ControlFloat.C
src/frontends/controllers/ControlFloat.h
src/frontends/controllers/ControlInclude.C
src/frontends/guiapi.C
src/frontends/guiapi.h
src/frontends/qt2/ChangeLog
src/frontends/qt2/Dialogs.C
src/frontends/qt2/Dialogs2.C
src/frontends/qt2/Dialogs3.C
src/frontends/qt2/Dialogs_impl.h
src/frontends/qt2/QFloat.C
src/frontends/qt2/QFloat.h
src/frontends/xforms/ChangeLog
src/frontends/xforms/Dialogs.C
src/frontends/xforms/Dialogs2.C
src/frontends/xforms/Dialogs3.C
src/frontends/xforms/Dialogs_impl.h
src/frontends/xforms/FormFloat.C
src/frontends/xforms/FormFloat.h
src/frontends/xforms/forms/form_float.fd
src/insets/ChangeLog
src/insets/insetcollapsable.C
src/insets/insetfloat.C
src/insets/insetfloat.h
src/insets/insetinclude.C

index 7785c5e7d5d8ed8c02de33584db75824649192d6..e00717299e8ed38ac5800fabef6f1693ed17ae3f 100644 (file)
@@ -1,3 +1,8 @@
+2003-03-05  Angus Leeming  <leeming@lyx.org>
+
+       * Dialogs.h: remove showFloat.
+       * guiapi.[Ch]: remove gui_ShowFloat.
+
 2003-03-05  Angus Leeming  <leeming@lyx.org>
 
        * Dialogs.h: remove showInclude.
index 03a8b060cc4d933d6879d8b805ed4b8d90f23ba6..61bbdadb33cc32e9992b9f9448c51a447adb0e00 100644 (file)
@@ -23,7 +23,6 @@ class Dialog;
 class InsetBase;
 class LyXView;
 
-class InsetFloat;
 class InsetWrap;
 class InsetGraphics;
 class InsetInfo;
@@ -88,8 +87,6 @@ public:
        /// show the contents of a file.
        void showFile(string const &);
        ///
-       void showFloat(InsetFloat *);
-       ///
        void showWrap(InsetWrap *);
        /// show all forked child processes
        void showForks();
index f50390c7d77c0dcbcc9ed6fb7233fe99132891b3..13c5e4ccbe01cb410076510accd45a36efeade69 100644 (file)
@@ -1,3 +1,8 @@
+2003-03-05  Angus Leeming  <leeming@lyx.org>
+
+       * ControlFloat.[Ch]: rewrite to use the Dialog-based scheme.
+       * ControlInclude.C: remove unneeded header files.
+
 2003-03-05  Angus Leeming  <leeming@lyx.org>
 
        * ControlFloat.[Ch]: replace FloatParams with InsetFloatParams.
index 79e8f1fd4c726ea77243d5a558563db3155a3847..62b1b2ce16d4b71595ce246db44640bd4ecb734a 100644 (file)
 
 #include <config.h>
 
-
 #include "ControlFloat.h"
-#include "BufferView.h"
-#include "buffer.h"
+#include "funcrequest.h"
 
 
-ControlFloat::ControlFloat(LyXView & lv, Dialogs & d)
-       : ControlInset<InsetFloat, InsetFloatParams>(lv, d)
+ControlFloat::ControlFloat(Dialog & parent)
+       : Dialog::Controller(parent)
 {}
 
 
-void ControlFloat::applyParamsToInset()
+void ControlFloat::initialiseParams(string const & data)
 {
-       inset()->placement(params().placement);
-       inset()->wide(params().wide, bufferview()->buffer()->params);
-       bufferview()->updateInset(inset(), true);
-
+       InsetFloatParams params;
+       InsetFloatMailer::string2params(data, params);
+       params_.reset(new InsetFloatParams(params));
 }
 
 
-void ControlFloat::applyParamsNoInset()
-{}
+void ControlFloat::clearParams()
+{
+       params_.reset();
+}
 
 
-InsetFloatParams const ControlFloat::getParams(InsetFloat const & inset)
+void ControlFloat::dispatchParams()
 {
-       return inset.params();
+       string const lfun = InsetFloatMailer::params2string("float", params());
+       kernel().dispatch(FuncRequest(LFUN_INSET_APPLY, lfun));
 }
index 0209ebda02ade62f9370948855493b2e43a6249c..9566e1c146650b613c290288e4ebadf2847967f3 100644 (file)
 #define CONTROLFLOAT_H
 
 
-#include "ControlInset.h"
+#include "Dialog.h"
 #include "insets/insetfloat.h"
 
-inline
-bool operator==(InsetFloatParams const & p1, InsetFloatParams const & p2)
-{
-       return p1.placement == p2.placement && p1.wide == p2.wide;
-}
-
-
-inline
-bool operator!=(InsetFloatParams const & p1, InsetFloatParams const & p2)
-{
-       return !(p1 == p2);
-}
-
 
 /** A controller for Minipage dialogs.
  */
-class ControlFloat : public ControlInset<InsetFloat, InsetFloatParams>  {
+class ControlFloat : public Dialog::Controller {
 public:
        ///
-       ControlFloat(LyXView &, Dialogs &);
+       ControlFloat(Dialog &);
+       ///
+       virtual void initialiseParams(string const & data);
+       /// clean-up on hide.
+       virtual void clearParams();
+       /// clean-up on hide.
+       virtual void dispatchParams();
+       ///
+       virtual bool isBufferDependent() const { return true; }
+       ///
+       InsetFloatParams & params() { return *params_.get(); }
+       ///
+       InsetFloatParams const & params() const { return *params_.get(); }
 private:
-       /// Dispatch the changed parameters to the kernel.
-       virtual void applyParamsToInset();
        ///
-       virtual void applyParamsNoInset();
-       /// get the parameters from the string passed to createInset.
-       virtual InsetFloatParams const getParams(string const &)
-               { return InsetFloatParams(); }
-       /// get the parameters from the inset passed to showInset.
-       virtual InsetFloatParams const getParams(InsetFloat const &);
+       boost::scoped_ptr<InsetFloatParams> params_;
 };
 
 #endif
index 5d8639ce902c3aaed5fa98bec171d08b7a57ab87..aa9695f36320a674a96f4a214afe0467c63f7b9d 100644 (file)
 #include <config.h>
 
 #include "ControlInclude.h"
-
 #include "helper_funcs.h"
 
-#include "BufferView.h"
 #include "funcrequest.h"
 #include "gettext.h"
-#include "lyxfunc.h"
 #include "lyxrc.h"
 
-#include "frontends/Alert.h"
-
 #include "support/filetools.h"
 
 #include <utility>
index bb28ee521154c5c03ff4a7dc240d85bd5f9f83fe..14221f8afc1e063841d59b701656ede1a3d8e305 100644 (file)
@@ -51,17 +51,12 @@ void gui_ShowFile(string const & f, Dialogs & d)
 }
 
 
-void gui_ShowFloat(InsetFloat * ifl, Dialogs & d)
-{
-       d.showFloat(ifl);
-}
-
-
 void gui_ShowWrap(InsetWrap * iw, Dialogs & d)
 {
        d.showWrap(iw);
 }
 
+
 void gui_ShowForks(Dialogs & d)
 {
        d.showForks();
index b5d9e35a5354c450cc889af0e44d5086ce8a9c1a..c1dd3cad98b3573286144a2dc1b67bc0342e667c 100644 (file)
@@ -16,7 +16,6 @@
 #include "LString.h"
 
 class Dialogs;
-class InsetFloat;
 class InsetWrap;
 class InsetGraphics;
 class InsetMinipage;
@@ -31,7 +30,6 @@ void gui_ShowCharacter(Dialogs &);
 void gui_SetUserFreeFont(Dialogs &);
 void gui_ShowDocument(Dialogs &);
 void gui_ShowFile(string const &, Dialogs &);
-void gui_ShowFloat(InsetFloat *, Dialogs &);
 void gui_ShowForks(Dialogs &);
 void gui_ShowGraphics(InsetGraphics *, Dialogs &);
 void gui_ShowLogFile(Dialogs &);
index 0ef9068b7e37059c5de1d1a0b3feee627ad2e595..a7c3398c4d12fb575ce8a8d00d9d05c69684f640 100644 (file)
@@ -1,3 +1,13 @@
+2003-03-05  Angus Leeming  <leeming@lyx.org>
+
+       * QFloat.[Ch]: changes to use the new Dialog-based scheme.
+
+       * Dialogs.C:
+       * Dialogs2.C:
+       * Dialogs_impl.h: remove float dialog.
+
+       * Dialogs3.C: add float dialog.
+
 2003-03-05  Angus Leeming  <leeming@lyx.org>
 
        * QFloat.C (update_contents): rename FloatParams as InsetFloatParams.
index 0b6074f98529285a6fff3a67cf470b036f84c3a6..cdd11f96797178e4afe50753136f00d12e4ddeff 100644 (file)
@@ -31,7 +31,6 @@ Dialogs::Impl::Impl(LyXView & lv, Dialogs & d)
          character(lv, d),
          document(lv, d),
          file(lv, d),
-         floats(lv, d),
          graphics(lv, d),
          logfile(lv, d),
          minipage(lv, d),
index d8a702bd28ac60ab613a4f9cd5e95e7d712ab53b..9a04b489a7c55479e4258ab3881d20ce8766f5dd 100644 (file)
@@ -51,12 +51,6 @@ void Dialogs::showFile(string const & f)
 }
 
 
-void Dialogs::showFloat(InsetFloat * ifl)
-{
-       pimpl_->floats.controller().showInset(ifl);
-}
-
-
 void Dialogs::showForks()
 {}
 
index 26883fbb593b655295d0bfac6e02ed9fab812e69..a9fc8d3dbabe5f7f5d35383631fe01a88548eab4 100644 (file)
@@ -19,6 +19,7 @@
 #include "ControlError.h"
 #include "ControlERT.h"
 #include "ControlExternal.h"
+#include "ControlFloat.h"
 #include "ControlInclude.h"
 #include "ControlIndex.h"
 #include "ControlLabel.h"
@@ -38,6 +39,8 @@
 #include "QERTDialog.h"
 #include "QExternal.h"
 #include "QExternalDialog.h"
+#include "QFloat.h"
+#include "QFloatDialog.h"
 // Here would be an appropriate point to lecture on the evils
 // of the Qt headers, those most fucked up of disgusting ratholes.
 // But I won't.
@@ -73,8 +76,9 @@ typedef ButtonController<NoRepeatedApplyReadOnlyPolicy, Qt2BC>
 namespace {
 
 char const * const dialognames[] = { "bibitem", "bibtex", "citation",
-                                    "error", "ert", "external", "include",
-                                    "index", "label", "ref", "toc", "url" };
+                                    "error", "ert", "external", "float",
+                                    "include", "index", "label", "ref",
+                                    "toc", "url" };
 
 char const * const * const end_dialognames =
        dialognames + (sizeof(dialognames) / sizeof(char *));
@@ -130,6 +134,10 @@ Dialog * Dialogs::build(string const & name)
                dialog->setController(new ControlExternal(*dialog));
                dialog->setView(new QExternal(*dialog));
                dialog->setButtonController(new OkApplyCancelReadOnlyBC);
+       } else if (name == "float") {
+               dialog->setController(new ControlFloat(*dialog));
+               dialog->setView(new QFloat(*dialog));
+               dialog->setButtonController(new NoRepeatedApplyReadOnlyBC);
        } else if (name == "include") {
                dialog->setController(new ControlInclude(*dialog));
                dialog->setView(new QInclude(*dialog));
index 9c2f9ea964afef62c04f835bb68216b762db71fe..c7939f8af6ddb0706a74ab0b5ff2a972d5e15b33 100644 (file)
@@ -18,7 +18,6 @@
 #include "ControlChanges.h"
 #include "ControlCharacter.h"
 #include "ControlDocument.h"
-#include "ControlFloat.h"
 #include "ControlForks.h"
 #include "ControlGraphics.h"
 #include "insets/insetgraphicsParams.h"
@@ -45,8 +44,6 @@
 #include "QCharacterDialog.h"
 #include "QDocument.h"
 #include "QDocumentDialog.h"
-#include "QFloat.h"
-#include "QFloatDialog.h"
 //#include "QForks.h"
 // Here would be an appropriate point to lecture on the evils
 // of the Qt headers, those most fucked up of disgusting ratholes.
@@ -109,9 +106,6 @@ DocumentDialog;
 typedef GUI<ControlShowFile, QShowFile, OkCancelPolicy, Qt2BC>
 FileDialog;
 
-typedef GUI<ControlFloat, QFloat, NoRepeatedApplyReadOnlyPolicy, Qt2BC>
-FloatDialog;
-
 typedef GUI<ControlGraphics, QGraphics, NoRepeatedApplyReadOnlyPolicy, Qt2BC>
 GraphicsDialog;
 
@@ -168,7 +162,6 @@ struct Dialogs::Impl {
        CharacterDialog     character;
        DocumentDialog      document;
        FileDialog          file;
-       FloatDialog         floats;
        GraphicsDialog      graphics;
        LogFileDialog       logfile;
        MinipageDialog      minipage;
index a238e5e8b86f4c398a75fbfe34a5c412da2728d0..ab87b8521c8e97c4cf04478c24393505c1b96e2b 100644 (file)
@@ -10,7 +10,6 @@
 
 #include <config.h>
 
-
 #include "ControlFloat.h"
 #include "QFloatDialog.h"
 #include "QFloat.h"
 #include <qpushbutton.h>
 #include <qcheckbox.h>
 
-typedef Qt2CB<ControlFloat, Qt2DB<QFloatDialog> > base_class;
+typedef QController<ControlFloat, QView<QFloatDialog> > base_class;
 
 
-QFloat::QFloat()
-       : base_class(qt_("LyX: Float Settings"))
+QFloat::QFloat(Dialog & parent)
+       : base_class(parent, qt_("LyX: Float Settings"))
 {
 }
 
index 1045d697002275539aed4f713cdfb10a4238cdb5..e95528b01fe3d6e6a7c0a0362456fcabdda38cf3 100644 (file)
 #define QFLOAT_H
 
 
-#include "Qt2Base.h"
+#include "QDialogView.h"
+
 
 class ControlFloat;
 class QFloatDialog;
 
 ///
-class QFloat
-       : public Qt2CB<ControlFloat, Qt2DB<QFloatDialog> >
-{
+class QFloat : public QController<ControlFloat, QView<QFloatDialog> > {
 public:
        ///
        friend class QFloatDialog;
        ///
-       QFloat();
+       QFloat(Dialog &);
 private:
        /// Apply changes
        virtual void apply();
index a45bafa0a9ccd0d465fe0ebafe6e622c50feb5c7..d761b08e8fecd027d5d6d53d8959aaedcc51344c 100644 (file)
@@ -1,3 +1,14 @@
+2003-03-05  Angus Leeming  <leeming@lyx.org>
+
+       * FormFloat.[Ch]:
+       * forms/form_float.fd: changes to use the new Dialog-based scheme.
+
+       * Dialogs.C:
+       * Dialogs2.C:
+       * Dialogs_impl.h: remove float dialog.
+
+       * Dialogs3.C: add float dialog.
+
 2003-03-05  Angus Leeming  <leeming@lyx.org>
 
        * FormInclude.[Ch]:
index 94fbd92e1ca461456200b9321b625a5d4018b8b0..985c3a7dc14ac4513233f86268ae978ea0404aac 100644 (file)
@@ -31,7 +31,6 @@ Dialogs::Impl::Impl(LyXView & lv, Dialogs & d)
          character(lv, d),
          document(lv, d),
          file(lv, d),
-         floats(lv, d),
          forks(lv, d),
          graphics(lv, d),
          logfile(lv, d),
index 44fd17852430fc51708dc95ca041783433cb49bd..7fc7aa419e0cd1644e55002d64251dd32c2b18b6 100644 (file)
@@ -51,12 +51,6 @@ void Dialogs::showFile(string const & f)
 }
 
 
-void Dialogs::showFloat(InsetFloat * ifl)
-{
-       pimpl_->floats.controller().showInset(ifl);
-}
-
-
 void Dialogs::showForks()
 {
        pimpl_->forks.controller().show();
index 68cfcb9299ca5527a3b7e2122150ea96c8771fcb..f618d1dd53cd1a8c311b0dbf57be07267c5ba1d8 100644 (file)
 #include "FormExternal.h"
 #include "forms/form_external.h"
 
+#include "ControlFloat.h"
+#include "FormFloat.h"
+#include "forms/form_float.h"
+
 #include "ControlInclude.h"
 #include "FormInclude.h"
 #include "forms/form_include.h"
@@ -86,8 +90,9 @@ namespace {
 //                                  "minipage", "ref", "tabular", "toc",
 //                                  "url", "wrap" };
 char const * const dialognames[] = { "bibitem", "bibtex", "citation",
-                                    "error", "ert", "external", "include",
-                                    "index", "label", "ref", "toc", "url" };
+                                    "error", "ert", "external", "float",
+                                    "include", "index", "label", "ref",
+                                    "toc", "url" };
 
 char const * const * const end_dialognames =
        dialognames + (sizeof(dialognames) / sizeof(char *));
@@ -143,6 +148,10 @@ Dialog * Dialogs::build(string const & name)
                dialog->setController(new ControlExternal(*dialog));
                dialog->setView(new FormExternal(*dialog));
                dialog->setButtonController(new OkApplyCancelReadOnlyBC);
+       } else if (name == "float") {
+               dialog->setController(new ControlFloat(*dialog));
+               dialog->setView(new FormFloat(*dialog));
+               dialog->setButtonController(new NoRepeatedApplyReadOnlyBC);
        } else if (name == "include") {
                dialog->setController(new ControlInclude(*dialog));
                dialog->setView(new FormInclude(*dialog));
index 3d29405c15a40101ae16adb357db9f3fc5e595f9..a46075eab3f4d8f1859c91e91c9b708d2de1dd66 100644 (file)
 #include "FormDocument.h"
 #include "forms/form_document.h"
 
-#include "ControlFloat.h"
-#include "FormFloat.h"
-#include "forms/form_float.h"
-
 #include "ControlForks.h"
 #include "FormForks.h"
 #include "forms/form_forks.h"
@@ -132,9 +128,6 @@ DocumentDialog;
 typedef GUI<ControlShowFile, FormShowFile, OkCancelPolicy, xformsBC>
 FileDialog;
 
-typedef GUI<ControlFloat, FormFloat, NoRepeatedApplyReadOnlyPolicy, xformsBC>
-FloatDialog;
-
 typedef GUI<ControlForks, FormForks, OkApplyCancelPolicy, xformsBC>
 ForksDialog;
 
@@ -199,7 +192,6 @@ struct Dialogs::Impl {
         CharacterDialog     character;
        DocumentDialog      document;
        FileDialog          file;
-       FloatDialog         floats;
        ForksDialog         forks;
        GraphicsDialog      graphics;
        LogFileDialog       logfile;
index 9386efb5f03a73fd00da9e8f077dbf550f515323..76e2b916d5a8adb97eb0938a8f5eaab86d1e90b3 100644 (file)
@@ -33,10 +33,10 @@ enum {
 } // namespace anon
 
 
-typedef FormCB<ControlFloat, FormDB<FD_float> > base_class;
+typedef FormController<ControlFloat, FormView<FD_float> > base_class;
 
-FormFloat::FormFloat()
-       : base_class(_("Float Options"))
+FormFloat::FormFloat(Dialog & parent)
+       : base_class(parent, _("Float Options"))
 {}
 
 
index 2cdf4fc543be4da2819548938b8f6304514ccf04..9211cf1e8236bd3ebbdc69ce32413e668866191d 100644 (file)
@@ -13,7 +13,7 @@
 #define FORMFLOAT_H
 
 
-#include "FormBase.h"
+#include "FormDialogView.h"
 #include "RadioButtonGroup.h"
 
 class ControlFloat;
@@ -22,10 +22,10 @@ struct FD_float;
 /** This class provides an XForms implementation of the Float
     Dialog.
  */
-class FormFloat : public FormCB<ControlFloat, FormDB<FD_float> > {
+class FormFloat : public FormController<ControlFloat, FormView<FD_float> > {
 public:
        ///
-       FormFloat();
+       FormFloat(Dialog &);
 private:
        /// Set the Params variable for the Controller.
        virtual void apply();
index 7ce6f0692eb60d5550baa24c1bf062e91c915ba9..798e210faa28e09cb9a4a2fe9bf2eae031b4d25e 100644 (file)
@@ -64,7 +64,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_East FL_NoGravity
 name: check_page
-callback: C_FormBaseInputCB
+callback: C_FormDialogView_InputCB
 argument: 0
 
 --------------------
@@ -82,7 +82,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_West FL_NoGravity
 name: check_bottom
-callback: C_FormBaseInputCB
+callback: C_FormDialogView_InputCB
 argument: 0
 
 --------------------
@@ -100,7 +100,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_West FL_NoGravity
 name: check_top
-callback: C_FormBaseInputCB
+callback: C_FormDialogView_InputCB
 argument: 0
 
 --------------------
@@ -118,7 +118,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_East FL_NoGravity
 name: check_here
-callback: C_FormBaseInputCB
+callback: C_FormDialogView_InputCB
 argument: 0
 
 --------------------
@@ -136,7 +136,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_SouthWest FL_SouthWest
 name: button_restore
-callback: C_FormBaseRestoreCB
+callback: C_FormDialogView_RestoreCB
 argument: 0
 
 --------------------
@@ -154,7 +154,7 @@ shortcut: ^M
 resize: FL_RESIZE_NONE
 gravity: FL_SouthEast FL_SouthEast
 name: button_ok
-callback: C_FormBaseOKCB
+callback: C_FormDialogView_OKCB
 argument: 0
 
 --------------------
@@ -172,7 +172,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_SouthEast FL_SouthEast
 name: button_apply
-callback: C_FormBaseApplyCB
+callback: C_FormDialogView_ApplyCB
 argument: 0
 
 --------------------
@@ -190,7 +190,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_SouthEast FL_SouthEast
 name: button_close
-callback: C_FormBaseCancelCB
+callback: C_FormDialogView_CancelCB
 argument: 0
 
 --------------------
@@ -208,7 +208,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_SouthWest FL_SouthWest
 name: check_wide
-callback: C_FormBaseInputCB
+callback: C_FormDialogView_InputCB
 argument: 0
 
 --------------------
@@ -226,7 +226,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_NoGravity FL_NoGravity
 name: check_force
-callback: C_FormBaseInputCB
+callback: C_FormDialogView_InputCB
 argument: 0
 
 --------------------
@@ -262,7 +262,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_West FL_NoGravity
 name: radio_alternatives
-callback: C_FormBaseInputCB
+callback: C_FormDialogView_InputCB
 argument: 0
 
 --------------------
@@ -280,7 +280,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_West FL_NoGravity
 name: radio_here_definitely
-callback: C_FormBaseInputCB
+callback: C_FormDialogView_InputCB
 argument: 0
 
 --------------------
@@ -298,7 +298,7 @@ shortcut:
 resize: FL_RESIZE_NONE
 gravity: FL_West FL_NoGravity
 name: radio_default
-callback: C_FormBaseInputCB
+callback: C_FormDialogView_InputCB
 argument: 0
        value: 1
 
index d7d99921acded62842d34f61771f182f5f4824dd..1285dcce1bd1e428b41f745a4af9e5bb51e7980b 100644 (file)
@@ -1,3 +1,10 @@
+2003-03-05  Angus Leeming  <leeming@lyx.org>
+
+       * insetcollapsable.C (draw): cache the BufferView.
+
+       * insetfloat.[Ch]: define a new class InsetFloatMailer and use
+       it to communicate with the frontend dialogs.
+
 2003-03-05  Angus Leeming  <leeming@lyx.org>
 
        * insetfloat.[Ch]: move the params into a separate InsetFloatParams
index 8ad264f22bc7c96dffef7e736b242264767774c2..c87ad118d5154992326ff95d40395183e7d81774 100644 (file)
@@ -29,6 +29,7 @@
 #include "frontends/Painter.h"
 #include "frontends/LyXView.h"
 
+#include "support/LAssert.h"
 #include "support/LOstream.h"
 #include "support/lstrings.h"
 
@@ -184,6 +185,9 @@ void InsetCollapsable::draw_collapsed(Painter & pain,
 void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
                            int baseline, float & x, bool cleared) const
 {
+       lyx::Assert(bv);
+       cache(bv);
+
        if (need_update != NONE) {
                const_cast<InsetText *>(&inset)->update(bv, f, true);
                bv->text->status(bv, LyXText::CHANGED_IN_DRAW);
index 87c4beb2feb94d62748785aa44dd8e671945632d..0293a8032702abcf3b1ceed7d3ad8817a91deddf 100644 (file)
 
 
 #include "insetfloat.h"
+#include "insettext.h"
+
+#include "buffer.h"
+#include "BufferView.h"
+#include "debug.h"
+#include "Floating.h"
+#include "FloatList.h"
+#include "funcrequest.h"
 #include "gettext.h"
+#include "iterators.h"
+#include "LaTeXFeatures.h"
 #include "lyxfont.h"
-#include "BufferView.h"
+#include "lyxlex.h"
 #include "lyxtext.h"
-#include "insets/insettext.h"
+
 #include "support/LOstream.h"
 #include "support/lstrings.h"
-#include "FloatList.h"
-#include "LaTeXFeatures.h"
-#include "debug.h"
-#include "Floating.h"
-#include "buffer.h"
+
 #include "frontends/LyXView.h"
 #include "frontends/Dialogs.h"
-#include "lyxlex.h"
-#include "iterators.h"
 
 using std::ostream;
 using std::endl;
@@ -144,41 +148,59 @@ InsetFloat::InsetFloat(InsetFloat const & in, bool same_id)
 
 InsetFloat::~InsetFloat()
 {
-       hideDialog();
+       InsetFloatMailer mailer(*this);
+       mailer.hideDialog();
 }
 
 
-void InsetFloat::writeParams(ostream & os) const
+dispatch_result InsetFloat::localDispatch(FuncRequest const & cmd)
 {
-       os << "Float " // getInsetName()
-          << params_.type << '\n';
+       Inset::RESULT result = UNDISPATCHED;
 
-       if (!params_.placement.empty()) {
-               os << "placement " << params_.placement << "\n";
+       switch (cmd.action) {
+       case LFUN_INSET_MODIFY: {
+               InsetFloatParams params;
+               InsetFloatMailer::string2params(cmd.argument, params);
+
+               params_.placement = params.placement;
+               params_.wide      = params.wide;
+
+               cmd.view()->updateInset(this, true);
+               result = DISPATCHED;
        }
-       if (params_.wide) {
-               os << "wide true\n";
-       } else {
-               os << "wide false\n";
+       break;
+       default:
+               result = InsetCollapsable::localDispatch(cmd);
        }
+
+       return result;
 }
 
 
-void InsetFloat::write(Buffer const * buf, ostream & os) const
+void InsetFloatParams::write(ostream & os) const
 {
-       writeParams(os);
-       InsetCollapsable::write(buf, os);
+       os << "Float " // getInsetName()
+          << type << '\n';
+
+       if (!placement.empty()) {
+               os << "placement " << placement << "\n";
+       }
+       if (wide) {
+               os << "wide true\n";
+       } else {
+               os << "wide false\n";
+       }
 }
 
 
-void InsetFloat::readParams(Buffer const * buf, LyXLex & lex)
+void InsetFloatParams::read(LyXLex & lex)
 {
        if (lex.isOK()) {
                lex.next();
                string token = lex.getString();
                if (token == "placement") {
                        lex.next();
-                       params_.placement = lex.getString();
+                       placement = lex.getString();
                } else {
                        // take countermeasures
                        lex.pushToken(token);
@@ -188,10 +210,7 @@ void InsetFloat::readParams(Buffer const * buf, LyXLex & lex)
                if (token == "wide") {
                        lex.next();
                        string const tmptoken = lex.getString();
-                       if (tmptoken == "true")
-                               wide(true, buf->params);
-                       else
-                               wide(false, buf->params);
+                       wide = (tmptoken == "true");
                } else {
                        lyxerr << "InsetFloat::Read:: Missing wide!"
                               << endl;
@@ -202,9 +221,17 @@ void InsetFloat::readParams(Buffer const * buf, LyXLex & lex)
 }
 
 
+void InsetFloat::write(Buffer const * buf, ostream & os) const
+{
+       params_.write(os);
+       InsetCollapsable::write(buf, os);
+}
+
+
 void InsetFloat::read(Buffer const * buf, LyXLex & lex)
 {
-       readParams(buf, lex);
+       params_.read(lex);
+       wide(params_.wide, buf->params);
        InsetCollapsable::read(buf, lex);
 }
 
@@ -299,7 +326,9 @@ bool InsetFloat::insetAllowed(Inset::Code code) const
 bool InsetFloat::showInsetDialog(BufferView * bv) const
 {
        if (!inset.showInsetDialog(bv)) {
-               bv->owner()->getDialogs().showFloat(const_cast<InsetFloat *>(this));
+               InsetFloat * tmp = const_cast<InsetFloat *>(this);
+               InsetFloatMailer mailer(*tmp);
+               mailer.showDialog();
        }
        return true;
 }
@@ -364,3 +393,51 @@ void InsetFloat::addToToc(toc::TocList & toclist, Buffer const * buf) const
                }
        }
 }
+
+
+InsetFloatMailer::InsetFloatMailer(InsetFloat & inset)
+       : name_("float"), inset_(inset)
+{}
+
+
+string const InsetFloatMailer::inset2string() const
+{
+       return params2string(name(), inset_.params());
+}
+
+
+void InsetFloatMailer::string2params(string const & in,
+                                    InsetFloatParams & params)
+{
+       params = InsetFloatParams();
+
+       string name;
+       string body = split(in, name, ' ');
+
+       if (name != "float" || body.empty())
+               return;
+
+       // This is part of the inset proper that is usually swallowed
+       // by Buffer::readInset
+       body = split(body, name, '\n');
+       if (!prefixIs(name, "Float "))
+               return;
+
+       istringstream data(body);
+       LyXLex lex(0,0);
+       lex.setStream(data);
+
+       params.read(lex);
+}
+
+
+string const
+InsetFloatMailer::params2string(string const & name,
+                               InsetFloatParams const & params)
+{
+       ostringstream data;
+       data << name << ' ';
+       params.write(data);
+
+       return data.str();
+}
index 39d60657694c256dab360d4688a7f290a1b9a617..bb12e01faf170cd714614110aa79283f88f5325e 100644 (file)
 #include "insetcollapsable.h"
 #include "toc.h"
 
-#include <boost/signals/signal0.hpp>
-
 class Painter;
 
 struct InsetFloatParams {
        ///
        InsetFloatParams() : placement("htbp"), wide(false) {}
        ///
+       void write(std::ostream & os) const;
+       ///
+       void read(LyXLex & lex);
+       ///
        string type;
        ///
        string placement;
@@ -44,6 +46,10 @@ public:
        InsetFloat(InsetFloat const &, bool same_id = false);
        ///
        ~InsetFloat();
+
+       ///
+       virtual dispatch_result localDispatch(FuncRequest const & cmd); 
+
        ///
        void write(Buffer const * buf, std::ostream & os) const;
        ///
@@ -81,17 +87,37 @@ public:
        ///
        bool  showInsetDialog(BufferView *) const;
        ///
-       boost::signal0<void> hideDialog;
-       ///
        InsetFloatParams const & params() const { return params_; }
-       ///
-       void writeParams(std::ostream & os) const;
-       ///
-       void readParams(Buffer const * buf, LyXLex & lex);
        
 private:
        ///
        InsetFloatParams params_;
 };
 
+
+#include "mailinset.h"
+
+
+class InsetFloatMailer : public MailInset {
+public:
+       ///
+       InsetFloatMailer(InsetFloat & inset);
+       ///
+       virtual Inset & inset() const { return inset_; }
+       ///
+       virtual string const & name() const { return name_; }
+       ///
+       virtual string const inset2string() const;
+       ///
+       static void string2params(string const &, InsetFloatParams &);
+       ///
+       static string const params2string(string const & name,
+                                         InsetFloatParams const &);
+private:
+       ///
+       string const name_;
+       ///
+       InsetFloat & inset_;
+};
+
 #endif
index 1df52b8b554304933cf9d6510f98ab3b74aef072..9cafae74d5e3d669087b366e1fde0499cf1a73b8 100644 (file)
@@ -661,4 +661,3 @@ InsetIncludeMailer::params2string(string const & name,
 
        return data.str();
 }
-