Apart Concept 1 Serial Controller Program with modern UI
This commit is contained in:
commit
c4bde4c18c
103 changed files with 38385 additions and 0 deletions
6
resources/app.qrc
Normal file
6
resources/app.qrc
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>styles/dark.qss</file>
|
||||
<file>styles/light.qss</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
183
resources/styles/dark.qss
Normal file
183
resources/styles/dark.qss
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
/* Apart Concept 1 Controller - Dark theme */
|
||||
|
||||
QWidget {
|
||||
background-color: #1e2127;
|
||||
color: #e6e6e6;
|
||||
font-family: "Segoe UI", "Noto Sans", "DejaVu Sans", sans-serif;
|
||||
font-size: 10.5pt;
|
||||
}
|
||||
|
||||
QMainWindow, QDialog {
|
||||
background-color: #1a1d23;
|
||||
}
|
||||
|
||||
QToolTip {
|
||||
background-color: #2b2f38;
|
||||
color: #e6e6e6;
|
||||
border: 1px solid #3a3f4b;
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/* Group boxes / cards */
|
||||
QGroupBox {
|
||||
background-color: #242830;
|
||||
border: 1px solid #323743;
|
||||
border-radius: 10px;
|
||||
margin-top: 14px;
|
||||
padding: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
QGroupBox::title {
|
||||
subcontrol-origin: margin;
|
||||
subcontrol-position: top left;
|
||||
left: 12px;
|
||||
padding: 0 6px;
|
||||
color: #8ab4f8;
|
||||
}
|
||||
|
||||
/* Tabs */
|
||||
QTabWidget::pane {
|
||||
border: 1px solid #323743;
|
||||
border-radius: 10px;
|
||||
top: -1px;
|
||||
background: #20242b;
|
||||
}
|
||||
QTabBar::tab {
|
||||
background: transparent;
|
||||
color: #9aa0ab;
|
||||
padding: 9px 18px;
|
||||
margin-right: 4px;
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 8px;
|
||||
font-weight: 600;
|
||||
}
|
||||
QTabBar::tab:hover { color: #e6e6e6; }
|
||||
QTabBar::tab:selected {
|
||||
background: #2d3340;
|
||||
color: #8ab4f8;
|
||||
}
|
||||
|
||||
/* Buttons */
|
||||
QPushButton {
|
||||
background-color: #2d3340;
|
||||
color: #e6e6e6;
|
||||
border: 1px solid #3a4150;
|
||||
border-radius: 8px;
|
||||
padding: 7px 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
QPushButton:hover { background-color: #353c4b; border-color: #4a90e2; }
|
||||
QPushButton:pressed { background-color: #283046; }
|
||||
QPushButton:disabled { color: #5a606b; background-color: #23272e; border-color: #2c313a; }
|
||||
QPushButton#accent {
|
||||
background-color: #4a90e2;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
||||
QPushButton#accent:hover { background-color: #5a9ff0; }
|
||||
QPushButton#accent:disabled { background-color: #324a66; color: #93a3b5; }
|
||||
QPushButton#danger {
|
||||
background-color: #c0392b; color: #ffffff; border: none;
|
||||
}
|
||||
QPushButton#danger:hover { background-color: #d8463a; }
|
||||
|
||||
/* Combo boxes */
|
||||
QComboBox {
|
||||
background-color: #2a2f3a;
|
||||
border: 1px solid #3a4150;
|
||||
border-radius: 8px;
|
||||
padding: 6px 10px;
|
||||
min-height: 18px;
|
||||
}
|
||||
QComboBox:hover { border-color: #4a90e2; }
|
||||
QComboBox::drop-down { border: none; width: 22px; }
|
||||
QComboBox QAbstractItemView {
|
||||
background-color: #2a2f3a;
|
||||
border: 1px solid #3a4150;
|
||||
selection-background-color: #4a90e2;
|
||||
selection-color: #ffffff;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* Spin boxes / line edits */
|
||||
QSpinBox, QLineEdit {
|
||||
background-color: #2a2f3a;
|
||||
border: 1px solid #3a4150;
|
||||
border-radius: 8px;
|
||||
padding: 6px 8px;
|
||||
selection-background-color: #4a90e2;
|
||||
}
|
||||
QSpinBox:hover, QLineEdit:hover { border-color: #4a90e2; }
|
||||
QSpinBox:focus, QLineEdit:focus { border-color: #5a9ff0; }
|
||||
|
||||
/* Sliders */
|
||||
QSlider::groove:horizontal {
|
||||
height: 6px;
|
||||
background: #353b47;
|
||||
border-radius: 3px;
|
||||
}
|
||||
QSlider::sub-page:horizontal {
|
||||
background: #4a90e2;
|
||||
border-radius: 3px;
|
||||
}
|
||||
QSlider::handle:horizontal {
|
||||
background: #e6e6e6;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
margin: -7px 0;
|
||||
border-radius: 9px;
|
||||
}
|
||||
QSlider::handle:horizontal:hover { background: #ffffff; }
|
||||
|
||||
/* Check boxes / toggles */
|
||||
QCheckBox { spacing: 8px; }
|
||||
QCheckBox::indicator {
|
||||
width: 18px; height: 18px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid #4a5160;
|
||||
background: #2a2f3a;
|
||||
}
|
||||
QCheckBox::indicator:checked {
|
||||
background: #4a90e2;
|
||||
border-color: #4a90e2;
|
||||
image: none;
|
||||
}
|
||||
QCheckBox::indicator:hover { border-color: #5a9ff0; }
|
||||
|
||||
/* Labels */
|
||||
QLabel#title { font-size: 16pt; font-weight: 700; color: #ffffff; }
|
||||
QLabel#subtle { color: #9aa0ab; }
|
||||
QLabel#statusOk { color: #4caf78; font-weight: 600; }
|
||||
QLabel#statusBad { color: #e06c5b; font-weight: 600; }
|
||||
QLabel#valueBadge {
|
||||
background: #2d3340;
|
||||
border: 1px solid #3a4150;
|
||||
border-radius: 6px;
|
||||
padding: 3px 8px;
|
||||
font-weight: 600;
|
||||
color: #8ab4f8;
|
||||
}
|
||||
|
||||
/* Terminal text view */
|
||||
QPlainTextEdit#terminal {
|
||||
background-color: #15171c;
|
||||
color: #c8d0da;
|
||||
border: 1px solid #2c313a;
|
||||
border-radius: 8px;
|
||||
font-family: "JetBrains Mono", "DejaVu Sans Mono", monospace;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
/* Scrollbars */
|
||||
QScrollBar:vertical {
|
||||
background: transparent; width: 12px; margin: 2px;
|
||||
}
|
||||
QScrollBar::handle:vertical {
|
||||
background: #3a4150; border-radius: 5px; min-height: 24px;
|
||||
}
|
||||
QScrollBar::handle:vertical:hover { background: #4a90e2; }
|
||||
QScrollBar::add-line, QScrollBar::sub-line { height: 0; }
|
||||
|
||||
QStatusBar { background: #15171c; color: #9aa0ab; }
|
||||
QStatusBar::item { border: none; }
|
||||
157
resources/styles/light.qss
Normal file
157
resources/styles/light.qss
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
/* Apart Concept 1 Controller - Light theme */
|
||||
|
||||
QWidget {
|
||||
background-color: #f4f6f9;
|
||||
color: #1f2430;
|
||||
font-family: "Segoe UI", "Noto Sans", "DejaVu Sans", sans-serif;
|
||||
font-size: 10.5pt;
|
||||
}
|
||||
|
||||
QMainWindow, QDialog {
|
||||
background-color: #eef1f5;
|
||||
}
|
||||
|
||||
QToolTip {
|
||||
background-color: #ffffff;
|
||||
color: #1f2430;
|
||||
border: 1px solid #cdd4de;
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
QGroupBox {
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #dce1e8;
|
||||
border-radius: 10px;
|
||||
margin-top: 14px;
|
||||
padding: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
QGroupBox::title {
|
||||
subcontrol-origin: margin;
|
||||
subcontrol-position: top left;
|
||||
left: 12px;
|
||||
padding: 0 6px;
|
||||
color: #1a73e8;
|
||||
}
|
||||
|
||||
QTabWidget::pane {
|
||||
border: 1px solid #dce1e8;
|
||||
border-radius: 10px;
|
||||
top: -1px;
|
||||
background: #ffffff;
|
||||
}
|
||||
QTabBar::tab {
|
||||
background: transparent;
|
||||
color: #6b7280;
|
||||
padding: 9px 18px;
|
||||
margin-right: 4px;
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 8px;
|
||||
font-weight: 600;
|
||||
}
|
||||
QTabBar::tab:hover { color: #1f2430; }
|
||||
QTabBar::tab:selected {
|
||||
background: #e8f0fe;
|
||||
color: #1a73e8;
|
||||
}
|
||||
|
||||
QPushButton {
|
||||
background-color: #ffffff;
|
||||
color: #1f2430;
|
||||
border: 1px solid #cdd4de;
|
||||
border-radius: 8px;
|
||||
padding: 7px 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
QPushButton:hover { background-color: #f0f4fa; border-color: #1a73e8; }
|
||||
QPushButton:pressed { background-color: #e3ebf7; }
|
||||
QPushButton:disabled { color: #aab1bd; background-color: #f1f3f6; border-color: #e2e6ec; }
|
||||
QPushButton#accent {
|
||||
background-color: #1a73e8; color: #ffffff; border: none;
|
||||
}
|
||||
QPushButton#accent:hover { background-color: #1666d4; }
|
||||
QPushButton#accent:disabled { background-color: #a9c6f3; color: #eef3fc; }
|
||||
QPushButton#danger {
|
||||
background-color: #d93b30; color: #ffffff; border: none;
|
||||
}
|
||||
QPushButton#danger:hover { background-color: #c5342a; }
|
||||
|
||||
QComboBox {
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #cdd4de;
|
||||
border-radius: 8px;
|
||||
padding: 6px 10px;
|
||||
min-height: 18px;
|
||||
}
|
||||
QComboBox:hover { border-color: #1a73e8; }
|
||||
QComboBox::drop-down { border: none; width: 22px; }
|
||||
QComboBox QAbstractItemView {
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #cdd4de;
|
||||
selection-background-color: #1a73e8;
|
||||
selection-color: #ffffff;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
QSpinBox, QLineEdit {
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #cdd4de;
|
||||
border-radius: 8px;
|
||||
padding: 6px 8px;
|
||||
selection-background-color: #1a73e8;
|
||||
selection-color: #ffffff;
|
||||
}
|
||||
QSpinBox:hover, QLineEdit:hover { border-color: #1a73e8; }
|
||||
QSpinBox:focus, QLineEdit:focus { border-color: #1666d4; }
|
||||
|
||||
QSlider::groove:horizontal {
|
||||
height: 6px; background: #d7dce4; border-radius: 3px;
|
||||
}
|
||||
QSlider::sub-page:horizontal { background: #1a73e8; border-radius: 3px; }
|
||||
QSlider::handle:horizontal {
|
||||
background: #ffffff;
|
||||
border: 1px solid #b7c0cd;
|
||||
width: 18px; height: 18px; margin: -7px 0; border-radius: 9px;
|
||||
}
|
||||
QSlider::handle:horizontal:hover { border-color: #1a73e8; }
|
||||
|
||||
QCheckBox { spacing: 8px; }
|
||||
QCheckBox::indicator {
|
||||
width: 18px; height: 18px; border-radius: 5px;
|
||||
border: 1px solid #b7c0cd; background: #ffffff;
|
||||
}
|
||||
QCheckBox::indicator:checked {
|
||||
background: #1a73e8; border-color: #1a73e8; image: none;
|
||||
}
|
||||
QCheckBox::indicator:hover { border-color: #1666d4; }
|
||||
|
||||
QLabel#title { font-size: 16pt; font-weight: 700; color: #1f2430; }
|
||||
QLabel#subtle { color: #6b7280; }
|
||||
QLabel#statusOk { color: #1e8e5a; font-weight: 600; }
|
||||
QLabel#statusBad { color: #c5342a; font-weight: 600; }
|
||||
QLabel#valueBadge {
|
||||
background: #e8f0fe;
|
||||
border: 1px solid #cdddfb;
|
||||
border-radius: 6px;
|
||||
padding: 3px 8px;
|
||||
font-weight: 600;
|
||||
color: #1a73e8;
|
||||
}
|
||||
|
||||
QPlainTextEdit#terminal {
|
||||
background-color: #ffffff;
|
||||
color: #2b313c;
|
||||
border: 1px solid #dce1e8;
|
||||
border-radius: 8px;
|
||||
font-family: "JetBrains Mono", "DejaVu Sans Mono", monospace;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
QScrollBar:vertical { background: transparent; width: 12px; margin: 2px; }
|
||||
QScrollBar::handle:vertical { background: #c2c9d4; border-radius: 5px; min-height: 24px; }
|
||||
QScrollBar::handle:vertical:hover { background: #1a73e8; }
|
||||
QScrollBar::add-line, QScrollBar::sub-line { height: 0; }
|
||||
|
||||
QStatusBar { background: #e6eaf0; color: #6b7280; }
|
||||
QStatusBar::item { border: none; }
|
||||
Loading…
Add table
Add a link
Reference in a new issue