diff --git a/ethereal/assets/qml/views/info.qml b/ethereal/assets/qml/views/info.qml index ca6ca077e..9ac2a1a09 100644 --- a/ethereal/assets/qml/views/info.qml +++ b/ethereal/assets/qml/views/info.qml @@ -44,59 +44,104 @@ Rectangle { gui.setCustomIdentifier(text) } } + + TextArea { + objectName: "statsPane" + width: parent.width + height: 200 + selectByMouse: true + readOnly: true + font.family: "Courier" + } } - property var addressModel: ListModel { - id: addressModel - } - TableView { - id: addressView + RowLayout { + id: logLayout width: parent.width height: 200 - anchors.bottom: logLayout.top - TableViewColumn{ role: "name"; title: "name" } - TableViewColumn{ role: "address"; title: "address"; width: 300} + anchors.bottom: parent.bottom - model: addressModel - itemDelegate: Item { - Text { - anchors { - left: parent.left - right: parent.right - leftMargin: 10 - verticalCenter: parent.verticalCenter - } - color: styleData.textColor - elide: styleData.elideMode - text: styleData.value - font.pixelSize: 11 - MouseArea { - acceptedButtons: Qt.LeftButton | Qt.RightButton - propagateComposedEvents: true - anchors.fill: parent - onClicked: { - addressView.selection.clear() - addressView.selection.select(styleData.row) + TableView { + id: addressView + width: parent.width + height: 200 + anchors { + left: parent.left + right: logLevelSlider.left + bottom: parent.bottom + top: parent.top + } + TableViewColumn{ role: "name"; title: "name" } + TableViewColumn{ role: "address"; title: "address"; width: 300} - if(mouse.button == Qt.RightButton) { - contextMenu.row = styleData.row; - contextMenu.popup() + property var addressModel: ListModel { + id: addressModel + } + + model: addressModel + itemDelegate: Item { + Text { + anchors { + left: parent.left + right: parent.right + leftMargin: 10 + verticalCenter: parent.verticalCenter + } + color: styleData.textColor + elide: styleData.elideMode + text: styleData.value + font.pixelSize: 11 + MouseArea { + acceptedButtons: Qt.LeftButton | Qt.RightButton + propagateComposedEvents: true + anchors.fill: parent + onClicked: { + addressView.selection.clear() + addressView.selection.select(styleData.row) + + if(mouse.button == Qt.RightButton) { + contextMenu.row = styleData.row; + contextMenu.popup() + } } } } + } + Menu { + id: contextMenu + property var row; + + MenuItem { + text: "Copy" + onTriggered: { + copyToClipboard(addressModel.get(this.row).address) + } + } + } } - Menu { - id: contextMenu - property var row; + Slider { + id: logLevelSlider + value: gui.getLogLevelInt() + anchors { + right: parent.right + top: parent.top + bottom: parent.bottom - MenuItem { - text: "Copy" - onTriggered: { - copyToClipboard(addressModel.get(this.row).address) - } + rightMargin: 5 + leftMargin: 5 + topMargin: 5 + bottomMargin: 5 + } + + orientation: Qt.Vertical + maximumValue: 5 + stepSize: 1 + + onValueChanged: { + gui.setLogLevel(value) } } } @@ -104,6 +149,8 @@ Rectangle { property var logModel: ListModel { id: logModel } + + /* RowLayout { id: logLayout width: parent.width @@ -147,6 +194,7 @@ Rectangle { } } } + */ function addDebugMessage(message){ debuggerLog.append({value: message}) diff --git a/ethereal/gui.go b/ethereal/gui.go index 5e87f7464..4849fbab7 100644 --- a/ethereal/gui.go +++ b/ethereal/gui.go @@ -6,6 +6,7 @@ import ( "fmt" "math/big" "os" + "runtime" "strconv" "strings" "time" @@ -412,6 +413,7 @@ func (gui *Gui) update() { peerUpdateTicker := time.NewTicker(5 * time.Second) generalUpdateTicker := time.NewTicker(1 * time.Second) + statsUpdateTicker := time.NewTicker(5 * time.Second) state := gui.eth.StateManager().TransState() @@ -488,6 +490,10 @@ func (gui *Gui) update() { pow := gui.miner.GetPow() miningLabel.Set("text", "Mining @ "+strconv.FormatInt(pow.GetHashrate(), 10)+"Khash") } + + case <-statsUpdateTicker.C: + gui.setStatsPane() + } } }() @@ -507,6 +513,28 @@ func (gui *Gui) update() { reactor.Subscribe("peerList", peerChan) } +func (gui *Gui) setStatsPane() { + var memStats runtime.MemStats + runtime.ReadMemStats(&memStats) + + statsPane := gui.getObjectByName("statsPane") + statsPane.Set("text", fmt.Sprintf(`###### Ethereal 0.6.4 (%s) ####### + +CPU: # %d +Goroutines: # %d +CGoCalls: # %d + +Alloc: %d +Heap Alloc: %d + +CGNext: %x +NumGC: %d +`, runtime.Version(), runtime.NumCPU, runtime.NumGoroutine(), runtime.NumCgoCall(), + memStats.Alloc, memStats.HeapAlloc, + memStats.NextGC, memStats.NumGC, + )) +} + func (gui *Gui) CopyToClipboard(data string) { //clipboard.WriteAll("test") fmt.Println("COPY currently BUGGED. Here are the contents:\n", data) diff --git a/ethereal/main.go b/ethereal/main.go index 4fb9e2a9c..ac94a6622 100644 --- a/ethereal/main.go +++ b/ethereal/main.go @@ -71,7 +71,6 @@ func main() { // This is a bit of a cheat, but ey! os.Setenv("QTWEBKIT_INSPECTOR_SERVER", "127.0.0.1:99999") - //qml.Init(nil) qml.Run(run) var interrupted = false