MG: added publish project

git-svn-id: trunk@3501 -
This commit is contained in:
lazarus 2002-10-13 09:35:38 +00:00
parent 81cc7f3a50
commit 92e2f6aee5
9 changed files with 121 additions and 189 deletions

View File

@ -56,15 +56,7 @@ uses
const
ExternalMacroStart = ExprEval.ExternalMacroStart;
{$ifdef win32}
SpecialChar = '/'; // used to use PathDelim, e.g. /\
{$else}
SpecialChar = '\';
{$endif}
{$ifdef win32}
{$define CaseInsensitiveFilenames}
{$endif}
// Standard Template Names (do not translate them)
StdDefTemplFPC = 'Free Pascal Compiler';
StdDefTemplFPCSrc = 'Free Pascal Sources';
@ -333,15 +325,6 @@ begin
end;
end;
function CompareFilenames(const FileName1, Filename2: string): integer;
begin
{$ifdef CaseInsensitiveFilenames}
Result:=AnsiCompareText(FileName1,Filename2);
{$else}
Result:=AnsiCompareStr(FileName1,Filename2);
{$endif}
end;
function CompareUnitLinkNodes(NodeData1, NodeData2: pointer): integer;
var Link1, Link2: TUnitNameLink;
begin
@ -358,118 +341,6 @@ begin
Result:=CompareFilenames(DirDef1.Path,DirDef2.Path);
end;
function FilenameIsMatching(const Mask, Filename: string;
MatchExactly: boolean): boolean;
{
check if Filename matches Mask
Filename matches exactly or is a file/directory in a subdirectory of mask
Mask can contain the wildcards * and ?
The wildcards will _not_ match PathDelim
If you need the asterisk, the question mark or the PathDelim as character
just put the SpecialChar character in front of it.
Examples:
/abc matches /abc, /abc/p, /abc/xyz/filename
but not /abcd
/abc/x?z/www matches /abc/xyz/www, /abc/xaz/www
but not /abc/x/z/www
/abc/x*z/www matches /abc/xz/www, /abc/xyz/www, /abc/xAAAz/www
but not /abc/x/z/www
/abc/x\*z/www matches /abc/x*z/www, /abc/x*z/www/ttt
}
var DirStartMask, DirEndMask, DirStartFile, DirEndFile, AsteriskPos: integer;
begin
//writeln('[FilenameIsMatching] Mask="',Mask,'" Filename="',Filename,'" MatchExactly=',MatchExactly);
Result:=false;
if (Filename='') then exit;
if (Mask='') then begin
Result:=true; exit;
end;
// test every directory
DirStartMask:=1;
DirStartFile:=1;
repeat
// find start of directories
while (DirStartMask<=length(Mask))
and (Mask[DirStartMask]=PathDelim) do
inc(DirStartMask);
while (DirStartFile<=length(Filename))
and (Filename[DirStartFile]=PathDelim) do
inc(DirStartFile);
// find ends of directories
DirEndMask:=DirStartMask;
DirEndFile:=DirStartFile;
while (DirEndMask<=length(Mask)) do begin
if Mask[DirEndMask]=SpecialChar then
inc(DirEndMask,2)
else if (Mask[DirEndMask]=PathDelim) then
break
else
inc(DirEndMask);
end;
while (DirEndFile<=length(Filename)) do begin
if Filename[DirEndFile]=SpecialChar then
inc(DirEndFile,2)
else if (Filename[DirEndFile]=PathDelim) then
break
else
inc(DirEndFile);
end;
// writeln(' Compare "',copy(Mask,DirStartMask,DirEndMask-DirStartMask),'"',
// ' "',copy(Filename,DirStartFile,DirEndFile-DirStartFile),'"');
// compare directories
AsteriskPos:=0;
while (DirStartMask<DirEndMask) and (DirStartFile<DirEndFile) do begin
case Mask[DirStartMask] of
'?':
begin
inc(DirStartMask);
inc(DirStartFile);
end;
'*':
begin
inc(DirStartMask);
AsteriskPos:=DirStartMask;
end;
else
begin
if Mask[DirStartMask]=SpecialChar then begin
inc(DirStartMask);
if (DirStartMask>length(Mask)) then exit;
end;
{$ifdef CaseInsensitiveFilenames}
if (UpChars[Mask[DirStartMask]]<>UpChars[Filename[DirStartFile]]) then
{$else}
if (Mask[DirStartMask]<>Filename[DirStartFile]) then
{$endif}
begin
if AsteriskPos=0 then exit;
DirStartMask:=AsteriskPos;
end else begin
inc(DirStartMask);
inc(DirStartFile);
end;
end;
end;
end;
if (DirStartMask<DirEndmask) or (DirStartFile<DirEndFile) then exit;
// find starts of next directorys
DirStartMask:=DirEndMask+1;
DirStartFile:=DirEndFile+1;
until (DirStartFile>length(Filename)) or (DirStartMask>length(Mask));
while (DirStartMask<=length(Mask))
and (Mask[DirStartMask]=PathDelim) do
inc(DirStartMask);
Result:=(DirStartMask>length(Mask));
if MatchExactly then begin
while (DirStartFile<=length(Filename))
and (Filename[DirStartFile]=PathDelim) do
inc(DirStartFile);
Result:=(Result and (DirStartFile>length(Filename)));
end;
//writeln(' [FilenameIsMatching] Result=',Result,' ',DirStartMask,',',length(Mask),' ',DirStartFile,',',length(Filename));
end;
{ TDefineTemplate }

View File

@ -24,7 +24,7 @@ unit MemCheck;
{$goto on}
{$DEFINE EXTRA}
{off $DEFINE EXTRA}
interface
@ -433,11 +433,13 @@ begin
RunError(204);
end;
if pp=p then
is_in_getmem_list:=true;
is_in_getmem_list:=true;
pp:=pp^.previous;
inc(i);
if i>getmem_cnt-freemem_cnt then
writeln(ptext^,'error in linked list of heap_mem_info');
if i>getmem_cnt-freemem_cnt then begin
writeln(ptext^,'error in linked list of heap_mem_info');
RunError(204);
end;
end;
end;
@ -524,7 +526,7 @@ begin
pp:=pheap_mem_info(p);
if not quicktrace and not(is_in_getmem_list(pp)) then
RunError(204);
if (pp^.sig=$AAAAAAAA) and not usecrc then
if (pp^.sig=$AAAAAAAA) {MG: fix for codetools :} {and not usecrc} then
begin
error_in_heap:=true;
dump_already_free(pp,ptext^);

View File

@ -86,8 +86,10 @@ resourcestring
lisSaveAllModified = 'save all modified files';
lisTargetFilenameOfProject = 'Target filename of project';
lisTargetFilenamePlusParams = 'Target filename + params';
lisTestDirectory = 'Test directory';
lisLaunchingCmdLine = 'Launching target command line';
lisPublishProjDir = 'Publish project directory';
// main bar menu
lisMenuFile = '&File';
lisMenuEdit = '&Edit';

View File

@ -847,7 +847,6 @@ begin
itmProjectPublish := TMenuItem.Create(Self);
itmProjectPublish.Name:='itmProjectPublish';
itmProjectPublish.Caption := lisMenuPublishProject;
itmProjectPublish.Enabled:=false;
mnuProject.Add(itmProjectPublish);
mnuProject.Add(CreateMenuSeparator);

View File

@ -268,7 +268,8 @@ type
destructor Destroy; override;
function ReadProject(const LPIFilename: string): TModalResult;
function WriteProject: TModalResult;
function WriteProject(ProjectWriteFlags: TProjectWriteFlags;
const OverrideProjectInfoFile: string): TModalResult;
property Units[Index: integer]:TUnitInfo read GetUnits write SetUnits;
function UnitCount:integer;
@ -1041,7 +1042,8 @@ end;
{------------------------------------------------------------------------------
TProject WriteProject
------------------------------------------------------------------------------}
function TProject.WriteProject: TModalResult;
function TProject.WriteProject(ProjectWriteFlags: TProjectWriteFlags;
const OverrideProjectInfoFile: string): TModalResult;
procedure SaveFlags;
var f: TProjectFlag;
@ -1055,10 +1057,14 @@ function TProject.WriteProject: TModalResult;
function UnitMustBeSaved(i: integer): boolean;
begin
Result:=false;
if (pfSaveOnlyProjectUnits in Flags) and (not Units[i].IsPartOfProject) then
exit;
if (not (pfSaveClosedUnits in Flags)) and (not Units[i].IsPartOfProject)
and (not Units[i].Loaded) then exit;
if not Units[i].IsPartOfProject then begin
if (pfSaveOnlyProjectUnits in Flags) then exit;
if (pwfSaveOnlyProjectUnits in ProjectWriteFlags) then exit;
if (not Units[i].Loaded) then begin
if (not (pfSaveClosedUnits in Flags)) then exit;
if (pwfDontSaveClosedUnits in ProjectWriteFlags) then exit;
end;
end;
Result:=true;
end;
@ -1083,7 +1089,10 @@ var
begin
Result := mrCancel;
confPath := ProjectInfoFile;
if OverrideProjectInfoFile<>'' then
confPath := OverrideProjectInfoFile
else
confPath := ProjectInfoFile;
if Assigned(fOnFileBackup) then begin
Result:=fOnFileBackup(confPath,true);
if Result=mrAbort then exit;
@ -2066,6 +2075,9 @@ end.
{
$Log$
Revision 1.83 2002/10/13 09:35:37 lazarus
MG: added publish project
Revision 1.82 2002/10/04 21:31:56 lazarus
MG: added some component rename checks

View File

@ -42,6 +42,9 @@ uses
type
TOnLoadSaveFilename = procedure(var Filename:string; Load:boolean) of object;
TProjectWriteFlag = (pwfDontSaveClosedUnits, pwfSaveOnlyProjectUnits);
TProjectWriteFlags = set of TProjectWriteFlag;
//---------------------------------------------------------------------------
TProjectBookmark = class
private
@ -266,6 +269,8 @@ type
procedure LoadDefaults;
procedure LoadFromXMLConfig(XMLConfig: TXMLConfig; const APath: string);
procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const APath: string);
function FileCanBePublished(const AFilename: string): boolean;
function WriteFlags: TProjectWriteFlags;
// destination
property DestinationDirectory: string
@ -1052,5 +1057,34 @@ begin
SaveEditorInfoOfNonProjectFiles);
end;
function TPublishProjectOptions.FileCanBePublished(
const AFilename: string): boolean;
begin
{Result:=false;
// check include filter
if UseIncludeFileFilter
and not FilenameIsMatching(IncludeFileFilter,ExtractFilename(AFilename),true)
then
exit;
// check exclude filter
if UseExcludeFileFilter
and FilenameIsMatching(ExcludeFileFilter,ExtractFilename(AFilename),true)
then
exit;}
Result:=true;
end;
function TPublishProjectOptions.WriteFlags: TProjectWriteFlags;
begin
Result:=[];
if not SaveEditorInfoOfNonProjectFiles then
Include(Result,pwfSaveOnlyProjectUnits);
if not SaveClosedEditorFilesInfo then
Include(Result,pwfDontSaveClosedUnits);
end;
end.

View File

@ -34,6 +34,9 @@ object PublishProjectDialog: TPublishProjectDialog
object DestDirGroupBox: TGROUPBOX
ANCHORS = [aktop, akleft]
CAPTION = 'Destination directory'
COLOR = -2147483643
PARENTCTL3D = False
TABORDER = 2
ONRESIZE = DestDirGroupBoxRESIZE
LEFT = 8
HEIGHT = 111
@ -89,6 +92,9 @@ object PublishProjectDialog: TPublishProjectDialog
object FilesGroupbox: TGROUPBOX
ANCHORS = [aktop, akleft]
CAPTION = 'Files'
COLOR = -2147483643
PARENTCTL3D = False
TABORDER = 3
ONRESIZE = FilesGroupboxRESIZE
LEFT = 8
HEIGHT = 139
@ -147,6 +153,9 @@ object PublishProjectDialog: TPublishProjectDialog
object ProjectInfoGroupbox: TGROUPBOX
ANCHORS = [aktop, akleft]
CAPTION = 'Project Information'
COLOR = -2147483643
PARENTCTL3D = False
TABORDER = 4
ONRESIZE = ProjectInfoGroupboxRESIZE
LEFT = 8
HEIGHT = 69

View File

@ -11,48 +11,50 @@ LazarusResources.Add('TPublishProjectDialog','FORMDATA',[
+'n'#7'ANCHORS'#11#5'aktop'#7'akright'#0#11'MODALRESULT'#2#2#7'CAPTION'#6#6'C'
+'ancel'#7'TABSTOP'#9#8'TABORDER'#2#1#4'LEFT'#3'w'#1#6'HEIGHT'#2#25#3'TOP'#3
+'p'#1#5'WIDTH'#2'K'#0#0#9'TGROUPBOX'#15'DestDirGroupBox'#7'ANCHORS'#11#5'akt'
+'op'#6'akleft'#0#7'CAPTION'#6#21'Destination directory'#8'ONRESIZE'#7#21'Des'
+'tDirGroupBoxRESIZE'#4'LEFT'#2#8#6'HEIGHT'#2'o'#3'TOP'#2#8#5'WIDTH'#3#194#1#0
+#9'TCOMBOBOX'#15'DestDirComboBox'#7'ANCHORS'#11#5'aktop'#6'akleft'#0#11'PARE'
+'NTCTL3D'#8#7'TABSTOP'#9#4'TEXT'#6#15'DestDirComboBox'#4'LEFT'#2#6#6'HEIGHT'
+#2#25#3'TOP'#2#1#5'WIDTH'#3'^'#1#0#0#7'TBITBTN'#19'BrowseDestDirBitBtn'#10'G'
+'LYPH.Data'#10'>'#0#0#0':'#0#0#0'BM:'#0#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#1#0#0#0
+#1#0#0#0#1#0#16#0#0#0#0#0#4#0#0#0'Z'#0#0#0'`'#0#0#0'@'#0#0#0'@'#0#0#0#0#0#0#0
+#7'SPACING'#2#3#7'ANCHORS'#11#5'aktop'#6'akleft'#0#7'CAPTION'#6#6'Browse'#7
+'TABSTOP'#9#8'TABORDER'#2#1#4'LEFT'#3'n'#1#6'HEIGHT'#2#25#3'TOP'#2#1#5'WIDTH'
+#2'H'#0#0#9'TCOMBOBOX'#20'CommandAfterCombobox'#7'ANCHORS'#11#5'aktop'#6'akl'
+'eft'#0#11'PARENTCTL3D'#8#8'TABORDER'#2#2#7'TABSTOP'#9#4'TEXT'#6#20'CommandA'
+'fterCombobox'#4'LEFT'#2#6#6'HEIGHT'#2#25#3'TOP'#2':'#5'WIDTH'#3#174#1#0#0#6
+'TLABEL'#17'CommandAfterLabel'#7'ANCHORS'#11#5'aktop'#6'akleft'#0#7'CAPTION'
+#6#14'Command after:'#5'COLOR'#4#5#0#0#128#6'LAYOUT'#7#5'tltop'#4'LEFT'#2#6#6
+'HEIGHT'#2#17#3'TOP'#2'!'#5'WIDTH'#3#172#1#0#0#0#9'TGROUPBOX'#13'FilesGroupb'
+'ox'#7'ANCHORS'#11#5'aktop'#6'akleft'#0#7'CAPTION'#6#5'Files'#8'ONRESIZE'#7
+#19'FilesGroupboxRESIZE'#4'LEFT'#2#8#6'HEIGHT'#3#139#0#3'TOP'#3#128#0#5'WIDT'
+'H'#3#194#1#0#9'TCHECKBOX'#24'UseIncludeFilterCheckbox'#8'AUTOSIZE'#9#11'ALL'
+'OWGRAYED'#9#7'ANCHORS'#11#5'aktop'#6'akleft'#0#7'CAPTION'#6#18'Use include '
+'filter'#10'DRAGCURSOR'#2#0#7'TABSTOP'#9#7'TABSTOP'#9#4'LEFT'#2#4#6'HEIGHT'#2
+#20#5'WIDTH'#3#171#0#0#0#9'TCOMBOBOX'#25'IncludeFileFilterCombobox'#7'ANCHOR'
+'S'#11#5'aktop'#6'akleft'#0#11'PARENTCTL3D'#8#8'TABORDER'#2#1#7'TABSTOP'#9#4
+'TEXT'#6#25'IncludeFileFilterCombobox'#4'LEFT'#2#4#6'HEIGHT'#2#25#3'TOP'#2#24
+#5'WIDTH'#3#176#1#0#0#9'TCHECKBOX'#24'UseExcludeFilterCheckbox'#8'AUTOSIZE'#9
+#11'ALLOWGRAYED'#9#7'ANCHORS'#11#5'aktop'#6'akleft'#0#7'CAPTION'#6#18'Use ex'
+'clude filter'#10'DRAGCURSOR'#2#0#8'TABORDER'#2#2#7'TABSTOP'#9#8'TABORDER'#2
+#2#7'TABSTOP'#9#4'LEFT'#2#4#6'HEIGHT'#2#20#3'TOP'#2'@'#5'WIDTH'#3#175#0#0#0#9
+'TCOMBOBOX'#25'ExcludeFileFilterCombobox'#7'ANCHORS'#11#5'aktop'#6'akleft'#0
+#11'PARENTCTL3D'#8#8'TABORDER'#2#3#7'TABSTOP'#9#4'TEXT'#6#25'ExcludeFileFilt'
+'erCombobox'#4'LEFT'#2#4#6'HEIGHT'#2#25#3'TOP'#2'X'#5'WIDTH'#3#176#1#0#0#0#9
+'TGROUPBOX'#19'ProjectInfoGroupbox'#7'ANCHORS'#11#5'aktop'#6'akleft'#0#7'CAP'
+'TION'#6#19'Project Information'#8'ONRESIZE'#7#25'ProjectInfoGroupboxRESIZE'
+#4'LEFT'#2#8#6'HEIGHT'#2'E'#3'TOP'#3#24#1#5'WIDTH'#3#194#1#0#9'TCHECKBOX!Sav'
+'eClosedEditorFilesInfoCheckbox'#8'AUTOSIZE'#9#11'ALLOWGRAYED'#9#7'ANCHORS'
+#11#5'aktop'#6'akleft'#0#7'CAPTION'#6' Save editor info of closed files'#10
+'DRAGCURSOR'#2#0#7'TABSTOP'#9#7'TABSTOP'#9#4'LEFT'#2#4#6'HEIGHT'#2#20#3'TOP'
+#2#1#5'WIDTH'#3#176#1#0#0#9'TCHECKBOX''SaveEditorInfoOfNonProjectFilesCheckb'
+'ox'#8'AUTOSIZE'#9#11'ALLOWGRAYED'#9#7'ANCHORS'#11#5'aktop'#6'akleft'#0#7'CA'
+'PTION'#6'%Save editor info of non project files'#10'DRAGCURSOR'#2#0#8'TABOR'
+'DER'#2#1#7'TABSTOP'#9#8'TABORDER'#2#1#7'TABSTOP'#9#4'LEFT'#2#4#6'HEIGHT'#2
+#20#3'TOP'#2#26#5'WIDTH'#3#176#1#0#0#0#7'TBUTTON'#18'SaveSettingsButton'#7'A'
+'NCHORS'#11#5'aktop'#7'akright'#0#7'CAPTION'#6#13'Save settings'#7'TABSTOP'#9
+#8'TABORDER'#2#5#7'ONCLICK'#7#23'SaveSettingsButtonCLICK'#4'LEFT'#3#202#0#6
+'HEIGHT'#2#25#3'TOP'#3'p'#1#5'WIDTH'#2'x'#0#0#0
+'op'#6'akleft'#0#7'CAPTION'#6#21'Destination directory'#5'COLOR'#4#5#0#0#128
+#11'PARENTCTL3D'#8#8'TABORDER'#2#2#8'ONRESIZE'#7#21'DestDirGroupBoxRESIZE'#4
+'LEFT'#2#8#6'HEIGHT'#2'o'#3'TOP'#2#8#5'WIDTH'#3#194#1#0#9'TCOMBOBOX'#15'Dest'
+'DirComboBox'#7'ANCHORS'#11#5'aktop'#6'akleft'#0#11'PARENTCTL3D'#8#7'TABSTOP'
+#9#4'TEXT'#6#15'DestDirComboBox'#4'LEFT'#2#6#6'HEIGHT'#2#25#3'TOP'#2#1#5'WID'
+'TH'#3'^'#1#0#0#7'TBITBTN'#19'BrowseDestDirBitBtn'#10'GLYPH.Data'#10'>'#0#0#0
+':'#0#0#0'BM:'#0#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#1#0#0#0#1#0#0#0#1#0#16#0#0#0#0
+#0#4#0#0#0'Z'#0#0#0'`'#0#0#0'@'#0#0#0'@'#0#0#0#0#0#0#0#7'SPACING'#2#3#7'ANCH'
+'ORS'#11#5'aktop'#6'akleft'#0#7'CAPTION'#6#6'Browse'#7'TABSTOP'#9#8'TABORDER'
+#2#1#4'LEFT'#3'n'#1#6'HEIGHT'#2#25#3'TOP'#2#1#5'WIDTH'#2'H'#0#0#9'TCOMBOBOX'
+#20'CommandAfterCombobox'#7'ANCHORS'#11#5'aktop'#6'akleft'#0#11'PARENTCTL3D'
+#8#8'TABORDER'#2#2#7'TABSTOP'#9#4'TEXT'#6#20'CommandAfterCombobox'#4'LEFT'#2
+#6#6'HEIGHT'#2#25#3'TOP'#2':'#5'WIDTH'#3#174#1#0#0#6'TLABEL'#17'CommandAfter'
+'Label'#7'ANCHORS'#11#5'aktop'#6'akleft'#0#7'CAPTION'#6#14'Command after:'#5
+'COLOR'#4#5#0#0#128#6'LAYOUT'#7#5'tltop'#4'LEFT'#2#6#6'HEIGHT'#2#17#3'TOP'#2
+'!'#5'WIDTH'#3#172#1#0#0#0#9'TGROUPBOX'#13'FilesGroupbox'#7'ANCHORS'#11#5'ak'
+'top'#6'akleft'#0#7'CAPTION'#6#5'Files'#5'COLOR'#4#5#0#0#128#11'PARENTCTL3D'
+#8#8'TABORDER'#2#3#8'ONRESIZE'#7#19'FilesGroupboxRESIZE'#4'LEFT'#2#8#6'HEIGH'
+'T'#3#139#0#3'TOP'#3#128#0#5'WIDTH'#3#194#1#0#9'TCHECKBOX'#24'UseIncludeFilt'
+'erCheckbox'#8'AUTOSIZE'#9#11'ALLOWGRAYED'#9#7'ANCHORS'#11#5'aktop'#6'akleft'
+#0#7'CAPTION'#6#18'Use include filter'#10'DRAGCURSOR'#2#0#7'TABSTOP'#9#7'TAB'
+'STOP'#9#4'LEFT'#2#4#6'HEIGHT'#2#20#5'WIDTH'#3#171#0#0#0#9'TCOMBOBOX'#25'Inc'
+'ludeFileFilterCombobox'#7'ANCHORS'#11#5'aktop'#6'akleft'#0#11'PARENTCTL3D'#8
+#8'TABORDER'#2#1#7'TABSTOP'#9#4'TEXT'#6#25'IncludeFileFilterCombobox'#4'LEFT'
+#2#4#6'HEIGHT'#2#25#3'TOP'#2#24#5'WIDTH'#3#176#1#0#0#9'TCHECKBOX'#24'UseExcl'
+'udeFilterCheckbox'#8'AUTOSIZE'#9#11'ALLOWGRAYED'#9#7'ANCHORS'#11#5'aktop'#6
+'akleft'#0#7'CAPTION'#6#18'Use exclude filter'#10'DRAGCURSOR'#2#0#8'TABORDER'
+#2#2#7'TABSTOP'#9#8'TABORDER'#2#2#7'TABSTOP'#9#4'LEFT'#2#4#6'HEIGHT'#2#20#3
+'TOP'#2'@'#5'WIDTH'#3#175#0#0#0#9'TCOMBOBOX'#25'ExcludeFileFilterCombobox'#7
+'ANCHORS'#11#5'aktop'#6'akleft'#0#11'PARENTCTL3D'#8#8'TABORDER'#2#3#7'TABSTO'
+'P'#9#4'TEXT'#6#25'ExcludeFileFilterCombobox'#4'LEFT'#2#4#6'HEIGHT'#2#25#3'T'
+'OP'#2'X'#5'WIDTH'#3#176#1#0#0#0#9'TGROUPBOX'#19'ProjectInfoGroupbox'#7'ANCH'
+'ORS'#11#5'aktop'#6'akleft'#0#7'CAPTION'#6#19'Project Information'#5'COLOR'#4
+#5#0#0#128#11'PARENTCTL3D'#8#8'TABORDER'#2#4#8'ONRESIZE'#7#25'ProjectInfoGro'
+'upboxRESIZE'#4'LEFT'#2#8#6'HEIGHT'#2'E'#3'TOP'#3#24#1#5'WIDTH'#3#194#1#0#9
+'TCHECKBOX!SaveClosedEditorFilesInfoCheckbox'#8'AUTOSIZE'#9#11'ALLOWGRAYED'#9
+#7'ANCHORS'#11#5'aktop'#6'akleft'#0#7'CAPTION'#6' Save editor info of closed'
+' files'#10'DRAGCURSOR'#2#0#7'TABSTOP'#9#7'TABSTOP'#9#4'LEFT'#2#4#6'HEIGHT'#2
+#20#3'TOP'#2#1#5'WIDTH'#3#176#1#0#0#9'TCHECKBOX''SaveEditorInfoOfNonProjectF'
+'ilesCheckbox'#8'AUTOSIZE'#9#11'ALLOWGRAYED'#9#7'ANCHORS'#11#5'aktop'#6'akle'
+'ft'#0#7'CAPTION'#6'%Save editor info of non project files'#10'DRAGCURSOR'#2
+#0#8'TABORDER'#2#1#7'TABSTOP'#9#8'TABORDER'#2#1#7'TABSTOP'#9#4'LEFT'#2#4#6'H'
+'EIGHT'#2#20#3'TOP'#2#26#5'WIDTH'#3#176#1#0#0#0#7'TBUTTON'#18'SaveSettingsBu'
+'tton'#7'ANCHORS'#11#5'aktop'#7'akright'#0#7'CAPTION'#6#13'Save settings'#7
+'TABSTOP'#9#8'TABORDER'#2#5#7'ONCLICK'#7#23'SaveSettingsButtonCLICK'#4'LEFT'
+#3#202#0#6'HEIGHT'#2#25#3'TOP'#3'p'#1#5'WIDTH'#2'x'#0#0#0
]);

View File

@ -182,7 +182,7 @@ begin
// command after
List:=InputHistories.HistoryLists.GetList(PublishProjectCommandsAfter,true);
if List.Count=0 then begin
List.Add('tar czf $(ProjPublishDir).tgz $(ProjPublishDir)');
List.Add('/bin/tar czf $MakeFile($(ProjPublishDir)).tgz $(ProjPublishDir)');
end;
CommandAfterCombobox.Items.Assign(List);
@ -235,6 +235,7 @@ begin
Position:=poScreenCenter;
IDEDialogLayoutList.ApplyLayout(Self,500,405);
LoadHistoryLists;
FilesGroupbox.Enabled:=false;
end;
destructor TPublishProjectDialog.Destroy;