51
data/editor/editor_config.json
Normal file
51
data/editor/editor_config.json
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"version": "1.0.0",
|
||||||
|
"theme": "default",
|
||||||
|
"custom_themes": [
|
||||||
|
{
|
||||||
|
"id": "custom_default",
|
||||||
|
"name": "自定义 - 默认主题",
|
||||||
|
"primary_color": "#0080ff",
|
||||||
|
"background": "#ffffff",
|
||||||
|
"text_color": "#333333",
|
||||||
|
"link_color": "#576b95",
|
||||||
|
"code_bg": "#f6f8fa",
|
||||||
|
"blockquote_bg": "#f9f9f9",
|
||||||
|
"blockquote_border": "#dfe2e5"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"font": {
|
||||||
|
"body_font": "-apple-system-font, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei UI', 'Microsoft YaHei', Arial, sans-serif",
|
||||||
|
"heading_font": "-apple-system-font, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei UI', 'Microsoft YaHei', Arial, sans-serif",
|
||||||
|
"code_font": "Consolas, Monaco, 'Courier New', monospace",
|
||||||
|
"body_size": 12,
|
||||||
|
"heading_scale": 1.3,
|
||||||
|
"line_height": 1.4
|
||||||
|
},
|
||||||
|
"code_block": {
|
||||||
|
"theme": "xcode",
|
||||||
|
"line_numbers": false,
|
||||||
|
"background": "#f6f8fa",
|
||||||
|
"border_radius": 6
|
||||||
|
},
|
||||||
|
"custom_css": "",
|
||||||
|
"css_schemes": [
|
||||||
|
{
|
||||||
|
"id": "38e4f9a5",
|
||||||
|
"name": "简洁主题",
|
||||||
|
"css": "",
|
||||||
|
"font_config": {
|
||||||
|
"body_font": "-apple-system-font, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei UI', 'Microsoft YaHei', Arial, sans-serif",
|
||||||
|
"code_font": "Consolas, Monaco, 'Courier New', monospace",
|
||||||
|
"body_size": 12,
|
||||||
|
"line_height": 1.4
|
||||||
|
},
|
||||||
|
"code_block_config": {
|
||||||
|
"theme": "xcode",
|
||||||
|
"background": "#f6f8fa"
|
||||||
|
},
|
||||||
|
"theme_id": "default",
|
||||||
|
"primary_color": "#0080ff"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
52
gui.py
52
gui.py
@@ -803,13 +803,9 @@ class YidaimaGUI:
|
|||||||
ps_code_target_entry = ttk.Entry(path_frame, textvariable=self.ps_code_target_var, width=60)
|
ps_code_target_entry = ttk.Entry(path_frame, textvariable=self.ps_code_target_var, width=60)
|
||||||
ps_code_target_entry.grid(row=3, column=1, sticky=(tk.W, tk.E), padx=(10, 0), pady=(10, 0))
|
ps_code_target_entry.grid(row=3, column=1, sticky=(tk.W, tk.E), padx=(10, 0), pady=(10, 0))
|
||||||
|
|
||||||
# 是否有前台前端
|
|
||||||
self.ps_has_front_var = tk.BooleanVar(value=ps_config.get("has_front", True))
|
|
||||||
ttk.Checkbutton(path_frame, text="有前台前端", variable=self.ps_has_front_var).grid(row=4, column=1, sticky=tk.W, padx=(10, 0), pady=(10, 0))
|
|
||||||
|
|
||||||
# 是否显示 CMD 窗口
|
# 是否显示 CMD 窗口
|
||||||
self.ps_show_cmd_var = tk.BooleanVar(value=ps_config.get("show_cmd_window", True))
|
self.ps_show_cmd_var = tk.BooleanVar(value=ps_config.get("show_cmd_window", True))
|
||||||
ttk.Checkbutton(path_frame, text="显示CMD窗口", variable=self.ps_show_cmd_var).grid(row=5, column=1, sticky=tk.W, padx=(10, 0), pady=(10, 0))
|
ttk.Checkbutton(path_frame, text="显示CMD窗口", variable=self.ps_show_cmd_var).grid(row=4, column=1, sticky=tk.W, padx=(10, 0), pady=(10, 0))
|
||||||
|
|
||||||
# === 操作按钮区域 ===
|
# === 操作按钮区域 ===
|
||||||
button_frame = ttk.LabelFrame(self.tab_screenshot, text="操作按钮", padding="10")
|
button_frame = ttk.LabelFrame(self.tab_screenshot, text="操作按钮", padding="10")
|
||||||
@@ -892,10 +888,15 @@ class YidaimaGUI:
|
|||||||
def _get_ps_config(self) -> ProjectConfig:
|
def _get_ps_config(self) -> ProjectConfig:
|
||||||
"""获取项目截图配置"""
|
"""获取项目截图配置"""
|
||||||
ps_config = self.config.get("project_screenshot", {})
|
ps_config = self.config.get("project_screenshot", {})
|
||||||
|
|
||||||
|
# 自动检测是否有前台前端
|
||||||
|
has_front = self._check_has_front(self.ps_project_path_var.get())
|
||||||
|
self._ps_log(f"自动检测前台前端: {'有' if has_front else '无'}")
|
||||||
|
|
||||||
return ProjectConfig(
|
return ProjectConfig(
|
||||||
project_path=self.ps_project_path_var.get(),
|
project_path=self.ps_project_path_var.get(),
|
||||||
desktop_path=self.ps_desktop_path_var.get(),
|
desktop_path=self.ps_desktop_path_var.get(),
|
||||||
has_front=self.ps_has_front_var.get(),
|
has_front=has_front,
|
||||||
install_server=ps_config.get("scripts", {}).get("install_server", "run_install_server.bat"),
|
install_server=ps_config.get("scripts", {}).get("install_server", "run_install_server.bat"),
|
||||||
install_front=ps_config.get("scripts", {}).get("install_front", "run_install_front.bat"),
|
install_front=ps_config.get("scripts", {}).get("install_front", "run_install_front.bat"),
|
||||||
install_admin=ps_config.get("scripts", {}).get("install_admin", "run_install_admin.bat"),
|
install_admin=ps_config.get("scripts", {}).get("install_admin", "run_install_admin.bat"),
|
||||||
@@ -932,6 +933,45 @@ class YidaimaGUI:
|
|||||||
show_cmd_window=self.ps_show_cmd_var.get()
|
show_cmd_window=self.ps_show_cmd_var.get()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _check_has_front(self, project_path: str) -> bool:
|
||||||
|
"""
|
||||||
|
自动检测是否有前台前端
|
||||||
|
检查项目路径下的源码文件夹中是否包含 client_code 目录
|
||||||
|
|
||||||
|
Args:
|
||||||
|
project_path: 项目路径
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
是否有前台前端
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
code_dir = os.path.join(project_path, "源码")
|
||||||
|
|
||||||
|
if not os.path.exists(code_dir):
|
||||||
|
return False
|
||||||
|
|
||||||
|
# 获取 code 文件夹下的第一个子目录
|
||||||
|
first_subdir = None
|
||||||
|
for item in os.listdir(code_dir):
|
||||||
|
item_path = os.path.join(code_dir, item)
|
||||||
|
if os.path.isdir(item_path):
|
||||||
|
first_subdir = item_path
|
||||||
|
break
|
||||||
|
|
||||||
|
if not first_subdir:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# 遍历查找 client_code 目录
|
||||||
|
for root, dirs, files in os.walk(first_subdir):
|
||||||
|
if 'client_code' in dirs:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"检测前台前端失败: {str(e)}")
|
||||||
|
return False
|
||||||
|
|
||||||
def _ps_set_running(self, running: bool):
|
def _ps_set_running(self, running: bool):
|
||||||
"""设置项目截图运行状态"""
|
"""设置项目截图运行状态"""
|
||||||
if running:
|
if running:
|
||||||
|
|||||||
Reference in New Issue
Block a user