From 43c646aebb47d094c41fe634c2e536a4bf138c8c Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Tue, 18 Nov 2014 11:34:46 +0100 Subject: [PATCH] deleted TCEMainForm.expandSymbolicString() in favor of the new dedicated TCESymbolExpander class --- src/ce_cdbcmd.pas | 4 +- src/ce_customtools.pas | 8 +-- src/ce_dmdwrap.pas | 18 ++--- src/ce_main.pas | 134 +------------------------------------- src/ce_project.pas | 10 +-- src/ce_projinspect.pas | 10 +-- src/ce_staticexplorer.pas | 6 +- src/ce_symstring.pas | 15 ++--- 8 files changed, 36 insertions(+), 169 deletions(-) diff --git a/src/ce_cdbcmd.pas b/src/ce_cdbcmd.pas index 0614e62e..0c6c056f 100644 --- a/src/ce_cdbcmd.pas +++ b/src/ce_cdbcmd.pas @@ -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)); // diff --git a/src/ce_customtools.pas b/src/ce_customtools.pas index ff65afa1..d679a6a2 100644 --- a/src/ce_customtools.pas +++ b/src/ce_customtools.pas @@ -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; diff --git a/src/ce_dmdwrap.pas b/src/ce_dmdwrap.pas index c0100210..41d06caa 100644 --- a/src/ce_dmdwrap.pas +++ b/src/ce_dmdwrap.pas @@ -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; diff --git a/src/ce_main.pas b/src/ce_main.pas index bb2288b8..47861530 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -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; diff --git a/src/ce_project.pas b/src/ce_project.pas index fab1f2c4..65b7c932 100644 --- a/src/ce_project.pas +++ b/src/ce_project.pas @@ -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); diff --git a/src/ce_projinspect.pas b/src/ce_projinspect.pas index 2c263c51..373239e7 100644 --- a/src/ce_projinspect.pas +++ b/src/ce_projinspect.pas @@ -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; diff --git a/src/ce_staticexplorer.pas b/src/ce_staticexplorer.pas index 679360db..cacc657a 100644 --- a/src/ce_staticexplorer.pas +++ b/src/ce_staticexplorer.pas @@ -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 diff --git a/src/ce_symstring.pas b/src/ce_symstring.pas index f86bee4c..671407e3 100644 --- a/src/ce_symstring.pas +++ b/src/ce_symstring.pas @@ -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