]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiView.h
Amend f441590c
[lyx.git] / src / frontends / qt4 / GuiView.h
index b77c3ad131577bcad5f8926a0ef3d142bf175915..c3ccdbd80a678a0f7f18b38e18594ae2e528578a 100644 (file)
@@ -51,7 +51,7 @@ class TocModels;
 class ToolbarInfo;
 
 /**
- * GuiView - Qt4 main LyX window
+ * GuiView - Qt main LyX window
  *
  * This class represents the main LyX window and provides
  * accessor functions to its content.
@@ -64,15 +64,28 @@ class GuiView : public QMainWindow, public GuiBufferViewDelegate,
        public GuiBufferDelegate
 {
        Q_OBJECT
+
 public:
        /// create a main window of the given dimensions
        GuiView(int id);
 
        ~GuiView();
 
+       /// closes the view such that the view knows that is closed
+       /// programmatically and not by the user clicking the x.
+       bool closeScheduled();
+
+       /// Things that need to be done when the OSes session manager
+       /// requests a log out.
+       bool prepareAllBuffersForLogout();
+
        int id() const { return id_; }
 
-       void setBusy(bool);
+       /// are we busy ?
+       bool busy() const;
+
+       /// Signal that the any "auto" minibuffer can be closed now.
+       void resetCommandExecute();
 
        /// \name Generic accessor functions
        //@{
@@ -96,9 +109,7 @@ public:
        /// display a message in the view
        /// could be called from any thread
        void message(docstring const &);
-       /// must be called from GUI thread
-       void updateMessage(QString const & str);
-
+       
        bool getStatus(FuncRequest const & cmd, FuncStatus & flag);
        /// dispatch command.
        /// \return true if the \c FuncRequest has been dispatched.
@@ -114,6 +125,7 @@ public:
 
        ///
        void setFocus();
+       bool hasFocus() const;
 
        ///
        void focusInEvent(QFocusEvent * e);
@@ -140,7 +152,7 @@ public:
 
        /// hides the workarea and makes sure it is clean
        bool hideWorkArea(GuiWorkArea * wa);
-       /// closes the workarea
+       /// closes workarea; close buffer only if no other workareas point to it
        bool closeWorkArea(GuiWorkArea * wa);
        /// closes the buffer
        bool closeBuffer(Buffer & buf);
@@ -174,6 +186,8 @@ public:
        /// \return the \c Workarea associated to \p  Buffer
        /// \retval 0 if no \c WorkArea is found.
        GuiWorkArea * workArea(Buffer & buffer);
+       /// \return the \c Workarea at index \c index
+       GuiWorkArea * workArea(int index);
 
        /// Add a \c WorkArea 
        /// \return the \c Workarea associated to \p  Buffer
@@ -192,12 +206,17 @@ public:
        GuiWorkArea const * currentMainWorkArea() const;
        /// return the current document WorkArea (it may not have the focus).
        GuiWorkArea * currentMainWorkArea();
+       
+       /// Current ratio between physical pixels and device-independent pixels
+       double pixelRatio() const;
 
 Q_SIGNALS:
        void closing(int);
        void triggerShowDialog(QString const & qname, QString const & qdata, Inset * inset);
 
 public Q_SLOTS:
+       ///
+       void setBusy(bool);
        /// idle timeout.
        /// clear any temporary message and replace with current status.
        void clearMessage();
@@ -217,14 +236,22 @@ private Q_SLOTS:
        void smallSizedIcons();
        void normalSizedIcons();
        void bigSizedIcons();
+       void hugeSizedIcons();
+       void giantSizedIcons();
 
-       /// For completion of autosave or exporrt threads.
-       void threadFinished();
+       /// For completion of autosave or export threads.
+       void processingThreadStarted();
+       void processingThreadFinished();
+       void autoSaveThreadFinished();
 
        /// must be called in GUI thread
        void doShowDialog(QString const & qname, QString const & qdata,
        Inset * inset);
 
+       /// must be called from GUI thread
+       void updateStatusBarMessage(QString const & str);
+       void clearMessageText();
+
 private:
        /// Open given child document in current buffer directory.
        void openChildDocument(std::string const & filename);
@@ -260,7 +287,7 @@ private:
        bool goToFileRow(std::string const & argument);
 
        ///
-       struct GuiViewPrivate;
+       class GuiViewPrivate;
        GuiViewPrivate & d;
 
 public:
@@ -316,8 +343,10 @@ public:
        void disconnectDialog(std::string const & name);
 
 private:
-       ///
+       /// Saves the layout and geometry of the window
        void saveLayout() const;
+       /// Saves the settings of toolbars and all dialogs
+       void saveUISettings() const;
        ///
        bool restoreLayout();
        ///
@@ -327,6 +356,8 @@ private:
        ///
        void initToolbars();
        ///
+       void initToolbar(std::string const & name);
+       ///
        bool lfunUiToggle(std::string const & ui_component);
        ///
        void toggleFullScreen();
@@ -335,7 +366,12 @@ private:
        ///
        void insertPlaintextFile(docstring const & fname,
                bool asParagraph);
+       /// Open Export As ... dialog. \p iformat is the format the
+       /// filter is initially set to.
+       bool exportBufferAs(Buffer & b, docstring const & iformat);
 
+       ///
+       enum RenameKind { LV_WRITE_AS, LV_VC_RENAME, LV_VC_COPY };
        /// Save a buffer as a new file. 
        /**
        Write a buffer to a new file name and rename the buffer
@@ -350,10 +386,19 @@ private:
     If 'newname' is non-empty and has an absolute path, that is used.
     Otherwise the base directory of the buffer is used as the base
     for any relative path in 'newname'.
-       */
-       bool renameBuffer(Buffer & b, docstring const & newname);
+
+        \p kind controls what is done besides the pure renaming:
+         * LV_WRITE_AS  => The buffer is written without version control actions.
+         * LV_VC_RENAME => The file is renamed in version control.
+         * LV_VC_COPY   => The file is copied in version control.
+        */
+       bool renameBuffer(Buffer & b, docstring const & newname,
+                         RenameKind kind = LV_WRITE_AS);
        ///
        bool saveBuffer(Buffer & b);
+       /// save and rename buffer to fn. If fn is empty, the buffer
+       /// is just saved as the filename it already has.
+       bool saveBuffer(Buffer & b, support::FileName const & fn);
        /// closes a workarea, if close_buffer is true the buffer will
        /// also be released, otherwise the buffer will be hidden.
        bool closeWorkArea(GuiWorkArea * wa, bool close_buffer);
@@ -371,15 +416,15 @@ private:
        /// is the buffer in this workarea also shown in another tab ?
        /// This tab can either be in the same view or in another one.
        bool inMultiTabs(GuiWorkArea * wa);
-       /// is the buffer in this workarea also shown in another view ?
-       bool inMultiViews(GuiWorkArea * wa);
+       /// is the buffer shown in some other view ?
+       bool inOtherView(Buffer & buf);
        ///
        enum NextOrPrevious {
                NEXTBUFFER,
                PREVBUFFER
        };
        ///
-       void gotoNextOrPreviousBuffer(NextOrPrevious np);
+       void gotoNextOrPreviousBuffer(NextOrPrevious np, bool const move);
 
        /// Is the dialog currently visible?
        bool isDialogVisible(std::string const & name) const;
@@ -388,9 +433,11 @@ private:
        ///
        Dialog * build(std::string const & name);
        ///
-       void reloadBuffer();
+       bool reloadBuffer(Buffer & buffer);
+       ///
+       void dispatchVC(FuncRequest const & cmd, DispatchResult & dr);
        ///
-       void dispatchVC(FuncRequest const & cmd);
+       void dispatchToBufferView(FuncRequest const & cmd, DispatchResult & dr);
        ///
        void showMessage();
 
@@ -399,6 +446,15 @@ private:
 
        /// flag to avoid two concurrent close events.
        bool closing_;
+       /// if the view is busy the cursor shouldn't blink for instance.
+       /// This counts the number of times more often we called
+       /// setBusy(true) compared to setBusy(false), so we can nest
+       /// functions that call setBusy;
+       int busy_;
+
+       /// Request to open the command toolbar if it is "auto"
+       bool command_execute_;
+
 };
 
 } // namespace frontend