From 7049251ce982362ace94267d62e9e396e4b12789 Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 27 May 2015 14:25:06 +0200 Subject: [PATCH] - add optimize code action menuitem --- mix/CodeModel.cpp | 8 +++++++- mix/CodeModel.h | 3 +++ mix/qml/Application.qml | 11 +++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/mix/CodeModel.cpp b/mix/CodeModel.cpp index de1bb8647..1dc47185f 100644 --- a/mix/CodeModel.cpp +++ b/mix/CodeModel.cpp @@ -309,7 +309,7 @@ void CodeModel::runCompilationJob(int _jobId) sourceNames.push_back(c.first.toStdString()); } } - cs.compile(false); + cs.compile(m_optimizeCode); gasEstimation(cs); collectContracts(cs, sourceNames); } @@ -599,6 +599,12 @@ QString CodeModel::resolveFunctionName(dev::SourceLocation const& _location) return QString(); } +void CodeModel::setOptimizeCode(bool _value) +{ + m_optimizeCode = _value; + emit scheduleCompilationJob(++m_backgroundJobId); +} + void GasMapWrapper::push(QString _source, int _start, int _end, QString _value, bool _isInfinite, QString _payload) { GasMap* gas = new GasMap(_start, _end, _value, _isInfinite, _payload, this); diff --git a/mix/CodeModel.h b/mix/CodeModel.h index 5982982b3..a51e85cec 100644 --- a/mix/CodeModel.h +++ b/mix/CodeModel.h @@ -179,6 +179,7 @@ public: Q_PROPERTY(QVariantMap contracts READ contracts NOTIFY codeChanged) Q_PROPERTY(bool compiling READ isCompiling NOTIFY stateChanged) Q_PROPERTY(bool hasContract READ hasContract NOTIFY codeChanged) + Q_PROPERTY(bool optimizeCode MEMBER m_optimizeCode WRITE setOptimizeCode) /// @returns latest compilation results for contracts QVariantMap contracts() const; @@ -211,6 +212,7 @@ public: void gasEstimation(solidity::CompilerStack const& _cs); /// Gas cost by doc id Q_INVOKABLE QVariantList gasCostByDocumentId(QString const& _documentId) const; + Q_INVOKABLE void setOptimizeCode(bool _value); signals: /// Emited on compilation state change @@ -255,6 +257,7 @@ private: std::map m_compiledContracts; //by name dev::Mutex x_pendingContracts; std::map m_pendingContracts; //name to source + bool m_optimizeCode; friend class BackgroundWorker; }; diff --git a/mix/qml/Application.qml b/mix/qml/Application.qml index 161f7141a..bb0f215fe 100644 --- a/mix/qml/Application.qml +++ b/mix/qml/Application.qml @@ -119,6 +119,7 @@ ApplicationWindow { Menu { title: qsTr("Tools") MenuItem { action: gasEstimationAction } + MenuItem { action: optimizeCodeAction } } Menu { title: qsTr("Windows") @@ -424,4 +425,14 @@ ApplicationWindow { mainContent.codeEditor.displayGasEstimation(checked); } } + + Action { + id: optimizeCodeAction + text: qsTr("Optimize contract code") + shortcut: "Ctrl+Shift+O" + checkable: true + checked: true + Component.onCompleted: codeModel.setOptimizeCode(true); + onTriggered: codeModel.setOptimizeCode(checked); + } }