#include "LyX.h"
-#include "Color.h"
-#include "ConverterCache.h"
-#include "Buffer.h"
#include "buffer_funcs.h"
+#include "Buffer.h"
#include "BufferList.h"
+#include "CmdDef.h"
+#include "Color.h"
+#include "ConverterCache.h"
#include "Converter.h"
#include "CutAndPaste.h"
-#include "debug.h"
#include "Encoding.h"
#include "ErrorList.h"
#include "Format.h"
-#include "gettext.h"
#include "KeyMap.h"
-#include "CmdDef.h"
#include "Language.h"
-#include "Session.h"
+#include "Lexer.h"
#include "LyXAction.h"
#include "LyXFunc.h"
-#include "Lexer.h"
#include "LyXRC.h"
+#include "MenuBackend.h"
#include "ModuleList.h"
+#include "Mover.h"
#include "Server.h"
#include "ServerSocket.h"
+#include "Session.h"
#include "TextClassList.h"
-#include "MenuBackend.h"
-#include "Messages.h"
-#include "Mover.h"
#include "ToolbarBackend.h"
#include "frontends/alert.h"
#include "frontends/Application.h"
-#include "frontends/Dialogs.h"
-#include "frontends/Gui.h"
-#include "frontends/LyXView.h"
+#include "support/debug.h"
#include "support/environment.h"
+#include "support/ExceptionMessage.h"
#include "support/filetools.h"
+#include "support/gettext.h"
#include "support/lstrings.h"
#include "support/lyxlib.h"
-#include "support/ExceptionMessage.h"
+#include "support/Messages.h"
#include "support/os.h"
#include "support/Package.h"
#include "support/Path.h"
using support::prependEnvPath;
using support::rtrim;
using support::Systemcall;
-using frontend::LyXView;
namespace Alert = frontend::Alert;
namespace os = support::os;
///
BufferList buffer_list_;
///
- boost::scoped_ptr<KeyMap> toplevel_keymap_;
+ KeyMap toplevel_keymap_;
///
- boost::scoped_ptr<CmdDef> toplevel_cmddef_;
+ CmdDef toplevel_cmddef_;
///
boost::scoped_ptr<Server> lyx_server_;
///
KeyMap & LyX::topLevelKeymap()
{
- BOOST_ASSERT(pimpl_->toplevel_keymap_.get());
- return *pimpl_->toplevel_keymap_.get();
+ return pimpl_->toplevel_keymap_;
}
CmdDef & LyX::topLevelCmdDef()
{
- BOOST_ASSERT(pimpl_->toplevel_cmddef_.get());
- return *pimpl_->toplevel_cmddef_.get();
+ return pimpl_->toplevel_cmddef_;
}
KeyMap const & LyX::topLevelKeymap() const
{
- BOOST_ASSERT(pimpl_->toplevel_keymap_.get());
- return *pimpl_->toplevel_keymap_.get();
+ return pimpl_->toplevel_keymap_;
}
}
-Buffer const * LyX::updateInset(Inset const * inset) const
-{
- if (quitting || !inset)
- return 0;
-
- Buffer const * buffer_ptr = 0;
- vector<int> const & view_ids = pimpl_->application_->gui().viewIds();
- vector<int>::const_iterator it = view_ids.begin();
- vector<int>::const_iterator const end = view_ids.end();
- for (; it != end; ++it) {
- Buffer const * ptr =
- pimpl_->application_->gui().view(*it).updateInset(inset);
- if (ptr)
- buffer_ptr = ptr;
- }
- return buffer_ptr;
-}
-
-
-void LyX::hideDialogs(std::string const & name, Inset * inset) const
-{
- if (quitting || !use_gui)
- return;
-
- vector<int> const & view_ids = pimpl_->application_->gui().viewIds();
- vector<int>::const_iterator it = view_ids.begin();
- vector<int>::const_iterator const end = view_ids.end();
- for (; it != end; ++it)
- pimpl_->application_->gui().view(*it).getDialogs().
- hide(name, inset);
-}
-
-
int LyX::exec(int & argc, char * argv[])
{
// Here we need to parse the command line. At least
// Let the frontend parse and remove all arguments that it knows
pimpl_->application_.reset(createApplication(argc, argv));
- initGuiFont();
-
// Parse and remove all known arguments in the LyX singleton
// Give an error for all remaining ones.
int exit_status = init(argc, argv);
// close buffers first
pimpl_->buffer_list_.closeAll();
+ // register session changes and shutdown server and socket
+ if (use_gui) {
+ if (pimpl_->session_)
+ pimpl_->session_->writeFile();
+ pimpl_->session_.reset();
+ pimpl_->lyx_server_.reset();
+ pimpl_->lyx_socket_.reset();
+ }
+
// do any other cleanup procedures now
if (package().temp_dir() != package().system_temp_dir()) {
LYXERR(Debug::INFO, "Deleting tmp dir "
}
}
- if (use_gui) {
- if (pimpl_->session_)
- pimpl_->session_->writeFile();
- pimpl_->session_.reset();
- pimpl_->lyx_server_.reset();
- pimpl_->lyx_socket_.reset();
- }
-
// Kill the application object before exiting. This avoids crashes
// when exiting on Linux.
if (pimpl_->application_)
void LyX::restoreGuiSession()
{
- LyXView * view = newLyXView();
+ // create the main window
+ pimpl_->lyxfunc_.dispatch(FuncRequest(LFUN_WINDOW_NEW, geometryArg));
// if there is no valid class list, do not load any file.
if (textclasslist.empty())
if (!pimpl_->files_to_load_.empty()) {
for_each(pimpl_->files_to_load_.begin(),
pimpl_->files_to_load_.end(),
- bind(&LyXView::loadLyXFile, view, _1, true));
+ bind(&LyXFunc::loadAndViewFile, pimpl_->lyxfunc_, _1, true));
// clear this list to save a few bytes of RAM
pimpl_->files_to_load_.clear();
pimpl_->session_->lastOpened().clear();
// last session, and should be already there (regular files), or should
// not be added at all (help files).
for_each(lastopened.begin(), lastopened.end(),
- bind(&LyXView::loadLyXFile, view, _1, false));
+ bind(&LyXFunc::loadAndViewFile, pimpl_->lyxfunc_, _1, false));
// clear this list to save a few bytes of RAM
pimpl_->session_->lastOpened().clear();
continue;
updateLabels(*buf);
}
-
- // FIXME: Switch to the last loaded Buffer. This must not be the first one
- // because the Buffer won't be connected in this case. The correct solution
- // would be to avoid the manual connection of the current Buffer in LyXView.
- if (!pimpl_->buffer_list_.empty())
- view->setBuffer(pimpl_->buffer_list_.last());
-}
-
-
-LyXView * LyX::newLyXView()
-{
- if (!lyx::use_gui)
- return 0;
-
- // create the main window
- LyXView * view = &pimpl_->application_->createView(geometryArg);
-
- return view;
}
/*
}
-void LyX::initGuiFont()
-{
- if (lyxrc.roman_font_name.empty())
- lyxrc.roman_font_name = pimpl_->application_->romanFontName();
-
- if (lyxrc.sans_font_name.empty())
- lyxrc.sans_font_name = pimpl_->application_->sansFontName();
-
- if (lyxrc.typewriter_font_name.empty())
- lyxrc.typewriter_font_name
- = pimpl_->application_->typewriterFontName();
-}
-
-
bool LyX::init()
{
#ifdef SIGHUP
lyxrc.tempdir_path = package().temp_dir().absFilename();
lyxrc.document_path = package().document_dir().absFilename();
+ if (lyxrc.example_path.empty()) {
+ lyxrc.example_path = addPath(package().system_support().absFilename(),
+ "examples");
+ }
if (lyxrc.template_path.empty()) {
lyxrc.template_path = addPath(package().system_support().absFilename(),
"templates");
//setGuiLanguage(lyxrc.gui_language);
// Set up command definitions
- pimpl_->toplevel_cmddef_.reset(new CmdDef);
- pimpl_->toplevel_cmddef_->read(lyxrc.def_file);
+ pimpl_->toplevel_cmddef_.read(lyxrc.def_file);
// Set up bindings
- pimpl_->toplevel_keymap_.reset(new KeyMap);
- pimpl_->toplevel_keymap_->read("site");
- pimpl_->toplevel_keymap_->read(lyxrc.bind_file);
+ pimpl_->toplevel_keymap_.read("site");
+ pimpl_->toplevel_keymap_.read(lyxrc.bind_file);
// load user bind file user.bind
- pimpl_->toplevel_keymap_->read("user");
+ pimpl_->toplevel_keymap_.read("user");
- pimpl_->lyxfunc_.initKeySequences(pimpl_->toplevel_keymap_.get());
+ pimpl_->lyxfunc_.initKeySequences(&pimpl_->toplevel_keymap_);
// Read menus
if (!readUIFile(lyxrc.ui_file))