// -*- C++ -*-
-/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
+/**
+ * \file XFormsView.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * Copyright 1995 Matthias Ettrich
- * Copyright 1995-2001 The LyX Team.
+ * \author unknown
*
- * ====================================================== */
+ * Full author contact details are available in file CREDITS.
+ */
#ifndef LyXView_H
#define LyXView_H
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include FORMS_H_LOCATION
+#include "LayoutEngine.h"
+#include "forms_fwd.h"
#include "frontends/LyXView.h"
+#include <X11/Xlib.h> // for Pixmap
+
+#include <boost/signal.hpp>
+
+#include <map>
+
+namespace lyx {
+namespace frontend {
+
+class XMiniBuffer;
/**
- This class is the form containing the view of the buffer. The actual buffer
- view is supposed (at least IMHO) to be another class, that shows its output
- in one or more LyXView's.
+ * XFormsView - xforms implementation of LyXView
+ *
+ * xforms-private implementation of the main LyX window.
*/
class XFormsView : public LyXView {
public:
- /// constructor
+ enum Position {
+ Top,
+ Bottom,
+ Left,
+ Right,
+ Center
+ };
+
+ /// create a main window of the given dimensions
XFormsView(int w, int h);
- /// destructor
+
~XFormsView();
- /// Where to place the form.
- virtual void setPosition(int, int);
- /// Show the main form.
- virtual void show(int, int, string const & t = string("LyX"));
- /// init (should probably be removed later) (Lgb)
- virtual void init();
- /// Redraw the main form.
- virtual void redraw();
- /// returns a pointer to the form.
+
+ /// Accessor to the appropriate layout Box.
+ boost::shared_ptr<Box> getBox(Position pos) const;
+
+ /**
+ * show - display the top-level window
+ * @param xpos requested x position (or 0)
+ * @param xpos requested y position (or 0)
+ * @param title window title
+ */
+ void show(int xpos, int ypos, std::string const & t = std::string("LyX"));
+
+ /// get the xforms main form
FL_FORM * getForm() const;
+ /// redraw the main form.
+ virtual void redraw();
+ /// show busy cursor
+ virtual void busy(bool) const;
+
+ /// callback for close event from window manager
+ int atCloseMainFormCB();
+
+ /// display a status message
+ virtual void message(std::string const & str);
+
+ /// clear back to normal status message
+ virtual void clearMessage();
+
///
- virtual void prohibitInput() const;
+ void updateMetrics(bool resize_form = false);
///
- virtual void allowInput() const;
- /** This callback is run when a close event is sent from the
- window manager. */
- static int atCloseMainFormCB(FL_FORM *, void *);
+ boost::signal<void()> metricsUpdated;
+
+ // returns true if this view has the focus.
+ virtual bool hasFocus() const;
+
private:
- /// pass the title, and the iconified title
- virtual void setWindowTitle(string const &, string const &);
- /// makes the main form.
- void create_form_form_main(int width, int height);
- /// A pointer to the form.
+ /**
+ * 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);
+
+ /// update the minibuffer state message
+ void show_view_state();
+
+ /// The top-most box of the layout engine containing all other boxes.
+ Box window_;
+
+ typedef std::map<Position, boost::shared_ptr<Box> > BoxMap;
+
+ // Accessors to the various Boxes.
+ BoxMap box_map_;
+
+ /// the minibuffer
+ boost::scoped_ptr<XMiniBuffer> minibuffer_;
+ ///
+ boost::signals::connection view_state_con;
+ ///
+ boost::signals::connection focus_con;
+ ///
+ boost::signals::connection redraw_con;
+
+ /// the main form.
FL_FORM * form_;
+ /// Passed to the window manager to give a pretty little symbol ;-)
+ Pixmap icon_pixmap_;
+ ///
+ Pixmap icon_mask_;
};
+
+} // namespace frontend
+} // namespace lyx
+
#endif