]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/XFormsView.h
Change the semantics of 'none' and 'auto' viewers/editors: 'none' means now
[lyx.git] / src / frontends / xforms / XFormsView.h
index 762bb32c4b2b47c5d9a079f3a255d69a8e4e0ea2..45e58ff870d738c9bfbc83f22508aeaa5068b01d 100644 (file)
 // -*- 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