]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiDocument.cpp
Fix bug 4410 (http://bugzilla.lyx.org/show_bug.cgi?id=4410).
[lyx.git] / src / frontends / qt4 / GuiDocument.cpp
index 8ed57911933c87db545e7cb9d4b170b2cc65613c..108ba779fa3165bcb4174de28f8e75cfef8cfe45 100644 (file)
 
 #include "GuiDocument.h"
 
+#include "GuiView.h"
+
 #include "BranchList.h"
 #include "buffer_funcs.h"
 #include "Buffer.h"
 #include "BufferParams.h"
 #include "BufferView.h"
+#include "Color.h"
+#include "EmbeddedFiles.h"
 #include "Encoding.h"
 #include "FloatPlacement.h"
-#include "frontend_helpers.h"
 #include "FuncRequest.h"
-#include "gettext.h"
+#include "support/gettext.h"
 #include "GuiBranches.h"
 #include "Language.h"
 #include "LaTeXFeatures.h"
 #include "TextClassList.h"
 #include "Validator.h"
 
-
-// FIXME: those two headers are needed because of the
-// WorkArea::redraw() call below.
-#include "frontends/LyXView.h"
-#include "frontends/WorkArea.h"
-
 #include "insets/InsetListingsParams.h"
 
+#include "support/FileName.h"
+#include "support/filetools.h"
 #include "support/lstrings.h"
 
 #include <boost/bind.hpp>
@@ -217,7 +216,7 @@ void PreambleModule::closeEvent(QCloseEvent * e)
 
 
 
-GuiDocument::GuiDocument(LyXView & lv)
+GuiDocument::GuiDocument(GuiView & lv)
        : GuiDialog(lv, "document")
 {
        setupUi(this);
@@ -625,9 +624,6 @@ GuiDocument::GuiDocument(LyXView & lv)
 
        // embedded files
        embeddedFilesModule = new UiWidget<Ui::EmbeddedFilesUi>;
-       connect(embeddedFilesModule, SIGNAL(changed()),
-               this, SLOT(change_adaptor()));
-       
        connect(embeddedFilesModule->bundleCB, SIGNAL(toggled(bool)),
                this, SLOT(change_adaptor()));
        connect(embeddedFilesModule->addPB, SIGNAL(clicked()),
@@ -974,6 +970,31 @@ void GuiDocument::updateModuleInfo()
 }
 
 
+void GuiDocument::updateEmbeddedFileList()
+{
+       embeddedFilesModule->filesLW->clear();
+       // add current embedded files
+       EmbeddedFiles & files = buffer().embeddedFiles();
+       files.update();
+       EmbeddedFiles::EmbeddedFileList::iterator fit = files.begin();
+       EmbeddedFiles::EmbeddedFileList::iterator fit_end = files.end();
+       for (; fit != fit_end; ++fit) {
+               QString label = toqstr(fit->relFilename(buffer().filePath()));
+               if (fit->refCount() > 1)
+                       label += " (" + QString::number(fit->refCount()) + ")";
+               QListWidgetItem * item = new QListWidgetItem(label);
+               item->setFlags(item->flags() | Qt::ItemIsSelectable
+                       | Qt::ItemIsUserCheckable);
+               if(fit->embedded())
+                       item->setCheckState(Qt::Checked);
+               else
+                       item->setCheckState(Qt::Unchecked);
+               // index of the currently used ParConstIterator
+               embeddedFilesModule->filesLW->addItem(item);
+       }
+}
+
+
 void GuiDocument::updateNumbering()
 {
        TextClass const & tclass = bp_.getTextClass();
@@ -1221,9 +1242,9 @@ void GuiDocument::apply(BufferParams & params)
                pageLayoutModule->paperheightUnitCO);
 
        if (pageLayoutModule->facingPagesCB->isChecked())
-               params.sides = TextClass::TwoSides;
+               params.sides = TwoSides;
        else
-               params.sides = TextClass::OneSide;
+               params.sides = OneSide;
 
        if (pageLayoutModule->landscapeRB->isChecked())
                params.orientation = ORIENTATION_LANDSCAPE;
@@ -1274,6 +1295,13 @@ void GuiDocument::apply(BufferParams & params)
 
        // Embedded files
        // FIXME
+
+       // GuiDocument is special because some change in there might affect other
+       // dialogs. It is then better to make sure that all dialogs are in sync
+       // with current document settings.
+       lyxview().updateBufferDependent(true);
+       lyxview().updateLayoutList();
+       lyxview().updateToolbars();
 }
 
 
@@ -1518,7 +1546,7 @@ void GuiDocument::updateParams(BufferParams const & params)
        pageLayoutModule->portraitRB->setChecked(!landscape);
 
        pageLayoutModule->facingPagesCB->setChecked(
-               params.sides == TextClass::TwoSides);
+               params.sides == TwoSides);
 
 
        lengthToWidgets(pageLayoutModule->paperwidthLE,
@@ -1580,6 +1608,9 @@ void GuiDocument::updateParams(BufferParams const & params)
 
        pdfSupportModule->optionsLE->setText(
                toqstr(pdf.quoted_options));
+
+       // embedded files
+       updateEmbeddedFileList();
 }
 
 
@@ -1821,7 +1852,7 @@ void GuiDocument::loadModuleNames ()
 }
 
 
-Dialog * createGuiDocument(LyXView & lv) { return new GuiDocument(lv); }
+Dialog * createGuiDocument(GuiView & lv) { return new GuiDocument(lv); }
 
 
 } // namespace frontend