tools/hhtracer/Main.qml
changeset 16063 ec4fc7eb6acd
parent 16056 9ad74696ddec
equal deleted inserted replaced
16062:288df7b85efc 16063:ec4fc7eb6acd
    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   }