#include "frontends/Alert.h"
#include "frontends/Application.h"
+#include "frontends/Gui.h"
#include "frontends/LyXView.h"
#include "support/environment.h"
return *pimpl_->toplevel_keymap_.get();
}
-void LyX::addLyXView(LyXView * lyxview)
-{
- views_.push_back(lyxview);
-}
-
Buffer const * const LyX::updateInset(InsetBase const * inset) const
{
return 0;
Buffer const * buffer_ptr = 0;
- ViewList::const_iterator it = views_.begin();
- ViewList::const_iterator const end = views_.end();
+ 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 = (*it)->updateInset(inset);
+ Buffer const * ptr =
+ pimpl_->application_->gui().view(*it).updateInset(inset);
if (ptr)
buffer_ptr = ptr;
}
// Start the real execution loop.
// FIXME
- /* Create a CoreApplication class that will provide the main event loop and
- * the socket callback registering. With Qt4, only QtCore library would be needed.
- * When this done, a server_mode could be created and the following two
+ /* Create a CoreApplication class that will provide the main event loop
+ * and the socket callback registering. With Qt4, only QtCore
+ * library would be needed.
+ * When this is done, a server_mode could be created and the following two
* line would be moved out from here.
*/
pimpl_->lyx_server_.reset(new LyXServer(&pimpl_->lyxfunc_, lyxrc.lyxpipes));
}
-void LyX::quit(bool noask)
+void LyX::quit()
{
lyxerr[Debug::INFO] << "Running QuitLyX." << endl;
- if (use_gui) {
- if (!noask && !pimpl_->buffer_list_.quitWriteAll())
- return;
-
- pimpl_->session_->writeFile();
- }
-
prepareExit();
if (use_gui) {
+ pimpl_->session_->writeFile();
pimpl_->lyx_server_.reset();
pimpl_->lyx_socket_.reset();
pimpl_->application_->exit(0);
void LyX::restoreGuiSession(vector<string> const & files)
{
+ LyXView * view = newLyXView();
+
+ // load files
+ for_each(files.begin(), files.end(),
+ bind(&LyXView::loadLyXFile, view, _1, true));
+
+ // if a file is specified, I assume that user wants to edit *that* file
+ if (files.empty() && lyxrc.load_session) {
+ vector<string> const & lastopened = pimpl_->session_->lastOpened().getfiles();
+ // do not add to the lastfile list since these files are restored from
+ // last seesion, 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));
+ }
+ // clear this list to save a few bytes of RAM
+ pimpl_->session_->lastOpened().clear();
+}
+
+
+LyXView * LyX::newLyXView()
+{
+ if (!lyx::use_gui)
+ return 0;
+
// determine windows size and position, from lyxrc and/or session
// initial geometry
unsigned int width = 690;
}
// if lyxrc returns (0,0), then use session info
else {
- string val = session().loadSessionInfo("WindowWidth");
+ string val = session().sessionInfo().load("WindowWidth");
if (!val.empty())
width = convert<unsigned int>(val);
- val = session().loadSessionInfo("WindowHeight");
+ val = session().sessionInfo().load("WindowHeight");
if (!val.empty())
height = convert<unsigned int>(val);
- if (session().loadSessionInfo("WindowIsMaximized") == "yes")
+ if (session().sessionInfo().load("WindowIsMaximized") == "yes")
maximize = true;
}
+
// if user wants to restore window position
int posx = -1;
int posy = -1;
if (lyxrc.geometry_xysaved) {
- string val = session().loadSessionInfo("WindowPosX");
+ string val = session().sessionInfo().load("WindowPosX");
if (!val.empty())
posx = convert<int>(val);
- val = session().loadSessionInfo("WindowPosY");
+ val = session().sessionInfo().load("WindowPosY");
if (!val.empty())
posy = convert<int>(val);
}
}
// create the main window
LyXView * view = &pimpl_->application_->createView(width, height, posx, posy, maximize);
- ref().addLyXView(view);
- // load files
- for_each(files.begin(), files.end(),
- bind(&LyXView::loadLyXFile, view, _1, true));
-
- // if a file is specified, I assume that user wants to edit *that* file
- if (files.empty() && lyxrc.load_session) {
- vector<string> const & lastopened = pimpl_->session_->lastOpenedFiles();
- // do not add to the lastfile list since these files are restored from
- // last seesion, 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));
- }
- // clear this list to save a few bytes of RAM
- pimpl_->session_->clearLastOpenedFiles();
+ return view;
}
-
/*
Signals and Windows
===================
// Query the OS to know what formats are viewed natively
formats.setAutoOpen();
+ // Read lyxrc.dist again to be able to override viewer auto-detection.
+ readRcFile("lyxrc.dist");
+
system_lyxrc = lyxrc;
system_formats = formats;
system_converters = converters;
}
} // namespace lyx
-
-
-namespace boost {
-
-void assertion_failed(char const* a, char const* b, char const* c, long d)
-{
- lyx::lyxerr << "Assertion failed: " << a << ' ' << b << ' ' << c << ' '
- << d << '\n';
-}
-
-} // boost
-