* LyX, The Document Processor
*
* Copyright 1995 Matthias Ettrich
- * Copyright 1995-1999 The LyX Team.
+ * Copyright 1995-2000 The LyX Team.
*
* ====================================================== */
#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;
}
void Intl::update()
{
- int off, prim, sec;
-
- off = prim = sec = 0;
+ int off = 0;
+ int prim = 0;
+ int sec = 0;
if (!keymapon) {
off = 1;
void Intl::KeyMapPrim()
{
- int i;
- string p;
-
fl_set_button(fd_form_keymap->KeyOffBtn, 0);
fl_set_button(fd_form_keymap->KeyOnBtn, 1);
fl_set_button(fd_form_keymap->KeyOnBtn2, 0);
/* read text from choice */
- i = Language->get();
-
- if (lyxerr.debugging(Debug::KBMAP))
- lyxerr << "Table: " << tex_babel[i-1] << endl;
+ int i = Language->get();
+ string p;
if (i == otherkeymap)
p = fl_get_input(fd_form_keymap->OtherKeymap);
else
/* 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)
}
}
-
-void Intl::LCombo(int, void * v)
+void Intl::LCombo(int, void * v, Combox * combox)
{
Intl * itl = static_cast<Intl*>(v);
- itl->Keymap(23);
+ if (combox == itl->Language)
+ itl->Keymap(23);
+ else if (combox == itl->Language2)
+ itl->Keymap(43);
return;
}
-
-void Intl::LCombo2(int, void * v)
-{
- Intl * itl = static_cast<Intl*>(v);
- itl->Keymap(43);
- return;
-}
-
-
void Intl::DispatchCallback(FL_OBJECT * ob, long code)
{
if (ob && (code == 0)) {
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 */
{
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();
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);
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
if (keymapon)
Keymap(23); // turn primary on
- trans->setCharset(lyxrc->font_norm.c_str());
+ trans->setCharset(lyxrc.font_norm);
}
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 */