X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fintl.C;h=ff1162d2a0f0a338b586486ab53b45114b80b752;hb=35204f8f33d7400a5fefeffea533fb4cb4097211;hp=b96fc747a0d392e78b226b75fdbe589f2172a982;hpb=a8a90bf854958562ddf588e3eddbc2b7cfa7f976;p=lyx.git diff --git a/src/intl.C b/src/intl.C index b96fc747a0..ff1162d2a0 100644 --- a/src/intl.C +++ b/src/intl.C @@ -1,372 +1,101 @@ -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-1999 The LyX Team. +/** + * \file intl.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * ======================================================*/ - -/* - * International support for LyX + * \author unknown + * \author Lars Gullik Bjønnes + * \author Angus Leeming + * \author John Levon + * + * Full author contact details are available in file CREDITS. */ #include -#ifdef __GNUG__ -#pragma implementation -#endif - -#include FORMS_H_LOCATION #include "intl.h" -#include "form1.h" -#include "tex-strings.h" -#include "combox.h" -#include "lyx_gui_misc.h" // CancelCloseBoxCB #include "debug.h" #include "lyxrc.h" -#include "trans_mgr.h" -#include "support/lstrings.h" - -extern LyXRC* lyxrc; - -// 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) -{ - keymapon = lyxrc->use_kbmap; - chsetcode = 0; - primarykeymap = false; - curkeymap = 0; - otherkeymap = 0; -} - - -Intl::~Intl() -{ -} -int Intl::SetPrimary(string const & lang) -{ - if (lyxerr.debugging(Debug::KBMAP)) - lyxerr << "Primary: `" << lang << "'" << endl; - return trans->SetPrimary(lang); -} +namespace lyx { -int Intl::SetSecondary(string const & lang) -{ - if (lyxerr.debugging(Debug::KBMAP)) - lyxerr << "Secondary: `" << lang << "'" << endl; - return trans->SetSecondary(lang); -} +using std::endl; -void Intl::update() +Intl::Intl() + : keymap(Intl::PRIMARY), keymapon(lyxrc.use_kbmap), + prim_lang(lyxrc.primary_kbmap), sec_lang(lyxrc.secondary_kbmap) { - int off,prim,sec; - - off=prim=sec=0; - - if (!keymapon) { - off=1; - } else { - if (primarykeymap) { - prim=1; - } else { - sec=1; - } - } - - fl_set_button(fd_form_keymap->KeyOffBtn,off); - fl_set_button(fd_form_keymap->KeyOnBtn,prim); - fl_set_button(fd_form_keymap->KeyOnBtn2,sec); } -void Intl::KeyMapOn(bool on) - /* turn on/off key mappings, status in keymapon */ +void Intl::keyMapOn(bool on) { keymapon = on; - if (!fd_form_keymap) return; - - fl_set_button(fd_form_keymap->KeyOffBtn, 0); - fl_set_button(fd_form_keymap->KeyOnBtn, 0); - fl_set_button(fd_form_keymap->KeyOnBtn2, 0); - if (on) { - if (primarykeymap) { - KeyMapPrim(); - } else { - KeyMapSec(); - } - } else { - fl_set_button(fd_form_keymap->KeyOffBtn, 1); - fl_hide_object(fd_form_keymap->KeymapErr); - trans->DisableKeymap(); - } + if (keymap == PRIMARY) + keyMapPrim(); + else + keyMapSec(); + } else + trans.disableKeymap(); } -void Intl::ToggleKeyMap() +void Intl::toggleKeyMap() { - if (keymapon && primarykeymap) { - KeyMapSec(); + if (keymapon && (keymap == PRIMARY)) { + keyMapSec(); } else if (keymapon) { - KeyMapOn(false); - } else - KeyMapPrim(); + keyMapOn(false); + } else + keyMapPrim(); } -void Intl::KeyMapPrim() +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; - - if (i == otherkeymap) - p = fl_get_input(fd_form_keymap->OtherKeymap); - else - p = Language->getline(); + if (!trans.setPrimary(prim_lang)) + trans.enablePrimary(); - curkeymap = i; - - if (p.empty() || trans->SetPrimary(p)) { - // error selecting keymap - fl_show_object(fd_form_keymap->KeymapErr); - update(); - } else { - // no error - trans->EnablePrimary(); - keymapon = true; - primarykeymap = true; - fl_hide_object(fd_form_keymap->KeymapErr); - } + keymapon = true; + keymap = PRIMARY; } -void Intl::KeyMapSec() +void Intl::keyMapSec() { - int i; - string p; - - fl_set_button(fd_form_keymap->KeyOffBtn, 0); - fl_set_button(fd_form_keymap->KeyOnBtn, 0); - fl_set_button(fd_form_keymap->KeyOnBtn2, 1); - - /* read text from choice */ - i = Language2->get(); - - if (lyxerr.debugging(Debug::KBMAP)) - lyxerr << "Table: " << tex_babel[i-1] << endl; - - if (i == otherkeymap) - p = fl_get_input(fd_form_keymap->OtherKeymap2); - else - p = Language2->getline(); - curkeymap = i; + if (!trans.setSecondary(sec_lang)) + trans.enableSecondary(); - if (p.empty() || trans->SetSecondary(p)) { - // error selecting keymap - fl_show_object(fd_form_keymap->KeymapErr); - update(); - } else { - // no error - trans->EnableSecondary(); - keymapon = true; - primarykeymap = false; - fl_hide_object(fd_form_keymap->KeymapErr); - } + keymapon = true; + keymap = SECONDARY; } -void Intl::LCombo(int, void *v) +void Intl::initKeyMapper(bool on) { - Intl *itl = (Intl*) v; - itl->Keymap(23); - return; -} + lyxerr[Debug::INIT] << "Initializing key mappings..." << endl; - -void Intl::LCombo2(int, void *v) -{ - Intl *itl = (Intl*) v; - itl->Keymap(43); - return; -} - - -void Intl::DispatchCallback(FL_OBJECT *ob,long code) -{ - if (ob && (code == 0)) { - fl_hide_form(ob->form); - return; - } - if (!ob || !(ob->u_vdata)) - return; - - Intl *itl=(Intl *)ob->u_vdata; - - 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 */ -{ - lyxerr[Debug::KBMAP] << "Initializing key mappings..." << endl; + if (trans.setPrimary(prim_lang) == -1) + prim_lang.erase(); + if (trans.setSecondary(sec_lang) == -1) + sec_lang.erase(); + trans.setCharset(lyxrc.font_norm); if (prim_lang.empty() && sec_lang.empty()) - keymapon = false; + keymapon = false; else keymapon = on; - Language = new Combox(FL_COMBOX_DROPLIST); - Language2 = new Combox(FL_COMBOX_DROPLIST); - Language->setcallback(LCombo,this); - Language2->setcallback(LCombo2,this); - - fd_form_keymap = create_form_KeyMap(); - - // Add the Intl* pointer - fd_form_keymap->AcceptChset->u_vdata= - fd_form_keymap->Charset->u_vdata= - fd_form_keymap->Accept->u_vdata= - fd_form_keymap->OtherKeymap->u_vdata= - fd_form_keymap->KeyOnBtn->u_vdata= - fd_form_keymap->KeyOffBtn->u_vdata= - fd_form_keymap->KeyOnBtn2->u_vdata=(void *)this; - - // add the callbacks. - fl_set_object_callback(fd_form_keymap->AcceptChset, - C_Intl_DispatchCallback,27); - fl_set_object_callback(fd_form_keymap->Charset, - C_Intl_DispatchCallback,26); - fl_set_object_callback(fd_form_keymap->Accept, - C_Intl_DispatchCallback,0); - - fl_set_object_callback(fd_form_keymap->KeyOnBtn, - C_Intl_DispatchCallback,23); - fl_set_object_callback(fd_form_keymap->KeyOffBtn, - C_Intl_DispatchCallback,3); - fl_set_object_callback(fd_form_keymap->KeyOnBtn2, - C_Intl_DispatchCallback,43); - - // Make sure pressing the close box does not kill LyX. (RvdK) - fl_set_form_atclose(fd_form_keymap->KeyMap, CancelCloseBoxCB, 0); - - 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()); + keyMapOn(keymapon); - // Adds two comboxes to the keyboard map - fl_addto_form(fd_form_keymap->KeyMap); - Language->add(120,30,160,30,300); // Primary - Language2->add(120,110,160,30,300); // Secondary - fl_end_form(); - - int n=0; - - 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); - 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); - fl_set_input(fd_form_keymap->OtherKeymap2, sec_lang.c_str()); - } - else - trans->SetSecondary(sec_lang); - - KeyMapOn(keymapon); if (keymapon) - Keymap(23); // turn primary on - - trans->setCharset(lyxrc->font_norm.c_str()); + keyMapPrim(); } -void Intl::Keymap(long code) -{ - char const *p; - - if (lyxerr.debugging(Debug::KBMAP)) - lyxerr << "KeyMap callback: " << code << endl; - - switch (code) { - case 0: - /* cancel/hide */ - fl_hide_form(fd_form_keymap->KeyMap); - break; - case 3: - case 23: - case 43: - if (code==3) { - KeyMapOn(false); - return; - } - code -= 19; // change to language change type code - - case 4: // 4 and 24 will never be called directly, they will only be - case 24: // called through 3,23,43 (lgb) - if (code==4) { - KeyMapPrim(); - } else { - KeyMapSec(); - } - break; - case 27: /* set new font norm */ - p = fl_get_input(fd_form_keymap->Charset); - if (trans->setCharset(p)) - fl_show_object(fd_form_keymap->ChsetErr); - else - fl_hide_object(fd_form_keymap->ChsetErr); - break; - } -} - - -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")); -} +} // namespace lyx