|
1 | 1 | """Streamlit dashboard for visualizing NI-SCOPE waveform data in real time.""" |
2 | 2 |
|
| 3 | +from enum import Enum |
| 4 | + |
3 | 5 | import extra_streamlit_components as stx # type: ignore[import-untyped] |
4 | 6 | import niscope |
5 | 7 | import streamlit as st |
|
8 | 10 | import nipanel |
9 | 11 | from nipanel.controls import enum_selectbox |
10 | 12 |
|
| 13 | + |
| 14 | +class ChannelSource(Enum): |
| 15 | + """Enum for channel source options.""" |
| 16 | + |
| 17 | + CHANNEL_0 = 0 |
| 18 | + CHANNEL_1 = 1 |
| 19 | + CHANNEL_2 = 2 |
| 20 | + CHANNEL_3 = 3 |
| 21 | + CHANNEL_4 = 4 |
| 22 | + CHANNEL_5 = 5 |
| 23 | + CHANNEL_6 = 6 |
| 24 | + CHANNEL_7 = 7 |
| 25 | + |
| 26 | + |
11 | 27 | st.set_page_config(page_title="NI-SCOPE EX Configured Acquisition", page_icon="📈", layout="wide") |
12 | 28 | st.title("NI-SCOPE EX Configured Acquisition") |
13 | 29 | panel = nipanel.get_streamlit_panel_accessor() |
|
206 | 222 | ) |
207 | 223 | if trigger_type == "2": |
208 | 224 | with st.container(border=True): |
209 | | - st.number_input( |
| 225 | + st.selectbox( |
210 | 226 | "Trigger Source", |
211 | | - value=0, |
212 | | - step=1, |
| 227 | + options=list(ChannelSource), |
| 228 | + format_func=lambda x: f"Channel {x.value}", |
213 | 229 | disabled=panel.get_value("is_running", False), |
214 | | - max_value=7, |
215 | 230 | key="edge_source", |
216 | 231 | ) |
217 | 232 | st.number_input( |
|
252 | 267 | ) |
253 | 268 | if trigger_type == "4": |
254 | 269 | with st.container(border=True): |
255 | | - st.number_input( |
| 270 | + st.selectbox( |
256 | 271 | "Trigger Source", |
257 | | - value=0, |
258 | | - step=1, |
| 272 | + options=list(ChannelSource), |
| 273 | + format_func=lambda x: f"Channel {x.value}", |
259 | 274 | disabled=panel.get_value("is_running", False), |
260 | 275 | key="window_source", |
261 | 276 | ) |
|
290 | 305 |
|
291 | 306 | if trigger_type == "5": |
292 | 307 | with st.container(border=True): |
293 | | - st.number_input( |
| 308 | + st.selectbox( |
294 | 309 | "Trigger Source", |
295 | | - value=0, |
296 | | - step=1, |
| 310 | + options=list(ChannelSource), |
| 311 | + format_func=lambda x: f"Channel {x.value}", |
297 | 312 | disabled=panel.get_value("is_running", False), |
298 | 313 | key="hysteresis_source", |
299 | 314 | ) |
|
0 commit comments