deleted TCEMainForm.expandSymbolicString() in favor of the new dedicated TCESymbolExpander class

This commit is contained in:
Basile Burg 2014-11-18 11:34:46 +01:00
parent 52be1650f4
commit 43c646aebb
8 changed files with 36 additions and 169 deletions

View File

@ -47,7 +47,7 @@ implementation
{$R *.lfm}
uses
ce_main;
ce_symstring;
{$REGION Standard Comp/Obj------------------------------------------------------}
constructor TCECdbWidget.create(aOwner: TComponent);
@ -164,7 +164,7 @@ begin
if (fCdbProc = nil) or (key <> #13) then
exit;
//
cmd := CEMainForm.expandSymbolicString(txtCdbCmd.Text);
cmd := symbolExpander.get(txtCdbCmd.Text);
inp := cmd + LineEnding;
fCdbProc.Input.Write(inp[1], length(inp));
//

View File

@ -56,7 +56,7 @@ type
implementation
uses
ce_main;
ce_symstring;
constructor TCEToolItem.create(ACollection: TCollection);
begin
@ -89,12 +89,12 @@ begin
fProcess.OnReadData:= @processOutput;
fProcess.OnTerminate:= @processOutput;
fProcess.Options := fOpts;
fProcess.Executable := CEMainForm.expandSymbolicString(fExecutable);
fProcess.Executable := symbolExpander.get(fExecutable);
fProcess.ShowWindow := fShowWin;
fProcess.CurrentDirectory := CEMainForm.expandSymbolicString(fWorkingDir);
fProcess.CurrentDirectory := symbolExpander.get(fWorkingDir);
fProcess.Parameters.Clear;
for i:= 0 to fParameters.Count-1 do
fProcess.Parameters.AddText(CEMainForm.expandSymbolicString(fParameters.Strings[i]));
fProcess.Parameters.AddText(symbolExpander.get(fParameters.Strings[i]));
fProcess.Execute;
end;

View File

@ -355,7 +355,7 @@ type
implementation
uses
ce_main;
ce_symstring;
procedure TOptsGroup.doChanged;
begin
@ -370,9 +370,9 @@ begin
if fGenJson then
aList.Add('-X');
if fDocDir <> '' then
aList.Add('-Dd' + CEMainForm.expandSymbolicString(fDocDir));
aList.Add('-Dd' + symbolExpander.get(fDocDir));
if fJsonFname <> '' then
aList.Add('-Xf' + CEMainForm.expandSymbolicString(fJsonFname));
aList.Add('-Xf' + symbolExpander.get(fJsonFname));
end;
procedure TDocOpts.assign(aValue: TPersistent);
@ -844,18 +844,18 @@ var
begin
for str in fSrcs do
begin
str := CEMainForm.expandSymbolicString(str);
str := symbolExpander.get(str);
if not listAsteriskPath(str, aList, dExtList) then
aList.Add(str);
end;
for str in fIncl do
aList.Add('-I'+ CEMainForm.expandSymbolicString(str));
aList.Add('-I'+ symbolExpander.get(str));
for str in fImpt do
aList.Add('-J'+ CEMainForm.expandSymbolicString(str));
aList.Add('-J'+ symbolExpander.get(str));
if fFname <> '' then
aList.Add('-of' + CEMainForm.expandSymbolicString(fFname));
aList.Add('-of' + symbolExpander.get(fFname));
if fObjDir <> '' then
aList.Add('-od' + CEMainForm.expandSymbolicString(fObjDir));
aList.Add('-od' + symbolExpander.get(fObjDir));
end;
procedure TPathsOpts.assign(aValue: TPersistent);
@ -958,7 +958,7 @@ begin
str2 := '-' + str1
else
str2 := str1;
aList.AddText(CEMainForm.expandSymbolicString(str2));
aList.AddText(symbolExpander.get(str2));
end;
end;

View File

@ -277,7 +277,6 @@ type
procedure UpdateDockCaption(Exclude: TControl = nil); override;
//
procedure openFile(const aFilename: string);
function expandSymbolicString(const symString: string): string;
//
property WidgetList: TCEWidgetList read fWidgList;
property LibraryManager: TLibraryManager read fLibMan;
@ -293,7 +292,7 @@ implementation
{$R *.lfm}
uses
SynMacroRecorder, strutils, ce_options;
SynMacroRecorder, strutils, ce_options, ce_symstring;
{$REGION Standard Comp/Obj------------------------------------------------------}
constructor TCEMainForm.create(aOwner: TComponent);
@ -1307,7 +1306,7 @@ begin
fRunProc.CurrentDirectory := extractFilePath(fRunProc.Executable);
if runArgs <> '' then
fRunProc.Parameters.DelimitedText := expandSymbolicString(runArgs);
fRunProc.Parameters.DelimitedText := symbolExpander.get(runArgs);
fRunProc.Executable := fname + exeExt;
fPrInpWidg.process := fRunProc;
fRunProc.Execute;
@ -1720,135 +1719,6 @@ begin
end;
{$ENDREGION}
function TCEMainForm.expandSymbolicString(const symString: string): string;
var
elems: TStringList;
elem: string;
begs, ends: boolean;
i, j, extLen: integer;
begin
result := '';
if symString = '' then exit;
//
elems := TStringList.Create;
try
i := 0;
elem := '';
repeat
inc(i);
if not (symString[i] in ['<', '>']) then
elem += symString[i]
else
begin
if symString[i] = '<' then
begs := true;
ends := symString[i] = '>';
elems.Add(elem);
elem := '';
if begs and ends then
begin
begs := false;
ends := false;
elems.Objects[elems.Count-1] := Self;
end;
end;
until
i = length(symString);
elems.Add(elem);
elem := '';
for i:= 0 to elems.Count-1 do
begin
if elems.Objects[i] = nil then
result += elems.Strings[i]
else case elems.Strings[i] of
'<','>' :
continue;
'CPF', 'CurrentProjectFile':
begin
if fProject <> nil then begin
if fileExists(fProject.fileName) then
result += fProject.fileName
else
result += '``';
end else result += '``';
end;
'CPFS', 'CurrentProjectFiles':
begin
if fProject <> nil then begin
for j := 0 to fProject.Sources.Count-1 do
begin
result += fProject.getAbsoluteSourceName(j);
if fProject.Sources.Count > 1 then
if j <> fProject.Sources.Count-1 then
result += LineEnding;
end;
if fProject.Sources.Count = 0 then
result += '``';
end else result += '``';
end;
'CPN', 'CurrentProjectName':
begin
if fProject <> nil then begin
if fileExists(fProject.fileName) then
begin
result += extractFileName(fProject.fileName);
extLen := length(ExtractFileExt(result));
result := result[1..length(result)-extLen];
end else result += '``';
end else result += '``';
end;
'CPP', 'CurrentProjectPath':
begin
if fProject <> nil then begin
if fileExists(fProject.fileName) then
result += extractFilePath(fProject.fileName)
else result += '``';
end else result += '``';
end;
'CPR', 'CurrentProjectRoot':
begin
if fProject <> nil then begin
if directoryExists(fProject.getAbsoluteFilename(fProject.RootFolder)) then
result += fProject.getAbsoluteFilename(fProject.RootFolder)
else if directoryExists(fProject.RootFolder) then
result += fProject.RootFolder;
end else result += '``';
end;
'CFF', 'CurrentFileFile':
begin
if fDoc <> nil then begin
if fileExists(fDoc.fileName) then
result += fDoc.fileName
else result += '``';
end else result += '``';
end;
'CFP', 'CurrentFilePath':
begin
if fDoc <> nil then begin
if fileExists(fDoc.fileName) then
result += extractFilePath(fDoc.fileName)
else result += '``'
end else result += '``';
end;
'CI', 'CurrentIdentifier':
begin
if fDoc <> nil then begin
if fDoc.Identifier <> '' then
result += fDoc.Identifier
else result += '``'
end else result += '``';
end;
'CAF', 'CoeditApplicationFile':
result += application.ExeName;
'CAP', 'CoeditApplicationPath':
result += extractFilePath(Application.ExeName);
end;
end;
finally
elems.Free;
end;
end;
procedure PlugDispatchToHost(aPlugin: TCEPlugin; opCode: LongWord; data0: Integer; data1, data2: Pointer); cdecl;
var
ctxt: NativeUint;

View File

@ -90,7 +90,7 @@ type
implementation
uses
ce_interfaces, controls, dialogs, ce_main;
ce_interfaces, controls, dialogs, ce_symstring;
constructor TCEProject.create(aOwner: TComponent);
begin
@ -310,7 +310,7 @@ end;
function TCEProject.outputFilename: string;
begin
result := currentConfiguration.pathsOptions.outputFilename;
result := CEMainForm.expandSymbolicString(result);
result := symbolExpander.get(result);
if result <> '' then
begin
if not fileExists(result) then
@ -462,7 +462,7 @@ var
pname: string;
i, j: integer;
begin
pname := CEMainForm.expandSymbolicString(processInfo.executable);
pname := symbolExpander.get(processInfo.executable);
if (not exeInSysPath(pname)) and (pname <> '') then
exit(false)
else if (pname = '') then
@ -474,7 +474,7 @@ begin
process.Executable := pname;
j := process.Parameters.Count-1;
for i:= 0 to j do
process.Parameters.AddText(CEMainForm.expandSymbolicString(process.Parameters.Strings[i]));
process.Parameters.AddText(symbolExpander.get(process.Parameters.Strings[i]));
for i:= 0 to j do
process.Parameters.Delete(0);
if process.CurrentDirectory = '' then
@ -567,7 +567,7 @@ begin
i := 1;
repeat
prm := ExtractDelimited(i, runArgs, [' ']);
prm := CEMainForm.expandSymbolicString(prm);
prm := symbolExpander.get(prm);
if prm <> '' then
fRunner.Parameters.AddText(prm);
Inc(i);

View File

@ -59,7 +59,7 @@ implementation
{$R *.lfm}
uses
ce_main;
ce_main, ce_symstring;
{$REGION Standard Comp/Obj------------------------------------------------------}
constructor TCEProjectInspectWidget.create(aOwner: TComponent);
@ -321,7 +321,7 @@ begin
begin
if fold = '' then
continue;
itm := Tree.Items.AddChild(fImpsNode, shortenPath(CEMainForm.expandSymbolicString(fold)));
itm := Tree.Items.AddChild(fImpsNode, shortenPath(symbolExpander.get(fold)));
itm.ImageIndex := 5;
itm.SelectedIndex := 5;
end;
@ -331,7 +331,7 @@ begin
begin
if fold = '' then
continue;
itm := Tree.Items.AddChild(fInclNode, shortenPath(CEMainForm.expandSymbolicString(fold)));
itm := Tree.Items.AddChild(fInclNode, shortenPath(symbolExpander.get(fold)));
itm.ImageIndex := 5;
itm.SelectedIndex := 5;
end;
@ -344,11 +344,11 @@ begin
lst := TStringList.Create;
try
if listAsteriskPath(src, lst) then for src in lst do begin
itm := Tree.Items.AddChild(fXtraNode, shortenPath(CEMainForm.expandSymbolicString(src)));
itm := Tree.Items.AddChild(fXtraNode, shortenPath(symbolExpander.get(src)));
itm.ImageIndex := 2;
itm.SelectedIndex := 2;
end else begin
itm := Tree.Items.AddChild(fXtraNode, shortenPath(CEMainForm.expandSymbolicString(src)));
itm := Tree.Items.AddChild(fXtraNode, shortenPath(symbolExpander.get(src)));
itm.ImageIndex := 2;
itm.SelectedIndex := 2;
end;

View File

@ -84,7 +84,7 @@ type
implementation
{$R *.lfm}
uses ce_main, ce_libman;
uses ce_libman, ce_symstring, ce_main;
{$REGION Standard Comp/Obj------------------------------------------------------}
constructor TCEStaticExplorerWidget.create(aOwner: TComponent);
@ -382,9 +382,9 @@ begin
if srcFname <> itm then fDmdProc.Parameters.Add(itm);
end;
for itm in fProj.currentConfiguration.pathsOptions.Includes do
fDmdProc.Parameters.Add('-I' + CEMainForm.expandSymbolicString(itm));
fDmdProc.Parameters.Add('-I' + symbolExpander.get(itm));
for itm in fProj.currentConfiguration.pathsOptions.Imports do
fDmdProc.Parameters.Add('-J' + CEMainForm.expandSymbolicString(itm));
fDmdProc.Parameters.Add('-J' + symbolExpander.get(itm));
end;
//adds the libman entries

View File

@ -27,7 +27,7 @@ type
procedure updateSymbols;
public
constructor create;
destructor destroy;
destructor destroy; override;
//
procedure projNew(aProject: TCEProject);
procedure projClosing(aProject: TCEProject);
@ -59,6 +59,7 @@ end;
destructor TCESymbolExpander.destroy;
begin
EntitiesConnector.removeObserver(self);
inherited;
end;
{$ENDREGION}
@ -66,14 +67,12 @@ end;
procedure TCESymbolExpander.projNew(aProject: TCEProject);
begin
fProj := aProject;
updateSymbols;
end;
procedure TCESymbolExpander.projClosing(aProject: TCEProject);
begin
if fProj <> aProject then exit;
fProj := nil;
updateSymbols;
end;
procedure TCESymbolExpander.projFocused(aProject: TCEProject);
@ -84,7 +83,6 @@ end;
procedure TCESymbolExpander.projChanged(aProject: TCEProject);
begin
if fProj <> aProject then exit;
updateSymbols;
end;
{$ENDREGION}
@ -92,26 +90,22 @@ end;
procedure TCESymbolExpander.docNew(aDoc: TCESynMemo);
begin
fDoc := aDoc;
updateSymbols;
end;
procedure TCESymbolExpander.docClosing(aDoc: TCESynMemo);
begin
if aDoc <> fDoc then exit;
fDoc := nil;
updateSymbols;
end;
procedure TCESymbolExpander.docFocused(aDoc: TCESynMemo);
begin
fDoc := aDoc;
updateSymbols;
end;
procedure TCESymbolExpander.docChanged(aDoc: TCESynMemo);
begin
if aDoc <> fDoc then exit;
updateSymbols;
end;
{$ENDREGION}
@ -141,7 +135,9 @@ begin
fSymbols[CFF] := na;
fSymbols[CFP] := na;
end;
fSymbols[CI] := fDoc.Identifier;
if fDoc.Identifier <> '' then
fSymbols[CI] := fDoc.Identifier
else fSymbols[CI] := na;
end else begin
fSymbols[CFF] := na;
fSymbols[CFP] := na;
@ -191,6 +187,7 @@ var
begin
result := '';
if symString = '' then exit;
updateSymbols;
//
elems := TStringList.Create;
try