X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiCompare.cpp;h=4ea7f3578440668e2a052a964f5b50d553db86f9;hb=b7f6b979d0f889f08e735f35378bb20ba3788b4b;hp=db56ab24a8ccfd03d15bf6dca14bd2d75bd62328;hpb=bdf69de11336a75bf61d166fa8ba7e46c68b8ab4;p=lyx.git diff --git a/src/frontends/qt4/GuiCompare.cpp b/src/frontends/qt4/GuiCompare.cpp index db56ab24a8..4ea7f35784 100644 --- a/src/frontends/qt4/GuiCompare.cpp +++ b/src/frontends/qt4/GuiCompare.cpp @@ -62,9 +62,9 @@ GuiCompare::GuiCompare(GuiView & lv) this, SLOT(changeAdaptor())); newSettingsRB->setChecked(true); + trackingCB->setChecked(true); - progressBar->setValue(0); - progressBar->setEnabled(false); + closePB->setCursor(Qt::ArrowCursor); bc().setPolicy(ButtonPolicy::OkApplyCancelPolicy); bc().setOK(okPB); @@ -78,7 +78,7 @@ GuiCompare::~GuiCompare() void GuiCompare::closeEvent(QCloseEvent *) { - slotCancel(); + slotCancel(); } @@ -106,6 +106,7 @@ void GuiCompare::updateContents() newFileCB->clear(); oldFileCB->clear(); progressBar->setValue(0); + statusBar->clearMessage(); BufferList::iterator it = theBufferList().begin(); BufferList::iterator const end = theBufferList().end(); for (; it != end; ++it) { @@ -113,10 +114,10 @@ void GuiCompare::updateContents() newFileCB->addItem(filename); oldFileCB->addItem(filename); } - if (lyxview().documentBufferView()) - newFileCB->setEditText(toqstr(buffer().absFileName())); - else + if (!restore_filename1.isEmpty()) newFileCB->setEditText(restore_filename1); + else if (lyxview().documentBufferView()) + newFileCB->setEditText(toqstr(buffer().absFileName())); if (!restore_filename2.isEmpty()) oldFileCB->setEditText(restore_filename2); @@ -153,24 +154,28 @@ QString GuiCompare::browse(QString const & in_name) const QString const title = qt_("Select document"); QStringList const & filters = fileFilters(qt_("LyX Documents (*.lyx)")); - + QString filename; if (lyxview().documentBufferView()) { - QString path = bufferFilepath(); - filename = browseRelFile(in_name, path, title, filters, false, + QString path = bufferFilePath(); + filename = browseRelToParent(in_name, path, title, filters, false, qt_("Documents|#o#O"), toqstr(lyxrc.document_path)); } else { QString path = toqstr(lyxrc.document_path); - QString rel_filename = browseRelFile(in_name, path, title, filters, false, + QString rel_filename = browseRelToParent(in_name, path, title, filters, false, qt_("Documents|#o#O"), toqstr(lyxrc.document_path)); filename = makeAbsPath(rel_filename, path); } - return filename; + return filename; } -void GuiCompare::enableControls(bool enable) const +void GuiCompare::enableControls(bool enable) { + // Set the hourglass cursor for the dialog, but + // never for the cancel button. + setCursor(enable ? Qt::ArrowCursor : Qt::WaitCursor); + newFileLA->setEnabled(enable); newFilePB->setEnabled(enable); newFileCB->setEnabled(enable); @@ -191,7 +196,6 @@ void GuiCompare::enableControls(bool enable) const void GuiCompare::error() { Alert::error(_("Error"), _("Error while comparing documents.")); - window_title_ = windowTitle(); finished(true); } @@ -203,21 +207,26 @@ void GuiCompare::finished(bool aborted) delete compare_; compare_ = 0; } - + if (aborted) { if (dest_buffer_) { dest_buffer_->markClean(); theBufferList().release(dest_buffer_); } - setWindowTitle(window_title_); progressBar->setValue(0); + statusBar->showMessage(qt_("Aborted"), 5000); } else { hideView(); bc().ok(); if (dest_buffer_) { dispatch(FuncRequest(LFUN_BUFFER_SWITCH, dest_buffer_->absFileName())); + if (trackingCB->isChecked()) { + dispatch(FuncRequest(LFUN_CHANGES_OUTPUT)); + dispatch(FuncRequest(LFUN_CHANGES_TRACK)); + } } + statusBar->showMessage(qt_("Finished"), 5000); } } @@ -232,7 +241,13 @@ void GuiCompare::progressMax(int max) const { progressBar->setMaximum(max); } - + + +void GuiCompare::setStatusMessage(QString msg) +{ + statusBar->showMessage(msg); +} + void GuiCompare::slotOK() { @@ -245,12 +260,12 @@ void GuiCompare::slotOK() void GuiCompare::slotCancel() { if (compare_ && compare_->isRunning()) { - window_title_ = windowTitle(); - setWindowTitle(window_title_ + " " + qt_("(cancelling)")); + statusBar->showMessage(qt_("Aborting process...")); compare_->abort(); } else { GuiDialog::slotClose(); progressBar->setValue(0); + statusBar->clearMessage(); } } @@ -261,7 +276,7 @@ Buffer const * GuiCompare::bufferFromFileName(string const & file) const if (FileName::isAbsolute(file)) fname.set(file); else if (lyxview().documentBufferView()) - fname = support::makeAbsPath(file, fromqstr(bufferFilepath())); + fname = support::makeAbsPath(file, fromqstr(bufferFilePath())); if (fname.empty() || (!fname.exists() && !theBufferList().getBuffer(fname))) { @@ -286,7 +301,7 @@ int GuiCompare::run() if (!new_buffer_ || !old_buffer_ || !dest_buffer_) return 0; - dest_buffer_->changed(); + dest_buffer_->changed(true); dest_buffer_->markDirty(); // get the options from the dialog @@ -299,10 +314,28 @@ int GuiCompare::run() connect(compare_, SIGNAL(finished(bool)), this, SLOT(finished(bool))); connect(compare_, SIGNAL(progress(int)), this, SLOT(progress(int))); connect(compare_, SIGNAL(progressMax(int)), this, SLOT(progressMax(int))); + connect(compare_, SIGNAL(statusMessage(QString)), + this, SLOT(setStatusMessage(QString))); compare_->start(QThread::LowPriority); return 1; } +bool GuiCompare::initialiseParams(std::string const &par) +{ + //just for the sake of parsing arguments + FuncRequest cmd(LFUN_UNKNOWN_ACTION, par); + if (cmd.getArg(0) == "run") { + oldFileCB->setEditText(toqstr(cmd.getArg(1))); + newFileCB->setEditText(toqstr(cmd.getArg(2))); + slotOK(); + } + + progressBar->setValue(0); + progressBar->setEnabled(false); + progressBar->setMaximum(1); + + return true; +} Dialog * createGuiCompare(GuiView & lv) { return new GuiCompare(lv); }