Skip to main content

rpfm_ipc/
settings_keys.rs

1//---------------------------------------------------------------------------//
2// Copyright (c) 2017-2026 Ismael Gutiérrez González. All rights reserved.
3//
4// This file is part of the Rusted PackFile Manager (RPFM) project,
5// which can be found here: https://github.com/Frodo45127/rpfm.
6//
7// This file is licensed under the MIT license, which can be found here:
8// https://github.com/Frodo45127/rpfm/blob/master/LICENSE.
9//---------------------------------------------------------------------------//
10
11//! Typed constants for all settings keys used across the application.
12//!
13//! Using these constants instead of raw string literals prevents typos
14//! and provides a single source of truth for settings key names.
15
16use serde::{Deserialize, Serialize};
17
18use std::collections::HashMap;
19
20// Path settings.
21pub const MYMOD_BASE_PATH: &str = "mymods_base_path";
22pub const SECONDARY_PATH: &str = "secondary_path";
23
24/// Suffix appended to a game key to form the settings key for that game's
25/// Assembly Kit path (e.g. `warhammer_3` → `warhammer_3_assembly_kit`).
26pub const ASSEMBLY_KIT_SUFFIX: &str = "_assembly_kit";
27
28// General settings.
29pub const DEFAULT_GAME: &str = "default_game";
30pub const LANGUAGE: &str = "language";
31pub const UPDATE_CHANNEL: &str = "update_channel";
32pub const AUTOSAVE_AMOUNT: &str = "autosave_amount";
33pub const AUTOSAVE_INTERVAL: &str = "autosave_interval";
34pub const FONT_NAME: &str = "font_name";
35pub const FONT_SIZE: &str = "font_size";
36pub const ORIGINAL_FONT_NAME: &str = "original_font_name";
37pub const ORIGINAL_FONT_SIZE: &str = "original_font_size";
38pub const RECENT_FILE_LIST: &str = "recentFileList";
39
40// UI settings.
41pub const START_MAXIMIZED: &str = "start_maximized";
42pub const ALLOW_EDITING_OF_CA_PACKFILES: &str = "allow_editing_of_ca_packfiles";
43pub const CHECK_UPDATES_ON_START: &str = "check_updates_on_start";
44pub const CHECK_SCHEMA_UPDATES_ON_START: &str = "check_schema_updates_on_start";
45pub const CHECK_LUA_AUTOGEN_UPDATES_ON_START: &str = "check_lua_autogen_updates_on_start";
46pub const CHECK_OLD_AK_UPDATES_ON_START: &str = "check_old_ak_updates_on_start";
47pub const USE_LAZY_LOADING: &str = "use_lazy_loading";
48pub const DISABLE_UUID_REGENERATION_ON_DB_TABLES: &str = "disable_uuid_regeneration_on_db_tables";
49pub const PACKFILE_TREEVIEW_RESIZE_TO_FIT: &str = "packfile_treeview_resize_to_fit";
50pub const EXPAND_TREEVIEW_WHEN_ADDING_ITEMS: &str = "expand_treeview_when_adding_items";
51pub const USE_RIGHT_SIZE_MARKERS: &str = "use_right_size_markers";
52pub const DISABLE_FILE_PREVIEWS: &str = "disable_file_previews";
53pub const INCLUDE_BASE_FOLDER_ON_ADD_FROM_FOLDER: &str = "include_base_folder_on_add_from_folder";
54pub const DELETE_EMPTY_FOLDERS_ON_DELETE: &str = "delete_empty_folders_on_delete";
55pub const AUTOSAVE_FOLDER_SIZE_WARNING_TRIGGERED: &str = "autosave_folder_size_warning_triggered";
56pub const IGNORE_GAME_FILES_IN_AK: &str = "ignore_game_files_in_ak";
57pub const ENABLE_MULTIFOLDER_FILEPICKER: &str = "enable_multifolder_filepicker";
58pub const ENABLE_PACK_CONTENTS_DRAG_AND_DROP: &str = "enable_pack_contents_drag_and_drop";
59
60// Hidden/migration settings.
61pub const IMPORT_FROM_QT: &str = "import_from_qt";
62
63// Table settings.
64pub const ADJUST_COLUMNS_TO_CONTENT: &str = "adjust_columns_to_content";
65pub const EXTEND_LAST_COLUMN_ON_TABLES: &str = "extend_last_column_on_tables";
66pub const DISABLE_COMBOS_ON_TABLES: &str = "disable_combos_on_tables";
67pub const TIGHT_TABLE_MODE: &str = "tight_table_mode";
68pub const TABLE_RESIZE_ON_EDIT: &str = "table_resize_on_edit";
69pub const TABLES_USE_OLD_COLUMN_ORDER: &str = "tables_use_old_column_order";
70pub const TABLES_USE_OLD_COLUMN_ORDER_FOR_TSV: &str = "tables_use_old_column_order_for_tsv";
71pub const ENABLE_LOOKUPS: &str = "enable_lookups";
72pub const ENABLE_ICONS: &str = "enable_icons";
73pub const ENABLE_DIFF_MARKERS: &str = "enable_diff_markers";
74pub const HIDE_UNUSED_COLUMNS: &str = "hide_unused_columns";
75
76// Debug settings.
77pub const CHECK_FOR_MISSING_TABLE_DEFINITIONS: &str = "check_for_missing_table_definitions";
78pub const ENABLE_DEBUG_MENU: &str = "enable_debug_menu";
79pub const ENABLE_UNIT_EDITOR: &str = "enable_unit_editor";
80pub const ENABLE_ESF_EDITOR: &str = "enable_esf_editor";
81pub const USE_DEBUG_VIEW_UNIT_VARIANT: &str = "use_debug_view_unit_variant";
82pub const ENABLE_RENDERER: &str = "enable_renderer";
83
84// Diagnostics settings.
85pub const DIAGNOSTICS_TRIGGER_ON_OPEN: &str = "diagnostics_trigger_on_open";
86pub const DIAGNOSTICS_TRIGGER_ON_TABLE_EDIT: &str = "diagnostics_trigger_on_table_edit";
87
88// Telemetry settings.
89pub const ENABLE_USAGE_TELEMETRY: &str = "enable_usage_telemetry";
90pub const ENABLE_CRASH_REPORTS: &str = "enable_crash_reports";
91
92// AI settings.
93//
94// The AI translator talks to any service that exposes the OpenAI
95// chat-completions wire format (OpenAI, Anthropic OpenAI-compat,
96// Gemini OpenAI-compat, OpenRouter, Ollama, vLLM, LM Studio, ...).
97// The user provides the full endpoint URL, an API key sent as a
98// `Bearer` token, and the model identifier to target.
99pub const AI_API_URL: &str = "ai_api_url";
100pub const AI_API_KEY: &str = "ai_api_key";
101pub const AI_MODEL: &str = "ai_model";
102pub const DEEPL_API_KEY: &str = "deepl_api_key";
103
104// Optimizer settings.
105pub const PACK_REMOVE_ITM_FILES: &str = "pack_remove_itm_files";
106pub const PACK_APPLY_COMPRESSION: &str = "pack_apply_compression";
107pub const DB_IMPORT_DATACORES_INTO_TWAD_KEY_DELETES: &str = "db_import_datacores_into_twad_key_deletes";
108pub const DB_OPTIMIZE_DATACORED_TABLES: &str = "db_optimize_datacored_tables";
109pub const TABLE_REMOVE_DUPLICATED_ENTRIES: &str = "table_remove_duplicated_entries";
110pub const TABLE_REMOVE_ITM_ENTRIES: &str = "table_remove_itm_entries";
111pub const TABLE_REMOVE_ITNR_ENTRIES: &str = "table_remove_itnr_entries";
112pub const TABLE_REMOVE_EMPTY_FILE: &str = "table_remove_empty_file";
113pub const TEXT_REMOVE_UNUSED_XML_MAP_FOLDERS: &str = "text_remove_unused_xml_map_folders";
114pub const TEXT_REMOVE_UNUSED_XML_PREFAB_FOLDER: &str = "text_remove_unused_xml_prefab_folder";
115pub const TEXT_REMOVE_AGF_FILES: &str = "text_remove_agf_files";
116pub const TEXT_REMOVE_MODEL_STATISTICS_FILES: &str = "text_remove_model_statistics_files";
117pub const PTS_REMOVE_UNUSED_ART_SETS: &str = "pts_remove_unused_art_sets";
118pub const PTS_REMOVE_UNUSED_VARIANTS: &str = "pts_remove_unused_variants";
119pub const PTS_REMOVE_EMPTY_MASKS: &str = "pts_remove_empty_masks";
120pub const PTS_REMOVE_EMPTY_FILE: &str = "pts_remove_empty_file";
121
122// Internal/transient keys.
123pub const FACTORY_RESET: &str = "factoryReset";
124pub const MOVE_CHECKBOX_STATUS: &str = "move_checkbox_status";
125pub const GLOBAL_SEARCH_SOURCES_STATUS: &str = "global_search_sources_status";
126pub const GEOMETRY: &str = "geometry";
127pub const WINDOW_STATE: &str = "windowState";
128pub const ORIGINAL_GEOMETRY: &str = "originalGeometry";
129pub const ORIGINAL_WINDOW_STATE: &str = "originalWindowState";
130
131// QSettings colour keys (used by both Rust and C++ sides).
132pub const COLOUR_LIGHT_TABLE_ADDED: &str = "colour_light_table_added";
133pub const COLOUR_LIGHT_TABLE_MODIFIED: &str = "colour_light_table_modified";
134pub const COLOUR_LIGHT_DIAGNOSTIC_ERROR: &str = "colour_light_diagnostic_error";
135pub const COLOUR_LIGHT_DIAGNOSTIC_WARNING: &str = "colour_light_diagnostic_warning";
136pub const COLOUR_LIGHT_DIAGNOSTIC_INFO: &str = "colour_light_diagnostic_info";
137pub const COLOUR_DARK_TABLE_ADDED: &str = "colour_dark_table_added";
138pub const COLOUR_DARK_TABLE_MODIFIED: &str = "colour_dark_table_modified";
139pub const COLOUR_DARK_DIAGNOSTIC_ERROR: &str = "colour_dark_diagnostic_error";
140pub const COLOUR_DARK_DIAGNOSTIC_WARNING: &str = "colour_dark_diagnostic_warning";
141pub const COLOUR_DARK_DIAGNOSTIC_INFO: &str = "colour_dark_diagnostic_info";
142
143/// A snapshot of all typed settings for batch transfer between server and UI.
144#[derive(Clone, Debug, Default, Serialize, Deserialize)]
145pub struct SettingsSnapshot {
146    pub bool: HashMap<String, bool>,
147    pub i32: HashMap<String, i32>,
148    pub f32: HashMap<String, f32>,
149    pub string: HashMap<String, String>,
150    pub raw_data: HashMap<String, Vec<u8>>,
151    pub vec_string: HashMap<String, Vec<String>>,
152}