mirror of
https://github.com/NohamR/Reclass.git
synced 2026-05-10 19:59:21 +00:00
- 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
66 lines
1.9 KiB
C++
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
|