#include <boost/signals/trackable.hpp>
#include <boost/utility.hpp>
+#include <vector>
+
+namespace lyx {
+
class Buffer;
class InsetBase;
class Menubar;
class Timeout;
class FuncRequest;
-namespace lyx {
namespace frontend {
class WorkArea;
class ControlCommandBuffer;
} // namespace frontend
-} // namespace lyx
/**
* LyXView - main LyX window
class LyXView : public boost::signals::trackable, boost::noncopyable {
public:
- LyXView();
+ LyXView(int id);
virtual ~LyXView();
- void setWorkArea(lyx::frontend::WorkArea * work_area);
+ int const id() const { return id_; }
+
+ virtual void close() = 0;
+
+ std::vector<int> const & workAreaIds() const { return work_area_ids_; }
+
+ void setWorkArea(frontend::WorkArea * work_area);
+
+ /// This signal is emitted with the LyXView id when it is closed.
+ boost::signal<void(int)> closed;
/**
* This is called after the concrete view has been created.
*/
virtual void init() = 0;
+ ///
virtual void setGeometry(
unsigned int width,
unsigned int height,
int posx, int posy,
bool maximize) = 0;
+ /// save the geometry state in the session manager.
+ virtual void saveGeometry() = 0;
+
/// show busy cursor
- virtual void busy(bool) const = 0;
+ virtual void busy(bool) = 0;
virtual Toolbars::ToolbarPtr makeToolbar(ToolbarBackend::Toolbar const & tbb) = 0;
/// return the buffer currently shown in this window
Buffer * buffer() const;
- /* FIXME: Abdel 22/09/71
- there is only one lyxFunc() for now but there is maybe a need
- for more in the feature. Something like that:
-
- LyXFunc & getLyXFunc() { return theApp->lyxFunc(id_); }
-
- where id_ would be the this LyXView ID.
- That's the reason why I didn't remove these methods for now.
- */
- /// return the LyX function handler for this view
- LyXFunc & getLyXFunc() { return theApp->lyxFunc(); }
- ///
- LyXFunc const & getLyXFunc() const { return theApp->lyxFunc(); }
-
/// return the toolbar for this view
Toolbars & getToolbars() { return *toolbars_.get(); }
///
/// update the toolbar
void updateToolbars();
+ /// get toolbar state
+ ToolbarBackend::Flags getToolbarState(std::string const & name);
+ /// toggle toolbar state
+ void toggleToolbarState(std::string const & name);
/// update the menubar
void updateMenubar();
/// update the status bar
boost::signal<void()> focus_command_buffer;
/// display a message in the view
- virtual void message(lyx::docstring const &) = 0;
+ virtual void message(docstring const &) = 0;
/// clear any temporary message and replace with current status
virtual void clearMessage() = 0;
/// updates the title of the window
void updateWindowTitle();
+ /// updates the tab view
+ virtual void updateTab() = 0;
+
/// reset autosave timer
void resetAutosaveTimer();
/// returns true if this view has the focus.
virtual bool hasFocus() const = 0;
- /// 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 &);
/**
\todo FIXME: there is only one workArea per LyXView for now.
*/
- lyx::frontend::WorkArea * work_area_;
+ frontend::WorkArea * work_area_;
/// view's menubar
boost::scoped_ptr<Menubar> menubar_;
* @param t main window title
* @param it iconified (short) title
*/
- virtual void setWindowTitle(lyx::docstring const & t, lyx::docstring const & it) = 0;
+ virtual void setWindowTitle(docstring const & t, docstring const & it) = 0;
/// called on timeout
void autoSave();
/// dialogs for this view
boost::scoped_ptr<Dialogs> dialogs_;
+ /// buffer changed signal connection
+ boost::signals::connection bufferChangedConnection_;
/// buffer errors signal connection
boost::signals::connection errorsConnection_;
/// buffer messages signal connection
/// 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>
+ typedef boost::scoped_ptr<frontend::ControlCommandBuffer>
CommandBufferPtr;
CommandBufferPtr const controlcommand_;
+
+private:
+ int id_;
+ std::vector<int> work_area_ids_;
};
+} // namespace lyx
+
#endif // LYXVIEW_H