#define GUIAPPLICATION_H
#include "frontends/Application.h"
+#include "support/filetools.h"
#include <QApplication>
#include <QList>
+#ifdef QPA_XCB
+#include <QAbstractNativeEventFilter>
+#endif
class QAbstractItemModel;
class QIcon;
-class QObject;
class QSessionManager;
-class QSortFilterProxyModel;
namespace lyx {
namespace frontend {
class GuiView;
-class GlobalMenuBar;
class GuiWorkArea;
class Menus;
class SocketNotifier;
initialisation should be done before the instantiation of this class.
*/
class GuiApplication : public QApplication, public Application
+#ifdef QPA_XCB
+ , public QAbstractNativeEventFilter
+#endif
{
Q_OBJECT
/// \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();
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
//@}
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
+ }
+
void processKeySym(KeySymbol const & key, KeyModifier state);
/// return the status bar state string
docstring viewStatusMessage();
/// 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();
void slotProcessFuncRequestQueue() { processFuncRequestQueue(); }
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);
///
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);