You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
357 lines
7.9 KiB
357 lines
7.9 KiB
import QtQuick 2.2
|
|
import QtQuick.Controls 1.1
|
|
import QtQuick.Controls.Styles 1.1
|
|
import QtQuick.Dialogs 1.1
|
|
import QtQuick.Layouts 1.1
|
|
import QtQuick.Window 2.1
|
|
import QtQuick.PrivateWidgets 1.1
|
|
import Qt.labs.settings 1.0
|
|
import org.ethereum.qml.QEther 1.0
|
|
|
|
ApplicationWindow {
|
|
id: mainApplication
|
|
visible: true
|
|
width: 1200
|
|
height: 800
|
|
minimumWidth: 400
|
|
minimumHeight: 300
|
|
title: qsTr("Mix")
|
|
|
|
Connections
|
|
{
|
|
target: mainApplication
|
|
onClosing:
|
|
{
|
|
mainApplication.close();
|
|
close.accepted = false;
|
|
}
|
|
}
|
|
|
|
function close()
|
|
{
|
|
projectModel.appIsClosing = true;
|
|
if (projectModel.projectPath !== "")
|
|
projectModel.closeProject(function() { Qt.quit(); })
|
|
else
|
|
Qt.quit();
|
|
}
|
|
|
|
menuBar: MenuBar {
|
|
Menu {
|
|
title: qsTr("File")
|
|
MenuItem { action: createProjectAction }
|
|
MenuItem { action: openProjectAction }
|
|
MenuSeparator {}
|
|
MenuItem { action: saveAllFilesAction }
|
|
MenuItem { action: saveCurrentDocument }
|
|
MenuSeparator {}
|
|
MenuItem { action: addExistingFileAction }
|
|
MenuItem { action: addNewJsFileAction }
|
|
MenuItem { action: addNewHtmlFileAction }
|
|
MenuItem { action: addNewCssFileAction }
|
|
MenuSeparator {}
|
|
MenuItem { action: addNewContractAction }
|
|
MenuItem { action: closeProjectAction }
|
|
MenuSeparator {}
|
|
MenuItem { action: exitAppAction }
|
|
}
|
|
Menu {
|
|
title: qsTr("Deploy")
|
|
MenuItem { action: mineAction }
|
|
MenuSeparator {}
|
|
MenuItem { action: editStatesAction }
|
|
MenuSeparator {}
|
|
MenuItem { action: deployViaRpcAction }
|
|
MenuSeparator {}
|
|
MenuItem { action: toggleRunOnLoadAction }
|
|
}
|
|
Menu {
|
|
title: qsTr("Debug")
|
|
MenuItem { action: debugRunAction }
|
|
MenuSeparator {}
|
|
MenuItem { action: toggleAssemblyDebuggingAction }
|
|
}
|
|
Menu {
|
|
title: qsTr("Windows")
|
|
MenuItem { action: openNextDocumentAction }
|
|
MenuItem { action: openPrevDocumentAction }
|
|
MenuSeparator {}
|
|
MenuItem { action: toggleProjectNavigatorAction }
|
|
MenuItem { action: showHideRightPanelAction }
|
|
MenuItem { action: toggleTransactionLogAction }
|
|
MenuItem { action: toggleWebPreviewAction }
|
|
MenuItem { action: toggleWebPreviewOrientationAction }
|
|
//MenuItem { action: toggleCallsInLog }
|
|
}
|
|
}
|
|
|
|
MainContent {
|
|
id: mainContent;
|
|
anchors.fill: parent
|
|
}
|
|
|
|
ModalDialog {
|
|
objectName: "dialog"
|
|
id: dialog
|
|
}
|
|
|
|
AlertMessageDialog {
|
|
objectName: "alertMessageDialog"
|
|
id: messageDialog
|
|
}
|
|
|
|
Settings {
|
|
id: mainWindowSettings
|
|
property alias mainWidth: mainApplication.width
|
|
property alias mainHeight: mainApplication.height
|
|
property alias mainX: mainApplication.x
|
|
property alias mainY: mainApplication.y
|
|
}
|
|
|
|
Action {
|
|
id: exitAppAction
|
|
text: qsTr("Exit")
|
|
shortcut: "Ctrl+Q"
|
|
onTriggered:
|
|
{
|
|
mainApplication.close();
|
|
}
|
|
}
|
|
|
|
Action {
|
|
id: mineAction
|
|
text: qsTr("New Block")
|
|
shortcut: "Ctrl+M"
|
|
onTriggered: clientModel.mine();
|
|
enabled: codeModel.hasContract && !clientModel.running && !clientModel.mining
|
|
}
|
|
|
|
StateList {
|
|
id: stateList
|
|
}
|
|
|
|
Action {
|
|
id: editStatesAction
|
|
text: qsTr("Edit States")
|
|
shortcut: "Ctrl+Alt+E"
|
|
onTriggered: stateList.show();
|
|
}
|
|
|
|
Connections {
|
|
target: projectModel.stateListModel
|
|
|
|
function updateRunLabel()
|
|
{
|
|
debugRunAction.text = qsTr("Deploy") + " \"" + projectModel.stateListModel.defaultStateName() + "\"";
|
|
}
|
|
|
|
onDefaultStateChanged: updateRunLabel()
|
|
onStateListModelReady: updateRunLabel()
|
|
}
|
|
|
|
Action {
|
|
id: debugRunAction
|
|
text: qsTr("Deploy")
|
|
shortcut: "F5"
|
|
onTriggered: mainContent.startQuickDebugging()
|
|
enabled: codeModel.hasContract && !clientModel.running
|
|
}
|
|
|
|
Action {
|
|
id: toggleAssemblyDebuggingAction
|
|
text: qsTr("Show VM Code")
|
|
shortcut: "Ctrl+Alt+V"
|
|
onTriggered: mainContent.rightPane.assemblyMode = !mainContent.rightPane.assemblyMode;
|
|
checked: mainContent.rightPane.assemblyMode;
|
|
enabled: true
|
|
}
|
|
|
|
Action {
|
|
id: toggleWebPreviewAction
|
|
text: qsTr("Show Web View")
|
|
shortcut: "F2"
|
|
checkable: true
|
|
checked: mainContent.webViewVisible
|
|
onTriggered: mainContent.toggleWebPreview();
|
|
}
|
|
|
|
Action {
|
|
id: toggleTransactionLogAction
|
|
text: qsTr("Show States and Transactions")
|
|
shortcut: "Alt+1"
|
|
checkable: true
|
|
checked: mainContent.rightPane.transactionLog.visible
|
|
onTriggered: mainContent.rightPane.transactionLog.visible = !mainContent.rightPane.transactionLog.visible
|
|
}
|
|
|
|
Action {
|
|
id: toggleProjectNavigatorAction
|
|
text: qsTr("Show Project Navigator")
|
|
shortcut: "Alt+0"
|
|
checkable: true
|
|
checked: mainContent.projectViewVisible
|
|
onTriggered: mainContent.toggleProjectView();
|
|
}
|
|
|
|
Action {
|
|
id: toggleWebPreviewOrientationAction
|
|
text: qsTr("Horizontal Web View")
|
|
shortcut: ""
|
|
checkable: true
|
|
checked: mainContent.webViewHorizontal
|
|
onTriggered: mainContent.toggleWebPreviewOrientation();
|
|
}
|
|
|
|
Action {
|
|
id: toggleRunOnLoadAction
|
|
text: qsTr("Load State on Startup")
|
|
shortcut: ""
|
|
checkable: true
|
|
checked: mainContent.runOnProjectLoad
|
|
onTriggered: mainContent.runOnProjectLoad = !mainContent.runOnProjectLoad
|
|
}
|
|
|
|
Action {
|
|
id: showHideRightPanelAction
|
|
text: qsTr("Show Right View")
|
|
shortcut: "F7"
|
|
checkable: true
|
|
checked: mainContent.rightViewVisible
|
|
onTriggered: mainContent.toggleRightView();
|
|
}
|
|
|
|
Action {
|
|
id: createProjectAction
|
|
text: qsTr("&New Project")
|
|
shortcut: "Ctrl+N"
|
|
enabled: true;
|
|
onTriggered: projectModel.createProject();
|
|
}
|
|
|
|
Action {
|
|
id: openProjectAction
|
|
text: qsTr("&Open Project")
|
|
shortcut: "Ctrl+O"
|
|
enabled: true;
|
|
onTriggered: openProjectFileDialog.open()
|
|
}
|
|
|
|
FileDialog {
|
|
id: openProjectFileDialog
|
|
visible: false
|
|
title: qsTr("Open a Project")
|
|
selectFolder: true
|
|
onAccepted: {
|
|
var path = openProjectFileDialog.fileUrl.toString();
|
|
path += "/";
|
|
projectModel.loadProject(path);
|
|
}
|
|
}
|
|
|
|
Action {
|
|
id: addNewJsFileAction
|
|
text: qsTr("New JavaScript File")
|
|
shortcut: "Ctrl+Alt+J"
|
|
enabled: !projectModel.isEmpty
|
|
onTriggered: projectModel.newJsFile();
|
|
}
|
|
|
|
Action {
|
|
id: addNewHtmlFileAction
|
|
text: qsTr("New HTML File")
|
|
shortcut: "Ctrl+Alt+H"
|
|
enabled: !projectModel.isEmpty
|
|
onTriggered: projectModel.newHtmlFile();
|
|
}
|
|
|
|
Action {
|
|
id: addNewCssFileAction
|
|
text: qsTr("New CSS File")
|
|
shortcut: "Ctrl+Alt+S"
|
|
enabled: !projectModel.isEmpty
|
|
onTriggered: projectModel.newCssFile();
|
|
}
|
|
|
|
Action {
|
|
id: addNewContractAction
|
|
text: qsTr("New Contract")
|
|
shortcut: "Ctrl+Alt+C"
|
|
enabled: !projectModel.isEmpty
|
|
onTriggered: projectModel.newContract();
|
|
}
|
|
|
|
Action {
|
|
id: addExistingFileAction
|
|
text: qsTr("Add Existing File")
|
|
shortcut: "Ctrl+Alt+A"
|
|
enabled: !projectModel.isEmpty
|
|
onTriggered: addExistingFileDialog.open()
|
|
}
|
|
|
|
FileDialog {
|
|
id: addExistingFileDialog
|
|
visible: false
|
|
title: qsTr("Add a File")
|
|
selectFolder: false
|
|
onAccepted: {
|
|
var paths = addExistingFileDialog.fileUrls;
|
|
projectModel.addExistingFiles(paths);
|
|
}
|
|
}
|
|
|
|
Action {
|
|
id: saveAllFilesAction
|
|
text: qsTr("Save All")
|
|
shortcut: "Ctrl+Shift+A"
|
|
enabled: !projectModel.isEmpty
|
|
onTriggered: projectModel.saveAll();
|
|
}
|
|
|
|
Action {
|
|
id: saveCurrentDocument
|
|
text: qsTr("Save Current Document")
|
|
shortcut: "Ctrl+S"
|
|
enabled: !projectModel.isEmpty
|
|
onTriggered: projectModel.saveCurrentDocument();
|
|
}
|
|
|
|
Action {
|
|
id: closeProjectAction
|
|
text: qsTr("Close Project")
|
|
shortcut: "Ctrl+W"
|
|
enabled: !projectModel.isEmpty
|
|
onTriggered: projectModel.closeProject();
|
|
}
|
|
|
|
Action {
|
|
id: openNextDocumentAction
|
|
text: qsTr("Next Document")
|
|
shortcut: "Ctrl+Tab"
|
|
enabled: !projectModel.isEmpty
|
|
onTriggered: projectModel.openNextDocument();
|
|
}
|
|
|
|
Action {
|
|
id: openPrevDocumentAction
|
|
text: qsTr("Previous Document")
|
|
shortcut: "Ctrl+Shift+Tab"
|
|
enabled: !projectModel.isEmpty
|
|
onTriggered: projectModel.openPrevDocument();
|
|
}
|
|
|
|
Action {
|
|
id: toggleBreakpointAction
|
|
text: qsTr("Toggle Breakpoint")
|
|
shortcut: "F9"
|
|
enabled: mainContent.codeEditor.editingContract();
|
|
onTriggered: mainContent.toggleBreakpoint();
|
|
}
|
|
|
|
Action {
|
|
id: deployViaRpcAction
|
|
text: qsTr("Deploy to Network")
|
|
shortcut: "Ctrl+Shift+D"
|
|
enabled: !projectModel.isEmpty && codeModel.hasContract
|
|
onTriggered: projectModel.deployProject();
|
|
}
|
|
}
|
|
|