]> git.lyx.org Git - lyx.git/blobdiff - src/trans.C
Rewording in GTK document dialog
[lyx.git] / src / trans.C
index 6f1e3809f7461ba87cb56d4360c1eef60c64f004..3230fabf1874e2be0f8cf9103d3e9efcbd39360c 100644 (file)
@@ -1,68 +1,41 @@
-#include <config.h>
+/**
+ * \file trans.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
-#endif
+#include <config.h>
 
-#include "LyXView.h"
 #include "trans.h"
 #include "support/filetools.h"
 #include "support/lstrings.h"
-#include "tex-strings.h"
 #include "lyxlex.h"
 #include "debug.h"
 #include "trans_mgr.h"
 
+using lyx::support::contains;
+using lyx::support::LibFileSearch;
+
 using std::endl;
+using std::string;
+using std::map;
 
 
 // KmodInfo
 KmodInfo::KmodInfo()
 {
-#if 0
-       exception_list = 0;
-#endif
-}
-
-
-#if 0
-// Default Trans
-bool DefaultTrans::init_ = false;
-
-
-DefaultTrans::DefaultTrans()
-{
-       if (init_ == false) {
-               // Do initialization
-               init_ = true;
-       }
 }
 
 
-#if 0
-string const DefaultTrans::process(char c, TransManager & k)
-{
-       char dummy[2] = "?";
-       dummy[0] = c;
-    
-       return k.normalkey(c, dummy);
-}
-#else
-string const DefaultTrans::process(char c, TransManager & k)
-{
-       return k.normalkey(c);
-}
-#endif
-#endif
-
 // Trans class
 
 Trans::Trans()
 {
-#if 0
-       for (int i = 0; i < TEX_MAX_ACCENT + 1; ++i)
-               kmod_list_[i] = 0;
-#endif
 }
 
 
@@ -75,17 +48,6 @@ Trans::~Trans()
 void Trans::InsertException(KmodException & exclist, char c,
                            string const & data, bool flag, tex_accent accent)
 {
-#if 0
-       keyexc p = new Keyexc; 
-       p->next = exclist;
-       p->c = c;
-
-       p->data = data;
-       p->combined = flag;
-       p->accent = accent;
-
-       exclist = p;
-#else
        Keyexc p;
        p.c = c;
        p.data = data;
@@ -94,42 +56,19 @@ void Trans::InsertException(KmodException & exclist, char c,
        exclist.insert(exclist.begin(), p);
        // or just
        // exclist.push_back(p);
-#endif
 }
 
 
 void Trans::FreeException(KmodException & exclist)
 {
-#if 0
-       Trans::keyexc p = exclist;
-       while (p) {
-               p = exclist->next;
-               delete exclist;
-               exclist = p;
-       }
-#else
        exclist.clear();
-#endif
 }
 
 
 void Trans::FreeKeymap()
 {
-#if 0
-       for (int i = 0; i < 256; ++i)
-               if (!keymap_[i].empty()) {
-                       keymap_[i].erase();
-               }
-       for (int i = 0; i < TEX_MAX_ACCENT + 1; ++i)
-               if (kmod_list_[i]) {
-                       FreeException(kmod_list_[i]->exception_list);
-                       delete kmod_list_[i];
-                       kmod_list_[i] = 0;
-               }
-#else
        kmod_list_.clear();
        keymap_.clear();
-#endif
 }
 
 
@@ -165,63 +104,23 @@ struct keyword_item kmapTags[K_LAST - 1] = {
 tex_accent getkeymod(string const &);
 
 
-#if 0
-void Trans::AddDeadkey(tex_accent accent, string const & keys,
-                      string const & allowed)
-#else
 void Trans::AddDeadkey(tex_accent accent, string const & keys)
-#endif
 {
-#if 0
-       if (kmod_list_[accent]) {
-               FreeException(kmod_list_[accent]->exception_list);
-               
-               delete kmod_list_[accent];
-       }
-       
-       kmod_list_[accent] = new KmodInfo;
-       kmod_list_[accent]->data = keys;
-       kmod_list_[accent]->accent = accent;
-#else
        KmodInfo tmp;
        tmp.data = keys;
        tmp.accent = accent;
        kmod_list_[accent] = tmp;
-#endif
-#if 0
-       if (allowed == "native") { 
-               kmod_list_[accent]->allowed= lyx_accent_table[accent].native;
-       } else {
-               kmod_list_[accent]->allowed = allowed;
-       }
 
-       for (string::size_type i = 0; i < keys.length(); ++i) {
-               string & temp =
-                       keymap_[static_cast<unsigned char>(keys[i])];
-               if (!temp.empty())
-                       temp.erase();
-
-               // But the question remains: "Should we be allowed
-               // to change bindings, without unbinding first?"
-               // Lgb
-               temp += char(0);
-               temp += char(accent);
-       }
-#else
        for (string::size_type i = 0; i < keys.length(); ++i) {
                string tmp;
                tmp += char(0);
                tmp += char(accent);
                keymap_[keys[i]] = tmp;
        }
-#endif
-#if 0
-       kmod_list_[accent]->exception_list = 0;
-#endif
 }
 
 
-int Trans::Load(LyXLex & lex) 
+int Trans::Load(LyXLex & lex)
 {
        bool error = false;
 
@@ -230,20 +129,20 @@ int Trans::Load(LyXLex & lex)
                case KMOD:
                {
                        if (lyxerr.debugging(Debug::KBMAP))
-                               lyxerr << "KMOD:\t" << lex.text() << endl;
+                               lyxerr << "KMOD:\t" << lex.getString() << endl;
                        if (lex.next(true)) {
                                if (lyxerr.debugging(Debug::KBMAP))
-                                       lyxerr << "key\t`" << lex.text()
-                                              << "'" << endl;
+                                       lyxerr << "key\t`" << lex.getString()
+                                              << '\'' << endl;
                        } else
                                return -1;
-                       
+
                        string const keys = lex.getString();
 
                        if (lex.next(true)) {
                                if (lyxerr.debugging(Debug::KBMAP))
-                                       lyxerr << "accent\t`" << lex.text()
-                                              << "'" << endl;
+                                       lyxerr << "accent\t`" << lex.getString()
+                                              << '\'' << endl;
                        } else
                                return -1;
 
@@ -258,33 +157,33 @@ int Trans::Load(LyXLex & lex)
                        // so that this field is not present anymore.
                        if (lex.next(true)) {
                                if (lyxerr.debugging(Debug::KBMAP))
-                                       lyxerr << "allowed\t`" << lex.text()
-                                              << "'" << endl;
+                                       lyxerr << "allowed\t`" << lex.getString()
+                                              << '\'' << endl;
                        } else
                                return -1;
 
-                       string const allowed = lex.getString();
+                       /* string const allowed = lex.getString(); */
                        AddDeadkey(accent, keys /*, allowed*/);
 #else
                        AddDeadkey(accent, keys);
 #endif
                        break;
-               }       
+               }
                case KCOMB: {
                        string str;
 
                        lyxerr[Debug::KBMAP] << "KCOMB:" << endl;
                        if (lex.next(true)) {
-                               str= lex.text();
+                               str = lex.getString();
                                lyxerr[Debug::KBMAP] << str << endl;
                        } else
                                return -1;
-                       
+
                        tex_accent accent_1 = getkeymod(str);
                        if (accent_1 == TEX_NOACCENT) return -1;
 
                        if (lex.next(true)) {
-                               str = lex.text();
+                               str = lex.getString();
                                lyxerr[Debug::KBMAP] << str << endl;
                        } else
                                return -1;
@@ -292,46 +191,19 @@ int Trans::Load(LyXLex & lex)
                        tex_accent accent_2= getkeymod(str);
                        if (accent_2 == TEX_NOACCENT) return -1;
 
-#if 0
-                       if (kmod_list_[accent_1] == 0
-                           || kmod_list_[accent_2] == 0)
-                               return -1;
-#else
-                       std::map<int, KmodInfo>::iterator it1 =
+                       map<int, KmodInfo>::iterator it1 =
                                kmod_list_.find(accent_1);
-                       std::map<int, KmodInfo>::iterator it2 =
+                       map<int, KmodInfo>::iterator it2 =
                                kmod_list_.find(accent_2);
                        if (it1 == kmod_list_.end()
                            || it2 == kmod_list_.end()) {
                                return -1;
                        }
-#endif
 
                        // Find what key accent_2 is on - should
                        // check about accent_1 also
-#if 0
-                       int key = 0;
-                       for (; key < 256; ++key) {
-                               if (!keymap_[key].empty()
-                                   && keymap_[key][0] == 0
-                                   && keymap_[key][1] == accent_2)
-                                       break;
-                       }
-                       string allowed;
-
-                       if (lex.next()) {
-                               allowed = lex.GetString();
-                               lyxerr[Debug::KBMAP] << "allowed: "
-                                                    << allowed << endl;
-                       } else
-                               return -1;
-
-                       InsertException(kmod_list_[accent_1].exception_list,
-                                       static_cast<char>(key), allowed,
-                                       true, accent_2);
-#else
-                       std::map<int, string>::iterator it = keymap_.begin();
-                       std::map<int, string>::iterator end = keymap_.end();
+                       map<int, string>::iterator it = keymap_.begin();
+                       map<int, string>::iterator end = keymap_.end();
                        for (; it != end; ++it) {
                                if (!it->second.empty()
                                    && it->second[0] == 0
@@ -346,31 +218,30 @@ int Trans::Load(LyXLex & lex)
                        } else {
                                return -1;
                        }
-                       
+
                        InsertException(kmod_list_[accent_1].exception_list,
                                        static_cast<char>(it->first), allowed,
                                        true, accent_2);
-#endif
                }
                break;
                case KMAP: {
                        unsigned char key_from;
 
                        if (lyxerr.debugging(Debug::KBMAP))
-                               lyxerr << "KMAP:\t" << lex.text() << endl;
+                               lyxerr << "KMAP:\t" << lex.getString() << endl;
                        if (lex.next(true)) {
-                               key_from = lex.text()[0];
+                               key_from = lex.getString()[0];
                                if (lyxerr.debugging(Debug::KBMAP))
-                                       lyxerr << "\t`" << lex.text() << "'"
+                                       lyxerr << "\t`" << lex.getString() << '\''
                                               << endl;
                        } else
                                return -1;
 
                        if (lex.next(true)) {
-                               string string_to = lex.text();
+                               string const string_to = lex.getString();
                                keymap_[key_from] = string_to;
                                if (lyxerr.debugging(Debug::KBMAP))
-                                       lyxerr << "\t`" << string_to << "'"
+                                       lyxerr << "\t`" << string_to << '\''
                                               << endl;
                        } else
                                return -1;
@@ -383,10 +254,10 @@ int Trans::Load(LyXLex & lex)
                        string str;
 
                        if (lyxerr.debugging(Debug::KBMAP))
-                               lyxerr << "KXMOD:\t" << lex.text() << endl;
+                               lyxerr << "KXMOD:\t" << lex.getString() << endl;
                        if (lex.next(true)) {
                                if (lyxerr.debugging(Debug::KBMAP))
-                                       lyxerr << "\t`" << lex.text() << "'"
+                                       lyxerr << "\t`" << lex.getString() << '\''
                                               << endl;
                                accent = getkeymod(lex.getString());
                        } else
@@ -394,17 +265,17 @@ int Trans::Load(LyXLex & lex)
 
                        if (lex.next(true)) {
                                if (lyxerr.debugging(Debug::KBMAP))
-                                       lyxerr << "\t`" << lex.text() << "'"
+                                       lyxerr << "\t`" << lex.getString() << '\''
                                               << endl;
-                               key = lex.text()[0];
+                               key = lex.getString()[0];
                        } else
                                return -1;
 
                        if (lex.next(true)) {
                                if (lyxerr.debugging(Debug::KBMAP))
-                                       lyxerr << "\t`" << lex.text() << "'"
+                                       lyxerr << "\t`" << lex.getString() << '\''
                                               << endl;
-                               str = lex.text();
+                               str = lex.getString();
                        } else
                                return -1;
 
@@ -427,41 +298,15 @@ int Trans::Load(LyXLex & lex)
 
 bool Trans::isAccentDefined(tex_accent accent, KmodInfo & i) const
 {
-#if 0
-       if (kmod_list_[accent] != 0) {
-               i = *kmod_list_[accent];
-               return true;
-       }
-       return false;
-#else
-       std::map<int, KmodInfo>::const_iterator cit = kmod_list_.find(accent);
+       map<int, KmodInfo>::const_iterator cit = kmod_list_.find(accent);
        if (cit != kmod_list_.end()) {
                i = cit->second;
                return true;
        }
        return false;
-#endif
 }
 
 
-#if 0
-string const Trans::process(char c, TransManager & k)
-{
-       string dt("?");
-       string const t = Match(static_cast<unsigned char>(c));
-
-       if (t.empty() && c != 0) {
-               dt[0] = c;
-               return k.normalkey(c, dt);
-       } else if (!t.empty() && t[0] != char(0)) {
-               dt = t;
-               return k.normalkey(c, dt);
-       } else {
-               return k.deadkey(c,
-                                *kmod_list_[static_cast<tex_accent>(t[1])]);
-       }
-}
-#else
 string const Trans::process(char c, TransManager & k)
 {
        string const t = Match(static_cast<unsigned char>(c));
@@ -472,16 +317,10 @@ string const Trans::process(char c, TransManager & k)
                //return k.normalkey(c);
                return t;
        } else {
-#if 0
-               return k.deadkey(c,
-                                *kmod_list_[static_cast<tex_accent>(t[1])]);
-#else
                return k.deadkey(c,
                                 kmod_list_[static_cast<tex_accent>(t[1])]);
-#endif
        }
 }
-#endif
 
 
 int Trans::Load(string const & language)
@@ -491,9 +330,9 @@ int Trans::Load(string const & language)
                return -1;
 
        FreeKeymap();
-       LyXLex lex(kmapTags, K_LAST-1);
+       LyXLex lex(kmapTags, K_LAST - 1);
        lex.setFile(filename);
-       
+
        int const res = Load(lex);
 
        if (res == 0) {
@@ -513,8 +352,8 @@ tex_accent getkeymod(string const & p)
                        lyxerr << "p = " << p
                               << ", lyx_accent_table[" << i
                               << "].name = `" << lyx_accent_table[i].name
-                              << "'" << endl;
-               
+                              << '\'' << endl;
+
                if (lyx_accent_table[i].name
                     && contains(p, lyx_accent_table[i].name)) {
                        lyxerr[Debug::KBMAP] << "Found it!" << endl;