mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-09-22 16:04:07 +00:00
00c37e4781
TODO 1: All occurrences of "LyXView::showErrorList()" in the "kernel" should be replaced by a boost signal emission (Buffer::errors()). This signal is already connected to this showErrorList() slot. TODO 2: The ErrorList mechanism is used wrongly in a number of place, most notably in "Converter.C". Instead of replacing the ErrorList in the "Buffer" class, the "Converter" class should maintain its own list instead and connect directly to the LyXView::showErrorList() slot. Buffer: * errorList_: new private member and associated access methods. * setErrorList(): new accessor method. * addError(): apend an error to the errorList_. * error(): deleted. * errors(): new boost signal, unused for now. Shall be used instead of LyXView::showErrorList(). LyXView: * getErrorList(), addError(), errorlist_, errorConnection_: deleted. * errorsConnection_: new boost connection for the Buffer::errors() signal. lyx_main.C: * LyX::exec2(): manually print all errors. BufferView.h: remove unneeded ErrorList forward declaration. BufferView::pimpl::menuInsertLyXFile(): delete Buffer::error() connection and add a FIXME comment text.C: Use Buffer::addError() instead of Buffer::error() signal emission. ControlErrorList.C: get the ErrorList from the Buffer instead of LyXView git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14467 a592a061-630c-0410-9148-cb99ea01b6c8
236 lines
6.2 KiB
C++
236 lines
6.2 KiB
C++
// -*- C++ -*-
|
|
/**
|
|
* \file LyXView.h
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author Lars Gullik Bjønnes
|
|
* \author John Levon
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
#ifndef LYXVIEW_H
|
|
#define LYXVIEW_H
|
|
|
|
#include <boost/scoped_ptr.hpp>
|
|
#include <boost/shared_ptr.hpp>
|
|
#include <boost/signal.hpp>
|
|
#include <boost/signals/trackable.hpp>
|
|
#include <boost/utility.hpp>
|
|
|
|
class Buffer;
|
|
class Toolbars;
|
|
class InsetBase;
|
|
class Intl;
|
|
class Menubar;
|
|
|
|
class BufferView;
|
|
class Dialogs;
|
|
class LyXFunc;
|
|
class LyXFont;
|
|
class Timeout;
|
|
class FuncRequest;
|
|
|
|
namespace lyx {
|
|
namespace frontend {
|
|
class Gui;
|
|
class WorkArea;
|
|
class ControlCommandBuffer;
|
|
} // namespace frontend
|
|
|
|
} // namespace lyx
|
|
|
|
/**
|
|
* LyXView - main LyX window
|
|
*
|
|
* This class represents the main LyX window and provides
|
|
* accessor functions to its content.
|
|
*
|
|
* The eventual intention is that LyX will support a number
|
|
* of containing LyXViews. Currently a lot of code still
|
|
* relies on there being a single top-level view.
|
|
*
|
|
* Additionally we would like to support multiple views
|
|
* in a single LyXView.
|
|
*/
|
|
class LyXView : public boost::signals::trackable, boost::noncopyable {
|
|
public:
|
|
|
|
LyXView(lyx::frontend::Gui & owner);
|
|
|
|
virtual ~LyXView();
|
|
|
|
void setWorkArea(lyx::frontend::WorkArea * work_area);
|
|
|
|
/**
|
|
* This is called after the concrete view has been created.
|
|
* We have to have the toolbar and the other stuff created
|
|
* before we can populate it with this call.
|
|
*/
|
|
void init();
|
|
|
|
/// show busy cursor
|
|
virtual void busy(bool) const = 0;
|
|
|
|
//@{ generic accessor functions
|
|
|
|
/** return the current buffer view
|
|
Returned as a shared_ptr so that anything wanting to cache the
|
|
buffer view can do so safely using a boost::weak_ptr.
|
|
*/
|
|
BufferView * view() const;
|
|
|
|
/// return the buffer currently shown in this window
|
|
Buffer * buffer() const;
|
|
|
|
/// return the LyX function handler for this view
|
|
LyXFunc & getLyXFunc() { return *lyxfunc_.get(); }
|
|
///
|
|
LyXFunc const & getLyXFunc() const { return *lyxfunc_.get(); }
|
|
|
|
/// return the toolbar for this view
|
|
Toolbars & getToolbars() { return *toolbars_.get(); }
|
|
///
|
|
Toolbars const & getToolbars() const { return *toolbars_.get(); }
|
|
|
|
/// return the menubar for this view
|
|
Menubar & getMenubar() { return *menubar_.get(); }
|
|
///
|
|
Menubar const & getMenubar() const { return *menubar_.get(); }
|
|
|
|
/// get access to the dialogs
|
|
Dialogs & getDialogs() { return *dialogs_.get(); }
|
|
///
|
|
Dialogs const & getDialogs() const { return *dialogs_.get(); }
|
|
|
|
/// get this view's keyboard map handler
|
|
Intl & getIntl() { return *intl_.get(); }
|
|
///
|
|
Intl const & getIntl() const { return *intl_.get(); }
|
|
|
|
//@}
|
|
|
|
/// load a buffer into the current workarea
|
|
bool loadLyXFile(std::string const & name, bool tolastfiles = true);
|
|
|
|
/// set a buffer to the current workarea
|
|
void setBuffer(Buffer * b);
|
|
|
|
/// sets the layout in the toolbar layout selection
|
|
void setLayout(std::string const & layout);
|
|
/// updates the possible layouts selectable
|
|
void updateLayoutChoice();
|
|
|
|
/// update the toolbar
|
|
void updateToolbars();
|
|
/// update the menubar
|
|
void updateMenubar();
|
|
/// update the status bar
|
|
virtual void updateStatusBar() = 0;
|
|
|
|
/// focus the command buffer (minibuffer)
|
|
boost::signal<void()> focus_command_buffer;
|
|
|
|
/// display a message in the view
|
|
virtual void message(std::string const &) = 0;
|
|
|
|
/// clear any temporary message and replace with current status
|
|
virtual void clearMessage() = 0;
|
|
|
|
/// updates the title of the window
|
|
void updateWindowTitle();
|
|
|
|
/// reset autosave timer
|
|
void resetAutosaveTimer();
|
|
|
|
/// dispatch to current BufferView
|
|
void dispatch(FuncRequest const & cmd);
|
|
|
|
/** redraw \c inset in all the BufferViews in which it is currently
|
|
* visible. If successful return a pointer to the owning Buffer.
|
|
*/
|
|
Buffer const * const updateInset(InsetBase const *) const;
|
|
|
|
/// returns true if this view has the focus.
|
|
virtual bool hasFocus() const = 0;
|
|
|
|
///
|
|
virtual lyx::frontend::Gui & gui();
|
|
|
|
/// Temporary method used by the kernel to redraw the work area.
|
|
virtual void redrawWorkArea();
|
|
|
|
/// Temporary method to access the current workArea.
|
|
/// This is needed for the qt3 and gtk frontend.
|
|
lyx::frontend::WorkArea * workArea();
|
|
|
|
/// show the error list to the user
|
|
void showErrorList(std::string const &);
|
|
|
|
protected:
|
|
/// current work area (screen view of a BufferView).
|
|
/**
|
|
\todo FIXME: there is only one workArea per LyXView for now.
|
|
*/
|
|
lyx::frontend::WorkArea * work_area_;
|
|
|
|
/// view's menubar
|
|
boost::scoped_ptr<Menubar> menubar_;
|
|
|
|
private:
|
|
lyx::frontend::Gui & owner_;
|
|
/**
|
|
* setWindowTitle - set title of window
|
|
* @param t main window title
|
|
* @param it iconified (short) title
|
|
*/
|
|
virtual void setWindowTitle(std::string const & t, std::string const & it) = 0;
|
|
|
|
/// called on timeout
|
|
void autoSave();
|
|
|
|
/// view's toolbar
|
|
boost::scoped_ptr<Toolbars> toolbars_;
|
|
/// keyboard mapping object
|
|
boost::scoped_ptr<Intl> const intl_;
|
|
/// auto-saving of buffers
|
|
boost::scoped_ptr<Timeout> const autosave_timeout_;
|
|
/// our function handler
|
|
boost::scoped_ptr<LyXFunc> lyxfunc_;
|
|
/// dialogs for this view
|
|
boost::scoped_ptr<Dialogs> dialogs_;
|
|
|
|
/// buffer errors signal connection
|
|
boost::signals::connection errorsConnection_;
|
|
/// buffer messages signal connection
|
|
boost::signals::connection messageConnection_;
|
|
/// buffer busy status signal connection
|
|
boost::signals::connection busyConnection_;
|
|
/// buffer title changed signal connection
|
|
boost::signals::connection titleConnection_;
|
|
/// buffer reset timers signal connection
|
|
boost::signals::connection timerConnection_;
|
|
/// buffer readonly status changed signal connection
|
|
boost::signals::connection readonlyConnection_;
|
|
/// buffer closing signal connection
|
|
boost::signals::connection closingConnection_;
|
|
/// connect to signals in the given buffer
|
|
void connectBuffer(Buffer & buf);
|
|
/// disconnect from signals in the given buffer
|
|
void disconnectBuffer();
|
|
/// notify readonly status
|
|
void showReadonly(bool);
|
|
|
|
protected:
|
|
/// view's command buffer controller
|
|
// this has to be declared _after_ lyxfunc_ as its initialization depends
|
|
// on it!
|
|
typedef boost::scoped_ptr<lyx::frontend::ControlCommandBuffer>
|
|
CommandBufferPtr;
|
|
|
|
CommandBufferPtr const controlcommand_;
|
|
};
|
|
|
|
#endif // LYXVIEW_H
|