From d3dd264c373254827629b2d26c78ac7515265307 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 19 Nov 2014 16:59:25 +0100 Subject: [PATCH] Resource editor: Fix paste. Add a "plainText" property to the resource editor's document similar to the diff editor (see f268d0f8e14dd10e05180b4bc195fff036b5ba33 ). Task-number: QTCREATORBUG-13458 Change-Id: Icd11134432f796b37090a16bbaa13f075fa8c2bd Reviewed-by: Daniel Teske --- .../resourceeditor/qrceditor/qrceditor.cpp | 5 ++++ .../resourceeditor/qrceditor/qrceditor.h | 1 + .../resourceeditor/qrceditor/resourcefile.cpp | 23 ++++++++++--------- .../resourceeditor/qrceditor/resourcefile_p.h | 3 +++ .../resourceeditor/qrceditor/resourceview.cpp | 5 ++++ .../resourceeditor/qrceditor/resourceview.h | 1 + .../resourceeditor/resourceeditorw.cpp | 5 ++++ src/plugins/resourceeditor/resourceeditorw.h | 2 ++ 8 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/plugins/resourceeditor/qrceditor/qrceditor.cpp b/src/plugins/resourceeditor/qrceditor/qrceditor.cpp index 846f0136c60..4afdf830cbb 100644 --- a/src/plugins/resourceeditor/qrceditor/qrceditor.cpp +++ b/src/plugins/resourceeditor/qrceditor/qrceditor.cpp @@ -136,6 +136,11 @@ bool QrcEditor::save() return m_treeview->save(); } +QString QrcEditor::contents() const +{ + return m_treeview->contents(); +} + bool QrcEditor::isDirty() { return m_treeview->isDirty(); diff --git a/src/plugins/resourceeditor/qrceditor/qrceditor.h b/src/plugins/resourceeditor/qrceditor/qrceditor.h index 7a24d9653cb..fbcafeb7e68 100644 --- a/src/plugins/resourceeditor/qrceditor/qrceditor.h +++ b/src/plugins/resourceeditor/qrceditor/qrceditor.h @@ -49,6 +49,7 @@ public: bool load(const QString &fileName); bool save(); + QString contents() const; QTreeView *treeView() { return m_treeview; } QString errorMessage() const { return m_treeview->errorMessage(); } diff --git a/src/plugins/resourceeditor/qrceditor/resourcefile.cpp b/src/plugins/resourceeditor/qrceditor/resourcefile.cpp index e4a13ca8690..ff57423cb5d 100644 --- a/src/plugins/resourceeditor/qrceditor/resourcefile.cpp +++ b/src/plugins/resourceeditor/qrceditor/resourcefile.cpp @@ -183,15 +183,8 @@ bool ResourceFile::load() return true; } -bool ResourceFile::save() +QString ResourceFile::contents() const { - m_error_message.clear(); - - if (m_file_name.isEmpty()) { - m_error_message = tr("The file name is empty."); - return false; - } - QDomDocument doc; QDomElement root = doc.createElement(QLatin1String("RCC")); doc.appendChild(root); @@ -222,11 +215,19 @@ bool ResourceFile::save() felt.setAttribute(QLatin1String("threshold"), file.threshold); } } + return doc.toString(4); +} - QString data = doc.toString(4); - if (!m_textFileFormat.writeFile(m_file_name, data, &m_error_message)) +bool ResourceFile::save() +{ + m_error_message.clear(); + + if (m_file_name.isEmpty()) { + m_error_message = tr("The file name is empty."); return false; - return true; + } + + return m_textFileFormat.writeFile(m_file_name, contents(), &m_error_message); } void ResourceFile::refresh() diff --git a/src/plugins/resourceeditor/qrceditor/resourcefile_p.h b/src/plugins/resourceeditor/qrceditor/resourcefile_p.h index b60d5ca628a..598f8058445 100644 --- a/src/plugins/resourceeditor/qrceditor/resourcefile_p.h +++ b/src/plugins/resourceeditor/qrceditor/resourcefile_p.h @@ -139,6 +139,7 @@ public: QString fileName() const { return m_file_name; } bool load(); bool save(); + QString contents() const; QString errorMessage() const { return m_error_message; } void refresh(); @@ -252,6 +253,8 @@ private: public: virtual bool reload(); virtual bool save(); + QString contents() const { return m_resource_file.contents(); } + // QString errorMessage() const { return m_resource_file.errorMessage(); } bool dirty() const { return m_dirty; } diff --git a/src/plugins/resourceeditor/qrceditor/resourceview.cpp b/src/plugins/resourceeditor/qrceditor/resourceview.cpp index 4a7d7c905c5..2b24dfa578a 100644 --- a/src/plugins/resourceeditor/qrceditor/resourceview.cpp +++ b/src/plugins/resourceeditor/qrceditor/resourceview.cpp @@ -381,6 +381,11 @@ bool ResourceView::save() return m_qrcModel->save(); } +QString ResourceView::contents() const +{ + return m_qrcModel->contents(); +} + QString ResourceView::currentAlias() const { const QModelIndex current = currentIndex(); diff --git a/src/plugins/resourceeditor/qrceditor/resourceview.h b/src/plugins/resourceeditor/qrceditor/resourceview.h index 840897e7a0c..96d2dadf9ad 100644 --- a/src/plugins/resourceeditor/qrceditor/resourceview.h +++ b/src/plugins/resourceeditor/qrceditor/resourceview.h @@ -85,6 +85,7 @@ public: bool load(const QString &fileName); bool save(); + QString contents() const; QString errorMessage() const { return m_qrcFile.errorMessage(); } QString fileName() const; void setFileName(const QString &fileName); diff --git a/src/plugins/resourceeditor/resourceeditorw.cpp b/src/plugins/resourceeditor/resourceeditorw.cpp index 0b0dbd4e561..dc9fae45b10 100644 --- a/src/plugins/resourceeditor/resourceeditorw.cpp +++ b/src/plugins/resourceeditor/resourceeditorw.cpp @@ -187,6 +187,11 @@ bool ResourceEditorDocument::save(QString *errorString, const QString &name, boo return true; } +QString ResourceEditorDocument::plainText() const +{ + return m_parent->m_resourceEditor->contents(); +} + bool ResourceEditorDocument::setContents(const QByteArray &contents) { Utils::TempFileSaver saver; diff --git a/src/plugins/resourceeditor/resourceeditorw.h b/src/plugins/resourceeditor/resourceeditorw.h index 2ddfba91a9e..908a9365061 100644 --- a/src/plugins/resourceeditor/resourceeditorw.h +++ b/src/plugins/resourceeditor/resourceeditorw.h @@ -50,12 +50,14 @@ class ResourceEditorDocument : public Core::IDocument { Q_OBJECT + Q_PROPERTY(QString plainText READ plainText STORED false) // For access by code pasters public: ResourceEditorDocument(ResourceEditorW *parent = 0); //IDocument bool save(QString *errorString, const QString &fileName, bool autoSave); + QString plainText() const; bool setContents(const QByteArray &contents); bool shouldAutoSave() const; bool isModified() const;