Language picker for dictionary fully implemented.

Originally committed to SVN as r670.
This commit is contained in:
Rodrigo Braz Monteiro 2007-01-01 04:53:55 +00:00
parent 62c1f80eea
commit 166e7cba7c
3 changed files with 73 additions and 5 deletions

View File

@ -96,6 +96,7 @@ void OptionsManager::LoadDefaults() {
// Dictionary // Dictionary
SetText(_T("Dictionaries path"),_T("dictionaries")); SetText(_T("Dictionaries path"),_T("dictionaries"));
SetText(_T("Dictionary language"),_T("en_US")); SetText(_T("Dictionary language"),_T("en_US"));
SetText(_T("Thesaurus language"),_T("en_US"));
// Video Options // Video Options
SetInt(_T("Video Check Script Res"), 0); SetInt(_T("Video Check Script Res"), 0);

View File

@ -36,6 +36,8 @@
//////////// ////////////
// Includes // Includes
#include <wx/wxprec.h>
#include <wx/intl.h>
#include "subs_edit_ctrl.h" #include "subs_edit_ctrl.h"
#include "subs_edit_box.h" #include "subs_edit_box.h"
#include "options.h" #include "options.h"
@ -428,8 +430,10 @@ BEGIN_EVENT_TABLE(SubsTextEditCtrl,wxScintilla)
EVT_MENU(EDIT_MENU_UNDO,SubsTextEditCtrl::OnUndo) EVT_MENU(EDIT_MENU_UNDO,SubsTextEditCtrl::OnUndo)
EVT_MENU(EDIT_MENU_SELECT_ALL,SubsTextEditCtrl::OnSelectAll) EVT_MENU(EDIT_MENU_SELECT_ALL,SubsTextEditCtrl::OnSelectAll)
EVT_MENU(EDIT_MENU_ADD_TO_DICT,SubsTextEditCtrl::OnAddToDictionary) EVT_MENU(EDIT_MENU_ADD_TO_DICT,SubsTextEditCtrl::OnAddToDictionary)
EVT_MENU_RANGE(EDIT_MENU_SUGGESTIONS,EDIT_MENU_SUGGESTIONS+16,SubsTextEditCtrl::OnUseSuggestion) EVT_MENU_RANGE(EDIT_MENU_SUGGESTIONS,EDIT_MENU_THESAURUS-1,SubsTextEditCtrl::OnUseSuggestion)
EVT_MENU_RANGE(EDIT_MENU_THESAURUS_SUGS,EDIT_MENU_THESAURUS_SUGS+2000,SubsTextEditCtrl::OnUseThesaurusSuggestion) EVT_MENU_RANGE(EDIT_MENU_THESAURUS_SUGS,EDIT_MENU_DIC_LANGUAGE-1,SubsTextEditCtrl::OnUseThesaurusSuggestion)
EVT_MENU_RANGE(EDIT_MENU_DIC_LANGS,EDIT_MENU_THES_LANGUAGE-1,SubsTextEditCtrl::OnSetDicLanguage)
EVT_MENU_RANGE(EDIT_MENU_THES_LANGS,EDIT_MENU_THES_LANGS+100,SubsTextEditCtrl::OnSetThesLanguage)
END_EVENT_TABLE() END_EVENT_TABLE()
@ -488,7 +492,6 @@ void SubsTextEditCtrl::ShowPopupMenu(int activePos) {
// Append "add word" // Append "add word"
menu.Append(EDIT_MENU_ADD_TO_DICT,wxString::Format(_("Add \"%s\" to dictionary"),currentWord.c_str()))->Enable(spellchecker->CanAddWord(currentWord)); menu.Append(EDIT_MENU_ADD_TO_DICT,wxString::Format(_("Add \"%s\" to dictionary"),currentWord.c_str()))->Enable(spellchecker->CanAddWord(currentWord));
menu.AppendSeparator();
} }
// Spelled right // Spelled right
@ -505,8 +508,31 @@ void SubsTextEditCtrl::ShowPopupMenu(int activePos) {
} }
// Separator // Separator
if (!thesaurus) menu.AppendSeparator(); //if (!thesaurus) menu.AppendSeparator();
} }
// Language list
wxArrayString langs = spellchecker->GetLanguageList(); // This probably should be cached...
if (langs.Count()) {
// Current language
wxString curLang = Options.AsText(_T("Dictionary Language"));
// Languages
wxMenu *languageMenu = new wxMenu();
wxMenuItem *cur;
wxString name;
const wxLanguageInfo *info;
for (unsigned int i=0;i<langs.Count();i++) {
info = wxLocale::FindLanguageInfo(langs[i]);
if (info) name = info->Description;
else name = langs[i];
cur = languageMenu->AppendRadioItem(EDIT_MENU_DIC_LANGS+i,name);
if (langs[i] == curLang) cur->Check();
}
menu.AppendSubMenu(languageMenu,_("Language"));
}
else menu.Append(EDIT_MENU_DIC_LANGUAGE,_("No Dictionaries Available"))->Enable(false);
menu.AppendSeparator();
} }
// Thesaurus // Thesaurus
@ -777,6 +803,41 @@ void SubsTextEditCtrl::OnUseThesaurusSuggestion(wxCommandEvent &event) {
} }
///////////////////////////
// Set dictionary language
void SubsTextEditCtrl::OnSetDicLanguage(wxCommandEvent &event) {
// Get language list
wxArrayString langs = spellchecker->GetLanguageList();
// Set dictionary
int index = event.GetId() - EDIT_MENU_DIC_LANGS;
spellchecker->SetLanguage(langs[index]);
Options.SetText(_T("Dictionary language"),langs[index]);
Options.Save();
// Update styling
UpdateStyle();
}
//////////////////////////
// Set thesaurus language
void SubsTextEditCtrl::OnSetThesLanguage(wxCommandEvent &event) {
// Get language list
wxArrayString langs = thesaurus->GetLanguageList();
// Set language
int index = event.GetId() - EDIT_MENU_THES_LANGS;
thesaurus->SetLanguage(langs[index]);
Options.SetText(_T("Thesaurus language"),langs[index]);
Options.Save();
// Update styling
UpdateStyle();
}
////////////////////////////////
// Set selection, unicode-aware // Set selection, unicode-aware
void SubsTextEditCtrl::SetSelectionU(int start, int end) { void SubsTextEditCtrl::SetSelectionU(int start, int end) {
SetSelection(GetUnicodePosition(start),GetUnicodePosition(end)); SetSelection(GetUnicodePosition(start),GetUnicodePosition(end));

View File

@ -82,6 +82,8 @@ private:
void OnAddToDictionary(wxCommandEvent &event); void OnAddToDictionary(wxCommandEvent &event);
void OnUseSuggestion(wxCommandEvent &event); void OnUseSuggestion(wxCommandEvent &event);
void OnUseThesaurusSuggestion(wxCommandEvent &event); void OnUseThesaurusSuggestion(wxCommandEvent &event);
void OnSetDicLanguage(wxCommandEvent &event);
void OnSetThesLanguage(wxCommandEvent &event);
public: public:
SubsEditBox *control; SubsEditBox *control;
@ -112,5 +114,9 @@ enum {
EDIT_MENU_SUGGESTION, EDIT_MENU_SUGGESTION,
EDIT_MENU_SUGGESTIONS, EDIT_MENU_SUGGESTIONS,
EDIT_MENU_THESAURUS = 1450, EDIT_MENU_THESAURUS = 1450,
EDIT_MENU_THESAURUS_SUGS EDIT_MENU_THESAURUS_SUGS,
EDIT_MENU_DIC_LANGUAGE = 1600,
EDIT_MENU_DIC_LANGS,
EDIT_MENU_THES_LANGUAGE = 1700,
EDIT_MENU_THES_LANGS
}; };