class BufferView;
class LyXView;
-class LColor_color;
+class Color_color;
struct RGBColor;
namespace frontend {
common to all frontends.
Model/View/Controller separation in LyX:
-
+
1) The Model: \c Buffer
The Buffer is the in-memory representation of a LyX file format. The
is represented on screen. There is one unique Buffer per opened LyX
file.
-
+
2) The Controller: \c BufferView / \c Painter
- The BufferView is a tool used by the view that translates a part of
+ The BufferView is a tool used by the view that translates a part of
the Buffer contents into drawing routines. The BufferView asks each
inset of the Buffer to draw itself onto the screen using the Painter.
- There is only Buffer loaded per BufferView. While there is the
- possibility to switch Buffer inside the BufferView, the goal is to
- instantiate a new BufferView on each Buffer switch.
+ There can be only one Buffer displayed in a BufferView. While there
+ is the possibility to switch Buffer inside the BufferView, the goal
+ is to instantiate a new BufferView on each Buffer switch.
\todo Instantiate a new BufferView on each Buffer switch.
The \c Painter is just a virtual interface to formalize each kind of
drawing routines (text, line, rectangle, etc).
-
+
The \c BufferView also contains a Cursor which may or may not be
visible on screen. The cursor is really just a bookmark to remember
where the next Buffer insertion/deletion is going to take place.
-
+
3) The View: \c WorkArea (and it's qt4 specialisation GuiWorkArea)
This contains the real screen area where the drawing is done by the
- select char
- etc.
-
+
4) The Window: \c LyXView (and its qt4 specialisation \c GuiView)
-
+
This is a full window containing a menubar, toolbars, a tabbar and a
WorkArea. One LyXView could in theory contain multiple WorkArea
(ex: with split window) but this number is limited to one only for
the WorkArea to switch to this another Buffer.
With a TabWidget, each Tab would own its own \c WorkArea. Clicking on a tab
- would switch a WorkArea instead of a Buffer.
+ would switch a WorkArea instead of a Buffer.
*/
class Application
{
///
virtual ~Application() {}
- /// Start the main event loop, after executing the given batch
- /// commands.
- int start(std::string const & batch);
///
virtual Gui & gui() = 0;
- ///
+
+ /// Start the main event loop.
+ /// The batch command is programmed to be execute once
+ /// the event loop is started.
virtual int const exec() = 0;
/// Quit running LyX.
* The function returns true if successful.
* It returns false on failure and sets r, g, b to 0.
*/
- virtual bool getRgbColor(LColor_color col, RGBColor & rgbcol) = 0;
+ virtual bool getRgbColor(Color_color col, RGBColor & rgbcol) = 0;
- /** Eg, passing LColor::black returns "000000",
- * passing LColor::white returns "ffffff".
+ /** Eg, passing Color::black returns "000000",
+ * passing Color::white returns "ffffff".
*/
- virtual std::string const hexName(LColor_color col) = 0;
+ virtual std::string const hexName(Color_color col) = 0;
/**
* update an altered GUI color
*/
- virtual void updateColor(LColor_color col) = 0;
+ virtual void updateColor(Color_color col) = 0;
/**
* add a callback for socket read notification
/// Create the main window with given geometry settings.
LyXView & createView(unsigned int width, unsigned int height,
- int posx, int posy, bool maximize);
-
- ///
- LyXView const & currentView() const;
+ int posx, int posy, int maximized,
+ unsigned int iconSizeXY, const std::string & geometryArg);
- ///
- LyXView & currentView();
+ ///
+ LyXView const * currentView() const;
+
+ ///
+ LyXView * currentView();
///
void setCurrentView(LyXView & current_view);
} // namespace frontend
-extern frontend::Application * theApp;
+frontend::Application * theApp();
frontend::Application * createApplication(int & argc, char * argv[]);