]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiView.cpp
Remove unused UI file.
[lyx.git] / src / frontends / qt4 / GuiView.cpp
index 62e991d340b03f234495e6c1dee313bca7cb9fc0..c6b8474b9966fd650c31d1e5e79786b494e56f02 100644 (file)
 #include "GuiApplication.h"
 #include "GuiCommandBuffer.h"
 #include "GuiCompleter.h"
-#include "GuiWorkArea.h"
 #include "GuiKeySymbol.h"
 #include "GuiToc.h"
 #include "GuiToolbar.h"
+#include "GuiWorkArea.h"
 #include "LayoutBox.h"
 #include "Menus.h"
 #include "TocModel.h"
@@ -274,11 +274,12 @@ struct GuiView::GuiViewPrivate
 #if (QT_VERSION >= 0x040400)
        void setPreviewFuture(QFuture<docstring> const & f)
        {
-               if (preview_watcher_.isRunning())
-                       preview_watcher_.waitForFinished();
+               if (preview_watcher_.isRunning()) {
+                       // we prefer to cancel this preview in order to keep a snappy
+                       // interface.
+                       return;
+               }
                preview_watcher_.setFuture(f);
-               connect(&preview_watcher_, SIGNAL(finished()), gv_,
-                       SLOT(threadFinished()));
        }
 #endif
 
@@ -369,10 +370,13 @@ GuiView::GuiView(int id)
        setAcceptDrops(true);
 
        statusBar()->setSizeGripEnabled(true);
+       updateStatusBar();
 
 #if (QT_VERSION >= 0x040400)
        connect(&d.autosave_watcher_, SIGNAL(finished()), this,
                SLOT(threadFinished()));
+       connect(&d.preview_watcher_, SIGNAL(finished()), this,
+               SLOT(threadFinished()));
 #endif
 
        connect(this, SIGNAL(triggerShowDialog(QString const &, QString const &, Inset *)),
@@ -465,6 +469,8 @@ bool GuiView::restoreLayout()
                dialog->prepareView();
        if ((dialog = findOrBuild("view-source", true)))
                dialog->prepareView();
+       if ((dialog = findOrBuild("progress", true)))
+               dialog->prepareView();
 
        if (!restoreState(settings.value("layout").toByteArray(), 0))
                initToolbars();
@@ -694,7 +700,7 @@ void GuiView::dropEvent(QDropEvent * event)
                        cmd = FuncRequest(LFUN_FILE_OPEN, file);
                }
 
-               // Asynchronously post the event. DropEvent usually come
+               // Asynchronously post the event. DropEvent usually comes
                // from the BufferView. But reloading a file might close
                // the BufferView from within its own event handler.
                guiApp->dispatchDelayed(cmd);
@@ -741,8 +747,11 @@ void GuiView::bigSizedIcons()
 
 void GuiView::clearMessage()
 {
-       if (!hasFocus())
-               return;
+       // FIXME: This code was introduced in r19643 to fix bug #4123. However,
+       // the hasFocus function mostly returns false, even if the focus is on
+       // a workarea in this view.
+       //if (!hasFocus())
+       //      return;
        showMessage();
        d.statusbar_timer_.stop();
 }
@@ -750,7 +759,8 @@ void GuiView::clearMessage()
 
 void GuiView::updateWindowTitle(GuiWorkArea * wa)
 {
-       if (wa != d.current_work_area_)
+       if (wa != d.current_work_area_
+           || wa->bufferView().buffer().isInternal())
                return;
        setWindowTitle(qt_("LyX: ") + wa->windowTitle());
        setWindowIconText(wa->windowIconText());
@@ -795,6 +805,7 @@ void GuiView::on_lastWorkAreaRemoved()
        updateDialogs();
 
        resetWindowTitleAndIconText();
+       updateStatusBar();
 
        if (lyxrc.open_buffers_in_tabs)
                // Nothing more to do, the window should stay open.
@@ -1257,6 +1268,7 @@ BufferView const * GuiView::currentBufferView() const
 }
 
 
+#if (QT_VERSION >= 0x040400)
 static docstring saveAndDestroyBuffer(Buffer * buffer, FileName const & fname)
 {
        bool failed = true;
@@ -1274,6 +1286,7 @@ static docstring saveAndDestroyBuffer(Buffer * buffer, FileName const & fname)
                ? _("Automatic save failed!")
                : _("Automatic save done.");
 }
+#endif
 
 
 void GuiView::autoSave()
@@ -2114,6 +2127,7 @@ bool GuiView::closeWorkArea(GuiWorkArea * wa)
 bool GuiView::closeBuffer()
 {
        GuiWorkArea * wa = currentMainWorkArea();
+       setCurrentWorkArea(wa);
        Buffer & buf = wa->bufferView().buffer();
        return wa && closeWorkArea(wa, !buf.parent());
 }
@@ -2302,7 +2316,7 @@ bool GuiView::saveBufferIfNeeded(Buffer & buf, bool hiding)
                buf.removeAutosaveFile();
                if (hiding)
                        // revert all changes
-                       buf.loadLyXFile(buf.fileName());
+                       buf.reload();
                buf.markClean();
                break;
        case 2:
@@ -2399,34 +2413,7 @@ static bool ensureBufferClean(Buffer * buffer)
 void GuiView::reloadBuffer()
 {
        Buffer * buf = &documentBufferView()->buffer();
-       reloadBuffer(buf);
-}
-
-
-void GuiView::reloadBuffer(Buffer * buf)
-{
-       FileName filename = buf->fileName();
-       Buffer const * master = buf->masterBuffer();
-       bool const is_child = master != buf;
-       // The user has already confirmed that the changes, if any, should
-       // be discarded. So we just release the Buffer and don't call closeBuffer();
-       theBufferList().release(buf);
-       buf = loadDocument(filename);
-       docstring const disp_fn = makeDisplayPath(filename.absFilename());
-       docstring str;
-       if (buf) {
-               // re-allocate master if necessary
-               if (is_child && theBufferList().isLoaded(master)
-                   && buf->masterBuffer() != master)
-                       buf->setParent(master);
-               buf->updateLabels();
-               setBuffer(buf);
-               buf->errors("Parse");
-               str = bformat(_("Document %1$s reloaded."), disp_fn);
-       } else {
-               str = bformat(_("Could not reload document %1$s"), disp_fn);
-       }
-       message(str);
+       buf->reload();
 }
 
 
@@ -2443,7 +2430,7 @@ void GuiView::checkExternallyModifiedBuffers()
                        int const ret = Alert::prompt(_("Reload externally changed document?"),
                                                text, 0, 1, _("&Reload"), _("&Cancel"));
                        if (!ret)
-                               reloadBuffer(*bit);
+                               (*bit)->reload();
                }
        }
 }
@@ -2451,6 +2438,8 @@ void GuiView::checkExternallyModifiedBuffers()
 
 void GuiView::dispatchVC(FuncRequest const & cmd)
 {
+       // message for statusbar
+       string msg;
        Buffer * buffer = documentBufferView()
                ? &(documentBufferView()->buffer()) : 0;
 
@@ -2468,8 +2457,9 @@ void GuiView::dispatchVC(FuncRequest const & cmd)
                if (!buffer || !ensureBufferClean(buffer))
                        break;
                if (buffer->lyxvc().inUse() && !buffer->isReadonly()) {
-                       message(from_utf8(buffer->lyxvc().checkIn()));
-                       reloadBuffer();
+                       msg = buffer->lyxvc().checkIn();
+                       if (!msg.empty())
+                               reloadBuffer();
                }
                break;
 
@@ -2477,7 +2467,7 @@ void GuiView::dispatchVC(FuncRequest const & cmd)
                if (!buffer || !ensureBufferClean(buffer))
                        break;
                if (buffer->lyxvc().inUse()) {
-                       message(from_utf8(buffer->lyxvc().checkOut()));
+                       msg = buffer->lyxvc().checkOut();
                        reloadBuffer();
                }
                break;
@@ -2492,7 +2482,7 @@ void GuiView::dispatchVC(FuncRequest const & cmd)
                                frontend::Alert::error(_("Revision control error."),
                                _("Error when setting the locking property."));
                        } else {
-                               message(from_utf8(res));
+                               msg = res;
                                reloadBuffer();
                        }
                }
@@ -2513,8 +2503,7 @@ void GuiView::dispatchVC(FuncRequest const & cmd)
        case LFUN_VC_REPO_UPDATE:
                LASSERT(buffer, return);
                if (ensureBufferClean(buffer)) {
-                       string res = buffer->lyxvc().repoUpdate();
-                       message(from_utf8(res));
+                       msg = buffer->lyxvc().repoUpdate();
                        checkExternallyModifiedBuffers();
                }
                break;
@@ -2563,6 +2552,9 @@ void GuiView::dispatchVC(FuncRequest const & cmd)
        default:
                break;
        }
+
+       if (!msg.empty())
+               message(from_utf8(msg));
 }
 
 
@@ -2652,6 +2644,7 @@ bool GuiView::goToFileRow(string const & argument)
 }
 
 
+#if (QT_VERSION >= 0x040400)
 static docstring exportAndDestroy(Buffer * buffer, string const & format)
 {
        bool const success = buffer->doExport(format, true);
@@ -2670,6 +2663,7 @@ static docstring previewAndDestroy(Buffer * buffer, string const & format)
                ? bformat(_("Successful preview of format: %1$s"), from_utf8(format))
                : bformat(_("Error previewing format: %1$s"), from_utf8(format));
 }
+#endif
 
 
 bool GuiView::dispatch(FuncRequest const & cmd)
@@ -2722,8 +2716,8 @@ bool GuiView::dispatch(FuncRequest const & cmd)
                        if (argument.empty())
                                format = doc_buffer->getDefaultOutputFormat();
 #if EXPORT_in_THREAD && (QT_VERSION >= 0x040400)
-                       ProgressInterface::instance()->clearMessages();
-                       ProgressInterface::instance()->appendMessage("Exporting ...");
+                       d.progress_->clearMessages();
+                       message(_("Exporting ..."));
                        QFuture<docstring> f = QtConcurrent::run(exportAndDestroy,
                                doc_buffer->clone(), format);
                        d.setPreviewFuture(f);
@@ -2739,8 +2733,8 @@ bool GuiView::dispatch(FuncRequest const & cmd)
                        if (argument.empty())
                                format = doc_buffer->getDefaultOutputFormat();
 #if EXPORT_in_THREAD && (QT_VERSION >= 0x040400)
-                       ProgressInterface::instance()->clearMessages();
-                       ProgressInterface::instance()->appendMessage("Previewing ...");
+                       d.progress_->clearMessages();
+                       message(_("Previewing ..."));
                        QFuture<docstring> f = QtConcurrent::run(previewAndDestroy,
                                doc_buffer->clone(), format);
                        d.setPreviewFuture(f);