#include "LyXAction.h"
#include "LyX.h" // for lastfiles
#include "LyXFunc.h"
+#include "LyXRC.h"
#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"
{
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)));
+
}
LastFilesSection::LastFiles const & lf = theSession().lastFiles().lastFiles();
LastFilesSection::LastFiles::const_iterator lfit = lf.begin();
- int ii = 1;
+ unsigned int ii = 1;
- for (; lfit != lf.end() && ii < 10; ++lfit, ++ii) {
+ for (; lfit != lf.end() && ii <= lyxrc.num_lastfiles; ++lfit, ++ii) {
string const file = lfit->absFilename();
- QString const label = QString("%1. %2|%3").arg(ii)
- .arg(toqstr(makeDisplayPath(file, 30))).arg(ii);
+ QString label;
+ if (ii < 10)
+ label = QString("%1. %2|%3").arg(ii)
+ .arg(toqstr(makeDisplayPath(file, 30))).arg(ii);
+ else
+ label = QString("%1. %2").arg(ii)
+ .arg(toqstr(makeDisplayPath(file, 30)));
add(MenuItem(MenuItem::Command, label, FuncRequest(LFUN_FILE_OPEN, file)));
}
}
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);
if (!item.submenu().empty())
add(item);
} else
- add(MenuItem(MenuItem::Info, qt_("<No documents open>")));
+ add(MenuItem(MenuItem::Info, qt_("<No Documents Open>")));
}
}
}
if (empty)
- add(MenuItem(MenuItem::Info, qt_("<No bookmarks saved yet>")));
+ add(MenuItem(MenuItem::Info, qt_("<No Bookmarks Saved Yet>")));
}
}
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) {
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;
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);
}
}
// 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!")));
}
// OK, so we avoid this unnecessary overhead (JMarc)
if (!buf) {
- add(MenuItem(MenuItem::Info, qt_("<No document open>")));
+ add(MenuItem(MenuItem::Info, qt_("<No Document Open>")));
return;
}
if (cit->second.size() > 0 )
expandToc2(cit->second, 0, cit->second.size(), 0);
else
- add(MenuItem(MenuItem::Info, qt_("<Empty table of contents>")));
+ add(MenuItem(MenuItem::Info, qt_("<Empty Table of Contents>")));
}
}
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;
}
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())));
}
}
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)))));
}
}
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();
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;
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);
}