#include "insets/insetindex.h"
#include "insets/insetinclude.h"
#include "insets/insetbib.h"
+#include "insets/insettext.h"
+#include "insets/insetert.h"
+#include "insets/insetgraphics.h"
+#include "insets/insetfoot.h"
#include "mathed/formulamacro.h"
#include "toolbar.h"
#include "spellchecker.h" // RVDK_PATCH_5
#include "support/syscall.h"
#include "support/lstrings.h"
#include "support/path.h"
-#include "lyxscreen.h"
#include "debug.h"
#include "lyxrc.h"
#include "lyxtext.h"
#include "ImportNoweb.h"
#include "layout.h"
#include "WorkArea.h"
+#include "lyxfr1.h"
extern bool cursor_follows_scrollbar;
extern tex_accent_struct get_accent(kb_action action);
extern void AutoSave();
-extern void MenuSearch();
extern void SetUpdateTimer(float timer = 0.3);
extern void FreeUpdateTimer();
extern bool PreviewDVI(Buffer *);
extern void LoadLyXFile(string const &);
extern void Reconfigure(BufferView *);
-extern int current_layout;
+extern LyXTextClass::size_type current_layout;
extern int getISOCodeFromLaTeX(char *);
extern void ShowLatexLog();
-extern void UpdateInset(BufferView *, Inset * inset, bool mark_dirty = true);
-
/* === globals =========================================================== */
bool LyXFunc::show_sc = true;
{
if (selecting || owner->view()->text->mark_set) {
owner->view()->text->SetSelection();
- owner->view()->getScreen()->ToggleToggle();
+ owner->view()->toggleToggle();
owner->view()->update(0);
} else {
owner->view()->update(-2); // this IS necessary
// (Matthias)
}
- owner->view()->getScreen()->ShowCursor();
+ owner->view()->showCursor();
/* ---> Everytime the cursor is moved, show the current font state. */
// should this too me moved out of this func?
//owner->getMiniBuffer()->Set(CurrentState());
- owner->view()->SetState();
+ owner->view()->setState();
}
selection_possible = false;
- if (owner->view()->available()
- && owner->view()->getScreen())
- owner->view()->getScreen()->HideCursor();
+ if (owner->view()->available())
+ owner->view()->hideCursor();
// We cannot use this function here
if (getStatus(action) & Disabled)
inset->GetCursorPos(slx, sly);
owner->view()->unlockInset(inset);
owner->view()->menuUndo();
- inset = static_cast<UpdatableInset*>(owner->view()->text->cursor.par->GetInset(owner->view()->text->cursor.pos));
- if (inset)
- inset->Edit(slx, sly);
+ inset = static_cast<UpdatableInset*>(
+ owner->view()->text->cursor.par->
+ GetInset(owner->view()->text->
+ cursor.pos));
+ if (inset)
+ inset->Edit(owner->view(),slx,sly,0);
+ return string();
+ } else if (action == LFUN_REDO) {
+ int slx, sly;
+ UpdatableInset * inset = owner->view()->
+ the_locking_inset;
+ inset->GetCursorPos(slx, sly);
+ owner->view()->unlockInset(inset);
+ owner->view()->menuRedo();
+ inset = static_cast<UpdatableInset*>(
+ owner->view()->text->cursor.par->
+ GetInset(owner->view()->text->
+ cursor.pos));
+ if (inset)
+ inset->Edit(owner->view(),slx,sly,0);
return string();
- } else
- if (action == LFUN_REDO) {
- int slx, sly;
- UpdatableInset * inset = owner->view()->the_locking_inset;
- inset->GetCursorPos(slx, sly);
- owner->view()->unlockInset(inset);
- owner->view()->menuRedo();
- inset = static_cast<UpdatableInset*>(owner->view()->text->cursor.par->GetInset(owner->view()->text->cursor.pos));
- if (inset)
- inset->Edit(slx, sly);
+ } else if (owner->view()->the_locking_inset->
+ LocalDispatch(owner->view(), action,
+ argument) ==
+ UpdatableInset::DISPATCHED)
+ return string();
+ else {
+ setMessage(N_("Text mode"));
+ LyXDirection direction = owner->view()->text->
+ cursor.par->getParDirection();
+ if ((action == -1) ||
+ ((action == LFUN_RIGHT) &&
+ (direction == LYX_DIR_LEFT_TO_RIGHT))) {
+ owner->view()->text->CursorRight();
+ moveCursorUpdate(false);
+ owner->getMiniBuffer()->
+ Set(CurrentState());
+ }
+ if ((action == LFUN_LEFT) &&
+ (direction == LYX_DIR_RIGHT_TO_LEFT)) {
+ owner->view()->text->CursorRight();
+ moveCursorUpdate(false);
+ owner->getMiniBuffer()->
+ Set(CurrentState());
+ }
+ if ((action == LFUN_LEFT) ||
+ (action == LFUN_RIGHT))
return string();
- } else
- if (owner->view()->the_locking_inset->LocalDispatch(action, argument.c_str()))
- return string();
- else {
- setMessage(N_("Text mode"));
- LyXDirection direction = owner->view()->text->cursor.par->getParDirection();
- if ( action == -1 ||
- (action == LFUN_RIGHT
- && direction == LYX_DIR_LEFT_TO_RIGHT)) {
- owner->view()->text->CursorRight();
- moveCursorUpdate(false);
- owner->getMiniBuffer()->Set(CurrentState());
- }
- if ( action == LFUN_LEFT
- && direction == LYX_DIR_RIGHT_TO_LEFT) {
- owner->view()->text->CursorRight();
- moveCursorUpdate(false);
- owner->getMiniBuffer()->Set(CurrentState());
- }
- if (action == LFUN_LEFT || action == LFUN_RIGHT)
- return string();
- }
+ }
}
}
// ??? Needed ???
// clear the selection (if there is any)
- owner->view()->getScreen()->ToggleSelection();
+ owner->view()->toggleSelection();
owner->view()->text->ClearSelection();
// Move cursor so that successive C-s 's will not stand in place.
// ??? Needed ???
// set the new selection
// SetSelectionOverLenChars(owner->view()->currentBuffer()->text, iLenSelected);
- owner->view()->getScreen()->ToggleSelection(false);
+ owner->view()->toggleSelection(false);
} else
LyXBell();
// REMOVED : if (owner->view()->getWorkArea()->focus)
- owner->view()->getScreen()->ShowCursor();
+ owner->view()->showCursor();
}
break;
case LFUN_PREFIX:
{
- if (owner->view()->available()
- && owner->view()->getScreen()) {
+ if (owner->view()->available()) {
owner->view()->update(-2);
}
string buf;
break;
case LFUN_CENTER: // this is center and redraw.
- owner->view()->beforeChange();
- if (owner->view()->text->cursor.y >
-#ifdef NEW_WA
- owner->view()->getWorkArea()->height() / 2)
-#else
- owner->view()->getWorkArea()->h / 2)
-#endif
- {
- owner->view()->getScreen()->
- Draw(owner->view()->text->cursor.y -
-#ifdef NEW_WA
- owner->view()->getWorkArea()->height() / 2
-#else
- owner->view()->getWorkArea()->h / 2
-#endif
- );
- } else { // <=
- owner->view()->getScreen()->
- Draw(0);
- }
- owner->view()->update(0);
- owner->view()->redraw();
+ owner->view()->center();
break;
case LFUN_APPENDIX:
break;
case LFUN_MENUWRITE:
+ owner->getMiniBuffer()->Set(_("Saving document"),
+ MakeDisplayPath(owner->buffer()->fileName()),
+ "...");
MenuWrite(owner->buffer());
+ //owner->getMiniBuffer()->
+ // Set(_("Document saved as"),
+ // MakeDisplayPath(owner->buffer()->fileName()));
+ //} else {
+ //owner->getMiniBuffer()->Set(_("Save failed!"));
+ //}
break;
case LFUN_MENUWRITEAS:
case LFUN_FIGURE:
Figure();
break;
-
+
+ case LFUN_INSERT_GRAPHICS:
+ {
+ Inset * new_inset = new InsetGraphics;
+ owner->view()->insertInset(new_inset);
+ break;
+ }
+
case LFUN_AUTOSAVE:
AutoSave();
break;
break;
case LFUN_MENUSEARCH:
- MenuSearch();
+ {
+ // Ok this is one _very_ bad solution, but I think that some
+ // of this will be rewritten as part of GUI indep anyway.
+ // Lgb
+ static LyXFindReplace FR_;
+ FR_.StartSearch(owner->view());
+ }
+
break;
case LFUN_PASTE:
case LFUN_TEX:
Tex();
- owner->view()->SetState();
+ owner->view()->setState();
owner->getMiniBuffer()->Set(CurrentState());
break;
}
else
Foot(owner->view());
- owner->view()->SetState();
+ owner->view()->setState();
break;
case LFUN_MARGINMELT:
Melt(owner->view());
} else
Margin(owner->view());
- owner->view()->SetState();
+ owner->view()->setState();
break;
// --- version control -------------------------------
// and current buffer's textclass (number). */
LyXTextClassList::ClassList::size_type tclass =
owner->view()->text->parameters->textclass;
- pair <bool, int> layout =
+ pair <bool, LyXTextClass::size_type> layout =
textclasslist.NumberOfLayout(tclass, argument);
// If the entry is obsolete, use the new one instead.
}
if (current_layout != layout.second) {
- owner->view()->getScreen()->HideCursor();
+ owner->view()->hideCursor();
current_layout = layout.second;
owner->view()->update(-2);
owner->view()->text->
case LFUN_RTL:
{
RTLCB();
- owner->view()->SetState();
+ owner->view()->setState();
owner->getMiniBuffer()->Set(CurrentState());
}
break;
inset->setFlag(InsetRef::PAGE_REF);
else
inset->setFlag(InsetRef::REF);
- UpdateInset(owner->view(), inset);
+ owner->view()->updateInset(inset, true);
} else {
setErrorMessage(N_("No cross-reference to toggle"));
}
case LFUN_SPELLCHECK:
if (lyxrc->isp_command != "none")
- ShowSpellChecker();
+ ShowSpellChecker(owner->view());
break; // RVDK_PATCH_5
// --- Cursor Movements -----------------------------
&& tmptext->cursor.par->GetChar(tmptext->cursor.pos)
== LyXParagraph::META_INSET
&& tmptext->cursor.par->GetInset(tmptext->cursor.pos)
- && tmptext->cursor.par->GetInset(tmptext->cursor.pos)->Editable() == 2){
+ && tmptext->cursor.par->GetInset(tmptext->cursor.pos)->Editable() == Inset::HIGHLY_EDITABLE){
Inset * tmpinset = tmptext->cursor.par->GetInset(tmptext->cursor.pos);
setMessage(tmpinset->EditMessage());
- tmpinset->Edit(0, 0);
+ tmpinset->Edit(owner->view(), 0, 0, 0);
break;
}
if (direction == LYX_DIR_LEFT_TO_RIGHT)
case LFUN_LEFT:
{
-#ifdef USE_PAINTER
// This is soooo ugly. Isn`t it possible to make
// it simpler? (Lgb)
LyXText * txt = owner->view()->text;
&& txt->cursor.par->GetChar(txt->cursor.pos)
== LyXParagraph::META_INSET
&& txt->cursor.par->GetInset(txt->cursor.pos)
- && txt->cursor.par->GetInset(txt->cursor.pos)->Editable() == 2) {
+ && txt->cursor.par->GetInset(txt->cursor.pos)->Editable() == Inset::HIGHLY_EDITABLE) {
Inset * tmpinset = txt->cursor.par->GetInset(txt->cursor.pos);
setMessage(tmpinset->EditMessage());
- tmpinset->Edit(tmpinset->width(owner->view()->painter(),
+ tmpinset->Edit(owner->view(),
+ tmpinset->width(owner->view()->painter(),
txt->GetFont(txt->cursor.par,
- txt->cursor.pos)), 0);
+ txt->cursor.pos)),
+ 0, 0);
break;
}
if (direction == LYX_DIR_RIGHT_TO_LEFT)
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState());
-#else
- // This is soooo ugly. Isn`t it possible to make
- // it simpler? (Lgb)
- LyXText * txt = owner->view()->text;
- LyXDirection direction = txt->cursor.par->getParDirection();
- if(!txt->mark_set) owner->view()->beforeChange();
- owner->view()->update(-2);
- if (direction == LYX_DIR_LEFT_TO_RIGHT)
- txt->CursorLeft();
- if (txt->cursor.pos < txt->cursor.par->Last()
- && txt->cursor.par->GetChar(txt->cursor.pos)
- == LyXParagraph::META_INSET
- && txt->cursor.par->GetInset(txt->cursor.pos)
- && txt->cursor.par->GetInset(txt->cursor.pos)->Editable() == 2) {
- Inset * tmpinset = txt->cursor.par->GetInset(txt->cursor.pos);
- setMessage(tmpinset->EditMessage());
- tmpinset->Edit(tmpinset->Width(txt->GetFont(txt->cursor.par,
- txt->cursor.pos)), 0);
- break;
- }
- if (direction == LYX_DIR_RIGHT_TO_LEFT)
- txt->CursorRight();
-
- owner->view()->text->FinishUndo();
- moveCursorUpdate(false);
- owner->getMiniBuffer()->Set(CurrentState());
-#endif
}
break;
// --- text changing commands ------------------------
case LFUN_BREAKLINE:
+#if 1
owner->view()->beforeChange();
owner->view()->text->InsertChar(LyXParagraph::META_NEWLINE);
owner->view()->smallUpdate(1);
SetUpdateTimer(0.01);
moveCursorUpdate(false);
+#else
+ owner->view()->newline();
+#endif
break;
case LFUN_PROTECTEDSPACE:
+#if 1
+ owner->view()->protectedBlank();
+#else
owner->view()->beforeChange();
owner->view()->text->
InsertChar(LyXParagraph::META_PROTECTED_SEPARATOR);
owner->view()->smallUpdate(1);
SetUpdateTimer();
moveCursorUpdate(false);
+#endif
break;
case LFUN_SETMARK:
owner->view()->smallUpdate(1);
// It is possible to make it a lot faster still
// just comment out the lone below...
- owner->view()->getScreen()->ShowCursor();
+ owner->view()->showCursor();
} else {
owner->view()->cut();
}
SetUpdateTimer();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState());
- owner->view()->SetState();
+ owner->view()->setState();
break;
case LFUN_DELETE_SKIP:
owner->view()->smallUpdate(1);
// It is possible to make it a lot faster still
// just comment out the lone below...
- owner->view()->getScreen()->ShowCursor();
+ owner->view()->showCursor();
}
} else {
owner->view()->cut();
}
SetUpdateTimer();
owner->getMiniBuffer()->Set(CurrentState());
- owner->view()->SetState();
+ owner->view()->setState();
}
break;
SetUpdateTimer(0.01);
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
- owner->view()->SetState();
+ owner->view()->setState();
owner->getMiniBuffer()->Set(CurrentState());
break;
}
SetUpdateTimer(0.01);
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
- owner->view()->SetState();
+ owner->view()->setState();
owner->getMiniBuffer()->Set(CurrentState());
break;
}
}
SetUpdateTimer(0.01);
owner->view()->text->sel_cursor = cursor;
- owner->view()->SetState();
+ owner->view()->setState();
owner->getMiniBuffer()->Set(CurrentState());
}
break;
else
new_inset = new InsetUrl("url", "", "");
owner->view()->insertInset(new_inset);
- new_inset->Edit(0, 0);
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ }
+ break;
+ case LFUN_INSET_TEXT:
+ {
+ InsetText * new_inset = new InsetText(owner->buffer());
+ owner->view()->insertInset(new_inset);
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ }
+ break;
+ case LFUN_INSET_ERT:
+ {
+ InsetERT * new_inset = new InsetERT(owner->buffer());
+ owner->view()->insertInset(new_inset);
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ }
+ case LFUN_INSET_FOOTNOTE:
+ {
+ InsetFoot * new_inset = new InsetFoot(owner->buffer());
+ owner->view()->insertInset(new_inset);
+ new_inset->Edit(owner->view(), 0, 0, 0);
}
break;
owner->view()->setCursorFromRow(row);
// Recenter screen
- owner->view()->beforeChange();
- if (owner->view()->text->cursor.y >
-#ifdef NEW_WA
- owner->view()->getWorkArea()->height() / 2
-#else
- owner->view()->getWorkArea()->h / 2
-#endif
- ) {
- owner->view()->getScreen()->
- Draw(owner->view()->text->cursor.y -
-#ifdef NEW_WA
- owner->view()->getWorkArea()->height() / 2
-#else
- owner->view()->getWorkArea()->h / 2
-#endif
- );
- } else { // <=
- owner->view()->getScreen()->
- Draw(0);
- }
- owner->view()->update(0);
- owner->view()->redraw();
+ owner->view()->center();
}
break;
if (owner->view()->available()) {
owner->view()->
open_new_inset(new InsetFormula(false));
- owner->view()->
- the_locking_inset->LocalDispatch(action, argument.c_str());
+ owner->view()
+ ->the_locking_inset
+ ->LocalDispatch(owner->view(),
+ action,
+ argument);
}
}
break;
owner->view()->insertInset(new_inset);
} else {
owner->view()->insertInset(new_inset);
- new_inset->Edit(0, 0);
+ new_inset->Edit(owner->view(), 0, 0, 0);
}
}
break;
owner->view()->insertInset(new_inset);
if (lsarg.empty()) {
- new_inset->Edit(0, 0);
+ new_inset->Edit(owner->view(), 0, 0, 0);
}
}
break;
//don't edit it if the call was to INSERT_LAST
if(action != LFUN_INDEX_INSERT_LAST) {
- new_inset->Edit(0, 0);
+ new_inset->Edit(owner->view(), 0, 0, 0);
} else {
//it looks blank on the screen unless
//we do something. put it here.
Inset * new_inset = new InsetInclude(argument,
owner->buffer());
owner->view()->insertInset(new_inset, "Standard", true);
- new_inset->Edit(0, 0);
+ new_inset->Edit(owner->view(), 0, 0, 0);
}
break;
}
owner->view()->text->InsertFootnoteEnvironment(kind);
owner->view()->update(1);
- owner->view()->SetState();
+ owner->view()->setState();
}
break;