SIT/config.py

152 lines
3.3 KiB
Python
Raw Permalink Normal View History

2026-01-29 09:22:54 +00:00
"""
全局配置文件
提供应用程序的配置参数和常量定义
"""
import os
from enum import Enum
from pathlib import Path
class FieldType(Enum):
"""字段类型枚举"""
INT = "int"
FLOAT = "float"
DOUBLE = "double"
STRING = "string"
DATETIME = "datetime"
BOOLEAN = "boolean"
BYTES = "bytes"
ENUM = "enum"
STRUCT = "struct"
class OperatorType(Enum):
"""操作符类型枚举"""
DIRECT = "DIRECT"
ADD = "ADD"
SUBTRACT = "SUBTRACT"
MULTIPLY = "MULTIPLY"
DIVIDE = "DIVIDE"
MODULO = "MODULO"
BIT_SHIFT_LEFT = "BIT_SHIFT_LEFT"
BIT_SHIFT_RIGHT = "BIT_SHIFT_RIGHT"
BIT_AND = "BIT_AND"
BIT_OR = "BIT_OR"
BIT_XOR = "BIT_XOR"
CONCAT = "CONCAT"
SUBSTRING = "SUBSTRING"
CAST = "CAST"
class ProtocolType(Enum):
"""传输协议类型枚举"""
TCP = "tcp"
UDP = "udp"
DDS = "dds"
CUSTOM = "custom"
class SerializationType(Enum):
"""序列化格式枚举"""
JSON = "json"
XML = "xml"
PROTOBUF = "protobuf"
CUSTOM = "custom"
class LanguageType(Enum):
"""编程语言类型枚举"""
C = "C"
CPP = "CPP"
PYTHON = "Python"
class LanguageStandard(Enum):
"""语言标准枚举"""
C99 = "C99"
C11 = "C11"
CPP11 = "C++11"
CPP14 = "C++14"
CPP17 = "C++17"
CPP20 = "C++20"
class Config:
"""应用程序配置类"""
# 应用程序信息
APP_NAME = "体系集成试验工具"
APP_VERSION = "1.0.0"
APP_AUTHOR = "System Integration Team"
# 路径配置
BASE_DIR = Path(__file__).parent
DATABASE_DIR = BASE_DIR / "database"
TEMPLATES_DIR = BASE_DIR / "templates"
RESOURCES_DIR = BASE_DIR / "resources"
LOGS_DIR = BASE_DIR / "logs"
# 数据库配置
DATABASE_NAME = "system_integration.db"
DATABASE_PATH = DATABASE_DIR / DATABASE_NAME
# 日志配置
LOG_LEVEL = "INFO"
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
LOG_FILE = LOGS_DIR / "app.log"
LOG_MAX_BYTES = 10 * 1024 * 1024 # 10MB
LOG_BACKUP_COUNT = 5
# UI配置
WINDOW_WIDTH = 1400
WINDOW_HEIGHT = 900
WINDOW_MIN_WIDTH = 1000
WINDOW_MIN_HEIGHT = 700
# 性能配置
MAX_FIELDS = 10000
MAX_MESSAGES = 1000
GRAPH_QUERY_TIMEOUT = 1.0 # 秒
CODE_GEN_TIMEOUT = 5.0 # 秒
# 分页配置
DEFAULT_PAGE_SIZE = 50
MAX_PAGE_SIZE = 200
# 图形编辑器配置
NODE_WIDTH = 120
NODE_HEIGHT = 60
NODE_SPACING = 150
EDGE_WIDTH = 2
# 代码生成配置
DEFAULT_OUTPUT_DIR = BASE_DIR / "generated_code"
INDENT_SIZE = 4
@classmethod
def ensure_directories(cls):
"""确保必要的目录存在"""
directories = [
cls.DATABASE_DIR,
cls.TEMPLATES_DIR,
cls.RESOURCES_DIR,
cls.LOGS_DIR,
cls.DEFAULT_OUTPUT_DIR,
]
for directory in directories:
directory.mkdir(parents=True, exist_ok=True)
@classmethod
def get_template_path(cls, template_name: str) -> Path:
"""获取模板文件路径"""
return cls.TEMPLATES_DIR / template_name
@classmethod
def get_resource_path(cls, resource_name: str) -> Path:
"""获取资源文件路径"""
return cls.RESOURCES_DIR / resource_name
# 初始化配置
Config.ensure_directories()