X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiView.h;h=4cf5d027e92e6371d9235c78252d0ef5f095f5af;hb=1520629d7cefe09cbc9612806c8abbbd6b36048e;hp=4ccc9a9030f6ea5c846517e28f084eafb465042b;hpb=fda541d46aa9d076d1bb57e1ee3a868d94fa566b;p=lyx.git diff --git a/src/frontends/qt4/GuiView.h b/src/frontends/qt4/GuiView.h index 4ccc9a9030..4cf5d027e9 100644 --- a/src/frontends/qt4/GuiView.h +++ b/src/frontends/qt4/GuiView.h @@ -7,7 +7,7 @@ * \author Lars Gullik Bjornes * \author John Levon * \author Abdelrazak Younes - * \author Peter Kümmel + * \author Peter Kümmel * * Full author contact details are available in file CREDITS. */ @@ -32,15 +32,16 @@ class QShowEvent; namespace lyx { class Cursor; -class ToolbarInfo; namespace frontend { class Dialog; -class GuiLayoutBox; +class LayoutBox; class GuiToolbar; class GuiWorkArea; class TabWorkArea; +class TocModels; +class ToolbarInfo; /** * GuiView - Qt4 implementation of LyXView @@ -77,11 +78,11 @@ public: void updateLayoutList(); void updateToolbars(); QMenu * createPopupMenu(); - FuncStatus getStatus(FuncRequest const & cmd); + bool getStatus(FuncRequest const & cmd, FuncStatus & flag); bool dispatch(FuncRequest const & cmd); /// - void setLayoutDialog(GuiLayoutBox *); + LayoutBox * getLayoutDialog() const; /// \return the buffer currently shown in this window Buffer * buffer(); @@ -90,6 +91,8 @@ public: void setBuffer(Buffer * b); ///< \c Buffer to set. /// bool closeBuffer(); + /// hides the workarea and makes sure it is clean + bool hideWorkArea(GuiWorkArea * wa); /// load a document into the current workarea. Buffer * loadDocument(support::FileName const & name, ///< File to load. bool tolastfiles = true); ///< append to the "Open recent" menu? @@ -103,14 +106,16 @@ public: /// GuiBufferDelegate. ///@{ void resetAutosaveTimers(); - void errors(std::string const &); - void structureChanged() { updateToc(); } + void errors(std::string const &, bool from_master = false); + void structureChanged(); + void updateTocItem(std::string const &, DocIterator const &); ///@} + + /// + TocModels & tocModels(); /// called on timeout void autoSave(); - /// - void updateEmbeddedFiles(); /// \return the current buffer view. BufferView * view(); @@ -136,6 +141,13 @@ public: void removeWorkArea(GuiWorkArea * work_area); /// return the current WorkArea (the one that has the focus). GuiWorkArea const * currentWorkArea() const; + /// return the current WorkArea (the one that has the focus). + GuiWorkArea * currentWorkArea(); + + /// return the current document WorkArea (it may not have the focus). + GuiWorkArea const * currentMainWorkArea() const; + /// return the current document WorkArea (it may not have the focus). + GuiWorkArea * currentMainWorkArea(); Q_SIGNALS: void closing(int); @@ -148,6 +160,8 @@ public Q_SLOTS: private Q_SLOTS: /// void updateWindowTitle(GuiWorkArea * wa); + /// + void resetWindowTitleAndIconText(); /// void on_currentWorkAreaChanged(GuiWorkArea *); @@ -172,8 +186,6 @@ private: /// disconnect from signals in the given buffer void disconnectBuffer(); /// - void updateToc(); - /// void dragEnterEvent(QDragEnterEvent * ev); /// void dropEvent(QDropEvent * ev); @@ -198,24 +210,19 @@ public: /// void resetDialogs(); - /** Check the status of all visible dialogs and disable or reenable + /// Hide all visible dialogs + void hideAll() const; + + /// Update all visible dialogs. + /** + * Check the status of all visible dialogs and disable or reenable * them as appropriate. * * Disabling is needed for example when a dialog is open and the * cursor moves to a position where the corresponding inset is not * allowed. */ - void checkStatus(); - - /// Hide all visible dialogs - void hideAll() const; - /// Hide any dialogs that require a buffer for them to operate - void hideBufferDependent() const; - /** Update visible, buffer-dependent dialogs - If the bool is true then a buffer change has occurred - else it is still the same buffer. - */ - void updateBufferDependent(bool) const; + void updateDialogs(); /** \param name == "bibtex", "citation" etc; an identifier used to launch a particular dialog. @@ -234,7 +241,7 @@ public: std::string const & data, Inset * inset = 0); /** \param name == "citation", "bibtex" etc; an identifier used - to update the contents of a particular dialog with \param data. + to reset the contents of a particular dialog with \param data. See the comments to 'show', above. */ void updateDialog(std::string const & name, std::string const & data); @@ -250,9 +257,20 @@ public: void updateCompletion(Cursor & cur, bool start, bool keep); private: + /// + void saveLayout() const; + /// + bool restoreLayout(); + /// + GuiToolbar * toolbar(std::string const & name); + /// + void constructToolbars(); + /// + void initToolbars(); /// void lfunUiToggle(FuncRequest const & cmd); - + /// + void toggleFullScreen(); /// void insertLyXFile(docstring const & fname); /// @@ -278,7 +296,26 @@ private: /// bool saveBuffer(Buffer & b); /// - bool closeBuffer(Buffer & buf); + bool closeWorkArea(GuiWorkArea * wa, bool close_buffer, + bool tolastopened = false, bool mark_active = false); + /// gives the user the possibility to save his work + /// or to discard the changes. If hiding is true, the + /// document will be reloaded. + bool saveBufferIfNeeded(Buffer & buf, bool hiding); + /// + bool closeBufferAll(bool tolastopened = false); + /// 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); + /// + enum NextOrPrevious { + NEXTBUFFER, + PREVBUFFER + }; + /// + void gotoNextOrPreviousBuffer(NextOrPrevious np); /// Inset * getOpenInset(std::string const & name) const; @@ -286,12 +323,15 @@ private: /// Is the dialog currently visible? bool isDialogVisible(std::string const & name) const; /// - Dialog * find_or_build(std::string const & name); + Dialog * findOrBuild(std::string const & name, bool hide_it); /// Dialog * build(std::string const & name); /// This view ID. int id_; + + /// flag to avoid two concurrent close events. + bool closing_; }; } // namespace frontend