extern kb_keymap * toplevel_keymap;
extern void MenuWrite(Buffer *);
-extern void MenuWriteAs(Buffer *);
+extern bool MenuWriteAs(Buffer *);
extern int MenuRunLaTeX(Buffer *);
extern int MenuBuildProg(Buffer *);
extern int MenuRunChktex(Buffer *);
// no
setErrorMessage(N_("Document is read-only"));
flag |= LyXFunc::Disabled;
- return flag;
}
} else {
// no
setErrorMessage(N_("Command not allowed with"
"out any document open"));
flag |= LyXFunc::Disabled;
+ return flag;
}
}
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")
else if (argument == "dvi" || argument == "postscript")
disable = noLaTeX;
else if (argument == "html")
- disable = (! buf->isLatex()
- || lyxrc.html_command == "none");
- else if (argument == "html-linuxdoc")
- disable = (! buf->isLinuxDoc()
- || lyxrc.linuxdoc_to_html_command == "none");
- else if (argument == "html-docbook")
- disable = (! buf->isDocBook()
- || lyxrc.docbook_to_html_command == "none");
+ disable = (buf->isLinuxDoc()
+ && lyxrc.linuxdoc_to_html_command == "none")
+ || (buf->isDocBook()
+ && lyxrc.docbook_to_html_command == "none")
+ || (! 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();
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!"));
- //}
+ if (!owner->buffer()->isUnnamed()) {
+ 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!"));
+ //}
+ } else {
+ MenuWriteAs(owner->buffer());
+ }
break;
case LFUN_MENUWRITEAS:
#endif
break;
+ case LFUN_TABULAR_FEATURE:
+ // this is not handled here as this funktion is only aktive
+ // if we have a locking_inset and that one is (or contains)
+ // a tabular-inset
+ break;
+
case LFUN_FIGURE:
Figure();
break;
case LFUN_INSET_GRAPHICS:
{
Inset * new_inset = new InsetGraphics;
- if (!owner->view()->insertInset(new_inset))
+ if (!owner->view()->insertInset(new_inset)) {
delete new_inset;
+ } else {
+ // this is need because you don't use a inset->Edit()
+ owner->view()->updateInset(new_inset, true);
+ }
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;
case LFUN_HTMLURL:
case LFUN_URL:
{
- InsetCommand * new_inset;
+ InsetCommandParams p;
if (action == LFUN_HTMLURL)
- new_inset = new InsetUrl("htmlurl", "", "");
+ p.setCmdName("htmlurl");
else
- new_inset = new InsetUrl("url", "", "");
- if (owner->view()->insertInset(new_inset))
- new_inset->Edit(owner->view(), 0, 0, 0);
+ p.setCmdName("url");
+ owner->getDialogs()->createUrl( p.getAsString() );
+ }
+ break;
+
+ case LFUN_INSERT_URL:
+ {
+ InsetCommandParams p;
+ p.setFromString( argument );
+
+ InsetUrl * inset = new InsetUrl( p );
+ if (!owner->view()->insertInset(inset))
+ delete inset;
else
- delete new_inset;
+ owner->view()->updateInset( inset, true );
}
break;
-
+
case LFUN_INSET_TEXT:
{
InsetText * new_inset = new InsetText;
// Do we have a locking inset...
if (owner->view()->the_locking_inset) {
lyxerr << "Locking inset code: "
- << owner->view()->the_locking_inset->LyxCode();
+ << static_cast<int>(owner->view()->the_locking_inset->LyxCode());
InsetCaption * new_inset = new InsetCaption;
new_inset->setOwner(owner->view()->the_locking_inset);
new_inset->SetAutoBreakRows(true);
case LFUN_INSERT_CITATION:
{
- string keys = token(argument, '|', 0);
- string text = token(argument, '|', 1);
+ InsetCommandParams p;
+ p.setFromString( argument );
- InsetCitation * inset = new InsetCitation( keys, text );
+ InsetCitation * inset = new InsetCitation( p );
if (!owner->view()->insertInset(inset))
delete inset;
else
}
break;
+ case LFUN_DIALOG_PREFERENCES:
+ owner->getDialogs()->showPreferences();
+ break;
+
case LFUN_SAVEPREFERENCES:
{
Path p(user_lyxdir);
initpath = trypath;
}
+#ifdef NEW_WITH_FILENAME
ProhibitInput(owner->view());
fileDlg.SetButton(0, _("Documents"), lyxrc.document_path);
fileDlg.SetButton(1, _("Templates"), lyxrc.template_path);
lyxerr.debug() << "New Document Cancelled." << endl;
return;
}
-
+
// get absolute path of file and make sure the filename ends
// with .lyx
string s = MakeAbsPath(fname);
s += ".lyx";
// Check if the document already is open
- if (bufferlist.exists(s)){
+ if (bufferlist.exists(s)) {
switch(AskConfirmation(_("Document is already open:"),
MakeDisplayPath(s, 50),
_("Do you want to close that document now?\n"
return;
}
}
-
+
// Check whether the file already exists
if (IsLyXFilename(s)) {
FileInfo fi(s);
return;
}
}
+#else
+ static int newfile_number = 0;
+ string s = "/lyx/dummy/dirname/newfile ["+tostr(++newfile_number)+"]";
+ FileInfo fi(s);
+ while (bufferlist.exists(s) || fi.readable()) {
+ ++newfile_number;
+ s = "/lyx/dummy/dirname/newfile ["+tostr(newfile_number)+"]";
+ fi.newFile(s);
+ }
+#endif
// The template stuff
string templname;