Browse Source

Merge branch 'develop' of github.com:ethereum/cpp-ethereum into develop

cl-refactor
Gav Wood 10 years ago
parent
commit
472e941647
  1. 4
      libethereum/State.cpp
  2. 5
      libtestutils/CMakeLists.txt
  3. 2
      mix/qml/CodeEditorView.qml
  4. 5
      mix/qml/ProjectModel.qml
  5. 2
      mix/qml/TransactionLog.qml
  6. 57
      mix/qml/WebCodeEditor.qml
  7. 15
      mix/qml/html/cm/errorannotation.js
  8. 79
      mix/qml/js/ProjectModel.js

4
libethereum/State.cpp

@ -421,9 +421,9 @@ TransactionReceipts State::sync(BlockChain const& _bc, TransactionQueue& _tq, Ga
{ {
try try
{ {
Transaction t(i.second, CheckSignature::Sender); if (Transaction(i.second, CheckSignature::Range).gasPrice() >= _gp.ask(*this))
if (t.gasPrice() >= _gp.ask(*this))
{ {
Transaction t(i.second, CheckSignature::Sender);
// don't have it yet! Execute it now. // don't have it yet! Execute it now.
uncommitToMine(); uncommitToMine();
// boost::timer t; // boost::timer t;

5
libtestutils/CMakeLists.txt

@ -18,6 +18,11 @@ set(EXECUTABLE testutils)
file(GLOB HEADERS "*.h") file(GLOB HEADERS "*.h")
if (NOT JSONRPC)
list(REMOVE_ITEM SRC_LIST "./FixedWebThreeServer.cpp")
list(REMOVE_ITEM HEADERS "./FixedWebThreeServer.h")
endif()
if (ETH_STATIC) if (ETH_STATIC)
add_library(${EXECUTABLE} STATIC ${SRC_LIST} ${HEADERS}) add_library(${EXECUTABLE} STATIC ${SRC_LIST} ${HEADERS})
else() else()

2
mix/qml/CodeEditorView.qml

@ -139,7 +139,7 @@ Item {
} }
onProjectSaved: { onProjectSaved: {
if (projectModel.appIsClosing) if (projectModel.appIsClosing || projectModel.projectIsClosing)
return; return;
for (var i = 0; i < editorListModel.count; i++) for (var i = 0; i < editorListModel.count; i++)
{ {

5
mix/qml/ProjectModel.qml

@ -35,6 +35,7 @@ Item {
readonly property string projectFileName: ".mix" readonly property string projectFileName: ".mix"
property bool appIsClosing: false property bool appIsClosing: false
property bool projectIsClosing: false
property string projectPath: "" property string projectPath: ""
property string projectTitle: "" property string projectTitle: ""
property string currentDocumentId: "" property string currentDocumentId: ""
@ -121,13 +122,17 @@ Item {
icon: StandardIcon.Question icon: StandardIcon.Question
property var callBack; property var callBack;
onYes: { onYes: {
projectIsClosing = true;
projectModel.saveAll(); projectModel.saveAll();
unsavedFiles = [];
ProjectModelCode.doCloseProject(); ProjectModelCode.doCloseProject();
if (callBack) if (callBack)
callBack(); callBack();
} }
onRejected: {} onRejected: {}
onNo: { onNo: {
projectIsClosing = true;
unsavedFiles = [];
ProjectModelCode.doCloseProject(); ProjectModelCode.doCloseProject();
if (callBack) if (callBack)
callBack(); callBack();

2
mix/qml/TransactionLog.qml

@ -44,7 +44,7 @@ Item {
target: projectModel target: projectModel
onProjectSaved: onProjectSaved:
{ {
if (projectModel.appIsClosing) if (projectModel.appIsClosing || projectModel.projectIsClosing)
return; return;
if (compilationStatus.compilationComplete && codeModel.hasContract && !clientModel.running) if (compilationStatus.compilationComplete && codeModel.hasContract && !clientModel.running)
projectModel.stateListModel.debugDefaultState(); projectModel.stateListModel.debugDefaultState();

57
mix/qml/WebCodeEditor.qml

@ -18,7 +18,7 @@ Item {
function setText(text, mode) { function setText(text, mode) {
currentText = text; currentText = text;
currentMode = mode; currentMode = mode;
if (initialized) { if (initialized && editorBrowser) {
editorBrowser.runJavaScript("setTextBase64(\"" + Qt.btoa(text) + "\")"); editorBrowser.runJavaScript("setTextBase64(\"" + Qt.btoa(text) + "\")");
editorBrowser.runJavaScript("setMode(\"" + mode + "\")"); editorBrowser.runJavaScript("setMode(\"" + mode + "\")");
} }
@ -26,7 +26,8 @@ Item {
} }
function setFocus() { function setFocus() {
editorBrowser.forceActiveFocus(); if (editorBrowser)
editorBrowser.forceActiveFocus();
} }
function getText() { function getText() {
@ -34,19 +35,19 @@ Item {
} }
function syncClipboard() { function syncClipboard() {
if (Qt.platform.os == "osx") { if (Qt.platform.os == "osx" && editorBrowser) {
var text = clipboard.text; var text = clipboard.text;
editorBrowser.runJavaScript("setClipboardBase64(\"" + Qt.btoa(text) + "\")"); editorBrowser.runJavaScript("setClipboardBase64(\"" + Qt.btoa(text) + "\")");
} }
} }
function highlightExecution(location) { function highlightExecution(location) {
if (initialized) if (initialized && editorBrowser)
editorBrowser.runJavaScript("highlightExecution(" + location.start + "," + location.end + ")"); editorBrowser.runJavaScript("highlightExecution(" + location.start + "," + location.end + ")");
} }
function showWarning(content) { function showWarning(content) {
if (initialized) if (initialized && editorBrowser)
editorBrowser.runJavaScript("showWarning('" + content + "')"); editorBrowser.runJavaScript("showWarning('" + content + "')");
} }
@ -55,12 +56,12 @@ Item {
} }
function toggleBreakpoint() { function toggleBreakpoint() {
if (initialized) if (initialized && editorBrowser)
editorBrowser.runJavaScript("toggleBreakpoint()"); editorBrowser.runJavaScript("toggleBreakpoint()");
} }
function changeGeneration() { function changeGeneration() {
if (initialized) if (initialized && editorBrowser)
editorBrowser.runJavaScript("changeGeneration()", function(result) {}); editorBrowser.runJavaScript("changeGeneration()", function(result) {});
} }
@ -81,9 +82,15 @@ Item {
console.log("editor: " + sourceID + ":" + lineNumber + ":" + message); console.log("editor: " + sourceID + ":" + lineNumber + ":" + message);
} }
Component.onDestruction:
{
codeModel.onCompilationComplete.disconnect(compilationComplete);
codeModel.onCompilationError.disconnect(compilationError);
}
onLoadingChanged: onLoadingChanged:
{ {
if (!loading) { if (!loading && editorBrowser) {
initialized = true; initialized = true;
setText(currentText, currentMode); setText(currentText, currentMode);
runJavaScript("getTextChanged()", function(result) { }); runJavaScript("getTextChanged()", function(result) { });
@ -91,23 +98,31 @@ Item {
syncClipboard(); syncClipboard();
if (currentMode === "solidity") if (currentMode === "solidity")
{ {
codeModel.onCompilationComplete.connect(function(){ codeModel.onCompilationComplete.connect(compilationComplete);
runJavaScript("compilationComplete()", function(result) { }); codeModel.onCompilationError.connect(compilationError);
});
codeModel.onCompilationError.connect(function(error){
var errorInfo = ErrorLocationFormater.extractErrorInfo(error, false);
if (errorInfo.line && errorInfo.column)
runJavaScript("compilationError('" + errorInfo.line + "', '" + errorInfo.column + "', '" + errorInfo.errorDetail + "')", function(result) { });
else
runJavaScript("compilationComplete()", function(result) { });
});
} }
parent.changeGeneration(); parent.changeGeneration();
} }
} }
function compilationComplete()
{
if (editorBrowser)
editorBrowser.runJavaScript("compilationComplete()", function(result) { });
}
function compilationError(error)
{
if (!editorBrowser || !error)
return;
var errorInfo = ErrorLocationFormater.extractErrorInfo(error, false);
if (errorInfo.line && errorInfo.column)
editorBrowser.runJavaScript("compilationError('" + errorInfo.line + "', '" + errorInfo.column + "', '" + errorInfo.errorDetail + "')", function(result) { });
else
editorBrowser.runJavaScript("compilationComplete()", function(result) { });
}
Timer Timer
{ {
id: pollTimer id: pollTimer
@ -115,6 +130,8 @@ Item {
running: false running: false
repeat: true repeat: true
onTriggered: { onTriggered: {
if (!editorBrowser)
return;
editorBrowser.runJavaScript("getTextChanged()", function(result) { editorBrowser.runJavaScript("getTextChanged()", function(result) {
if (result === true) { if (result === true) {
editorBrowser.runJavaScript("getText()" , function(textValue) { editorBrowser.runJavaScript("getText()" , function(textValue) {

15
mix/qml/html/cm/errorannotation.js

@ -23,12 +23,15 @@ ErrorAnnotation.prototype.init = function()
ErrorAnnotation.prototype.open = function() ErrorAnnotation.prototype.open = function()
{ {
var node = document.createElement("div"); if (this.errorMark.find())
node.id = "annotation" {
node.innerHTML = this.content; var node = document.createElement("div");
node.className = "CodeMirror-errorannotation-context"; node.id = "annotation"
this.lineWidget = this.editor.addLineWidget(this.errorMark.find().from.line, node, { coverGutter: false }); node.innerHTML = this.content;
this.opened = true; node.className = "CodeMirror-errorannotation-context";
this.lineWidget = this.editor.addLineWidget(this.errorMark.find().from.line, node, { coverGutter: false });
this.opened = true;
}
} }
ErrorAnnotation.prototype.close = function() ErrorAnnotation.prototype.close = function()

79
mix/qml/js/ProjectModel.js

@ -51,6 +51,7 @@ function closeProject(callBack) {
} }
else else
{ {
projectIsClosing = true;
doCloseProject(); doCloseProject();
if (callBack) if (callBack)
callBack(); callBack();
@ -96,45 +97,45 @@ function saveProjectFile()
function loadProject(path) { function loadProject(path) {
closeProject(function() { closeProject(function() {
console.log("Loading project at " + path); console.log("Loading project at " + path);
var projectFile = path + projectFileName; var projectFile = path + projectFileName;
var json = fileIo.readFile(projectFile); var json = fileIo.readFile(projectFile);
var projectData = JSON.parse(json); var projectData = JSON.parse(json);
if (projectData.deploymentDir) if (projectData.deploymentDir)
projectModel.deploymentDir = projectData.deploymentDir projectModel.deploymentDir = projectData.deploymentDir
if (projectData.packageHash) if (projectData.packageHash)
deploymentDialog.packageHash = projectData.packageHash deploymentDialog.packageHash = projectData.packageHash
if (projectData.packageBase64) if (projectData.packageBase64)
deploymentDialog.packageBase64 = projectData.packageBase64 deploymentDialog.packageBase64 = projectData.packageBase64
if (projectData.applicationUrlEth) if (projectData.applicationUrlEth)
deploymentDialog.applicationUrlEth = projectData.applicationUrlEth deploymentDialog.applicationUrlEth = projectData.applicationUrlEth
if (projectData.applicationUrlHttp) if (projectData.applicationUrlHttp)
deploymentDialog.applicationUrlHttp = projectData.applicationUrlHttp deploymentDialog.applicationUrlHttp = projectData.applicationUrlHttp
if (!projectData.title) { if (!projectData.title) {
var parts = path.split("/"); var parts = path.split("/");
projectData.title = parts[parts.length - 2]; projectData.title = parts[parts.length - 2];
} }
deploymentAddresses = projectData.deploymentAddresses ? projectData.deploymentAddresses : []; deploymentAddresses = projectData.deploymentAddresses ? projectData.deploymentAddresses : [];
projectTitle = projectData.title; projectTitle = projectData.title;
projectPath = path; projectPath = path;
if (!projectData.files) if (!projectData.files)
projectData.files = []; projectData.files = [];
for(var i = 0; i < projectData.files.length; i++) { for(var i = 0; i < projectData.files.length; i++) {
addFile(projectData.files[i]); addFile(projectData.files[i]);
} }
projectSettings.lastProjectPath = path; projectSettings.lastProjectPath = path;
projectLoading(projectData); projectLoading(projectData);
projectLoaded() projectLoaded()
//TODO: move this to codemodel //TODO: move this to codemodel
var contractSources = {}; var contractSources = {};
for (var d = 0; d < listModel.count; d++) { for (var d = 0; d < listModel.count; d++) {
var doc = listModel.get(d); var doc = listModel.get(d);
if (doc.isContract) if (doc.isContract)
contractSources[doc.documentId] = fileIo.readFile(doc.path); contractSources[doc.documentId] = fileIo.readFile(doc.path);
} }
codeModel.reset(contractSources); codeModel.reset(contractSources);
}); });
} }

Loading…
Cancel
Save