Module

PsForm

Path

C:\PROJEKT\PSearch\psform.pas

Last Modified

2007-05-17 15:55:36

Comments

Main form (and only form) in TurboSearch

Open Todo-items for PsForm (1)

Text Category Owner Priority Status
Double-click to open in app - - - Open

Units Used in Interface

Name Comments
PsEngine -

Classes

Name Comments
TPSMainForm -

Procedures

Name Owner Declaration Scope Comments
About1Click TPSMainForm procedure About1Click(Sender: TObject); Public/Published -
chkAllFilesClick TPSMainForm procedure chkAllFilesClick(Sender: TObject); Public/Published -
cmbPatternChange TPSMainForm procedure cmbPatternChange(Sender: TObject); Public/Published -
cmbRootDirChange TPSMainForm procedure cmbRootDirChange(Sender: TObject); Public/Published -
cmbRootDirExit TPSMainForm procedure cmbRootDirExit(Sender: TObject); Public/Published -
CmdQuitClick TPSMainForm procedure CmdQuitClick(Sender: TObject); Public/Published -
CmdSaveClick TPSMainForm procedure CmdSaveClick(Sender: TObject); Public/Published -
CmdSearchClick TPSMainForm procedure CmdSearchClick(Sender: TObject); Public/Published -
CmdSelStartDirClick TPSMainForm procedure CmdSelStartDirClick(Sender: TObject); Public/Published -
CmdStopClick TPSMainForm procedure CmdStopClick(Sender: TObject); Public/Published -
FormCloseQuery TPSMainForm procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); Public/Published -
FormCreate TPSMainForm procedure FormCreate(Sender: TObject); Public/Published -
FormDestroy TPSMainForm procedure FormDestroy(Sender: TObject); Public/Published -
FormShow TPSMainForm procedure FormShow(Sender: TObject); Public/Published -
GeneralSearch TPSMainForm procedure GeneralSearch; Private This is the GeneralSearch method
MemoDblClick TPSMainForm procedure MemoDblClick(Sender: TObject); Public/Published -
Quit1Click TPSMainForm procedure Quit1Click(Sender: TObject); Public/Published -
UpdateStatus TPSMainForm procedure UpdateStatus; Private -

Global Variables

Name Type Declaration Comments
PSMainForm TPSMainForm PSMainForm: TPSMainForm; -


Module Source

1     unit PsForm;
2     // Main form (and only form) in TurboSearch
3     
4     (*$I GDEFINE.INC*)
5     
6     interface
7     
8     uses
9       Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
10      StdCtrls, Buttons, StBase, SsBase, StBrowsr, RzButton, ExtCtrls,
11      RzPanel, RzStatus, PsEngine, GDebuObj, Menus;
12    
13    type
14      TPSMainForm = class(TForm)
15        Memo: TMemo;
16        CmdSave: TBitBtn;
17        StBrowser: TStBrowser;
18        CmdSearch: TBitBtn;
19        Label3: TLabel;
20        SaveDialog: TSaveDialog;
21        GroupBox1: TGroupBox;
22        Label1: TLabel;
23        Label2: TLabel;
24        chkIncludeSubFolders: TCheckBox;
25        CmdSelStartDir: TButton;
26        GroupBox2: TGroupBox;
27        chkAllFiles: TCheckBox;
28        chkOnlyWeb: TCheckBox;
29        chkOnlyInc: TCheckBox;
30        chkOnlySql: TCheckBox;
31        chkOnlyVB: TCheckBox;
32        chkOnlyDelphi: TCheckBox;
33        chkOnlyTxt: TCheckBox;
34        Bevel1: TBevel;
35        Label4: TLabel;
36        chkListAllSearched: TCheckBox;
37        RzStatusBar: TRzStatusBar;
38        RzClockStatus: TRzClockStatus;
39        RzStatusPane: TRzStatusPane;
40        RzStatusPane1: TRzStatusPane;
41        CmdStop: TBitBtn;
42        chkCaseSensitive: TCheckBox;
43        CmdQuit: TBitBtn;
44        cmbRootDir: TComboBox;
45        cmbPattern: TComboBox;
46        chkClearResults: TCheckBox;
47        MainMenu1: TMainMenu;
48        File1: TMenuItem;
49        Help1: TMenuItem;
50        Quit1: TMenuItem;
51        Contents1: TMenuItem;
52        About1: TMenuItem;
53        N1: TMenuItem;
54        procedure CmdSearchClick(Sender: TObject);
55        procedure CmdSaveClick(Sender: TObject);
56        procedure CmdSelStartDirClick(Sender: TObject);
57        procedure FormCreate(Sender: TObject);
58        procedure FormDestroy(Sender: TObject);
59        procedure cmbPatternChange(Sender: TObject);
60        procedure chkAllFilesClick(Sender: TObject);
61        procedure FormShow(Sender: TObject);
62        procedure CmdStopClick(Sender: TObject);
63        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
64        procedure CmdQuitClick(Sender: TObject);
65        procedure cmbRootDirChange(Sender: TObject);
66        procedure MemoDblClick(Sender: TObject);
67        procedure Quit1Click(Sender: TObject);
68        procedure About1Click(Sender: TObject);
69        procedure cmbRootDirExit(Sender: TObject);
70      private
71        AllowClickEvents : boolean;
72        Analyzing : boolean;
73    
74        SF : TSearchedFilesSet;
75        SearchInfo : TList;
76    
77        FRootDirs : TStringList;
78        FPatterns : TStringList;
79    
80        procedure GeneralSearch;
81        procedure UpdateStatus;
82      end;
83    
84    var
85      PSMainForm: TPSMainForm;
86    
87    implementation
88    
89    {$R *.DFM}
90    
91    uses
92      IniFiles, StStrL, GAsmCode, GVcl, BAbout, BGuard, BUtils;
93    
94    procedure TPSMainForm.GeneralSearch;
95    // this is the GeneralSearch method
96    var
97      PS : TPatternSearcher;
98      IsEval : boolean;
99    begin
100     (*$IFDEF Eval*)
101     IsEval := true;
102     (*$ELSE*)
103     IsEval := false;
104     (*$ENDIF*)
105   
106     PS := TPatternSearcher.Create(cmbRootDir.Text, cmbPattern.Text,
107       chkIncludeSubFolders.Checked, chkListAllSearched.Checked,
108       chkCaseSensitive.Checked, SF, Memo.Lines, nil, IsEval);
109     try
110       PS.Search;
111     finally
112       PS.Free;
113     end;
114   end;
115   
116   procedure TPSMainForm.CmdSearchClick(Sender: TObject);
117   var
118     Idx : integer;
119     S : string;
120   begin
121     Screen.Cursor := crHourGlass;
122   
123     try
124       S := cmbPattern.Text;
125       Idx := cmbPattern.Items.IndexOf(S);
126   
127       if Idx <> -1 then // existing item modified
128         cmbPattern.Items[Idx] := S
129       else
130       begin // new item added
131         cmbPattern.Items.Add(S);
132         Idx := cmbPattern.Items.Count-1;
133       end;
134   
135       cmbPattern.Text := S;
136       cmbPattern.ItemIndex := Idx;
137   
138       if chkClearResults.Checked then
139         Memo.Clear;
140         
141       SF := [];
142   
143       if chkAllFiles.Checked then
144         SF := [sfAll]
145       else
146       begin
147         if chkOnlyInc.Checked then
148           Include(SF, sfOnlyInc);
149   
150         if chkOnlyWeb.Checked then
151           Include(SF, sfOnlyWeb);
152   
153         if chkOnlySql.Checked then
154           Include(SF, sfOnlySql);
155   
156         if chkOnlyDelphi.Checked then
157           Include(SF, sfOnlyDelphi);
158   
159         if chkOnlyVB.Checked then
160           Include(SF, sfOnlyVB);
161   
162         if chkOnlyTxt.Checked then
163           Include(SF, sfOnlyTxt);
164       end;
165   
166       CmdSearch.Enabled := false;
167       CmdSave.Enabled := false;
168       CmdStop.Enabled := true;
169       CmdQuit.Enabled := false;
170   
171       PsEngine.gStopped := false;
172       Analyzing := true;
173   
174       GeneralSearch;
175   
176       Memo.SetFocus;
177       UpdateStatus;
178   
179     finally
180       Analyzing := false;
181       CmdSearch.Enabled := true;
182       CmdStop.Enabled := false;
183       CmdQuit.Enabled := true;
184   
185       UpdateStatus;
186       Screen.Cursor := crDefault;
187     end;
188   end;
189   
190   procedure TPSMainForm.CmdSaveClick(Sender: TObject);
191   begin
192     if SaveDialog.Execute then
193     begin
194       Screen.Cursor := crHourglass;
195   
196       try
197         Memo.Lines.SaveToFile(SaveDialog.FileName);
198       finally
199         Screen.Cursor := crDefault;
200       end;
201     end;
202   end;
203   
204   procedure TPSMainForm.CmdSelStartDirClick(Sender: TObject);
205   var
206     Idx : integer;
207     S : string;
208   begin
209     StBrowser.AdditionalText := 'Select a root directory';
210     StBrowser.SelectedFolder := cmbRootDir.Text;
211   
212     if StBrowser.Execute then
213     begin
214       S := StBrowser.Path;
215       Idx := cmbRootDir.Items.IndexOf(S);
216   
217       if Idx <> -1 then // existing item modified
218         cmbRootDir.Items[Idx] := S
219       else
220       begin // new item added
221         cmbRootDir.Items.Add(S);
222         Idx := cmbRootDir.Items.Count-1;
223       end;
224   
225       cmbRootDir.Text := S;
226       cmbRootDir.ItemIndex := Idx;
227     end;
228   end;
229   
230   procedure TPSMainForm.FormCreate(Sender: TObject);
231   var
232     IniFile : TIniFile;
233     I, RootDirIndex, PatternIndex : integer;
234     S : string;
235   begin
236     RzStatusPane.Caption := 'Version '+GetFileVersion;
237     RzStatusPane1.Caption := GetCopyright;
238   
239     FRootDirs := TStringList.Create;
240     FPatterns := TStringList.Create;
241   
242     SearchInfo := TList.Create;
243     IniFile := TIniFile.Create(ForceExtensionL(Application.ExeName, 'ini'));
244   
245     try
246       I := 1;
247   
248       repeat
249         S := IniFile.ReadString('Options', 'RootDir'+_FastIntToStr(I), '');
250         inc(I);
251   
252         if S <> '' then
253           FRootDirs.Add(S);
254       until S = '';
255   
256       RootDirIndex := IniFile.ReadInteger('Options', 'RootDirIndex', -1);
257       cmbRootDir.Items.Assign(FRootDirs);
258       CmbSelItem(cmbRootDir, RootDirIndex);
259   
260       I := 1;
261   
262       repeat
263         S := IniFile.ReadString('Options', 'Pattern'+_FastIntToStr(I), '');
264         inc(I);
265   
266         if S <> '' then
267           FPatterns.Add(S);
268       until S = '';
269   
270       PatternIndex := IniFile.ReadInteger('Options', 'PatternIndex', -1);
271       cmbPattern.Items.Assign(FPatterns);
272       CmbSelItem(cmbPattern, PatternIndex);
273   
274       chkIncludeSubFolders.Checked := IniFile.ReadBool('Options', 'IncludeSubFolders', true);
275       chkListAllSearched.Checked := IniFile.ReadBool('Options', 'ListAllSearched', true);
276       chkCaseSensitive.Checked := IniFile.ReadBool('Options', 'CaseSensitive', false);
277       chkClearResults.Checked := IniFile.ReadBool('Options', 'ClearResults', true);
278   
279       Height := IniFile.ReadInteger('Options', 'Height', 460);
280       Width := IniFile.ReadInteger('Options', 'Width', 620);
281   
282       chkAllFiles.Checked := IniFile.ReadBool('FileTypes', 'AllFiles', true);
283       chkOnlyInc.Checked := IniFile.ReadBool('FileTypes', 'OnlyInc', false);
284       chkOnlyWeb.Checked := IniFile.ReadBool('FileTypes', 'OnlyWeb', false);
285       chkOnlySql.Checked := IniFile.ReadBool('FileTypes', 'OnlySQL', false);
286       chkOnlyDelphi.Checked := IniFile.ReadBool('FileTypes', 'OnlyDelphi', false);
287       chkOnlyVB.Checked := IniFile.ReadBool('FileTypes', 'OnlyVB', false);
288       chkOnlyTxt.Checked := IniFile.ReadBool('FileTypes', 'OnlyTxt', false);
289   
290     finally
291       IniFile.Free;
292     end;
293   end;
294   
295   procedure TPSMainForm.FormDestroy(Sender: TObject);
296   var
297     IniFile : TIniFile;
298     I, RootDirIndex, PatternIndex : integer;
299   begin
300     IniFile := TIniFile.Create(ForceExtensionL(Application.ExeName, 'ini'));
301   
302     try
303       SetListFromCombo(FRootDirs, RootDirIndex, cmbRootDir);
304   
305       for I := 1 to FRootDirs.Count do
306         IniFile.WriteString('Options', 'RootDir'+_FastIntToStr(I), FRootDirs[I-1]);
307   
308       IniFile.WriteInteger('Options', 'RootDirIndex', RootDirIndex);
309   
310       SetListFromCombo(FPatterns, PatternIndex, cmbPattern);
311   
312       for I := 1 to FPatterns.Count do
313         IniFile.WriteString('Options', 'Pattern'+_FastIntToStr(I), FPatterns[I-1]);
314   
315       IniFile.WriteInteger('Options', 'PatternIndex', PatternIndex);
316   
317       IniFile.WriteBool('Options', 'IncludeSubFolders', chkIncludeSubFolders.Checked);
318       IniFile.WriteBool('Options', 'ListAllSearched', chkListAllSearched.Checked);
319       IniFile.WriteBool('Options', 'CaseSensitive', chkCaseSensitive.Checked);
320       IniFile.WriteBool('Options', 'ClearResults', chkClearResults.Checked);
321   
322       IniFile.WriteInteger('Options', 'Height', Height);
323       IniFile.WriteInteger('Options', 'Width', Width);
324   
325       IniFile.WriteBool('FileTypes', 'AllFiles', chkAllFiles.Checked);
326       IniFile.WriteBool('FileTypes', 'OnlyInc', chkOnlyInc.Checked);
327       IniFile.WriteBool('FileTypes', 'OnlyWeb', chkOnlyWeb.Checked);
328       IniFile.WriteBool('FileTypes', 'OnlySQL', chkOnlySql.Checked);
329       IniFile.WriteBool('FileTypes', 'OnlyDelphi', chkOnlyDelphi.Checked);
330       IniFile.WriteBool('FileTypes', 'OnlyVB', chkOnlyVB.Checked);
331       IniFile.WriteBool('FileTypes', 'OnlyTxt', chkOnlyTxt.Checked);
332   
333     finally
334       IniFile.Free;
335     end;
336   
337     SearchInfo.Free;
338     FPatterns.Free;
339     FRootDirs.Free;
340   end;
341   
342   procedure TPSMainForm.cmbPatternChange(Sender: TObject);
343   begin
344     if AllowClickEvents then
345       UpdateStatus;
346   end;
347   
348   procedure TPSMainForm.UpdateStatus;
349   var
350     Enable : boolean;
351   begin
352     CmdSearch.Enabled := (cmbRootDir.Text <> '') and
353       (cmbPattern.Text <> '');
354   
355     CmdStop.Enabled := false;
356     CmdSave.Enabled := Memo.Lines.Count > 0;
357   
358     Enable := not chkAllFiles.Checked;
359     chkOnlyInc.Enabled := Enable;
360     chkOnlyWeb.Enabled := Enable;
361     chkOnlySql.Enabled := Enable;
362     chkOnlyDelphi.Enabled := Enable;
363     chkOnlyVB.Enabled := Enable;
364     chkOnlyTxt.Enabled := Enable;
365   end;
366   
367   procedure TPSMainForm.FormShow(Sender: TObject);
368   begin
369     UpdateStatus;
370     AllowClickEvents := true;
371   end;
372   
373   procedure TPSMainForm.chkAllFilesClick(Sender: TObject);
374   begin
375     if AllowClickEvents then
376       UpdateStatus;
377   end;
378   
379   procedure TPSMainForm.CmdStopClick(Sender: TObject);
380   begin
381     PsEngine.gStopped := true;
382   end;
383   
384   procedure TPSMainForm.FormCloseQuery(Sender: TObject;
385     var CanClose: Boolean);
386   begin
387     if Analyzing then
388       CanClose := false;
389   end;
390   
391   procedure TPSMainForm.CmdQuitClick(Sender: TObject);
392   begin
393     Close;
394   end;
395   
396   procedure TPSMainForm.cmbRootDirChange(Sender: TObject);
397   begin
398     if AllowClickEvents then
399       UpdateStatus;
400   end;
401   
402   procedure TPSMainForm.MemoDblClick(Sender: TObject);
403   begin
404   // TODO : double-click to open in app
405   end;
406   
407   procedure TPSMainForm.Quit1Click(Sender: TObject);
408   begin
409     Close;
410   end;
411   
412   procedure TPSMainForm.About1Click(Sender: TObject);
413   begin
414     ShowAboutBox(BGuard.gGuardKey_TurboSearch, '3@Q.!%4%.', '3@Q.!%4%.',
415       Icon, false);
416   
417     UpdateStatus;
418   end;
419   
420   procedure TPSMainForm.cmbRootDirExit(Sender: TObject);
421   var
422     Txt : string;
423     Idx : integer;
424   begin
425     Txt := cmbRootDir.Text;
426   
427     if Txt <> '' then
428     begin
429       Idx := cmbRootDir.Items.IndexOf(Txt);
430   
431       if Idx = -1 then
432         cmbRootDir.Items.Add(Txt);
433     end;
434   end;
435   
436   end.

Module Calls (2 levels)


PsForm
 └PsEngine

Module Called-By (2 levels)


PsForm
  ts┘