]> git.lyx.org Git - lyx.git/blobdiff - src/trans_mgr.C
remove unneeded functions
[lyx.git] / src / trans_mgr.C
index 923d84cf956fa3736d56c7cada15c014d95c334f..ba9bb1e35fca87a347d251bfef5a8a79436537e3 100644 (file)
@@ -1,28 +1,38 @@
-#include <config.h>
+/**
+ * \file trans_mgr.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ * \author Matthias Ettrich
+ *
+ * Full author contact details are available in file CREDITS.
+ */
 
-#ifdef __GNUG__
-#pragma implementation "trans_mgr.h"
-#endif
+#include <config.h>
 
 #include "trans_mgr.h"
-#include "trans.h"
-#include "lyxtext.h"
-#include "LString.h"
-#include "debug.h"
-#include "chset.h"
-#include "insets/insetlatexaccent.h"
+
 #include "BufferView.h"
-#include "buffer.h"
+#include "cursor.h"
+#include "debug.h"
 #include "lyxrc.h"
+#include "lyxtext.h"
+#include "trans.h"
+
+#include "insets/insetlatexaccent.h"
+
 #include "support/lstrings.h"
-#include "language.h"
+
+using lyx::support::split;
 
 using std::endl;
+using std::string;
 using std::pair;
 
+
 extern string const DoAccent(string const &, tex_accent);
 extern string const DoAccent(char, tex_accent);
-extern BufferView * current_view;
 
 
 // TransFSMData
@@ -30,7 +40,6 @@ TransFSMData::TransFSMData()
 {
        deadkey_ = deadkey2_ = 0;
        deadkey_info_.accent = deadkey2_info_.accent = TEX_NOACCENT;
-       comb_info_ = 0;
 }
 
 
@@ -45,12 +54,10 @@ TransInitState::TransInitState()
 }
 
 
-string const TransInitState::normalkey(char c, string const & t)
+string const TransInitState::normalkey(char c)
 {
        string res;
-       if (!t.empty()) res = t;
-       else res = c;
-       
+       res = c;
        return res;
 }
 
@@ -71,30 +78,21 @@ TransDeadkeyState::TransDeadkeyState()
 }
 
 
-string const TransDeadkeyState::normalkey(char c, string const & trans)
+string const TransDeadkeyState::normalkey(char c)
 {
        string res;
-       
-       // Check if it is an exception
-       KmodException l = deadkey_info_.exception_list;
-       while(l != 0) {
-               if (l->c == c) {
-                       res = l->data;
+
+       KmodException::iterator it = deadkey_info_.exception_list.begin();
+       KmodException::iterator end = deadkey_info_.exception_list.end();
+
+       for (; it != end; ++it) {
+               if (it->c == c) {
+                       res = it->data;
                        break;
                }
-               l = l->next;
        }
-       if (l == 0) {
-               // Not an exception. Check if it allowed
-               if (countChar(deadkey_info_.allowed, c) > 0) {
-                       res = DoAccent(c, deadkey_info_.accent);
-               } else {
-                       // Not allowed
-                       if (deadkey_!= 0)
-                               res = deadkey_;
-                       res+= TOKEN_SEP;
-                       res+= trans;
-               }
+       if (it == end) {
+               res = DoAccent(c, deadkey_info_.accent);
        }
        currentState = init_state_;
        return res;
@@ -104,7 +102,7 @@ string const TransDeadkeyState::normalkey(char c, string const & trans)
 string const TransDeadkeyState::deadkey(char c, KmodInfo d)
 {
        string res;
-       
+
        // Check if the same deadkey was typed twice
        if (deadkey_ == c) {
                res = deadkey_;
@@ -113,32 +111,30 @@ string const TransDeadkeyState::deadkey(char c, KmodInfo d)
                currentState = init_state_;
                return res;
        }
-       
+
        // Check if it is a combination or an exception
-       KmodException l;
-       l = deadkey_info_.exception_list;
-       
-       while(l) {
-               if (l->combined == true && l->accent == d.accent) {
+       KmodException::const_iterator cit = deadkey_info_.exception_list.begin();
+       KmodException::const_iterator end = deadkey_info_.exception_list.end();
+       for (; cit != end; ++cit) {
+               if (cit->combined == true && cit->accent == d.accent) {
                        deadkey2_ = c;
                        deadkey2_info_ = d;
-                       comb_info_ = l;
+                       comb_info_ = (*cit);
                        currentState = combined_state_;
                        return string();
                }
-               if (l->c == c) {
-                       res = l->data;
+               if (cit->c == c) {
+                       res = cit->data;
                        deadkey_ = 0;
                        deadkey_info_.accent = TEX_NOACCENT;
                        currentState = init_state_;
                        return res;
                }
-               l = l->next;
        }
-       
-       // Not a combination or an exception. 
+
+       // Not a combination or an exception.
        // Output deadkey1 and keep deadkey2
-       
+
        if (deadkey_!= 0)
                res = deadkey_;
        deadkey_ = c;
@@ -154,25 +150,11 @@ TransCombinedState::TransCombinedState()
 }
 
 
-string const TransCombinedState::normalkey(char c, string const & trans)
+string const TransCombinedState::normalkey(char c)
 {
-       string res;
-       
-       // Check if the key is allowed on the combination
-       if (countChar(comb_info_->data, c) > 0) {
-               string const temp = DoAccent(c, deadkey2_info_.accent);
-               res = DoAccent(temp, deadkey_info_.accent);
-               currentState = init_state_;
-       } else {
-               // Not allowed. Output deadkey1 and check deadkey2 + c
-               if (deadkey_ != 0)
-                       res += deadkey_;
-               res += TOKEN_SEP;
-               deadkey_ = deadkey2_;
-               deadkey_info_ = deadkey2_info_;
-               // Call deadkey state and leave it to setup the FSM
-               res += deadkey_state_->normalkey(c, trans);
-       }
+       string const temp = DoAccent(c, deadkey2_info_.accent);
+       string const res = DoAccent(temp, deadkey_info_.accent);
+       currentState = init_state_;
        return res;
 }
 
@@ -214,18 +196,16 @@ TransManager::TransManager()
 {}
 
 
-TransManager::~TransManager() 
-{ 
-       delete t1_;
-       delete t2_;
-}
+// For the sake of boost::scoped_ptr.
+TransManager::~TransManager()
+{}
 
 
 int TransManager::SetPrimary(string const & language)
 {
-       if (t1_->GetName() == language) 
+       if (t1_->GetName() == language)
                return 0;
-       
+
        return t1_->Load(language);
 }
 
@@ -234,7 +214,7 @@ int TransManager::SetSecondary(string const & language)
 {
        if (t2_->GetName() == language)
                return 0;
-       
+
        return t2_->Load(language);
 }
 
@@ -248,8 +228,8 @@ bool TransManager::setCharset(string const & str)
 void TransManager::EnablePrimary()
 {
        if (t1_->IsDefined())
-               active_ = t1_;
-       
+               active_ = t1_.get();
+
        lyxerr[Debug::KBMAP] << "Enabling primary keymap" << endl;
 }
 
@@ -257,7 +237,7 @@ void TransManager::EnablePrimary()
 void TransManager::EnableSecondary()
 {
        if (t2_->IsDefined())
-               active_ = t2_;
+               active_ = t2_.get();
        lyxerr[Debug::KBMAP] << "Enabling secondary keymap" << endl;
 }
 
@@ -272,11 +252,11 @@ void TransManager::DisableKeymap()
 void  TransManager::TranslateAndInsert(char c, LyXText * text)
 {
        string res = active_->process(c, *this);
-       
+
        // Process with tokens
        string temp;
-       
-       while(res.length() > 0) {
+
+       while (res.length() > 0) {
                res = split(res, temp, TransState::TOKEN_SEP);
                insert(temp, text);
        }
@@ -284,45 +264,33 @@ void  TransManager::TranslateAndInsert(char c, LyXText * text)
 
 
 void TransManager::insertVerbatim(string const & str, LyXText * text)
-{      
-       string::size_type const l = str.length();
-       
-       for (string::size_type i = 0; i < l; ++i) {
-               if (str[i] == '\"'
-#ifndef NO_LATEX
-                   && text->getFont(current_view->buffer(),text->cursor.par(),
-                                    text->cursor.pos()).latex() == LyXFont::OFF
-#endif
-                   && text->getFont(current_view->buffer(),text->cursor.par(),
-                                    text->cursor.pos()).language()->lang() != "hebrew")
-                       current_view->insertCorrectQuote();
-               else
-                       text->insertChar(current_view, str[i]);
-       }
+{
+       for (string::size_type i = 0, n = str.size(); i < n; ++i)
+               text->insertChar(text->bv()->cursor(), str[i]);
 }
 
 
 void TransManager::insert(string const & str, LyXText * text)
 {
-       // Go through the character encoding only if the current 
+       // Go through the character encoding only if the current
        // encoding (chset_->name()) matches the current font_norm
-       // (lyrxc->font_norm
-       
+       // (lyrxc->font_norm)
+
        // Is false to speak about "only if" the current encoding will
        // almost always be equal to font_norm.
        pair<bool, int> enc = chset_.encodeString(str);
-       if (chset_.getName() != lyxrc.font_norm || 
+       if (chset_.getName() != lyxrc.font_norm ||
            !enc.first) {
                // Could not find an encoding
                InsetLatexAccent ins(str);
-               if (ins.CanDisplay()) {
-                       text->insertInset(current_view, new InsetLatexAccent(ins));
+               if (ins.canDisplay()) {
+                       text->bv()->cursor().insert(new InsetLatexAccent(ins));
                } else {
                        insertVerbatim(str, text);
                }
                return;
        }
-       string tmp; tmp += static_cast<char>(enc.second);
+       string const tmp(1, static_cast<char>(enc.second));
        insertVerbatim(tmp, text);
 }
 
@@ -340,14 +308,11 @@ void TransManager::deadkey(char c, tex_accent accent, LyXText * t)
                        return;
                }
        }
-       
+
        if (active_ == &default_ || c == 0) {
                KmodInfo i;
                i.accent = accent;
-               i.allowed = lyx_accent_table[accent].native;
                i.data.erase();
-               i.exception_list = 0;
-               
                string res = trans_fsm_.currentState->deadkey(c, i);
                insert(res, t);
        } else {