X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt%2FMenus.cpp;h=f4a2358f3cf79f286bfce00bde57de191a16e7ee;hb=640918d0b1a9a0411fd3898fc7cd07e8c080c4f0;hp=8f5ae7c2813d5db131246e7e071a6e407925e28c;hpb=f1f475e1d32525a1a6b31e75367ee4697f621f77;p=features.git diff --git a/src/frontends/qt/Menus.cpp b/src/frontends/qt/Menus.cpp index 8f5ae7c281..f4a2358f3c 100644 --- a/src/frontends/qt/Menus.cpp +++ b/src/frontends/qt/Menus.cpp @@ -197,7 +197,9 @@ public: /** Commands to separate environments (context menu version). */ EnvironmentSeparatorsContext, /** This is the list of quotation marks available */ - SwitchQuotes + SwitchQuotes, + /** Options in the Zoom menu **/ + ZoomOptions }; explicit MenuItem(Kind kind) : kind_(kind), optional_(false) {} @@ -374,6 +376,7 @@ public: void expandCaptions(Buffer const * buf, bool switchcap = false); void expandEnvironmentSeparators(BufferView const *, bool contextmenu = false); void expandQuotes(BufferView const *); + void expandZoomOptions(BufferView const *); /// ItemList items_; /// @@ -489,7 +492,8 @@ void MenuDefinition::read(Lexer & lex) md_switchcaptions, md_env_separators, md_env_separatorscontext, - md_switchquotes + md_switchquotes, + md_zoomoptions }; LexerKeyword menutags[] = { @@ -530,7 +534,8 @@ void MenuDefinition::read(Lexer & lex) { "toc", md_toc }, { "toolbars", md_toolbars }, { "updateformats", md_updateformats }, - { "viewformats", md_viewformats } + { "viewformats", md_viewformats }, + { "zoomoptions", md_zoomoptions } }; lex.pushTable(menutags); @@ -687,6 +692,10 @@ void MenuDefinition::read(Lexer & lex) add(MenuItem(MenuItem::SwitchQuotes)); break; + case md_zoomoptions: + add(MenuItem(MenuItem::ZoomOptions)); + break; + case md_optsubmenu: case md_submenu: { lex.next(true); @@ -862,28 +871,34 @@ void MenuDefinition::expandSpellingSuggestions(BufferView const * bv) docstring const arg = wl.word() + " " + from_ascii(wl.lang()->lang()); add(MenuItem(MenuItem::Command, qt_("Add to personal dictionary|n"), FuncRequest(LFUN_SPELLING_ADD, arg))); - add(MenuItem(MenuItem::Command, qt_("Ignore|g"), + add(MenuItem(MenuItem::Command, qt_("Ignore this occurrence|g"), FuncRequest(LFUN_FONT_NO_SPELLCHECK, arg))); - add(MenuItem(MenuItem::Command, qt_("Ignore all|I"), + add(MenuItem(MenuItem::Command, qt_("Ignore all for this session|I"), FuncRequest(LFUN_SPELLING_IGNORE, arg))); + add(MenuItem(MenuItem::Command, qt_("Ignore all in this document|d"), + FuncRequest(LFUN_SPELLING_ADD_LOCAL, arg))); } } break; - case SpellChecker::LEARNED_WORD: { - LYXERR(Debug::GUI, "Learned Word."); + case SpellChecker::WORD_OK: { + if (wl.word().empty()) + break; + LYXERR(Debug::GUI, "Valid Word."); docstring const arg = wl.word() + " " + from_ascii(wl.lang()->lang()); add(MenuItem(MenuItem::Command, qt_("Remove from personal dictionary|r"), FuncRequest(LFUN_SPELLING_REMOVE, arg))); } break; + case SpellChecker::DOCUMENT_LEARNED_WORD: { + LYXERR(Debug::GUI, "Document-Learned Word."); + docstring const arg = wl.word() + " " + from_ascii(wl.lang()->lang()); + add(MenuItem(MenuItem::Command, qt_("Remove from document dictionary|r"), + FuncRequest(LFUN_SPELLING_REMOVE_LOCAL, arg))); + } + break; case SpellChecker::NO_DICTIONARY: LYXERR(Debug::GUI, "No dictionary for language " + from_ascii(wl.lang()->lang())); // FALLTHROUGH - case SpellChecker::WORD_OK: - case SpellChecker::COMPOUND_WORD: - case SpellChecker::ROOT_FOUND: - case SpellChecker::IGNORED_WORD: - break; } } @@ -1284,8 +1299,7 @@ void MenuDefinition::expandToc2(Toc const & toc_list, label += QString::number(++shortcut_count); } } - add(MenuItem(MenuItem::Command, label, - FuncRequest(toc_list[i].action()))); + add(MenuItem(MenuItem::Command, label, toc_list[i].action())); // separator after the menu heading if (toc_list[i].depth() < depth) add(MenuItem(MenuItem::Separator)); @@ -1313,8 +1327,7 @@ void MenuDefinition::expandToc2(Toc const & toc_list, break; } if (new_pos == pos + 1) { - add(MenuItem(MenuItem::Command, - label, FuncRequest(toc_list[pos].action()))); + add(MenuItem(MenuItem::Command, label, toc_list[pos].action())); } else { MenuDefinition sub; sub.expandToc2(toc_list, pos, new_pos, depth + 1, toc_type); @@ -1806,6 +1819,48 @@ void MenuDefinition::expandCaptions(Buffer const * buf, bool switchcap) } +void MenuDefinition::expandZoomOptions(BufferView const * bv) +{ + if (!bv) + return; + + add(MenuItem(MenuItem::Command, + toqstr(bformat(_("Reset to Default (%1$d%)|R"), + lyxrc.defaultZoom)), + FuncRequest(LFUN_BUFFER_ZOOM))); + add(MenuItem(MenuItem::Command, qt_("Zoom In|I"), + FuncRequest(LFUN_BUFFER_ZOOM_IN))); + add(MenuItem(MenuItem::Command, qt_("Zoom Out|O"), + FuncRequest(LFUN_BUFFER_ZOOM_OUT))); + add(MenuItem(MenuItem::Separator)); + // Offer some fractional values of the default + int z = lyxrc.defaultZoom * 1.75; + add(MenuItem(MenuItem::Command, + toqstr(bformat(_("[[ZOOM]]%1$d%"), z)), + FuncRequest(LFUN_BUFFER_ZOOM, convert(z)))); + z = lyxrc.defaultZoom * 1.5; + add(MenuItem(MenuItem::Command, + toqstr(bformat(_("[[ZOOM]]%1$d%"), z)), + FuncRequest(LFUN_BUFFER_ZOOM, convert(z)))); + z = lyxrc.defaultZoom * 1.25; + add(MenuItem(MenuItem::Command, + toqstr(bformat(_("[[ZOOM]]%1$d%"), z)), + FuncRequest(LFUN_BUFFER_ZOOM, convert(z)))); + z = lyxrc.defaultZoom * 0.75; + add(MenuItem(MenuItem::Command, + toqstr(bformat(_("[[ZOOM]]%1$d%"), z)), + FuncRequest(LFUN_BUFFER_ZOOM, convert(z)))); + z = lyxrc.defaultZoom * 0.5; + add(MenuItem(MenuItem::Command, + toqstr(bformat(_("[[ZOOM]]%1$d%"), z)), + FuncRequest(LFUN_BUFFER_ZOOM, convert(z)))); + z = lyxrc.defaultZoom * 0.25; + add(MenuItem(MenuItem::Command, + toqstr(bformat(_("[[ZOOM]]%1$d%"), z)), + FuncRequest(LFUN_BUFFER_ZOOM, convert(z)))); +} + + void MenuDefinition::expandQuotes(BufferView const * bv) { if (!bv) @@ -2423,6 +2478,10 @@ void Menus::Impl::expand(MenuDefinition const & frommenu, tomenu.expandQuotes(bv); break; + case MenuItem::ZoomOptions: + tomenu.expandZoomOptions(bv); + break; + case MenuItem::Submenu: { MenuItem item(*cit); item.setSubmenu(MenuDefinition(cit->submenuname()));