DEADSOFTWARE

Added new optios(thanks GranMinigun!), added .dfz extension(now default) and fixed...
[d2df-editor.git] / src / editor / f_options.pas
1 unit f_options;
3 {$INCLUDE ../shared/a_modes.inc}
5 interface
7 uses
8 LCLIntf, LCLType, SysUtils, Variants, Classes,
9 Graphics, Controls, Forms, Dialogs, StdCtrls,
10 ExtCtrls, ComCtrls, Registry;
12 type
14 { TOptionsForm }
16 TOptionsForm = class (TForm)
17 bOK: TButton;
18 bCancel: TButton;
19 cbCheckerboard: TCheckBox;
20 cbCompress: TCheckBox;
21 cbBackup: TCheckBox;
22 ColorDialog: TColorDialog;
23 GroupBox1: TGroupBox;
24 // Общие настройки:
25 cbShowDots: TCheckBox;
26 cbShowTexture: TCheckBox;
27 cbShowSize: TCheckBox;
28 // Шаги сетки:
29 LabelGrid: TLabel;
30 eDotStepOne: TEdit;
31 UpDown1: TUpDown;
32 eDotStepTwo: TEdit;
33 UpDown2: TUpDown;
34 // Цвет сетки:
35 LabelGridCol: TLabel;
36 sDotColor: TShape;
37 bGrid: TButton;
38 // Цвет фона:
39 LabelBack: TLabel;
40 sBackColor: TShape;
41 bBack: TButton;
42 // Цвет превью:
43 LabelPreview: TLabel;
44 sPreviewColor: TShape;
45 bPreview: TButton;
46 // Масштаб миникарты:
47 LabelMinimap: TLabel;
48 cbScale: TComboBox;
49 // Количество недавно открытых:
50 LabelRecent: TLabel;
51 eRecent: TEdit;
52 UpDown3: TUpDown;
53 LabelLanguage: TLabel;
54 rbRussian: TRadioButton;
55 rbEnglish: TRadioButton;
56 LabelGridSize: TLabel;
57 cbDotSize: TComboBox;
59 procedure bGridClick(Sender: TObject);
60 procedure FormActivate(Sender: TObject);
61 procedure bOKClick(Sender: TObject);
62 procedure bCancelClick(Sender: TObject);
63 procedure bBackClick(Sender: TObject);
64 procedure bPreviewClick(Sender: TObject);
66 private
67 { Private declarations }
68 public
69 { Public declarations }
70 end;
72 var
73 OptionsForm: TOptionsForm;
75 procedure RegisterFileType(ext: String; FileName: String);
77 implementation
79 uses
80 f_main, StdConvs, CONFIG, g_language, g_resources;
82 {$R *.lfm}
84 procedure RegisterFileType(ext: String; FileName: String);
85 var
86 reg: TRegistry;
88 begin
89 reg := TRegistry.Create();
91 with reg do
92 begin
93 RootKey := HKEY_CLASSES_ROOT;
94 OpenKey('.'+ext,True);
95 WriteString('',ext+'file');
96 CloseKey();
97 CreateKey(ext+'file');
98 OpenKey(ext+'file\DefaultIcon',True);
99 WriteString('',FileName+',0');
100 CloseKey();
101 OpenKey(ext+'file\shell\open\command',True);
102 WriteString('',FileName+' "%1"');
103 CloseKey();
104 Free();
105 end;
106 end;
108 procedure TOptionsForm.bGridClick(Sender: TObject);
109 begin
110 if ColorDialog.Execute then
111 sDotColor.Brush.Color := ColorDialog.Color;
112 end;
114 procedure TOptionsForm.FormActivate(Sender: TObject);
115 begin
116 sDotColor.Brush.Color := DotColor;
117 cbShowDots.Checked := DotEnable;
118 cbShowTexture.Checked := DrawTexturePanel;
119 cbShowSize.Checked := DrawPanelSize;
120 eDotStepOne.Text := IntToStr(DotStepOne);
121 eDotStepTwo.Text := IntToStr(DotStepTwo);
122 sBackColor.Brush.Color := BackColor;
123 sPreviewColor.Brush.Color := PreviewColor;
124 cbCheckerboard.Checked := UseCheckerboard;
125 cbCompress.Checked := Compress;
126 cbBackup.Checked := Backup;
127 if Scale = 2 then
128 cbScale.ItemIndex := 1
129 else
130 cbScale.ItemIndex := 0;
131 if DotSize = 2 then
132 cbDotSize.ItemIndex := 1
133 else
134 cbDotSize.ItemIndex := 0;
135 eRecent.Text := IntToStr(RecentCount);
137 // Язык:
138 if gLanguage = LANGUAGE_RUSSIAN then
139 begin
140 rbRussian.Checked := True;
141 rbEnglish.Checked := False;
142 end
143 else
144 begin
145 rbRussian.Checked := False;
146 rbEnglish.Checked := True;
147 end;
148 end;
150 procedure TOptionsForm.bOKClick(Sender: TObject);
151 var
152 config: TConfig;
153 re: Integer;
154 d1: Boolean;
155 str: String;
157 begin
158 re := StrToIntDef(eRecent.Text, 5);
159 if re < 2 then
160 re := 2;
161 if re > 10 then
162 re := 10;
164 if rbRussian.Checked then
165 str := LANGUAGE_RUSSIAN
166 else
167 str := LANGUAGE_ENGLISH;
169 // Нужно сменить язык:
170 if gLanguage <> str then
171 begin
172 gLanguage := str;
173 //e_WriteLog('Read language file', MSG_NOTIFY);
174 //g_Language_Load(EditorDir+'\data\'+gLanguage+LANGUAGE_FILE_NAME);
175 g_Language_Set(gLanguage);
176 end;
178 DotColor := sDotColor.Brush.Color;
179 DotEnable := cbShowDots.Checked;
181 if DotStep = DotStepOne then
182 d1 := True
183 else
184 d1 := False;
185 DotStepOne := StrToIntDef(eDotStepOne.Text, 16);
186 DotStepTwo := StrToIntDef(eDotStepTwo.Text, 8);
187 if d1 then
188 DotStep := DotStepOne
189 else
190 DotStep := DotStepTwo;
192 DrawTexturePanel := cbShowTexture.Checked;
193 DrawPanelSize := cbShowSize.Checked;
194 BackColor := sBackColor.Brush.Color;
195 PreviewColor := sPreviewColor.Brush.Color;
196 UseCheckerboard := cbCheckerboard.Checked;
197 Compress := cbCompress.Checked;
198 Backup := cbBackup.Checked;
200 if cbScale.ItemIndex = 1 then
201 Scale := 2
202 else
203 Scale := 1;
205 if cbDotSize.ItemIndex = 1 then
206 DotSize := 2
207 else
208 DotSize := 1;
210 config := TConfig.CreateFile(EditorDir+'Editor.cfg');
212 config.WriteInt('Editor', 'DotColor', DotColor);
213 config.WriteBool('Editor', 'DotEnable', DotEnable);
214 config.WriteInt('Editor', 'DotStepOne', DotStepOne);
215 config.WriteInt('Editor', 'DotStepTwo', DotStepTwo);
216 config.WriteInt('Editor', 'DotStep', DotStep);
217 config.WriteInt('Editor', 'DotSize', cbDotSize.ItemIndex);
218 config.WriteBool('Editor', 'DrawTexturePanel', DrawTexturePanel);
219 config.WriteBool('Editor', 'DrawPanelSize', DrawPanelSize);
220 config.WriteInt('Editor', 'BackColor', BackColor);
221 config.WriteInt('Editor', 'PreviewColor', PreviewColor);
222 config.WriteBool('Editor', 'UseCheckerboard', UseCheckerboard);
223 config.WriteInt('Editor', 'Scale', cbScale.ItemIndex);
224 config.WriteInt('Editor', 'RecentCount', re);
225 config.WriteStr('Editor', 'Language', gLanguage);
226 config.WriteBool('Editor', 'Compress', Compress);
227 config.WriteBool('Editor', 'Backup', Backup);
229 if RecentCount <> re then
230 begin
231 RecentCount := re;
232 MainForm.RefreshRecentMenu();
233 end;
235 config.SaveFile(EditorDir+'Editor.cfg');
236 config.Free();
237 Close();
238 end;
240 procedure TOptionsForm.bCancelClick(Sender: TObject);
241 begin
242 Close();
243 end;
245 procedure TOptionsForm.bBackClick(Sender: TObject);
246 begin
247 if ColorDialog.Execute then
248 sBackColor.Brush.Color := ColorDialog.Color;
249 end;
251 procedure TOptionsForm.bPreviewClick(Sender: TObject);
252 begin
253 if ColorDialog.Execute then
254 sPreviewColor.Brush.Color := ColorDialog.Color;
255 end;
257 end.