X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiApplication.h;h=29302a3cf1fd04a4f72433187e8cfdf22220b4a1;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=a39724a6a0d2c40c0d4c95f1ed7b8ba9991e6030;hpb=19028adf55de1104d923930a7940554ca8683023;p=lyx.git diff --git a/src/frontends/qt4/GuiApplication.h b/src/frontends/qt4/GuiApplication.h index a39724a6a0..29302a3cf1 100644 --- a/src/frontends/qt4/GuiApplication.h +++ b/src/frontends/qt4/GuiApplication.h @@ -13,28 +13,22 @@ #ifndef GUIAPPLICATION_H #define GUIAPPLICATION_H -#include "ColorCache.h" -#include "FontLoader.h" -#include "GuiClipboard.h" -#include "GuiSelection.h" -#include "Menus.h" - #include "frontends/Application.h" -#include #include -#include -#include - -#include -#include +#include +class QAbstractItemModel; +class QIcon; +class QObject; class QSessionManager; -class QStandardItemModel; +class QSortFilterProxyModel; namespace lyx { class BufferView; +class ColorCache; +class KeySymbol; namespace frontend { @@ -42,7 +36,9 @@ class GuiView; class LyXView; class GlobalMenuBar; class GuiWorkArea; +class Menus; class SocketNotifier; +class Toolbars; /// The Qt main application class /** @@ -55,43 +51,57 @@ class GuiApplication : public QApplication, public Application public: GuiApplication(int & argc, char ** argv); - /// - virtual ~GuiApplication(); + ~GuiApplication(); + + /// Clear all session information. + void clearSession(); - /// Method inherited from \c Application class + /// \name Methods inherited from Application class //@{ - virtual FuncStatus getStatus(FuncRequest const &); - virtual bool dispatch(FuncRequest const &); - virtual void resetGui(); + LyXView * currentWindow(); + bool getStatus(FuncRequest const & cmd, FuncStatus & flag) const; + void dispatch(FuncRequest const &, DispatchResult & dr); + void dispatchDelayed(FuncRequest const &); + void resetGui(); void restoreGuiSession(); - virtual Clipboard & clipboard(); - virtual Selection & selection(); - virtual FontLoader & fontLoader() { return font_loader_; } - virtual int exec(); - virtual void exit(int status); - virtual bool event(QEvent * e); - virtual bool getRgbColor(ColorCode col, RGBColor & rgbcol); - virtual std::string const hexName(ColorCode col); - virtual void updateColor(ColorCode col); - virtual void readMenus(Lexer & lex); - virtual void initGlobalMenu(); - virtual void registerSocketCallback(int fd, SocketCallback func); + 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, std::vector & names) const; + 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); //@} - Menus const & menus() const { return menus_; } - Menus & menus() { return menus_; } - /// Methods inherited from \c QApplication class + 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); + 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_; } /// @@ -99,31 +109,29 @@ public: /// void setCurrentView(GuiView * view) { current_view_ = view; } /// - virtual size_t viewCount() const { return view_ids_.size(); } - /// - std::vector const & viewIds() { return view_ids_; } + QList viewIds() const; /// - ColorCache & colorCache() { return color_cache_; } + ColorCache & colorCache(); - QStandardItemModel * languageModel() { return language_model_; } + QAbstractItemModel * languageModel(); /// return a suitable serif font name. - virtual QString const romanFontName(); + QString const romanFontName(); /// return a suitable sans serif font name. - virtual QString const sansFontName(); + QString const sansFontName(); /// return a suitable monospaced font name. - virtual QString const typewriterFontName(); - /// - virtual bool unregisterView(int id); + QString const typewriterFontName(); /// - virtual GuiView & view(int id) const; + void unregisterView(GuiView * gv); /// - virtual void hideDialogs(std::string const & name, Inset * inset) const; + GuiView & view(int id) const; /// - virtual Buffer const * updateInset(Inset const * inset) const; + void processKeySym(KeySymbol const & key, KeyModifier state); + /// return the status bar state string + docstring viewStatusMessage(); private Q_SLOTS: /// @@ -134,57 +142,40 @@ private Q_SLOTS: void handleRegularEvents(); /// void onLastWindowClosed(); - + + /// + void processFuncRequestQueue(); + private: /// bool closeAllViews(); + /// read the given ui (menu/toolbar) file + bool readUIFile(QString const & name, bool include = false); /// - GuiClipboard clipboard_; - /// - GuiSelection selection_; - /// - FontLoader font_loader_; - /// - ColorCache color_cache_; - /// - QStandardItemModel * language_model_; - /// - QTranslator qt_trans_; - /// - std::map socket_notifiers_; - /// - Menus menus_; - /// this timer is used for any regular events one wants to - /// perform. at present it is used to check if forked processes - /// are done. - QTimer general_timer_; + void setGuiLanguage(); -#ifdef Q_WS_X11 -public: - bool x11EventFilter(XEvent * ev); -#endif - /// A translator suitable for the entries in the LyX menu. - /// Only needed with Qt/Mac. - void addMenuTranslator(); - - /// Multiple views container. - /** - * Warning: This must not be a smart pointer as the destruction of the - * object is handled by Qt when the view is closed - * \sa Qt::WA_DeleteOnClose attribute. - */ - std::map views_; - /// - std::vector view_ids_; /// This LyXView is the one receiving Clipboard and Selection /// events GuiView * current_view_; - /// only used on mac - GlobalMenuBar * global_menubar_; + /// + struct Private; + Private * const d; }; // GuiApplication extern GuiApplication * guiApp; +/// \return the icon file name for the given action. +QString iconName(FuncRequest const & f, bool unknown); + + +/// \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