Files
archived-Reclass/src/themes/theme.h
IChooseYou a86912add1 Theme system overhaul, UI polish, and VS2022 Dark theme
- Replaced hardcoded theme factories with JSON files + CMake build step
- Shared ThemeFieldMeta table for DRY serialization and editor UI
- Fixed live preview (auto-triggers on color change, no toggle button)
- Fixed duplicate theme entries when editing built-in themes
- Moved title bar from icon to bold "Reclass" text with View > Show Icon toggle
- MDI tabs: 24px height, unicode close button styled like TypeSelectorPopup
- Added VS2022 Dark theme with purple accent colors
- Status bar padding, removed monospace font overrides on tabs/statusbar
- Default startup opens Ball demo + Unnamed hex64 tabs
2026-02-13 16:23:12 -07:00

66 lines
1.9 KiB
C++

#pragma once
#include <QColor>
#include <QString>
#include <QJsonObject>
namespace rcx {
struct Theme {
QString name;
// ── Chrome ──
QColor background; // editor bg, margin bg, window
QColor backgroundAlt; // panels, tab selected, tooltips
QColor surface; // alternateBase
QColor border; // separators, menu borders
QColor borderFocused; // window border when focused
QColor button; // button bg
// ── Text ──
QColor text; // primary text, caret, identifiers
QColor textDim; // margin fg, status bar
QColor textMuted; // inactive tab, disabled menu
QColor textFaint; // margin dim, hex dim
// ── Interactive ──
QColor hover; // row hover, tab hover, menu hover
QColor selected; // row selection highlight
QColor selection; // text selection background
// ── Syntax ──
QColor syntaxKeyword;
QColor syntaxNumber;
QColor syntaxString;
QColor syntaxComment;
QColor syntaxPreproc;
QColor syntaxType; // custom types / GlobalClass
// ── Indicators ──
QColor indHoverSpan; // hover link text
QColor indCmdPill; // command row pill bg
QColor indDataChanged; // changed data values
QColor indHintGreen; // comment/hint text
// ── Markers ──
QColor markerPtr; // null pointer
QColor markerCycle; // cycle detection
QColor markerError; // error row bg
QJsonObject toJson() const;
static Theme fromJson(const QJsonObject& obj);
};
// ── Shared field metadata (serialization + editor UI) ──
struct ThemeFieldMeta {
const char* key; // JSON key
const char* label; // display label
const char* group; // section group name
QColor Theme::*ptr;
};
extern const ThemeFieldMeta kThemeFields[];
extern const int kThemeFieldCount;
} // namespace rcx