#include "kbmap.h"
#include "lyxfunc.h"
#include "bufferlist.h"
+#include "ColorHandler.h"
#include "lyxserver.h"
#include "lyx.h"
#include "intl.h"
#include "insets/insetindex.h"
#include "insets/insetinclude.h"
#include "insets/insetbib.h"
+#include "insets/insetcite.h"
#include "insets/insettext.h"
#include "insets/insetert.h"
+#include "insets/insetexternal.h"
#include "insets/insetgraphics.h"
#include "insets/insetfoot.h"
+#include "insets/insetmarginal.h"
+#include "insets/insetminipage.h"
+#include "insets/insetfloat.h"
+#include "insets/insetlist.h"
#include "insets/insettabular.h"
+#include "insets/insettheorem.h"
#include "mathed/formulamacro.h"
#include "toolbar.h"
#include "spellchecker.h" // RVDK_PATCH_5
#include "lyxfr1.h"
#include "menus.h"
#include "bufferview_funcs.h"
+#include "frontends/Dialogs.h"
using std::pair;
using std::endl;
extern void QuitLyX();
extern void MenuFax(Buffer *);
extern void MenuExport(Buffer *, string const &);
-extern void MenuPasteSelection(char at);
+
extern LyXAction lyxaction;
// (alkis)
extern tex_accent_struct get_accent(kb_action action);
extern void AutoSave(BufferView *);
-extern void SetUpdateTimer(float timer = 0.3);
-extern void FreeUpdateTimer();
extern bool PreviewDVI(Buffer *);
extern bool PreviewPostscript(Buffer *);
extern void MenuInsertLabel(char const *);
if (selecting || owner->view()->text->mark_set) {
owner->view()->text->SetSelection();
owner->view()->toggleToggle();
- //owner->view()->update(0);
- //} else {
- //owner->view()->update(-2); // this IS necessary
- // (Matthias)
}
- owner->view()->update(0);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
owner->view()->showCursor();
/* ---> Everytime the cursor is moved, show the current font state. */
char s_r[10];
string argument;
XKeyEvent * keyevent = &ev->xkey;
- KeySym keysym_return;
+ KeySym keysym_return = 0;
int num_bytes = LyXLookupString(ev, s_r, 10, &keysym_return);
s_r[num_bytes] = '\0';
if (owner->view()->available() && tli && (keysym_return==XK_Escape)) {
if (tli == tli->GetLockingInset()) {
owner->view()->unlockInset(tli);
- owner->view()->text->CursorRight();
+ owner->view()->text->CursorRight(owner->view());
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
} else {
tli->UnlockInsetInInset(owner->view(),
- tli->GetLockingInset());
+ tli->GetLockingInset(),true);
}
return 0;
}
if (lyxaction.isPseudoAction(ac))
action = lyxaction.retrieveActionArg(ac, argument);
- else
+ else
action = static_cast<kb_action>(ac);
if (action == LFUN_UNKNOWN_ACTION) {
setErrorMessage(N_("Unknown action"));
return LyXFunc::Unknown;
- }
+ }
// Check whether we need a buffer
if (!lyxaction.funcHasFlag(action, LyXAction::NoBuffer)) {
switch (action) {
case LFUN_PREVIEW:
disable = noLaTeX || lyxrc.view_dvi_command == "none";
- break;
- case LFUN_PREVIEWPS:
+ break;
+ case LFUN_PREVIEWPS:
disable = noLaTeX || lyxrc.view_ps_command == "none";
break;
case LFUN_RUNLATEX:
disable = noLaTeX || lyxrc.print_command == "none";
break;
case LFUN_FAX:
- disable = noLaTeX || lyxrc.fax_command == "none";
+ disable = noLaTeX || lyxrc.fax_command == "none";
break;
case LFUN_IMPORT:
if (argument == "latex")
disable = lyxrc.chktex_command == "none";
break;
case LFUN_LAYOUT_TABLE:
- disable = ! owner->view()->text->cursor.par->table;
+ disable = ! owner->view()->text->cursor.par()->table;
break;
default:
break;
// we have not done anything wrong yet.
errorstat = false;
- dispatch_buffer.clear();
+ dispatch_buffer.erase();
// if action is a pseudo-action, we need the real action
if (lyxaction.isPseudoAction(ac)) {
if (getStatus(action) & Disabled)
goto exit_with_message;
- commandshortcut.clear();
+ commandshortcut.erase();
if (lyxrc.display_shortcuts && show_sc) {
if (action != LFUN_SELFINSERT) {
if (owner->view()->available() &&
owner->view()->the_locking_inset) {
UpdatableInset::RESULT result;
- if (action > 1
- || (action == LFUN_UNKNOWN_ACTION
- && keyseq.length >= -1)) {
- if (action == LFUN_UNKNOWN_ACTION
- && argument.empty()) {
+ if ((action > 1) || ((action == LFUN_UNKNOWN_ACTION) &&
+ (keyseq.length >= -1)))
+ {
+ if ((action==LFUN_UNKNOWN_ACTION) && argument.empty()){
argument = keyseq.getiso();
}
// Undo/Redo pre 0.13 is a bit tricky for insets.
int slx, sly;
UpdatableInset * inset =
owner->view()->the_locking_inset;
- inset->GetCursorPos(slx, sly);
+ inset->GetCursorPos(owner->view(), slx, sly);
owner->view()->unlockInset(inset);
owner->view()->menuUndo();
- if (owner->view()->text->cursor.par->
- IsInset(owner->view()->text->cursor.pos)) {
+ if (owner->view()->text->cursor.par()->
+ IsInset(owner->view()->text->cursor.pos())) {
inset = static_cast<UpdatableInset*>(
- owner->view()->text->cursor.par->
+ owner->view()->text->cursor.par()->
GetInset(owner->view()->text->
- cursor.pos));
+ cursor.pos()));
} else {
inset = 0;
}
int slx, sly;
UpdatableInset * inset = owner->view()->
the_locking_inset;
- inset->GetCursorPos(slx, sly);
+ inset->GetCursorPos(owner->view(), slx, sly);
owner->view()->unlockInset(inset);
owner->view()->menuRedo();
inset = static_cast<UpdatableInset*>(
- owner->view()->text->cursor.par->
+ owner->view()->text->cursor.par()->
GetInset(owner->view()->text->
- cursor.pos));
+ cursor.pos()));
if (inset)
inset->Edit(owner->view(),slx,sly,0);
return string();
case LFUN_UNKNOWN_ACTION:
case LFUN_BREAKPARAGRAPH:
case LFUN_BREAKLINE:
- owner->view()->text->CursorRight();
+ owner->view()->text->CursorRight(owner->view());
owner->view()->setState();
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_RIGHT:
- if (!owner->view()->text->cursor.par->isRightToLeftPar()) {
- owner->view()->text->CursorRight();
+ if (!owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
+ owner->view()->text->CursorRight(owner->view());
moveCursorUpdate(false);
owner->getMiniBuffer()->
Set(CurrentState(owner->view()));
}
return string();
case LFUN_LEFT:
- if (owner->view()->text->cursor.par->isRightToLeftPar()) {
- owner->view()->text->CursorRight();
+ if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
+ owner->view()->text->CursorRight(owner->view());
moveCursorUpdate(false);
owner->getMiniBuffer()->
Set(CurrentState(owner->view()));
}
return string();
case LFUN_DOWN:
- owner->view()->text->CursorDown();
+ owner->view()->text->CursorDown(owner->view());
moveCursorUpdate(false);
owner->getMiniBuffer()->
Set(CurrentState(owner->view()));
if (!searched_string.empty() &&
((action == LFUN_WORDFINDBACKWARD) ?
- ltCur->SearchBackward(searched_string.c_str()) :
- ltCur->SearchForward(searched_string.c_str()))) {
+ ltCur->SearchBackward(owner->view(), searched_string.c_str()) :
+ ltCur->SearchForward(owner->view(), searched_string.c_str()))) {
// ??? What is that ???
- owner->view()->update(-2);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
// ??? Needed ???
// clear the selection (if there is any)
// Move cursor so that successive C-s 's will not stand in place.
if( action == LFUN_WORDFINDFORWARD )
- owner->view()->text->CursorRightOneWord();
+ owner->view()->text->CursorRightOneWord(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
case LFUN_PREFIX:
{
if (owner->view()->available()) {
- owner->view()->update(-2);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
}
string buf;
keyseq.print(buf, true);
case LFUN_APPENDIX:
if (owner->view()->available()) {
- owner->view()->text->toggleAppendix();
- owner->view()->update(1);
+ owner->view()->text->toggleAppendix(owner->view());
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
break;
break;
case LFUN_MENUPRINT:
- MenuPrint(owner->buffer());
+ owner->getDialogs()->showPrint();
break;
-
+
case LFUN_FAX:
MenuFax(owner->buffer());
break;
break;
case LFUN_TOCVIEW:
+ case LFUN_LOFVIEW:
+ case LFUN_LOTVIEW:
+ case LFUN_LOAVIEW:
+ {
+ Buffer::TocType type = Buffer::TOC_TOC;
+ if (action == LFUN_LOFVIEW)
+ type = Buffer::TOC_LOF;
+ else if (action == LFUN_LOTVIEW)
+ type = Buffer::TOC_LOT;
+ else if (action == LFUN_LOAVIEW)
+ type = Buffer::TOC_LOA;
+ fl_set_choice(fd_form_toc->toctype,type + 1);
TocUpdateCB(0, 0);
if (fd_form_toc->form_toc->visible) {
fl_raise_form(fd_form_toc->form_toc);
fl_set_form_minsize(fd_form_toc->form_toc, ow, oh);
}
break;
-
+ }
case LFUN_TOC_INSERT:
{
Inset * new_inset = new InsetTOC(owner->buffer());
- owner->view()->insertInset(new_inset, "Standard", true);
+ if (!owner->view()->insertInset(new_inset, "Standard", true))
+ delete new_inset;
break;
}
case LFUN_LOF_INSERT:
{
Inset * new_inset = new InsetLOF(owner->buffer());
- owner->view()->insertInset(new_inset, "Standard", true);
+ if (!owner->view()->insertInset(new_inset, "Standard", true))
+ delete new_inset;
break;
}
case LFUN_LOA_INSERT:
{
Inset * new_inset = new InsetLOA(owner->buffer());
- owner->view()->insertInset(new_inset, "Standard", true);
+ if (!owner->view()->insertInset(new_inset, "Standard", true))
+ delete new_inset;
break;
}
case LFUN_LOT_INSERT:
{
Inset * new_inset = new InsetLOT(owner->buffer());
- owner->view()->insertInset(new_inset, "Standard", true);
+ if (!owner->view()->insertInset(new_inset, "Standard", true))
+ delete new_inset;
break;
}
case LFUN_INSERT_GRAPHICS:
{
Inset * new_inset = new InsetGraphics;
- owner->view()->insertInset(new_inset);
+ if (!owner->view()->insertInset(new_inset))
+ delete new_inset;
break;
}
static LyXFindReplace FR_;
FR_.StartSearch(owner->view());
}
-
- break;
+ break;
case LFUN_PASTE:
owner->view()->paste();
{
bool asPara = false;
if (argument == "paragraph") asPara = true;
- MenuPasteSelection(asPara);
- break;
+ owner->view()->pasteClipboard(asPara);
}
-
+ break;
+
case LFUN_CUT:
owner->view()->cut();
break;
case LFUN_FOOTMELT:
if (owner->view()->available()
&& !owner->view()->text->selection
- && owner->view()->text->cursor.par->footnoteflag
+ && owner->view()->text->cursor.par()->footnoteflag
!= LyXParagraph::NO_FOOTNOTE)
{ // only melt footnotes with FOOTMELT, not margins etc
- if(owner->view()->text->cursor.par->footnotekind == LyXParagraph::FOOTNOTE)
+ if(owner->view()->text->cursor.par()->footnotekind == LyXParagraph::FOOTNOTE)
Melt(owner->view());
}
else
case LFUN_MARGINMELT:
if (owner->view()->available()
&& !owner->view()->text->selection
- && owner->view()->text->cursor.par->footnoteflag
+ && owner->view()->text->cursor.par()->footnoteflag
!= LyXParagraph::NO_FOOTNOTE) {
// only melt margins
- if(owner->view()->text->cursor.par->footnotekind == LyXParagraph::MARGIN)
+ if(owner->view()->text->cursor.par()->footnotekind == LyXParagraph::MARGIN)
Melt(owner->view());
} else
Margin(owner->view());
owner->view()->setState();
break;
+ case LFUN_HELP_COPYRIGHT:
+ owner->getDialogs()->showCopyright();
+ break;
+
// --- version control -------------------------------
case LFUN_VC_REGISTER:
{
if (current_layout != layout.second) {
owner->view()->hideCursor();
current_layout = layout.second;
- owner->view()->update(-2);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
owner->view()->text->
- SetLayout(layout.second);
+ SetLayout(owner->view(), layout.second);
owner->getToolbar()->combox->
select(owner->view()->
- text->cursor.par->
+ text->cursor.par()->
GetLayout() + 1);
- owner->view()->update(1);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
owner->view()->setState();
}
}
break;
case LFUN_LANGUAGE:
- {
Lang(owner->view(), argument);
owner->view()->setState();
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
- }
break;
case LFUN_EMPH:
Emph(owner->view());
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
-
+
case LFUN_BOLD:
Bold(owner->view());
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_UPCASE_WORD:
- owner->view()->update(-2);
- FreeUpdateTimer();
- owner->view()->text->ChangeWordCase(LyXText::text_uppercase);
- owner->view()->update(1);
- SetUpdateTimer();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->ChangeWordCase(owner->view(),
+ LyXText::text_uppercase);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
break;
case LFUN_LOWCASE_WORD:
- owner->view()->update(-2);
- FreeUpdateTimer();
- owner->view()->text->ChangeWordCase(LyXText::text_lowercase);
- owner->view()->update(1);
- SetUpdateTimer();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->ChangeWordCase(owner->view(),
+ LyXText::text_lowercase);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
break;
case LFUN_CAPITALIZE_WORD:
- owner->view()->update(-2);
- FreeUpdateTimer();
- owner->view()->text->ChangeWordCase(LyXText::text_capitalization);
- owner->view()->update(1);
- SetUpdateTimer();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->ChangeWordCase(owner->view(),
+ LyXText::text_capitalization);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
break;
case LFUN_INSERT_LABEL:
InsetRef * inset =
static_cast<InsetRef*>(getInsetByCode(Inset::REF_CODE));
if (inset) {
- if (inset->getFlag() == InsetRef::REF)
- inset->setFlag(InsetRef::PAGE_REF);
- else
- inset->setFlag(InsetRef::REF);
+ inset->Toggle();
owner->view()->updateInset(inset, true);
} else {
setErrorMessage(N_("No cross-reference to toggle"));
if (!label.empty()) {
owner->view()->savePosition();
- owner->view()->gotoLabel(label.c_str());
+ if (!owner->view()->gotoLabel(label))
+ WriteAlert(_("Error"),
+ _("Couldn't find this label"),
+ _("in current document."));
}
}
break;
case LFUN_RIGHT:
{
LyXText * tmptext = owner->view()->text;
- bool is_rtl = tmptext->cursor.par->isRightToLeftPar();
+ bool is_rtl = tmptext->cursor.par()->isRightToLeftPar(owner->buffer()->params);
if(!tmptext->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-2);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
if (is_rtl)
- tmptext->CursorLeft();
- if (tmptext->cursor.pos < tmptext->cursor.par->Last()
- && tmptext->cursor.par->GetChar(tmptext->cursor.pos)
+ tmptext->CursorLeft(owner->view(), false);
+ if (tmptext->cursor.pos() < tmptext->cursor.par()->Last()
+ && 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() == Inset::HIGHLY_EDITABLE){
- Inset * tmpinset = tmptext->cursor.par->GetInset(tmptext->cursor.pos);
+ && tmptext->cursor.par()->GetInset(tmptext->cursor.pos())
+ && 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(owner->view(), 0, 0, 0);
break;
}
if (!is_rtl)
- tmptext->CursorRight();
+ tmptext->CursorRight(owner->view(), false);
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
// This is soooo ugly. Isn`t it possible to make
// it simpler? (Lgb)
LyXText * txt = owner->view()->text;
- bool is_rtl = txt->cursor.par->isRightToLeftPar();
+ bool is_rtl = txt->cursor.par()->isRightToLeftPar(owner->buffer()->params);
if(!txt->mark_set) owner->view()->beforeChange();
- owner->view()->update(-2);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
if (!is_rtl)
- txt->CursorLeft();
- if (txt->cursor.pos < txt->cursor.par->Last()
- && txt->cursor.par->GetChar(txt->cursor.pos)
+ txt->CursorLeft(owner->view(), false);
+ 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() == Inset::HIGHLY_EDITABLE) {
- Inset * tmpinset = txt->cursor.par->GetInset(txt->cursor.pos);
+ && txt->cursor.par()->GetInset(txt->cursor.pos())
+ && txt->cursor.par()->GetInset(txt->cursor.pos())->Editable() == Inset::HIGHLY_EDITABLE) {
+ Inset * tmpinset = txt->cursor.par()->GetInset(txt->cursor.pos());
setMessage(tmpinset->EditMessage());
+ LyXFont font = txt->GetFont(owner->view()->buffer(),
+ txt->cursor.par(),
+ txt->cursor.pos());
tmpinset->Edit(owner->view(),
- tmpinset->width(owner->view()->painter(),
- txt->GetFont(txt->cursor.par,
- txt->cursor.pos)),
- 0, 0);
+ tmpinset->x() + tmpinset->width(owner->view()->painter(),font),
+ tmpinset->descent(owner->view()->painter(),font),
+ 0);
break;
}
if (is_rtl)
- txt->CursorRight();
+ txt->CursorRight(owner->view(), false);
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
case LFUN_UP:
if(!owner->view()->text->mark_set) owner->view()->beforeChange();
- owner->view()->update(-3);
- owner->view()->text->CursorUp();
+ owner->view()->update(BufferView::UPDATE);
+ owner->view()->text->CursorUp(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
case LFUN_DOWN:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-3);
- owner->view()->text->CursorDown();
+ owner->view()->update(BufferView::UPDATE);
+ owner->view()->text->CursorDown(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
case LFUN_UP_PARAGRAPH:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-3);
- owner->view()->text->CursorUpParagraph();
+ owner->view()->update(BufferView::UPDATE);
+ owner->view()->text->CursorUpParagraph(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
case LFUN_DOWN_PARAGRAPH:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-3);
- owner->view()->text->CursorDownParagraph();
+ owner->view()->update(BufferView::UPDATE);
+ owner->view()->text->CursorDownParagraph(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
case LFUN_PRIOR:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-3);
+ owner->view()->update(BufferView::UPDATE);
owner->view()->cursorPrevious();
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
case LFUN_NEXT:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-3);
+ owner->view()->update(BufferView::UPDATE);
owner->view()->cursorNext();
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
case LFUN_HOME:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-2);
- owner->view()->text->CursorHome();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorHome(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
case LFUN_END:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-2);
- owner->view()->text->CursorEnd();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorEnd(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
+ case LFUN_SHIFT_TAB:
case LFUN_TAB:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-2);
- owner->view()->text->CursorTab();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorTab(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
case LFUN_WORDRIGHT:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-2);
- if (owner->view()->text->cursor.par->isRightToLeftPar())
- owner->view()->text->CursorLeftOneWord();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params))
+ owner->view()->text->CursorLeftOneWord(owner->view());
else
- owner->view()->text->CursorRightOneWord();
+ owner->view()->text->CursorRightOneWord(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
case LFUN_WORDLEFT:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-2);
- if (owner->view()->text->cursor.par->isRightToLeftPar())
- owner->view()->text->CursorRightOneWord();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params))
+ owner->view()->text->CursorRightOneWord(owner->view());
else
- owner->view()->text->CursorLeftOneWord();
+ owner->view()->text->CursorLeftOneWord(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
case LFUN_BEGINNINGBUF:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-2);
- owner->view()->text->CursorTop();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorTop(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
case LFUN_ENDBUF:
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
- owner->view()->update(-2);
- owner->view()->text->CursorBottom();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorBottom(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
/* cursor selection ---------------------------- */
case LFUN_RIGHTSEL:
- owner->view()->update(-2);
- if (owner->view()->text->cursor.par->isRightToLeftPar())
- owner->view()->text->CursorLeft();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params))
+ owner->view()->text->CursorLeft(owner->view());
else
- owner->view()->text->CursorRight();
+ owner->view()->text->CursorRight(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_LEFTSEL:
- owner->view()->update(-2);
- if (owner->view()->text->cursor.par->isRightToLeftPar())
- owner->view()->text->CursorRight();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params))
+ owner->view()->text->CursorRight(owner->view());
else
- owner->view()->text->CursorLeft();
+ owner->view()->text->CursorLeft(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_UPSEL:
- owner->view()->update(-2);
- owner->view()->text->CursorUp();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorUp(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_DOWNSEL:
- owner->view()->update(-2);
- owner->view()->text->CursorDown();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorDown(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_UP_PARAGRAPHSEL:
- owner->view()->update(-2);
- owner->view()->text->CursorUpParagraph();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorUpParagraph(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_DOWN_PARAGRAPHSEL:
- owner->view()->update(-2);
- owner->view()->text->CursorDownParagraph();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorDownParagraph(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_PRIORSEL:
- owner->view()->update(-2);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
owner->view()->cursorPrevious();
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
break;
case LFUN_NEXTSEL:
- owner->view()->update(-2);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
owner->view()->cursorNext();
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
break;
case LFUN_HOMESEL:
- owner->view()->update(-2);
- owner->view()->text->CursorHome();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorHome(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_ENDSEL:
- owner->view()->update(-2);
- owner->view()->text->CursorEnd();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorEnd(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_WORDRIGHTSEL:
- owner->view()->update(-2);
- if (owner->view()->text->cursor.par->isRightToLeftPar())
- owner->view()->text->CursorLeftOneWord();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params))
+ owner->view()->text->CursorLeftOneWord(owner->view());
else
- owner->view()->text->CursorRightOneWord();
+ owner->view()->text->CursorRightOneWord(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_WORDLEFTSEL:
- owner->view()->update(-2);
- if (owner->view()->text->cursor.par->isRightToLeftPar())
- owner->view()->text->CursorRightOneWord();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params))
+ owner->view()->text->CursorRightOneWord(owner->view());
else
- owner->view()->text->CursorLeftOneWord();
+ owner->view()->text->CursorLeftOneWord(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_BEGINNINGBUFSEL:
- owner->view()->update(-2);
- owner->view()->text->CursorTop();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorTop(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
case LFUN_ENDBUFSEL:
- owner->view()->update(-2);
- owner->view()->text->CursorBottom();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->CursorBottom(owner->view());
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
// --- text changing commands ------------------------
case LFUN_BREAKLINE:
owner->view()->beforeChange();
- owner->view()->text->InsertChar(LyXParagraph::META_NEWLINE);
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
- SetUpdateTimer(0.01);
+ owner->view()->text->InsertChar(owner->view(), LyXParagraph::META_NEWLINE);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
moveCursorUpdate(false);
break;
{
LyXLayout const & style =
textclasslist.Style(owner->view()->buffer()->params.textclass,
- owner->view()->text->cursor.par->GetLayout());
+ owner->view()->text->cursor.par()->GetLayout());
if (style.free_spacing) {
- owner->view()->text->InsertChar(' ');
- owner->view()->update(-1);
+ owner->view()->text->InsertChar(owner->view(), ' ');
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
} else {
owner->view()->protectedBlank();
}
case LFUN_SETMARK:
if(owner->view()->text->mark_set) {
owner->view()->beforeChange();
- owner->view()->update(0);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
setMessage(N_("Mark removed"));
} else {
owner->view()->beforeChange();
owner->view()->text->mark_set = 1;
- owner->view()->update(0);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
setMessage(N_("Mark set"));
}
owner->view()->text->sel_cursor =
break;
case LFUN_DELETE:
- FreeUpdateTimer();
if (!owner->view()->text->selection) {
- owner->view()->text->Delete();
+ owner->view()->text->Delete(owner->view());
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
// It is possible to make it a lot faster still
// just comment out the lone below...
owner->view()->showCursor();
} else {
owner->view()->cut();
}
- SetUpdateTimer();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
owner->view()->setState();
LyXCursor cursor = owner->view()->text->cursor;
- FreeUpdateTimer();
if (!owner->view()->text->selection) {
- if (cursor.pos == cursor.par->Last()) {
- owner->view()->text->CursorRight();
+ if (cursor.pos() == cursor.par()->Last()) {
+ owner->view()->text->CursorRight(owner->view());
cursor = owner->view()->text->cursor;
- if (cursor.pos == 0
- && !(cursor.par->added_space_top
+ if (cursor.pos() == 0
+ && !(cursor.par()->added_space_top
== VSpace (VSpace::NONE))) {
owner->view()->text->SetParagraph
- (cursor.par->line_top,
- cursor.par->line_bottom,
- cursor.par->pagebreak_top,
- cursor.par->pagebreak_bottom,
+ (owner->view(),
+ cursor.par()->line_top,
+ cursor.par()->line_bottom,
+ cursor.par()->pagebreak_top,
+ cursor.par()->pagebreak_bottom,
VSpace(VSpace::NONE),
- cursor.par->added_space_bottom,
- cursor.par->align,
- cursor.par->labelwidthstring, 0);
- owner->view()->text->CursorLeft();
- owner->view()->update (1);
+ cursor.par()->added_space_bottom,
+ cursor.par()->align,
+ cursor.par()->labelwidthstring, 0);
+ owner->view()->text->CursorLeft(owner->view());
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
} else {
- owner->view()->text->CursorLeft();
- owner->view()->text->Delete();
+ owner->view()->text->CursorLeft(owner->view());
+ owner->view()->text->Delete(owner->view());
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
} else {
- owner->view()->text->Delete();
+ owner->view()->text->Delete(owner->view());
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
} else {
owner->view()->cut();
}
- SetUpdateTimer();
}
break;
/* -------> Delete word forward. */
case LFUN_DELETE_WORD_FORWARD:
- owner->view()->update(-2);
- FreeUpdateTimer();
- owner->view()->text->DeleteWordForward();
- owner->view()->update( 1 );
- SetUpdateTimer();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->DeleteWordForward(owner->view());
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
/* -------> Delete word backward. */
case LFUN_DELETE_WORD_BACKWARD:
- owner->view()->update(-2);
- FreeUpdateTimer();
- owner->view()->text->DeleteWordBackward();
- owner->view()->update( 1 );
- SetUpdateTimer();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->DeleteWordBackward(owner->view());
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
break;
/* -------> Kill to end of line. */
case LFUN_DELETE_LINE_FORWARD:
- FreeUpdateTimer();
- owner->view()->update(-2);
- owner->view()->text->DeleteLineForward();
- owner->view()->update( 1 );
- SetUpdateTimer();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
+ owner->view()->text->DeleteLineForward(owner->view());
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
moveCursorUpdate(false);
break;
/* -------> Set mark off. */
case LFUN_MARK_OFF:
owner->view()->beforeChange();
- owner->view()->update(0);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
setMessage(N_("Mark off"));
case LFUN_MARK_ON:
owner->view()->beforeChange();
owner->view()->text->mark_set = 1;
- owner->view()->update( 0 );
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR);
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
setMessage(N_("Mark on"));
case LFUN_BACKSPACE:
{
- FreeUpdateTimer();
if (!owner->view()->text->selection) {
if (owner->getIntl()->getTrans()->backspace()) {
- owner->view()->text->Backspace();
+ owner->view()->text->Backspace(owner->view());
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
// It is possible to make it a lot faster still
// just comment out the lone below...
owner->view()->showCursor();
} else {
owner->view()->cut();
}
- SetUpdateTimer();
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
owner->view()->setState();
}
LyXCursor cursor = owner->view()->text->cursor;
- FreeUpdateTimer();
if (!owner->view()->text->selection) {
- if (cursor.pos == 0
- && !(cursor.par->added_space_top
+ if (cursor.pos() == 0
+ && !(cursor.par()->added_space_top
== VSpace (VSpace::NONE))) {
owner->view()->text->SetParagraph
- (cursor.par->line_top,
- cursor.par->line_bottom,
- cursor.par->pagebreak_top,
- cursor.par->pagebreak_bottom,
- VSpace(VSpace::NONE), cursor.par->added_space_bottom,
- cursor.par->align,
- cursor.par->labelwidthstring, 0);
- owner->view()->update (1);
+ (owner->view(),
+ cursor.par()->line_top,
+ cursor.par()->line_bottom,
+ cursor.par()->pagebreak_top,
+ cursor.par()->pagebreak_bottom,
+ VSpace(VSpace::NONE), cursor.par()->added_space_bottom,
+ cursor.par()->align,
+ cursor.par()->labelwidthstring, 0);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
} else {
- owner->view()->text->Backspace();
+ owner->view()->text->Backspace(owner->view());
owner->view()->text->sel_cursor
= cursor;
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate (1);
-#endif
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
} else
owner->view()->cut();
- SetUpdateTimer();
}
break;
case LFUN_BREAKPARAGRAPH:
{
owner->view()->beforeChange();
- owner->view()->text->BreakParagraph(0);
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
- SetUpdateTimer(0.01);
+ owner->view()->text->BreakParagraph(owner->view(), 0);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
owner->view()->setState();
case LFUN_BREAKPARAGRAPHKEEPLAYOUT:
{
owner->view()->beforeChange();
- owner->view()->text->BreakParagraph(1);
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
- SetUpdateTimer(0.01);
+ owner->view()->text->BreakParagraph(owner->view(), 1);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
owner->view()->setState();
LyXCursor cursor = owner->view()->text->cursor;
owner->view()->beforeChange();
- if (cursor.pos == 0) {
- if (cursor.par->added_space_top == VSpace(VSpace::NONE)) {
+ if (cursor.pos() == 0) {
+ if (cursor.par()->added_space_top == VSpace(VSpace::NONE)) {
owner->view()->text->SetParagraph
- (cursor.par->line_top,
- cursor.par->line_bottom,
- cursor.par->pagebreak_top,
- cursor.par->pagebreak_bottom,
- VSpace(VSpace::DEFSKIP), cursor.par->added_space_bottom,
- cursor.par->align,
- cursor.par->labelwidthstring, 1);
- owner->view()->update(1);
+ (owner->view(),
+ cursor.par()->line_top,
+ cursor.par()->line_bottom,
+ cursor.par()->pagebreak_top,
+ cursor.par()->pagebreak_bottom,
+ VSpace(VSpace::DEFSKIP), cursor.par()->added_space_bottom,
+ cursor.par()->align,
+ cursor.par()->labelwidthstring, 1);
+ //owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
}
else {
- owner->view()->text->BreakParagraph(0);
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
+ owner->view()->text->BreakParagraph(owner->view(), 0);
+ //owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
- SetUpdateTimer(0.01);
+
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
owner->view()->text->sel_cursor = cursor;
owner->view()->setState();
owner->getMiniBuffer()->Set(CurrentState(owner->view()));
case LFUN_PARAGRAPH_SPACING:
{
- LyXParagraph * par = owner->view()->text->cursor.par;
+ LyXParagraph * par = owner->view()->text->cursor.par();
Spacing::Space cur_spacing = par->spacing.getSpace();
float cur_value = 1.0;
if (cur_spacing == Spacing::Other) {
}
if (cur_spacing != new_spacing || cur_value != new_value) {
par->spacing.set(new_spacing, new_value);
- owner->view()->text->RedoParagraph();
- owner->view()->update(-1);
+ owner->view()->text->RedoParagraph(owner->view());
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
}
break;
case LFUN_QUOTE:
owner->view()->beforeChange();
- owner->view()->text->InsertChar('\"'); // This " matches the single quote in the code
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
- SetUpdateTimer();
+ owner->view()->text->InsertChar(owner->view(), '\"'); // This " matches the single quote in the code
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
moveCursorUpdate(false);
break;
new_inset = new InsetUrl("htmlurl", "", "");
else
new_inset = new InsetUrl("url", "", "");
- owner->view()->insertInset(new_inset);
- new_inset->Edit(owner->view(), 0, 0, 0);
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
}
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);
+ InsetText * new_inset = new InsetText;
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
}
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);
+ InsetERT * new_inset = new InsetERT;
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
+ }
+ break;
+
+ case LFUN_INSET_EXTERNAL:
+ {
+ InsetExternal * new_inset = new InsetExternal;
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
}
break;
case LFUN_INSET_FOOTNOTE:
{
- InsetFoot * new_inset = new InsetFoot(owner->buffer());
- owner->view()->insertInset(new_inset);
- new_inset->Edit(owner->view(), 0, 0, 0);
+ InsetFoot * new_inset = new InsetFoot;
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
+ }
+ break;
+
+ case LFUN_INSET_MARGINAL:
+ {
+ InsetMarginal * new_inset = new InsetMarginal;
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
+ }
+ break;
+
+ case LFUN_INSET_MINIPAGE:
+ {
+ InsetMinipage * new_inset = new InsetMinipage;
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
+ }
+ break;
+
+ case LFUN_INSET_FLOAT:
+ {
+ InsetFloat * new_inset = new InsetFloat;
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
+ }
+ break;
+
+ case LFUN_INSET_LIST:
+ {
+ InsetList * new_inset = new InsetList;
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
+ }
+ break;
+
+ case LFUN_INSET_THEOREM:
+ {
+ InsetTheorem * new_inset = new InsetTheorem;
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
}
break;
if (!argument.empty())
sscanf(argument.c_str(),"%d%d",&r,&c);
InsetTabular * new_inset = new InsetTabular(owner->buffer(),r,c);
- owner->view()->insertInset(new_inset);
- new_inset->Edit(owner->view(), 0, 0, 0);
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
}
break;
case LFUN_CHARATCURSOR:
{
LyXParagraph::size_type pos =
- owner->view()->text->cursor.pos;
- if(pos < owner->view()->text->cursor.par->size())
+ owner->view()->text->cursor.pos();
+ if(pos < owner->view()->text->cursor.par()->size())
//dispatch_buffer = owner->view()->text->
- // cursor.par->text[pos];
+ // cursor.par()->text[pos];
dispatch_buffer =
owner->view()->text->
- cursor.par->GetChar(pos);
+ cursor.par()->GetChar(pos);
else
dispatch_buffer = "EOF";
}
case LFUN_GETXY:
dispatch_buffer =
- tostr(owner->view()->text->cursor.x) + ' '
- + tostr(owner->view()->text->cursor.y);
+ tostr(owner->view()->text->cursor.x()) + ' '
+ + tostr(owner->view()->text->cursor.y());
break;
case LFUN_SETXY:
int x;
long y;
sscanf(argument.c_str(), " %d %ld", &x, &y);
- owner->view()->text->SetCursorFromCoordinates(x, y);
+ owner->view()->text->SetCursorFromCoordinates(owner->view(), x, y);
}
break;
case LFUN_GETLAYOUT:
dispatch_buffer =
- tostr(owner->view()->text->cursor.par->layout);
+ tostr(owner->view()->text->cursor.par()->layout);
break;
case LFUN_GETFONT:
sscanf(argument.c_str(), " %s %d", file_name, &row);
// Must replace extension of the file to be .lyx and get full path
- string s = ChangeExtension(string(file_name), ".lyx", false);
+ string s = ChangeExtension(string(file_name), ".lyx");
// Either change buffer or load the file
if (bufferlist.exists(s))
case LFUN_CIRCLE:
case LFUN_OGONEK:
{
- char c;
+ char c = 0;
if (keyseq.length == -1 && keyseq.getiso() != 0)
c = keyseq.getiso();
- else
- c = 0;
owner->getIntl()->getTrans()->
deadkey(c, get_accent(action).accent,
keyseq.length = 0;
// copied verbatim from do_accent_char
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
- SetUpdateTimer();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
+
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
}
new_inset->setOptions(token(lsarg, '|', 1));
} else
new_inset->setContents(lsarg);
- owner->view()->insertInset(new_inset);
+ if (!owner->view()->insertInset(new_inset))
+ delete new_inset;
} else {
- owner->view()->insertInset(new_inset);
- new_inset->Edit(owner->view(), 0, 0, 0);
+ if (owner->view()->insertInset(new_inset))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
}
}
break;
bibstyle,
owner->buffer());
- owner->view()->insertInset(new_inset);
- if (lsarg.empty()) {
- new_inset->Edit(owner->view(), 0, 0, 0);
- }
+ if (owner->view()->insertInset(new_inset)) {
+ if (lsarg.empty())
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ } else
+ delete new_inset;
}
break;
case LFUN_INDEX_INSERT_LAST:
{
// Can't do that at the beginning of a paragraph.
- if (owner->view()->text->cursor.pos - 1 < 0)
+ if (owner->view()->text->cursor.pos() - 1 < 0)
break;
InsetIndex * new_inset = new InsetIndex();
if (!argument.empty()) {
string lsarg(argument);
new_inset->setContents(lsarg);
- owner->view()->insertInset(new_inset);
+ if (!owner->view()->insertInset(new_inset))
+ delete new_inset;
} else {
//reh 98/09/21
//get the current word for an argument
LyXParagraph::size_type lastpos =
- owner->view()->text->cursor.pos - 1;
+ owner->view()->text->cursor.pos() - 1;
// Get the current word. note that this must be done
// before inserting the inset, or the inset will
// break the word
string curstring(owner->view()
- ->text->cursor.par->GetWord(lastpos));
+ ->text->cursor.par()->GetWord(lastpos));
//make the new inset and write the current word into it
InsetIndex * new_inset = new InsetIndex();
// move the cursor to the returned value of lastpos
// but only for the auto-insert
- owner->view()->text->cursor.pos = lastpos;
+ owner->view()->text->cursor.pos(lastpos);
}
//put the new inset into the buffer.
// there should be some way of knowing the user
//cancelled & avoiding this, but i don't know how
- owner->view()->insertInset(new_inset);
+ if (!owner->view()->insertInset(new_inset))
+ delete new_inset;
}
}
break;
case LFUN_INDEX_PRINT:
{
Inset * new_inset = new InsetPrintIndex(owner->buffer());
- owner->view()->insertInset(new_inset, "Standard", true);
+ if (!owner->view()->insertInset(new_inset, "Standard", true))
+ delete new_inset;
}
break;
{
lyxerr << "arg " << argument << endl;
Inset * new_inset = new InsetParent(argument, owner->buffer());
- owner->view()->insertInset(new_inset, "Standard", true);
+ if (!owner->view()->insertInset(new_inset, "Standard", true))
+ delete new_inset;
}
break;
{
Inset * new_inset = new InsetInclude(argument,
owner->buffer());
- owner->view()->insertInset(new_inset, "Standard", true);
- new_inset->Edit(owner->view(), 0, 0, 0);
+ if (owner->view()->insertInset(new_inset, "Standard", true))
+ new_inset->Edit(owner->view(), 0, 0, 0);
+ else
+ delete new_inset;
}
break;
setErrorMessage(N_("Unknown kind of footnote"));
break;
}
- owner->view()->text->InsertFootnoteEnvironment(kind);
- owner->view()->update(1);
+ owner->view()->text->InsertFootnoteEnvironment(owner->view(), kind);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
owner->view()->setState();
}
break;
case LFUN_SELFINSERT:
{
for (string::size_type i = 0; i < argument.length(); ++i) {
- owner->view()->text->InsertChar(argument[i]);
+ owner->view()->text->InsertChar(owner->view(), argument[i]);
// This needs to be in the loop, or else we
// won't break lines correctly. (Asger)
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
- SetUpdateTimer();
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
moveCursorUpdate(false);
case LFUN_DATE_INSERT: // jdblair: date-insert cmd
{
- char datetmp[32];
- int datetmp_len;
- time_t now_time_t;
- struct tm *now_tm;
- static string arg;
+ struct tm * now_tm;
- now_time_t = time(NULL);
+ time_t now_time_t = time(NULL);
now_tm = localtime(&now_time_t);
- (void)setlocale(LC_TIME, "");
+ setlocale(LC_TIME, "");
+ string arg;
if (!argument.empty())
arg = argument;
- else if (arg.empty())
+ else
arg = lyxrc.date_insert_format;
- datetmp_len = (int) strftime(datetmp, 32, arg.c_str(), now_tm);
+ char datetmp[32];
+ int datetmp_len = strftime(datetmp, 32, arg.c_str(), now_tm);
for (int i = 0; i < datetmp_len; i++) {
- owner->view()->text->InsertChar(datetmp[i]);
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
+ owner->view()->text->InsertChar(owner->view(), datetmp[i]);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
- SetUpdateTimer();
+
owner->view()->text->sel_cursor = owner->view()->text->cursor;
moveCursorUpdate(false);
}
lyxrc.write("preferences");
}
break;
-
+
+ case LFUN_SET_COLOR:
+ {
+ string lyx_name, x11_name;
+ x11_name = split(argument, lyx_name, ' ');
+ if (lyx_name.empty() || x11_name.empty()) {
+ LyXBell();
+ setErrorMessage(N_("Syntax: set-color <lyx_name>"
+ " <x11_name>"));
+ break;
+ }
+
+ if (!lcolor.setColor(lyx_name, x11_name)) {
+ static string err1 (N_("Set-color \""));
+ static string err2 (N_("\" failed - color is undefined "
+ "or may not be redefined"));
+ LyXBell();
+ setErrorMessage(err1 + lyx_name + err2);
+ break;
+ }
+ lyxColorHandler->updateColor(lcolor.getFromLyXName(lyx_name));
+ owner->view()->redraw();
+ break;
+ }
+
case LFUN_UNKNOWN_ACTION:
{
if(!owner->buffer()) {
if ( lyxrc.auto_region_delete ) {
if (owner->view()->text->selection){
- owner->view()->text->CutSelection(false);
- owner->view()->update(-1);
+ owner->view()->text->CutSelection(owner->view(), false);
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
}
owner->getIntl()->getTrans()->TranslateAndInsert(argument[i], owner->view()->text);
}
-#if 1
- owner->view()->update(1);
-#else
- owner->view()->smallUpdate(1);
-#endif
- SetUpdateTimer();
+ owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
// get absolute path of file
filename = MakeAbsPath(filename);
- string lyxfile = ChangeExtension(filename, ".lyx", false);
+ string lyxfile = ChangeExtension(filename, ".lyx");
// Check if the document already is open
if (bufferlist.exists(lyxfile)) {
// notify user of import ahead
string displaypath = MakeDisplayPath(filename);
- owner->view()->buffer(bufferlist.newFile(lyxfile, string()));
owner->getMiniBuffer()->Set(_("Importing"), displaypath, "...");
// call real importer
static
bool doImportASCIIasLines(BufferView * view, string const & filename)
{
+ view->buffer(bufferlist.newFile(filename, string()));
InsertAsciiFile(view, filename, false);
return true;
}
static
bool doImportASCIIasParagraphs(BufferView * view, string const & filename)
{
+ view->buffer(bufferlist.newFile(filename, string()));
InsertAsciiFile(view, filename, true);
return true;
}
static
-bool doImportLaTeX(BufferView *, string const & filename)
+bool doImportLaTeX(BufferView * view, string const & filename)
{
ImportLaTeX myImport(filename);
Buffer * openbuf = myImport.run();
- return openbuf != NULL;
+ if (openbuf) {
+ view->buffer(openbuf);
+ return true;
+ }
+ else
+ return false;
}
static
-bool doImportNoweb(BufferView *, string const & filename)
+bool doImportNoweb(BufferView * view, string const & filename)
{
ImportNoweb myImport(filename);
Buffer * openbuf = myImport.run();
- return openbuf != NULL;
+ if (openbuf) {
+ view->buffer(openbuf);
+ return true;
+ }
+ else
+ return false;
}
static
int result = one.startscript(Systemcalls::System, tmp);
if (result == 0) {
- string filename = ChangeExtension(filename, ".lyx", false);
+ string filename = ChangeExtension(filename, ".lyx");
// File was generated without problems. Load it.
buf = bufferlist.loadLyXFile(filename);
}
// need this otherwise SEGV may occur while trying to
// set variables that don't exist
// since there's no current buffer
- CloseAllBufferRelatedPopups();
+ owner->getDialogs()->hideBufferDependent();
}
else {
owner->view()->buffer(bufferlist.first());
Inset * LyXFunc::getInsetByCode(Inset::Code code)
{
- bool found = false;
- Inset * inset = 0;
LyXCursor cursor = owner->view()->text->cursor;
- LyXParagraph::size_type pos = cursor.pos;
- LyXParagraph * par = cursor.par;
-
- while (par && !found) {
- while ((inset = par->ReturnNextInsetPointer(pos))){
- if (inset->LyxCode() == code) {
- found = true;
- break;
- }
- ++pos;
- }
- par = par->next;
+ Buffer * buffer = owner->view()->buffer();
+ for (Buffer::inset_iterator it = Buffer::inset_iterator(cursor.par(),
+ cursor.pos());
+ it != buffer->inset_iterator_end(); ++it) {
+ if ((*it)->LyxCode() == code)
+ return *it;
}
- return found ? inset : 0;
+ return 0;
}