X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fintl.C;h=371d44da9ba1fde56cee4df3f82b56e4354055e1;hb=f676dacf9c69d8c906653f54d00342c01de6facf;hp=806808eac29803020010b81cd7fd17b8065aa779;hpb=d8b96c598c7cc488518c5b63907899400a789d56;p=lyx.git diff --git a/src/intl.C b/src/intl.C index 806808eac2..371d44da9b 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,23 +28,43 @@ #include "lyxrc.h" #include "trans_mgr.h" #include "support/lstrings.h" +#include "language.h" +#include "frontends/Dialogs.h" // redrawGUI -extern LyXRC * lyxrc; +#ifdef SIGC_CXX_NAMESPACES +using SigC::slot; +#endif + +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), + : 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; + r_ = Dialogs::redrawGUI.connect(slot(this, &Intl::redraw)); +} + +Intl::~Intl() +{ + r_.disconnect(); + delete trans; +} + + +void Intl::redraw() +{ + if (fd_form_keymap && fd_form_keymap->KeyMap->visible) + fl_redraw_form(fd_form_keymap->KeyMap); } @@ -129,10 +149,7 @@ void Intl::KeyMapPrim() fl_set_button(fd_form_keymap->KeyOnBtn2, 0); /* read text from choice */ - int i = Language->get(); - - if (lyxerr.debugging(Debug::KBMAP)) - lyxerr << "Table: " << tex_babel[i-1] << endl; + int const i = Language->get(); string p; if (i == otherkeymap) @@ -163,10 +180,7 @@ void Intl::KeyMapSec() fl_set_button(fd_form_keymap->KeyOnBtn2, 1); /* read text from choice */ - int i = Language2->get(); - - if (lyxerr.debugging(Debug::KBMAP)) - lyxerr << "Table: " << tex_babel[i-1] << endl; + int const i = Language2->get(); string p; if (i == otherkeymap) @@ -188,23 +202,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)) { @@ -239,7 +246,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(); @@ -272,7 +279,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); @@ -281,27 +288,30 @@ 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())) { - Language->select(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())) { + if (!Language2->select_text(sec_lang)) { Language2->select(n + 1); fl_set_input(fd_form_keymap->OtherKeymap2, sec_lang.c_str()); } @@ -312,7 +322,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); } @@ -361,6 +371,7 @@ void Intl::MenuKeymap() { if (fd_form_keymap->KeyMap->visible) { fl_raise_form(fd_form_keymap->KeyMap); - } else fl_show_form(fd_form_keymap->KeyMap, FL_PLACE_MOUSE, - FL_FULLBORDER, _("Key Mappings")); + } else fl_show_form(fd_form_keymap->KeyMap, + FL_PLACE_MOUSE | FL_FREE_SIZE, FL_TRANSIENT, + _("Key Mappings")); }