]> git.lyx.org Git - features.git/commitdiff
Embedding: handle readOnly files correctly.
authorBo Peng <bpeng@lyx.org>
Thu, 13 Sep 2007 15:09:56 +0000 (15:09 +0000)
committerBo Peng <bpeng@lyx.org>
Thu, 13 Sep 2007 15:09:56 +0000 (15:09 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20262 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/controllers/ControlEmbeddedFiles.cpp
src/frontends/controllers/ControlEmbeddedFiles.h
src/frontends/qt4/GuiEmbeddedFiles.cpp

index 4cc77c62cc23fd43e11e8bef50c31c6664ca2794..ac61878bdbc09e5d075fdbeed5b7bea067709907 100644 (file)
@@ -67,6 +67,12 @@ void ControlEmbeddedFiles::dispatchMessage(string const & msg)
 }
 
 
+bool ControlEmbeddedFiles::isReadonly()
+{
+       return buffer().isReadonly();
+}
+
+
 void ControlEmbeddedFiles::setEmbedding(bool enable)
 {
        if (embeddedFiles().enabled() == enable)
index d60867a223fcd5228d8c13f15d6b478b7e924cf3..fd0ab632cc3a9ec423aca2c25d1afc7fa7c2f491 100644 (file)
@@ -38,12 +38,14 @@ public:
        ///
        bool canApply() const { return true; }
        ///
-       virtual bool canApplyToReadOnly() const { return true; }
+       virtual 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);
index 28ff324780c1523d7b7cd2ef007e7b4276c51731..15b0433bef0ca603907bab381f48fa9ef9c081a9 100644 (file)
@@ -48,6 +48,9 @@ void GuiEmbeddedFilesDialog::on_filesLW_itemChanged(QListWidgetItem* item)
 
 void GuiEmbeddedFilesDialog::on_filesLW_itemSelectionChanged()
 {
+       if (controller_.isReadonly())
+               return;
+
        QList<QListWidgetItem *> selection = filesLW->selectedItems();
 
        if (selection.empty()) {
@@ -107,6 +110,15 @@ void GuiEmbeddedFilesDialog::on_filesLW_itemDoubleClicked(QListWidgetItem* item)
 
 void GuiEmbeddedFilesDialog::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);
@@ -117,7 +129,9 @@ void GuiEmbeddedFilesDialog::updateView()
                if (it->refCount() > 1)
                        label += " (1/" + QString::number(it->refCount()) + ")";
                QListWidgetItem * item = new QListWidgetItem(label);
-               Qt::ItemFlags flag = Qt::ItemIsUserCheckable | Qt::ItemIsSelectable;
+               Qt::ItemFlags flag = Qt::ItemIsSelectable;
+               if (!readOnly)
+                       flag |= Qt::ItemIsUserCheckable;
                if (it->valid())
                        flag |= Qt::ItemIsEnabled;
                item->setFlags(flag);