]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiApplication.h
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / GuiApplication.h
index ed0fe31b422a7fe980b0f5e7a2769aafedb95052..29302a3cf1fd04a4f72433187e8cfdf22220b4a1 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * \file qt4/GuiApplication.h
+ * \file GuiApplication.h
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
  * Full author contact details are available in file CREDITS.
  */
 
-#ifndef QT4_APPLICATION_H
-#define QT4_APPLICATION_H
-
-#include "ColorCache.h"
-#include "GuiFontLoader.h"
-#include "GuiClipboard.h"
-#include "GuiImplementation.h"
-#include "GuiSelection.h"
+#ifndef GUIAPPLICATION_H
+#define GUIAPPLICATION_H
 
 #include "frontends/Application.h"
 
 #include <QApplication>
+#include <QList>
 
-///////////////////////////////////////////////////////////////
-// Specific stuff
-
-#ifdef Q_WS_MACX
-#include <Carbon/Carbon.h>
-#endif
-///////////////////////////////////////////////////////////////
+class QAbstractItemModel;
+class QIcon;
+class QObject;
+class QSessionManager;
+class QSortFilterProxyModel;
 
 namespace lyx {
 
 class BufferView;
-class socket_callback;
+class ColorCache;
+class KeySymbol;
 
 namespace frontend {
 
+class GuiView;
+class LyXView;
+class GlobalMenuBar;
 class GuiWorkArea;
+class Menus;
+class SocketNotifier;
+class Toolbars;
 
 /// The Qt main application class
 /**
 There should be only one instance of this class. No Qt object
 initialisation should be done before the instanciation of this class.
-
-\todo The work areas handling could be moved to a base virtual class
-comon to all frontends.
 */
 class GuiApplication : public QApplication, public Application
 {
@@ -54,66 +51,132 @@ class GuiApplication : public QApplication, public Application
 
 public:
        GuiApplication(int & argc, char ** argv);
-       ///
-       virtual ~GuiApplication();
+       ~GuiApplication();
 
-       /// Method inherited from \c Application class
+       /// Clear all session information.
+       void clearSession();
+
+       /// \name Methods inherited from Application class
        //@{
-       virtual Clipboard& clipboard();
-       virtual Selection& selection();
-       virtual FontLoader & fontLoader() { return font_loader_; }
-       virtual int const exec();
-       virtual Gui & gui() { return gui_; }
-       virtual void exit(int status);
-       virtual bool event(QEvent * e);
-       void syncEvents();
-       virtual std::string const romanFontName();
-       virtual std::string const sansFontName();
-       virtual std::string const typewriterFontName();
-       virtual bool getRgbColor(LColor_color col, lyx::RGBColor & rgbcol);
-       virtual std::string const hexName(LColor_color col);
-       virtual void updateColor(LColor_color col);
-       virtual void registerSocketCallback(
-               int fd, boost::function<void()> func);
-       void unregisterSocketCallbackImpl(int fd);
+       LyXView * currentWindow();
+       bool getStatus(FuncRequest const & cmd, FuncStatus & flag) const;
+       void dispatch(FuncRequest const &, DispatchResult & dr);
+       void dispatchDelayed(FuncRequest const &);
+       void resetGui();
+       void restoreGuiSession();
+       Clipboard & clipboard();
+       Selection & selection();
+       FontLoader & fontLoader();
+       int exec();
+       void exit(int status);
+       bool event(QEvent * e);
+       bool getRgbColor(ColorCode col, RGBColor & rgbcol);
+       std::string const hexName(ColorCode col);
+       void registerSocketCallback(int fd, SocketCallback func);
+       void unregisterSocketCallback(int fd);
+       bool searchMenu(FuncRequest const & func, docstring_list & names) const;
+       docstring iconName(FuncRequest const & f, bool unknown);
+       void hideDialogs(std::string const & name, Inset * inset) const;
+       Buffer const * updateInset(Inset const * inset) const;
+       void handleKeyFunc(FuncCode action);
        //@}
 
+       Toolbars const & toolbars() const;
+       Toolbars & toolbars();
+       Menus const & menus() const;
+       Menus & menus();
+
+       /// \name Methods inherited from QApplication class
+       //@{
+       bool notify(QObject * receiver, QEvent * event);
+       void commitData(QSessionManager & sm);
+#ifdef Q_WS_X11
+       bool x11EventFilter(XEvent * ev);
+#endif
+       //@}
+
+       /// Create the main window with given geometry settings.
+       /// \param geometry_arg: only for Windows platform.
+       /// \param optional id identifier.
+       void createView(QString const & geometry_arg = QString(),
+               bool autoShow = true, int id = 0);
+       /// FIXME: this method and the one above are quite ugly.
+       void createView(int id);
+       ///
+       GuiView const * currentView() const { return current_view_; }
        ///
-       ColorCache & colorCache() { return color_cache_; }
+       GuiView * currentView() { return current_view_; }
        ///
+       void setCurrentView(GuiView * view) { current_view_ = view; }
        ///
-       GuiFontLoader & guiFontLoader() { return font_loader_; }
+       QList<int> viewIds() const;
 
-private Q_SLOTS:
        ///
-       void execBatchCommands();
+       ColorCache & colorCache();
 
-private:
+       QAbstractItemModel * languageModel();
+
+       /// return a suitable serif font name.
+       QString const romanFontName();
+
+       /// return a suitable sans serif font name.
+       QString const sansFontName();
+
+       /// return a suitable monospaced font name.
+       QString const typewriterFontName();
        ///
-       GuiImplementation gui_;
+       void unregisterView(GuiView * gv);
        ///
-       GuiClipboard clipboard_;
+       GuiView & view(int id) const;
        ///
-       GuiSelection selection_;
+       void processKeySym(KeySymbol const & key, KeyModifier state);
+       /// return the status bar state string
+       docstring viewStatusMessage();
+
+private Q_SLOTS:
        ///
-       GuiFontLoader font_loader_;
+       void execBatchCommands();
        ///
-       ColorCache color_cache_;
+       void socketDataReceived(int fd);
+       /// events to be triggered by general_timer_ should go here
+       void handleRegularEvents();
        ///
-       std::map<int, boost::shared_ptr<socket_callback> > socket_callbacks_;
+       void onLastWindowClosed();
 
-#ifdef Q_WS_X11
-public:
-       bool x11EventFilter (XEvent * ev);
-#endif
+       ///
+       void processFuncRequestQueue();
 
+private:
+       ///
+       bool closeAllViews();
+       /// read the given ui (menu/toolbar) file
+       bool readUIFile(QString const & name, bool include = false);
+       ///
+       void setGuiLanguage();
+
+       /// This LyXView is the one receiving Clipboard and Selection
+       /// events
+       GuiView * current_view_;
+       ///
+       struct Private;
+       Private * const d;
 }; // GuiApplication
 
 extern GuiApplication * guiApp;
 
-} // namespace frontend
+/// \return the icon file name for the given action.
+QString iconName(FuncRequest const & f, bool unknown);
 
-} // namespace lyx
 
+/// \return the pixmap for the given path, name and extension.
+QPixmap getPixmap(QString const & path, QString const & name, QString const & ext);
+
+/// \return an icon for the given action.
+QIcon getIcon(FuncRequest const & f, bool unknown);
+
+GuiApplication * theGuiApp();
+
+} // namespace frontend
+} // namespace lyx
 
-#endif // QT4_APPLICATION_H
+#endif // GUIAPPLICATION_H