Subversion Repositories fastphp

Rev

Rev 80 | Rev 85 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 80 Rev 83
Line 42... Line 42...
42
  // TODO: "{$IFDEF USE_SHDOCVW_TLB}_TLB{$ENDIF}" does not work with Delphi 10.2
42
  // TODO: "{$IFDEF USE_SHDOCVW_TLB}_TLB{$ENDIF}" does not work with Delphi 10.2
43
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
43
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
44
  Dialogs, StdCtrls, OleCtrls, ComCtrls, ExtCtrls, ToolWin, IniFiles,
44
  Dialogs, StdCtrls, OleCtrls, ComCtrls, ExtCtrls, ToolWin, IniFiles,
45
  SynEditHighlighter, SynHighlighterPHP, SynEdit, ShDocVw, FindReplace,
45
  SynEditHighlighter, SynHighlighterPHP, SynEdit, ShDocVw, FindReplace,
46
  ActnList, SynEditMiscClasses, SynEditSearch, RunPHP, ImgList, SynUnicode,
46
  ActnList, SynEditMiscClasses, SynEditSearch, RunPHP, ImgList, SynUnicode,
47
  System.ImageList, System.Actions, Vcl.Menus, Vcl.Themes;
47
  System.ImageList, System.Actions, Vcl.Menus, Vcl.Themes, System.UITypes;
48
 
48
 
49
{.$DEFINE OnlineHelp}
49
{.$DEFINE OnlineHelp}
50
 
50
 
51
type
51
type
52
  TForm1 = class(TForm)
52
  TForm1 = class(TForm)
Line 109... Line 109...
109
    BtnSpecialCharsOn: TImage;
109
    BtnSpecialCharsOn: TImage;
110
    BtnLightOn: TImage;
110
    BtnLightOn: TImage;
111
    BtnLightOff: TImage;
111
    BtnLightOff: TImage;
112
    BtnLight: TImage;
112
    BtnLight: TImage;
113
    StartUpTimer: TTimer;
113
    StartUpTimer: TTimer;
-
 
114
    FileModTimer: TTimer;
114
    procedure Run(Sender: TObject);
115
    procedure Run(Sender: TObject);
115
    procedure RunConsole(Sender: TObject);
116
    procedure RunConsole(Sender: TObject);
116
    procedure FormShow(Sender: TObject);
117
    procedure FormShow(Sender: TObject);
117
    procedure FormCreate(Sender: TObject);
118
    procedure FormCreate(Sender: TObject);
118
    procedure FormDestroy(Sender: TObject);
119
    procedure FormDestroy(Sender: TObject);
Line 167... Line 168...
167
    procedure BtnSpecialCharsClick(Sender: TObject);
168
    procedure BtnSpecialCharsClick(Sender: TObject);
168
    procedure WebBrowser1WindowClosing(ASender: TObject;
169
    procedure WebBrowser1WindowClosing(ASender: TObject;
169
      IsChildWindow: WordBool; var Cancel: WordBool);
170
      IsChildWindow: WordBool; var Cancel: WordBool);
170
    procedure BtnLightClick(Sender: TObject);
171
    procedure BtnLightClick(Sender: TObject);
171
    procedure StartUpTimerTimer(Sender: TObject);
172
    procedure StartUpTimerTimer(Sender: TObject);
-
 
173
    procedure FileModTimerTimer(Sender: TObject);
172
  private
174
  private
173
    hMutex: THandle;
175
    hMutex: THandle;
174
    CurSearchTerm: string;
176
    CurSearchTerm: string;
175
    HlpPrevPageIndex: integer;
177
    HlpPrevPageIndex: integer;
176
    SrcRep: TSynEditFindReplace;
178
    SrcRep: TSynEditFindReplace;
177
    {$IFDEF OnlineHelp}
179
    {$IFDEF OnlineHelp}
178
    gOnlineHelpWord: string;
180
    gOnlineHelpWord: string;
179
    {$ENDIF}
181
    {$ENDIF}
-
 
182
    FileModLast: TDateTime;
180
    procedure Help;
183
    procedure Help;
181
    function InputRequestCallback(var data: AnsiString): boolean;
184
    function InputRequestCallback(var data: AnsiString): boolean;
182
    function OutputNotifyCallback(const data: AnsiString): boolean;
185
    function OutputNotifyCallback(const data: AnsiString): boolean;
183
    procedure RightTrimAll;
186
    procedure RightTrimAll;
184
  protected
187
  protected
Line 898... Line 901...
898
    TFastPHPConfig.SpecialChars := true;
901
    TFastPHPConfig.SpecialChars := true;
899
  end;
902
  end;
900
  SynEdit1.Options := opts;
903
  SynEdit1.Options := opts;
901
end;
904
end;
902
 
905
 
-
 
906
procedure TForm1.FileModTimerTimer(Sender: TObject);
-
 
907
begin
-
 
908
  FileModTimer.Enabled := false;
-
 
909
  if FileModLast <> FileAge(GetScrapFile) then
-
 
910
  begin
-
 
911
    FileModLast := FileAge(GetScrapFile);
-
 
912
    if SynEdit1.Modified then
-
 
913
    begin
-
 
914
      if MessageDlg('The file was changed in a different application BUT IT WAS ALSO MODIFIED HERE! Reload file AND LOSE CHANGES HERE?', mtWarning, mbYesNoCancel, 0) = mrYes then
-
 
915
      begin
-
 
916
        SynEdit1.Lines.LoadFromFile(GetScrapFile);
-
 
917
      end;
-
 
918
    end
-
 
919
    else
-
 
920
    begin
-
 
921
      if MessageDlg('The file was changed in a different application! Reload file?', mtConfirmation, mbYesNoCancel, 0) = mrYes then
-
 
922
      begin
-
 
923
        SynEdit1.Lines.LoadFromFile(GetScrapFile);
-
 
924
      end;
-
 
925
    end;
-
 
926
  end;
-
 
927
  FileModTimer.Enabled := true;
-
 
928
end;
-
 
929
 
903
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
930
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
904
begin
931
begin
905
  TFastPHPConfig.FontSize := SynEdit1.Font.Size;
932
  TFastPHPConfig.FontSize := SynEdit1.Font.Size;
906
end;
933
end;
907
 
934
 
Line 934... Line 961...
934
end;
961
end;
935
 
962
 
936
procedure TForm1.FormCreate(Sender: TObject);
963
procedure TForm1.FormCreate(Sender: TObject);
937
var
964
var
938
  exeDir: string;
965
  exeDir: string;
-
 
966
  sScrapFile: string;
939
begin
967
begin
940
  HlpPrevPageIndex := -1;
968
  HlpPrevPageIndex := -1;
941
  CurSearchTerm := '';
969
  CurSearchTerm := '';
-
 
970
  sScrapFile := GetScrapFile;
942
  Caption := Caption + ' - ' + GetScrapFile;
971
  Caption := Caption + ' - ' + sScrapFile;
-
 
972
  Application.Title := Format('%s - FastPHP', [ExtractFileName(sScrapFile)]);
943
  SrcRep := TSynEditFindReplace.Create(self);
973
  SrcRep := TSynEditFindReplace.Create(self);
944
  SrcRep.Editor := SynEdit1;
974
  SrcRep.Editor := SynEdit1;
945
  SynEdit1.Gutter.Gradient := HighColorWindows;
975
  SynEdit1.Gutter.Gradient := HighColorWindows;
946
 
976
 
947
  Screen.Cursors[crMouseGutter] := LoadCursor(hInstance, 'MOUSEGUTTER');
977
  Screen.Cursors[crMouseGutter] := LoadCursor(hInstance, 'MOUSEGUTTER');
948
  SynEdit1.Gutter.Cursor := crMouseGutter;
978
  SynEdit1.Gutter.Cursor := crMouseGutter;
949
 
979
 
950
  exeDir := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)));
980
  exeDir := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)));
951
  if FileExists(exeDir + 'codeexplorer.bmp') then ImageList1.LoadAndSplitImages(exeDir + 'codeexplorer.bmp');
981
  if FileExists(exeDir + 'codeexplorer.bmp') then ImageList1.LoadAndSplitImages(exeDir + 'codeexplorer.bmp');
-
 
982
 
-
 
983
  FileModLast := FileAge(sScrapFile);
-
 
984
  FileModTimer.Enabled := True;
952
end;
985
end;
953
 
986
 
954
procedure TForm1.FormDestroy(Sender: TObject);
987
procedure TForm1.FormDestroy(Sender: TObject);
955
begin
988
begin
956
  if Assigned(ChmIndex) then
989
  if Assigned(ChmIndex) then
Line 1056... Line 1089...
1056
    hMutex := hMutexNew;
1089
    hMutex := hMutexNew;
1057
    {$ENDREGION}
1090
    {$ENDREGION}
1058
 
1091
 
1059
    FSaveAsFilename := SaveDialog1.FileName;
1092
    FSaveAsFilename := SaveDialog1.FileName;
1060
    Caption := Copy(Caption, 1, Pos(' - ', Caption)-1) + ' - ' + FSaveAsFilename;
1093
    Caption := Copy(Caption, 1, Pos(' - ', Caption)-1) + ' - ' + FSaveAsFilename;
-
 
1094
    Application.Title := Format('%s - FastPHP', [ExtractFileName(FSaveAsFilename)]);
1061
    Button7.Click;
1095
    Button7.Click;
1062
  end;
1096
  end;
1063
end;
1097
end;
1064
 
1098
 
1065
procedure TForm1.SaveToFile(filename: string);
1099
procedure TForm1.SaveToFile(filename: string);
Line 1068... Line 1102...
1068
  ms: TMemoryStream;
1102
  ms: TMemoryStream;
1069
  fs: TFileStream;
1103
  fs: TFileStream;
1070
  eolStyle: string;
1104
  eolStyle: string;
1071
  str: string;
1105
  str: string;
1072
begin
1106
begin
-
 
1107
  FileModTimer.Enabled := false;
-
 
1108
 
1073
  ms := TMemoryStream.Create;
1109
  ms := TMemoryStream.Create;
1074
  ss := TStringStream.Create('');
1110
  ss := TStringStream.Create('');
1075
  fs := TFileStream.Create(filename, fmCreate);
1111
  fs := TFileStream.Create(filename, fmCreate);
1076
  try
1112
  try
1077
    // Save everything in a memory stream and then to a string
1113
    // Save everything in a memory stream and then to a string
Line 1133... Line 1169...
1133
  finally
1169
  finally
1134
    FreeAndNil(ms);
1170
    FreeAndNil(ms);
1135
    FreeAndNil(ss);
1171
    FreeAndNil(ss);
1136
    FreeAndNil(fs);
1172
    FreeAndNil(fs);
1137
  end;
1173
  end;
-
 
1174
 
-
 
1175
  FileModLast := FileAge(GetScrapFile);
-
 
1176
  FileModTimer.Enabled := True;
1138
end;
1177
end;
1139
 
1178
 
1140
procedure TForm1.StartCodeExplorer;
1179
procedure TForm1.StartCodeExplorer;
1141
begin
1180
begin
1142
  codeExplorer := TRunCodeExplorer.Create(true);
1181
  codeExplorer := TRunCodeExplorer.Create(true);