mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-12 03:23:12 +00:00
* Move Buffer specific LFUNs to Buffer::dispatch() and Buffer::getStatus().
There is a FIXME in there that says that if some LFUN need to be dispatched even if the Buffer is internal then we should add some code. But I couldn't find any for now. * Move LFUN_BUFFER_IMPORT status to GuiView where it belongs. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31398 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
226ebea2bf
commit
93998bb239
160
src/Buffer.cpp
160
src/Buffer.cpp
@ -1633,27 +1633,73 @@ void Buffer::markDepClean(string const & name)
|
|||||||
|
|
||||||
bool Buffer::getStatus(FuncRequest const & cmd, FuncStatus & flag)
|
bool Buffer::getStatus(FuncRequest const & cmd, FuncStatus & flag)
|
||||||
{
|
{
|
||||||
|
if (isInternal()) {
|
||||||
|
// FIXME? if there is an Buffer LFUN that can be dispatched even
|
||||||
|
// if internal, put a switch '(cmd.action)' here.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool enable = true;
|
||||||
|
|
||||||
switch (cmd.action) {
|
switch (cmd.action) {
|
||||||
|
|
||||||
case LFUN_BUFFER_TOGGLE_READ_ONLY:
|
case LFUN_BUFFER_TOGGLE_READ_ONLY:
|
||||||
flag.setOnOff(isReadonly());
|
flag.setOnOff(isReadonly());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// FIXME: There is need for a command-line import.
|
||||||
|
//case LFUN_BUFFER_IMPORT:
|
||||||
|
|
||||||
|
case LFUN_BUFFER_AUTO_SAVE:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LFUN_BUFFER_EXPORT_CUSTOM:
|
||||||
|
// FIXME: Nothing to check here?
|
||||||
|
break;
|
||||||
|
|
||||||
case LFUN_BUFFER_EXPORT: {
|
case LFUN_BUFFER_EXPORT: {
|
||||||
docstring const arg = cmd.argument();
|
docstring const arg = cmd.argument();
|
||||||
bool enable = arg == "custom" || isExportable(to_utf8(arg));
|
enable = arg == "custom" || isExportable(to_utf8(arg));
|
||||||
if (!enable)
|
if (!enable)
|
||||||
flag.message(bformat(
|
flag.message(bformat(
|
||||||
_("Don't know how to export to format: %1$s"), arg));
|
_("Don't know how to export to format: %1$s"), arg));
|
||||||
flag.setEnabled(enable);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case LFUN_MASTER_BUFFER_UPDATE:
|
||||||
|
case LFUN_MASTER_BUFFER_VIEW:
|
||||||
|
enable = parent() != 0;
|
||||||
|
break;
|
||||||
|
case LFUN_BUFFER_UPDATE:
|
||||||
|
case LFUN_BUFFER_VIEW: {
|
||||||
|
string format = to_utf8(cmd.argument());
|
||||||
|
if (cmd.argument().empty())
|
||||||
|
format = getDefaultOutputFormat();
|
||||||
|
typedef vector<Format const *> Formats;
|
||||||
|
Formats formats;
|
||||||
|
formats = exportableFormats(true);
|
||||||
|
Formats::const_iterator fit = formats.begin();
|
||||||
|
Formats::const_iterator end = formats.end();
|
||||||
|
enable = false;
|
||||||
|
for (; fit != end ; ++fit) {
|
||||||
|
if ((*fit)->name() == format)
|
||||||
|
enable = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case LFUN_BUFFER_CHKTEX:
|
||||||
|
enable = isLatex() && !lyxrc.chktex_command.empty();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LFUN_BUILD_PROGRAM:
|
||||||
|
enable = isExportable("program");
|
||||||
|
break;
|
||||||
|
|
||||||
case LFUN_BRANCH_ACTIVATE:
|
case LFUN_BRANCH_ACTIVATE:
|
||||||
case LFUN_BRANCH_DEACTIVATE: {
|
case LFUN_BRANCH_DEACTIVATE: {
|
||||||
BranchList const & branchList = params().branchlist();
|
BranchList const & branchList = params().branchlist();
|
||||||
docstring const branchName = cmd.argument();
|
docstring const branchName = cmd.argument();
|
||||||
flag.setEnabled(!branchName.empty()
|
enable = !branchName.empty() && branchList.find(branchName);
|
||||||
&& branchList.find(branchName));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1661,12 +1707,12 @@ bool Buffer::getStatus(FuncRequest const & cmd, FuncStatus & flag)
|
|||||||
case LFUN_BRANCHES_RENAME:
|
case LFUN_BRANCHES_RENAME:
|
||||||
case LFUN_BUFFER_PRINT:
|
case LFUN_BUFFER_PRINT:
|
||||||
// if no Buffer is present, then of course we won't be called!
|
// if no Buffer is present, then of course we won't be called!
|
||||||
flag.setEnabled(true);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
flag.setEnabled(enable);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1682,6 +1728,13 @@ void Buffer::dispatch(string const & command, DispatchResult & result)
|
|||||||
// whether we have a GUI or not. The boolean use_gui holds this information.
|
// whether we have a GUI or not. The boolean use_gui holds this information.
|
||||||
void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
|
void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
|
||||||
{
|
{
|
||||||
|
if (isInternal()) {
|
||||||
|
// FIXME? if there is an Buffer LFUN that can be dispatched even
|
||||||
|
// if internal, put a switch '(cmd.action)' here.
|
||||||
|
dr.dispatched(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string const argument = to_utf8(func.argument());
|
||||||
// We'll set this back to false if need be.
|
// We'll set this back to false if need be.
|
||||||
bool dispatched = true;
|
bool dispatched = true;
|
||||||
|
|
||||||
@ -1694,7 +1747,12 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case LFUN_BUFFER_EXPORT: {
|
case LFUN_BUFFER_EXPORT: {
|
||||||
bool success = doExport(to_utf8(func.argument()), false);
|
if (argument == "custom") {
|
||||||
|
lyx::dispatch(FuncRequest(LFUN_DIALOG_SHOW, "sendto"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
doExport(argument, false);
|
||||||
|
bool success = doExport(argument, false);
|
||||||
dr.setError(success);
|
dr.setError(success);
|
||||||
if (!success)
|
if (!success)
|
||||||
dr.setMessage(bformat(_("Error exporting to format: %1$s."),
|
dr.setMessage(bformat(_("Error exporting to format: %1$s."),
|
||||||
@ -1702,6 +1760,96 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case LFUN_BUFFER_UPDATE: {
|
||||||
|
string format = argument;
|
||||||
|
if (argument.empty())
|
||||||
|
format = getDefaultOutputFormat();
|
||||||
|
doExport(format, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case LFUN_BUFFER_VIEW: {
|
||||||
|
string format = argument;
|
||||||
|
if (argument.empty())
|
||||||
|
format = getDefaultOutputFormat();
|
||||||
|
preview(format);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case LFUN_MASTER_BUFFER_UPDATE: {
|
||||||
|
string format = argument;
|
||||||
|
if (argument.empty())
|
||||||
|
format = masterBuffer()->getDefaultOutputFormat();
|
||||||
|
masterBuffer()->doExport(format, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case LFUN_MASTER_BUFFER_VIEW: {
|
||||||
|
string format = argument;
|
||||||
|
if (argument.empty())
|
||||||
|
format = masterBuffer()->getDefaultOutputFormat();
|
||||||
|
masterBuffer()->preview(format);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case LFUN_BUILD_PROGRAM:
|
||||||
|
doExport("program", true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LFUN_BUFFER_CHKTEX:
|
||||||
|
runChktex();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LFUN_BUFFER_EXPORT_CUSTOM: {
|
||||||
|
string format_name;
|
||||||
|
string command = split(argument, format_name, ' ');
|
||||||
|
Format const * format = formats.getFormat(format_name);
|
||||||
|
if (!format) {
|
||||||
|
lyxerr << "Format \"" << format_name
|
||||||
|
<< "\" not recognized!"
|
||||||
|
<< endl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The name of the file created by the conversion process
|
||||||
|
string filename;
|
||||||
|
|
||||||
|
// Output to filename
|
||||||
|
if (format->name() == "lyx") {
|
||||||
|
string const latexname = latexName(false);
|
||||||
|
filename = changeExtension(latexname,
|
||||||
|
format->extension());
|
||||||
|
filename = addName(temppath(), filename);
|
||||||
|
|
||||||
|
if (!writeFile(FileName(filename)))
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
doExport(format_name, true, filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Substitute $$FName for filename
|
||||||
|
if (!contains(command, "$$FName"))
|
||||||
|
command = "( " + command + " ) < $$FName";
|
||||||
|
command = subst(command, "$$FName", filename);
|
||||||
|
|
||||||
|
// Execute the command in the background
|
||||||
|
Systemcall call;
|
||||||
|
call.startscript(Systemcall::DontWait, command);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FIXME: There is need for a command-line import.
|
||||||
|
/*
|
||||||
|
case LFUN_BUFFER_IMPORT:
|
||||||
|
doImport(argument);
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
|
||||||
|
case LFUN_BUFFER_AUTO_SAVE:
|
||||||
|
autoSave();
|
||||||
|
break;
|
||||||
|
|
||||||
case LFUN_BRANCH_ADD: {
|
case LFUN_BRANCH_ADD: {
|
||||||
BranchList & branchList = params().branchlist();
|
BranchList & branchList = params().branchlist();
|
||||||
docstring const branchName = func.argument();
|
docstring const branchName = func.argument();
|
||||||
|
160
src/LyXFunc.cpp
160
src/LyXFunc.cpp
@ -463,14 +463,6 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
|
|||||||
bool enable = true;
|
bool enable = true;
|
||||||
switch (cmd.action) {
|
switch (cmd.action) {
|
||||||
|
|
||||||
case LFUN_BUFFER_CHKTEX:
|
|
||||||
enable = buf->isLatex() && !lyxrc.chktex_command.empty();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LFUN_BUILD_PROGRAM:
|
|
||||||
enable = buf->isExportable("program");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LFUN_CITATION_INSERT: {
|
case LFUN_CITATION_INSERT: {
|
||||||
FuncRequest fr(LFUN_INSET_INSERT, "citation");
|
FuncRequest fr(LFUN_INSET_INSERT, "citation");
|
||||||
enable = getStatus(fr).enabled();
|
enable = getStatus(fr).enabled();
|
||||||
@ -562,36 +554,10 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case LFUN_MASTER_BUFFER_UPDATE:
|
|
||||||
case LFUN_MASTER_BUFFER_VIEW:
|
|
||||||
if (!buf->parent()) {
|
|
||||||
enable = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LFUN_BUFFER_UPDATE:
|
|
||||||
case LFUN_BUFFER_VIEW: {
|
|
||||||
string format = to_utf8(cmd.argument());
|
|
||||||
if (cmd.argument().empty())
|
|
||||||
format = buf->getDefaultOutputFormat();
|
|
||||||
typedef vector<Format const *> Formats;
|
|
||||||
Formats formats;
|
|
||||||
formats = buf->exportableFormats(true);
|
|
||||||
Formats::const_iterator fit = formats.begin();
|
|
||||||
Formats::const_iterator end = formats.end();
|
|
||||||
enable = false;
|
|
||||||
for (; fit != end ; ++fit) {
|
|
||||||
if ((*fit)->name() == format)
|
|
||||||
enable = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case LFUN_COMMAND_PREFIX:
|
case LFUN_COMMAND_PREFIX:
|
||||||
case LFUN_CANCEL:
|
case LFUN_CANCEL:
|
||||||
case LFUN_META_PREFIX:
|
case LFUN_META_PREFIX:
|
||||||
case LFUN_BUFFER_CLOSE:
|
case LFUN_BUFFER_CLOSE:
|
||||||
case LFUN_BUFFER_IMPORT:
|
|
||||||
case LFUN_BUFFER_AUTO_SAVE:
|
|
||||||
case LFUN_RECONFIGURE:
|
case LFUN_RECONFIGURE:
|
||||||
case LFUN_HELP_OPEN:
|
case LFUN_HELP_OPEN:
|
||||||
case LFUN_DROP_LAYOUTS_CHOICE:
|
case LFUN_DROP_LAYOUTS_CHOICE:
|
||||||
@ -605,7 +571,6 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
|
|||||||
case LFUN_KEYMAP_SECONDARY:
|
case LFUN_KEYMAP_SECONDARY:
|
||||||
case LFUN_KEYMAP_TOGGLE:
|
case LFUN_KEYMAP_TOGGLE:
|
||||||
case LFUN_REPEAT:
|
case LFUN_REPEAT:
|
||||||
case LFUN_BUFFER_EXPORT_CUSTOM:
|
|
||||||
case LFUN_PREFERENCES_SAVE:
|
case LFUN_PREFERENCES_SAVE:
|
||||||
case LFUN_INSET_EDIT:
|
case LFUN_INSET_EDIT:
|
||||||
case LFUN_BUFFER_LANGUAGE:
|
case LFUN_BUFFER_LANGUAGE:
|
||||||
@ -637,6 +602,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
BufferView * bv = lv->currentBufferView();
|
BufferView * bv = lv->currentBufferView();
|
||||||
|
BufferView * doc_bv = lv->documentBufferView();
|
||||||
// If we do not have a BufferView, then other functions are disabled
|
// If we do not have a BufferView, then other functions are disabled
|
||||||
if (!bv) {
|
if (!bv) {
|
||||||
enable = false;
|
enable = false;
|
||||||
@ -654,7 +620,10 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
|
|||||||
decided = bv->getStatus(cmd, flag);
|
decided = bv->getStatus(cmd, flag);
|
||||||
if (!decided)
|
if (!decided)
|
||||||
// try the Buffer
|
// try the Buffer
|
||||||
bv->buffer().getStatus(cmd, flag);
|
decided = bv->buffer().getStatus(cmd, flag);
|
||||||
|
if (!decided && doc_bv)
|
||||||
|
// try the Document Buffer
|
||||||
|
decided = doc_bv->buffer().getStatus(cmd, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!enable)
|
if (!enable)
|
||||||
@ -777,115 +746,6 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
|||||||
updateFlags = Update::None;
|
updateFlags = Update::None;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LFUN_BUFFER_UPDATE: {
|
|
||||||
LASSERT(lyx_view_ && lyx_view_->documentBufferView(), /**/);
|
|
||||||
Buffer & doc_buffer = lyx_view_->documentBufferView()->buffer();
|
|
||||||
string format = argument;
|
|
||||||
if (argument.empty())
|
|
||||||
format = doc_buffer.getDefaultOutputFormat();
|
|
||||||
doc_buffer.doExport(format, true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case LFUN_BUFFER_VIEW: {
|
|
||||||
LASSERT(lyx_view_ && lyx_view_->documentBufferView(), /**/);
|
|
||||||
Buffer & doc_buffer = lyx_view_->documentBufferView()->buffer();
|
|
||||||
string format = argument;
|
|
||||||
if (argument.empty())
|
|
||||||
format = doc_buffer.getDefaultOutputFormat();
|
|
||||||
doc_buffer.preview(format);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case LFUN_MASTER_BUFFER_UPDATE: {
|
|
||||||
LASSERT(lyx_view_ && lyx_view_->documentBufferView(), /**/);
|
|
||||||
Buffer & doc_buffer = lyx_view_->documentBufferView()->buffer();
|
|
||||||
string format = argument;
|
|
||||||
if (argument.empty())
|
|
||||||
format = doc_buffer.masterBuffer()->getDefaultOutputFormat();
|
|
||||||
doc_buffer.masterBuffer()->doExport(format, true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case LFUN_MASTER_BUFFER_VIEW: {
|
|
||||||
LASSERT(lyx_view_ && lyx_view_->documentBufferView(), /**/);
|
|
||||||
Buffer & doc_buffer = lyx_view_->documentBufferView()->buffer();
|
|
||||||
string format = argument;
|
|
||||||
if (argument.empty())
|
|
||||||
format = doc_buffer.masterBuffer()->getDefaultOutputFormat();
|
|
||||||
doc_buffer.masterBuffer()->preview(format);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case LFUN_BUILD_PROGRAM:
|
|
||||||
LASSERT(lyx_view_ && buffer, /**/);
|
|
||||||
buffer->doExport("program", true);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LFUN_BUFFER_CHKTEX:
|
|
||||||
LASSERT(lyx_view_ && buffer, /**/);
|
|
||||||
buffer->runChktex();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LFUN_BUFFER_EXPORT:
|
|
||||||
LASSERT(lyx_view_ && buffer, /**/);
|
|
||||||
if (argument == "custom")
|
|
||||||
dispatch(FuncRequest(LFUN_DIALOG_SHOW, "sendto"));
|
|
||||||
else
|
|
||||||
buffer->doExport(argument, false);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LFUN_BUFFER_EXPORT_CUSTOM: {
|
|
||||||
LASSERT(lyx_view_ && buffer, /**/);
|
|
||||||
string format_name;
|
|
||||||
string command = split(argument, format_name, ' ');
|
|
||||||
Format const * format = formats.getFormat(format_name);
|
|
||||||
if (!format) {
|
|
||||||
lyxerr << "Format \"" << format_name
|
|
||||||
<< "\" not recognized!"
|
|
||||||
<< endl;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The name of the file created by the conversion process
|
|
||||||
string filename;
|
|
||||||
|
|
||||||
// Output to filename
|
|
||||||
if (format->name() == "lyx") {
|
|
||||||
string const latexname = buffer->latexName(false);
|
|
||||||
filename = changeExtension(latexname,
|
|
||||||
format->extension());
|
|
||||||
filename = addName(buffer->temppath(), filename);
|
|
||||||
|
|
||||||
if (!buffer->writeFile(FileName(filename)))
|
|
||||||
break;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
buffer->doExport(format_name, true, filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Substitute $$FName for filename
|
|
||||||
if (!contains(command, "$$FName"))
|
|
||||||
command = "( " + command + " ) < $$FName";
|
|
||||||
command = subst(command, "$$FName", filename);
|
|
||||||
|
|
||||||
// Execute the command in the background
|
|
||||||
Systemcall call;
|
|
||||||
call.startscript(Systemcall::DontWait, command);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: There is need for a command-line import.
|
|
||||||
/*
|
|
||||||
case LFUN_BUFFER_IMPORT:
|
|
||||||
doImport(argument);
|
|
||||||
break;
|
|
||||||
*/
|
|
||||||
|
|
||||||
case LFUN_BUFFER_AUTO_SAVE:
|
|
||||||
buffer->autoSave();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LFUN_RECONFIGURE:
|
case LFUN_RECONFIGURE:
|
||||||
// argument is any additional parameter to the configure.py command
|
// argument is any additional parameter to the configure.py command
|
||||||
reconfigure(lyx_view_, argument);
|
reconfigure(lyx_view_, argument);
|
||||||
@ -1476,6 +1336,16 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
|||||||
updateFlags = dr.update();
|
updateFlags = dr.update();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// OK, so try with the document Buffer.
|
||||||
|
BufferView * doc_bv = lyx_view_->documentBufferView();
|
||||||
|
if (doc_bv) {
|
||||||
|
buffer = &(doc_bv->buffer());
|
||||||
|
buffer->dispatch(cmd, dr);
|
||||||
|
if (dr.dispatched()) {
|
||||||
|
updateFlags = dr.update();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Is this a function that acts on inset at point?
|
// Is this a function that acts on inset at point?
|
||||||
Inset * inset = bv->cursor().nextInset();
|
Inset * inset = bv->cursor().nextInset();
|
||||||
|
@ -1191,6 +1191,9 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch(cmd.action) {
|
switch(cmd.action) {
|
||||||
|
case LFUN_BUFFER_IMPORT:
|
||||||
|
break;
|
||||||
|
|
||||||
case LFUN_BUFFER_RELOAD:
|
case LFUN_BUFFER_RELOAD:
|
||||||
enable = doc_buffer && !doc_buffer->isUnnamed()
|
enable = doc_buffer && !doc_buffer->isUnnamed()
|
||||||
&& doc_buffer->fileName().exists()
|
&& doc_buffer->fileName().exists()
|
||||||
|
Loading…
Reference in New Issue
Block a user