ui: one badge per enabled signal, an N signals overflow, and the order kept in memory
This commit is contained in:
1 parent
ad5e30f338
commit
f27925da59
6 files changed
+213
-3
No files matched your search
@@ -149,7 +149,11 @@ struct Badge {
|
||||
GtkWidget* name = nullptr;
|
||||
GtkWidget* state = nullptr;
|
||||
std::string page;
|
||||
std::string signal_name; ///< a signal badge: the signal it stands for; empty for the others
|
||||
std::size_t signal = 0; ///< a signal badge: its index in `ScopeModel::signals()` when it was built
|
||||
};
|
||||
/// The most signal badges the bar shows; beyond that one "N signals" badge stands for them all.
|
||||
inline constexpr std::size_t kMaxSignalBadges = 6;
|
||||
/// The badge bar under the plot (src/ui_badges.cpp).
|
||||
struct BadgeBar {
|
||||
GtkWidget* bar = nullptr; ///< main-window.ui `badge_bar`, fixed height
|
||||
@@ -157,6 +161,11 @@ struct BadgeBar {
|
||||
GtkWidget* system_slot = nullptr; ///< right: Trigger, Source
|
||||
Badge trigger;
|
||||
Badge source; ///< opens the first source page; a read-out when the source has none
|
||||
GtkWidget* signals_row = nullptr; ///< the box inside the scroller: signal badges, then the "+"
|
||||
/// One per shown enabled signal; empty when overflowed. `unique_ptr`: each button's "clicked" handler holds
|
||||
/// a pointer to its `Badge`, which must not move when the vector does.
|
||||
std::vector<std::unique_ptr<Badge>> signal_badges;
|
||||
Badge overflow; ///< the "N signals" badge, used only beyond `kMaxSignalBadges`
|
||||
Badge plus; ///< the "+" in the signals slot: opens the `signals` page
|
||||
};
|
||||
|
||||
@@ -174,6 +183,8 @@ struct App {
|
||||
BadgeBar badges;
|
||||
GtkWidget* badge_bar = nullptr;
|
||||
GtkWidget* badge_signals = nullptr;
|
||||
/// Signal names in the order the user left the badges (memory only; names not in it sort last).
|
||||
std::vector<std::string> badge_order;
|
||||
GtkWidget* badge_system = nullptr;
|
||||
/// The one GL area, drawing the `RowSet`'s figure: every row is a row of that
|
||||
/// figure, so there is one widget, one context and one `::render` whatever the row
|
||||
@@ -1952,6 +1963,9 @@ const char* trigger_badge_state(bool enabled, bool armed, bool pending, bool has
|
||||
void build_badge_bar(App& app); // after build_slideover, the toolbar (it reads trigger_toggle) and build_source_panels (the Source badge's page)
|
||||
void sync_badge_bar(App& app); // per tick and on every slide-over open/close; only writes what changed
|
||||
gboolean badges_probe(gpointer user); // UDPSCOPE_PROBE_BADGES_MS
|
||||
/// Rebuilds the signal badges (one per enabled signal, or the "N signals" overflow) from the model.
|
||||
void sync_signal_badges(App& app);
|
||||
gboolean signal_badges_probe(gpointer user); // UDPSCOPE_PROBE_SIGNAL_BADGES_MS
|
||||
gboolean source_kinds_probe_report(gpointer user);
|
||||
gboolean source_kinds_probe(gpointer user);
|
||||
/// MCC E-1608 end to end against `tools/mock_e1608.py`: the stream, the calibration, the panels and
|
||||
|
||||
Reference in new issue
Block a user