]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/controllers/ControlCharacter.C
fix crash due to invalidated iterator
[lyx.git] / src / frontends / controllers / ControlCharacter.C
index a8c7f183973326c3c26913c8ee33d4c28929f292..ec47153efa66a09d3165f991ef6f22ad0b238d65 100644 (file)
@@ -1,49 +1,41 @@
 /**
  * \file ControlCharacter.C
- * Copyright 2001 The LyX Team.
- * See the file COPYING.
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- * \author Angus Leeming, a.leeming@ic.ac.uk
+ * \author Angus Leeming
+ *
+ * Full author contact details are available in file CREDITS.
  */
 
-#include <vector>
-
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
 #include <config.h>
 
-#include "ViewBase.h"
-#include "ButtonControllerBase.h"
 #include "ControlCharacter.h"
+#include "ButtonController.h"
+
 #include "buffer.h"
-#include "Dialogs.h"
-#include "Liason.h"
-#include "LyXView.h"
-#include "bufferview_funcs.h" // ToggleAndShow
-#include "gettext.h"
+#include "bufferparams.h"
+#include "bufferview_funcs.h"
+#include "funcrequest.h"
 #include "language.h"
-#include "BufferView.h"
+#include "LColor.h"
 
-using Liason::setMinibuffer;
-using SigC::slot;
-using std::vector;
+using bv_funcs::font2string;
 
+using std::string;
 
-ControlCharacter::ControlCharacter(LyXView & lv, Dialogs & d)
-       : ControlDialogBD(lv, d),
+namespace lyx {
+namespace frontend {
+
+ControlCharacter::ControlCharacter(Dialog & parent)
+       : Dialog::Controller(parent),
          font_(0), toggleall_(false)
-{
-       d_.showCharacter.connect(slot(this, &ControlCharacter::show));
-       d_.setUserFreeFont.connect(slot(this, &ControlCharacter::apply));
-}
+{}
 
 
-void ControlCharacter::setParams()
+bool ControlCharacter::initialiseParams(string const &)
 {
-       // Do this the first time only. Used as a flag for whether or not the
-       // view has been built
+       // Do this the first time only.
        if (!font_.get())
                font_.reset(new LyXFont(LyXFont::ALL_IGNORE));
 
@@ -52,27 +44,29 @@ void ControlCharacter::setParams()
            getSeries()   != LyXFont::IGNORE_SERIES ||
            getShape()    != LyXFont::IGNORE_SHAPE  ||
            getSize()     != LyXFont::IGNORE_SIZE ||
-           getBar()      != character::IGNORE ||
+           getBar()      != IGNORE ||
            getColor()    != LColor::ignore ||
            font_->language() != ignore_language)
-               bc().valid();
+               dialog().bc().valid();
+
+       return true;
 }
 
 
-void ControlCharacter::apply()
+void ControlCharacter::clearParams()
+{}
+
+
+void ControlCharacter::dispatchParams()
 {
-       // Nothing to apply. (Can be called from the Toolbar.)
+       // Nothing to dispatch. (Can be called from the Toolbar.)
        if (!font_.get())
                return;
 
-       // Apply from the view if it's visible. Otherwise, use the stored values
-       if (lv_.view()->available())
-               view().apply();
-
-       toggleAndShow(lv_.view(), *(font_.get()), toggleall_);
-       lv_.view()->setState();
-       lv_.buffer()->markDirty();
-       setMinibuffer(&lv_, _("Character set"));
+       string data;
+       if (font2string(*font_.get(), toggleall_, data)) {
+               kernel().dispatch(FuncRequest(getLfun(), data));
+       }
 }
 
 
@@ -132,51 +126,51 @@ void ControlCharacter::setSize(LyXFont::FONT_SIZE val)
 }
 
 
-character::FONT_STATE ControlCharacter::getBar() const
+FONT_STATE ControlCharacter::getBar() const
 {
        if (!font_.get())
-               return character::IGNORE;
+               return IGNORE;
 
        if (font_->emph() == LyXFont::TOGGLE)
-               return character::EMPH_TOGGLE;
+               return EMPH_TOGGLE;
 
        if (font_->underbar() == LyXFont::TOGGLE)
-               return character::UNDERBAR_TOGGLE;
+               return UNDERBAR_TOGGLE;
 
        if (font_->noun() == LyXFont::TOGGLE)
-               return character::NOUN_TOGGLE;
+               return NOUN_TOGGLE;
 
        if (font_->emph() == LyXFont::IGNORE &&
            font_->underbar() == LyXFont::IGNORE &&
            font_->noun() == LyXFont::IGNORE)
-               return character::IGNORE;
+               return IGNORE;
 
-       return character::INHERIT;
+       return INHERIT;
 }
 
 
-void ControlCharacter::setBar(character::FONT_STATE val)
+void ControlCharacter::setBar(FONT_STATE val)
 {
        switch (val) {
-       case character::IGNORE:
+       case IGNORE:
                font_->setEmph(LyXFont::IGNORE);
                font_->setUnderbar(LyXFont::IGNORE);
                font_->setNoun(LyXFont::IGNORE);
                break;
 
-       case character::EMPH_TOGGLE:
+       case EMPH_TOGGLE:
                font_->setEmph(LyXFont::TOGGLE);
                break;
 
-       case character::UNDERBAR_TOGGLE:
+       case UNDERBAR_TOGGLE:
                font_->setUnderbar(LyXFont::TOGGLE);
                break;
 
-       case character::NOUN_TOGGLE:
+       case NOUN_TOGGLE:
                font_->setNoun(LyXFont::TOGGLE);
                break;
 
-       case character::INHERIT:
+       case INHERIT:
                font_->setEmph(LyXFont::INHERIT);
                font_->setUnderbar(LyXFont::INHERIT);
                font_->setNoun(LyXFont::INHERIT);
@@ -185,7 +179,7 @@ void ControlCharacter::setBar(character::FONT_STATE val)
 }
 
 
-LColor::color ControlCharacter::getColor() const
+LColor_color ControlCharacter::getColor() const
 {
        if (!font_.get())
                return LColor::ignore;
@@ -194,7 +188,7 @@ LColor::color ControlCharacter::getColor() const
 }
 
 
-void ControlCharacter::setColor(LColor::color val)
+void ControlCharacter::setColor(LColor_color val)
 {
        switch (val) {
        case LColor::ignore:
@@ -220,17 +214,17 @@ string ControlCharacter::getLanguage() const
 {
        if (font_.get() && font_->language())
                return font_->language()->lang();
-       return _("No change");
+       return "ignore";
 }
 
 
 void ControlCharacter::setLanguage(string const & val)
 {
-       if (val == _("No change"))
+       if (val == "ignore")
                font_->setLanguage(ignore_language);
 
-       else if ( val == _("Reset"))
-               font_->setLanguage(lv_.buffer()->params.language);
+       else if (val == "reset")
+               font_->setLanguage(kernel().buffer().params().language);
 
        else
                font_->setLanguage(languages.getLanguage(val));
@@ -247,3 +241,6 @@ void ControlCharacter::setToggleAll(bool t)
 {
        toggleall_ = t;
 }
+
+} // namespace frontend
+} // namespace lyx