X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfunc.C;h=8774312f1c59444c13782e051a3068d88e34b925;hb=00d24ec87650e4ac7db77ad54cb4aa2f688100f3;hp=860b6958bca394340912fb1dfb0beaa81d9a84de;hpb=55bf6460f304a4632af2136a62c8a82fb86053f3;p=lyx.git diff --git a/src/lyxfunc.C b/src/lyxfunc.C index 860b6958bc..8774312f1c 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -12,8 +12,9 @@ #include "Lsstream.h" -#include -#include +#include +#include + #include #include @@ -25,6 +26,7 @@ #endif #include "support/lyxalgo.h" +#include "support/LAssert.h" #include "version.h" #include "kbmap.h" #include "lyxfunc.h" @@ -53,9 +55,11 @@ #include "insets/insetmarginal.h" #include "insets/insetminipage.h" #include "insets/insetfloat.h" +#if 0 #include "insets/insetlist.h" -#include "insets/insettabular.h" #include "insets/insettheorem.h" +#endif +#include "insets/insettabular.h" #include "insets/insetcaption.h" #include "mathed/formulamacro.h" #include "mathed/math_cursor.h" @@ -90,6 +94,8 @@ #include "TextCache.h" #include "lyxfind.h" #include "undo_funcs.h" +#include "ParagraphParameters.h" +#include "figureForm.h" using std::pair; using std::make_pair; @@ -546,7 +552,7 @@ func_status::value_type LyXFunc::getStatus(int ac, case LFUN_MATH_MUTATE: { Inset * tli = owner->view()->theLockingInset(); if (tli && (tli->lyxCode() == Inset::MATH_CODE)) { - MathInsetTypes type = mathcursor->par()->GetType(); + MathInsetTypes type = mathcursor->formula()->getType(); func_status::value_type box = func_status::ToggleOff; if (argument == "inline") { if (type == LM_OT_SIMPLE) @@ -572,6 +578,7 @@ func_status::value_type LyXFunc::getStatus(int ac, // we just need to be in math mode to enable that case LFUN_MATH_SIZE: + case LFUN_MATH_SPACE: case LFUN_MATH_LIMITS: case LFUN_MATH_NONUMBER: case LFUN_MATH_NUMBER: @@ -631,10 +638,10 @@ func_status::value_type LyXFunc::getStatus(int ac, case LFUN_INSET_LIST: code = Inset::LIST_CODE; break; -#endif case LFUN_INSET_THEOREM: code = Inset::THEOREM_CODE; break; +#endif case LFUN_INSET_CAPTION: code = Inset::CAPTION_CODE; break; @@ -687,7 +694,6 @@ func_status::value_type LyXFunc::getStatus(int ac, case LFUN_LDOTS: case LFUN_END_OF_SENTENCE: case LFUN_PROTECTEDSPACE: - case LFUN_BREAKLINE: code = Inset::SPECIALCHAR_CODE; break; default: @@ -702,7 +708,7 @@ func_status::value_type LyXFunc::getStatus(int ac, if (disable) flag |= func_status::Disabled; - // the font related functions + // the font related functions (and a few others) func_status::value_type box = func_status::ToggleOff; LyXFont const & font = TEXT(false)->real_current_font; @@ -719,16 +725,14 @@ func_status::value_type LyXFunc::getStatus(int ac, if (font.series() == LyXFont::BOLD_SERIES) box = func_status::ToggleOn; break; -#ifndef NO_LATEX - case LFUN_TEX: - if (font.latex() == LyXFont::ON) - box = func_status::ToggleOn; - break; -#endif case LFUN_READ_ONLY_TOGGLE: if (buf->isReadonly()) box = func_status::ToggleOn; break; + case LFUN_APPENDIX: + if (TEXT(false)->cursor.par()->params().startOfAppendix()) + box = func_status::ToggleOn; + break; default: box = func_status::OK; break; @@ -798,9 +802,13 @@ string const LyXFunc::dispatch(int ac, owner->view()->hideCursor(); // We cannot use this function here - if (getStatus(ac, do_not_use_this_arg) & func_status::Disabled) + if (getStatus(ac, do_not_use_this_arg) & func_status::Disabled) { + lyxerr << "LyXFunc::Dispatch: " + << lyxaction.getActionName(ac) + << " [" << ac << "] is disabled at this location" + << endl; goto exit_with_message; - + } if (owner->view()->available() && owner->view()->theLockingInset()) { UpdatableInset::RESULT result; @@ -858,12 +866,40 @@ string const LyXFunc::dispatch(int ac, inset->edit(owner->view(),slx,sly,0); return string(); } else if (((result=owner->view()->theLockingInset()-> - localDispatch(owner->view(), action, - argument)) == - UpdatableInset::DISPATCHED) || - (result == UpdatableInset::DISPATCHED_NOUPDATE)) + localDispatch(owner->view(), action, argument)) == + UpdatableInset::DISPATCHED) || + (result == UpdatableInset::DISPATCHED_NOUPDATE)) + return string(); + else if (result == UpdatableInset::FINISHED) { + if (TEXT()->cursor.par()->isRightToLeftPar(owner->buffer()->params)) { + TEXT()->cursorRight(owner->view()); + moveCursorUpdate(true, false); + owner->showState(); + } + return string(); + } else if (result == UpdatableInset::FINISHED_RIGHT) { + if (!TEXT()->cursor.par()->isRightToLeftPar(owner->buffer()->params)) { + TEXT()->cursorRight(owner->view()); + moveCursorUpdate(true, false); + owner->showState(); + } + return string(); + } else if (result == UpdatableInset::FINISHED_UP) { + if (TEXT()->cursor.row()->previous()) { + TEXT()->cursorUp(owner->view()); + moveCursorUpdate(true, false); + owner->showState(); + } return string(); - else { + } else if (result == UpdatableInset::FINISHED_DOWN) { + if (TEXT()->cursor.row()->next()) + TEXT()->cursorDown(owner->view()); + else + TEXT()->cursorRight(owner->view()); + moveCursorUpdate(true, false); + owner->showState(); + return string(); + } else { //setMessage(N_("Text mode")); switch (action) { case LFUN_UNKNOWN_ACTION: @@ -902,8 +938,6 @@ string const LyXFunc::dispatch(int ac, } } - lyx::Assert(action != LFUN_SELECT_FILE_SYNC); - switch (action) { case LFUN_ESCAPE: @@ -1124,7 +1158,7 @@ string const LyXFunc::dispatch(int ac, case LFUN_REMOVEERRORS: if (owner->view()->removeAutoInsets()) { owner->view()->redraw(); - owner->view()->fitCursor(TEXT()); + owner->view()->fitCursor(); } break; @@ -1144,14 +1178,6 @@ string const LyXFunc::dispatch(int ac, owner->getDialogs()->setUserFreeFont(); break; -#ifndef NO_LATEX - case LFUN_TEX: - Tex(owner->view()); - owner->view()->setState(); - owner->showState(); - break; -#endif - case LFUN_RECONFIGURE: Reconfigure(owner->view()); break; @@ -1360,16 +1386,10 @@ string const LyXFunc::dispatch(int ac, case LFUN_GOTOFILEROW: { -#if 0 - char file_name[100]; - int row; - ::sscanf(argument.c_str(), " %s %d", file_name, &row); -#else string file_name; int row; istringstream istr(argument.c_str()); istr >> file_name >> row; -#endif // Must replace extension of the file to be .lyx and get full path string const s(ChangeExtension(file_name, ".lyx")); @@ -1399,10 +1419,13 @@ string const LyXFunc::dispatch(int ac, lyxerr[Debug::INFO] << "No matching paragraph found! [" << id << "]" << std::endl; break; + } else { + lyxerr << "Paragraph " << par->id() + << " found." << endl; } // Set the cursor - TEXT()->setCursor(owner->view(), par, 0); + owner->view()->text->setCursor(owner->view(), par, 0); owner->view()->setState(); owner->showState(); @@ -1452,30 +1475,6 @@ string const LyXFunc::dispatch(int ac, // --- insert characters ---------------------------------------- // --- Mathed stuff. If we are here, there is no locked inset yet. - - // Greek mode - case LFUN_GREEK: - { - if (!greek_kb_flag) { - greek_kb_flag = 1; - setMessage(N_("Math greek mode on")); - } else - greek_kb_flag = 0; - } - break; - - // Greek keyboard - case LFUN_GREEK_TOGGLE: - { - greek_kb_flag = greek_kb_flag ? 0 : 2; - if (greek_kb_flag) { - setMessage(N_("Math greek keyboard on")); - } else { - setMessage(N_("Math greek keyboard off")); - } - } - break; - case LFUN_MATH_EXTERN: case LFUN_MATH_NUMBER: case LFUN_MATH_NONUMBER: @@ -1708,7 +1707,7 @@ void LyXFunc::menuNew(bool fromTemplate) if (owner->view()->available()) { string const trypath = owner->buffer()->filepath; // If directory is writeable, use this as default. - if (IsDirWriteable(trypath) == 1) + if (IsDirWriteable(trypath)) initpath = trypath; } @@ -1834,7 +1833,7 @@ void LyXFunc::open(string const & fname) if (owner->view()->available()) { string const trypath = owner->buffer()->filepath; // If directory is writeable, use this as default. - if (IsDirWriteable(trypath) == 1) + if (IsDirWriteable(trypath)) initpath = trypath; } @@ -1867,8 +1866,14 @@ void LyXFunc::open(string const & fname) // get absolute path of file and add ".lyx" to the filename if // necessary - filename = FileSearch(string(), filename, "lyx"); + string const fullpath = FileSearch(string(), filename, "lyx"); + if (fullpath.empty()) { + WriteAlert(_("Error"), _("Could not find file"), filename); + return; + } + filename = fullpath; + // loads document string const disp_fn(MakeDisplayPath(filename)); @@ -1885,7 +1890,7 @@ void LyXFunc::open(string const & fname) owner->message(str.str().c_str()); } else { ostringstream str; - str << _("Could not open docuent") << ' ' << disp_fn; + str << _("Could not open document") << ' ' << disp_fn; owner->message(str.str().c_str()); } } @@ -1905,11 +1910,11 @@ void LyXFunc::doImport(string const & argument) if (owner->view()->available()) { string const trypath = owner->buffer()->filepath; // If directory is writeable, use this as default. - if (IsDirWriteable(trypath) == 1) + if (IsDirWriteable(trypath)) initpath = trypath; } - string const text = _("Select ") + formats.PrettyName(format) + string const text = _("Select ") + formats.prettyName(format) + _(" file to import"); FileDialog fileDlg(owner, text, @@ -1919,9 +1924,9 @@ void LyXFunc::doImport(string const & argument) make_pair(string(_("Examples")), string(AddPath(system_lyxdir, "examples")))); - string const extension = "*." + formats.Extension(format) - + "| " + formats.PrettyName(format) - + " (*." + formats.Extension(format) + ")"; + string const extension = "*." + formats.extension(format) + + "| " + formats.prettyName(format) + + " (*." + formats.extension(format) + ")"; FileDialog::Result result = fileDlg.Select(initpath, extension); @@ -2049,7 +2054,7 @@ void LyXFunc::initMiniBuffer() text += nicename; if (tmpbuf->lyxvc.inUse()) { text += " ["; - text += tmpbuf->lyxvc.version(); + text += tmpbuf->lyxvc.versionString(); text += ' '; text += tmpbuf->lyxvc.locker(); if (tmpbuf->isReadonly())