#define LYXVIEW_H
#include "frontends/Application.h"
-#include "frontends/Toolbars.h"
+#include "frontends/Delegates.h"
+#include "support/docstring.h"
-#include "LyXFunc.h"
-#include <boost/scoped_ptr.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/signal.hpp>
-#include <boost/signals/trackable.hpp>
-#include <boost/utility.hpp>
+#include <boost/noncopyable.hpp>
#include <vector>
class BufferView;
class FuncRequest;
class Inset;
-class LyXFunc;
class Timeout;
+class ToolbarInfo;
namespace frontend {
-class ControlCommandBuffer;
class Dialogs;
-class Menubar;
class WorkArea;
/**
* Additionally we would like to support multiple views
* in a single LyXView.
*/
-class LyXView : public boost::signals::trackable, boost::noncopyable {
+class LyXView : boost::noncopyable,
+ public GuiBufferViewDelegate, public GuiBufferDelegate
+{
public:
-
+ ///
LyXView(int id);
-
+ ///
virtual ~LyXView();
-
- int const id() const { return id_; }
-
+ ///
+ int id() const { return id_; }
+ ///
virtual void close() = 0;
-
+ ///
virtual void setFocus() = 0;
///
virtual void saveGeometry() = 0;
/// show busy cursor
- virtual void busy(bool) = 0;
-
- virtual Toolbars::ToolbarPtr makeToolbar(ToolbarInfo const & tbinfo, bool newline) = 0;
+ virtual void setBusy(bool) = 0;
//@{ generic accessor functions
Buffer const * buffer() const;
///
- void openLayoutList();
+ virtual void openLayoutList() = 0;
///
- bool isToolbarVisible(std::string const & id);
+ virtual bool isToolbarVisible(std::string const & id) = 0;
///
virtual void showMiniBuffer(bool visible) = 0;
-
- /// return the menubar for this view
- Menubar & getMenubar() { return *menubar_.get(); }
- ///
- Menubar const & getMenubar() const { return *menubar_.get(); }
+ virtual void openMenu(docstring const & name) = 0;
/// get access to the dialogs
- Dialogs & getDialogs() { return *dialogs_.get(); }
+ Dialogs & getDialogs() { return *dialogs_; }
///
- Dialogs const & getDialogs() const { return *dialogs_.get(); }
+ Dialogs const & getDialogs() const { return *dialogs_; }
//@}
void setBuffer(Buffer * b); ///< \c Buffer to set.
/// updates the possible layouts selectable
- void updateLayoutChoice();
+ virtual void updateLayoutChoice() = 0;
/// update the toolbar
- void updateToolbars();
+ virtual void updateToolbars() = 0;
/// get toolbar info
- ToolbarInfo * getToolbarInfo(std::string const & name);
+ virtual ToolbarInfo * getToolbarInfo(std::string const & name) = 0;
/// toggle toolbar state
- void toggleToolbarState(std::string const & name, bool allowauto);
- /// update the menubar
- void updateMenubar();
+ virtual void toggleToolbarState(std::string const & name, bool allowauto) = 0;
/// update the status bar
virtual void updateStatusBar() = 0;
/** 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(Inset const *);
+ Buffer const * updateInset(Inset const *);
/// returns true if this view has the focus.
virtual bool hasFocus() const = 0;
/// show the error list to the user
void showErrorList(std::string const &);
-protected:
+
+ //
+ // GuiBufferDelegate
+ //
+ /// This function is called when the buffer structure is changed.
+ void structureChanged() { updateToc(); }
+ /// This function is called when some parsing error shows up.
+ void errors(std::string const & err) { showErrorList(err); }
+ /// This function is called when the buffer readonly status change.
+ void setReadOnly(bool on);
+ /// Update window titles of all users.
+ void updateTitles() { updateWindowTitle(); }
+ /// Reset autosave timers for all users.
+ void resetAutosaveTimers() { resetAutosaveTimer(); }
+
/// connect to signals in the given BufferView
void connectBufferView(BufferView & bv);
/// disconnect from signals in the given BufferView
/// disconnect from signals in the given buffer
void disconnectBuffer();
- /// view's menubar
- boost::scoped_ptr<Menubar> menubar_;
- /// view's toolbar
- boost::scoped_ptr<Toolbars> toolbars_;
-
private:
/**
* setWindowTitle - set title of window
void autoSave();
/// auto-saving of buffers
- boost::scoped_ptr<Timeout> const autosave_timeout_;
- /// our function handler
- boost::scoped_ptr<LyXFunc> lyxfunc_;
+ Timeout * const autosave_timeout_;
/// dialogs for this view
- boost::scoped_ptr<Dialogs> dialogs_;
-
- /// buffer structure changed signal connection
- boost::signals::connection bufferStructureChangedConnection_;
- /// 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_;
-
- /// BufferView messages signal connection
- //@{
- boost::signals::connection message_connection_;
- boost::signals::connection show_dialog_connection_;
- boost::signals::connection show_dialog_with_data_connection_;
- boost::signals::connection show_inset_dialog_connection_;
- boost::signals::connection update_dialog_connection_;
- boost::signals::connection layout_changed_connection_;
- //@}
+ Dialogs * dialogs_;
/// Bind methods for BufferView messages signal connection
//@{
std::string const & data);
//@}
- /// notify readonly status
- void showReadonly(bool);
-
protected:
///
void updateToc();
-
- /// view's command buffer controller
- // this has to be declared _after_ lyxfunc_ as its initialization depends
- // on it!
- typedef boost::scoped_ptr<ControlCommandBuffer>
- CommandBufferPtr;
-
- CommandBufferPtr const controlcommand_;
+ ///
+ void updateEmbeddedFiles();
private:
int id_;