X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FMenus.cpp;h=8de4f83257d98e75c7508b816216b44b04262085;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=7024bab3624753c9fc71e3a9406b2eb02adf8418;hpb=46dcc4fcd07be9db5733a012b8273122a8c8c663;p=lyx.git diff --git a/src/frontends/qt4/Menus.cpp b/src/frontends/qt4/Menus.cpp index 7024bab362..8de4f83257 100644 --- a/src/frontends/qt4/Menus.cpp +++ b/src/frontends/qt4/Menus.cpp @@ -46,10 +46,10 @@ #include "Paragraph.h" #include "ParIterator.h" #include "Session.h" -#include "SpellChecker.h" #include "TextClass.h" #include "TocBackend.h" #include "Toolbars.h" +#include "WordLangTuple.h" #include "insets/Inset.h" #include "insets/InsetCitation.h" @@ -718,29 +718,39 @@ void MenuDefinition::expandSpellingSuggestions(BufferView const * bv) { if (!bv) return; + WordLangTuple wl; + docstring_list suggestions; + pos_type from = bv->cursor().pos(); + pos_type to = from; Paragraph const & par = bv->cursor().paragraph(); - if (!par.isMisspelled(bv->cursor().pos())) + if (!par.spellCheck(from, to, wl, suggestions)) return; - LYXERR0("Misspelled Word!"); - - SpellChecker * speller = theSpellChecker(); - docstring word; - int i = 0; - MenuItem item(MenuItem::Submenu, qt_("more spelling suggestions")); - item.setSubmenu(MenuDefinition(qt_("more spelling suggestions"))); - while (!(word = speller->nextMiss()).empty()) { - LYXERR0("Misspelled Word = " << word); - MenuItem w(MenuItem::Command, toqstr(word), - FuncRequest(LFUN_WORD_REPLACE, word)); - if (i < 10) { + LYXERR(Debug::GUI, "Misspelled Word! Suggested Words = "); + size_t i = 0; + MenuItem item(MenuItem::Submenu, qt_("More Spelling Suggestions")); + item.setSubmenu(MenuDefinition(qt_("More Spelling Suggestions"))); + for (; i != suggestions.size(); ++i) { + docstring const & suggestion = suggestions[i]; + LYXERR(Debug::GUI, suggestion); + MenuItem w(MenuItem::Command, toqstr(suggestion), + FuncRequest(LFUN_WORD_REPLACE, suggestion)); + if (i < 10) add(w); - } else { + else item.submenu().add(w); - } - ++i; } if (i >= 10) add(item); + if (i > 0) + add(MenuItem(MenuItem::Separator)); + docstring arg = wl.word() + " " + from_ascii(wl.lang_code()); + if (!wl.lang_variety().empty()) + arg += from_ascii("-") + from_ascii(wl.lang_variety()); + add(MenuItem(MenuItem::Command, qt_("Add to personal dictionary|c"), + FuncRequest(LFUN_SPELLING_ADD, arg))); + add(MenuItem(MenuItem::Command, qt_("Ignore all|I"), + FuncRequest(LFUN_SPELLING_IGNORE, arg))); + } @@ -781,7 +791,8 @@ void MenuDefinition::expandDocuments() QString label = toqstr(b->fileName().displayName(20)); if (!b->isClean()) label += "*"; - bool const shown = guiApp->currentView()->workArea(*b); + bool const shown = guiApp->currentView() + ? guiApp->currentView()->workArea(*b) : false; int ii = shown ? vis : invis; if (ii < 10) label = QString::number(ii) + ". " + label + '|' + QString::number(ii); @@ -799,7 +810,7 @@ void MenuDefinition::expandDocuments() if (!item.submenu().empty()) add(item); } else - add(MenuItem(MenuItem::Info, qt_(""))); + add(MenuItem(MenuItem::Info, qt_(""))); } @@ -819,7 +830,7 @@ void MenuDefinition::expandBookmarks() } } if (empty) - add(MenuItem(MenuItem::Info, qt_(""))); + add(MenuItem(MenuItem::Info, qt_(""))); } @@ -851,6 +862,17 @@ void MenuDefinition::expandFormats(MenuItem::Kind kind, Buffer const * buf) } sort(formats.begin(), formats.end(), &compareFormat); + bool const view_update = (kind == MenuItem::ViewFormats + || kind == MenuItem::UpdateFormats); + + QString smenue; + if (view_update) + smenue = (kind == MenuItem::ViewFormats ? + qt_("View (Other Formats)|F") + : qt_("Update (Other Formats)|p")); + MenuItem item(MenuItem::Submenu, smenue); + item.setSubmenu(MenuDefinition(smenue)); + Formats::const_iterator fit = formats.begin(); Formats::const_iterator end = formats.end(); for (; fit != end ; ++fit) { @@ -878,8 +900,15 @@ void MenuDefinition::expandFormats(MenuItem::Kind kind, Buffer const * buf) break; case MenuItem::ViewFormats: case MenuItem::UpdateFormats: - if ((*fit)->name() == buf->getDefaultOutputFormat()) + if ((*fit)->name() == buf->getDefaultOutputFormat()) { + docstring lbl = (kind == MenuItem::ViewFormats ? + bformat(_("View [%1$s]|V"), qstring_to_ucs4(label)) + : bformat(_("Update [%1$s]|U"), qstring_to_ucs4(label))); + MenuItem w(MenuItem::Command, toqstr(lbl), + FuncRequest(action, (*fit)->name())); + add(w); continue; + } case MenuItem::ExportFormats: if (!(*fit)->documentFormat()) continue; @@ -891,13 +920,24 @@ void MenuDefinition::expandFormats(MenuItem::Kind kind, Buffer const * buf) if (!shortcut.isEmpty()) label += '|' + shortcut; - if (buf) - addWithStatusCheck(MenuItem(MenuItem::Command, label, - FuncRequest(action, (*fit)->name()))); - else - add(MenuItem(MenuItem::Command, label, - FuncRequest(action, (*fit)->name()))); + if (view_update) { + if (buf) + item.submenu().addWithStatusCheck(MenuItem(MenuItem::Command, label, + FuncRequest(action, (*fit)->name()))); + else + item.submenu().add(MenuItem(MenuItem::Command, label, + FuncRequest(action, (*fit)->name()))); + } else { + if (buf) + addWithStatusCheck(MenuItem(MenuItem::Command, label, + FuncRequest(action, (*fit)->name()))); + else + add(MenuItem(MenuItem::Command, label, + FuncRequest(action, (*fit)->name()))); + } } + if (view_update) + add(item); } @@ -956,7 +996,7 @@ void MenuDefinition::expandFlexInsert( } // FIXME This is a little clunky. if (items_.empty() && type == InsetLayout::CUSTOM) - add(MenuItem(MenuItem::Help, qt_("No custom insets defined!"))); + add(MenuItem(MenuItem::Help, qt_("No Custom Insets Defined!"))); } @@ -1024,7 +1064,7 @@ void MenuDefinition::expandToc(Buffer const * buf) // OK, so we avoid this unnecessary overhead (JMarc) if (!buf) { - add(MenuItem(MenuItem::Info, qt_(""))); + add(MenuItem(MenuItem::Info, qt_(""))); return; } @@ -1085,7 +1125,7 @@ void MenuDefinition::expandToc(Buffer const * buf) if (cit->second.size() > 0 ) expandToc2(cit->second, 0, cit->second.size(), 0); else - add(MenuItem(MenuItem::Info, qt_(""))); + add(MenuItem(MenuItem::Info, qt_(""))); } } @@ -1135,7 +1175,7 @@ void MenuDefinition::expandBranches(Buffer const * buf) BufferParams const & master_params = buf->masterBuffer()->params(); BufferParams const & params = buf->params(); if (params.branchlist().empty() && master_params.branchlist().empty() ) { - add(MenuItem(MenuItem::Help, qt_("No branches set for document!"))); + add(MenuItem(MenuItem::Help, qt_("No Branches Set for Document!"))); return; } @@ -1241,12 +1281,12 @@ void MenuDefinition::expandIndicesContext(Buffer const * buf, bool listof) p["type"] = cit->shortcut(); string const data = InsetCommand::params2string("index_print", p); addWithStatusCheck(MenuItem(MenuItem::Command, toqstr(cit->index()), - FuncRequest(LFUN_NEXT_INSET_MODIFY, data))); + FuncRequest(LFUN_INSET_MODIFY, data))); } else { docstring label = _("Index Entry"); label += " (" + cit->index() + ")"; addWithStatusCheck(MenuItem(MenuItem::Command, toqstr(label), - FuncRequest(LFUN_NEXT_INSET_MODIFY, + FuncRequest(LFUN_INSET_MODIFY, from_ascii("changetype ") + cit->shortcut()))); } } @@ -1287,7 +1327,7 @@ void MenuDefinition::expandCiteStyles(BufferView const * bv) CiteStyle cst = citeStyleList[ii - 1]; cs.style = cst; addWithStatusCheck(MenuItem(MenuItem::Command, toqstr(label), - FuncRequest(LFUN_NEXT_INSET_MODIFY, + FuncRequest(LFUN_INSET_MODIFY, "changetype " + from_utf8(citationStyleToString(cs))))); } } @@ -1781,7 +1821,7 @@ void Menus::fillMenuBar(QMenuBar * qmb, GuiView * view, bool initial) MenuDefinition menu; BufferView * bv = 0; if (view) - bv = view->view(); + bv = view->currentBufferView(); d->expand(d->menubar_, menu, bv); MenuDefinition::const_iterator m = menu.begin(); @@ -1821,11 +1861,8 @@ void Menus::updateMenu(Menu * qmenu) if (qmenu->d->name.isEmpty()) return; - // Here, We make sure that theLyXFunc points to the correct LyXView. - theLyXFunc().setLyXView(qmenu->d->view); - if (!d->hasMenu(qmenu->d->name)) { - qmenu->addAction(qt_("No action defined!")); + qmenu->addAction(qt_("No Action Defined!")); LYXERR(Debug::GUI, "\tWARNING: non existing menu: " << qmenu->d->name); return; @@ -1834,7 +1871,7 @@ void Menus::updateMenu(Menu * qmenu) MenuDefinition const & fromLyxMenu = d->getMenu(qmenu->d->name); BufferView * bv = 0; if (qmenu->d->view) - bv = qmenu->d->view->view(); + bv = qmenu->d->view->currentBufferView(); d->expand(fromLyxMenu, *qmenu->d->top_level_menu, bv); qmenu->d->populate(*qmenu, *qmenu->d->top_level_menu); }