equal
deleted
inserted
replaced
34 } |
34 } |
35 |
35 |
36 Label { |
36 Label { |
37 text: "Best: %1".arg(tracer.bestSolution) |
37 text: "Best: %1".arg(tracer.bestSolution) |
38 } |
38 } |
|
39 |
|
40 Label { |
|
41 text: "Gen: %1".arg(tracer.generation) |
|
42 } |
39 } |
43 } |
40 } |
44 } |
41 |
45 |
42 FileDialog { |
46 FileDialog { |
43 id: fileDialog |
47 id: fileDialog |
44 |
48 |
45 nameFilters: ["Hedgehog images (*.png)"] |
49 nameFilters: ["Hedgehog images (*.png)"] |
46 |
50 |
47 onAccepted: { |
51 onAccepted: { |
48 console.log("Hello") |
52 console.log("Hello"); |
49 baseImage.source = selectedFile; |
53 baseImage.source = selectedFile; |
50 tracer.start(fileDialog.selectedFile); |
54 tracer.start(fileDialog.selectedFile); |
|
55 tracer.generation = 0; |
51 } |
56 } |
52 } |
57 } |
53 |
58 |
54 Tracer { |
59 Tracer { |
55 id: tracer |
60 id: tracer |
|
61 |
|
62 property int generation: 0 |
|
63 |
|
64 atoms: [ |
|
65 { |
|
66 "type": "polygon", |
|
67 "length": 3, |
|
68 "pens": ["#9f086e", "#54a2fa"], |
|
69 "brushes": ["#2c78d2", "#54a2fa"] |
|
70 }, |
|
71 { |
|
72 "type": "circle", |
|
73 "pens": ["#9f086e", "#f29ce7"], |
|
74 "brushes": ["#d66bcc", "#f29ce7"] |
|
75 }, |
|
76 { |
|
77 "type": "circle", |
|
78 "pens": ["#000000"], |
|
79 "brushes": [ "#000000"] |
|
80 }, |
|
81 { |
|
82 "type": "circle", |
|
83 "pens": ["#ffffff"], |
|
84 "brushes": [ "#ffffff"] |
|
85 } |
|
86 ] |
56 } |
87 } |
57 |
|
58 |
88 |
59 Timer { |
89 Timer { |
60 id: stepTimer |
90 id: stepTimer |
61 |
91 |
62 interval: 120 |
92 interval: 120 |
63 repeat: true |
93 repeat: true |
64 running: false |
94 running: false |
65 triggeredOnStart: true |
95 triggeredOnStart: true |
66 |
96 |
67 onTriggered: tracer.step() |
97 onTriggered: { |
|
98 tracer.generation = tracer.generation + 1; |
|
99 tracer.step(); |
|
100 } |
|
101 } |
|
102 |
|
103 Rectangle { |
|
104 anchors.fill: parent |
|
105 color: "#a0c0a0" |
68 } |
106 } |
69 |
107 |
70 ColumnLayout { |
108 ColumnLayout { |
71 anchors.fill: parent |
109 anchors.fill: parent |
72 |
110 |
77 Layout.preferredHeight: 32 |
115 Layout.preferredHeight: 32 |
78 fillMode: Image.PreserveAspectFit |
116 fillMode: Image.PreserveAspectFit |
79 } |
117 } |
80 |
118 |
81 GridLayout { |
119 GridLayout { |
|
120 Layout.fillHeight: true |
82 Layout.fillWidth: true |
121 Layout.fillWidth: true |
83 Layout.fillHeight: true |
122 columns: 30 |
84 columns: 50 |
|
85 |
123 |
86 Repeater { |
124 Repeater { |
87 model: tracer.solutions |
125 model: tracer.solutions |
88 |
126 |
89 Image { |
127 Image { |
90 width: 32 |
128 fillMode: Image.PreserveAspectFit |
91 height: 32 |
129 height: 32 |
92 source: "file://" + modelData |
130 source: "file://" + modelData |
93 fillMode: Image.PreserveAspectFit |
131 width: 32 |
94 |
132 |
95 Rectangle { |
133 Rectangle { |
|
134 anchors.fill: parent |
|
135 border.color: "black" |
96 border.width: 1 |
136 border.width: 1 |
97 border.color: "black" |
|
98 color: "transparent" |
137 color: "transparent" |
99 anchors.fill: parent |
|
100 } |
138 } |
101 } |
139 } |
102 } |
140 } |
103 } |
141 } |
104 } |
142 } |