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.

296 lines
6.3 KiB

10 years ago
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.3
10 years ago
import "js/ErrorLocationFormater.js" as ErrorLocationFormater
import "."
10 years ago
Rectangle {
10 years ago
id: statusHeader
objectName: "statusPane"
property variant webPreview
10 years ago
function updateStatus(message)
10 years ago
{
if (!message)
10 years ago
{
status.state = "";
status.text = qsTr("Compile successfully.");
debugImg.state = "active";
10 years ago
}
else
{
status.state = "error";
var errorInfo = ErrorLocationFormater.extractErrorInfo(message, true);
10 years ago
status.text = errorInfo.errorLocation + " " + errorInfo.errorDetail;
debugImg.state = "";
10 years ago
}
debugRunActionIcon.enabled = codeModel.hasContract;
10 years ago
}
10 years ago
function infoMessage(text, type)
10 years ago
{
status.state = "";
status.text = text
10 years ago
logPane.push("info", type, text);
10 years ago
}
function warningMessage(text, type)
{
10 years ago
status.state = "warning";
status.text = text
logPane.push("warning", type, text);
}
function errorMessage(text, type)
{
status.state = "error";
status.text = text;
logPane.push("error", type, text);
}
Connections {
target: webPreview
10 years ago
onJavaScriptMessage:
{
if (_level === 0)
infoMessage(_content, "JavaScript")
else
{
var message = _sourceId.substring(_sourceId.lastIndexOf("/") + 1) + " - " + qsTr("line") + " " + _lineNb + " - " + _content;
if (_level === 1)
warningMessage(message, "JavaScript")
10 years ago
else
10 years ago
errorMessage(message, "JavaScript")
}
}
}
10 years ago
Connections {
target:clientModel
10 years ago
onRunStarted: infoMessage(qsTr("Running transactions..."), "Run");
onRunFailed: errorMessage(format(_message), "Run");
onRunComplete: infoMessage(qsTr("Run complete"), "Run");
onNewBlock: infoMessage(qsTr("New block created"), "State");
function format(_message)
{
var formatted = _message.match(/(?:<dev::eth::)(.+)(?:>)/);
if (!formatted)
formatted = _message.match(/(?:<dev::)(.+)(?:>)/);
10 years ago
if (formatted && formatted.length > 1)
formatted = formatted[1];
else
return _message;
var exceptionInfos = _message.match(/(?:tag_)(.+)/g);
if (exceptionInfos !== null && exceptionInfos.length > 0)
formatted += ": "
for (var k in exceptionInfos)
10 years ago
formatted += " " + exceptionInfos[k].replace("*]", "").replace("tag_", "").replace("=", "");
return formatted;
}
10 years ago
}
10 years ago
Connections {
target:projectModel
10 years ago
onDeploymentStarted: infoMessage(qsTr("Running deployment..."), "Deployment");
onDeploymentError: errorMessage(error, "Deployment");
onDeploymentComplete: infoMessage(qsTr("Deployment complete"), "Deployment");
onDeploymentStepChanged: infoMessage(message, "Deployment");
10 years ago
}
Connections {
target: codeModel
onCompilationComplete: updateStatus();
onCompilationError: updateStatus(_error);
}
10 years ago
color: "transparent"
10 years ago
anchors.fill: parent
10 years ago
Rectangle {
id: statusContainer
10 years ago
anchors.horizontalCenter: parent.horizontalCenter
10 years ago
anchors.verticalCenter: parent.verticalCenter
10 years ago
radius: 3
width: 650
10 years ago
height: 30
color: "#fcfbfc"
Text {
anchors.verticalCenter: parent.verticalCenter
10 years ago
anchors.horizontalCenter: parent.horizontalCenter
font.pointSize: StatusPaneStyle.general.statusFontSize
height: 15
font.family: "sans serif"
objectName: "status"
wrapMode: Text.WrapAnywhere
elide: Text.ElideRight
maximumLineCount: 1
clip: true
id: status
states: [
State {
name: "error"
PropertyChanges {
target: status
color: "red"
}
PropertyChanges {
target: statusContainer
color: "#fffcd5"
}
10 years ago
},
State {
name: "warning"
PropertyChanges {
target: status
color: "orange"
}
PropertyChanges {
target: statusContainer
color: "#fffcd5"
}
}
]
onTextChanged:
{
updateWidth()
toolTipInfo.tooltip = text;
}
function updateWidth()
{
if (text.length > 80)
width = parent.width - 10
else
width = undefined
}
}
Button
{
anchors.fill: parent
id: toolTip
action: toolTipInfo
text: ""
style:
ButtonStyle {
background:Rectangle {
color: "transparent"
10 years ago
}
}
10 years ago
MouseArea {
anchors.fill: parent
onClicked: {
logsContainer.toggle();
}
}
10 years ago
}
Action {
id: toolTipInfo
tooltip: ""
}
Rectangle
{
function toggle()
{
if (logsContainer.state === "opened")
logsContainer.state = "closed"
else
{
logsContainer.state = "opened";
10 years ago
logsContainer.focus = true;
calCoord();
10 years ago
forceActiveFocus();
}
}
id: logsContainer
width: 750
anchors.topMargin: -30
anchors.top: statusContainer.bottom
anchors.horizontalCenter: parent.horizontalCenter
visible: false
radius: 5
Component.onCompleted:
{
calCoord();
}
function calCoord()
{
var top = logsContainer;
while (top.parent)
top = top.parent
var coordinates = logsContainer.mapToItem(top, 0, 0);
logsContainer.parent = top;
logsContainer.x = coordinates.x + 150;
logsContainer.y = coordinates.y;
}
LogsPane
{
id: logPane;
}
states: [
State {
name: "opened";
PropertyChanges { target: logsContainer; height: 500; visible: true }
},
State {
name: "closed";
PropertyChanges { target: logsContainer; height: 0; visible: false }
}
]
transitions: Transition {
NumberAnimation { properties: "height"; easing.type: Easing.InOutQuad; duration: 200 }
NumberAnimation { properties: "visible"; easing.type: Easing.InOutQuad; duration: 200 }
}
}
10 years ago
}
10 years ago
Rectangle
{
color: "transparent"
width: 100
height: parent.height
anchors.top: parent.top
anchors.right: parent.right
10 years ago
RowLayout
{
anchors.fill: parent
Rectangle
{
10 years ago
color: "transparent"
anchors.fill: parent
Button
{
anchors.right: parent.right
anchors.rightMargin: 9
10 years ago
anchors.verticalCenter: parent.verticalCenter
id: debugImg
iconSource: "qrc:/qml/img/bugiconinactive.png"
action: debugRunActionIcon
states: [
State{
name: "active"
PropertyChanges { target: debugImg; iconSource: "qrc:/qml/img/bugiconactive.png"}
}
]
10 years ago
}
Action {
id: debugRunActionIcon
onTriggered: {
if (mainContent.rightViewIsVisible())
mainContent.hideRightView()
else
mainContent.startQuickDebugging();
10 years ago
}
enabled: false
}
}
}
}
10 years ago
}