#include "insets/inseturl.h"
#include "insets/insetlatexaccent.h"
#include "insets/insettoc.h"
-#include "insets/insetlof.h"
-#include "insets/insetloa.h"
-#include "insets/insetlot.h"
#include "insets/insetref.h"
#include "insets/insetparent.h"
#include "insets/insetindex.h"
extern BufferList bufferlist;
extern LyXServer * lyxserver;
extern int greek_kb_flag;
-extern FD_form_toc * fd_form_toc;
extern bool selection_possible;
extern kb_keymap * toplevel_keymap;
break;
case LFUN_EXPORT:
if (argument == "latex")
- disable = ! buf->isLatex();
+ disable = (! buf->isLatex() && ! buf->isLiterate()) ;
else if (argument == "linuxdoc")
disable = ! buf->isLinuxDoc();
else if (argument == "docbook")
|| (! buf->isLinuxDoc() && ! buf->isDocBook()
&& lyxrc.html_command == "none");
else if (argument == "custom")
- disable = ! buf->isLatex();
+ disable = (! buf->isLatex() && ! buf->isLiterate());
break;
case LFUN_UNDO:
disable = buf->undostack.empty();
case LFUN_BUILDPROG:
disable = (lyxrc.literate_command == "none"
|| ! buf->isLiterate());
+ break;
+
#ifndef NEW_TABULAR
case LFUN_LAYOUT_TABLE:
disable = ! owner->view()->text->cursor.par()->table;
break;
#endif
+ case LFUN_LAYOUT_TABULAR:
+ disable = true;
+ if (owner->view()->the_locking_inset) {
+ disable = (owner->view()->the_locking_inset->LyxCode() != Inset::TABULAR_CODE) &&
+ !owner->view()->the_locking_inset->GetFirstLockingInsetOfType(Inset::TABULAR_CODE);
+ }
+ break;
+
+ case LFUN_TABULAR_FEATURE:
+ disable = true;
+ if (owner->view()->the_locking_inset) {
+ int ret = 0;
+ if (owner->view()->the_locking_inset->LyxCode() == Inset::TABULAR_CODE) {
+ ret = static_cast<InsetTabular *>
+ (owner->view()->the_locking_inset)->
+ getStatus(argument);
+ } else if (owner->view()->the_locking_inset->GetFirstLockingInsetOfType(Inset::TABULAR_CODE)) {
+ ret = static_cast<InsetTabular *>
+ (owner->view()->the_locking_inset->
+ GetFirstLockingInsetOfType(Inset::TABULAR_CODE))->
+ getStatus(argument);
+ }
+ switch(ret) {
+ case 0:
+ break;
+ case 1:
+ disable = false;
+ break;
+ case 2:
+ disable = false;
+ flag |= LyXFunc::ToggleOn;
+ break;
+ case 3:
+ disable = false;
+ flag |= LyXFunc::ToggleOff;
+ break;
+ }
+ }
+ break;
+
case LFUN_VC_REGISTER:
disable = buf->lyxvc.inUse();
break;
owner->view()->hideCursor();
// We cannot use this function here
- if (getStatus(action) & Disabled)
+ if (getStatus(ac) & Disabled)
goto exit_with_message;
commandshortcut.erase();
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);
- } else {
- static int ow = -1, oh;
- fl_show_form(fd_form_toc->form_toc,
- FL_PLACE_MOUSE |
- FL_FREE_SIZE, FL_FULLBORDER,
- _("Table of Contents"));
- if (ow < 0) {
- ow = fd_form_toc->form_toc->w;
- oh = fd_form_toc->form_toc->h;
- }
- fl_set_form_minsize(fd_form_toc->form_toc, ow, oh);
- }
+ InsetCommandParams p;
+
+ if( action == LFUN_TOCVIEW )
+ p.setCmdName( "tableofcontents" );
+ else if( action == LFUN_LOAVIEW )
+ p.setCmdName( "listofalgorithms" );
+ else if( action == LFUN_LOFVIEW )
+ p.setCmdName( "listoffigures" );
+ else
+ p.setCmdName( "listoftables" );
+
+ owner->getDialogs()->createTOC( p.getAsString() );
break;
}
+
case LFUN_TOC_INSERT:
- {
- Inset * new_inset = new InsetTOC(owner->buffer());
- if (!owner->view()->insertInset(new_inset, "Standard", true))
- delete new_inset;
- break;
- }
-
- case LFUN_LOF_INSERT:
- {
- Inset * new_inset = new InsetLOF(owner->buffer());
- if (!owner->view()->insertInset(new_inset, "Standard", true))
- delete new_inset;
- break;
- }
-
case LFUN_LOA_INSERT:
- {
- Inset * new_inset = new InsetLOA(owner->buffer());
- if (!owner->view()->insertInset(new_inset, "Standard", true))
- delete new_inset;
- break;
- }
-
+ case LFUN_LOF_INSERT:
case LFUN_LOT_INSERT:
{
- Inset * new_inset = new InsetLOT(owner->buffer());
- if (!owner->view()->insertInset(new_inset, "Standard", true))
- delete new_inset;
+ InsetCommandParams p;
+
+ if( action == LFUN_TOC_INSERT )
+ p.setCmdName( "tableofcontents" );
+ else if( action == LFUN_LOA_INSERT )
+ p.setCmdName( "listofalgorithms" );
+ else if( action == LFUN_LOF_INSERT )
+ p.setCmdName( "listoffigures" );
+ else
+ p.setCmdName( "listoftables" );
+
+ Inset * inset = new InsetTOC( p );
+ if( !owner->view()->insertInset( inset, "Standard", true ) )
+ delete inset;
break;
}
}
break;
+ case LFUN_LAYOUT_TABULAR:
+ if (owner->view()->the_locking_inset) {
+ if (owner->view()->the_locking_inset->LyxCode()==Inset::TABULAR_CODE) {
+ InsetTabular * inset = static_cast<InsetTabular *>
+ (owner->view()->the_locking_inset);
+ inset->OpenLayoutDialog(owner->view());
+ } else if (owner->view()->the_locking_inset->
+ GetFirstLockingInsetOfType(Inset::TABULAR_CODE)!=0) {
+ InsetTabular * inset = static_cast<InsetTabular *>(
+ owner->view()->the_locking_inset->GetFirstLockingInsetOfType(Inset::TABULAR_CODE));
+ inset->OpenLayoutDialog(owner->view());
+ }
+ }
+ break;
+
case LFUN_LAYOUT_PAPER:
MenuLayoutPaper();
break;
}
break;
- case LFUN_CREATE_CITATION:
+ case LFUN_CITATION_CREATE:
{
- owner->getDialogs()->createCitation( argument );
+ // Should do this "at source"
+ InsetCommandParams p( "cite" );
+
+ if (contains(argument, "|")) {
+ p.setContents( token(argument, '|', 0) );
+ p.setOptions( token(argument, '|', 1) );
+ } else {
+ p.setContents( argument );
+ }
+
+ owner->getDialogs()->createCitation( p.getAsString() );
}
break;
- case LFUN_INSERT_CITATION:
+ case LFUN_CITATION_INSERT:
{
InsetCommandParams p;
p.setFromString( argument );
}
break;
- case LFUN_INDEX_INSERT:
- case LFUN_INDEX_INSERT_LAST:
+ case LFUN_INDEX_CREATE:
+ case LFUN_INDEX_CREATE_LAST:
{
// Can't do that at the beginning of a paragraph.
if (owner->view()->text->cursor.pos() - 1 < 0)
break;
- InsetIndex * new_inset = new InsetIndex();
+ InsetCommandParams p( "index" );
+
if (!argument.empty()) {
- string lsarg(argument);
- new_inset->setContents(lsarg);
- if (!owner->view()->insertInset(new_inset))
- delete new_inset;
+ p.setContents( argument );
} else {
- //reh 98/09/21
//get the current word for an argument
LyXParagraph::size_type lastpos =
owner->view()->text->cursor.pos() - 1;
->text->cursor.par()->GetWord(lastpos));
//make the new inset and write the current word into it
- InsetIndex * new_inset = new InsetIndex();
-
- new_inset->setContents(curstring);
-
- //don't edit it if the call was to INSERT_LAST
- if(action != LFUN_INDEX_INSERT_LAST) {
- new_inset->Edit(owner->view(), 0, 0, 0);
- } else {
- //it looks blank on the screen unless
- //we do something. put it here.
-
- // move the cursor to the returned value of lastpos
- // but only for the auto-insert
- 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
- if (!owner->view()->insertInset(new_inset))
- delete new_inset;
+ p.setContents( curstring );
}
+
+ owner->getDialogs()->createIndex( p.getAsString() );
}
break;
+
+ case LFUN_INDEX_INSERT:
+ {
+ InsetCommandParams p;
+ p.setFromString( argument );
+ InsetIndex * inset = new InsetIndex( p );
+ if (!owner->view()->insertInset(inset))
+ delete inset;
+ else
+ owner->view()->updateInset( inset, true );
+ }
+ break;
+
case LFUN_INDEX_PRINT:
{
- Inset * new_inset = new InsetPrintIndex(owner->buffer());
- if (!owner->view()->insertInset(new_inset, "Standard", true))
- delete new_inset;
+ InsetCommandParams p("printindex");
+ Inset * inset = new InsetPrintIndex(p);
+ if (!owner->view()->insertInset(inset, "Standard", true))
+ delete inset;
}
break;