Browse Source

more bugs fixed

cl-refactor
arkpar 10 years ago
parent
commit
ea2486e509
  1. 3
      mix/CodeModel.cpp
  2. 6
      mix/qml/Debugger.qml
  3. 18
      mix/qml/ProjectList.qml
  4. 1
      mix/qml/ProjectModel.qml
  5. 1
      mix/qml/StateListModel.qml
  6. 149
      mix/qml/js/ProjectModel.js

3
mix/CodeModel.cpp

@ -180,7 +180,10 @@ void CodeModel::registerCodeChange(QString const& _documentId, QString const& _c
{
CompiledContract* contract = contractByDocumentId(_documentId);
if (contract != nullptr && contract->m_sourceHash == qHash(_code))
{
emit compilationComplete();
return;
}
{
Guard pl(x_pendingContracts);

6
mix/qml/Debugger.qml

@ -22,8 +22,8 @@ Rectangle {
onVisibleChanged:
{
if (visible)
forceActiveFocus();
//if (visible)
// forceActiveFocus();
}
onAssemblyModeChanged:
@ -68,7 +68,7 @@ Rectangle {
Connections {
target: clientModel
onDebugDataReady: {
update(_debugData, true);
update(_debugData, false);
}
}

18
mix/qml/ProjectList.qml

@ -129,6 +129,24 @@ Item {
}
}
}
onCompilationComplete: {
if (modelData === "Contracts") {
var ci = 0;
for (var si = 0; si < projectModel.listModel.count; si++) {
var document = projectModel.listModel.get(si);
if (document.isContract) {
var compiledDoc = codeModel.contractByDocumentId(document.documentId);
if (compiledDoc && compiledDoc.documentId === document.documentId && compiledDoc.contract.name !== document.name) {
document.name = compiledDoc.contract.name;
projectModel.listModel.set(si, document);
sectionModel.set(ci, document);
}
ci++;
}
}
}
}
}
Connections {

1
mix/qml/ProjectModel.qml

@ -51,6 +51,7 @@ Item {
function createProject() { ProjectModelCode.createProject(); }
function closeProject(callBack) { ProjectModelCode.closeProject(callBack); }
function saveProject() { ProjectModelCode.saveProject(); }
function saveProjectFile() { ProjectModelCode.saveProjectFile(); }
function loadProject(path) { ProjectModelCode.loadProject(path); }
function newHtmlFile() { ProjectModelCode.newHtmlFile(); }
function newJsFile() { ProjectModelCode.newJsFile(); }

1
mix/qml/StateListModel.qml

@ -223,7 +223,6 @@ Item {
changed = true;
state.transactions[t] = transaction;
}
}
stateListModel.set(s, state);
stateList[s] = state;

149
mix/qml/js/ProjectModel.js

@ -44,18 +44,16 @@ function createProject() {
}
function closeProject(callBack) {
if (!isEmpty) {
if (unsavedFiles.length > 0)
{
saveMessageDialog.callBack = callBack;
saveMessageDialog.open();
}
else
{
doCloseProject();
if (callBack)
callBack();
}
if (!isEmpty && unsavedFiles.length > 0)
{
saveMessageDialog.callBack = callBack;
saveMessageDialog.open();
}
else
{
doCloseProject();
if (callBack)
callBack();
}
}
@ -97,46 +95,47 @@ function saveProjectFile()
}
function loadProject(path) {
closeProject();
console.log("Loading project at " + path);
var projectFile = path + projectFileName;
var json = fileIo.readFile(projectFile);
var projectData = JSON.parse(json);
if (projectData.deploymentDir)
projectModel.deploymentDir = projectData.deploymentDir
if (projectData.packageHash)
deploymentDialog.packageHash = projectData.packageHash
if (projectData.packageBase64)
deploymentDialog.packageBase64 = projectData.packageBase64
if (projectData.applicationUrlEth)
deploymentDialog.applicationUrlEth = projectData.applicationUrlEth
if (projectData.applicationUrlHttp)
deploymentDialog.applicationUrlHttp = projectData.applicationUrlHttp
if (!projectData.title) {
var parts = path.split("/");
projectData.title = parts[parts.length - 2];
}
deploymentAddresses = projectData.deploymentAddresses ? projectData.deploymentAddresses : [];
projectTitle = projectData.title;
projectPath = path;
if (!projectData.files)
projectData.files = [];
for(var i = 0; i < projectData.files.length; i++) {
addFile(projectData.files[i]);
}
projectSettings.lastProjectPath = path;
projectLoading(projectData);
projectLoaded()
//TODO: move this to codemodel
var contractSources = {};
for (var d = 0; d < listModel.count; d++) {
var doc = listModel.get(d);
if (doc.isContract)
contractSources[doc.documentId] = fileIo.readFile(doc.path);
}
codeModel.reset(contractSources);
closeProject(function() {
console.log("Loading project at " + path);
var projectFile = path + projectFileName;
var json = fileIo.readFile(projectFile);
var projectData = JSON.parse(json);
if (projectData.deploymentDir)
projectModel.deploymentDir = projectData.deploymentDir
if (projectData.packageHash)
deploymentDialog.packageHash = projectData.packageHash
if (projectData.packageBase64)
deploymentDialog.packageBase64 = projectData.packageBase64
if (projectData.applicationUrlEth)
deploymentDialog.applicationUrlEth = projectData.applicationUrlEth
if (projectData.applicationUrlHttp)
deploymentDialog.applicationUrlHttp = projectData.applicationUrlHttp
if (!projectData.title) {
var parts = path.split("/");
projectData.title = parts[parts.length - 2];
}
deploymentAddresses = projectData.deploymentAddresses ? projectData.deploymentAddresses : [];
projectTitle = projectData.title;
projectPath = path;
if (!projectData.files)
projectData.files = [];
for(var i = 0; i < projectData.files.length; i++) {
addFile(projectData.files[i]);
}
projectSettings.lastProjectPath = path;
projectLoading(projectData);
projectLoaded()
//TODO: move this to codemodel
var contractSources = {};
for (var d = 0; d < listModel.count; d++) {
var doc = listModel.get(d);
if (doc.isContract)
contractSources[doc.documentId] = fileIo.readFile(doc.path);
}
codeModel.reset(contractSources);
});
}
function addFile(fileName) {
@ -163,7 +162,6 @@ function addFile(fileName) {
};
projectListModel.append(docData);
saveProjectFile();
fileIo.watchFileChanged(p);
return docData.documentId;
}
@ -232,27 +230,28 @@ function doCloseProject() {
}
function doCreateProject(title, path) {
closeProject();
console.log("Creating project " + title + " at " + path);
if (path[path.length - 1] !== "/")
path += "/";
var dirPath = path + title + "/";
fileIo.makeDir(dirPath);
var projectFile = dirPath + projectFileName;
var indexFile = "index.html";
var contractsFile = "contract.sol";
var projectData = {
title: title,
files: [ contractsFile, indexFile ]
};
//TODO: copy from template
fileIo.writeFile(dirPath + indexFile, htmlTemplate);
fileIo.writeFile(dirPath + contractsFile, contractTemplate);
newProject(projectData);
var json = JSON.stringify(projectData, null, "\t");
fileIo.writeFile(projectFile, json);
loadProject(dirPath);
closeProject(function() {
console.log("Creating project " + title + " at " + path);
if (path[path.length - 1] !== "/")
path += "/";
var dirPath = path + title + "/";
fileIo.makeDir(dirPath);
var projectFile = dirPath + projectFileName;
var indexFile = "index.html";
var contractsFile = "contract.sol";
var projectData = {
title: title,
files: [ contractsFile, indexFile ]
};
//TODO: copy from template
fileIo.writeFile(dirPath + indexFile, htmlTemplate);
fileIo.writeFile(dirPath + contractsFile, contractTemplate);
newProject(projectData);
var json = JSON.stringify(projectData, null, "\t");
fileIo.writeFile(projectFile, json);
loadProject(dirPath);
});
}
function doAddExistingFiles(files) {
@ -263,6 +262,7 @@ function doAddExistingFiles(files) {
if (sourcePath !== destPath)
fileIo.copyFile(sourcePath, destPath);
var id = addFile(sourceFileName);
saveProjectFile();
documentAdded(id)
}
}
@ -321,6 +321,7 @@ function createAndAddFile(name, extension, content) {
var filePath = projectPath + fileName;
fileIo.writeFile(filePath, content);
var id = addFile(fileName);
saveProjectFile();
documentAdded(id);
}

Loading…
Cancel
Save