arkpar
10 years ago
8 changed files with 239 additions and 143 deletions
@ -1,13 +0,0 @@ |
|||||
pragma Singleton |
|
||||
|
|
||||
import QtQuick 2.0 |
|
||||
import QtQuick.Window 2.0 |
|
||||
import QtQuick.Layouts 1.0 |
|
||||
import QtQuick.Controls 1.0 |
|
||||
import QtQuick.Dialogs 1.1 |
|
||||
|
|
||||
Item { |
|
||||
id: codeEditorModel |
|
||||
|
|
||||
property var codeDocuments: [] |
|
||||
} |
|
@ -0,0 +1,142 @@ |
|||||
|
/* |
||||
|
This file is part of cpp-ethereum. |
||||
|
|
||||
|
cpp-ethereum is free software: you can redistribute it and/or modify |
||||
|
it under the terms of the GNU General Public License as published by |
||||
|
the Free Software Foundation, either version 3 of the License, or |
||||
|
(at your option) any later version. |
||||
|
|
||||
|
cpp-ethereum is distributed in the hope that it will be useful, |
||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
GNU General Public License for more details. |
||||
|
|
||||
|
You should have received a copy of the GNU General Public License |
||||
|
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
*/ |
||||
|
/** @file ProjectModel.js |
||||
|
* @author Arkadiy Paronyan arkadiy@ethdev.com |
||||
|
* @date 2015 |
||||
|
* Ethereum IDE client. |
||||
|
*/ |
||||
|
|
||||
|
function saveAll() { |
||||
|
saveProject(); |
||||
|
projectSaved(); |
||||
|
} |
||||
|
|
||||
|
function createProject() { |
||||
|
newProjectDialog.open(); |
||||
|
} |
||||
|
|
||||
|
function browseProject() { |
||||
|
openProjectFileDialog.open(); |
||||
|
} |
||||
|
|
||||
|
function closeProject() { |
||||
|
if (!isEmpty) { |
||||
|
if (haveUnsavedChanges) |
||||
|
saveMessageDialog.open(); |
||||
|
else |
||||
|
doCloseProject(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function saveProject() { |
||||
|
if (!isEmpty) { |
||||
|
var json = JSON.stringify(projectData); |
||||
|
var projectFile = projectPath + projectFileName; |
||||
|
fileIo.writeFile(projectFile, json); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function loadProject(path) { |
||||
|
closeProject(); |
||||
|
console.log("loading project at " + path); |
||||
|
var projectFile = path + projectFileName; |
||||
|
var json = fileIo.readFile(projectFile); |
||||
|
projectData = JSON.parse(json); |
||||
|
if (!projectData.title) { |
||||
|
var parts = path.split("/"); |
||||
|
projectData.title = parts[parts.length - 2]; |
||||
|
} |
||||
|
projectPath = path; |
||||
|
if (!projectData.files) |
||||
|
projectData.files = []; |
||||
|
|
||||
|
for(var i = 0; i < projectData.files.length; i++) { |
||||
|
addFile(projectData.files[i]); |
||||
|
} |
||||
|
projectSettings.lastProjectPath = path; |
||||
|
projectLoaded(); |
||||
|
} |
||||
|
|
||||
|
function addExistingFile() { |
||||
|
addExistingFileDialog().open(); |
||||
|
} |
||||
|
|
||||
|
function addProjectFiles(files) { |
||||
|
for(var i = 0; i < files.length; i++) |
||||
|
addFile(files[i]); |
||||
|
} |
||||
|
|
||||
|
function addFile(fileName) { |
||||
|
var p = projectPath + fileName; |
||||
|
var fileData = { |
||||
|
contract: false, |
||||
|
path: p, |
||||
|
name: fileName, |
||||
|
documentId: fileName, |
||||
|
isText: true, |
||||
|
isContract: fileName.substring(fileName.length - 4, fileName.length) === ".sol", |
||||
|
}; |
||||
|
|
||||
|
projectListModel.append(fileData); |
||||
|
} |
||||
|
|
||||
|
function openDocument(documentId) { |
||||
|
for (var i = 0; i < projectListModel.count; i++) |
||||
|
if (projectListModel.get(i).documentId === documentId) |
||||
|
documentOpened(projectListModel.get(i)); |
||||
|
} |
||||
|
|
||||
|
function doCloseProject() { |
||||
|
console.log("closing project"); |
||||
|
projectListModel.clear(); |
||||
|
projectPath = ""; |
||||
|
projectData = null; |
||||
|
projectClosed(); |
||||
|
} |
||||
|
|
||||
|
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 = dirPath + "index.html"; |
||||
|
var contractsFile = dirPath + "contracts.sol"; |
||||
|
var projectData = { |
||||
|
title: title, |
||||
|
files: [ "contracts.sol", "index.html" ] |
||||
|
}; |
||||
|
|
||||
|
fileIo.writeFile(indexFile, "<html></html>"); |
||||
|
fileIo.writeFile(contractsFile, "contract MyContract {}"); |
||||
|
var json = JSON.stringify(projectData); |
||||
|
fileIo.writeFile(projectFile, json); |
||||
|
loadProject(dirPath); |
||||
|
} |
||||
|
|
||||
|
function doAddExistingFiles(files) { |
||||
|
for(var i = 0; i < files.length; i++) { |
||||
|
var sourcePath = files[i]; |
||||
|
var sourceFileName = sourcePath.substring(sourcePath.lastIndexOf("/") + 1, sourcePath.length); |
||||
|
var destPath = projectPath + sourceFileName; |
||||
|
fileIo.copyFile(sourcePath, destPath); |
||||
|
addFile(sourceFileName); |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue