amxmodx/editor/studio/AMXX_Studio.dpr
Christian Hammacher c3450df360 - Upgraded Code-Inspector
- Now checks language strings
  - New design
  - Better parsing
  - Displays actions
- Added function: can't load files twice
- Updated Code-Explorer
  - now faster
  - fixed a few small bugs
  - now keeps selection
- Updated Settings-Dialog
- Fixed output bug (showed sometimes huge numbers as line numbers)
- Fixed design bug (displayed wrong plugin data on start)
- Fixed small bug in the color dialog
- Fixed small start bug (didn't show real plugin data on startup)
- Added restore function
- Fixed code-explorer bug (didn't recognize @-functions)
- Fixed highlight bug (had problems with ^" and ^ in strings)
- Fixed potential crash bug
- Fixed another highlight bug
- Fixed aother code-explorer bug...
- Added 2 settings (for auto-complete and calltips)
- Added SCM_SETTINGS_REMOVEPAGE-message
- Fixed SCM_SETTINGS_CREATEPAGE bug
2005-10-07 21:52:48 +00:00

158 lines
5.8 KiB
ObjectPascal
Executable File

program AMXX_Studio;
uses
madExcept,
madLinkDisAsm,
Forms,
Windows,
Classes,
Messages,
SysUtils,
SciLexerMemo,
JvInspector,
UnitfrmMain in 'UnitfrmMain.pas' {frmMain},
UnitMainTools in 'UnitMainTools.pas',
UnitfrmSettings in 'UnitfrmSettings.pas' {frmSettings},
UnitLanguages in 'UnitLanguages.pas',
UnitfrmSelectColor in 'UnitfrmSelectColor.pas' {frmSelectColor},
UnitfrmInfo in 'UnitfrmInfo.pas' {frmInfo},
UnitCodeSnippets in 'UnitCodeSnippets.pas',
UnitCodeUtils in 'UnitCodeUtils.pas',
UnitfrmSearch in 'UnitfrmSearch.pas' {frmSearch},
UnitfrmReplace in 'UnitfrmReplace.pas' {frmReplace},
UnitfrmAllFilesForm in 'UnitfrmAllFilesForm.pas' {frmAllFilesForm},
UnitfrmGoToLine in 'UnitfrmGoToLine.pas' {frmGoToLine},
UnitfrmPluginsIniEditor in 'UnitfrmPluginsIniEditor.pas' {frmPluginsIniEditor},
UnitfrmSocketsTerminal in 'UnitfrmSocketsTerminal.pas' {frmSocketsTerminal},
UnitReadThread in 'UnitReadThread.pas',
UnitCodeExplorerUpdater in 'UnitCodeExplorerUpdater.pas',
UnitTextAnalyze in 'UnitTextAnalyze.pas',
UnitfrmHudMsgGenerator in 'UnitfrmHudMsgGenerator.pas' {frmHudMsgGenerator},
UnitCompile in 'UnitCompile.pas',
UnitfrmAutoIndent in 'UnitfrmAutoIndent.pas' {frmAutoIndent},
UnitfrmHTMLPreview in 'UnitfrmHTMLPreview.pas' {frmHTMLPreview},
UnitfrmMenuGenerator in 'UnitfrmMenuGenerator.pas' {frmMenuGenerator},
UnitCodeInspector in 'UnitCodeInspector.pas',
UnitfrmMOTDGen in 'UnitfrmMOTDGen.pas' {frmMOTDGen},
UnitMenuGenerators in 'UnitMenuGenerators.pas',
UnitfrmClose in 'UnitfrmClose.pas' {frmClose},
UnitfrmConnGen in 'UnitfrmConnGen.pas' {frmConnGen},
UnitPlugins in 'UnitPlugins.pas',
UnitfrmIRCPaster in 'UnitfrmIRCPaster.pas' {frmIRCPaster};
{ Used components:
- JVCL 3.0
- FlatPack
- FlatStyle
- Toolbar2000, TBX, SpTBX, mbTBX Lib
- Scintilla and DelphiSci
- madExcept
}
{$R *.res}
var eCache: TStringList;
i: integer;
eExt: String;
begin
if (FindWindow('TfrmMain', 'AMXX-Studio') <> 0) and (FindWindow(nil, 'Delphi 7') = 0) then begin
if ParamCount > 0 then begin
for i := 1 to ParamCount do
SendStudioMsg(SCM_LOADFILE, ParamStr(i), 0);
end;
SetForegroundWindow(FindWindow('TfrmMain', 'AMXX-Studio'));
exit;
end;
Application.Initialize;
Application.Title := 'AMXX-Studio';
Application.CreateForm(TfrmMain, frmMain);
Application.CreateForm(TfrmAutoIndent, frmAutoIndent);
Application.CreateForm(TfrmSettings, frmSettings);
Application.OnMessage := frmMain.OnMessage;
Application.OnShortCut := frmMain.OnShortCut;
frmMain.sciEditor.Lines[5] := '#define PLUGIN "' + frmSettings.txtDefaultName.Text + '"';
frmMain.sciEditor.Lines[6] := '#define VERSION "' + frmSettings.txtDefaultVersion.Text + '"';
frmMain.sciEditor.Lines[7] := '#define AUTHOR "' + frmSettings.txtDefaultAuthor.Text + '"';
frmMain.sciPropertyLoader.FileName := ExtractFilePath(ParamStr(0)) + 'config\Editor.sci';
if FileExists(frmMain.sciPropertyLoader.FileName) then
frmMain.sciPropertyLoader.Load
else
frmMain.sciPropertyLoader.Save; // create new if it doesnt exist...
frmMain.sciEditor.Gutter1.Width := 40;
frmMain.sciEditor.Gutter1.MarginType := gutLineNumber;
LoadCodeSnippets('Pawn');
ResetToEnglish;
TJvCustomInspectorData.ItemRegister.Add(TJvInspectorTypeInfoRegItem.Create(TJvInspectorSelectionTextListItem, TypeInfo(TSelectionTextList)));
eCache := TStringList.Create;
if FileExists(ExtractFilePath(ParamStr(0)) + 'config\Cache.cfg') then
eCache.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'config\Cache.cfg');
for i := 1 to ParamCount do begin
if eCache.IndexOf(ParamStr(i)) = -1 then
eCache.Add(ParamStr(i));
end;
for i := 0 to eCache.Count -1 do begin
if FileExists(eCache[i]) then begin
eExt := ExtractFileExt(eCache[i]);
eExt := LowerCase(eExt);
if (eExt = '.sma') or (eExt = '.inc') or (eExt = '.inl') then // Pawn files
PAWNProjects.Open(eCache[i])
else if (eExt = '.cpp') or (eExt = '.h') then // C++ files
CPPProjects.Open(eCache[i])
else if (eExt = '.htm') or (eExt = '.html') then // HTML files
OtherProjects.Open(eCache[i], 'HTML')
else if (eExt = '.sql') then // SQL databases
OtherProjects.Open(eCache[i], 'SQL')
else if (eExt = '.xml') then // XML files
OtherProjects.Open(eCache[i], 'XML')
else // Other files and/or Textfiles
OtherProjects.Open(eCache[i], 'null');
end;
end;
eCache.Free;
i := 0;
if PAWNProjects.Count > 1 then begin
PAWNProjects.Close(0);
i := 1;
end;
if CPPProjects.Count > 1 then begin
CPPProjects.Close(0);
i := 1;
end;
if OtherProjects.Count > 1 then begin
OtherProjects.Close(0);
i := 1;
end;
if i = 1 then begin
ActivateProjects(0, False); // Started := True is already set here
PAWNProjects.Activate(PAWNProjects.Count -1, False, False);
end;
UpdateCI(frmMain.sciEditor.GetCurrentLineNumber);
Application.CreateForm(TfrmSelectColor, frmSelectColor);
Application.CreateForm(TfrmInfo, frmInfo);
Application.CreateForm(TfrmSearch, frmSearch);
Application.CreateForm(TfrmReplace, frmReplace);
Application.CreateForm(TfrmAllFilesForm, frmAllFilesForm);
Application.CreateForm(TfrmGoToLine, frmGoToLine);
Application.CreateForm(TfrmPluginsIniEditor, frmPluginsIniEditor);
Application.CreateForm(TfrmSocketsTerminal, frmSocketsTerminal);
Application.CreateForm(TfrmHudMsgGenerator, frmHudMsgGenerator);
Application.CreateForm(TfrmMenuGenerator, frmMenuGenerator);
Application.CreateForm(TfrmMOTDGen, frmMOTDGen);
Application.CreateForm(TfrmClose, frmClose);
Application.CreateForm(TfrmConnGen, frmConnGen);
Application.CreateForm(TfrmIRCPaster, frmIRCPaster);
if IEInstalled then
Application.CreateForm(TfrmHTMLPreview, frmHTMLPreview)
else
frmMain.mnuMOTDGenerator.Enabled := False;
LoadPlugins;
Application.Run;
end.