X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fintl.C;h=0f33480ee6a6db0af4ee3610db7a0c6b5181e405;hb=ebfcf1c0e72288b7131607af0330500c8739cead;hp=f59e997cba1391a92adbc7614aa3e78cfed1b541;hpb=ee1229d7431f99788d04e99fcd8c57de69b4acaf;p=lyx.git diff --git a/src/intl.C b/src/intl.C index f59e997cba..0f33480ee6 100644 --- a/src/intl.C +++ b/src/intl.C @@ -4,7 +4,7 @@ * LyX, The Document Processor * * Copyright 1995 Matthias Ettrich - * Copyright 1995-1999 The LyX Team. + * Copyright 1995-2000 The LyX Team. * * ====================================================== */ @@ -28,25 +28,31 @@ #include "lyxrc.h" #include "trans_mgr.h" #include "support/lstrings.h" +#include "language.h" -extern LyXRC * lyxrc; +using std::endl; // a wrapper around the callback static member. extern "C" void C_Intl_DispatchCallback(FL_OBJECT * ob, long code); Intl::Intl() - : prim_lang(lyxrc->primary_kbmap), - sec_lang(lyxrc->secondary_kbmap), - trans(new TransManager) + : prim_lang(lyxrc.primary_kbmap), + sec_lang(lyxrc.secondary_kbmap), + trans(new TransManager) { - keymapon = lyxrc->use_kbmap; + keymapon = lyxrc.use_kbmap; chsetcode = 0; primarykeymap = false; curkeymap = 0; otherkeymap = 0; } +Intl::~Intl() +{ + delete trans; +} + int Intl::SetPrimary(string const & lang) { @@ -66,9 +72,9 @@ int Intl::SetSecondary(string const & lang) void Intl::update() { - int off, prim, sec; - - off = prim = sec = 0; + int off = 0; + int prim = 0; + int sec = 0; if (!keymapon) { off = 1; @@ -130,9 +136,6 @@ void Intl::KeyMapPrim() /* read text from choice */ int i = Language->get(); - - if (lyxerr.debugging(Debug::KBMAP)) - lyxerr << "Table: " << tex_babel[i-1] << endl; string p; if (i == otherkeymap) @@ -164,9 +167,6 @@ void Intl::KeyMapSec() /* read text from choice */ int i = Language2->get(); - - if (lyxerr.debugging(Debug::KBMAP)) - lyxerr << "Table: " << tex_babel[i-1] << endl; string p; if (i == otherkeymap) @@ -188,23 +188,16 @@ void Intl::KeyMapSec() } } - -void Intl::LCombo(int, void * v) -{ - Intl * itl = static_cast(v); - itl->Keymap(23); - return; -} - - -void Intl::LCombo2(int, void * v) +void Intl::LCombo(int, void * v, Combox * combox) { Intl * itl = static_cast(v); - itl->Keymap(43); + if (combox == itl->Language) + itl->Keymap(23); + else if (combox == itl->Language2) + itl->Keymap(43); return; } - void Intl::DispatchCallback(FL_OBJECT * ob, long code) { if (ob && (code == 0)) { @@ -219,11 +212,13 @@ void Intl::DispatchCallback(FL_OBJECT * ob, long code) if (itl!= 0) itl->Keymap(code); } + extern "C" void C_Intl_DispatchCallback(FL_OBJECT * ob, long code) { Intl::DispatchCallback(ob, code); } + void Intl::InitKeyMapper(bool on) /* initialize key mapper */ { @@ -237,7 +232,7 @@ void Intl::InitKeyMapper(bool on) Language = new Combox(FL_COMBOX_DROPLIST); Language2 = new Combox(FL_COMBOX_DROPLIST); Language->setcallback(LCombo, this); - Language2->setcallback(LCombo2, this); + Language2->setcallback(LCombo, this); fd_form_keymap = create_form_KeyMap(); @@ -270,7 +265,7 @@ void Intl::InitKeyMapper(bool on) fl_hide_object(fd_form_keymap->KeymapErr); fl_hide_object(fd_form_keymap->ChsetErr); - fl_set_input(fd_form_keymap->Charset, lyxrc->font_norm.c_str()); + fl_set_input(fd_form_keymap->Charset, lyxrc.font_norm.c_str()); // Adds two comboxes to the keyboard map fl_addto_form(fd_form_keymap->KeyMap); @@ -279,28 +274,31 @@ void Intl::InitKeyMapper(bool on) fl_end_form(); int n = 0; + // Default is not in the language map +#ifdef DO_USE_DEFAULT_LANGUAGE + Language->addto("default"); + Language2->addto("default"); + ++n; +#endif + for (Languages::const_iterator cit = languages.begin(); + cit != languages.end(); ++cit) { + Language->addto((*cit).second.lang()); + Language2->addto((*cit).second.lang()); + ++n; + } - while (true) - if (!strlen(tex_babel[n])) - break; - else { - Language->addto(tex_babel[n]); - Language2->addto(tex_babel[n]); - n++; - } - Language->addto(_("other...")); Language2->addto(_("other...")); - otherkeymap = n+1; - if (!Language->select_text(prim_lang.c_str())) { + otherkeymap = n + 1; + if (!Language->select_text(prim_lang)) { Language->select(n+1); fl_set_input(fd_form_keymap->OtherKeymap, prim_lang.c_str()); } else trans->SetPrimary(prim_lang); - if (!Language2->select_text(sec_lang.c_str())) { - Language2->select(n+1); + if (!Language2->select_text(sec_lang)) { + Language2->select(n + 1); fl_set_input(fd_form_keymap->OtherKeymap2, sec_lang.c_str()); } else @@ -310,7 +308,7 @@ void Intl::InitKeyMapper(bool on) if (keymapon) Keymap(23); // turn primary on - trans->setCharset(lyxrc->font_norm.c_str()); + trans->setCharset(lyxrc.font_norm); } @@ -319,6 +317,9 @@ void Intl::Keymap(long code) if (lyxerr.debugging(Debug::KBMAP)) lyxerr << "KeyMap callback: " << code << endl; + // Did you wonder if it is possible to write spagetti code with + // other constructs thatn goto's? Well here we have a nice small + // spagetti example using a switch... (Lgb) switch (code) { case 0: /* cancel/hide */