#define APPLICATION_H
#include "ColorCode.h"
+#include "FuncCode.h"
+
+#include "KeyModifier.h"
#include "support/strfwd.h"
#include <boost/function.hpp>
+#include <vector>
+
namespace lyx {
class BufferView;
-struct RGBColor;
class Buffer;
+class DispatchResult;
+class docstring_list;
+class FuncRequest;
+class FuncStatus;
class Inset;
+class Lexer;
+struct RGBColor;
namespace frontend {
Application (this is the frontend really, should probably be renamed).
|
- LyXView-1 (M1 WorkAreas, M1 <= N)
+ LyXView-1 (one or more in case of split-view mode).
+ | |
+ | <tab-widget-1-1>
+ | | |
+ | | WorkArea-1-1-1 (M1-1 WorkAreas, M1-1 <= N)
+ | | | |
+ | | | BufferView <-----------> Buffer-c
+ | | | |
+ | | | Cursor
+ | | |
+ | | WorkArea-1-1-2
+ | | | |
+ | | | BufferView <-----------> Buffer-a
+ | | | |
+ | | | Cursor
| |
- | <tab-widget>
- | | (many)
- | WorkArea-1
- | |
- | BufferView <-----------> Buffer-c
- | |
- | Cursor
+ | <tab-widget-1-2>
|
- LyXView-2 (M2 WorkAreas, M2 <= N, M2 independent of M1)
- |
+ LyXView-2 (one or more in case of split-view mode).
+ | |
+ | <tab-widget-2-1>
+ | | |
+ | | WorkArea-2-1-1 (M2-1 WorkAreas, M2-1 <= N, M2-1 independent of M1-1)
...
automatically destroyed by the parent WorkArea when its Buffer is
closed.
- \todo Move all Buffer changing LFUN to LyXFunc or Cursor.
+ \todo Move all Buffer changing LFUN to Buffer::dispatch(),
+ LyXFunc::dispatch() or Cursor::dispatch().
\todo BufferView::buffer() should only offer const access.
The \c Painter is just a virtual interface to formalize each kind of
multiple WorkAreas but this number can limited to one for another
frontend. The idea is that the kernel should not know how a Buffer
is displayed on screen; it's the frontend business.
- In the future, we may also have multiple Workareas showing
- simultaneously in the same GuiView (ex: with split window).
-
- \todo Implement split-window
+ It is also possible to have multiple Workareas showing
+ simultaneously in the same GuiView (ex: with split window), thus
+ sharing the menubar and toolbars.
- In any case, there would be only one WorkArea that gets the focus
+ In any case, there should be only one WorkArea that gets the focus
at a time.
With our current implementation using a QTabWidget, each Tab own its
Application() {}
///
virtual ~Application() {}
-
///
- virtual bool closeAllViews() = 0;
+ virtual LyXView * currentWindow() = 0;
///
- virtual size_t viewCount() const = 0;
+ virtual bool getStatus(FuncRequest const & cmd, FuncStatus & flag) const = 0;
+ /// dispatch command.
+ virtual void dispatch(FuncRequest const & cmd, DispatchResult & dr) = 0;
+
+ ///
+ virtual void resetGui() = 0;
+
+ /// Load files and restore GUI Session.
+ virtual void restoreGuiSession() = 0;
+
///
virtual void hideDialogs(std::string const & name, Inset * inset) const = 0;
///
* passing Color_white returns "ffffff".
*/
virtual std::string const hexName(ColorCode col) = 0;
-
- /**
- * update an altered GUI color
- */
- virtual void updateColor(ColorCode col) = 0;
-
+
/**
* add a callback for socket read notification
* @param fd socket descriptor (file/socket/etc)
*/
virtual void unregisterSocketCallback(int fd) = 0;
- /// Create the main window with given geometry settings.
- /// \param geometry_arg: only for Windows platform.
- virtual LyXView & createView(std::string const & geometry_arg) = 0;
+ virtual bool searchMenu(FuncRequest const & func,
+ docstring_list & names) const = 0;
+
+ /// \return the icon file name for the given action.
+ virtual docstring iconName(FuncRequest const & f, bool unknown) = 0;
+
+ /// Handle a accented char key sequence
+ /// FIXME: this is only needed for LFUN_ACCENT_* in Text::dispatch()
+ virtual void handleKeyFunc(FuncCode action) = 0;
};
+/// Return the list of loadable formats.
+std::vector<std::string> loadableImageFormats();
+
} // namespace frontend
frontend::Application * theApp();
frontend::Application * createApplication(int & argc, char * argv[]);
+void hideDialogs(std::string const & name, Inset * inset);
} // namespace lyx