X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2FLyXView.h;h=3f2acfe95291dbca68a52f3b98545aa28d117c78;hb=558e849e692cc72ea74ac3859405b85e54c6e315;hp=b6ed972ab5c46e1df575cd282f66c72707c784b2;hpb=98324cb046087c6e976146f2e9240920532d7eb7;p=lyx.git diff --git a/src/frontends/LyXView.h b/src/frontends/LyXView.h index b6ed972ab5..3f2acfe952 100644 --- a/src/frontends/LyXView.h +++ b/src/frontends/LyXView.h @@ -1,32 +1,27 @@ // -*- C++ -*- /** * \file LyXView.h - * Copyright 1995-2002 the LyX Team - * Read the file COPYING + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * \author Lars Gullik Bjornes - * \author John Levon + * \author Lars Gullik Bjønnes + * \author John Levon + * + * Full author contact details are available in file CREDITS. */ #ifndef LYXVIEW_H #define LYXVIEW_H -#ifdef __GNUG__ -#pragma interface -#endif - -#include "LString.h" - -#include "support/types.h" - #include #include +#include #include #include class Buffer; -class Toolbar; -class MiniBuffer; +class Toolbars; +class InsetBase; class Intl; class Menubar; @@ -35,6 +30,13 @@ class Dialogs; class LyXFunc; class LyXFont; class Timeout; +class FuncRequest; + +namespace lyx { +namespace frontend { +class ControlCommandBuffer; +} // namespace frontend +} // namespace lyx /** * LyXView - main LyX window @@ -63,56 +65,68 @@ public: */ void init(); - /// start modal operation - virtual void prohibitInput() const = 0; - /// end modal operation - virtual void allowInput() const = 0; + /// show busy cursor + virtual void busy(bool) const = 0; //@{ generic accessor functions - /// return the current buffer view - BufferView * view() const; - - /// return the LyX function handler for this view - LyXFunc * getLyXFunc() const; + /** 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. + */ + boost::shared_ptr const & 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 - Toolbar * getToolbar() const; + Toolbars & getToolbars() { return *toolbars_.get(); } + /// + Toolbars const & getToolbasr() const { return *toolbars_.get(); } /// return the menubar for this view - Menubar * getMenubar() const; - - /// return the minibuffer for this view - /// FIXME: I'm not at all sure that LyXFunc should be - /// aware of a mini buffer as such - MiniBuffer * getMiniBuffer() const; + Menubar & getMenubar() { return *menubar_.get(); } + /// + Menubar const & getMenubar() const { return *menubar_.get(); } /// get access to the dialogs - Dialogs * getDialogs() { return dialogs_.get(); } + Dialogs & getDialogs() { return *dialogs_.get(); } + /// + Dialogs const & getDialogs() const { return *dialogs_.get(); } /// get this view's keyboard map handler - Intl * getIntl() const; + Intl & getIntl() { return *intl_.get(); } + /// + Intl const & getIntl() const { return *intl_.get(); } //@} /// sets the layout in the toolbar layout selection - void setLayout(string const & layout); + void setLayout(std::string const & layout); /// updates the possible layouts selectable void updateLayoutChoice(); /// update the toolbar - void updateToolbar(); + void updateToolbars(); /// update the menubar void updateMenubar(); + /// focus the command buffer (minibuffer) + boost::signal0 focus_command_buffer; + /// view state string changed boost::signal0 view_state_changed; /// display a message in the view - void message(string const &); + 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(); @@ -120,25 +134,20 @@ public: /// 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; + protected: /// view of a buffer. Eventually there will be several. - boost::scoped_ptr bufferview_; + boost::shared_ptr bufferview_; /// view's menubar boost::scoped_ptr menubar_; - /// view's toolbar - boost::scoped_ptr toolbar_; - /// view's minibuffer - boost::scoped_ptr minibuffer_; - - /// keyboard mapping object - boost::scoped_ptr intl_; - - /// auto-saving of buffers - boost::scoped_ptr autosave_timeout_; - - /// called on timeout - void autoSave(); private: /** @@ -146,12 +155,30 @@ private: * @param t main window title * @param it iconified (short) title */ - virtual void setWindowTitle(string const & t, string const & it) = 0; + virtual void setWindowTitle(std::string const & t, std::string const & it) = 0; + + /// called on timeout + void autoSave(); + /// view's toolbar + boost::scoped_ptr toolbars_; + /// keyboard mapping object + boost::scoped_ptr const intl_; + /// auto-saving of buffers + boost::scoped_ptr const autosave_timeout_; /// our function handler boost::scoped_ptr lyxfunc_; /// dialogs for this view boost::scoped_ptr dialogs_; + +protected: + /// view's command buffer controller + // this has to be declared _after_ lyxfunc_ as its initialization depends + // on it! + typedef boost::scoped_ptr + CommandBufferPtr; + + CommandBufferPtr const controlcommand_; }; #endif // LYXVIEW_H