]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiApplication.h
On Linux show in crash message box the backtrace
[lyx.git] / src / frontends / qt4 / GuiApplication.h
index 5355f9bd85e2592e4564a95b4c09c2b81af6dbf2..57b37836c6a40c3e857a459549b8099819e78c30 100644 (file)
@@ -30,6 +30,10 @@ class BufferView;
 class ColorCache;
 class KeySymbol;
 
+namespace support {
+class FileName;
+}
+
 namespace frontend {
 
 class GuiView;
@@ -42,7 +46,7 @@ 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.
+initialisation should be done before the instantiation of this class.
 */
 class GuiApplication : public QApplication, public Application
 {
@@ -52,20 +56,13 @@ public:
        GuiApplication(int & argc, char ** argv);
        ~GuiApplication();
 
-       /// Clear all session information.
-       void clearSession();
-
        /// \name Methods inherited from Application class
        //@{
        void dispatch(FuncRequest const &);
        void dispatch(FuncRequest const &, DispatchResult & dr);
        FuncStatus getStatus(FuncRequest const & cmd) const;
-       void dispatchDelayed(FuncRequest const &);
-       void resetGui();
        void restoreGuiSession();
-       Clipboard & clipboard();
-       Selection & selection();
-       FontLoader & fontLoader();
+       Buffer const * updateInset(Inset const * inset) const;
        int exec();
        void exit(int status);
        bool event(QEvent * e);
@@ -74,15 +71,30 @@ public:
        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);
        //@}
 
+       ///
+       bool getStatus(FuncRequest const & cmd, FuncStatus & status) const;
+       ///
+       void hideDialogs(std::string const & name, Inset * inset) const;
+       ///
+       void resetGui();
+
+       ///
+       Clipboard & clipboard();
+       ///
+       Selection & selection();
+       ///
+       FontLoader & fontLoader();
+
+       ///
        Toolbars const & toolbars() const;
+       ///
        Toolbars & toolbars();
+       ///
        Menus const & menus() const;
+       ///
        Menus & menus();
 
        /// \name Methods inherited from QApplication class
@@ -110,9 +122,12 @@ public:
        ///
        QList<int> viewIds() const;
 
+       /// Clear all session information.
+       void clearSession();
+
        ///
        ColorCache & colorCache();
-
+       ///
        QAbstractItemModel * languageModel();
 
        /// return a suitable serif font name.
@@ -132,32 +147,69 @@ public:
        /// return the status bar state string
        docstring viewStatusMessage();
 
+       /// \name Methods to process FuncRequests
+       //@{
+       /// process the func request
+       void processFuncRequest(FuncRequest const &);
+       /// add a func request to the queue and process it asynchronously
+       /// \note As a side-effect this will also process the
+       /// func requests that were added to the queue before.
+       void processFuncRequestAsync(FuncRequest const &);
+       /// process the func requests in the queue
+       void processFuncRequestQueue();
+       /// process the func requests in the queue asynchronously
+       void processFuncRequestQueueAsync();
+       /// add a func request to the queue for later processing
+       void addToFuncRequestQueue(FuncRequest const &);
+       //@}
+
        /// goto a bookmark
        /// openFile: whether or not open a file if the file is not opened
        /// switchToBuffer: whether or not switch to buffer if the buffer is
        ///             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 socketDataReceived(int fd);
-       /// events to be triggered by general_timer_ should go here
+       /// events to be triggered by Private::general_timer_ should go here
        void handleRegularEvents();
        ///
        void onLastWindowClosed();
-
        ///
-       void processFuncRequestQueue();
+       void slotProcessFuncRequestQueue() { processFuncRequestQueue(); }
 
 private:
+       ///
+       void validateCurrentView();
+       ///
+       void updateCurrentView(FuncRequest const & cmd, DispatchResult & dr);
        ///
        bool closeAllViews();
        /// read the given ui (menu/toolbar) file
        bool readUIFile(QString const & name, bool include = false);
        ///
+       enum ReturnValues {
+               ReadOK,
+               ReadError,
+               FormatMismatch
+       };
+       ///
+       ReturnValues readUIFile(support::FileName);
+       ///
        void setGuiLanguage();
+       ///
+       void reconfigure(std::string const & option);
 
        /// This GuiView is the one receiving Clipboard and Selection
        /// events
@@ -173,13 +225,13 @@ 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