source: trunk/ae/AutoSaveFormUnit.pas@ 454

Last change on this file since 454 was 454, checked in by ataylor, 3 years ago

Add AE (text editor) sources.

File size: 3.9 KB
Line 
1Unit AutoSaveFormUnit;
2
3Interface
4
5Uses
6 Classes, Forms, Graphics, Buttons, ExtCtrls, Spin, StdCtrls, ComCtrls,
7 ACLLanguageUnit;
8
9Type
10 TAutoSaveType =
11 (
12 asNone,
13 asTimed,
14 asChanges
15 );
16Const
17 AutoSaveTypeStrings: array[ Low( TAutoSaveType ) .. High( TAutoSaveType ) ] of string =
18 (
19 'None',
20 'Timed',
21 'Changes'
22 );
23
24Type
25 TAutosaveForm = Class (TForm)
26 OKButton: TButton;
27 CancelButton: TButton;
28 HelpButton: TButton;
29 RequireManualSaveCheckBox: TCheckBox;
30 MinutesEdit: TEdit;
31 ChangesEdit: TEdit;
32 NoAutoSaveRadioButton: TRadioButton;
33 TimedAutosaveRadioButton: TRadioButton;
34 MinutesLabel: TLabel;
35 ChangesLabel: TLabel;
36 ChangesAutosaveRadioButton: TRadioButton;
37 Procedure AutosaveFormOnSetupShow (Sender: TObject);
38 Procedure AutosaveFormOnCreate (Sender: TObject);
39 Procedure OKButtonOnClick (Sender: TObject);
40 Procedure ChangesAutosaveRadioButtonOnClick (Sender: TObject);
41 Procedure TimedAutosaveRadioButtonOnClick (Sender: TObject);
42 Procedure NoAutoSaveRadioButtonOnClick (Sender: TObject);
43 Procedure AutosaveFormOnShow (Sender: TObject);
44 Private
45 Procedure UpdateType;
46 ErrorTitle: string;
47 MinutesError: string;
48 NumberChangesError: string;
49
50 Public
51 Procedure OnLanguageEvent( Language: TLanguageFile;
52 const Apply: boolean );
53 FAutoSaveType: TAutoSaveType;
54 FMinutes: longint;
55 FChanges: longint;
56
57 End;
58
59Var
60 AutosaveForm: TAutosaveForm;
61
62Implementation
63
64Uses
65 SysUtils, ACLDialogs, ControlsUtility;
66
67Procedure TAutosaveForm.AutosaveFormOnSetupShow (Sender: TObject);
68Begin
69 ScaleForm( self, 11, 16 );
70End;
71
72Procedure TAutosaveForm.AutosaveFormOnCreate (Sender: TObject);
73Begin
74 RegisterForLanguages( OnLanguageEvent );
75End;
76
77Procedure TAutosaveForm.OnLanguageEvent( Language: TLanguageFile;
78 const Apply: boolean );
79begin
80 Language.LoadComponentLanguage( self, Apply );
81 Language.LL( Apply, ErrorTitle, 'ErrorTitle', 'Error' );
82 Language.LL( Apply, MinutesError, 'MinutesError', 'Number of minutes must be 1 to 600' );
83 Language.LL( Apply, NumberChangesError, 'NumberChangesError', 'Number of changes must be 10 to 1000' );
84end;
85
86Procedure TAutosaveForm.OKButtonOnClick (Sender: TObject);
87Begin
88 FMinutes := StrToInt( MinutesEdit.Text );
89 FChanges := StrToInt( ChangesEdit.Text );
90 // valid number of minutes/changes, if that type is selected.
91 if FAutoSaveType = asTimed then
92 begin
93 if ( FMinutes < 1 )
94 or ( FMinutes > 600 ) then
95 begin
96 DoErrorDlg( ErrorTitle,
97 MinutesError );
98 exit;
99 end;
100 end;
101
102 if FAutoSaveType = asChanges then
103 begin
104 if ( FChanges < 10 )
105 or ( FChanges > 1000 ) then
106 begin
107 DoErrorDlg( ErrorTitle,
108 NumberChangesError );
109 exit;
110 end;
111 end;
112
113 ModalResult := mrOK;
114End;
115
116Procedure TAutosaveForm.ChangesAutosaveRadioButtonOnClick (Sender: TObject);
117Begin
118 FAutoSaveType := asChanges;
119 UpdateType;
120End;
121
122Procedure TAutosaveForm.TimedAutosaveRadioButtonOnClick (Sender: TObject);
123Begin
124 FAutoSaveType := asTimed;
125 UpdateType;
126End;
127
128Procedure TAutosaveForm.NoAutoSaveRadioButtonOnClick (Sender: TObject);
129Begin
130 FAutoSaveType := asNone;
131 UpdateType;
132End;
133
134Procedure TAutosaveForm.AutosaveFormOnShow (Sender: TObject);
135Begin
136 OKButton.Default := true;
137 UpdateType;
138 MinutesEdit.Text := IntToStr( FMinutes );
139 ChangesEdit.Text := IntToStr( FChanges );
140End;
141
142Procedure TAutosaveForm.UpdateType;
143Begin
144 NoAutoSaveRadioButton.Checked := FAutoSaveType = asNone;
145 TimedAutoSaveRadioButton.Checked := FAutoSaveType = asTimed;
146 ChangesAutoSaveRadioButton.Checked := FAutoSaveType = asChanges;
147End;
148
149Initialization
150 RegisterClasses ([TAutosaveForm, TButton,
151 TRadioButton, TLabel, TCheckBox, TEdit]);
152End.
Note: See TracBrowser for help on using the repository browser.