forked from cerc-io/plugeth
UI update
This commit is contained in:
parent
ac14f002e6
commit
0c9c79a89b
@ -47,7 +47,10 @@ ApplicationWindow {
|
|||||||
MenuItem {
|
MenuItem {
|
||||||
text: "Import App"
|
text: "Import App"
|
||||||
shortcut: "Ctrl+o"
|
shortcut: "Ctrl+o"
|
||||||
onTriggered: openAppDialog.open()
|
onTriggered: {
|
||||||
|
generalFileDialog.callback = importApp;
|
||||||
|
generalFileDialog.open()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuItem {
|
MenuItem {
|
||||||
@ -58,7 +61,10 @@ ApplicationWindow {
|
|||||||
MenuItem {
|
MenuItem {
|
||||||
text: "Add plugin"
|
text: "Add plugin"
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
mainSplit.addPlugin("test")
|
generalFileDialog.callback = function(path) {
|
||||||
|
addPlugin(path, {canClose: true})
|
||||||
|
}
|
||||||
|
generalFileDialog.open()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,16 +73,23 @@ ApplicationWindow {
|
|||||||
MenuItem {
|
MenuItem {
|
||||||
text: "Import key"
|
text: "Import key"
|
||||||
shortcut: "Ctrl+i"
|
shortcut: "Ctrl+i"
|
||||||
onTriggered: importDialog.open()
|
onTriggered: {
|
||||||
|
generalFileDialog.callback = function(path) {
|
||||||
|
ui.importKey(path)
|
||||||
|
}
|
||||||
|
generalFileDialog.open()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuItem {
|
MenuItem {
|
||||||
text: "Export keys"
|
text: "Export keys"
|
||||||
shortcut: "Ctrl+e"
|
shortcut: "Ctrl+e"
|
||||||
onTriggered: exportDialog.open()
|
onTriggered: {
|
||||||
|
generalFileDialog.callback = function(path) {
|
||||||
|
}
|
||||||
|
generalFileDialog.open()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//MenuSeparator {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Menu {
|
Menu {
|
||||||
@ -135,166 +148,34 @@ ApplicationWindow {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
property var blockModel: ListModel {
|
|
||||||
id: blockModel
|
|
||||||
}
|
|
||||||
|
|
||||||
SplitView {
|
|
||||||
property var views: [];
|
|
||||||
|
|
||||||
id: mainSplit
|
|
||||||
anchors.fill: parent
|
|
||||||
resizing: false
|
|
||||||
|
|
||||||
function setView(view) {
|
|
||||||
for(var i = 0; i < views.length; i++) {
|
|
||||||
views[i].visible = false
|
|
||||||
}
|
|
||||||
|
|
||||||
view.visible = true
|
|
||||||
}
|
|
||||||
|
|
||||||
function addComponent(component, options) {
|
|
||||||
var view = mainView.createView(component, options)
|
|
||||||
if(!view.hasOwnProperty("iconFile")) {
|
|
||||||
console.log("Could not load plugin. Property 'iconFile' not found on view.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
menu.createMenuItem(view.iconFile, view);
|
|
||||||
mainSplit.views.push(view);
|
|
||||||
|
|
||||||
return view
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: menu
|
|
||||||
Layout.minimumWidth: 80
|
|
||||||
Layout.maximumWidth: 80
|
|
||||||
anchors.top: parent.top
|
|
||||||
color: "#252525"
|
|
||||||
|
|
||||||
Component {
|
|
||||||
id: menuItemTemplate
|
|
||||||
Image {
|
|
||||||
property var view;
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
MouseArea {
|
|
||||||
anchors.fill: parent
|
|
||||||
onClicked: {
|
|
||||||
mainSplit.setView(view)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function createMenuItem(icon, view) {
|
|
||||||
var comp = menuItemTemplate.createObject(menuColumn)
|
|
||||||
comp.view = view
|
|
||||||
comp.source = icon
|
|
||||||
}
|
|
||||||
|
|
||||||
ColumnLayout {
|
|
||||||
id: menuColumn
|
|
||||||
y: 50
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.right: parent.right
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: mainView
|
|
||||||
color: "#00000000"
|
|
||||||
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.left: menu.right
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
anchors.top: parent.top
|
|
||||||
|
|
||||||
function createView(component) {
|
|
||||||
var view = component.createObject(mainView)
|
|
||||||
|
|
||||||
return view;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
FileDialog {
|
|
||||||
id: openAppDialog
|
|
||||||
title: "Open QML Application"
|
|
||||||
onAccepted: {
|
|
||||||
var path = openAppDialog.fileUrl.toString()
|
|
||||||
var ext = path.split('.').pop()
|
|
||||||
if(ext == "html" || ext == "htm") {
|
|
||||||
ui.openHtml(path)
|
|
||||||
}else if(ext == "qml"){
|
|
||||||
ui.openQml(path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FileDialog {
|
|
||||||
id: exportDialog
|
|
||||||
title: "Export keys"
|
|
||||||
onAccepted: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
FileDialog {
|
|
||||||
id: generalFileDialog
|
|
||||||
property var callback;
|
|
||||||
onAccepted: {
|
|
||||||
var path = this.fileUrl.toString()
|
|
||||||
callback.call(this, path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FileDialog {
|
|
||||||
id: importDialog
|
|
||||||
title: "Import key"
|
|
||||||
onAccepted: {
|
|
||||||
var path = this.fileUrl.toString()
|
|
||||||
ui.importKey(path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
statusBar: StatusBar {
|
statusBar: StatusBar {
|
||||||
height: 30
|
height: 32
|
||||||
RowLayout {
|
RowLayout {
|
||||||
Button {
|
Button {
|
||||||
id: miningButton
|
id: miningButton
|
||||||
|
text: "Start Mining"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
eth.toggleMining()
|
eth.toggleMining()
|
||||||
}
|
}
|
||||||
text: "Start Mining"
|
|
||||||
}
|
|
||||||
|
|
||||||
Button {
|
|
||||||
property var enabled: true
|
|
||||||
id: debuggerWindow
|
|
||||||
onClicked: {
|
|
||||||
ui.startDebugger()
|
|
||||||
}
|
|
||||||
text: "Debugger"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
id: importAppButton
|
id: importAppButton
|
||||||
anchors.left: debuggerWindow.right
|
text: "Browser"
|
||||||
anchors.leftMargin: 5
|
onClicked: {
|
||||||
onClicked: openAppDialog.open()
|
ui.openBrowser()
|
||||||
text: "Import App"
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Label {
|
RowLayout {
|
||||||
anchors.left: importAppButton.right
|
Label {
|
||||||
anchors.leftMargin: 5
|
anchors.left: importAppButton.right
|
||||||
id: walletValueLabel
|
anchors.leftMargin: 5
|
||||||
|
id: walletValueLabel
|
||||||
|
|
||||||
|
font.pixelSize: 10
|
||||||
|
styleColor: "#797979"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,6 +224,123 @@ ApplicationWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
property var blockModel: ListModel {
|
||||||
|
id: blockModel
|
||||||
|
}
|
||||||
|
|
||||||
|
SplitView {
|
||||||
|
property var views: [];
|
||||||
|
|
||||||
|
id: mainSplit
|
||||||
|
anchors.fill: parent
|
||||||
|
resizing: false
|
||||||
|
|
||||||
|
function setView(view) {
|
||||||
|
for(var i = 0; i < views.length; i++) {
|
||||||
|
views[i].visible = false
|
||||||
|
}
|
||||||
|
|
||||||
|
view.visible = true
|
||||||
|
}
|
||||||
|
|
||||||
|
function addComponent(component, options) {
|
||||||
|
var view = mainView.createView(component, options)
|
||||||
|
if(!view.hasOwnProperty("iconFile")) {
|
||||||
|
console.log("Could not load plugin. Property 'iconFile' not found on view.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
menu.createMenuItem(view.iconFile, view);
|
||||||
|
mainSplit.views.push(view);
|
||||||
|
|
||||||
|
return view
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************
|
||||||
|
* Main menu.
|
||||||
|
********************/
|
||||||
|
Rectangle {
|
||||||
|
id: menu
|
||||||
|
Layout.minimumWidth: 80
|
||||||
|
Layout.maximumWidth: 80
|
||||||
|
anchors.top: parent.top
|
||||||
|
color: "#252525"
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: menuItemTemplate
|
||||||
|
Image {
|
||||||
|
property var view;
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
mainSplit.setView(view)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function createMenuItem(icon, view) {
|
||||||
|
var comp = menuItemTemplate.createObject(menuColumn)
|
||||||
|
comp.view = view
|
||||||
|
comp.source = icon
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: menuColumn
|
||||||
|
y: 50
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
spacing: 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************
|
||||||
|
* Main view
|
||||||
|
********************/
|
||||||
|
Rectangle {
|
||||||
|
id: mainView
|
||||||
|
color: "#00000000"
|
||||||
|
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.left: menu.right
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.top: parent.top
|
||||||
|
|
||||||
|
function createView(component) {
|
||||||
|
var view = component.createObject(mainView)
|
||||||
|
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function importApp(path) {
|
||||||
|
var ext = path.split('.').pop()
|
||||||
|
if(ext == "html" || ext == "htm") {
|
||||||
|
ui.openHtml(path)
|
||||||
|
}else if(ext == "qml"){
|
||||||
|
ui.openQml(path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************
|
||||||
|
* Dialogs
|
||||||
|
*****************/
|
||||||
|
FileDialog {
|
||||||
|
id: generalFileDialog
|
||||||
|
property var callback;
|
||||||
|
onAccepted: {
|
||||||
|
var path = this.fileUrl.toString()
|
||||||
|
callback.call(this, path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function setWalletValue(value) {
|
function setWalletValue(value) {
|
||||||
walletValueLabel.text = value
|
walletValueLabel.text = value
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user