/** * \file GuiApplication.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \author unknown * \author John Levon * \author Abdelrazak Younes * * Full author contact details are available in file CREDITS. */ #ifndef GUIAPPLICATION_H #define GUIAPPLICATION_H #include "frontends/Application.h" #include #include #include class QSessionManager; class QAbstractItemModel; class QSortFilterProxyModel; namespace lyx { class BufferView; class ColorCache; namespace frontend { class GuiView; class LyXView; class GlobalMenuBar; class GuiWorkArea; class Menus; class SocketNotifier; /// 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. */ class GuiApplication : public QApplication, public Application { Q_OBJECT public: GuiApplication(int & argc, char ** argv); ~GuiApplication(); /// Method inherited from \c Application class //@{ bool getStatus(FuncRequest const & cmd, FuncStatus & flag) const; bool dispatch(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 readMenus(Lexer & lex); void registerSocketCallback(int fd, SocketCallback func); void unregisterSocketCallback(int fd); bool searchMenu(FuncRequest const & func, std::vector & names) const; void hideDialogs(std::string const & name, Inset * inset) const; Buffer const * updateInset(Inset const * inset) const; //@} Menus const & menus() const; Menus & menus(); /// Methods inherited from \c 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. void createView(QString const & geometry_arg = QString(), bool autoShow = true); /// GuiView const * currentView() const { return current_view_; } /// GuiView * currentView() { return current_view_; } /// void setCurrentView(GuiView * view) { current_view_ = view; } /// QList viewIds() const; /// ColorCache & colorCache(); 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(); /// void unregisterView(GuiView * gv); /// GuiView & view(int id) const; private Q_SLOTS: /// void execBatchCommands(); /// void socketDataReceived(int fd); /// events to be triggered by general_timer_ should go here void handleRegularEvents(); /// void onLastWindowClosed(); private: /// bool closeAllViews(); /// This LyXView is the one receiving Clipboard and Selection /// events GuiView * current_view_; /// struct Private; Private * const d; }; // GuiApplication extern GuiApplication * guiApp; } // namespace frontend } // namespace lyx #endif // GUIAPPLICATION_H