1 #pragma once
2 
3 enum LC_PROFILE_KEY
4 {
5 	// Settings.
6 	LC_PROFILE_FIXED_AXES,
7 	LC_PROFILE_LINE_WIDTH,
8 	LC_PROFILE_ALLOW_LOD,
9 	LC_PROFILE_LOD_DISTANCE,
10 	LC_PROFILE_FADE_STEPS,
11 	LC_PROFILE_FADE_STEPS_COLOR,
12 	LC_PROFILE_HIGHLIGHT_NEW_PARTS,
13 	LC_PROFILE_HIGHLIGHT_NEW_PARTS_COLOR,
14 	LC_PROFILE_SHADING_MODE,
15 	LC_PROFILE_BACKGROUND_GRADIENT,
16 	LC_PROFILE_BACKGROUND_COLOR,
17 	LC_PROFILE_GRADIENT_COLOR_TOP,
18 	LC_PROFILE_GRADIENT_COLOR_BOTTOM,
19 	LC_PROFILE_DRAW_AXES,
20 	LC_PROFILE_DRAW_AXES_LOCATION,
21 	LC_PROFILE_AXES_COLOR,
22 	LC_PROFILE_TEXT_COLOR,
23 	LC_PROFILE_MARQUEE_BORDER_COLOR,
24 	LC_PROFILE_MARQUEE_FILL_COLOR,
25 	LC_PROFILE_OVERLAY_COLOR,
26 	LC_PROFILE_ACTIVE_VIEW_COLOR,
27 	LC_PROFILE_INACTIVE_VIEW_COLOR,
28 	LC_PROFILE_DRAW_EDGE_LINES,
29 	LC_PROFILE_DRAW_CONDITIONAL_LINES,
30 	LC_PROFILE_GRID_STUDS,
31 	LC_PROFILE_GRID_STUD_COLOR,
32 	LC_PROFILE_GRID_LINES,
33 	LC_PROFILE_GRID_LINE_SPACING,
34 	LC_PROFILE_GRID_LINE_COLOR,
35 	LC_PROFILE_GRID_ORIGIN,
36 	LC_PROFILE_ANTIALIASING_SAMPLES,
37 	LC_PROFILE_VIEW_SPHERE_ENABLED,
38 	LC_PROFILE_VIEW_SPHERE_LOCATION,
39 	LC_PROFILE_VIEW_SPHERE_SIZE,
40 	LC_PROFILE_VIEW_SPHERE_COLOR,
41 	LC_PROFILE_VIEW_SPHERE_TEXT_COLOR,
42 	LC_PROFILE_VIEW_SPHERE_HIGHLIGHT_COLOR,
43 
44 	LC_PROFILE_LANGUAGE,
45 	LC_PROFILE_COLOR_THEME,
46 	LC_PROFILE_CHECK_UPDATES,
47 	LC_PROFILE_PROJECTS_PATH,
48 	LC_PROFILE_PARTS_LIBRARY,
49 	LC_PROFILE_PART_PALETTES,
50 	LC_PROFILE_MINIFIG_SETTINGS,
51 	LC_PROFILE_COLOR_CONFIG,
52 	LC_PROFILE_KEYBOARD_SHORTCUTS,
53 	LC_PROFILE_MOUSE_SHORTCUTS,
54 	LC_PROFILE_CATEGORIES,
55 	LC_PROFILE_RECENT_FILE1,
56 	LC_PROFILE_RECENT_FILE2,
57 	LC_PROFILE_RECENT_FILE3,
58 	LC_PROFILE_RECENT_FILE4,
59 	LC_PROFILE_AUTOLOAD_MOSTRECENT,
60 	LC_PROFILE_RESTORE_TAB_LAYOUT,
61 	LC_PROFILE_AUTOSAVE_INTERVAL,
62 	LC_PROFILE_MOUSE_SENSITIVITY,
63 	LC_PROFILE_IMAGE_WIDTH,
64 	LC_PROFILE_IMAGE_HEIGHT,
65 	LC_PROFILE_IMAGE_EXTENSION,
66 	LC_PROFILE_PARTS_LIST_ICONS,
67 	LC_PROFILE_PARTS_LIST_NAMES,
68 	LC_PROFILE_PARTS_LIST_COLOR,
69 	LC_PROFILE_PARTS_LIST_DECORATED,
70 	LC_PROFILE_PARTS_LIST_ALIASES,
71 	LC_PROFILE_PARTS_LIST_LISTMODE,
72 	LC_PROFILE_STUD_STYLE,
73 
74 	// Defaults for new projects.
75 	LC_PROFILE_DEFAULT_AUTHOR_NAME,
76 	LC_PROFILE_DEFAULT_AMBIENT_COLOR,
77 
78 	// Exporters.
79 	LC_PROFILE_HTML_OPTIONS,
80 	LC_PROFILE_HTML_IMAGE_OPTIONS,
81 	LC_PROFILE_HTML_IMAGE_WIDTH,
82 	LC_PROFILE_HTML_IMAGE_HEIGHT,
83 	LC_PROFILE_POVRAY_PATH,
84 	LC_PROFILE_POVRAY_LGEO_PATH,
85 	LC_PROFILE_POVRAY_WIDTH,
86 	LC_PROFILE_POVRAY_HEIGHT,
87 
88 	LC_PROFILE_PREVIEW_VIEW_SPHERE_ENABLED,
89 	LC_PROFILE_PREVIEW_VIEW_SPHERE_SIZE,
90 	LC_PROFILE_PREVIEW_VIEW_SPHERE_LOCATION,
91 	LC_PROFILE_PREVIEW_DRAW_AXES,
92 
93 	LC_PROFILE_STUD_CYLINDER_COLOR,
94 	LC_PROFILE_PART_EDGE_COLOR,
95 	LC_PROFILE_BLACK_EDGE_COLOR,
96 	LC_PROFILE_DARK_EDGE_COLOR,
97 	LC_PROFILE_PART_EDGE_CONTRAST,
98 	LC_PROFILE_PART_COLOR_VALUE_LD_INDEX,
99 	LC_PROFILE_AUTOMATE_EDGE_COLOR,
100 
101 	LC_NUM_PROFILE_KEYS
102 };
103 
104 enum LC_PROFILE_ENTRY_TYPE
105 {
106 	LC_PROFILE_ENTRY_INT,
107 	LC_PROFILE_ENTRY_FLOAT,
108 	LC_PROFILE_ENTRY_STRING,
109 	LC_PROFILE_ENTRY_STRINGLIST,
110 	LC_PROFILE_ENTRY_BUFFER
111 };
112 
113 class lcProfileEntry
114 {
115 public:
116 	lcProfileEntry(const char* Section, const char* Key, int DefaultValue);
117 	lcProfileEntry(const char* Section, const char* Key, unsigned int DefaultValue);
118 	lcProfileEntry(const char* Section, const char* Key, float DefaultValue);
119 	lcProfileEntry(const char* Section, const char* Key, const char* DefaultValue);
120 	lcProfileEntry(const char* Section, const char* Key, const QStringList& StringList);
121 	lcProfileEntry(const char* Section, const char* Key);
122 
123 	LC_PROFILE_ENTRY_TYPE mType;
124 
125 	const char* mSection;
126 	const char* mKey;
127 
128 	union
129 	{
130 		int IntValue;
131 		float FloatValue;
132 		const char* StringValue;
133 	} mDefault;
134 };
135 
136 void lcRemoveProfileKey(LC_PROFILE_KEY Key);
137 
138 int lcGetDefaultProfileInt(LC_PROFILE_KEY Key);
139 float lcGetDefaultProfileFloat(LC_PROFILE_KEY Key);
140 QString lcGetDefaultProfileString(LC_PROFILE_KEY Key);
141 
142 int lcGetProfileInt(LC_PROFILE_KEY Key);
143 float lcGetProfileFloat(LC_PROFILE_KEY Key);
144 QString lcGetProfileString(LC_PROFILE_KEY Key);
145 QStringList lcGetProfileStringList(LC_PROFILE_KEY Key);
146 QByteArray lcGetProfileBuffer(LC_PROFILE_KEY Key);
147 
148 void lcSetProfileInt(LC_PROFILE_KEY Key, int Value);
149 void lcSetProfileFloat(LC_PROFILE_KEY Key, float Value);
150 void lcSetProfileString(LC_PROFILE_KEY Key, const QString& Value);
151 void lcSetProfileStringList(LC_PROFILE_KEY Key, const QStringList& Value);
152 void lcSetProfileBuffer(LC_PROFILE_KEY Key, const QByteArray& Buffer);
153