X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiApplication.h;h=de6013d4c7e691fa127e128d9de5a37fcc0fbcb3;hb=1f10969bb5c5f36017bf5ba8671381b09945cf57;hp=d1a10784b8bf4c476e04590919a30ade0468aaa5;hpb=1a1c9dba4caa4c2dfe9c0f22ebf3c57ea4c835c3;p=lyx.git diff --git a/src/frontends/qt4/GuiApplication.h b/src/frontends/qt4/GuiApplication.h index d1a10784b8..de6013d4c7 100644 --- a/src/frontends/qt4/GuiApplication.h +++ b/src/frontends/qt4/GuiApplication.h @@ -14,15 +14,18 @@ #define GUIAPPLICATION_H #include "frontends/Application.h" +#include "support/filetools.h" #include #include +#ifdef QPA_XCB +#include +#endif class QAbstractItemModel; class QIcon; -class QObject; class QSessionManager; -class QSortFilterProxyModel; +class QFont; namespace lyx { @@ -37,7 +40,6 @@ class FileName; namespace frontend { class GuiView; -class GlobalMenuBar; class GuiWorkArea; class Menus; class SocketNotifier; @@ -49,6 +51,9 @@ There should be only one instance of this class. No Qt object initialisation should be done before the instantiation of this class. */ class GuiApplication : public QApplication, public Application +#ifdef QPA_XCB + , public QAbstractNativeEventFilter +#endif { Q_OBJECT @@ -58,7 +63,7 @@ public: /// \name Methods inherited from Application class //@{ - void dispatch(FuncRequest const &); + DispatchResult const & dispatch(FuncRequest const &); void dispatch(FuncRequest const &, DispatchResult & dr); FuncStatus getStatus(FuncRequest const & cmd) const; void restoreGuiSession(); @@ -103,6 +108,9 @@ public: void commitData(QSessionManager & sm); #ifdef Q_WS_X11 bool x11EventFilter(XEvent * ev); +#elif defined(QPA_XCB) + virtual bool nativeEventFilter(const QByteArray & eventType, void * message, + long * result) Q_DECL_OVERRIDE; #endif //@} @@ -138,10 +146,27 @@ public: /// return a suitable monospaced font name. QString const typewriterFontName(); + QFont const typewriterSystemFont(); + /// void unregisterView(GuiView * gv); /// GuiView & view(int id) const; + + /// Current ratio between physical pixels and device-independent pixels + double pixelRatio() const; + + /// How to load image files + support::search_mode imageSearchMode() const { +#if QT_VERSION >= 0x050000 + return pixelRatio() > 1 ? support::check_hidpi : support::must_exist; +#else + return support::must_exist; +#endif + } + + /// return true if the key is part of a shortcut + bool queryKeySym(KeySymbol const & key, KeyModifier state) const; /// void processKeySym(KeySymbol const & key, KeyModifier state); /// return the status bar state string @@ -169,6 +194,14 @@ public: /// not the current buffer void gotoBookmark(unsigned int idx, bool openFile, bool switchToBuffer); + /// Start a long operation with some cancel possibility (button or ESC) + void startLongOperation(); + /// This needs to be periodically called to avoid freezing the GUI + bool longOperationCancelled(); + /// Stop the long operation mode (i.e., release the GUI) + void stopLongOperation(); + /// A started long operation is still in progress ? + bool longOperationStarted(); private Q_SLOTS: /// void execBatchCommands(); @@ -185,7 +218,12 @@ private: /// void validateCurrentView(); /// + void updateCurrentView(FuncRequest const & cmd, DispatchResult & dr); + /// bool closeAllViews(); + /// Things that need to be done when the OSes session manager + /// requests a log out. + bool prepareAllViewsForLogout(); /// read the given ui (menu/toolbar) file bool readUIFile(QString const & name, bool include = false); /// @@ -216,7 +254,12 @@ extern GuiApplication * guiApp; QString iconName(FuncRequest const & f, bool unknown); /// \return the pixmap for the given path, name and extension. +/// in case of errors a warning is produced and an empty pixmap is returned. QPixmap getPixmap(QString const & path, QString const & name, QString const & ext); +/// Load the file at \param path and convert it to a pixmap. +/// \return true on success otherwise invalidate the pixmap and return false. +/// The caller is responsible for error reporting. +bool getPixmap(QPixmap & pixmap, QString const & path); /// \return an icon for the given action. QIcon getIcon(FuncRequest const & f, bool unknown);