// -*- C++ -*- /** * \file LyXView.h * Copyright 1995-2002 the LyX Team * Read the file COPYING * * \author Lars Gullik Bjornes * \author John Levon */ #ifndef LYXVIEW_H #define LYXVIEW_H #ifdef __GNUG__ #pragma interface #endif #include "LString.h" #include "support/types.h" #include #include #include class Buffer; class Toolbar; class MiniBuffer; class Intl; class Menubar; class BufferView; class Dialogs; class LyXFunc; class LyXFont; class Timeout; /** * 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(); virtual ~LyXView(); /** * 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(); /// start modal operation virtual void prohibitInput() const = 0; /// end modal operation virtual void allowInput() 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 buffer currently shown in this window Buffer * buffer() const; /// return the toolbar for this view Toolbar * getToolbar() const; /// 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; /// get access to the dialogs Dialogs * getDialogs() { return dialogs_.get(); } /// get this view's keyboard map handler Intl * getIntl() const; //@} /// sets the layout in the toolbar layout selection void setLayout(string const & layout); /// updates the possible layouts selectable void updateLayoutChoice(); /// update the toolbar void updateToolbar(); /// update the menubar void updateMenubar(); /// display a message in the view void message(string const &); /// push a message onto the history, and show it void messagePush(string const & str); /// pop the last message pushed void messagePop(); /// show state (font etc.) in minibuffer void showState(); /// updates the title of the window void updateWindowTitle(); /// reset autosave timer void resetAutosaveTimer(); protected: /// view of a buffer. Eventually there will be several. boost::scoped_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: /** * setWindowTitle - set title of window * @param t main window title * @param it iconified (short) title */ virtual void setWindowTitle(string const & t, string const & it) = 0; /// our function handler boost::scoped_ptr lyxfunc_; /// dialogs for this view boost::scoped_ptr dialogs_; }; #endif // LYXVIEW_H