MetaCore-startup/MetaCore/ui/styles.py
陈横 fd3eb3e72a feat(ui): 优化项目导入和创建对话框界面
- 移除了创建项目对话框的最大尺寸限制,提升布局灵活性
- 调整了导入项目对话框中文件列表项的样式和结构
- 更新了图标管理器,新增 import_file_list 图标支持
- 修改了文件列表项组件,使用自定义图标并优化布局间距
- 调整了样式表中多个组件的尺寸和颜色,改善视觉效果
- 优化了文件列表项的显示逻辑,修复了可能的布局问题
- 更新了项目预览图片路径,确保正确显示项目封面
2025-10-23 18:56:28 +08:00

1453 lines
42 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
MetaCore 应用程序样式表定义
本文件包含了 MetaCore 项目管理平台的完整 UI 样式定义,采用现代化的深色主题设计。
样式表使用 Qt StyleSheet (QSS) 语法,类似于 CSS为应用程序提供统一的视觉风格。
主要特色:
- 深色主题设计,护眼且现代
- 紫色主色调 (#8b5cf6),体现科技感
- 丰富的交互效果和动画
- 响应式设计,支持不同屏幕尺寸
- 完整的组件样式覆盖
作者: MetaCore Team
版本: 1.0.0
更新日期: 2024
"""
class StyleSheet:
"""
样式表管理类
这个类负责管理整个应用程序的样式表,提供统一的样式获取接口。
采用静态方法设计,方便在应用程序的任何地方调用。
主要功能:
- 提供完整的应用程序样式表
- 统一管理颜色主题和设计规范
- 支持未来的主题切换扩展
"""
@staticmethod
def get_main_style():
"""
获取主样式表
返回完整的 QSS 样式表字符串,包含所有 UI 组件的样式定义。
样式表采用分层设计,从全局样式到具体组件样式,确保样式的一致性和可维护性。
样式表结构:
1. 全局样式 - 基础颜色、字体等
2. 主窗口样式 - 窗口背景等
3. 侧边栏样式 - 导航、按钮等
4. 项目区域样式 - 工具栏、搜索等
5. 项目卡片样式 - 卡片布局和交互
6. 对话框样式 - 弹窗和表单
7. 通用组件样式 - 滚动条、菜单等
Returns:
str: 完整的 QSS 样式表字符串
"""
return """
/* ---------- Base Theme ---------- */
QWidget {
background-color: #0f1115;
color: #f3f4f8;
font-family: "Inter", "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
}
QMainWindow {
background-color: #0f1115;
}
#sidebar {
background-color: #000000;
border-right: 1px solid #1c2029;
width: 313px;
}
#logoWidget {
background-color: transparent;
border-bottom: 1px solid rgba(84, 89, 98, 0.8);
margin: 0 46px 0 37px;
}
#logoIcon {
background-color: #2a2f3b;
border: 1px solid #303543;
border-radius: 4px;
min-width: 80px;
min-height: 80px;
}
#logoText {
background-color: transparent;
color: #FFFFFF;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 24px;
font-weight: 500; /* Medium weight in Qt */
letter-spacing: 0.4px;
}
#quickActions {
background-color: transparent;
}
QPushButton#createBtn,
QPushButton#sidebarImportBtn {
background-color: rgba(84, 89, 98, 0.2);
border: 1px solid #979fad;
border-radius: 6px;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-weight: 300;
font-size: 16px;
letter-spacing: 0.8px;
padding: 0px 16px;
text-align: center;
min-height: 36px;
max-height: 36px;
}
QPushButton#createBtn:hover,
QPushButton#sidebarImportBtn:hover {
background-color: rgba(84, 89, 98, 0.3);
border-color: #a5abb8;
}
QPushButton#createBtn:pressed,
QPushButton#sidebarImportBtn:pressed {
background-color: #2B56C5;
border-color: #b0b6c3;
}
#navScrollArea {
background-color: #000000;
border: none;
}
#navWidget {
background-color: #000000;
}
#navSection {
margin-top: 0px;
}
QPushButton#navSectionTitle {
border: none;
background: #000000;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 16px;
font-weight: 500;
letter-spacing: 0.8px;
padding: 0px 37px;
text-align: left;
min-height: 20px;
max-height: 20px;
}
QWidget#navItems {
background: #000000;
}
QPushButton#navItem {
border: none;
border-left: 3px solid transparent;
border-radius: 4px;
background: #000000;
color: #ebebeb;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 300;
letter-spacing: 0.7px;
padding: 0px;
padding-left: 20px;
text-align: left;
min-width: 186px;
max-width: 186px;
min-height: 30px;
max-height: 30px;
}
QPushButton#navItem:hover {
background-color: rgba(84, 89, 98, 0.3);
color: #ffffff;
}
QPushButton#navItem:checked {
background-color: rgba(84, 89, 98, 0.5);
color: #ffffff;
border-left: 3px solid transparent;
font-weight: 300;
}
QPushButton#navItem::icon {
padding-right: 8px;
}
/* ---------- Content Area ---------- */
#projectArea {
background-color: #000000;
}
#contentHeader {
background: transparent;
border-bottom: 1px solid #1f2532;
margin: 0 36px; /* 上下为0左右为36px */
}
#breadcrumbContainer {
background: 19191b;
}
#breadcrumbBase {
background: transparent;
color: rgba(255, 255, 255, 0.7);
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 20px;
font-weight: 400;
letter-spacing: 1px;
}
#breadcrumbSeparator {
background: transparent;
color: rgba(255, 255, 255, 0.7);
padding: 0 8px;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 20px;
font-weight: 400;
letter-spacing: 1px;
}
#breadcrumbCurrent {
background: transparent;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 24px;
font-weight: 500;
letter-spacing: 1.2px;
}
QLineEdit#searchInput {
background-color: rgba(84, 89, 98, 0.2);
border: 1px solid rgba(92, 97, 105, 0.8);
border-radius: 4px;
color: #5c6169;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 18px;
font-weight: 300;
letter-spacing: 0.9px;
padding: 0px 16px 0px 10px;
min-height: 39px;
max-height: 39px;
}
QLineEdit#searchInput:focus {
border-color: rgba(92, 97, 105, 1.0);
background-color: rgba(84, 89, 98, 0.25);
}
QLineEdit#searchInput::placeholder {
color: #5c6169;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 18px;
font-weight: 300;
letter-spacing: 0.9px;
}
QScrollArea#projectScrollArea {
background: transparent;
border: none;
}
#projectsContainer {
background-color: transparent;
}
#projectCard {
background-color: transparent;
border: none;
border-radius: 5px;
min-width: 276px;
max-width: 276px;
min-height: 191px;
max-height: 191px;
}
#projectCard:hover {
/* 悬停效果通过子组件实现 */
}
#projectHeader {
background: transparent;
border-bottom: none;
}
#projectTitle {
color: #d4d4d4;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 17.3px;
font-weight: 500;
letter-spacing: 0.865px;
}
QPushButton#menuBtn {
background: #424347;
border: 1px solid rgba(235, 235, 235, 0.2);
color: #ebebeb;
padding: 0px;
border-radius: 1px;
}
QPushButton#menuBtn:hover {
background-color: rgba(235, 235, 235, 0.1);
border-color: rgba(235, 235, 235, 0.3);
}
/* 新的覆盖按钮样式 - 完全去掉外层圈 */
QPushButton#overlayInfoBtn, QPushButton#overlayDeleteBtn {
background-color: transparent;
border: none;
border-radius: 0px;
color: #ffffff;
font-size: 12px;
font-weight: 400;
outline: none;
padding: 0px;
margin: 0px;
}
QPushButton#overlayInfoBtn:hover, QPushButton#overlayDeleteBtn:hover {
background-color: transparent;
border: none;
outline: none;
}
QPushButton#overlayInfoBtn:pressed, QPushButton#overlayDeleteBtn:pressed {
background-color: transparent;
border: none;
outline: none;
}
QPushButton#overlayInfoBtn:focus, QPushButton#overlayDeleteBtn:focus {
background-color: transparent;
border: none;
outline: none;
}
QPushButton#overlayDeleteBtn {
color: #ff6b6b;
}
QPushButton#overlayDeleteBtn:hover {
background-color: rgba(255, 107, 107, 0.1);
border-color: rgba(255, 107, 107, 0.3);
}
#projectImageContainer {
padding: 0 20px;
}
#projectImage {
background-color: #292f3d;
border-radius: 5px;
min-height: 140px;
}
#projectIcon {
font-size: 36px;
color: #596074;
}
#projectFooter {
background: #424347;
border-top: none;
margin-top: 0px;
padding: 12px 20px;
min-height: 53px;
max-height: 53px;
}
#projectDate {
color: #d4d4d4;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12.36px;
font-weight: 300;
letter-spacing: 0.618px;
}
/* 新的覆盖层样式 */
#overlayProjectTitle {
color: #d4d4d4;
font-family: "Inter", sans-serif;
font-size: 17px;
font-weight: 500;
background: transparent;
}
#overlayProjectDate, #overlayProjectSize {
color: #d4d4d4;
font-family: "Inter", sans-serif;
font-size: 12px;
font-weight: 300;
background: transparent;
}
#bottomOverlay {
background-color: rgba(66, 67, 71, 0.9);
border-radius: 0px;
}
/* ---------- Project Settings Page ---------- */
#settingsPage {
background-color: #000000;
}
#settingsBody,
#settingsSection,
#settingsFieldRow {
background-color: transparent;
}
#settingsTitle {
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 28px;
font-weight: 600;
letter-spacing: 1.1px;
}
#settingsSubtitle {
color: rgba(236, 239, 246, 0.72);
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 15px;
font-weight: 300;
letter-spacing: 0.5px;
}
#settingsDivider {
background-color: #1f2532;
border: none;
min-height: 1px;
max-height: 1px;
margin: 0 36px;
}
#settingsCard {
background-color: transparent;
border: none;
}
#settingsRow {
background-color: transparent;
}
#settingsSectionTitle {
background-color: transparent;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 20px;
font-weight: 500;
letter-spacing: 0.5px;
}
#settingsSectionDesc {
color: rgba(255, 255, 255, 0.6);
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 300;
letter-spacing: 0.3px;
}
QWidget#settingsFieldRow {
background-color: transparent;
}
QLineEdit#settingsPathInput {
background-color: rgba(89, 100, 113, 0.2);
border: 1px solid rgba(89, 100, 113, 0.2);
border-radius: 4px;
color: #e6e9f2;
padding: 0 18px;
min-height: 48px;
}
QLineEdit#settingsPathInput:focus {
border-color: rgba(110, 118, 134, 0.95);
background-color: #1f2430;
}
QLineEdit#settingsPathInput::placeholder {
color: rgba(255, 255, 255, 0.7);
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 16px;
}
QPushButton#settingsPrimaryBtn,
QPushButton#settingsGhostBtn {
background-color: rgba(76, 92, 110, 0.6);
border: none;
border-radius: 4px;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 16px;
font-weight: 500;
letter-spacing: 0.4px;
min-height: 48px;
min-width: 175px;
}
QPushButton#settingsPrimaryBtn:hover,
QPushButton#settingsGhostBtn:hover {
background-color: rgba(76, 92, 110, 0.8);
}
QPushButton#settingsPrimaryBtn:pressed,
QPushButton#settingsGhostBtn:pressed {
background-color: rgba(45, 94, 221, 0.4);
}
/* ---------- Scrollbars ---------- */
QScrollBar:vertical {
background: transparent;
width: 12px;
margin: 8px 0;
}
QScrollBar::handle:vertical {
background: #2b313f;
border-radius: 6px;
min-height: 32px;
}
QScrollBar::handle:vertical:hover {
background: #3a4254;
}
QScrollBar::add-line:vertical,
QScrollBar::sub-line:vertical {
height: 0;
}
QScrollBar:horizontal {
background: transparent;
height: 12px;
margin: 0 8px;
}
QScrollBar::handle:horizontal {
background: #2b313f;
border-radius: 6px;
min-width: 32px;
}
QScrollBar::handle:horizontal:hover {
background: #3a4254;
}
QScrollBar::add-line:horizontal,
QScrollBar::sub-line:horizontal {
width: 0;
}
QToolTip {
background-color: #1c202b;
color: #f5f6f9;
border: 1px solid #2a303d;
padding: 6px 8px;
}
/* ---------- Create Project Dialog ---------- */
QDialog#CreateProjectDialog {
background-color: #0c0c0d;
border-radius: 5px;
}
#createProjectContent{
background-color: #0c0c0d;
border-radius: 5px;
}
#templateSection {
background-color: #0c0c0d;
}
QDialog#CreateProjectDialog QLabel#templateHeaderLabel {
background-color: rgba(66, 67, 71, 0.2);
min-width: 724px;
max-width: 724px;
min-height: 33px;
max-height: 33px;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 600;
letter-spacing: 0.6px;
padding: 0 20px;
}
QDialog#CreateProjectDialog QLabel#sectionTitle{
color: #ffffff;
border: none;
background-color: transparent;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 500;
letter-spacing: 0.7px;
}
QDialog#CreateProjectDialog QLabel#templateDescription {
border: none;
background-color: transparent;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 10px;
}
QScrollArea#templateScrollArea {
background-color: transparent;
border: 0px solid rgba(66, 67, 71, 0.35);
}
#projectInfoSection {
background-color: #19191B;
}
#projectInfoHeader{
background-color: #19191B;
}
#templatesContainer {
background-color: rgba(66, 67, 71, 0.2);
}
QPushButton#templateItem {
background-color: rgba(66, 67, 71, 0.4);
border: 1px solid transparent;
border-radius: 5px;
color: #ffffff;
}
QPushButton#templateItem:hover {
background-color: rgba(66, 67, 71, 0.6);
border-color: rgba(43, 86, 197, 0.3);
}
QPushButton#templateItem:checked {
background-color: rgba(43, 86, 197, 0.2); /* #2B56C5 20%透明度 */
border: 1px solid #2b56c5;
}
#templateIcon {
color: #ffffff;
font-size: 32px;
background: transparent;
}
#templateName {
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12px;
font-weight: 400;
letter-spacing: 0.6px;
background: transparent;
}
#templateDescription {
color: rgba(255, 255, 255, 0.7);
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 10px;
font-weight: 300;
letter-spacing: 0.5px;
line-height: 1.2;
background: transparent;
}
#formLabel {
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 500;
letter-spacing: 0.7px;
background: transparent;
margin-bottom: 5px;
}
QLineEdit#formInput {
background-color: rgba(89, 100, 113, 0.2);
border: none;
border-radius: 4px;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12px;
font-weight: 300;
letter-spacing: 0.6px;
padding: 0px 10px;
}
QLineEdit#formInput:focus {
border-color: rgba(76, 92, 110, 1.0);
background-color: rgba(89, 100, 113, 0.3);
}
QLineEdit#formInput::placeholder {
color: rgba(235, 235, 235, 0.7);
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12px;
font-weight: 300;
letter-spacing: 0.6px;
}
QLineEdit#formInput[error="true"] {
border-color: #ff6b6b;
background-color: rgba(255, 107, 107, 0.1);
}
QLineEdit#formInput[valid="true"] {
border-color: #4ade80;
background-color: rgba(74, 222, 128, 0.1);
}
QTextEdit#formTextArea {
background-color: rgba(89, 100, 113, 0.2);
border: 1px solid rgba(76, 92, 110, 0.6);
border-radius: 4px;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12px;
font-weight: 300;
letter-spacing: 0.6px;
padding: 8px 10px;
}
QTextEdit#formTextArea:focus {
border-color: rgba(76, 92, 110, 1.0);
background-color: rgba(89, 100, 113, 0.3);
}
QPushButton#browseBtn {
background-color: rgba(89, 100, 113, 0.2);
border: 1px solid rgba(76, 92, 110, 0.6);
padding: 0px 41px;
border-radius: 6px;
color: #ffffff;
font-size: 16px;
}
QPushButton#browseBtn:hover {
background-color: rgba(89, 100, 113, 0.4);
border-color: rgba(76, 92, 110, 0.8);
}
QLabel#errorLabel {
color: #ff6b6b;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 11px;
font-weight: 300;
background: transparent;
}
/* Custom Bottom Bar Styles */
#buttonArea {
background-color: transparent;
}
QPushButton#secondaryBtn {
background-color: rgba(84, 89, 98, 0.4);
border: 1px solid #545962;
border-radius: 2px;
color: #ebebeb;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 500;
letter-spacing: 0.7px;
min-width: 95px;
min-height: 36px;
max-width: 95px;
max-height: 36px;
}
QPushButton#secondaryBtn:hover {
background-color: rgba(84, 89, 98, 0.6);
border-color: #6a7080;
}
QPushButton#secondaryBtn:pressed {
background-color: rgba(84, 89, 98, 0.8);
}
QPushButton#primaryBtn {
background-color: #2b57c5;
border: none;
border-radius: 2px;
color: #ebebeb;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 500;
letter-spacing: 0.7px;
min-width: 95px;
min-height: 36px;
max-width: 95px;
max-height: 36px;
}
QPushButton#primaryBtn:hover {
background-color: #3d67d5;
}
QPushButton#primaryBtn:pressed {
background-color: #1e47a5;
}
QPushButton#primaryBtn:disabled {
background-color: rgba(43, 87, 197, 0.4);
color: rgba(235, 235, 235, 0.5);
}
/* ---------- Import Project Dialog ---------- */
#importGroup {
background-color: #19191b;
border: 1px solid rgba(66, 67, 71, 0.3);
border-radius: 4px;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 500;
letter-spacing: 0.7px;
padding: 10px;
}
#importGroup::title {
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 500;
letter-spacing: 0.7px;
background-color: rgba(66, 67, 71, 0.2);
padding: 8px 15px;
margin: 0px;
border-bottom: 1px solid rgba(66, 67, 71, 0.3);
}
#uploadArea {
background-color: rgba(89, 100, 113, 0.1);
border: 1px solid rgba(76, 92, 110, 0.6);
border-radius: 4px;
min-height: 288px;
}
#uploadArea[dragOver="true"] {
background-color: rgba(43, 86, 197, 0.1);
border-color: #2b56c5;
}
QPushButton#uploadBtn {
background-color: #2b57c5;
border: none;
border-radius: 6px;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 16px;
font-weight: 400;
letter-spacing: 0.8px;
min-width: 151px;
min-height: 42px;
max-width: 151px;
max-height: 42px;
}
QPushButton#uploadBtn:hover {
background-color: #3d67d5;
}
QPushButton#uploadBtn:pressed {
background-color: #1e47a5;
}
QPushButton#selectBtn {
background-color: rgba(84, 89, 98, 0.4);
border: 1px solid rgba(84, 89, 98, 0.6);
border-radius: 4px;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 400;
letter-spacing: 0.7px;
padding: 8px 16px;
}
QPushButton#selectBtn:hover {
background-color: rgba(84, 89, 98, 0.6);
border-color: rgba(84, 89, 98, 0.8);
}
#fileList {
background-color: rgba(89, 100, 113, 0.2);
border: 1px solid rgba(76, 92, 110, 0.6);
border-radius: 4px;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12px;
font-weight: 300;
letter-spacing: 0.6px;
padding: 6px;
}
#fileList::item {
background-color: rgba(84, 89, 98, 0.2);
border-radius: 4px;
color: rgba(255, 255, 255, 0.9);
padding: 6px 8px;
margin: 1px 0px;
min-height: 26px;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12px;
font-weight: 300;
letter-spacing: 0.6px;
}
#fileList::item:hover {
background-color: rgba(84, 89, 98, 0.3);
}
#fileList::item:selected {
background-color: rgba(43, 86, 197, 0.3);
border: 1px solid #2b56c5;
}
#fileList::item:selected:hover {
background-color: rgba(43, 86, 197, 0.4);
}
#optionsGroup {
background-color: transparent;
}
QDialog#ImportProjectDialog QCheckBox {
background: transparent;
background-color: transparent;
background: transparent;
background-color: transparent;
background: transparent;
background-color: transparent;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12px;
font-weight: 300;
letter-spacing: 0.6px;
spacing: 8px;
}
QDialog#ImportProjectDialog QCheckBox::indicator {
width: 18px;
height: 18px;
border-radius: 2px;
}
QDialog#ImportProjectDialog QCheckBox::indicator:unchecked {
background-color: rgba(217, 217, 217, 0.1);
border: 1px solid rgba(77, 116, 189, 0.4);
}
QDialog#ImportProjectDialog QCheckBox::indicator:unchecked:hover {
background-color: rgba(217, 217, 217, 0.15);
border: 1px solid rgba(77, 116, 189, 0.6);
}
QDialog#ImportProjectDialog QCheckBox::indicator:checked {
background-color: rgba(40, 126, 255, 0.6);
border: 1px solid #289eff;
}
QDialog#ImportProjectDialog QCheckBox::indicator:checked:hover {
background-color: rgba(40, 126, 255, 0.8);
}
/* Specific styling for the checked checkbox with checkmark */
QDialog#ImportProjectDialog QCheckBox::indicator:checked {
background-color: rgba(40, 126, 255, 0.6);
border: 1px solid #289eff;
image: none;
}
/* Import dialog specific button styles */
QDialog#ImportProjectDialog QPushButton#primaryBtn:disabled {
background-color: rgba(89, 100, 113, 0.2);
color: rgba(235, 235, 235, 0.5);
border: none;
}
QDialog#ImportProjectDialog QPushButton#secondaryBtn:hover {
background-color: rgba(84, 89, 98, 0.6);
border-color: #6a7080;
}
QDialog#ImportProjectDialog QPushButton#secondaryBtn:pressed {
background-color: rgba(84, 89, 98, 0.8);
}
QDialog#ImportProjectDialog QPushButton#primaryBtn:hover {
background-color: #3d67d5;
}
QDialog#ImportProjectDialog QPushButton#primaryBtn:pressed {
background-color: #1e47a5;
}
/* Enhanced upload area feedback */
#uploadArea {
background-color: rgba(89, 100, 113, 0.1);
border: 1px solid rgba(76, 92, 110, 0.6);
border-radius: 4px;
min-height: 288px;
transition: all 0.2s ease;
}
#uploadArea[dragOver="true"] {
background-color: rgba(43, 86, 197, 0.15);
border: 2px solid #2b56c5;
border-style: dashed;
}
/* ---------- Import Project Dialog Overrides ---------- */
QDialog#ImportProjectDialog {
background-color: #0c0c0d;
border-radius: 5px;
}
QDialog#ImportProjectDialog QWidget#importContentArea {
background-color: #0c0c0d;
border-radius: 5px;
}
QDialog#CreateProjectDialog #customTitleBar {
background-color: #0c0c0d;
border-bottom: none;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
min-height: 54px;
}
QDialog#CreateProjectDialog #customTitleLabel {
color: #f4f5f8;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 16px;
font-weight: 600;
letter-spacing: 0.6px;
background: transparent;
}
QDialog#CreateProjectDialog #customCloseBtn {
background-color: transparent;
border-radius: 4px;
color: #f4f5f8;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 500;
min-width: 18px;
min-height: 18px;
}
QDialog#CreateProjectDialog #customCloseBtn:hover {
background-color: rgba(235, 235, 235, 0.08);
border-color: rgba(235, 235, 235, 0.7);
}
QDialog#CreateProjectDialog #customCloseBtn:pressed {
background-color: rgba(235, 235, 235, 0.18);
border-color: #ffffff;
}
QDialog#ImportProjectDialog #customTitleBar {
background-color: #0c0c0d;
border-bottom: none;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
min-height: 54px;
}
QDialog#ImportProjectDialog #customTitleIcon {
qproperty-alignment: 'AlignVCenter | AlignLeft';
}
QDialog#ImportProjectDialog #customTitleLabel {
color: #f4f5f8;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 16px;
font-weight: 600;
letter-spacing: 0.6px;
background: transparent;
}
QDialog#ImportProjectDialog #customCloseBtn {
background-color: transparent;
border-radius: 4px;
color: #f4f5f8;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 500;
min-width: 18px;
min-height: 18px;
}
QDialog#ImportProjectDialog #customCloseBtn:hover {
background-color: rgba(235, 235, 235, 0.08);
border-color: rgba(235, 235, 235, 0.7);
}
QDialog#ImportProjectDialog #customCloseBtn:pressed {
background-color: rgba(235, 235, 235, 0.18);
border-color: #ffffff;
}
QDialog#ImportProjectDialog QFrame#importSectionFrame {
background-color: #0c0c0d;
border: none;
border-radius: 5px;
}
QDialog#ImportProjectDialog QFrame#importSectionHeader {
background-color: #19191B;
border: none;
min-width: 1157px;
max-width: 1157px;
min-height: 33px;
max-height: 33px;
}
QDialog#ImportProjectDialog QLabel#importSectionTitle {
color: #f4f5f8;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 600;
letter-spacing: 0.6px;
background: transparent;
}
QDialog#ImportProjectDialog QFrame#importSectionBody {
background-color: #19191B;
min-width: 1157px;
max-width: 1157px;
min-height: 450px;
max-height: 450px;
}
QDialog#ImportProjectDialog #importGroup {
background-color: #16181d;
border: 1px solid rgba(73, 76, 84, 0.55);
border-radius: 6px;
color: #f4f5f8;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 500;
letter-spacing: 0.6px;
padding: 12px;
}
QDialog#ImportProjectDialog #importGroup::title {
background-color: rgba(48, 51, 58, 0.45);
border-bottom: 1px solid rgba(73, 76, 84, 0.45);
margin: -8px -8px 12px -8px;
padding: 12px 18px;
}
QDialog#ImportProjectDialog #uploadArea {
background: transparent;
}
QDialog#ImportProjectDialog #uploadContentFrame {
background-color: rgba(89, 100, 113, 0.1);
border-radius: 4px;
min-width: 1127px;
max-width: 1127px;
min-height: 288px;
max-height: 288px;
border: none;
transition: background-color 0.2s ease, border 0.2s ease;
}
QDialog#ImportProjectDialog #uploadArea[dragOver="true"] #uploadContentFrame {
background-color: rgba(43, 86, 197, 0.12);
border: 2px dashed #2b56c5;
}
QDialog#ImportProjectDialog QLabel#uploadIcon {
qproperty-alignment: 'AlignCenter';
background: transparent;
}
QDialog#ImportProjectDialog QLabel#uploadTitle {
color: #dfe2ea;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
font-weight: 400;
letter-spacing: 0.4px;
background: transparent;
}
QDialog#ImportProjectDialog QLabel#uploadHint,
QDialog#ImportProjectDialog QLabel#uploadHintLabel {
color: rgba(255, 255, 255, 0.9);
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12px;
font-weight: 300;
letter-spacing: 0.3px;
background: transparent;
margin: 0px;
padding: 4px 0px;
}
QDialog#ImportProjectDialog QPushButton#uploadBtn {
background-color: #2b57c5;
border: none;
border-radius: 6px;
color: #ffffff;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 16px;
font-weight: 400;
letter-spacing: 0.8px;
min-width: 151px;
max-width: 151px;
min-height: 42px;
max-height: 42px;
}
QDialog#ImportProjectDialog QPushButton#uploadBtn:hover {
background-color: #3d67d5;
}
QDialog#ImportProjectDialog QPushButton#uploadBtn:pressed {
background-color: #1e47a5;
}
QDialog#ImportProjectDialog #fileList {
background-color: rgba(89, 100, 113, 0.2);
border: none;
border-radius: 4px;
padding: 8px;
}
QDialog#ImportProjectDialog #fileList:focus {
border-color: rgba(76, 104, 196, 0.6);
}
QDialog#ImportProjectDialog #fileList QWidget#fileListItem {
background-color: transparent;
border: none;
border-radius: 0;
}
QDialog#ImportProjectDialog #fileList QWidget#fileListItem:hover {
background-color: transparent;
border: none;
}
QDialog#ImportProjectDialog #fileList QLabel#fileListItemIcon {
background: transparent;
}
QDialog#ImportProjectDialog QLabel#fileListItemTitle {
background-color: transparent;
color: #f3f4f8;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12x;
font-weight: 500;
letter-spacing: 0.3px;
}
QDialog#ImportProjectDialog QLabel#fileListItemMeta {
color: rgba(223, 226, 234, 0.65);
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 12px;
letter-spacing: 0.2px;
}
QDialog#ImportProjectDialog QWidget#optionsGroup {
background-color: transparent;
border: none;
border-radius: 0;
}
QDialog#ImportProjectDialog QCheckBox {
background: transparent;
background-color: transparent;
color: rgba(239, 240, 244, 0.88);
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 13px;
font-weight: 400;
letter-spacing: 0.4px;
spacing: 8px;
}
QDialog#ImportProjectDialog QCheckBox::indicator {
width: 18px;
height: 18px;
border-radius: 3px;
}
QDialog#ImportProjectDialog QCheckBox::indicator:unchecked {
background-color: rgba(217, 217, 217, 0.08);
border: 1px solid rgba(77, 116, 189, 0.4);
}
QDialog#ImportProjectDialog QCheckBox::indicator:unchecked:hover {
background-color: rgba(217, 217, 217, 0.14);
border: 1px solid rgba(77, 116, 189, 0.6);
}
QDialog#ImportProjectDialog QCheckBox::indicator:checked {
background-color: rgba(40, 126, 255, 0.7);
border: 1px solid #289eff;
image: none;
}
QDialog#ImportProjectDialog QCheckBox::indicator:checked:hover {
background-color: rgba(40, 126, 255, 0.85);
}
QDialog#ImportProjectDialog #buttonArea {
background-color: #0c0c0d;
border-top: 1px solid rgba(58, 63, 76, 0.7);
margin: 0 10px; /* 上下0px左右20px */
min-height: 36px;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
QDialog#ImportProjectDialog QPushButton#secondaryBtn {
background-color: rgba(84, 89, 98, 0.35);
border: 1px solid rgba(104, 110, 122, 0.65);
border-radius: 4px;
color: #ebebeb;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
padding: 0px 0px;
min-height: 36px;
max-height: 36px;
max-width: 95px;
min-width: 95px;
}
QDialog#ImportProjectDialog QPushButton#secondaryBtn:hover {
background-color: rgba(84, 89, 98, 0.55);
border-color: rgba(136, 144, 160, 0.7);
}
QDialog#ImportProjectDialog QPushButton#secondaryBtn:pressed {
background-color: rgba(84, 89, 98, 0.75);
}
QDialog#ImportProjectDialog QPushButton#primaryBtn {
background-color: #2b57c5;
border: none;
border-radius: 4px;
color: #ebebeb;
font-family: "Inter" "Microsoft YaHei", "Segoe UI", sans-serif;
font-size: 14px;
padding: 0px 0px;
min-height: 37px;
max-height: 37px;
max-width: 125px;
min-width: 125px;
}
QDialog#ImportProjectDialog QPushButton#primaryBtn:hover {
background-color: #3d67d5;
}
QDialog#ImportProjectDialog QPushButton#primaryBtn:pressed {
background-color: #1e47a5;
}
QDialog#ImportProjectDialog QPushButton#primaryBtn:disabled {
background-color: rgba(89, 100, 113, 0.25);
color: rgba(235, 235, 235, 0.55);
}
"""
@staticmethod
def get_card_style():
return """
#projectCard {
background-color: #1b1f2a;
border: 1px solid #242a38;
border-radius: 18px;
}
#projectCard:hover {
background-color: #212634;
border-color: #2d3343;
}
#projectHeader {
background: transparent;
border-bottom: none;
}
#projectTitle {
color: #f2f4f9;
font-size: 15px;
font-weight: 600;
}
#projectImage {
background-color: #292f3d;
border-radius: 5px;
min-height: 140px;
}
#projectFooter {
background: transparent;
border-top: 1px solid #232838;
margin-top: 12px;
padding-top: 12px;
}
#projectDate {
color: #9aa1b3;
font-size: 12px;
}
"""
@staticmethod
def get_context_menu_style():
return """
QMenu {
background-color: #424347;
border: 1px solid #5a5a6a;
border-radius: 6px;
padding: 4px 0px;
}
QMenu::item {
background-color: transparent;
border-radius: 4px;
padding: 6px 12px;
margin: 1px 6px;
}
QMenu::item:selected {
background-color: rgba(255, 255, 255, 0.08);
}
QMenu::icon {
padding-left: 0px;
padding-right: 10px;
}
QMenu::separator {
height: 1px;
background: rgba(84, 89, 98, 0.8);
margin: 4px 0px;
margin-left: 0px;
margin-right: 0px;
}
"""