feat: Add Wafer Map tab and associated components
- Introduced a new Wafer Map tab in the HomePage.qml, which loads WaferMapTab.qml when selected. - Created WaferMapTab.qml to display wafer map with live data and controls. - Added ReadoutPanel.qml for displaying sensor statistics and thresholds. - Implemented SourcePanel.qml for file selection and filtering. - Developed TransportBar.qml for playback controls. - Added WaferMapView.qml to visualize wafer data with interactive features. - Created ReplaceSensorDialog.qml for sensor value overrides. - Updated Theme.qml for new color schemes and UI adjustments. - Modified qmldir files to include new components in the ISC.Tabs and ISC.Tabs.components modules.
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import ISC
|
||||
|
||||
RowLayout {
|
||||
spacing: 2
|
||||
|
||||
component TBtn: Button {
|
||||
implicitWidth: 44
|
||||
implicitHeight: 32
|
||||
hoverEnabled: true
|
||||
font.pixelSize: 13
|
||||
background: Rectangle {
|
||||
color: parent.pressed ? Theme.transportButtonHover
|
||||
: parent.hovered ? Theme.transportButtonBg
|
||||
: Theme.transportBackground
|
||||
radius: Theme.radiusSm
|
||||
}
|
||||
contentItem: Text {
|
||||
text: parent.text
|
||||
color: Theme.headingColor
|
||||
font: parent.font
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
}
|
||||
|
||||
// Left fill — centers the button cluster
|
||||
Item { Layout.fillWidth: true }
|
||||
|
||||
TBtn { text: "⏮"; onClicked: streamController.step(-1) }
|
||||
TBtn { text: "⏹"; onClicked: streamController.stop() }
|
||||
TBtn { text: "⏸"; onClicked: streamController.pause() }
|
||||
// Play: slightly wider; leftPadding nudge compensates for ▶ optical offset
|
||||
TBtn {
|
||||
text: "▶"
|
||||
implicitWidth: 52
|
||||
contentItem: Text {
|
||||
text: parent.text
|
||||
color: Theme.headingColor
|
||||
font: parent.font
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
leftPadding: 2
|
||||
}
|
||||
onClicked: streamController.play()
|
||||
}
|
||||
TBtn { text: "⏭"; onClicked: streamController.step(1) }
|
||||
|
||||
// Right fill — balances centering
|
||||
Item { Layout.fillWidth: true }
|
||||
|
||||
// Speed cycle
|
||||
Button {
|
||||
id: speedBtn
|
||||
property var speeds: [1, 2, 5]
|
||||
property int idx: 0
|
||||
implicitWidth: 44
|
||||
implicitHeight: 32
|
||||
hoverEnabled: true
|
||||
text: speeds[idx] + "×"
|
||||
font.pixelSize: 11
|
||||
font.weight: Font.Medium
|
||||
background: Rectangle {
|
||||
color: parent.pressed ? Theme.transportButtonHover
|
||||
: parent.hovered ? Theme.transportButtonBg
|
||||
: Theme.transportBackground
|
||||
radius: Theme.radiusSm
|
||||
}
|
||||
contentItem: Text {
|
||||
text: parent.text
|
||||
color: Theme.bodyColor
|
||||
font: parent.font
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
onClicked: {
|
||||
idx = (idx + 1) % speeds.length
|
||||
streamController.setSpeed(speeds[idx])
|
||||
}
|
||||
}
|
||||
|
||||
Item { width: 8 }
|
||||
|
||||
Label {
|
||||
text: "frame " + (streamController.frameIndex + 1) + " / " + streamController.frameTotal
|
||||
color: Theme.bodyColor
|
||||
font.pixelSize: 11
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user