#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 bv_funcs::freefont2string;
+using lyx::docstring;
+
using lyx::support::absolutePath;
using lyx::support::addName;
using lyx::support::addPath;
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
Encoding const * encoding = view()->cursor().getEncoding();
- encoded_last_key = keysym->getISOEncoded(encoding ? encoding->name() : "");
+ //encoded_last_key = keysym->getISOEncoded(encoding ? encoding->name() : "");
+ size_t encoded_last_key = keysym->getUCSEncoded();
// Do a one-deep top-level lookup for
// cancel and meta-fake keys. RVDK_PATCH_5
// num_bytes == 0? (Lgb)
if (keyseq.length() > 1) {
- owner->message(keyseq.print());
+ owner->message(lyx::from_utf8(keyseq.print()));
}
if (func.action == LFUN_SELF_INSERT) {
if (encoded_last_key != 0) {
- string const arg(1, encoded_last_key);
+ docstring const arg(1, encoded_last_key);
dispatch(FuncRequest(LFUN_SELF_INSERT, arg,
FuncRequest::KEYBOARD));
lyxerr[Debug::KEY]
- << "SelfInsert arg[`" << arg << "']" << endl;
+ << "SelfInsert arg[`" << lyx::to_utf8(arg) << "']" << endl;
}
} else {
dispatch(func);
buf = owner->buffer();
if (cmd.action == LFUN_NOACTION) {
- flag.message(N_("Nothing to do"));
+ flag.message(lyx::from_utf8(N_("Nothing to do")));
flag.enabled(false);
return flag;
}
flag.unknown(true);
flag.enabled(false);
break;
+
default:
- flag |= lyx_gui::getStatus(cmd);
+ break;
}
if (flag.unknown()) {
- flag.message(N_("Unknown action"));
+ flag.message(lyx::from_utf8(N_("Unknown action")));
return flag;
}
if (!flag.enabled()) {
if (flag.message().empty())
- flag.message(N_("Command disabled"));
+ flag.message(lyx::from_utf8(N_("Command disabled")));
return flag;
}
// Check whether we need a buffer
if (!lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer) && !buf) {
// no, exit directly
- flag.message(N_("Command not allowed with"
- "out any document open"));
+ flag.message(lyx::from_utf8(N_("Command not allowed with"
+ "out any document open")));
flag.enabled(false);
return flag;
}
// 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;
case LFUN_BUFFER_SWITCH:
// toggle on the current buffer, but do not toggle off
// the other ones (is that a good idea?)
- if (cmd.argument == buf->fileName())
+ if (lyx::to_utf8(cmd.argument()) == buf->fileName())
flag.setOnOff(true);
break;
case LFUN_BUFFER_EXPORT:
- enable = cmd.argument == "custom"
- || Exporter::isExportable(*buf, cmd.argument);
+ enable = cmd.argument() == "custom"
+ || Exporter::isExportable(*buf, lyx::to_utf8(cmd.argument()));
break;
case LFUN_BUFFER_CHKTEX:
- enable = buf->isLatex() && lyxrc.chktex_command != "none";
+ enable = buf->isLatex() && !lyxrc.chktex_command.empty();
break;
case LFUN_BUILD_PROGRAM:
InsetBase::Code code = cur.inset().lyxCode();
switch (code) {
case InsetBase::TABULAR_CODE:
- enable = cmd.argument == "tabular";
+ enable = cmd.argument() == "tabular";
break;
case InsetBase::ERT_CODE:
- enable = cmd.argument == "ert";
+ enable = cmd.argument() == "ert";
break;
case InsetBase::FLOAT_CODE:
- enable = cmd.argument == "float";
+ enable = cmd.argument() == "float";
break;
case InsetBase::WRAP_CODE:
- enable = cmd.argument == "wrap";
+ enable = cmd.argument() == "wrap";
break;
case InsetBase::NOTE_CODE:
- enable = cmd.argument == "note";
+ enable = cmd.argument() == "note";
break;
case InsetBase::BRANCH_CODE:
- enable = cmd.argument == "branch";
+ enable = cmd.argument() == "branch";
break;
case InsetBase::BOX_CODE:
- enable = cmd.argument == "box";
+ enable = cmd.argument() == "box";
break;
default:
break;
string const name = cmd.getArg(0);
InsetBase * inset = owner->getDialogs().getOpenInset(name);
if (inset) {
- FuncRequest fr(LFUN_INSET_MODIFY, cmd.argument);
+ FuncRequest fr(LFUN_INSET_MODIFY, cmd.argument());
FuncStatus fs;
bool const success = inset->getStatus(cur, fr, fs);
// Every inset is supposed to handle this
BOOST_ASSERT(success);
flag |= fs;
} else {
- FuncRequest fr(LFUN_INSET_INSERT, cmd.argument);
+ FuncRequest fr(LFUN_INSET_INSERT, cmd.argument());
flag |= getStatus(fr);
}
enable = flag.enabled();
// solution, we consider only the first action of the sequence
case LFUN_COMMAND_SEQUENCE: {
// argument contains ';'-terminated commands
- string const firstcmd = token(cmd.argument, ';', 0);
+ string const firstcmd = token(lyx::to_utf8(cmd.argument()), ';', 0);
FuncRequest func(lyxaction.lookupFunc(firstcmd));
func.origin = cmd.origin;
flag = getStatus(func);
case LFUN_SERVER_GET_NAME:
case LFUN_SERVER_NOTIFY:
case LFUN_SERVER_GOTO_FILE_ROW:
- case LFUN_DIALOG_SHOW_NEXT_INSET:
case LFUN_DIALOG_HIDE:
case LFUN_DIALOG_DISCONNECT_INSET:
case LFUN_BUFFER_CHILD_OPEN:
if (buf && buf->isReadonly()
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly)
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)) {
- flag.message(N_("Document is read-only"));
+ flag.message(lyx::from_utf8(N_("Document is read-only")));
flag.enabled(false);
}
// 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(N_("This portion of the document is deleted."));
+ flag.message(lyx::from_utf8(N_("This portion of the document is deleted.")));
flag.enabled(false);
}
// the default error message if we disable the command
if (!flag.enabled() && flag.message().empty())
- flag.message(N_("Command disabled"));
+ flag.message(lyx::from_utf8(N_("Command disabled")));
return flag;
}
-namespace {
-
-bool ensureBufferClean(BufferView * bv)
+bool LyXFunc::ensureBufferClean(BufferView * bv)
{
Buffer & buf = *bv->buffer();
if (buf.isClean())
return true;
- string const file = makeDisplayPath(buf.fileName(), 30);
- string text = bformat(_("The document %1$s has unsaved "
- "changes.\n\nDo you want to save "
- "the document?"), file);
+ docstring const file = makeDisplayPath(buf.fileName(), 30);
+ docstring text = bformat(_("The document %1$s has unsaved "
+ "changes.\n\nDo you want to save "
+ "the document?"), file);
int const ret = Alert::prompt(_("Save changed document?"),
text, 0, 1, _("&Save"),
_("&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)
{
- string str = bformat(_("Could not print the document %1$s.\n"
- "Check that your printer is set up correctly."),
+ docstring str = bformat(_("Could not print the document %1$s.\n"
+ "Check that your printer is set up correctly."),
makeDisplayPath(name, 50));
Alert::error(_("Print document failed"), str);
}
lyx::textclass_type const tc = tc_pair.second;
if (!textclasslist[tc].load()) {
- string s = bformat(_("The document could not be converted\n"
- "into the document class %1$s."),
- textclasslist[tc].name());
+ docstring s = bformat(_("The document could not be converted\n"
+ "into the document class %1$s."),
+ lyx::from_utf8(textclasslist[tc].name()));
Alert::error(_("Could not change class"), s);
}
}
void LyXFunc::dispatch(FuncRequest const & cmd)
{
BOOST_ASSERT(view());
- string const argument = cmd.argument;
+ string const argument = lyx::to_utf8(cmd.argument());
kb_action const action = cmd.action;
lyxerr[Debug::ACTION] << "LyXFunc::dispatch: cmd: " << cmd << endl;
<< endl;
setErrorMessage(flag.message());
} else {
-
- if (view()->available())
- view()->hideCursor();
-
switch (action) {
case LFUN_WORD_FIND_FORWARD:
}
case LFUN_COMMAND_PREFIX:
- owner->message(keyseq.printOptions());
+ owner->message(lyx::from_utf8(keyseq.printOptions()));
break;
case LFUN_COMMAND_EXECUTE:
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(N_("Cancel"));
+ setMessage(_("Cancel"));
break;
case LFUN_META_PREFIX:
meta_fake_bit = key_modifier::alt;
- setMessage(keyseq.print());
+ setMessage(lyx::from_utf8(keyseq.print()));
break;
case LFUN_BUFFER_TOGGLE_READ_ONLY:
case LFUN_BUFFER_WRITE:
if (!owner->buffer()->isUnnamed()) {
- string const str = bformat(_("Saving document %1$s..."),
+ docstring const str = bformat(_("Saving document %1$s..."),
makeDisplayPath(owner->buffer()->fileName()));
owner->message(str);
menuWrite(owner->buffer());
break;
case LFUN_BUFFER_RELOAD: {
- string const file = makeDisplayPath(view()->buffer()->fileName(), 20);
- string text = bformat(_("Any changes will be lost. Are you sure "
- "you want to revert to the saved version of the document %1$s?"), file);
+ docstring const file = makeDisplayPath(view()->buffer()->fileName(), 20);
+ docstring text = bformat(_("Any changes will be lost. Are you sure "
+ "you want to revert to the saved version of the document %1$s?"), file);
int const ret = Alert::prompt(_("Revert to saved document?"),
text, 0, 1, _("&Revert"), _("&Cancel"));
case LFUN_BUFFER_UPDATE:
Exporter::Export(owner->buffer(), argument, true);
- view()->showErrorList(bufferFormat(*owner->buffer()));
break;
case LFUN_BUFFER_VIEW:
Exporter::preview(owner->buffer(), argument);
- view()->showErrorList(bufferFormat(*owner->buffer()));
break;
case LFUN_BUILD_PROGRAM:
Exporter::Export(owner->buffer(), "program", true);
- view()->showErrorList(_("Build"));
break;
case LFUN_BUFFER_CHKTEX:
owner->buffer()->runChktex();
- view()->showErrorList(_("ChkTeX"));
break;
case LFUN_BUFFER_EXPORT:
owner->getDialogs().show("sendto");
else {
Exporter::Export(owner->buffer(), argument, false);
- view()->showErrorList(bufferFormat(*owner->buffer()));
}
break;
break;
} else {
- Exporter::Export(buffer, format_name, true,
- filename);
+ Exporter::Export(buffer, format_name, true, filename);
}
// Substitute $$FName for filename
// 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(N_("Missing argument"));
+ setErrorMessage(_("Missing argument"));
break;
}
string const fname = i18nLibFileSearch("doc", arg, "lyx");
}
owner->message(bformat(_("Opening help file %1$s..."),
makeDisplayPath(fname)));
- view()->loadLyXFile(fname, false);
+ owner->loadLyXFile(fname, false);
break;
}
// --- buffers ----------------------------------------
case LFUN_BUFFER_SWITCH:
- view()->setBuffer(bufferlist.getBuffer(argument));
+ owner->setBuffer(theApp->bufferList().getBuffer(argument));
break;
case LFUN_BUFFER_NEXT:
- view()->setBuffer(bufferlist.next(view()->buffer()));
+ owner->setBuffer(theApp->bufferList().next(view()->buffer()));
break;
case LFUN_BUFFER_PREVIOUS:
- view()->setBuffer(bufferlist.previous(view()->buffer()));
+ owner->setBuffer(theApp->bufferList().previous(view()->buffer()));
break;
case LFUN_FILE_NEW:
break;
case LFUN_MENU_OPEN:
- owner->getMenubar().openByName(argument);
+ owner->getMenubar().openByName(lyx::from_utf8(argument));
break;
// --- lyxserver commands ----------------------------
case LFUN_SERVER_GET_NAME:
- setMessage(owner->buffer()->fileName());
+ setMessage(lyx::from_utf8(owner->buffer()->fileName()));
lyxerr[Debug::INFO] << "FNAME["
<< owner->buffer()->fileName()
<< "] " << endl;
break;
case LFUN_SERVER_NOTIFY:
- dispatch_buffer = keyseq.print();
- lyxserver->notifyClient(dispatch_buffer);
+ dispatch_buffer = lyx::from_utf8(keyseq.print());
+ 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
- view()->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)) {
- view()->setBuffer(bufferlist.getBuffer(s));
+ if (theApp->bufferList().exists(s)) {
+ owner->setBuffer(theApp->bufferList().getBuffer(s));
} else {
- view()->loadLyXFile(s);
+ owner->loadLyXFile(s);
}
}
view()->setCursorFromRow(row);
view()->center();
- // see BufferView_pimpl::center()
+ // see BufferView::center()
break;
}
case LFUN_DIALOG_SHOW: {
string const name = cmd.getArg(0);
- string data = trim(cmd.argument.substr(name.size()));
+ string data = trim(lyx::to_utf8(cmd.argument()).substr(name.size()));
if (name == "character") {
data = freefont2string();
data = "literate ";
break;
}
- data += logfile.second;
+ data += LyXLex::quoteString(logfile.second);
owner->getDialogs().show("log", data);
} else if (name == "vclog") {
string const data = "vc " +
- owner->buffer()->lyxvc().getLogFile();
+ LyXLex::quoteString(owner->buffer()->lyxvc().getLogFile());
owner->getDialogs().show("log", data);
} else
owner->getDialogs().show(name, data);
case LFUN_DIALOG_SHOW_NEW_INSET: {
string const name = cmd.getArg(0);
- string data = trim(cmd.argument.substr(name.size()));
+ string data = trim(lyx::to_utf8(cmd.argument()).substr(name.size()));
if (name == "bibitem" ||
name == "bibtex" ||
name == "index" ||
break;
}
- case LFUN_DIALOG_SHOW_NEXT_INSET:
- break;
-
case LFUN_DIALOG_UPDATE: {
string const & name = argument;
// Can only update a dialog connected to an existing inset
InsetBase * inset = owner->getDialogs().getOpenInset(name);
if (inset) {
- FuncRequest fr(LFUN_INSET_DIALOG_UPDATE, cmd.argument);
+ FuncRequest fr(LFUN_INSET_DIALOG_UPDATE, cmd.argument());
inset->dispatch(view()->cursor(), fr);
} else if (name == "paragraph") {
dispatch(FuncRequest(LFUN_PARAGRAPH_UPDATE));
case LFUN_BUFFER_CHILD_OPEN: {
string const filename =
makeAbsPath(argument, owner->buffer()->filePath());
- setMessage(N_("Opening child document ") +
- makeDisplayPath(filename) + "...");
+ // 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))
- view()->setBuffer(bufferlist.getBuffer(filename));
+ if (theApp->bufferList().exists(filename))
+ owner->setBuffer(theApp->bufferList().getBuffer(filename));
else
- view()->loadLyXFile(filename);
+ owner->loadLyXFile(filename);
// Set the parent name of the child document.
// This makes insertion of citations and references in the child work,
// when the target is in the parent or another 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(N_("Syntax: set-color <lyx_name>"
+ setErrorMessage(_("Syntax: set-color <lyx_name>"
" <x11_name>"));
break;
}
if (!lcolor.setColor(lyx_name, x11_name)) {
setErrorMessage(
- bformat(_("Set-color \"%1$s\" failed "
- "- color is undefined or "
- "may not be redefined"), lyx_name));
+ bformat(_("Set-color \"%1$s\" failed "
+ "- color is undefined or "
+ "may not be redefined"),
+ lyx::from_utf8(lyx_name)));
break;
}
}
case LFUN_MESSAGE:
- owner->message(argument);
- break;
-
- case LFUN_TOOLTIPS_TOGGLE:
- owner->getDialogs().toggleTooltips();
+ owner->message(lyx::from_utf8(argument));
break;
case LFUN_EXTERNAL_EDIT: {
}
if (defaults.writeFile(defaults.fileName()))
+ // FIXME Should use bformat
setMessage(_("Document defaults saved in ")
+ makeDisplayPath(fname));
else
recordUndoFullDocument(view());
buffer->params().textclass = new_class;
StableDocIterator backcur(view()->cursor());
- ErrorList el;
+ ErrorList & el = buffer->errorList("Class Switch");
lyx::cap::switchBetweenClasses(
old_class, new_class,
static_cast<InsetText &>(buffer->inset()), el);
view()->setCursor(backcur.asDocIterator(&(buffer->inset())));
- bufferErrors(*buffer, el);
- view()->showErrorList(_("Class switch"));
+
+ buffer->errors("Class Switch");
updateLabels(*buffer);
updateforce = true;
break;
}
}
- 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.
else if (update)
view()->update(Update::FitCursor);
+ owner->redrawWorkArea();
+
// if we executed a mutating lfun, mark the buffer as dirty
if (flag.enabled()
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly))
view()->buffer()->markDirty();
- }
- if (view()->cursor().inTexted()) {
- view()->owner()->updateLayoutChoice();
+ if (view()->cursor().inTexted()) {
+ owner->updateLayoutChoice();
+ }
}
}
- sendDispatchMessage(_(getMessage()), cmd);
+ if (!quitting)
+ // FIXME UNICODE: _() does not support anything but ascii.
+ // Do we need a lyx::to_ascii() method?
+ sendDispatchMessage(getMessage(), cmd);
}
-void LyXFunc::sendDispatchMessage(string const & msg, FuncRequest const & cmd)
+void LyXFunc::sendDispatchMessage(docstring const & msg, FuncRequest const & cmd)
{
/* When an action did not originate from the UI/kbd, it makes
* sense to avoid updating the GUI. It turns out that this
|| cmd.origin == FuncRequest::COMMANDBUFFER);
if (cmd.action == LFUN_SELF_INSERT || !verbose) {
- lyxerr[Debug::ACTION] << "dispatch msg is " << msg << endl;
+ lyxerr[Debug::ACTION] << "dispatch msg is " << lyx::to_utf8(msg) << endl;
if (!msg.empty())
owner->message(msg);
return;
}
- string dispatch_msg = msg;
+ docstring dispatch_msg = msg;
if (!dispatch_msg.empty())
dispatch_msg += ' ';
bool argsadded = false;
- if (!cmd.argument.empty()) {
+ if (!cmd.argument().empty()) {
if (cmd.action != LFUN_UNKNOWN_ACTION) {
- comname += ' ' + cmd.argument;
+ comname += ' ' + lyx::to_utf8(cmd.argument());
argsadded = true;
}
}
if (!shortcuts.empty())
comname += ": " + shortcuts;
- else if (!argsadded && !cmd.argument.empty())
- comname += ' ' + cmd.argument;
+ else if (!argsadded && !cmd.argument().empty())
+ comname += ' ' + lyx::to_utf8(cmd.argument());
if (!comname.empty()) {
comname = rtrim(comname);
- dispatch_msg += '(' + rtrim(comname) + ')';
+ dispatch_msg += lyx::from_utf8('(' + rtrim(comname) + ')');
}
- lyxerr[Debug::ACTION] << "verbose dispatch msg " << dispatch_msg << endl;
+ 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) +
// The template stuff
string templname;
if (fromTemplate) {
- FileDialog fileDlg(_("Select template file"),
+ FileDialog fileDlg(lyx::to_utf8(_("Select template file")),
LFUN_SELECT_FILE_SYNC,
- make_pair(string(_("Documents|#o#O")),
+ make_pair(string(lyx::to_utf8(_("Documents|#o#O"))),
string(lyxrc.document_path)),
- make_pair(string(_("Templates|#T#t")),
+ make_pair(string(lyx::to_utf8(_("Templates|#T#t"))),
string(lyxrc.template_path)));
FileDialog::Result result =
fileDlg.open(lyxrc.template_path,
- FileFilterList(_("LyX Documents (*.lyx)")),
+ FileFilterList(lyx::to_utf8(_("LyX Documents (*.lyx)"))),
string());
if (result.first == FileDialog::Later)
templname = result.second;
}
- view()->newFile(filename, templname, !name.empty());
+ Buffer * const b = newFile(filename, templname, !name.empty());
+ if (b)
+ owner->setBuffer(b);
}
{
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 filename;
if (fname.empty()) {
- FileDialog fileDlg(_("Select document to open"),
+ FileDialog fileDlg(lyx::to_utf8(_("Select document to open")),
LFUN_FILE_OPEN,
- make_pair(string(_("Documents|#o#O")),
+ make_pair(string(lyx::to_utf8(_("Documents|#o#O"))),
string(lyxrc.document_path)),
- make_pair(string(_("Examples|#E#e")),
+ make_pair(string(lyx::to_utf8(_("Examples|#E#e"))),
string(addPath(package().system_support(), "examples"))));
FileDialog::Result result =
fileDlg.open(initpath,
- FileFilterList(_("LyX Documents (*.lyx)")),
+ FileFilterList(lyx::to_utf8(_("LyX Documents (*.lyx)"))),
string());
if (result.first == FileDialog::Later)
filename = fullpath;
}
- string const disp_fn(makeDisplayPath(filename));
+ docstring const disp_fn = makeDisplayPath(filename);
// if the file doesn't exist, let the user create one
if (!fs::exists(filename)) {
- // the user specifically chose this name. Believe them.
- view()->newFile(filename, "", true);
+ // the user specifically chose this name. Believe him.
+ Buffer * const b = newFile(filename, string(), true);
+ if (b)
+ owner->setBuffer(b);
return;
}
owner->message(bformat(_("Opening document %1$s..."), disp_fn));
- string str2;
- if (view()->loadLyXFile(filename)) {
+ docstring str2;
+ if (owner->loadLyXFile(filename)) {
str2 = bformat(_("Document %1$s opened."), disp_fn);
} else {
str2 = bformat(_("Could not open document %1$s"), disp_fn);
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))
initpath = trypath;
}
- string const text = bformat(_("Select %1$s file to import"),
+ docstring const text = bformat(_("Select %1$s file to import"),
formats.prettyName(format));
- FileDialog fileDlg(text,
+ FileDialog fileDlg(lyx::to_utf8(text),
LFUN_BUFFER_IMPORT,
- make_pair(string(_("Documents|#o#O")),
+ make_pair(string(lyx::to_utf8(_("Documents|#o#O"))),
string(lyxrc.document_path)),
- make_pair(string(_("Examples|#E#e")),
+ make_pair(string(lyx::to_utf8(_("Examples|#E#e"))),
string(addPath(package().system_support(), "examples"))));
- string const filter = formats.prettyName(format)
+ string const filter = lyx::to_utf8(formats.prettyName(format))
+ " (*." + formats.extension(format) + ')';
FileDialog::Result result =
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;
}
// if the file exists already, and we didn't do
// -i lyx thefile.lyx, warn
if (fs::exists(lyxfile) && filename != lyxfile) {
- string const file = makeDisplayPath(lyxfile, 30);
+ docstring const file = makeDisplayPath(lyxfile, 30);
- string text = bformat(_("The document %1$s already exists.\n\n"
- "Do you want to over-write that document?"), file);
+ docstring text = bformat(_("The document %1$s already exists.\n\n"
+ "Do you want to over-write that document?"), file);
int const ret = Alert::prompt(_("Over-write document?"),
text, 0, 1, _("&Over-write"), _("&Cancel"));
}
}
- Importer::Import(owner, filename, format);
+ ErrorList errorList;
+ Importer::Import(owner, filename, format, errorList);
+ // FIXME (Abdel 12/08/06): Is there a need to display the error list here?
}
// 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 {
- view()->setBuffer(bufferlist.first());
+ owner->setBuffer(theApp->bufferList().first());
}
}
}
// This function is bit problematic when it comes to NLS, to make the
// lyx servers client be language indepenent we must not translate
// strings sent to this func.
-void LyXFunc::setErrorMessage(string const & m) const
+void LyXFunc::setErrorMessage(docstring const & m) const
{
dispatch_buffer = m;
errorstat = true;
}
-void LyXFunc::setMessage(string const & m) const
+void LyXFunc::setMessage(docstring const & m) const
{
dispatch_buffer = m;
}
if (keyseq.length() > 0 && !keyseq.deleted())
return keyseq.printOptions();
- if (!view()->available())
- return _("Welcome to LyX!");
+ if (!view()->buffer())
+ return lyx::to_utf8(_("Welcome to LyX!"));
return view()->cursor().currentState();
}
case LyXRC::RC_USE_SPELL_LIB:
case LyXRC::RC_VIEWDVI_PAPEROPTION:
case LyXRC::RC_VIEWER:
- case LyXRC::RC_WHEEL_JUMP:
case LyXRC::RC_LAST:
break;
}