MCPcopy Index your code
hub / github.com/BasicProtein/AugmentCode-Free / ConfigManager

Class ConfigManager

config_manager.py:13–138  ·  view source on GitHub ↗

Manages user configuration and settings

Source from the content-addressed store, hash-verified

11
12
13class ConfigManager:
14 """Manages user configuration and settings"""
15
16 def __init__(self):
17 # 使用绝对路径确保跨平台兼容性
18 self.config_dir = Path(__file__).resolve().parent / "config"
19 self.config_file = self.config_dir / "settings.json"
20 self.settings = {}
21
22 # Default settings
23 self.default_settings = {
24 "language": "zh_CN",
25 "first_run": True,
26 "window_geometry": "600x780", # 增加宽度从520到600
27 "last_selected_ide": "VS Code",
28 "show_welcome": True,
29 "show_about_on_startup": True,
30 "theme": "default"
31 }
32
33 # Ensure config directory exists
34 self._ensure_config_dir()
35
36 # Load existing settings
37 self._load_settings()
38
39 def _ensure_config_dir(self):
40 """Ensure config directory exists"""
41 try:
42 self.config_dir.mkdir(exist_ok=True, parents=True)
43 # 在macOS上确保目录权限正确
44 if os.name == 'posix':
45 os.chmod(self.config_dir, 0o755)
46 except Exception as e:
47 print(f"Error creating config directory: {e}")
48 print(f"Config directory path: {self.config_dir}")
49
50 def _load_settings(self):
51 """Load settings from file"""
52 try:
53 if self.config_file.exists():
54 with open(self.config_file, 'r', encoding='utf-8') as f:
55 loaded_settings = json.load(f)
56 # Merge with defaults to ensure all keys exist
57 self.settings = {**self.default_settings, **loaded_settings}
58 else:
59 # Use defaults for first run
60 self.settings = self.default_settings.copy()
61 self._save_settings()
62 except Exception as e:
63 print(f"Error loading settings: {e}")
64 self.settings = self.default_settings.copy()
65
66 def _save_settings(self):
67 """Save settings to file"""
68 try:
69 with open(self.config_file, 'w', encoding='utf-8') as f:
70 json.dump(self.settings, f, indent=2, ensure_ascii=False)

Callers 1

get_config_managerFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected