#include "insets/insetvspace.h"
#include "insets/insetwrap.h"
+#include "frontends/Application.h"
#include "frontends/Alert.h"
#include "frontends/Dialogs.h"
#include "frontends/FileDialog.h"
+#include "frontends/FontLoader.h"
#include "frontends/lyx_gui.h"
#include "frontends/LyXKeySym.h"
#include "frontends/LyXView.h"
using lyx::support::makeAbsPath;
using lyx::support::makeDisplayPath;
using lyx::support::package;
-using lyx::support::Path;
using lyx::support::quoteName;
using lyx::support::rtrim;
using lyx::support::split;
namespace fs = boost::filesystem;
-extern BufferList bufferlist;
-extern LyXServer * lyxserver;
-
extern boost::scoped_ptr<kb_keymap> toplevel_keymap;
// (alkis)
c = 0;
}
- owner->getIntl().getTransManager()
+ owner->view()->getIntl().getTransManager()
.deadkey(c, get_accent(action).accent, view()->getLyXText());
// Need to clear, in case the minibuffer calls these
// actions
flag.unknown(true);
flag.enabled(false);
break;
+
default:
- flag |= lyx_gui::getStatus(cmd);
+ break;
}
if (flag.unknown()) {
// to handle (Andre')
bool enable = true;
switch (cmd.action) {
- case LFUN_TOOLTIPS_TOGGLE:
- flag.setOnOff(owner->getDialogs().tooltipsEnabled());
- break;
-
case LFUN_BUFFER_TOGGLE_READ_ONLY:
flag.setOnOff(buf->isReadonly());
break;
break;
case LFUN_BUFFER_CHKTEX:
- enable = buf->isLatex() && lyxrc.chktex_command != "none";
+ enable = buf->isLatex() && !lyxrc.chktex_command.empty();
break;
case LFUN_BUILD_PROGRAM:
}
// Are we in a DELETED change-tracking region?
- if (buf && buf->params().tracking_changes
- && lookupChangeType(cur, true) == Change::DELETED
+ if (buf && lookupChangeType(cur, true) == Change::DELETED
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly)
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)) {
flag.message(lyx::from_utf8(N_("This portion of the document is deleted.")));
}
-namespace {
-
-bool ensureBufferClean(BufferView * bv)
+bool LyXFunc::ensureBufferClean(BufferView * bv)
{
Buffer & buf = *bv->buffer();
if (buf.isClean())
_("&Cancel"));
if (ret == 0)
- bv->owner()->dispatch(FuncRequest(LFUN_BUFFER_WRITE));
+ dispatch(FuncRequest(LFUN_BUFFER_WRITE));
return buf.isClean();
}
+namespace {
+
void showPrintError(string const & name)
{
docstring str = bformat(_("Could not print the document %1$s.\n"
case LFUN_CANCEL:
keyseq.reset();
meta_fake_bit = key_modifier::none;
- if (view()->available())
+ if (view()->buffer())
// cancel any selection
dispatch(FuncRequest(LFUN_MARK_OFF));
- setMessage(lyx::from_utf8(N_("Cancel")));
+ setMessage(_("Cancel"));
break;
case LFUN_META_PREFIX:
// Push directory path.
string const path = buffer->temppath();
- Path p(path);
+ lyx::support::Path p(path);
// there are three cases here:
// 1. we print to a file
break;
case LFUN_LYX_QUIT:
- if (view()->available()) {
+ if (view()->buffer()) {
// save cursor Position for opened files to .lyx/session
LyX::ref().session().saveFilePosition(owner->buffer()->fileName(),
boost::tie(view()->cursor().pit(), view()->cursor().pos()) );
case LFUN_HELP_OPEN: {
string const arg = argument;
if (arg.empty()) {
- setErrorMessage(lyx::from_utf8(N_("Missing argument")));
+ setErrorMessage(_("Missing argument"));
break;
}
string const fname = i18nLibFileSearch("doc", arg, "lyx");
// --- buffers ----------------------------------------
case LFUN_BUFFER_SWITCH:
- owner->setBuffer(bufferlist.getBuffer(argument));
+ owner->setBuffer(theApp->bufferList().getBuffer(argument));
break;
case LFUN_BUFFER_NEXT:
- owner->setBuffer(bufferlist.next(view()->buffer()));
+ owner->setBuffer(theApp->bufferList().next(view()->buffer()));
break;
case LFUN_BUFFER_PREVIOUS:
- owner->setBuffer(bufferlist.previous(view()->buffer()));
+ owner->setBuffer(theApp->bufferList().previous(view()->buffer()));
break;
case LFUN_FILE_NEW:
case LFUN_SERVER_NOTIFY:
dispatch_buffer = lyx::from_utf8(keyseq.print());
- lyxserver->notifyClient(lyx::to_utf8(dispatch_buffer));
+ theApp->server().notifyClient(lyx::to_utf8(dispatch_buffer));
break;
case LFUN_SERVER_GOTO_FILE_ROW: {
if (prefixIs(file_name, package().temp_dir())) {
// Needed by inverse dvi search. If it is a file
// in tmpdir, call the apropriated function
- owner->setBuffer(bufferlist.getBufferFromTmp(file_name));
+ owner->setBuffer(theApp->bufferList().getBufferFromTmp(file_name));
} else {
// Must replace extension of the file to be .lyx
// and get full path
string const s = changeExtension(file_name, ".lyx");
// Either change buffer or load the file
- if (bufferlist.exists(s)) {
- owner->setBuffer(bufferlist.getBuffer(s));
+ if (theApp->bufferList().exists(s)) {
+ owner->setBuffer(theApp->bufferList().getBuffer(s));
} else {
owner->loadLyXFile(s);
}
view()->setCursorFromRow(row);
view()->center();
- // see BufferView_pimpl::center()
+ // see BufferView::center()
break;
}
case LFUN_BUFFER_CHILD_OPEN: {
string const filename =
makeAbsPath(argument, owner->buffer()->filePath());
- setMessage(lyx::from_utf8(N_("Opening child document ")) +
+ // FIXME Should use bformat
+ setMessage(_("Opening child document ") +
makeDisplayPath(filename) + lyx::from_ascii("..."));
view()->savePosition(0);
string const parentfilename = owner->buffer()->fileName();
- if (bufferlist.exists(filename))
- owner->setBuffer(bufferlist.getBuffer(filename));
+ if (theApp->bufferList().exists(filename))
+ owner->setBuffer(theApp->bufferList().getBuffer(filename));
else
owner->loadLyXFile(filename);
// Set the parent name of the child document.
break;
case LFUN_KEYMAP_OFF:
- owner->getIntl().keyMapOn(false);
+ owner->view()->getIntl().keyMapOn(false);
break;
case LFUN_KEYMAP_PRIMARY:
- owner->getIntl().keyMapPrim();
+ owner->view()->getIntl().keyMapPrim();
break;
case LFUN_KEYMAP_SECONDARY:
- owner->getIntl().keyMapSec();
+ owner->view()->getIntl().keyMapSec();
break;
case LFUN_KEYMAP_TOGGLE:
- owner->getIntl().toggleKeyMap();
+ owner->view()->getIntl().toggleKeyMap();
break;
case LFUN_REPEAT: {
}
case LFUN_PREFERENCES_SAVE: {
- Path p(package().user_support());
+ lyx::support::Path p(package().user_support());
lyxrc.write("preferences", false);
break;
}
case LFUN_SCREEN_FONT_UPDATE:
// handle the screen font changes.
lyxrc.set_font_norm_type();
- lyx_gui::update_fonts();
+ theApp->fontLoader().update();
// All visible buffers will need resize
view()->resize();
break;
string lyx_name;
string const x11_name = split(argument, lyx_name, ' ');
if (lyx_name.empty() || x11_name.empty()) {
- setErrorMessage(lyx::from_utf8(N_("Syntax: set-color <lyx_name>"
- " <x11_name>")));
+ setErrorMessage(_("Syntax: set-color <lyx_name>"
+ " <x11_name>"));
break;
}
owner->message(lyx::from_utf8(argument));
break;
- case LFUN_TOOLTIPS_TOGGLE:
- owner->getDialogs().toggleTooltips();
- break;
-
case LFUN_EXTERNAL_EDIT: {
FuncRequest fr(action, argument);
InsetExternal().dispatch(view()->cursor(), fr);
}
if (defaults.writeFile(defaults.fileName()))
+ // FIXME Should use bformat
setMessage(_("Document defaults saved in ")
+ makeDisplayPath(fname));
else
}
}
- if (view()->available()) {
+ if (view()->buffer()) {
// Redraw screen unless explicitly told otherwise.
// This also initializes the position cache for all insets
// in (at least partially) visible top-level paragraphs.
view()->buffer()->markDirty();
if (view()->cursor().inTexted()) {
- view()->owner()->updateLayoutChoice();
+ owner->updateLayoutChoice();
}
}
}
if (!quitting)
// FIXME UNICODE: _() does not support anything but ascii.
// Do we need a lyx::to_ascii() method?
- sendDispatchMessage(_(lyx::to_utf8(getMessage())), cmd);
+ sendDispatchMessage(getMessage(), cmd);
}
dispatch_msg += lyx::from_utf8('(' + rtrim(comname) + ')');
}
- lyxerr[Debug::ACTION] << "verbose dispatch msg "
+ lyxerr[Debug::ACTION] << "verbose dispatch msg "
<< lyx::to_utf8(dispatch_msg) << endl;
if (!dispatch_msg.empty())
owner->message(dispatch_msg);
string initpath = lyxrc.document_path;
string filename(name);
- if (view()->available()) {
+ if (view()->buffer()) {
string const trypath = owner->buffer()->filePath();
// If directory is writeable, use this as default.
if (isDirWriteable(trypath))
if (filename.empty()) {
filename = addName(lyxrc.document_path,
"newfile" + convert<string>(++newfile_number) + ".lyx");
- while (bufferlist.exists(filename) || fs::is_readable(filename)) {
+ while (theApp->bufferList().exists(filename) || fs::is_readable(filename)) {
++newfile_number;
filename = addName(lyxrc.document_path,
"newfile" + convert<string>(newfile_number) +
{
string initpath = lyxrc.document_path;
- if (view()->available()) {
+ if (view()->buffer()) {
string const trypath = owner->buffer()->filePath();
// If directory is writeable, use this as default.
if (isDirWriteable(trypath))
if (filename.empty()) {
string initpath = lyxrc.document_path;
- if (view()->available()) {
+ if (view()->buffer()) {
string const trypath = owner->buffer()->filePath();
// If directory is writeable, use this as default.
if (isDirWriteable(trypath))
string const lyxfile = changeExtension(filename, ".lyx");
// Check if the document already is open
- if (lyx_gui::use_gui && bufferlist.exists(lyxfile)) {
- if (!bufferlist.close(bufferlist.getBuffer(lyxfile), true)) {
+ if (lyx_gui::use_gui && theApp->bufferList().exists(lyxfile)) {
+ if (!theApp->bufferList().close(theApp->bufferList().getBuffer(lyxfile), true)) {
owner->message(_("Canceled."));
return;
}
// save current cursor position
LyX::ref().session().saveFilePosition(owner->buffer()->fileName(),
boost::tie(view()->cursor().pit(), view()->cursor().pos()) );
- if (bufferlist.close(owner->buffer(), true) && !quitting) {
- if (bufferlist.empty()) {
+ if (theApp->bufferList().close(owner->buffer(), true) && !quitting) {
+ if (theApp->bufferList().empty()) {
// need this otherwise SEGV may occur while
// trying to set variables that don't exist
// since there's no current buffer
owner->getDialogs().hideBufferDependent();
} else {
- owner->setBuffer(bufferlist.first());
+ owner->setBuffer(theApp->bufferList().first());
}
}
}
if (keyseq.length() > 0 && !keyseq.deleted())
return keyseq.printOptions();
- if (!view()->available())
+ if (!view()->buffer())
return lyx::to_utf8(_("Welcome to LyX!"));
return view()->cursor().currentState();