Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Eugene's arrows

  • Loading branch information...
commit 652c38ea0044f8cbcbd37bc498ed649ca4ba7621 1 parent ce89434
@alvelcom authored
View
6 README.markdown
@@ -2,6 +2,7 @@ TreeVis
=======
Проект по разработке системы визуализации структуры данных "Бинарное дерево".
+Tags: Qt, QML, Qt Creator, Binary Tree, BST, Brains.
Аннотация
@@ -13,3 +14,8 @@ TreeVis
> что рёбра графа не должны быть ориентированными. В дополнение к этим трём ограничениям,
> в некоторых источниках указываются, что рёбра графа не должны быть взвешенными.
+
+См. также
+---------
+
++ doSequence.markdown -- описание последовательности действий
View
2  qml/TreeVis/Core/Button.qml
@@ -76,7 +76,7 @@ Item {
State {
name: "Pressed"
when: mouseRegion.pressed == true
- PropertyChanges { target: pressed; opacity: 1 }
+ PropertyChanges { target: pressed; opacity: 0.5 }
},
State {
name: "Focused"
View
18 qml/TreeVis/TreeVis.qml
@@ -11,6 +11,11 @@ Rectangle {
property int hId: 0
property int hPid: 0
property int hType: 0
+ signal animationOver
+
+ function isAnimationLaunch() {
+ return animationTimer.running;
+ }
function createTree() {
//создание начального дерева
@@ -26,10 +31,12 @@ Rectangle {
function addElement(el) {
M.insTree(el);
+ animationTimer.start();
}
function findElement(el){
M.findTree(el);
+ animationTimer.start();
}
function viewTree() {
@@ -40,11 +47,18 @@ Rectangle {
}
Timer {
- interval: 750; running: true; repeat: true
+ id: animationTimer
+ interval: 500;
+ repeat: true
+
onTriggered: {
//тут обрабатывается последовательность команд из treeMachinery.js
- if (M.gSeq.length <= 0)
+ if (M.gSeq.length <= 0) {
+ //анимация кончилась, пора разблокировать кнопки
+ animationTimer.stop();
+ treeVis.animationOver();
return;
+ }
var step = M.gSeq.pop();
for (var i in step) {
View
119 qml/TreeVis/main.qml
@@ -22,14 +22,13 @@ Rectangle {
anchors.topMargin: 10
anchors.fill: parent
- Behavior on anchors.rightMargin {
- NumberAnimation {duration: 1000; easing.type: Easing.OutBack}
+ onAnimationOver: {
+ inputElementsContainer.opacity = 1;
}
-
}
Column {
- id: rightColumn
+ id: inputElementsContainer
anchors.top: window.top
anchors.topMargin: 10
@@ -38,11 +37,13 @@ Rectangle {
anchors.right: window.right
anchors.rightMargin: 5
- spacing: 20
+ spacing: 10
+
Column {
spacing: 4
Text {
text: "Значение:"
+ wrapMode: Text.WordWrap
font.pixelSize: 16; font.bold: true; color: "white";
style: Text.Raised; styleColor: "black"
horizontalAlignment: Qt.AlignRight
@@ -52,7 +53,7 @@ Rectangle {
id: value
focus: true
}
- }
+ }//Column
Row {
spacing: 5
@@ -64,11 +65,29 @@ Rectangle {
opacity: 1
onClicked: {
- var tmp = parseInt(value.text);
- if(!tmp || tmp > 128 || tmp < -127) {
+ if(treeContainer.isAnimationLaunch()) {
+ return;
+ }
+
+ var str = value.text;
+ if(str.length <= 0) {
+ return;
+ }
+
+ var numbers = "-0123456789";
+
+ for(var i = 0; i < str.length; i++) {
+ if(numbers.indexOf(str[i]) == -1) {
+ return;
+ }
+ }
+
+ var insertVal = parseInt(str);
+ if(insertVal > 128 || insertVal < -127) {
return;
} else {
- treeContainer.addElement(tmp);
+ inputElementsContainer.opacity = 0.5;
+ treeContainer.addElement(insertVal);
}
}
}
@@ -79,34 +98,61 @@ Rectangle {
height: 32
keyUsing: true;
opacity: 1
-
onClicked: {
- var tmp = parseInt(value.text);
- if(!tmp || tmp > 128 || tmp < -127) {
+ if(treeContainer.isAnimationLaunch()) {
+ return;
+ }
+
+ var str = value.text;
+ if(str.length <= 0) {
+ return;
+ }
+
+ var numbers = "-0123456789";
+
+ for(var i = 0; i < str.length; i++) {
+ if(numbers.indexOf(str[i]) == -1) {
+ return;
+ }
+ }
+
+ var findVal = parseInt(str);
+ if(findVal > 128 || findVal < -127) {
return;
} else {
- treeContainer.findElement(tmp);
+ inputElementsContainer.opacity = 0.5;
+ treeContainer.findElement(findVal);
}
}
}
} // Row
- Text {
- id: txtCode
- text: "Код:"
- font.pixelSize: 16; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black"
- horizontalAlignment: Qt.AlignRight
- }
- /* */
+ Row {
+ spacing: 5
+ Button {
+ text: "Очистить"
+ width: 100
+ height: 32
+ keyUsing: true;
+ opacity: 1
+ onClicked: {
+ if(treeContainer.isAnimationLaunch()) {
+ return;
+ }
- } // Column
+ treeContainer.clearTree();
+ }
+ }
+ }// Row
- CodeView {
- id: code
- focus: true
+ } // Column
- anchors.top: rightColumn.bottom
+ Rectangle {
+ id: codeContainer
+ color: "#00000000"
+ opacity: 0
+ anchors.top: inputElementsContainer.bottom
anchors.topMargin: 4
anchors.bottom: window.bottom
anchors.bottomMargin: 10
@@ -116,10 +162,28 @@ Rectangle {
anchors.right: window.right
anchors.rightMargin: 5
- opacity: 0.7
+ Text {
+ id: txtCode
+ text: "Код:"
+ font.pixelSize: 16; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black"
+ horizontalAlignment: Qt.AlignRight
+ }
- }
+ CodeView {
+ id: code
+ focus: true
+ anchors.top: txtCode.bottom
+ anchors.topMargin: 4
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+
+ opacity: 0.7
+
+ }
+ }
+}
/* Not now )
VDots {
@@ -130,4 +194,3 @@ Rectangle {
color: "white"
} */
-}
Please sign in to comment.
Something went wrong with that request. Please try again.