]> git.lyx.org Git - lyx.git/blobdiff - src/intl.C
Small fixes
[lyx.git] / src / intl.C
index d88362747bca9b7c211984c58ebed2c130f5c27e..371d44da9ba1fde56cee4df3f82b56e4354055e1 100644 (file)
@@ -4,7 +4,7 @@
  *           LyX, The Document Processor
  *      
  *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-1999 The LyX Team.
+ *           Copyright 1995-2000 The LyX Team.
  *
  * ====================================================== */
 
 #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);
 }
 
 
@@ -130,12 +149,8 @@ void Intl::KeyMapPrim()
        fl_set_button(fd_form_keymap->KeyOnBtn2, 0);
 
        /* read text from choice */
-       int i = Language->get();
+       int const i = Language->get();
 
-#if 0
-       if (lyxerr.debugging(Debug::KBMAP))
-               lyxerr << "Table: " << tex_babel[i-1] << endl;
-#endif
        string p;
        if (i == otherkeymap)
                p = fl_get_input(fd_form_keymap->OtherKeymap);
@@ -165,12 +180,8 @@ void Intl::KeyMapSec()
        fl_set_button(fd_form_keymap->KeyOnBtn2, 1);
 
        /* read text from choice */
-       int i = Language2->get();
+       int const i = Language2->get();
 
-#if 0
-       if (lyxerr.debugging(Debug::KBMAP))
-               lyxerr << "Table: " << tex_babel[i-1] << endl;
-#endif
        string p;
        if (i == otherkeymap)
                p = fl_get_input(fd_form_keymap->OtherKeymap2);
@@ -191,23 +202,16 @@ void Intl::KeyMapSec()
        }
 }
 
-
-void Intl::LCombo(int, void * v)
-{
-       Intl * itl = static_cast<Intl*>(v);
-       itl->Keymap(23);
-       return;
-}
-
-
-void Intl::LCombo2(int, void * v)
+void Intl::LCombo(int, void * v, Combox * combox)
 {
        Intl * itl = static_cast<Intl*>(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)) {
@@ -242,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();
 
@@ -275,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);
@@ -283,39 +287,31 @@ void Intl::InitKeyMapper(bool on)
        Language2->add(120, 110, 160, 30, 300); // Secondary
        fl_end_form();
 
-#if 0
        int n = 0;
-       while (true)
-               if (!strlen(tex_babel[n]))
-                       break;
-               else {
-                       Language->addto(tex_babel[n]);
-                       Language2->addto(tex_babel[n]);
-                       ++n;
-               }
-#else
-       int n = 1;
        // 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.c_str());
-               Language2->addto((*cit).second.lang.c_str());
+               Language->addto((*cit).second.lang());
+               Language2->addto((*cit).second.lang());
                ++n;
        }
-#endif
+
        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());
        }
@@ -326,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);
 }
 
 
@@ -375,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"));
 }