mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-11 06:53:50 +08:00
9d1f0d4171
* cabana: connect palette theme, rounded cards, floating page switch Move the jotpluggler port's connect palette into a shared theme module (ui/theme.h/.cc) and apply it to all of cabana: Palette struct for dark and light, applyTheme fills ImGui and ImPlot styles, readableCurveColor and sectionTitle for reuse by the analysis workspace. Drop the old DarkTheme constants and per-theme color branches in widgets. Docked panels are borderless with content in rounded bordered cards; custom-drawn rects use the style radii. The detail widget's bottom tab bar is replaced by a floating Messages/Logs pill. * cabana: scrollbar and menu contrast, page switch below the page The scrollbar grab uses the border color on the window-colored track. Selection colors are stronger so an open menu reads as blue in both themes and the hovered item is visible in light mode. The Messages/Logs pill sits in a strip below the page instead of covering its last rows. * cabana: even spacing around the page switch, steady top menu highlight * cabana: inner spacing before the clear button of a clearable input * cabana: center the page switch below the page, space the signal row buttons * cabana: logs table cells padded and bordered like the messages table * cabana: recess the signals card in the window color * cabana: one button vocabulary Three button shapes, all one frame height with the style padding and rounding: ImGui::Button for framed text, iconButton for a framed square icon, toolButton for a flat square icon (or flat text). Adjacent buttons are ItemInnerSpacing apart, groups ItemSpacing apart. Tool bars drop their private padding and 1 px spacing, the signal row, chart header, detail header, logs export and signal selector buttons all use the shared sizes, and the page switch is built from the same style values. * cabana: center the glyph ink in square icon buttons * cabana: framed tool buttons and plain icon glyphs toolButton is now iconButton with an optional text, so every button in the app is framed. Boxed glyphs (plus-square, x-square, dash-square, arrow-*-square, window-stack) are replaced by their plain variants (plus-lg, trash, arrows-collapse, box-arrow-*, window-plus), the light x/plus/dash by their -lg forms, the chart menu by three-dots-vertical and the toolbar overflow by chevron-double-right. * cabana: draw square button glyphs at 80% so full bleed icons keep a margin * cabana: signal values in the mono font * cabana: center square button icons on their atlas ink, snapped to framebuffer pixels * cabana: draw square button glyph quads directly, AddText truncates the position * cabana: right align the messages and signals tool bars to the table edge, full size collapse button * cabana: detail header and tab scroll buttons flush with the right edge * cabana: header and footer strips, gap above the panels, video splitter as a separator The menu bar and the status bar are strips in the surface color with a separator line towards the panels, and the dockspace sits one item spacing below the menu bar, matching the spacing above the status bar. The video/charts splitter draws the same 1 px separator line as the dock splitters, centered in a gap as tall as the side padding, and a double click snaps the video back to its natural height. * cabana: top menus flush with the menu bar, 2 px video splitter without double click * cabana: dropdowns continue the menu bar, splitter in the border color, row button gap Top level menus draw no top border and square top corners, and the menu bar leaves its separator out under the open dropdown. The video splitter uses the border color like the dock splitters. The signal row buttons keep one inner spacing before the scrollbar. * cabana: dropdowns share the bar's 1 px border line, messages toolbar spacing matches the video card * cabana: tool bar groups, framed dropdown buttons, chart content flush with the tool bar Tool bar items are ItemSpacing apart and the items of a group (a button pair, a separator and its neighbor) ItemInnerSpacing apart, instead of a private 1 px spacing. The dropdown buttons are framed like the other buttons. The video time is a plain mono readout that toggles on click. Chart cards have no horizontal margin so their header and plot line up with the tool bar above. * cabana: chart list spacing: gap above the scroll area, charts clear of the scrollbar, even legend gaps * cabana: loop and speed buttons grouped like the playback buttons * cabana: survive narrow panels and small windows Stress tested by dragging the column and video splitters to their limits and shrinking the window to 640x480. Fixes: the messages tool bar and the message detail header overflow into the >> menu instead of clipping (the view button and the name stay); the binary view keeps a minimum cell width and scrolls sideways; the Messages/Logs switch drops to icons when the strip is too narrow; the camera keeps its last frame across reconnects, so a video restored from a collapsed splitter while paused is no longer black. * cabana: range slider spans the charts >> menu, remove all and float as menu entries * cabana: the charts card keeps its tool bar row or collapses, like the video at the other end * cabana: uniform >> menus: dropdowns become submenus, the time readout an action entry * cabana: video/charts splitter gap matches the column splitters * cabana: drop unused lambda capture in chart type menu Claude-Session: https://claude.ai/code/session_01XTFaJpf235LeHBmyFRgeJ1 * cabana: the menu bar and the status bar stay in full screen * cabana: simplify theme helpers and toolbar actions * cabana: preserve panel width for overflow edit dialog * cabana: keep message editor usable in narrow panels * cabana: group heatmap modes in a dropdown * cabana: trim redundant restyle comments * cabana: fix review findings from the restyle - set the caret and other unset colors so the light theme has no white caret - tolerate float error in the toolbar fit check to stop spurious overflow - restore the full screen chrome hiding - clear stale camera frames when the server changes, keep them across a collapse - cache icon glyph ink bounds instead of scanning the atlas every frame - drop dead plot_bg and ImPlot globals, add a badge palette role - add toolbarMenu and use toolbarAction for the remove message item - derive the signal view button size seed from the font and style * cabana: remove remaining redundant comments
41 lines
2.3 KiB
C++
41 lines
2.3 KiB
C++
#pragma once
|
|
|
|
// Bootstrap Icons codepoints; loadFonts() merges the icon font into each text font.
|
|
namespace icon {
|
|
constexpr const char ARROW_CLOCKWISE[] = "\xef\x84\x96";
|
|
constexpr const char ARROW_COUNTERCLOCKWISE[] = "\xef\x84\x97";
|
|
constexpr const char CHEVRON_LEFT[] = "\xef\x8a\x84";
|
|
constexpr const char CHEVRON_RIGHT[] = "\xef\x8a\x85";
|
|
constexpr const char ASPECT_RATIO[] = "\xef\x85\x90";
|
|
constexpr const char ASPECT_RATIO_FILL[] = "\xef\x85\x8f";
|
|
constexpr const char EXCLAMATION_TRIANGLE[] = "\xef\x8c\xba";
|
|
constexpr const char FAST_FORWARD[] = "\xef\x9f\xb3";
|
|
constexpr const char FILETYPE_CSV[] = "\xef\x9d\x83";
|
|
constexpr const char FOLDER[] = "\xef\x8f\x91";
|
|
constexpr const char FILE_EARMARK[] = "\xef\x8d\xa9";
|
|
constexpr const char FILE_EARMARK_RULED[] = "\xef\x8e\x84";
|
|
constexpr const char GRAPH_UP[] = "\xef\x8f\xb2";
|
|
constexpr const char GRIP_HORIZONTAL[] = "\xef\x8f\xbd";
|
|
constexpr const char INFO_CIRCLE[] = "\xef\x90\xb0";
|
|
constexpr const char PAUSE[] = "\xef\x93\x83";
|
|
constexpr const char PENCIL[] = "\xef\x93\x8b";
|
|
constexpr const char PLAY[] = "\xef\x93\xb4";
|
|
constexpr const char REPEAT[] = "\xef\xa0\x93";
|
|
constexpr const char REPEAT_1[] = "\xef\xa0\x92";
|
|
constexpr const char REWIND[] = "\xef\xa0\x98";
|
|
constexpr const char SKIP_END[] = "\xef\x95\x97";
|
|
constexpr const char STOPWATCH[] = "\xef\x96\x96";
|
|
constexpr const char THREE_DOTS[] = "\xef\x97\x94";
|
|
constexpr const char X_LG[] = "\xef\x99\x99";
|
|
constexpr const char ZOOM_OUT[] = "\xef\x98\xad";
|
|
constexpr const char PLUS_LG[] = "\xef\x99\x8d";
|
|
constexpr const char DASH_LG[] = "\xef\x98\xbb";
|
|
constexpr const char TRASH[] = "\xef\x9e\x8b";
|
|
constexpr const char ARROWS_COLLAPSE[] = "\xef\x85\x8b";
|
|
constexpr const char BOX_ARROW_UP_RIGHT[] = "\xef\x87\x85";
|
|
constexpr const char BOX_ARROW_IN_DOWN_LEFT[] = "\xef\x86\xba";
|
|
constexpr const char WINDOW_PLUS[] = "\xef\x9b\x90";
|
|
constexpr const char CHEVRON_DOUBLE_RIGHT[] = "\xef\x8a\x80";
|
|
constexpr const char THREE_DOTS_VERTICAL[] = "\xef\x97\x93";
|
|
} // namespace icon
|