mirror of https://gitlab.com/basile.b/dexed.git
common project interface renaming + works on #10
- DUB proj editor file dbl clickable - icons - filter for files and props
This commit is contained in:
parent
5fd10645ac
commit
ef8d72138c
|
|
@ -146,7 +146,7 @@ begin
|
||||||
try
|
try
|
||||||
for i:= 0 to fProj.Sources.Count-1 do
|
for i:= 0 to fProj.Sources.Count-1 do
|
||||||
begin
|
begin
|
||||||
fold := extractFilePath(fProj.getAbsoluteSourceName(i));
|
fold := extractFilePath(fProj.sourceAbsolute(i));
|
||||||
if folds.IndexOf(fold) = -1 then
|
if folds.IndexOf(fold) = -1 then
|
||||||
folds.Add(fold);
|
folds.Add(fold);
|
||||||
end;
|
end;
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,6 @@ uses
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
TUpdaterTarget = (configs, files);
|
|
||||||
|
|
||||||
TCEDubProject = class(TComponent, ICECommonProject)
|
TCEDubProject = class(TComponent, ICECommonProject)
|
||||||
private
|
private
|
||||||
fFilename: string;
|
fFilename: string;
|
||||||
|
|
@ -31,36 +29,39 @@ type
|
||||||
procedure udpateConfigsFromJson;
|
procedure udpateConfigsFromJson;
|
||||||
procedure updateSourcesFromJson;
|
procedure updateSourcesFromJson;
|
||||||
procedure updateTargetKindFromJson;
|
procedure updateTargetKindFromJson;
|
||||||
function findTargetKindIn(value: TJSONObject): boolean;
|
function findTargetKindInd(value: TJSONObject): boolean;
|
||||||
procedure dubProcOutput(proc: TProcess);
|
procedure dubProcOutput(proc: TProcess);
|
||||||
function getCurrentCustomConfig: TJSONObject;
|
function getCurrentCustomConfig: TJSONObject;
|
||||||
//
|
|
||||||
function getFormat: TCEProjectFormat;
|
|
||||||
function getProject: TObject;
|
|
||||||
//
|
|
||||||
public
|
public
|
||||||
constructor create(aOwner: TComponent); override;
|
constructor create(aOwner: TComponent); override;
|
||||||
destructor destroy; override;
|
destructor destroy; override;
|
||||||
//
|
//
|
||||||
function getFilename: string;
|
function filename: string;
|
||||||
|
function basePath: string;
|
||||||
procedure loadFromFile(const aFilename: string);
|
procedure loadFromFile(const aFilename: string);
|
||||||
procedure saveToFile(const aFilename: string);
|
procedure saveToFile(const aFilename: string);
|
||||||
function getIfModified: boolean;
|
//
|
||||||
function getBinaryKind: TProjectBinaryKind;
|
function getFormat: TCEProjectFormat;
|
||||||
|
function getProject: TObject;
|
||||||
|
function modified: boolean;
|
||||||
|
function binaryKind: TProjectBinaryKind;
|
||||||
function getCommandLine: string;
|
function getCommandLine: string;
|
||||||
//
|
//
|
||||||
function getIfIsSource(const aFilename: string): boolean;
|
function isSource(const aFilename: string): boolean;
|
||||||
function getOutputFilename: string;
|
function sourcesCount: integer;
|
||||||
|
function sourceRelative(index: integer): string;
|
||||||
|
function sourceAbsolute(index: integer): string;
|
||||||
|
function outputFilename: string;
|
||||||
//
|
//
|
||||||
function getConfigurationCount: integer;
|
function configurationCount: integer;
|
||||||
procedure setActiveConfiguration(index: integer);
|
procedure setActiveConfiguration(index: integer);
|
||||||
function getConfigurationName(index: integer): string;
|
function configurationName(index: integer): string;
|
||||||
//
|
//
|
||||||
function compile: boolean;
|
function compile: boolean;
|
||||||
function run(const runArgs: string = ''): boolean;
|
function run(const runArgs: string = ''): boolean;
|
||||||
//
|
//
|
||||||
property json: TJSONObject read fJSON;
|
property json: TJSONObject read fJSON;
|
||||||
property sources: TStringList read fSrcs;
|
//property sources: TStringList read fSrcs;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// these 9 built types always exist
|
// these 9 built types always exist
|
||||||
|
|
@ -77,6 +78,7 @@ const
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
{$REGION Standard Comp/Obj -----------------------------------------------------}
|
||||||
constructor TCEDubProject.create(aOwner: TComponent);
|
constructor TCEDubProject.create(aOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
|
|
@ -100,6 +102,225 @@ begin
|
||||||
fSrcs.Free;
|
fSrcs.Free;
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
{$ENDREGION --------------------------------------------------------------------}
|
||||||
|
|
||||||
|
{$REGION ICECommonProject: project props ---------------------------------------}
|
||||||
|
function TCEDubProject.getFormat: TCEProjectFormat;
|
||||||
|
begin
|
||||||
|
exit(pfDub);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.getProject: TObject;
|
||||||
|
begin
|
||||||
|
exit(self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.filename: string;
|
||||||
|
begin
|
||||||
|
exit(fFilename);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.basePath: string;
|
||||||
|
begin
|
||||||
|
exit(fBasePath);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEDubProject.loadFromFile(const aFilename: string);
|
||||||
|
var
|
||||||
|
loader: TMemoryStream;
|
||||||
|
parser : TJSONParser;
|
||||||
|
begin
|
||||||
|
loader := TMemoryStream.Create;
|
||||||
|
try
|
||||||
|
fBasePath := extractFilePath(aFilename);
|
||||||
|
fFilename := aFilename;
|
||||||
|
loader.LoadFromFile(fFilename);
|
||||||
|
fJSON.Free;
|
||||||
|
parser := TJSONParser.Create(loader);
|
||||||
|
try
|
||||||
|
fJSON := parser.Parse as TJSONObject;
|
||||||
|
finally
|
||||||
|
parser.Free;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
loader.Free;
|
||||||
|
updateFields;
|
||||||
|
subjProjChanged(fProjectSubject, self);
|
||||||
|
fModified := false;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEDubProject.saveToFile(const aFilename: string);
|
||||||
|
var
|
||||||
|
saver: TMemoryStream;
|
||||||
|
str: string;
|
||||||
|
begin
|
||||||
|
saver := TMemoryStream.Create;
|
||||||
|
try
|
||||||
|
fFilename := aFilename;
|
||||||
|
str := fJSON.FormatJSON;
|
||||||
|
saver.Write(str[1], length(str));
|
||||||
|
saver.SaveToFile(fFilename);
|
||||||
|
finally
|
||||||
|
saver.Free;
|
||||||
|
fModified := false;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.binaryKind: TProjectBinaryKind;
|
||||||
|
begin
|
||||||
|
exit(fBinKind);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.getCommandLine: string;
|
||||||
|
var
|
||||||
|
str: TStringList;
|
||||||
|
begin
|
||||||
|
str := TStringList.Create;
|
||||||
|
try
|
||||||
|
str.Add('dub' + exeExt);
|
||||||
|
if fBuiltTypeIx <> 0 then
|
||||||
|
str.Add('build=' + fBuildTypes.Strings[fBuiltTypeIx]);
|
||||||
|
if fConfigIx <> 0 then
|
||||||
|
str.Add('config=' + fConfigs.Strings[fConfigIx]);
|
||||||
|
result := str.Text;
|
||||||
|
finally
|
||||||
|
str.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.outputFilename: string;
|
||||||
|
begin
|
||||||
|
//TODO-cDUB: implement outputFilename
|
||||||
|
exit('');
|
||||||
|
end;
|
||||||
|
{$ENDREGION --------------------------------------------------------------------}
|
||||||
|
|
||||||
|
{$REGION ICECommonProject: sources ---------------------------------------------}
|
||||||
|
function TCEDubProject.isSource(const aFilename: string): boolean;
|
||||||
|
var
|
||||||
|
fname: string;
|
||||||
|
begin
|
||||||
|
fname := aFilename;
|
||||||
|
if fileExists(fname) then
|
||||||
|
fname := ExtractRelativepath(fBasePath, fname);
|
||||||
|
result := fSrcs.IndexOf(fname) <> -1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.sourcesCount: integer;
|
||||||
|
begin
|
||||||
|
exit(fSrcs.Count);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.sourceRelative(index: integer): string;
|
||||||
|
begin
|
||||||
|
exit(fSrcs.Strings[index]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.sourceAbsolute(index: integer): string;
|
||||||
|
var
|
||||||
|
fname: string;
|
||||||
|
begin
|
||||||
|
fname := fSrcs.Strings[index];
|
||||||
|
if FileExists(fname) then
|
||||||
|
result := fname
|
||||||
|
else
|
||||||
|
result := expandFilenameEx(fBasePath, fname);
|
||||||
|
end;
|
||||||
|
{$ENDREGION --------------------------------------------------------------------}
|
||||||
|
|
||||||
|
{$REGION ICECommonProject: configs ---------------------------------------------}
|
||||||
|
function TCEDubProject.configurationCount: integer;
|
||||||
|
begin
|
||||||
|
exit(fConfigsCount);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEDubProject.setActiveConfiguration(index: integer);
|
||||||
|
begin
|
||||||
|
fBuiltTypeIx := index div fConfigs.Count;
|
||||||
|
fConfigIx := index mod fConfigs.Count;
|
||||||
|
updateSourcesFromJson;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.configurationName(index: integer): string;
|
||||||
|
begin
|
||||||
|
result := fBuildTypes.Strings[index div fConfigs.Count] + ' - ' +
|
||||||
|
fConfigs.Strings[index mod fConfigs.Count];
|
||||||
|
end;
|
||||||
|
{$ENDREGION --------------------------------------------------------------------}
|
||||||
|
|
||||||
|
{$REGION ICECommonProject: actions ---------------------------------------------}
|
||||||
|
function TCEDubProject.compile: boolean;
|
||||||
|
var
|
||||||
|
dubproc: TProcess;
|
||||||
|
olddir: string;
|
||||||
|
prjname: string;
|
||||||
|
msgs: ICEMessagesDisplay;
|
||||||
|
begin
|
||||||
|
result := false;
|
||||||
|
msgs := getMessageDisplay;
|
||||||
|
msgs.clearByData(Self as ICECommonProject);
|
||||||
|
prjname := shortenPath(fFilename);
|
||||||
|
dubproc := TProcess.Create(nil);
|
||||||
|
olddir := GetCurrentDir;
|
||||||
|
try
|
||||||
|
msgs.message('compiling ' + prjname, self as ICECommonProject, amcProj, amkInf);
|
||||||
|
chDir(extractFilePath(fFilename));
|
||||||
|
dubproc.Executable := 'dub' + exeExt;
|
||||||
|
dubproc.Options := dubproc.Options + [poStderrToOutPut, poUsePipes];
|
||||||
|
dubproc.CurrentDirectory := extractFilePath(fFilename);
|
||||||
|
dubproc.ShowWindow := swoHIDE;
|
||||||
|
if fBuiltTypeIx <> 0 then
|
||||||
|
dubproc.Parameters.Add('build=' + fBuildTypes.Strings[fBuiltTypeIx]);
|
||||||
|
if fConfigIx <> 0 then
|
||||||
|
dubproc.Parameters.Add('config=' + fConfigs.Strings[fConfigIx]);
|
||||||
|
dubproc.Execute;
|
||||||
|
while dubproc.Running do
|
||||||
|
dubProcOutput(dubproc);
|
||||||
|
if dubproc.ExitStatus = 0 then begin
|
||||||
|
msgs.message(prjname + ' has been successfully compiled', self as ICECommonProject, amcProj, amkInf);
|
||||||
|
result := true;
|
||||||
|
end else
|
||||||
|
msgs.message(prjname + ' has not been compiled', self as ICECommonProject, amcProj, amkWarn);
|
||||||
|
finally
|
||||||
|
chDir(olddir);
|
||||||
|
dubproc.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCEDubProject.run(const runArgs: string = ''): boolean;
|
||||||
|
begin
|
||||||
|
//TODO-cDUB: implement
|
||||||
|
result := false;
|
||||||
|
end;
|
||||||
|
{$ENDREGION --------------------------------------------------------------------}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function isValidDubProject(const filename: string): boolean;
|
||||||
|
var
|
||||||
|
maybe: TCEDubProject;
|
||||||
|
begin
|
||||||
|
result := true;
|
||||||
|
// avoid the project to notify the observers, current project is not replaced
|
||||||
|
EntitiesConnector.beginUpdate;
|
||||||
|
maybe := TCEDubProject.create(nil);
|
||||||
|
EntitiesConnector.removeSubject(maybe);
|
||||||
|
try
|
||||||
|
try
|
||||||
|
maybe.loadFromFile(filename);
|
||||||
|
if maybe.json = nil then
|
||||||
|
result := false
|
||||||
|
else if maybe.json.Find('name') = nil then
|
||||||
|
result := false;
|
||||||
|
except
|
||||||
|
result := false;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
maybe.Free;
|
||||||
|
EntitiesConnector.endUpdate;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEDubProject.dubProcOutput(proc: TProcess);
|
procedure TCEDubProject.dubProcOutput(proc: TProcess);
|
||||||
var
|
var
|
||||||
|
|
@ -118,21 +339,6 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCEDubProject.getFormat: TCEProjectFormat;
|
|
||||||
begin
|
|
||||||
exit(pfDub);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCEDubProject.getProject: TObject;
|
|
||||||
begin
|
|
||||||
exit(self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCEDubProject.getFilename: string;
|
|
||||||
begin
|
|
||||||
exit(fFilename);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCEDubProject.getCurrentCustomConfig: TJSONObject;
|
function TCEDubProject.getCurrentCustomConfig: TJSONObject;
|
||||||
var
|
var
|
||||||
item: TJSONData;
|
item: TJSONData;
|
||||||
|
|
@ -160,9 +366,8 @@ begin
|
||||||
fBuildTypes.Clear;
|
fBuildTypes.Clear;
|
||||||
fConfigs.Clear;
|
fConfigs.Clear;
|
||||||
|
|
||||||
// configs: builtype0 - config0, builtype0 - config1, ... , builtype0 - configN
|
// the CE interface for dub doesn't make a difference betwenn build type and config
|
||||||
// builtype1 - config0, builtype1 - config1, ... , builtype1 - configN, etc
|
// instead, each possible combination type+build is generated.
|
||||||
|
|
||||||
|
|
||||||
if fJSON.Find('configurations') <> nil then
|
if fJSON.Find('configurations') <> nil then
|
||||||
begin
|
begin
|
||||||
|
|
@ -273,7 +478,7 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCEDubProject.findTargetKindIn(value: TJSONObject): boolean;
|
function TCEDubProject.findTargetKindInd(value: TJSONObject): boolean;
|
||||||
var
|
var
|
||||||
tt: TJSONData;
|
tt: TJSONData;
|
||||||
begin
|
begin
|
||||||
|
|
@ -299,14 +504,14 @@ begin
|
||||||
fBinKind := executable;
|
fBinKind := executable;
|
||||||
if fJSON = nil then exit;
|
if fJSON = nil then exit;
|
||||||
// note: in Coedit this is only used to known if output can be launched
|
// note: in Coedit this is only used to known if output can be launched
|
||||||
guess := not findTargetKindIn(fJSON);
|
guess := not findTargetKindInd(fJSON);
|
||||||
conf := getCurrentCustomConfig;
|
conf := getCurrentCustomConfig;
|
||||||
if conf <> nil then
|
if conf <> nil then
|
||||||
guess := guess and findTargetKindIn(conf);
|
guess := guess and findTargetKindInd(conf);
|
||||||
if guess then
|
if guess then
|
||||||
begin
|
begin
|
||||||
// TODO-cDUB: guess target kind
|
// TODO-cDUB: guess target kind
|
||||||
// app.d in source ? exe : lib
|
// app.d in sourceRelative ? exe : lib
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
@ -317,173 +522,12 @@ begin
|
||||||
updateTargetKindFromJson;
|
updateTargetKindFromJson;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCEDubProject.getBinaryKind: TProjectBinaryKind;
|
function TCEDubProject.modified: boolean;
|
||||||
begin
|
|
||||||
exit(fBinKind);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEDubProject.loadFromFile(const aFilename: string);
|
|
||||||
var
|
|
||||||
loader: TMemoryStream;
|
|
||||||
parser : TJSONParser;
|
|
||||||
begin
|
|
||||||
loader := TMemoryStream.Create;
|
|
||||||
try
|
|
||||||
fBasePath := extractFilePath(aFilename);
|
|
||||||
fFilename := aFilename;
|
|
||||||
loader.LoadFromFile(fFilename);
|
|
||||||
fJSON.Free;
|
|
||||||
parser := TJSONParser.Create(loader);
|
|
||||||
try
|
|
||||||
fJSON := parser.Parse as TJSONObject;
|
|
||||||
finally
|
|
||||||
parser.Free;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
loader.Free;
|
|
||||||
updateFields;
|
|
||||||
subjProjChanged(fProjectSubject, self);
|
|
||||||
fModified := false;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEDubProject.saveToFile(const aFilename: string);
|
|
||||||
var
|
|
||||||
saver: TMemoryStream;
|
|
||||||
str: string;
|
|
||||||
begin
|
|
||||||
saver := TMemoryStream.Create;
|
|
||||||
try
|
|
||||||
fFilename := aFilename;
|
|
||||||
str := fJSON.FormatJSON;
|
|
||||||
saver.Write(str[1], length(str));
|
|
||||||
saver.SaveToFile(fFilename);
|
|
||||||
finally
|
|
||||||
saver.Free;
|
|
||||||
fModified := false;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCEDubProject.getCommandLine: string;
|
|
||||||
var
|
|
||||||
str: TStringList;
|
|
||||||
begin
|
|
||||||
str := TStringList.Create;
|
|
||||||
try
|
|
||||||
str.Add('dub' + exeExt);
|
|
||||||
if fBuiltTypeIx <> 0 then
|
|
||||||
str.Add('build=' + fBuildTypes.Strings[fBuiltTypeIx]);
|
|
||||||
if fConfigIx <> 0 then
|
|
||||||
str.Add('config=' + fConfigs.Strings[fConfigIx]);
|
|
||||||
result := str.Text;
|
|
||||||
finally
|
|
||||||
str.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCEDubProject.getIfModified: boolean;
|
|
||||||
begin
|
begin
|
||||||
exit(fModified);
|
exit(fModified);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCEDubProject.getIfIsSource(const aFilename: string): boolean;
|
|
||||||
begin
|
|
||||||
//TODO-cDUB: implement getIfIsSource
|
|
||||||
exit(false);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCEDubProject.getOutputFilename: string;
|
|
||||||
begin
|
|
||||||
//TODO-cDUB: implement getOutputFilename
|
|
||||||
exit('');
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCEDubProject.getConfigurationCount: integer;
|
|
||||||
begin
|
|
||||||
exit(fConfigsCount);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEDubProject.setActiveConfiguration(index: integer);
|
|
||||||
begin
|
|
||||||
fBuiltTypeIx := index div fConfigs.Count;
|
|
||||||
fConfigIx := index mod fConfigs.Count;
|
|
||||||
updateSourcesFromJson;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCEDubProject.getConfigurationName(index: integer): string;
|
|
||||||
begin
|
|
||||||
result := fBuildTypes.Strings[index div fConfigs.Count] + ' - ' +
|
|
||||||
fConfigs.Strings[index mod fConfigs.Count];
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCEDubProject.compile: boolean;
|
|
||||||
var
|
|
||||||
dubproc: TProcess;
|
|
||||||
olddir: string;
|
|
||||||
prjname: string;
|
|
||||||
msgs: ICEMessagesDisplay;
|
|
||||||
begin
|
|
||||||
result := false;
|
|
||||||
msgs := getMessageDisplay;
|
|
||||||
msgs.clearByData(Self as ICECommonProject);
|
|
||||||
prjname := shortenPath(fFilename);
|
|
||||||
dubproc := TProcess.Create(nil);
|
|
||||||
olddir := GetCurrentDir;
|
|
||||||
try
|
|
||||||
msgs.message('compiling ' + prjname, self as ICECommonProject, amcProj, amkInf);
|
|
||||||
chDir(extractFilePath(fFilename));
|
|
||||||
dubproc.Executable := 'dub' + exeExt;
|
|
||||||
dubproc.Options := dubproc.Options + [poStderrToOutPut, poUsePipes];
|
|
||||||
dubproc.CurrentDirectory := extractFilePath(fFilename);
|
|
||||||
dubproc.ShowWindow := swoHIDE;
|
|
||||||
if fBuiltTypeIx <> 0 then
|
|
||||||
dubproc.Parameters.Add('build=' + fBuildTypes.Strings[fBuiltTypeIx]);
|
|
||||||
if fConfigIx <> 0 then
|
|
||||||
dubproc.Parameters.Add('config=' + fConfigs.Strings[fConfigIx]);
|
|
||||||
dubproc.Execute;
|
|
||||||
while dubproc.Running do
|
|
||||||
dubProcOutput(dubproc);
|
|
||||||
if dubproc.ExitStatus = 0 then begin
|
|
||||||
msgs.message(prjname + ' has been successfully compiled', self as ICECommonProject, amcProj, amkInf);
|
|
||||||
result := true;
|
|
||||||
end else
|
|
||||||
msgs.message(prjname + ' has not been compiled', self as ICECommonProject, amcProj, amkWarn);
|
|
||||||
finally
|
|
||||||
chDir(olddir);
|
|
||||||
dubproc.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCEDubProject.run(const runArgs: string = ''): boolean;
|
|
||||||
begin
|
|
||||||
//TODO-cDUB: implement
|
|
||||||
result := false;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function isValidDubProject(const filename: string): boolean;
|
|
||||||
var
|
|
||||||
maybe: TCEDubProject;
|
|
||||||
begin
|
|
||||||
result := true;
|
|
||||||
// avoid the project to notify the observers, current project is not replaced
|
|
||||||
EntitiesConnector.beginUpdate;
|
|
||||||
maybe := TCEDubProject.create(nil);
|
|
||||||
EntitiesConnector.removeSubject(maybe);
|
|
||||||
try
|
|
||||||
try
|
|
||||||
maybe.loadFromFile(filename);
|
|
||||||
if maybe.json = nil then
|
|
||||||
result := false
|
|
||||||
else if maybe.json.Find('name') = nil then
|
|
||||||
result := false;
|
|
||||||
except
|
|
||||||
result := false;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
maybe.Free;
|
|
||||||
EntitiesConnector.endUpdate;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,10 @@ inherited CEDubProjectEditorWidget: TCEDubProjectEditorWidget
|
||||||
Height = 549
|
Height = 549
|
||||||
Top = 4
|
Top = 4
|
||||||
Width = 403
|
Width = 403
|
||||||
ActivePage = TabSheet1
|
ActivePage = TabSheet2
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BorderSpacing.Around = 4
|
BorderSpacing.Around = 4
|
||||||
TabIndex = 0
|
TabIndex = 1
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object TabSheet1: TTabSheet
|
object TabSheet1: TTabSheet
|
||||||
Caption = 'Inspector'
|
Caption = 'Inspector'
|
||||||
|
|
@ -63,6 +63,19 @@ inherited CEDubProjectEditorWidget: TCEDubProjectEditorWidget
|
||||||
Layout = blGlyphBottom
|
Layout = blGlyphBottom
|
||||||
ShowCaption = False
|
ShowCaption = False
|
||||||
end
|
end
|
||||||
|
object fltInspect: TTreeFilterEdit
|
||||||
|
Left = 58
|
||||||
|
Height = 22
|
||||||
|
Top = 2
|
||||||
|
Width = 327
|
||||||
|
ButtonWidth = 23
|
||||||
|
NumGlyphs = 1
|
||||||
|
Align = alClient
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
MaxLength = 0
|
||||||
|
TabOrder = 0
|
||||||
|
FilteredTreeview = treeInspect
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object treeInspect: TTreeView
|
object treeInspect: TTreeView
|
||||||
Left = 4
|
Left = 4
|
||||||
|
|
@ -73,13 +86,15 @@ inherited CEDubProjectEditorWidget: TCEDubProjectEditorWidget
|
||||||
BorderSpacing.Around = 4
|
BorderSpacing.Around = 4
|
||||||
DefaultItemHeight = 18
|
DefaultItemHeight = 18
|
||||||
HideSelection = False
|
HideSelection = False
|
||||||
|
Images = imgList
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
ScrollBars = ssAutoBoth
|
ScrollBars = ssAutoBoth
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
|
OnDblClick = treeInspectDblClick
|
||||||
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||||
Items.Data = {
|
Items.Data = {
|
||||||
F9FFFFFF020002000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000
|
F9FFFFFF020002000000000000000000000000000000FFFFFFFF000000000000
|
||||||
0000000C000000536F757263652066696C6573FFFFFFFFFFFFFFFFFFFFFFFFFF
|
0000000C000000536F757263652066696C6573010000000100000001000000FF
|
||||||
FFFFFF0000000000000000000E000000436F6E66696775726174696F6E73
|
FFFFFF0000000000000000000E000000436F6E66696775726174696F6E73
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
@ -107,6 +122,7 @@ inherited CEDubProjectEditorWidget: TCEDubProjectEditorWidget
|
||||||
BorderSpacing.Around = 4
|
BorderSpacing.Around = 4
|
||||||
DefaultItemHeight = 18
|
DefaultItemHeight = 18
|
||||||
HideSelection = False
|
HideSelection = False
|
||||||
|
Images = imgList
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
ScrollBars = ssAutoBoth
|
ScrollBars = ssAutoBoth
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
|
|
@ -146,9 +162,353 @@ inherited CEDubProjectEditorWidget: TCEDubProjectEditorWidget
|
||||||
Layout = blGlyphBottom
|
Layout = blGlyphBottom
|
||||||
ShowCaption = False
|
ShowCaption = False
|
||||||
end
|
end
|
||||||
|
object fltEdit: TTreeFilterEdit
|
||||||
|
Left = 58
|
||||||
|
Height = 22
|
||||||
|
Top = 2
|
||||||
|
Width = 327
|
||||||
|
ButtonWidth = 23
|
||||||
|
NumGlyphs = 1
|
||||||
|
Align = alClient
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
MaxLength = 0
|
||||||
|
TabOrder = 0
|
||||||
|
FilteredTreeview = propTree
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
inherited contextMenu: TPopupMenu
|
||||||
|
left = 248
|
||||||
|
top = 8
|
||||||
|
end
|
||||||
|
object imgList: TImageList[2]
|
||||||
|
left = 208
|
||||||
|
top = 8
|
||||||
|
Bitmap = {
|
||||||
|
4C690A0000001000000010000000B3B3B1EFB0B0ADFFAEAEACFFAEAEACFFAEAE
|
||||||
|
ACFFAFAFACFFAFAFADFFB1B1AFD5B4B4B100B5B5B300B5B5B300B5B5B300B5B5
|
||||||
|
B300B5B5B300B5B5B300B5B5B300AFAFADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||||
|
FFFFFFFFFFFFFFFFFFFFEDEDEEFFB3B3B0A4B5B5B300B5B5B300B5B5B300B5B5
|
||||||
|
B300B5B5B300B5B5B300B5B5B300AEAEACFFFFFFFFFFE3E3E2FFBEBEBCFFA8A8
|
||||||
|
A6FFA8A8A6FFACACAAFFB0B0ADFFB2B2B0FFB3B3B1FFB4B4B2A8B4B4B200B4B4
|
||||||
|
B200B4B4B200B5B5B300B5B5B300AEAEABFFFFFFFFFFE9E8E7FFA8A8A6FFFFFF
|
||||||
|
FFFFFFFFFFFFD1D1D0FFADADABFFADADABFFAEAEABFFADADABFFAEAEABFFAFAF
|
||||||
|
ADFFB0B0AEACB3B3B100B5B5B300ADADABFFFFFFFFFFEDECECFFA8A8A5FFFFFF
|
||||||
|
FFFFE4E4E3FFA9A9A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||||
|
FFFFE9E9E9FFAFAFADA7B3B3B100ADADABFFFFFFFFFFF1F1F0FFA7A7A5FFFFFF
|
||||||
|
FFFFEAE8E7FFA8A8A6FFFFFFFFFFE0E0DFFFE0E0DFFFE0E0DFFFFFFFFFFFA4A4
|
||||||
|
A2FFFFFFFFFFE9E9E9FFB0B0AEACADADABFFFFFFFFFFF5F5F4FFA7A7A5FFFFFF
|
||||||
|
FFFFEDECECFFA8A8A5FFFFFFFFFFE5E4E3FFE6E5E4FFE5E4E3FFFFFFFFFFCACA
|
||||||
|
C9FFA4A4A2FFFFFFFFFFAFAFADFFADADABFFFFFFFFFFF9F8F8FFA7A7A5FFFFFF
|
||||||
|
FFFFF1F1F0FFA7A7A5FFFFFFFFFFE9E8E8FFEAE8E9FFE9E8E8FFF3F2F2FFFFFF
|
||||||
|
FFFFFFFFFFFFFFFFFFFFAEAEABFFADADABFFFFFFFFFFFDFCFCFFA6A7A4FFFFFF
|
||||||
|
FFFFF5F5F4FFA7A7A5FFFFFFFFFFECECEBFFEDEDECFFEDEDECFFECECEBFFEBEB
|
||||||
|
EAFFEBEBEAFFFFFFFFFFADADABFFAEAEABFFFFFFFFFFFFFFFFFFA7A7A4FFFFFF
|
||||||
|
FFFFF9F8F8FFA7A7A4FFFFFFFFFFF0F0EFFFF0F0EFFFF0F0EFFFF0F0EFFFEFEF
|
||||||
|
EEFFEFEFEEFFFFFFFFFFADADABFFB0B0ADFFFFFFFFFFFFFFFFFFA8A8A6FFFFFF
|
||||||
|
FFFFFDFCFCFFA6A7A4FFFFFFFFFFF4F3F3FFF4F3F3FFF4F3F3FFF4F3F3FFF4F3
|
||||||
|
F3FFF4F3F3FFFFFFFFFFADADABFFB0B0AEF1B0B0AEFFAFAFADFFACACA9FFFFFF
|
||||||
|
FFFFFFFFFFFFA6A7A4FFFFFFFFFFF7F6F6FFF7F6F6FFF7F6F6FFF7F6F6FFF7F6
|
||||||
|
F6FFF7F6F6FFFFFFFFFFADADABFF0000002F6666655D54545351AFAFADFFFFFF
|
||||||
|
FFFFFFFFFFFFA8A8A6FFFFFFFFFFFCFCFCFFFBFBFCFFFBFBFCFFFBFBFCFFFBFB
|
||||||
|
FCFFFCFCFCFFFFFFFFFFAEAEABFFB5B5B3000000000B00000008A4A4A2BDB0B0
|
||||||
|
AEFFAFAFADFFADADABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||||
|
FFFFFFFFFFFFFFFFFFFFB0B0ADFFB5B5B300B5B5B300B5B5B300000000230000
|
||||||
|
003300000033AFAFADECAFAFADFFAEAEABFFADADABFFADADABFFADADABFFADAD
|
||||||
|
ABFFAEAEABFFAFAFADFFB1B1AFF2000000000000000000000000000000000000
|
||||||
|
0000000000000000002E00000033000000330000003300000033000000330000
|
||||||
|
0033000000330000003300000030FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009E9E9E709C9C9CD69B9B9BFB9999
|
||||||
|
99FBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF009D9D9D709B9B9BF5E4E4E4FFEEEEEEFF9696
|
||||||
|
96FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF009B9B9BD6E2E2E2FFE7E7E7FFB9B9B9FF9393
|
||||||
|
93FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00989898FBE4E4E4FFCFCFCFFF929292C2FFFF
|
||||||
|
FF008E8E8EFF8C8C8CFF8A8A8AFBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00969696FCDDDDDDFFC5C5C5FF8F8F8FC18D8D
|
||||||
|
8DC3ACACACFFD7D7D7FF878787FBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF0095959548939393FED4D4D4FFC8C8C8FFBCBCBCFFBABA
|
||||||
|
BAFFC2C2C2FFC4C4C4FF858585D6FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00E3AD8B92DAA788CF929292FBC7C7C7FFCCCCCCFFC7C7C7FFC6C6C6FFC3C3
|
||||||
|
C3FFC0C0C0FF848484F582828270FFFFFF00FFFFFF00FFFFFF00FFFFFF00E1A9
|
||||||
|
8992E7B99CFFE6B698FFD8A98CFFD2D2D2FFB5B5B5FF898989FE878787FB8585
|
||||||
|
85FB838383D681818170FFFFFF00FFFFFF00FFFFFF00FFFFFF00E1A98792E6B7
|
||||||
|
9CFFEFCFBCFFEECEBAFFE2AE8CFFD29B7BFF888888F786868623FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E1A78592E6B799FFEECE
|
||||||
|
BBFFE9C0A7FFE8BDA3FFECC8B3FFDFA481FFD2895DC9FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DFA58392E6B498FFEECDBAFFE9BF
|
||||||
|
A5FFE5B496FFE7B99DFFEBC6AEFFDE9F79FFD58351AAFFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00DFA57F92E6B394FFEECCB8FFE9BEA5FFE5B3
|
||||||
|
94FFE6B79BFFEAC4ADFFDE9E78FFD3814FACFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00DD9F79FFEDCCB7FFE8BDA3FFE4B192FFE6B6
|
||||||
|
9AFFEAC3ACFFDE9C74FFD37F4DACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00DB976FFFEDC8B3FFE7B89BFFE6B498FFEAC3
|
||||||
|
ABFFDE9C73FFD17D49AFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00D99165CCDFA481FFEAC2ABFFEAC0A8FFDC99
|
||||||
|
71FFD17B47AFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D58757D5D58351FFD17D4BFFD179
|
||||||
|
45AFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000001C00000033000000360000
|
||||||
|
0036000000360000003600000036000000360000003600000036000000200000
|
||||||
|
0002FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000033F8F8F8F0FBFBFBFDFCFC
|
||||||
|
FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFF8F8F8FF949494910000
|
||||||
|
002000000002FFFFFF00FFFFFF00FFFFFF0000000036FBFBFBFDF4F4F4FFF5F5
|
||||||
|
F5FFF5F5F5FFF5F5F5FFF1F1F1FFEFEFEFFFE9E9E9FFFCFCFCFFE7E7E7FF9595
|
||||||
|
95910000002000000002FFFFFF000000000100000036FCFCFCFFF7F7F7FFF9F9
|
||||||
|
F9FFF7F7F7FFF7F7F7FFF3F3F3FFF0F0F0FFEAEAEAFFFCFCFCFFF6F6F6FFF4F4
|
||||||
|
F4FF9999999100000020FFFFFF000000000100000036FCFCFCFFF9F9F9FFC0C0
|
||||||
|
C0FFBABABAFFB4B4B4FFAFAFAFFFAAAAAAFFA5A5A5FFFCFCFCFFFCFCFCFFFCFC
|
||||||
|
FCFFFCFCFCFF00000036000000010000000100000036FCFCFCFFFBFBFBFFFCFC
|
||||||
|
FCFFFCFCFCFFFBFBFBFFF8F8F8FFF5F5F5FFF1F1F1FFECECECFFEAEAEAFFE6E6
|
||||||
|
E6FFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFC7C7
|
||||||
|
C7FFC2C2C2FFBEBEBEFFB8B8B8FFB4B4B4FFB1B1B1FFAEAEAEFFACACACFFEDED
|
||||||
|
EDFFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFFCFC
|
||||||
|
FCFFFCFCFCFFFCFCFCFFFCFCFCFFFBFBFBFFF8F8F8FFF6F6F6FFF3F3F3FFF2F2
|
||||||
|
F2FFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFCECE
|
||||||
|
CEFFCACACAFFC6C6C6FFC3C3C3FFC0C0C0FFBDBDBDFFBCBCBCFFBABABAFFF6F6
|
||||||
|
F6FFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFFCFC
|
||||||
|
FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFBFBFBFFF9F9F9FFF9F9F9FFF8F8
|
||||||
|
F8FFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFD6D6
|
||||||
|
D6FFD3D3D3FFCFCFCFFFCDCDCDFFCBCBCBFFC8C8C8FFC8C8C8FFC6C6C6FFF8F8
|
||||||
|
F8FFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFFCFC
|
||||||
|
FCFFFCFCFCFFFBFBFBFFFBFBFBFFFAFAFAFFFAFAFAFFFAFAFAFFFAFAFAFFFAFA
|
||||||
|
FAFFFCFCFCFF00000036000000010000000100000036FCFCFCFFFCFCFCFFDDDD
|
||||||
|
DDFFDBDBDBFFD9D9D9FFD7D7D7FFD5D5D5FFD4D4D4FFD4D4D4FFD4D4D4FFFBFB
|
||||||
|
FBFFFCFCFCFF00000036000000010000000100000036FCFCFCFEFCFCFCFFFCFC
|
||||||
|
FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFC
|
||||||
|
FCFFFCFCFCFD00000036FFFFFF00FFFFFF0000000034F9F9F9F5FCFCFCFDFCFC
|
||||||
|
FCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFC
|
||||||
|
FCFDF9F9F9F300000033FFFFFF00FFFFFF000000001D00000034000000360000
|
||||||
|
0036000000360000003600000036000000360000003600000036000000360000
|
||||||
|
0036000000330000001DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF0000000000000000000000000000000000898785FF898785FF0000
|
||||||
|
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00000000008D8B89FF999795FF84828044B8B6B4FFB8B6B4FF8482
|
||||||
|
8044999795FF8E8C8AFF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF0000000000989694FFDDDBDAFF9F9D9BFFD3D1D0FFD3D1D0FF9F9D
|
||||||
|
9BFFDDDBDAFF92908EFF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00000000006D6B6A9B9E9C9AFFBFBDBCFF999796FF999796FFBFBD
|
||||||
|
BCFF9E9C9AFF6C6B699B00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00858381FFB2B0AFFFCFCDCCFF989693FF3332314A3332314A9896
|
||||||
|
93FFCECCCCFFB1AFAEFF8F8D8BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00848280FFB1AFAEFFCCCAC9FF959392FF00000006000000069593
|
||||||
|
92FFCCCAC9FFB0AEADFF8E8C8AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00000000336563618B999796FFB8B6B5FF949290FF949290FFB8B6
|
||||||
|
B5FF999796FF6563618B00000033FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF0000000000918F8DFFD1CFCEFF989695FFC8C6C5FFC8C6C5FF9896
|
||||||
|
95FFD1CFCEFF8A8888FF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF0000000000868482FF8A8885FF52504F69AAA8A7FFAAA8A7FF5250
|
||||||
|
4F698A8886FF868482FF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF000000000000000033000000330000000E7F7D7CFF7F7D7CFF0000
|
||||||
|
000E000000330000003300000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF000000000000000000000000000000000000000033000000330000
|
||||||
|
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00EAC39DFFE6BF96FFE4BB92FFE4BB92FFD1A06CF5D09E6DF6CC96
|
||||||
|
5FDAC479427EB2673C09FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00E5BE96FFFFFFFEFFFDF3E9FFFDF3EAFFFCF2E8FFFAEFE3FFFAF2
|
||||||
|
E7FFEABB88FFCF8555B3B4693D0CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00E4BB93FFFEF5EDFFFCDEC5FFFBE0C7FFF9DCC2FFF5D3B4FFFEF9
|
||||||
|
F3FFFAE2C4FFECC193FFC37D4893FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00E4BB92FFFEF6F0FFFCE2CDFFFCE3CDFFFADFC8FFF7D9BCFFF5E9
|
||||||
|
DDFFFAF3EBFFFBF8F3FFCA8353FEFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00E4BB92FFFEF7F1FFFCE5D2FFFCE4D1FFFBE2CCFFF9DDC4FFF6D7
|
||||||
|
BBFFF3D1AFFFFAEFE4FFCC8758FE34B4D9D05EC2E1FA60C3E2FA60C3E2FA60C3
|
||||||
|
E2FA5FC3E2FAE4BB91FFFFF7F2FFFEE7D5FFFEE7D5FFFDE5D1FFFAE0CAFFF9DE
|
||||||
|
C4FFF7D9BCFFFDF2E7FFCC8757FE36B3DAF8FDFEFEFFFEFFFFFFFEFEFFFFFDFE
|
||||||
|
FFFFFEFFFFFFE4BA91FFFFF7F0FFFFE7D5FFFDE7D6FFFDE6D4FFFCE4D0FFFBE3
|
||||||
|
CBFFFADCC2FFFEF3E8FFCC8656FE35AFDAF0F7FCFEFF8EE4F8FF91DEF5FF9FE0
|
||||||
|
F5FFACE1F6FFCA8452FFFFF7F1FFFFE9D9FFFFEADBFFFFE9D9FFFFE7D7FFFFE5
|
||||||
|
D2FFFFE2CBFFFFF7F1FFCB8555FE36AADAF2F1FAFDFF94DEF5FF93DCF4FF64BC
|
||||||
|
E9FF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594
|
||||||
|
DAFF3594DAFFFBF6EFFFCC8355FE35ABDAFAE8F6FBFF70BCE7FF55AAE2FF4DA5
|
||||||
|
E0FF91C9EBFFFAF3EFFFFDFEFDFFFFFDFCFFFFFDFCFFFEFDFCFFFEFCFBFFFEFE
|
||||||
|
FDFF3594DAFFEFF2E8FFCE8156FF37A6DAFAFEFFFFFFF8FDFFFFF6FDFFFFF5FC
|
||||||
|
FFFFF3FCFEFF9AE4F4FF9AE6F7FF9BE6F6FF9DE5F5FF9EE5F5FF9FE5F4FFDAF3
|
||||||
|
F8FF3594DAFFFDF4EEFFCA8054F936A1DAF9F6FCFEFF94E5F8FF93E5F8FF93E5
|
||||||
|
F8FF91E5F8FF93DBE9FF93D7E3FF93D2DCFF90CED7FF8CC8CFFF86C1C6FFC9D8
|
||||||
|
D6FF3594DAFFC57444E8CA7F53F1369ADAF8F2FAFDFF94E6F8FF92E5F8FF90E5
|
||||||
|
F8FF8BE3F8FF86E2F7FF7FE1F7FF77DEF6FF6CDCF6FF5ED9F4FF4FD5F3FFCCF2
|
||||||
|
FBFF3594DAFFFFFFFF00FFFFFF003594DAF7EFFAFEFF93E5F8FF8FE4F8FF89E3
|
||||||
|
F8FF82E1F7FF7ADFF7FF71DEF6FF67DBF5FF5BD8F4FF4DD4F3FF40D1F2FFCAF2
|
||||||
|
FBFF3594DAFFFFFFFF00FFFFFF00338ED9FBDCF0FAFF98E1F6FF95E0F6FF92DF
|
||||||
|
F6FF8EDEF5FF89DCF5FF85DAF4FF80D9F4FF7AD7F3FF74D5F3FF70D3F2FFC2EA
|
||||||
|
F8FF3594DAFFFFFFFF00FFFFFF002C86D8002D88D8F72D87D8F72D88D8F72D88
|
||||||
|
D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D87D8F72D88
|
||||||
|
D8F72C86D800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF004398D2B03D94D0FF3A92CFFF3A92CFFF3D94
|
||||||
|
D0FF4197D1D24398D2004498D2004498D2004498D2004498D2004499D2004499
|
||||||
|
D300459AD300469AD300469AD3003D94D0FFDCFCFFFFD8F7FFFFD8F7FFFFDBFA
|
||||||
|
FFFF358ECDFF3991CEFF3A92CFFF3A92CFFF3A92CFFF3A92CFFF3B92CFFF3D94
|
||||||
|
D0FF4398D2D7469AD300469AD3003B92CFFFD5F7FFFF60D1F9FF61D0F8FFB4EB
|
||||||
|
FDFFD9F6FFFFDAF8FFFFDAF8FFFFDBF9FFFFDCFAFFFFDCFAFFFFDCFBFFFFE0FF
|
||||||
|
FFFF3E95D0FF4599D333469AD3003B92CFFFCAF6FFFF69D5F9FF6CD5F9FF6BD5
|
||||||
|
F9FF69D5F9FF69D5FAFF6AD7FBFF68D4FAFF5EC7F1FF5EC7F2FF5DC8F2FFB4E3
|
||||||
|
F8FF3D94D0FF3F8FC669469AD3003C92CFFFC0F3FFFF71DAFBFF74DBFBFF75DB
|
||||||
|
FCFF75DBFCFF76DCFCFF73DAFAFF449CD4FF378CCBFF368CCBFF358CCCFF348D
|
||||||
|
CCFF3890CEFF3D94D0FF4398D2EB3D92CFFFB9F4FFFF73DBFBFF6BCCF2FF6CCD
|
||||||
|
F3FF6CCEF3FF6DCEF3FF479CD4FF56BAE9FFDAF8FFFFD7F6FFFFD6F6FFFFD5F6
|
||||||
|
FFFFD5F7FFFFDBFCFFFF3E94D0FF3E94D0FFABF0FFFF449DD6FF368CCBFF368C
|
||||||
|
CBFF368CCBFF378BCBFF5CBEEAFF6FD9FBFF6AD6FAFF68D5F9FF67D4F9FF66D4
|
||||||
|
F9FF82DEFCFFAAE0F6FF3885BCB94095D0FF8AD7F5FF44A1D8FFDDFDFFFFDAFA
|
||||||
|
FFFFDBFAFFFFDEFAFFFF74DCFCFF76DBFAFF75DAFAFF74DAFAFF74DAFAFF72D9
|
||||||
|
FAFFA1E8FFFF7CBFE6FF306F9C5E4296D1FF6BBEE8FF6DBDE6FFBBF2FFFF75DE
|
||||||
|
FDFF77DEFCFF78DEFCFF7BDFFCFF7DDFFCFF7DDFFCFF7DDFFCFF7CDFFCFF80E0
|
||||||
|
FDFFADF0FFFF4D9DD3FF0000000E4398D2FF4FA6D9FF8EDAF5FFA2EEFFFF82E5
|
||||||
|
FEFF84E5FEFF84E5FEFF85E6FEFF85E6FEFF85E6FEFF85E6FEFF84E6FEFF96EB
|
||||||
|
FFFF8CD8F5FF3985BCB84499D2004499D2FF3F94D0FFABFBFFFF9BF3FFFF92F1
|
||||||
|
FFFF93F1FFFF93F1FFFF93F1FFFF93F1FFFF93F1FFFF93F1FFFF93F1FFFFA6F8
|
||||||
|
FFFF65B8E3FF31709D5F469AD3004598D1F24398D2FF4094D0FF3E92CFFF3E92
|
||||||
|
CEFF3F92CEFF3F92CEFF3F92CEFF3F92CEFF3F92CEFF3F92CEFF3F92CEFF3F93
|
||||||
|
CFFF4194CEF00000000E469AD300000000300000003300000033000000330000
|
||||||
|
0033000000330000003300000033000000330000003300000033000000330000
|
||||||
|
00330000002F0000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00C5C5C504A9A9A9199E9E9E29BFBFBFF1B1B1B1FFB1B1B1FFBEBE
|
||||||
|
BEF19999992AAAAAAA19C5C5C504FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00B7B7B776D5D5D5FFCDCDCDFFC3C3C3FFE0E0E0FFDEDEDEFFC3C3
|
||||||
|
C3FFCECECEFFD6D6D6FFB4B4B476FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00ACACACE4E5E5E5FFFFFFFFFFC8C8C8FFB3B3B3FFB3B3B3FFC8C8
|
||||||
|
C8FFFFFFFFFFE5E5E5FFA0A0A0EDFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00A8A8A8FFDBDBDBFFD0D0D0FFC6C6C6FFFFFFFFFFFFFFFFFFC8C8
|
||||||
|
C8FFCACACAFFBFBFBFFFACACACFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00AAAAAAFFF6F6F6FFE6E6E6FFCCCCCCFFD6D6D6FFD4D4D4FFBCBC
|
||||||
|
BCFFBFBFBFFFC3C3C3FFAFAFAFFF34B4D9D05EC2E1FA60C3E2FA60C3E2FA60C3
|
||||||
|
E2FA5FC3E2FAABABABFFF6F6F6FFE8E8E8FFE1E1E1FFD7D7D7FFC0C0C0FFBFBF
|
||||||
|
BFFFC2C2C2FFC3C3C3FFACACACFF36B3DAF8FDFEFEFFFEFFFFFFFEFEFFFFFDFE
|
||||||
|
FFFFFEFFFFFFB1B2B2FFCCCCCCFFE9E9E9FFE0E0E0FFD5D5D5FFBDBDBDFFC3C3
|
||||||
|
C3FFC2C2C2FFB2B2B2FF9D9D9DED35AFDAF0F7FCFEFF8EE4F8FF91DEF5FF9FE0
|
||||||
|
F5FFACE1F6FFE7F2F4FFBEC2C2FFAEAFAFFFCDCDCDFFE1E1E1FFC6C6C6FFB9B9
|
||||||
|
B9FF9FA2A3FE959595A59393931E36AADAF2F1FAFDFF94DEF5FF93DCF4FF81D5
|
||||||
|
F2FF60C0E9FF4FAEE1FF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594
|
||||||
|
DAFF3594DAFFFFFFFF00FFFFFF0035ABDAFAE8F6FBFF7EC5EAFF5BAEE3FF51A8
|
||||||
|
E1FF60AFE4FFEBFAFDFFECFAFEFFE5F5FCFFE5F6FCFFE3F4FBFFE4F5FCFFFEFF
|
||||||
|
FFFF3594DAFFFFFFFF00FFFFFF0037A6DAFAFEFFFFFFF8FDFFFFF6FDFFFFF5FC
|
||||||
|
FFFFE8FAFEFFAFECFAFF8EE4F8FF87E3F8FF7DE0F7FF72DDF6FF68DBF5FFE9F9
|
||||||
|
FDFF3594DAFFFFFFFF00FFFFFF0036A1DAF9F6FCFEFFC8F2FCFFB9EFFBFFACEC
|
||||||
|
FAFF8CE4F8FF8AE3F8FF82E1F7FF79DFF7FF6DDDF6FF61DAF5FF57D7F4FFE7F8
|
||||||
|
FDFF3594DAFFFFFFFF00FFFFFF00369ADAF8F2FAFDFFB3EDFAFFA4E9F9FF95E6
|
||||||
|
F8FF85E2F7FF81E1F7FF7AE0F7FF6FDDF6FF62DAF5FF54D6F3FF47D3F2FFE8F9
|
||||||
|
FDFF3594DAFFFFFFFF00FFFFFF003594DAF7EFFAFEFFA1E9F9FF91E5F8FF81E1
|
||||||
|
F7FF72DEF6FF63DAF5FF54D7F4FF47D3F3FF39D0F2FF2ECDF1FF26CBF0FFCAF2
|
||||||
|
FBFF3594DAF7FFFFFF00FFFFFF00338ED9E6DCF0FAF0A7DDF4FD9EDBF4FF96DA
|
||||||
|
F3FF8ED8F3FF86D7F3FF7FD4F2FF79D3F2FF72D2F1FF6CD0F1FF69CFF1FFC2EA
|
||||||
|
F8FE338ED9F0FFFFFF00FFFFFF002C86D8002D88D8A62D87D8EA2D88D8F72D88
|
||||||
|
D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D87D8F72D88
|
||||||
|
D8F12C86D893FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000010000
|
||||||
|
00080000002E000000250000000700000003000000200000001C000000080000
|
||||||
|
00060000000300000001FFFFFF00FFFFFF00FFFFFF0000000001000000340000
|
||||||
|
00E4000000FF00000095000000190000000B0000008C000000FD000000C90000
|
||||||
|
0048000000110000000500000001FFFFFF00FFFFFF0000000003000000B50000
|
||||||
|
00ED000000690000004600000026000000100000001700000051000000EE0000
|
||||||
|
00C40000002B0000001000000003FFFFFF00FFFFFF0000000005000000DB0000
|
||||||
|
00C0000000520000003B0000001C0000000A0000000A0000001C000000BB0000
|
||||||
|
00E5000000420000001C00000005FFFFFF000000000100000007000000E20000
|
||||||
|
00BE0000004D000000290000000D00000003000000030000000D000000AC0000
|
||||||
|
00EB0000004B0000002400000007FFFFFF00000000030000001C000000F70000
|
||||||
|
00AF000000460000001F00000006FFFFFF00FFFFFF0000000006000000830000
|
||||||
|
00FE000000650000002C0000000DFFFFFF0000000091000000F3000000D70000
|
||||||
|
006B0000003F0000001800000004FFFFFF00FFFFFF00000000040000002D0000
|
||||||
|
00CC000000FC000000A70000001DFFFFFF000000005E000000CD000000F30000
|
||||||
|
007D000000390000001300000003FFFFFF00FFFFFF0000000003000000570000
|
||||||
|
00FC000000C9000000880000002FFFFFFF000000000F00000033000000F70000
|
||||||
|
00B20000003A0000001400000003FFFFFF00FFFFFF0000000003000000A00000
|
||||||
|
00F00000005A0000004D0000002AFFFFFF000000000700000018000000E40000
|
||||||
|
00C1000000410000001900000004FFFFFF00FFFFFF0000000005000000A90000
|
||||||
|
00E8000000530000003700000016FFFFFF00000000020000000B000000E00000
|
||||||
|
00C1000000460000001E00000006FFFFFF00FFFFFF0000000006000000AC0000
|
||||||
|
00E70000004E000000290000000BFFFFFF000000000100000008000000C90000
|
||||||
|
00E200000050000000250000000A000000020000000200000011000000DC0000
|
||||||
|
00D50000004C0000002400000008FFFFFF000000000100000006000000670000
|
||||||
|
00F8000000F200000089000000170000000800000072000000EE000000FD0000
|
||||||
|
008D000000460000001E00000006FFFFFF00FFFFFF0000000003000000130000
|
||||||
|
0039000000840000006C000000240000000F0000004A0000007E000000620000
|
||||||
|
004A000000340000001400000003FFFFFF00FFFFFF0000000001000000080000
|
||||||
|
001500000025000000290000001C0000000C0000000D0000001E0000002D0000
|
||||||
|
002A000000180000000800000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000010000001E0000003F0000
|
||||||
|
004300000044000000110000000500000001000000040000003C000000410000
|
||||||
|
00440000002800000009FFFFFF00FFFFFF000000000200000085000000FF0000
|
||||||
|
00FF000000FF0000003A000000110000000500000015000000FF000000FF0000
|
||||||
|
00FF000000950000001DFFFFFF00FFFFFF000000000400000089000000FF0000
|
||||||
|
00670000005F000000390000001900000007000000070000002E0000004F0000
|
||||||
|
00FF000000A700000037FFFFFF00FFFFFF00000000050000008C000000FF0000
|
||||||
|
005F00000045000000270000000F00000004000000040000000F0000002E0000
|
||||||
|
00FF000000AC00000043FFFFFF00FFFFFF00000000050000008D000000FF0000
|
||||||
|
00590000003200000012000000050000000100000001000000050000001A0000
|
||||||
|
00FF000000A800000044FFFFFF00FFFFFF00000000050000008D000000FF0000
|
||||||
|
00560000002C0000000B00000001FFFFFF00FFFFFF0000000001000000140000
|
||||||
|
00FF000000A700000044FFFFFF00FFFFFF00000000050000008D000000FF0000
|
||||||
|
00560000002B0000000A00000001FFFFFF00FFFFFF0000000001000000130000
|
||||||
|
00FF000000A700000044FFFFFF00FFFFFF00000000050000008D000000FF0000
|
||||||
|
00560000002B0000000A00000001FFFFFF00FFFFFF0000000001000000130000
|
||||||
|
00FF000000A700000044FFFFFF00FFFFFF00000000050000008D000000FF0000
|
||||||
|
00560000002B0000000A00000001FFFFFF00FFFFFF0000000001000000130000
|
||||||
|
00FF000000A700000044FFFFFF00FFFFFF00000000050000008D000000FF0000
|
||||||
|
00560000002B0000000A00000001FFFFFF00FFFFFF0000000001000000130000
|
||||||
|
00FF000000A700000044FFFFFF00FFFFFF00000000050000008D000000FF0000
|
||||||
|
00560000002B0000000A00000001FFFFFF00FFFFFF0000000001000000130000
|
||||||
|
00FF000000A700000044FFFFFF00FFFFFF00000000050000008D000000FF0000
|
||||||
|
0058000000300000000F00000003000000010000000100000003000000170000
|
||||||
|
00FF000000A800000044FFFFFF00FFFFFF00000000050000008C000000FF0000
|
||||||
|
00E6000000E2000000320000000D0000000300000011000000DA000000DE0000
|
||||||
|
00FF000000AB00000044FFFFFF00FFFFFF00000000040000004C000000970000
|
||||||
|
00A6000000A20000003F00000018000000060000000E00000084000000940000
|
||||||
|
00A20000007D0000003BFFFFFF00FFFFFF00000000020000000D000000240000
|
||||||
|
00390000003B0000002C000000140000000500000005000000140000002C0000
|
||||||
|
003B0000003900000024FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
|
||||||
|
000100000014000000170000000B00000007000000150000001700000009FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
|
||||||
|
0013000000FF000000FF0000004C00000043000000FF000000FF0000002FFFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
|
||||||
|
0016000000FF000000FF0000006B00000057000000FF000000FF00000051FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
|
||||||
|
000B0000005A00000077000000560000003D000000670000007A0000004DFFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
|
FF00FFFFFF00FFFFFF00FFFFFF00
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ unit ce_dubprojeditor;
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Graphics,
|
||||||
Menus, StdCtrls, Buttons, ComCtrls, jsonparser, fpjson,
|
Dialogs, ExtCtrls, Menus, StdCtrls, Buttons, ComCtrls, jsonparser, fpjson,
|
||||||
ce_widget, ce_common, ce_interfaces, ce_observer, ce_dubproject;
|
ce_widget, ce_common, ce_interfaces, ce_observer, ce_dubproject;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
@ -19,14 +19,18 @@ type
|
||||||
btnDelProp: TSpeedButton;
|
btnDelProp: TSpeedButton;
|
||||||
btnDelProp1: TSpeedButton;
|
btnDelProp1: TSpeedButton;
|
||||||
edValue: TMemo;
|
edValue: TMemo;
|
||||||
|
fltEdit: TTreeFilterEdit;
|
||||||
|
imgList: TImageList;
|
||||||
PageControl1: TPageControl;
|
PageControl1: TPageControl;
|
||||||
pnlToolBar: TPanel;
|
pnlToolBar: TPanel;
|
||||||
pnlToolBar1: TPanel;
|
pnlToolBar1: TPanel;
|
||||||
propTree: TTreeView;
|
propTree: TTreeView;
|
||||||
|
fltInspect: TTreeFilterEdit;
|
||||||
treeInspect: TTreeView;
|
treeInspect: TTreeView;
|
||||||
TabSheet1: TTabSheet;
|
TabSheet1: TTabSheet;
|
||||||
TabSheet2: TTabSheet;
|
TabSheet2: TTabSheet;
|
||||||
procedure propTreeSelectionChanged(Sender: TObject);
|
procedure propTreeSelectionChanged(Sender: TObject);
|
||||||
|
procedure treeInspectDblClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
fSelectedNode: TTreeNode;
|
fSelectedNode: TTreeNode;
|
||||||
fProj: TCEDubProject;
|
fProj: TCEDubProject;
|
||||||
|
|
@ -52,7 +56,7 @@ type
|
||||||
implementation
|
implementation
|
||||||
{$R *.lfm}
|
{$R *.lfm}
|
||||||
|
|
||||||
{$REGION Standard Comp/Obj ----------------------------------------------------}
|
{$REGION Standard Comp/Obj -----------------------------------------------------}
|
||||||
constructor TCEDubProjectEditorWidget.create(aOwner: TComponent);
|
constructor TCEDubProjectEditorWidget.create(aOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
|
|
@ -205,19 +209,35 @@ procedure TCEDubProjectEditorWidget.updateEditor;
|
||||||
begin
|
begin
|
||||||
if data.JSONType = jtObject then for i := 0 to data.Count-1 do
|
if data.JSONType = jtObject then for i := 0 to data.Count-1 do
|
||||||
begin
|
begin
|
||||||
|
node.ImageIndex:=7;
|
||||||
|
node.SelectedIndex:=7;
|
||||||
|
node.StateIndex:=7;
|
||||||
c := node.TreeNodes.AddChildObject(node, TJSONObject(data).Names[i],
|
c := node.TreeNodes.AddChildObject(node, TJSONObject(data).Names[i],
|
||||||
TJSONObject(data).Items[i]);
|
TJSONObject(data).Items[i]);
|
||||||
case TJSONObject(data).Items[i].JSONType of
|
case TJSONObject(data).Items[i].JSONType of
|
||||||
jtObject, jtArray:
|
jtObject, jtArray:
|
||||||
addPropsFrom(c, TJSONObject(data).Items[i]);
|
addPropsFrom(c, TJSONObject(data).Items[i]);
|
||||||
|
else begin
|
||||||
|
c.ImageIndex:=9;
|
||||||
|
c.SelectedIndex:=9;
|
||||||
|
c.StateIndex:=9;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end else if data.JSONType = jtArray then for i := 0 to data.Count-1 do
|
end else if data.JSONType = jtArray then for i := 0 to data.Count-1 do
|
||||||
begin
|
begin
|
||||||
|
node.ImageIndex:=8;
|
||||||
|
node.SelectedIndex:=8;
|
||||||
|
node.StateIndex:=8;
|
||||||
c := node.TreeNodes.AddChildObject(node, format('item %d',[i]),
|
c := node.TreeNodes.AddChildObject(node, format('item %d',[i]),
|
||||||
TJSONArray(data).Items[i]);
|
TJSONArray(data).Items[i]);
|
||||||
case TJSONArray(data).Items[i].JSONType of
|
case TJSONArray(data).Items[i].JSONType of
|
||||||
jtObject, jtArray:
|
jtObject, jtArray:
|
||||||
addPropsFrom(c, TJSONArray(data).Items[i]);
|
addPropsFrom(c, TJSONArray(data).Items[i]);
|
||||||
|
else begin
|
||||||
|
c.ImageIndex:=9;
|
||||||
|
c.SelectedIndex:=9;
|
||||||
|
c.StateIndex:=9;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
@ -237,6 +257,7 @@ end;
|
||||||
procedure TCEDubProjectEditorWidget.updateInspector;
|
procedure TCEDubProjectEditorWidget.updateInspector;
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
|
node : TTreeNode;
|
||||||
begin
|
begin
|
||||||
if (fNodeConfig = nil) or (fNodeSources = nil) then
|
if (fNodeConfig = nil) or (fNodeSources = nil) then
|
||||||
exit;
|
exit;
|
||||||
|
|
@ -247,10 +268,44 @@ begin
|
||||||
if (fProj = nil) then
|
if (fProj = nil) then
|
||||||
exit;
|
exit;
|
||||||
//
|
//
|
||||||
for i:= 0 to fProj.getConfigurationCount -1 do
|
treeInspect.BeginUpdate;
|
||||||
treeInspect.Items.AddChild(fNodeConfig, fProj.getConfigurationName(i));
|
for i:= 0 to fProj.configurationCount-1 do
|
||||||
for i := 0 to fProj.sources.count-1 do
|
begin
|
||||||
treeInspect.Items.AddChild(fNodeSources, fProj.sources.strings[i]);
|
node := treeInspect.Items.AddChild(fNodeConfig, fProj.configurationName(i));
|
||||||
|
node.ImageIndex := 3;
|
||||||
|
node.SelectedIndex := 3;
|
||||||
|
node.StateIndex := 3;
|
||||||
|
end;
|
||||||
|
for i := 0 to fProj.sourcesCount-1 do
|
||||||
|
begin
|
||||||
|
node := treeInspect.Items.AddChild(fNodeSources, fProj.sourceRelative(i));
|
||||||
|
node.ImageIndex := 2;
|
||||||
|
node.SelectedIndex := 2;
|
||||||
|
node.StateIndex := 2;
|
||||||
|
end;
|
||||||
|
treeInspect.EndUpdate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEDubProjectEditorWidget.treeInspectDblClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
node: TTreeNode;
|
||||||
|
fname: string;
|
||||||
|
begin
|
||||||
|
if treeInspect.Selected = nil then exit;
|
||||||
|
if fProj = nil then exit;
|
||||||
|
node := treeInspect.Selected;
|
||||||
|
// open file
|
||||||
|
if node.Parent = fNodeSources then
|
||||||
|
begin
|
||||||
|
fname := fProj.sourceAbsolute(node.Index);
|
||||||
|
if isEditable(extractFileExt(fname)) then
|
||||||
|
getMultiDocHandler.openDocument(fname);
|
||||||
|
end
|
||||||
|
// select active config
|
||||||
|
else if node.Parent = fNodeConfig then
|
||||||
|
begin
|
||||||
|
fProj.setActiveConfiguration(node.Index);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,63 +20,65 @@ type
|
||||||
* Common project interface.
|
* Common project interface.
|
||||||
*
|
*
|
||||||
* Each project format has its own dedicated editors.
|
* Each project format has its own dedicated editors.
|
||||||
* The few common properties allow some generic operations whatever is the format.
|
* A few common properties allow some generic operations whatever is the format.
|
||||||
*)
|
*)
|
||||||
ICECommonProject = interface
|
ICECommonProject = interface
|
||||||
['ICECommonProject']
|
['ICECommonProject']
|
||||||
// indicates the project format
|
|
||||||
function getFormat: TCEProjectFormat;
|
|
||||||
// returns an untyped object that can be casted using getFormat()
|
|
||||||
function getProject: TObject;
|
|
||||||
|
|
||||||
// sub routines for the actions --------------------------------------------
|
// general properties ------------------------------------------------------
|
||||||
|
|
||||||
// tries to compile and returns true if it does
|
// indicates the project format
|
||||||
function compile: boolean;
|
function getFormat: TCEProjectFormat;
|
||||||
// tries to un the project and returns true if it did
|
// returns an untyped object that can be casted using getFormat()
|
||||||
function run(const runArgs: string = ''): boolean;
|
function getProject: TObject;
|
||||||
|
// returns the project filename
|
||||||
// project file - allows main form to create/load/save ---------------------
|
function filename: string;
|
||||||
|
// loads project from filename
|
||||||
// returns the project filename
|
procedure loadFromFile(const aFilename: string);
|
||||||
function getFilename: string;
|
// saves project to filename
|
||||||
// loads project from filename
|
procedure saveToFile(const aFilename: string);
|
||||||
procedure loadFromFile(const aFilename: string);
|
// indicates of the project is modified (should be saved or not)
|
||||||
// saves project to filename
|
function modified: boolean;
|
||||||
procedure saveToFile(const aFilename: string);
|
// returns the base path used to solve relative locations
|
||||||
// indicates of the project is modified (should be saved or not)
|
function basePath: string;
|
||||||
function getIfModified: boolean;
|
// returns the name of the file produced when a project is compiled
|
||||||
|
function outputFilename: string;
|
||||||
// various properties used by several widgets (todo ana, dcd, ...)----------
|
// returns the binary kind produced according to the current configuration
|
||||||
|
function binaryKind: TProjectBinaryKind;
|
||||||
//// common project properties
|
// returns what's gonna be executed in background for this config
|
||||||
//function sourceCount: integer;
|
function getCommandLine: string;
|
||||||
//function source(index: integer): string;
|
|
||||||
//function stringImportCount: integer;
|
|
||||||
//function stringImport(index: integer): string;
|
|
||||||
//function moduleImportCount: integer;
|
|
||||||
//function moduleImport(index: integer): string;
|
|
||||||
|
|
||||||
// returns true if aFilename is a project source
|
|
||||||
function getIfIsSource(const aFilename: string): boolean;
|
|
||||||
// returns the name of the file produced when a project is compiled
|
|
||||||
function getOutputFilename: string;
|
|
||||||
// returns the binary kind produced according to the current configuration
|
|
||||||
function getBinaryKind: TProjectBinaryKind;
|
|
||||||
// returns what's gonna be executed in background for this config
|
|
||||||
function getCommandLine: string;
|
|
||||||
|
|
||||||
// configs -----------------------------------------------------------------
|
// configs -----------------------------------------------------------------
|
||||||
|
|
||||||
// returns the count of configuration
|
// returns the count of configuration
|
||||||
function getConfigurationCount: integer;
|
function configurationCount: integer;
|
||||||
// sets the active configuration
|
// sets the active configuration
|
||||||
procedure setActiveConfiguration(index: integer);
|
procedure setActiveConfiguration(index: integer);
|
||||||
// returns the name of the index-th configuration
|
// returns the name of the index-th configuration
|
||||||
function getConfigurationName(index: integer): string;
|
function configurationName(index: integer): string;
|
||||||
|
|
||||||
|
// project sources ---------------------------------------------------------
|
||||||
|
|
||||||
|
// returns the count of source file in th e project
|
||||||
|
function sourcesCount: integer;
|
||||||
|
// returns the source absolute filename.
|
||||||
|
function sourceAbsolute(index: integer): string;
|
||||||
|
// returns the source relative filename.
|
||||||
|
function sourceRelative(index: integer): string;
|
||||||
|
// returns true if aFilename is a project source.
|
||||||
|
function isSource(const aFilename: string): boolean;
|
||||||
|
|
||||||
|
// sub routines for the actions --------------------------------------------
|
||||||
|
|
||||||
|
// tries to compile and returns true if it does
|
||||||
|
function compile: boolean;
|
||||||
|
// tries to un the project output and returns true if it did
|
||||||
|
function run(const runArgs: string = ''): boolean;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(**
|
(**
|
||||||
* An implementer declares some actions on demand.
|
* An implementer declares some actions on demand.
|
||||||
*)
|
*)
|
||||||
|
|
|
||||||
|
|
@ -187,7 +187,7 @@ begin
|
||||||
str := TStringList.Create;
|
str := TStringList.Create;
|
||||||
try
|
try
|
||||||
for i := 0 to fProj.Sources.Count-1 do
|
for i := 0 to fProj.Sources.Count-1 do
|
||||||
str.Add(fProj.getAbsoluteSourceName(i));
|
str.Add(fProj.sourceAbsolute(i));
|
||||||
// single source libs usually have the structure "src/<fname>"
|
// single source libs usually have the structure "src/<fname>"
|
||||||
if str.Count = 1 then
|
if str.Count = 1 then
|
||||||
root := ExtractFileDir(str.Strings[0])
|
root := ExtractFileDir(str.Strings[0])
|
||||||
|
|
@ -205,10 +205,10 @@ begin
|
||||||
with List.Items.Add do
|
with List.Items.Add do
|
||||||
begin
|
begin
|
||||||
Caption := ExtractFileNameOnly(fProj.Filename);
|
Caption := ExtractFileNameOnly(fProj.Filename);
|
||||||
if ExtractFileExt(fProj.getOutputFilename) <> libExt then
|
if ExtractFileExt(fProj.outputFilename) <> libExt then
|
||||||
SubItems.add(fProj.getOutputFilename + libExt)
|
SubItems.add(fProj.outputFilename + libExt)
|
||||||
else
|
else
|
||||||
SubItems.add(fProj.getOutputFilename);
|
SubItems.add(fProj.outputFilename);
|
||||||
SubItems.add(root);
|
SubItems.add(root);
|
||||||
if not FileExists(SubItems[0]) then
|
if not FileExists(SubItems[0]) then
|
||||||
dlgOkInfo('the library file does not exist, maybe the project not been already compiled ?');
|
dlgOkInfo('the library file does not exist, maybe the project not been already compiled ?');
|
||||||
|
|
|
||||||
|
|
@ -480,7 +480,7 @@ begin
|
||||||
begin
|
begin
|
||||||
itf := TCEMainForm(aSource).fProjectInterface;
|
itf := TCEMainForm(aSource).fProjectInterface;
|
||||||
if itf = nil then exit;
|
if itf = nil then exit;
|
||||||
fProject := itf.getFilename;
|
fProject := itf.filename;
|
||||||
end else
|
end else
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
|
@ -492,7 +492,7 @@ begin
|
||||||
if aDestination is TCEMainForm then
|
if aDestination is TCEMainForm then
|
||||||
begin
|
begin
|
||||||
itf := TCEMainForm(aDestination).fProjectInterface;
|
itf := TCEMainForm(aDestination).fProjectInterface;
|
||||||
if (itf <> nil) and (itf.getFilename = fProject) then
|
if (itf <> nil) and (itf.filename = fProject) then
|
||||||
exit;
|
exit;
|
||||||
TCEMainForm(aDestination).openProj(fProject);
|
TCEMainForm(aDestination).openProj(fProject);
|
||||||
end else
|
end else
|
||||||
|
|
@ -1052,7 +1052,7 @@ var
|
||||||
begin
|
begin
|
||||||
canClose := false;
|
canClose := false;
|
||||||
SaveLastDocsAndProj;
|
SaveLastDocsAndProj;
|
||||||
if fProjectInterface <> nil then if fProjectInterface.getIfModified then
|
if fProjectInterface <> nil then if fProjectInterface.modified then
|
||||||
if dlgOkCancel(
|
if dlgOkCancel(
|
||||||
'The project modifications are not saved, quit anyway ?') <> mrOK then
|
'The project modifications are not saved, quit anyway ?') <> mrOK then
|
||||||
exit;
|
exit;
|
||||||
|
|
@ -1368,10 +1368,10 @@ end;
|
||||||
procedure TCEMainForm.actProjOpenContFoldExecute(Sender: TObject);
|
procedure TCEMainForm.actProjOpenContFoldExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fProjectInterface = nil then exit;
|
if fProjectInterface = nil then exit;
|
||||||
if not fileExists(fProjectInterface.getFilename) then exit;
|
if not fileExists(fProjectInterface.filename) then exit;
|
||||||
//
|
//
|
||||||
DockMaster.GetAnchorSite(fExplWidg).Show;
|
DockMaster.GetAnchorSite(fExplWidg).Show;
|
||||||
fExplWidg.expandPath(extractFilePath(fProjectInterface.getFilename));
|
fExplWidg.expandPath(extractFilePath(fProjectInterface.filename));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMainForm.actFileNewExecute(Sender: TObject);
|
procedure TCEMainForm.actFileNewExecute(Sender: TObject);
|
||||||
|
|
@ -1803,12 +1803,12 @@ label
|
||||||
_rbld,
|
_rbld,
|
||||||
_run;
|
_run;
|
||||||
begin
|
begin
|
||||||
if fProjectInterface.getBinaryKind <> executable then
|
if fProjectInterface.binaryKind <> executable then
|
||||||
begin
|
begin
|
||||||
dlgOkInfo('Non executable projects cant be run');
|
dlgOkInfo('Non executable projects cant be run');
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
if not fileExists(fProjectInterface.getOutputFilename) then
|
if not fileExists(fProjectInterface.outputFilename) then
|
||||||
begin
|
begin
|
||||||
if dlgOkCancel('The project output is missing, build ?') <> mrOK then
|
if dlgOkCancel('The project output is missing, build ?') <> mrOK then
|
||||||
exit;
|
exit;
|
||||||
|
|
@ -1818,10 +1818,10 @@ begin
|
||||||
// TODO-cICECommonInterface, add function to check if rebuild needed.
|
// TODO-cICECommonInterface, add function to check if rebuild needed.
|
||||||
if fProjectInterface.getFormat = pfNative then
|
if fProjectInterface.getFormat = pfNative then
|
||||||
begin
|
begin
|
||||||
dt := fileAge(fNativeProject.getOutputFilename);
|
dt := fileAge(fNativeProject.outputFilename);
|
||||||
for i := 0 to fNativeProject.Sources.Count-1 do
|
for i := 0 to fNativeProject.Sources.Count-1 do
|
||||||
begin
|
begin
|
||||||
if fileAge(fNativeProject.getAbsoluteSourceName(i)) > dt then
|
if fileAge(fNativeProject.sourceAbsolute(i)) > dt then
|
||||||
if dlgOkCancel('The project sources have changed since last build, rebuild ?') = mrOK then
|
if dlgOkCancel('The project sources have changed since last build, rebuild ?') = mrOK then
|
||||||
goto _rbld
|
goto _rbld
|
||||||
else
|
else
|
||||||
|
|
@ -1835,7 +1835,7 @@ begin
|
||||||
_rbld:
|
_rbld:
|
||||||
fProjectInterface.compile;
|
fProjectInterface.compile;
|
||||||
_run:
|
_run:
|
||||||
if fileExists(fProjectInterface.getOutputFilename) then
|
if fileExists(fProjectInterface.outputFilename) then
|
||||||
fProjectInterface.run;
|
fProjectInterface.run;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
@ -1989,8 +1989,8 @@ end;
|
||||||
{$REGION project ---------------------------------------------------------------}
|
{$REGION project ---------------------------------------------------------------}
|
||||||
procedure TCEMainForm.showProjTitle;
|
procedure TCEMainForm.showProjTitle;
|
||||||
begin
|
begin
|
||||||
if (fProjectInterface <> nil) and fileExists(fProjectInterface.getFilename) then
|
if (fProjectInterface <> nil) and fileExists(fProjectInterface.filename) then
|
||||||
caption := format('Coedit - %s', [shortenPath(fProjectInterface.getFilename, 30)])
|
caption := format('Coedit - %s', [shortenPath(fProjectInterface.filename, 30)])
|
||||||
else
|
else
|
||||||
caption := 'Coedit';
|
caption := 'Coedit';
|
||||||
end;
|
end;
|
||||||
|
|
@ -1998,10 +1998,10 @@ end;
|
||||||
procedure TCEMainForm.saveProjSource(const aEditor: TCESynMemo);
|
procedure TCEMainForm.saveProjSource(const aEditor: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
if fProjectInterface = nil then exit;
|
if fProjectInterface = nil then exit;
|
||||||
if fProjectInterface.getFilename <> aEditor.fileName then exit;
|
if fProjectInterface.filename <> aEditor.fileName then exit;
|
||||||
//
|
//
|
||||||
aEditor.saveToFile(fProjectInterface.getFilename);
|
aEditor.saveToFile(fProjectInterface.filename);
|
||||||
openProj(fProjectInterface.getFilename);
|
openProj(fProjectInterface.filename);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMainForm.closeProj;
|
procedure TCEMainForm.closeProj;
|
||||||
|
|
@ -2033,7 +2033,7 @@ end;
|
||||||
|
|
||||||
procedure TCEMainForm.saveProj;
|
procedure TCEMainForm.saveProj;
|
||||||
begin
|
begin
|
||||||
fProjectInterface.saveToFile(fProjectInterface.getFilename);
|
fProjectInterface.saveToFile(fProjectInterface.filename);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMainForm.saveProjAs(const aFilename: string);
|
procedure TCEMainForm.saveProjAs(const aFilename: string);
|
||||||
|
|
@ -2056,17 +2056,15 @@ end;
|
||||||
|
|
||||||
procedure TCEMainForm.mruProjItemClick(Sender: TObject);
|
procedure TCEMainForm.mruProjItemClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fProjectInterface <> nil then if fProjectInterface.getIfModified then if dlgOkCancel(
|
if (fProjectInterface <> nil) and fProjectInterface.modified and (dlgOkCancel(
|
||||||
'The project modifications are not saved, continue ?')
|
'The project modifications are not saved, continue ?') = mrCancel) then exit;
|
||||||
= mrCancel then exit;
|
|
||||||
openProj(TMenuItem(Sender).Hint);
|
openProj(TMenuItem(Sender).Hint);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMainForm.actProjNewExecute(Sender: TObject);
|
procedure TCEMainForm.actProjNewExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fProjectInterface <> nil then if fProjectInterface.getIfModified then if dlgOkCancel(
|
if (fProjectInterface <> nil) and fProjectInterface.modified and (dlgOkCancel(
|
||||||
'The project modifications are not saved, continue ?')
|
'The project modifications are not saved, continue ?') = mrCancel) then exit;
|
||||||
= mrCancel then exit;
|
|
||||||
closeProj;
|
closeProj;
|
||||||
newNativeProj;
|
newNativeProj;
|
||||||
end;
|
end;
|
||||||
|
|
@ -2074,9 +2072,8 @@ end;
|
||||||
procedure TCEMainForm.actProjCloseExecute(Sender: TObject);
|
procedure TCEMainForm.actProjCloseExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fProjectInterface = nil then exit;
|
if fProjectInterface = nil then exit;
|
||||||
if fProjectInterface.getIfModified then if dlgOkCancel(
|
if fProjectInterface.modified and (dlgOkCancel(
|
||||||
'The project modifications are not saved, continue ?')
|
'The project modifications are not saved, continue ?') = mrCancel) then exit;
|
||||||
= mrCancel then exit;
|
|
||||||
closeProj;
|
closeProj;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
@ -2100,13 +2097,13 @@ end;
|
||||||
procedure TCEMainForm.actProjSaveExecute(Sender: TObject);
|
procedure TCEMainForm.actProjSaveExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fProjectInterface = nil then exit;
|
if fProjectInterface = nil then exit;
|
||||||
if fProjectInterface.getFilename <> '' then saveProj
|
if fProjectInterface.filename <> '' then saveProj
|
||||||
else actProjSaveAs.Execute;
|
else actProjSaveAs.Execute;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMainForm.actProjOpenExecute(Sender: TObject);
|
procedure TCEMainForm.actProjOpenExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fProjectInterface <> nil then if fProjectInterface.getIfModified then if dlgOkCancel(
|
if fProjectInterface <> nil then if fProjectInterface.modified then if dlgOkCancel(
|
||||||
'The project modifications are not saved, continue ?')
|
'The project modifications are not saved, continue ?')
|
||||||
= mrCancel then exit;
|
= mrCancel then exit;
|
||||||
with TOpenDialog.Create(nil) do
|
with TOpenDialog.Create(nil) do
|
||||||
|
|
@ -2130,9 +2127,9 @@ end;
|
||||||
procedure TCEMainForm.actProjSourceExecute(Sender: TObject);
|
procedure TCEMainForm.actProjSourceExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fProjectInterface = nil then exit;
|
if fProjectInterface = nil then exit;
|
||||||
if not fileExists(fProjectInterface.getFilename) then exit;
|
if not fileExists(fProjectInterface.filename) then exit;
|
||||||
//
|
//
|
||||||
openFile(fProjectInterface.getFilename);
|
openFile(fProjectInterface.filename);
|
||||||
//TODO-cDUB: add json highligher to edit json project in CE
|
//TODO-cDUB: add json highligher to edit json project in CE
|
||||||
fDoc.Highlighter := LfmSyn;
|
fDoc.Highlighter := LfmSyn;
|
||||||
end;
|
end;
|
||||||
|
|
|
||||||
|
|
@ -214,7 +214,7 @@ var
|
||||||
begin
|
begin
|
||||||
if aProject = nil then exit;
|
if aProject = nil then exit;
|
||||||
//
|
//
|
||||||
fname := aProject.getFilename;
|
fname := aProject.filename;
|
||||||
if FileExists(fname) then Insert(0, fname);
|
if FileExists(fname) then Insert(0, fname);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,9 +56,6 @@ type
|
||||||
procedure runProcOutput(sender: TObject);
|
procedure runProcOutput(sender: TObject);
|
||||||
// passes compilation message as "to be guessed"
|
// passes compilation message as "to be guessed"
|
||||||
procedure compProcOutput(proc: TProcess);
|
procedure compProcOutput(proc: TProcess);
|
||||||
//
|
|
||||||
function getFormat: TCEProjectFormat;
|
|
||||||
function getProject: TObject;
|
|
||||||
protected
|
protected
|
||||||
procedure beforeLoad; override;
|
procedure beforeLoad; override;
|
||||||
procedure afterSave; override;
|
procedure afterSave; override;
|
||||||
|
|
@ -79,28 +76,34 @@ type
|
||||||
procedure endUpdate;
|
procedure endUpdate;
|
||||||
procedure reset;
|
procedure reset;
|
||||||
procedure addDefaults;
|
procedure addDefaults;
|
||||||
function getIfIsSource(const aFilename: string): boolean;
|
|
||||||
function getAbsoluteSourceName(aIndex: integer): string;
|
|
||||||
function getAbsoluteFilename(const aFilename: string): string;
|
|
||||||
procedure addSource(const aFilename: string);
|
procedure addSource(const aFilename: string);
|
||||||
function addConfiguration: TCompilerConfiguration;
|
function addConfiguration: TCompilerConfiguration;
|
||||||
procedure getOpts(const aList: TStrings);
|
procedure getOpts(const aList: TStrings);
|
||||||
|
//
|
||||||
|
function getFormat: TCEProjectFormat;
|
||||||
|
function getProject: TObject;
|
||||||
|
function filename: string;
|
||||||
|
function basePath: string;
|
||||||
|
function outputFilename: string;
|
||||||
|
function binaryKind: TProjectBinaryKind;
|
||||||
|
function getCommandLine: string;
|
||||||
|
function modified: boolean;
|
||||||
|
//
|
||||||
|
function configurationCount: integer;
|
||||||
|
procedure setActiveConfiguration(index: integer);
|
||||||
|
function configurationName(index: integer): string;
|
||||||
|
//
|
||||||
|
function sourcesCount: integer;
|
||||||
|
function sourceRelative(index: integer): string;
|
||||||
|
function sourceAbsolute(index: integer): string;
|
||||||
|
function isSource(const aFilename: string): boolean;
|
||||||
|
//
|
||||||
function run(const runArgs: string = ''): Boolean;
|
function run(const runArgs: string = ''): Boolean;
|
||||||
function compile: Boolean;
|
function compile: Boolean;
|
||||||
//
|
//
|
||||||
function getIfModified: boolean;
|
|
||||||
function getOutputFilename: string;
|
|
||||||
function getConfigurationCount: integer;
|
|
||||||
procedure setActiveConfiguration(index: integer);
|
|
||||||
function getConfigurationName(index: integer): string;
|
|
||||||
function getFilename: string;
|
|
||||||
function getBinaryKind: TProjectBinaryKind;
|
|
||||||
function getCommandLine: string;
|
|
||||||
//
|
|
||||||
property configuration[ix: integer]: TCompilerConfiguration read getConfig;
|
property configuration[ix: integer]: TCompilerConfiguration read getConfig;
|
||||||
property currentConfiguration: TCompilerConfiguration read getCurrConf;
|
property currentConfiguration: TCompilerConfiguration read getCurrConf;
|
||||||
property onChange: TNotifyEvent read fOnChange write fOnChange;
|
property onChange: TNotifyEvent read fOnChange write fOnChange;
|
||||||
property modified: Boolean read fModified;
|
|
||||||
property canBeRun: Boolean read fCanBeRun;
|
property canBeRun: Boolean read fCanBeRun;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
@ -423,28 +426,16 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCENativeProject.getIfIsSource(const aFilename: string): boolean;
|
function TCENativeProject.isSource(const aFilename: string): boolean;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
for i := 0 to fSrcs.Count-1 do
|
for i := 0 to fSrcs.Count-1 do
|
||||||
if getAbsoluteSourceName(i) = aFilename then
|
if sourceAbsolute(i) = aFilename then
|
||||||
exit(true);
|
exit(true);
|
||||||
exit(false);
|
exit(false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCENativeProject.getAbsoluteSourceName(aIndex: integer): string;
|
|
||||||
begin
|
|
||||||
if aIndex < 0 then exit('');
|
|
||||||
if aIndex > fSrcs.Count-1 then exit('');
|
|
||||||
result := expandFileNameEx(fBasePath, fSrcs.Strings[aIndex]);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCENativeProject.getAbsoluteFilename(const aFilename: string): string;
|
|
||||||
begin
|
|
||||||
result := expandFileNameEx(fBasePath, aFilename);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCENativeProject.afterSave;
|
procedure TCENativeProject.afterSave;
|
||||||
begin
|
begin
|
||||||
fModified := false;
|
fModified := false;
|
||||||
|
|
@ -474,7 +465,7 @@ var
|
||||||
if fSrcs.Count = 0 then exit;
|
if fSrcs.Count = 0 then exit;
|
||||||
allMissing := true;
|
allMissing := true;
|
||||||
for i:= 0 to fSrcs.Count-1 do
|
for i:= 0 to fSrcs.Count-1 do
|
||||||
if fileExists(getAbsoluteSourceName(i)) then
|
if fileExists(sourceAbsolute(i)) then
|
||||||
allMissing := false;
|
allMissing := false;
|
||||||
if not allMissing then exit;
|
if not allMissing then exit;
|
||||||
if dlgOkCancel( 'The project source(s) are all missing. ' + LineEnding +
|
if dlgOkCancel( 'The project source(s) are all missing. ' + LineEnding +
|
||||||
|
|
@ -507,7 +498,7 @@ var
|
||||||
begin
|
begin
|
||||||
for i:= fSrcs.Count-1 downto 0 do
|
for i:= fSrcs.Count-1 downto 0 do
|
||||||
begin
|
begin
|
||||||
oldsrc := getAbsoluteSourceName(i);
|
oldsrc := sourceAbsolute(i);
|
||||||
if fileExists(oldsrc) then continue;
|
if fileExists(oldsrc) then continue;
|
||||||
if dlgOkCancel(format('a particular project source file ("%s") is missing. '
|
if dlgOkCancel(format('a particular project source file ("%s") is missing. '
|
||||||
+ LineEnding + 'This happends if a source file has been moved, renamed ' +
|
+ LineEnding + 'This happends if a source file has been moved, renamed ' +
|
||||||
|
|
@ -603,7 +594,7 @@ begin
|
||||||
if fOutputFilename <> '' then
|
if fOutputFilename <> '' then
|
||||||
begin
|
begin
|
||||||
fOutputFilename := symbolExpander.get(fOutputFilename);
|
fOutputFilename := symbolExpander.get(fOutputFilename);
|
||||||
fOutputFilename := getAbsoluteFilename(fOutputFilename);
|
fOutputFilename := expandFilenameEx(fBasePath, fOutputFilename);
|
||||||
{$IFDEF WINDOWS}
|
{$IFDEF WINDOWS}
|
||||||
// field is specified without ext or with a dot in the name.
|
// field is specified without ext or with a dot in the name.
|
||||||
// DMD will add the ext. (e.g: "-ofresourced")
|
// DMD will add the ext. (e.g: "-ofresourced")
|
||||||
|
|
@ -758,14 +749,14 @@ begin
|
||||||
until prm = '';
|
until prm = '';
|
||||||
end;
|
end;
|
||||||
//
|
//
|
||||||
if not fileExists(getOutputFilename) then
|
if not fileExists(outputFilename) then
|
||||||
begin
|
begin
|
||||||
getMessageDisplay.message('output executable missing: ' + shortenPath(getOutputFilename, 25),
|
getMessageDisplay.message('output executable missing: ' + shortenPath(outputFilename, 25),
|
||||||
self as ICECommonProject, amcProj, amkErr);
|
self as ICECommonProject, amcProj, amkErr);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
//
|
//
|
||||||
fRunner.Executable := getOutputFilename;
|
fRunner.Executable := outputFilename;
|
||||||
if fRunner.CurrentDirectory = '' then
|
if fRunner.CurrentDirectory = '' then
|
||||||
fRunner.CurrentDirectory := extractFilePath(fRunner.Executable);
|
fRunner.CurrentDirectory := extractFilePath(fRunner.Executable);
|
||||||
if poUsePipes in fRunner.Options then begin
|
if poUsePipes in fRunner.Options then begin
|
||||||
|
|
@ -819,17 +810,12 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCENativeProject.getIfModified: boolean;
|
function TCENativeProject.outputFilename: string;
|
||||||
begin
|
|
||||||
exit(fModified);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCENativeProject.getOutputFilename: string;
|
|
||||||
begin
|
begin
|
||||||
exit(fOutputFilename);
|
exit(fOutputFilename);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCENativeProject.getConfigurationCount: integer;
|
function TCENativeProject.configurationCount: integer;
|
||||||
begin
|
begin
|
||||||
exit(fConfigs.Count);
|
exit(fConfigs.Count);
|
||||||
end;
|
end;
|
||||||
|
|
@ -839,19 +825,29 @@ begin
|
||||||
setConfIx(index);
|
setConfIx(index);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCENativeProject.getConfigurationName(index: integer): string;
|
function TCENativeProject.configurationName(index: integer): string;
|
||||||
begin
|
begin
|
||||||
if index > fConfigs.Count -1 then index := fConfigs.Count -1;
|
if index > fConfigs.Count -1 then index := fConfigs.Count -1;
|
||||||
if index < 0 then index := 0;
|
if index < 0 then index := 0;
|
||||||
result := getConfig(index).name;
|
result := getConfig(index).name;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCENativeProject.getFilename: string;
|
function TCENativeProject.filename: string;
|
||||||
begin
|
begin
|
||||||
exit(fFilename);
|
exit(fFilename);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCENativeProject.getBinaryKind: TProjectBinaryKind;
|
function TCENativeProject.modified: boolean;
|
||||||
|
begin
|
||||||
|
exit(fModified);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCENativeProject.basePath: string;
|
||||||
|
begin
|
||||||
|
exit(fBasePath);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCENativeProject.binaryKind: TProjectBinaryKind;
|
||||||
begin
|
begin
|
||||||
exit(currentConfiguration.outputOptions.binaryKind);
|
exit(currentConfiguration.outputOptions.binaryKind);
|
||||||
end;
|
end;
|
||||||
|
|
@ -870,6 +866,27 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCENativeProject.sourcesCount: integer;
|
||||||
|
begin
|
||||||
|
exit(fSrcs.Count);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCENativeProject.sourceRelative(index: integer): string;
|
||||||
|
begin
|
||||||
|
exit(fSrcs.Strings[index]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCENativeProject.sourceAbsolute(index: integer): string;
|
||||||
|
var
|
||||||
|
fname: string;
|
||||||
|
begin
|
||||||
|
fname := fSrcs.Strings[index];
|
||||||
|
if FileExists(fname) then
|
||||||
|
result := fname
|
||||||
|
else
|
||||||
|
result := expandFilenameEx(fBasePath, fname);
|
||||||
|
end;
|
||||||
|
|
||||||
function isValidNativeProject(const filename: string): boolean;
|
function isValidNativeProject(const filename: string): boolean;
|
||||||
var
|
var
|
||||||
maybe: TCENativeProject;
|
maybe: TCENativeProject;
|
||||||
|
|
|
||||||
|
|
@ -211,7 +211,7 @@ begin
|
||||||
if Tree.Selected = nil then
|
if Tree.Selected = nil then
|
||||||
exit;
|
exit;
|
||||||
if (Tree.Selected.Parent = fFileNode) then
|
if (Tree.Selected.Parent = fFileNode) then
|
||||||
fLastFileOrFolder := fProject.getAbsoluteFilename(tree.Selected.Text)
|
fLastFileOrFolder := expandFilenameEx(fProject.basePath,tree.Selected.Text)
|
||||||
else
|
else
|
||||||
fLastFileOrFolder := tree.Selected.Text;
|
fLastFileOrFolder := tree.Selected.Text;
|
||||||
end;
|
end;
|
||||||
|
|
@ -229,7 +229,7 @@ begin
|
||||||
fname := Tree.Selected.Text;
|
fname := Tree.Selected.Text;
|
||||||
i := fProject.Sources.IndexOf(fname);
|
i := fProject.Sources.IndexOf(fname);
|
||||||
if i > -1 then
|
if i > -1 then
|
||||||
fname := fProject.getAbsoluteSourceName(i);
|
fname := fProject.sourceAbsolute(i);
|
||||||
if isEditable(ExtractFileExt(fname)) and fileExists(fname) then
|
if isEditable(ExtractFileExt(fname)) and fileExists(fname) then
|
||||||
getMultiDocHandler.openDocument(fname);
|
getMultiDocHandler.openDocument(fname);
|
||||||
end
|
end
|
||||||
|
|
@ -317,13 +317,13 @@ begin
|
||||||
fname := Tree.Selected.Text;
|
fname := Tree.Selected.Text;
|
||||||
i := fProject.Sources.IndexOf(fname);
|
i := fProject.Sources.IndexOf(fname);
|
||||||
if i = -1 then exit;
|
if i = -1 then exit;
|
||||||
fname := fProject.getAbsoluteSourceName(i);
|
fname := fProject.sourceAbsolute(i);
|
||||||
dir := extractFilePath(fname);
|
dir := extractFilePath(fname);
|
||||||
if not DirectoryExists(dir) then exit;
|
if not DirectoryExists(dir) then exit;
|
||||||
//
|
//
|
||||||
fProject.beginUpdate;
|
fProject.beginUpdate;
|
||||||
for i:= fProject.Sources.Count-1 downto 0 do
|
for i:= fProject.Sources.Count-1 downto 0 do
|
||||||
if extractFilePath(fProject.getAbsoluteSourceName(i)) = dir then
|
if extractFilePath(fProject.sourceAbsolute(i)) = dir then
|
||||||
fProject.Sources.Delete(i);
|
fProject.Sources.Delete(i);
|
||||||
fProject.endUpdate;
|
fProject.endUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
@ -427,7 +427,7 @@ begin
|
||||||
begin
|
begin
|
||||||
if fold = '' then
|
if fold = '' then
|
||||||
continue;
|
continue;
|
||||||
fold := fProject.getAbsoluteFilename(fold);
|
fold := expandFilenameEx(fProject.basePath, fold);
|
||||||
fold := symbolExpander.get(fold);
|
fold := symbolExpander.get(fold);
|
||||||
itm := Tree.Items.AddChild(fImpsNode, fold);
|
itm := Tree.Items.AddChild(fImpsNode, fold);
|
||||||
itm.ImageIndex := 5;
|
itm.ImageIndex := 5;
|
||||||
|
|
@ -439,7 +439,7 @@ begin
|
||||||
begin
|
begin
|
||||||
if fold = '' then
|
if fold = '' then
|
||||||
continue;
|
continue;
|
||||||
fold := fProject.getAbsoluteFilename(fold);
|
fold := expandFilenameEx(fProject.basePath, fold);
|
||||||
fold := symbolExpander.get(fold);
|
fold := symbolExpander.get(fold);
|
||||||
itm := Tree.Items.AddChild(fInclNode, fold);
|
itm := Tree.Items.AddChild(fInclNode, fold);
|
||||||
itm.ImageIndex := 5;
|
itm.ImageIndex := 5;
|
||||||
|
|
@ -451,7 +451,7 @@ begin
|
||||||
begin
|
begin
|
||||||
if src = '' then
|
if src = '' then
|
||||||
continue;
|
continue;
|
||||||
src := fProject.getAbsoluteFilename(src);
|
src := expandFilenameEx(fProject.basePath, src);
|
||||||
src := symbolExpander.get(src);
|
src := symbolExpander.get(src);
|
||||||
lst := TStringList.Create;
|
lst := TStringList.Create;
|
||||||
try
|
try
|
||||||
|
|
|
||||||
|
|
@ -181,27 +181,18 @@ begin
|
||||||
// project interface
|
// project interface
|
||||||
if hasProjItf then
|
if hasProjItf then
|
||||||
begin
|
begin
|
||||||
fSymbols[CPF] := fProjInterface.getFilename;
|
fname := fProjInterface.filename;
|
||||||
|
fSymbols[CPF] := fname;
|
||||||
fSymbols[CPP] := ExtractFilePath(fSymbols[CPF]);
|
fSymbols[CPP] := ExtractFilePath(fSymbols[CPF]);
|
||||||
fSymbols[CPN] := stripFileExt(extractFileName(fSymbols[CPF]));
|
fSymbols[CPN] := stripFileExt(extractFileName(fSymbols[CPF]));
|
||||||
end;
|
fSymbols[CPO] := fProjInterface.outputFilename;
|
||||||
// TODO-cDUB: move to upper block expansion of CPO, CPFS & CPCD when implemented in ICECOmmonProject
|
if fProjInterface.sourcesCount <> 0 then
|
||||||
if hasNativeProj then
|
|
||||||
begin
|
|
||||||
if fileExists(fProj.fileName) then
|
|
||||||
begin
|
|
||||||
fSymbols[CPR] := fProj.getAbsoluteFilename(fProj.RootFolder);
|
|
||||||
fSymbols[CPO] := fProj.getOutputFilename;
|
|
||||||
if fSymbols[CPR] = '' then
|
|
||||||
fSymbols[CPR] := fSymbols[CPP];
|
|
||||||
end;
|
|
||||||
if fProj.Sources.Count <> 0 then
|
|
||||||
begin
|
begin
|
||||||
str := TStringList.Create;
|
str := TStringList.Create;
|
||||||
try
|
try
|
||||||
for i := 0 to fProj.Sources.Count-1 do
|
for i := 0 to fProjInterface.sourcesCount-1 do
|
||||||
begin
|
begin
|
||||||
fname := fProj.getAbsoluteSourceName(i);
|
fname := fProjInterface.sourceAbsolute(i);
|
||||||
if not isEditable(ExtractFileExt(fname)) then
|
if not isEditable(ExtractFileExt(fname)) then
|
||||||
continue;
|
continue;
|
||||||
str.Add(fname);
|
str.Add(fname);
|
||||||
|
|
@ -216,6 +207,15 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
if hasNativeProj then
|
||||||
|
begin
|
||||||
|
if fileExists(fProj.fileName) then
|
||||||
|
begin
|
||||||
|
fSymbols[CPR] := expandFilenameEx(fProj.basePath, fProj.RootFolder);
|
||||||
|
if fSymbols[CPR] = '' then
|
||||||
|
fSymbols[CPR] := fSymbols[CPP];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCESymbolExpander.get(const symString: string): string;
|
function TCESymbolExpander.get(const symString: string): string;
|
||||||
|
|
|
||||||
|
|
@ -380,7 +380,7 @@ begin
|
||||||
if ((fProj <> nil) and (fDoc = nil)) then
|
if ((fProj <> nil) and (fDoc = nil)) then
|
||||||
exit(tcProject);
|
exit(tcProject);
|
||||||
//
|
//
|
||||||
if fProj.getIfIsSource(fDoc.fileName) then
|
if fProj.isSource(fDoc.fileName) then
|
||||||
exit(tcProject)
|
exit(tcProject)
|
||||||
else
|
else
|
||||||
exit(tcFile);
|
exit(tcFile);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue