From: Bo Peng Date: Sun, 21 Oct 2007 17:56:22 +0000 (+0000) Subject: Remove the embedding dialog X-Git-Tag: 1.6.10~7734 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=97c59d6e6d1cf1094a3e383f91c852f6da9439ba;p=features.git Remove the embedding dialog git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21101 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/development/scons/scons_manifest.py b/development/scons/scons_manifest.py index 8825b4fcd0..1fed507802 100644 --- a/development/scons/scons_manifest.py +++ b/development/scons/scons_manifest.py @@ -765,7 +765,6 @@ src_frontends_qt4_header_files = Split(''' GuiDelimiter.h GuiDialog.h GuiDocument.h - GuiEmbeddedFiles.h GuiErrorList.h GuiERT.h GuiExternal.h @@ -854,7 +853,6 @@ src_frontends_qt4_files = Split(''' GuiDelimiter.cpp GuiDialog.cpp GuiDocument.cpp - GuiEmbeddedFiles.cpp GuiErrorList.cpp GuiERT.cpp GuiExternal.cpp @@ -939,7 +937,6 @@ src_frontends_qt4_ui_files = Split(''' CitationUi.ui DelimiterUi.ui DocumentUi.ui - EmbeddedFilesUi.ui ERTUi.ui ErrorListUi.ui ExternalUi.ui diff --git a/src/frontends/qt4/Dialogs.cpp b/src/frontends/qt4/Dialogs.cpp index 4010e47cd5..e7788db147 100644 --- a/src/frontends/qt4/Dialogs.cpp +++ b/src/frontends/qt4/Dialogs.cpp @@ -65,7 +65,6 @@ Dialog * createGuiCharacter(LyXView & lv); Dialog * createGuiCitation(LyXView & lv); Dialog * createGuiDelimiter(LyXView & lv); Dialog * createGuiDocument(LyXView & lv); -Dialog * createGuiEmbeddedFiles(LyXView & lv); Dialog * createGuiErrorList(LyXView & lv); Dialog * createGuiERT(LyXView & lv); Dialog * createGuiExternal(LyXView & lv); @@ -127,8 +126,6 @@ Dialog * Dialogs::build(string const & name) return createGuiCitation(lyxview_); if (name == "document") return createGuiDocument(lyxview_); - if (name == "embedding") - return createGuiEmbeddedFiles(lyxview_); if (name == "errorlist") return createGuiErrorList(lyxview_); if (name == "ert") diff --git a/src/frontends/qt4/GuiEmbeddedFiles.cpp b/src/frontends/qt4/GuiEmbeddedFiles.cpp deleted file mode 100644 index e0f3c6b050..0000000000 --- a/src/frontends/qt4/GuiEmbeddedFiles.cpp +++ /dev/null @@ -1,395 +0,0 @@ -/** - * \file GuiEmbeddedFiles.cpp - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Bo Peng - * - * Full author contact details are available in file CREDITS. - */ - -#include - -#include "GuiEmbeddedFiles.h" - -#include "Buffer.h" - -#include "FuncRequest.h" -#include "gettext.h" -#include "debug.h" -#include "Format.h" -#include "LyXRC.h" - -#include "frontend_helpers.h" -#include "frontends/LyXView.h" - -#include "support/FileFilterList.h" - -using std::string; - - -namespace lyx { -namespace frontend { - -using support::FileFilterList; - -EmbeddedFilesWidget::EmbeddedFilesWidget - (GuiEmbeddedFiles & controller) - : controller_(controller) -{ - setupUi(this); - setWindowTitle("LyX: " + qt_("Embedded Files")); - - // FIXME: Temporary icons. - selectPB->setIcon(QIcon(":/images/tabular-feature_set-all-lines.png")); - unselectPB->setIcon(QIcon(":/images/tabular-feature_unset-all-lines.png")); - addPB->setIcon(QIcon(":/images/file-open.png")); - extractPB->setIcon(QIcon(":/images/depth-decrement.png")); - updatePB->setIcon(QIcon(":/images/depth-increment.png")); - - updateView(); -} - - -void EmbeddedFilesWidget::on_filesLW_itemChanged(QListWidgetItem* item) -{ - EmbeddedFiles & files = controller_.embeddedFiles(); - if (item->checkState() == Qt::Checked) { - if (files[filesLW->row(item)].embedded()) - return; - // this should not be needed after EmbeddedFiles are updated correctly. - files.update(); - controller_.setEmbed(files[filesLW->row(item)], true, files.enabled()); - } else { - if (!files[filesLW->row(item)].embedded()) - return; - // this should not be needed after EmbeddedFiles are updated correctly. - files.update(); - controller_.setEmbed(files[filesLW->row(item)], false, files.enabled()); - } -} - - -void EmbeddedFilesWidget::on_filesLW_itemSelectionChanged() -{ - if (controller_.isReadonly()) - return; - - QList selection = filesLW->selectedItems(); - - if (selection.empty()) { - fullpathLE->setEnabled(false); - selectPB->setEnabled(false); - unselectPB->setEnabled(false); - extractPB->setEnabled(false); - updatePB->setEnabled(false); - return; - } - - fullpathLE->setEnabled(selection.size() == 1); - - // try to find a common embedding status - bool hasSelected = false; - bool hasUnselected = false; - QList::iterator it = selection.begin(); - QList::iterator it_end = selection.end(); - for (; it != it_end; ++it) { - if ((*it)->checkState() == Qt::Checked) - hasSelected = true; - else - hasUnselected = true; - } - selectPB->setEnabled(hasUnselected); - unselectPB->setEnabled(hasSelected); -} - - -void EmbeddedFilesWidget::on_filesLW_itemClicked(QListWidgetItem* item) -{ - EmbeddedFiles & files = controller_.embeddedFiles(); - int idx = filesLW->row(item); - fullpathLE->setText(toqstr(files[idx].absFilename())); - if (files[idx].refCount() > 1) { - // if multiple insets are referred, click again will move - // to another inset - int k = item->data(Qt::UserRole).toInt(); - controller_.goTo(files[idx], k); - k = (k + 1) % files[idx].refCount(); - item->setData(Qt::UserRole, k); - // update label - QString label = toqstr(files[idx].inzipName()) - + QString(" (%1/%2)").arg(k + 1).arg(files[idx].refCount()); - item->setText(label); - } else if (files[idx].refCount() == 1) - controller_.goTo(files[idx], 0); -} - - -void EmbeddedFilesWidget::on_filesLW_itemDoubleClicked(QListWidgetItem* item) -{ - EmbeddedFiles & files = controller_.embeddedFiles(); - controller_.view(files[filesLW->row(item)]); -} - - -void EmbeddedFilesWidget::updateView() -{ - bool readOnly = controller_.isReadonly(); - fullpathLE->setEnabled(!readOnly); - selectPB->setEnabled(!readOnly); - unselectPB->setEnabled(!readOnly); - addPB->setEnabled(!readOnly); - extractPB->setEnabled(!readOnly); - updatePB->setEnabled(!readOnly); - enableCB->setEnabled(!readOnly); - - filesLW->clear(); - EmbeddedFiles const & files = controller_.embeddedFiles(); - enableCB->setCheckState(files.enabled() ? Qt::Checked : Qt::Unchecked); - EmbeddedFiles::EmbeddedFileList::const_iterator it = files.begin(); - EmbeddedFiles::EmbeddedFileList::const_iterator it_end = files.end(); - for (; it != it_end; ++it) { - QString label = toqstr(it->inzipName()); - if (it->refCount() > 1) - label += " (1/" + QString::number(it->refCount()) + ")"; - QListWidgetItem * item = new QListWidgetItem(label); - Qt::ItemFlags flag = Qt::ItemIsSelectable; - if (!readOnly) - flag |= Qt::ItemIsUserCheckable; - if (it->valid()) - flag |= Qt::ItemIsEnabled; - item->setFlags(flag); - if(it->embedded()) - item->setCheckState(Qt::Checked); - else - item->setCheckState(Qt::Unchecked); - // index of the currently used ParConstIterator - item->setData(Qt::UserRole, 0); - filesLW->addItem(item); - } -} - - -void EmbeddedFilesWidget::on_selectPB_clicked() -{ - EmbeddedFiles & files = controller_.embeddedFiles(); - // this should not be needed after EmbeddedFiles are updated correctly. - files.update(); - QList selection = filesLW->selectedItems(); - for (QList::iterator it = selection.begin(); - it != selection.end(); ++it) { - (*it)->setCheckState(Qt::Checked); - controller_.setEmbed(files[filesLW->row(*it)], true, files.enabled()); - } - controller_.dispatchMessage("Embedding files"); -} - - -void EmbeddedFilesWidget::on_unselectPB_clicked() -{ - EmbeddedFiles & files = controller_.embeddedFiles(); - // this should not be needed after EmbeddedFiles are updated correctly. - files.update(); - QList selection = filesLW->selectedItems(); - for (QList::iterator it = selection.begin(); - it != selection.end(); ++it) { - (*it)->setCheckState(Qt::Checked); - controller_.setEmbed(files[filesLW->row(*it)], false, files.enabled()); - } - controller_.dispatchMessage("Stop embedding files"); -} - - -void EmbeddedFilesWidget::on_addPB_clicked() -{ - if (controller_.browseAndAddFile()) - updateView(); -} - - -void EmbeddedFilesWidget::on_extractPB_clicked() -{ - EmbeddedFiles const & files = controller_.embeddedFiles(); - QList selection = filesLW->selectedItems(); - for (QList::iterator it = selection.begin(); - it != selection.end(); ++it) - controller_.extract(files[filesLW->row(*it)]); - // FIXME: collect extraction status and display a dialog - controller_.dispatchMessage("Extract embedded files"); -} - - -void EmbeddedFilesWidget::on_updatePB_clicked() -{ - EmbeddedFiles const & files = controller_.embeddedFiles(); - QList selection = filesLW->selectedItems(); - for (QList::iterator it = selection.begin(); - it != selection.end(); ++it) - controller_.update(files[filesLW->row(*it)]); - // FIXME: collect update status and display a dialog - controller_.dispatchMessage("Update embedded files from external file"); -} - - - -void EmbeddedFilesWidget::on_enableCB_toggled(bool enable) -{ - controller_.setEmbedding(enable); -} - - - -GuiEmbeddedFiles::GuiEmbeddedFiles(GuiViewBase & parent, - Qt::DockWidgetArea area, Qt::WindowFlags flags) - : DockView(parent, "embedded", area, flags) -{ - widget_ = new EmbeddedFilesWidget(*this); - setWidget(widget_); - setWindowTitle(widget_->windowTitle()); -} - - -void GuiEmbeddedFiles::updateView() -{ - widget_->updateView(); -} - - -EmbeddedFiles & GuiEmbeddedFiles::embeddedFiles() -{ - return buffer().embeddedFiles(); -} - - -bool GuiEmbeddedFiles::initialiseParams(string const &) -{ - return true; -} - - -void GuiEmbeddedFiles::updateEmbeddedFiles() -{ - // copy buffer embeddedFiles to a local copy - buffer().embeddedFiles().update(); - buffer().embeddingChanged(); -} - - -void GuiEmbeddedFiles::dispatchMessage(string const & msg) -{ - // FIXME: the right thing to do? QT guys? - // lyx view will only be updated if we do something to the main window. :-) - dispatch(FuncRequest(LFUN_MESSAGE, msg)); -} - - -bool GuiEmbeddedFiles::isReadonly() -{ - return buffer().isReadonly(); -} - - -void GuiEmbeddedFiles::setEmbedding(bool enable) -{ - if (embeddedFiles().enabled() == enable) - return; - embeddedFiles().enable(enable); - buffer().markDirty(); - if (enable) - dispatchMessage("Stop saving in bundled format."); - else - dispatchMessage("Save in bundled format."); -} - - -void GuiEmbeddedFiles::goTo(EmbeddedFile const & item, int idx) -{ - BOOST_ASSERT(idx < item.refCount()); - item.saveBookmark(&buffer(), idx); - lyxview().dispatch(FuncRequest(LFUN_BOOKMARK_GOTO, "0")); -} - - -void GuiEmbeddedFiles::view(EmbeddedFile const & item) -{ - formats.view(buffer(), item, formats.getFormatFromFile(item)); -} - - -void GuiEmbeddedFiles::setEmbed(EmbeddedFile & item, bool embed, bool update) -{ - if (item.embedded() == embed) - return; - item.setEmbed(embed); - if (update) { - if (embed) - item.updateFromExternalFile(&buffer()); - else - item.extract(&buffer()); - item.updateInsets(&buffer()); - // FIXME: unless we record the type of file item, we will - // need to update all possible dialogs (bibtex etc). - updateDialog("graphics"); - } - if (embed) - dispatchMessage("Embed file " + item.outputFilename(buffer().filePath())); - else - dispatchMessage("Stop embedding file " + item.outputFilename(buffer().filePath())); - buffer().markDirty(); -} - - -bool GuiEmbeddedFiles::browseAndAddFile() -{ - std::pair dir1(_("Documents|#o#O"), - from_utf8(lyxrc.document_path)); - FileFilterList const filter(_("All file (*.*)")); - docstring const file = browseRelFile(docstring(), from_utf8(bufferFilepath()), - _("Select a file to embed"), - filter, false, dir1); - if (!file.empty()) { - EmbeddedFile & ef = embeddedFiles().registerFile(to_utf8(file), true); - if (embeddedFiles().enabled()) - ef.updateFromExternalFile(&buffer()); - buffer().markDirty(); - dispatchMessage("Add an embedded file" + to_utf8(file)); - return true; - } - return false; -} - - -bool GuiEmbeddedFiles::extract(EmbeddedFile const & item) -{ - if (item.embedded()) - return item.extract(&buffer()); - else - return false; -} - - -bool GuiEmbeddedFiles::update(EmbeddedFile const & item) -{ - if (item.embedded()) - return item.updateFromExternalFile(&buffer()); - else - return false; -} - - -Dialog * createGuiEmbeddedFiles(LyXView & lv) -{ - GuiViewBase & guiview = static_cast(lv); -#ifdef Q_WS_MACX - // On Mac show as a drawer at the right - return new GuiEmbeddedFiles(guiview, Qt::RightDockWidgetArea, Qt::Drawer); -#else - return new GuiEmbeddedFiles(guiview, Qt::RightDockWidgetArea); -#endif -} - - -} // namespace frontend -} // namespace lyx - -#include "GuiEmbeddedFiles_moc.cpp" diff --git a/src/frontends/qt4/GuiEmbeddedFiles.h b/src/frontends/qt4/GuiEmbeddedFiles.h deleted file mode 100644 index ba92eaa144..0000000000 --- a/src/frontends/qt4/GuiEmbeddedFiles.h +++ /dev/null @@ -1,115 +0,0 @@ -// -*- C++ -*- -/** - * \file GuiEmbeddedFiles.h - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Bo Peng - * - * Full author contact details are available in file CREDITS. - */ - -#ifndef GUIEMBEDDEDFILES_H -#define GUIEMBEDDEDFILES_H - -#include "GuiDialog.h" -#include "DockView.h" -#include "EmbeddedFiles.h" -#include "ui_EmbeddedFilesUi.h" - -namespace lyx { -namespace frontend { - -class EmbeddedFilesWidget; - -class GuiEmbeddedFiles : public DockView -{ - Q_OBJECT - -public: - /// - GuiEmbeddedFiles( - GuiViewBase & parent, ///< the main window where to dock. - Qt::DockWidgetArea area = Qt::LeftDockWidgetArea, ///< Position of the dock (and also drawer) - Qt::WindowFlags flags = 0); - /// - void updateView(); - - /// - EmbeddedFiles & embeddedFiles(); - /// - bool initialiseParams(std::string const &); - /// obtain embedded files from buffer - void updateEmbeddedFiles(); - /// - void clearParams() {} - /// - bool isBufferDependent() const { return true; } - /// - bool canApply() const { return true; } - /// - bool canApplyToReadOnly() const { return false; } - /// - void dispatchMessage(std::string const & msg); - /// - void dispatchParams() {} - /// - bool isReadonly(); - /// - void setEmbedding(bool enable); - /// - void goTo(EmbeddedFile const & item, int idx); - /// - void view(EmbeddedFile const & item); - /// - void setEmbed(EmbeddedFile & item, bool embed, bool update); - /// - bool browseAndAddFile(); - /// - bool extract(EmbeddedFile const & item); - /// - bool update(EmbeddedFile const & item); - -protected: - /// - EmbeddedFilesWidget * widget_; - /// - std::string message_; -}; - - -class EmbeddedFilesWidget : public QWidget, public Ui::GuiEmbeddedFilesUi -{ - Q_OBJECT - -public: - EmbeddedFilesWidget(GuiEmbeddedFiles &); - std::string name() const { return "embedding"; } - -public Q_SLOTS: - /// - void on_filesLW_itemChanged(QListWidgetItem* item); - void on_filesLW_itemSelectionChanged(); - void on_filesLW_itemClicked(QListWidgetItem* item); - void on_filesLW_itemDoubleClicked(QListWidgetItem* item); - /// - void updateView(); - /// - void on_enableCB_toggled(bool enable); - /// - void on_selectPB_clicked(); - void on_unselectPB_clicked(); - void on_addPB_clicked(); - void on_extractPB_clicked(); - void on_updatePB_clicked(); - -private: - GuiEmbeddedFiles & controller_; - void set_embedding_status(bool embed); -}; - - -} // namespace frontend -} // namespace lyx - -#endif // QEMBEDDEDFILES_H diff --git a/src/frontends/qt4/Makefile.am b/src/frontends/qt4/Makefile.am index 9fa3196b55..5b0981b9a2 100644 --- a/src/frontends/qt4/Makefile.am +++ b/src/frontends/qt4/Makefile.am @@ -78,7 +78,6 @@ SOURCEFILES = \ GuiDelimiter.cpp \ GuiDialog.cpp \ GuiDocument.cpp \ - GuiEmbeddedFiles.cpp \ GuiErrorList.cpp \ GuiERT.cpp \ GuiExternal.cpp \ @@ -170,7 +169,6 @@ MOCHEADER = \ GuiDelimiter.h \ GuiDialog.h \ GuiDocument.h \ - GuiEmbeddedFiles.h \ GuiErrorList.h \ GuiERT.h \ GuiExternal.h \ @@ -238,7 +236,6 @@ UIFILES = \ CitationUi.ui \ DelimiterUi.ui \ DocumentUi.ui \ - EmbeddedFilesUi.ui \ ErrorListUi.ui \ ERTUi.ui \ ExternalUi.ui \ diff --git a/src/frontends/qt4/ui/EmbeddedFilesUi.ui b/src/frontends/qt4/ui/EmbeddedFilesUi.ui deleted file mode 100644 index 4eb5e0d84e..0000000000 --- a/src/frontends/qt4/ui/EmbeddedFilesUi.ui +++ /dev/null @@ -1,174 +0,0 @@ - - GuiEmbeddedFilesUi - - - Qt::NonModal - - - - 0 - 0 - 199 - 390 - - - - - - - - 9 - - - 6 - - - - - Save file in bundled format - - - - - - - Embedding status - - - - - - - List of embedded files - - - QAbstractItemView::ExtendedSelection - - - -1 - - - - - - - External FIle Name: - - - - - - - - - - 0 - - - 6 - - - - - Embed selected files - - - ... - - - ../../../../lib/images/tabular-feature_set-all-lines.png - - - - 20 - 20 - - - - - - - - Do not embed selected files - - - ... - - - ../../../../lib/images/tabular-feature_set-all-lines.png - - - - 20 - 20 - - - - - - - - Add embedded file - - - ... - - - ../../../../lib/images/file-open.png - - - - 20 - 20 - - - - - - - - Extract selected file, without changing embedding status. - - - ... - - - ../../../../lib/images/depth-increment.png - - - - 20 - 20 - - - - - - - - Update selected file with external files - - - ... - - - ../../../../lib/images/depth-decrement.png - - - - 20 - 20 - - - - - - - - - - qt_helpers.h - - - -