IDE: fixed save package as when mainunit is custom unit

git-svn-id: trunk@27488 -
This commit is contained in:
mattias 2010-09-26 22:00:05 +00:00
parent cc80ae5460
commit 766f240486
3 changed files with 87 additions and 68 deletions

View File

@ -1,51 +1,43 @@
{ $Id$ }
{
/***************************************************************************
allsyneditunits.pp
{ This file was automatically created by Lazarus. Do not edit!
This source is only used to compile and install the package.
}
dummy unit to compile all units
/***************************************************************************
}
unit AllSynEditUnits;
{$mode objfpc}{$H+}
unit allsyneditunits;
interface
uses
SynTextDrawer, SynEditKeyCmds, SynEditTypes, SynEditStrConst,
SynEditSearch, SynEditMiscProcs, SynEditmiscClasses, SynEditTextbuffer,
SynEdit, SynCompletion, SynEditAutoComplete,
SynEditLazDsgn, SynRegExpr, SynEditRegexSearch, SynEditExport,
SynExportHTML, SynMemo, SynMacroRecorder, SynEditPlugins,
SynPluginSyncronizedEditBase, SynPluginTemplateEdit, SynPluginSyncroEdit,
SynEditHighlighter, SynEditHighlighterFoldBase, SynEditHighlighterXMLBase,
SynHighlighterAny,
SynhighlighterCPP,
SynHighlighterCss,
SynHighlighterHashEntries,
SynhighlighterHTML,
SynHighlighterJava,
SynHighlighterJScript,
SynHighlighterLFM,
SynHighlighterMulti,
SynHighlighterPas,
SynHighlighterPerl,
SynHighlighterPHP,
SynHighlighterPosition,
SynHighlighterPython,
SynHighlighterSQL,
SynHighlighterTeX,
SynHighlighterUNIXShellScript,
SynHighlighterVB,
SynHighlighterXML,
SynHighlighterDiff,
SynGutter, SynGutterChanges, SynGutterCodeFolding, SynGutterLineNumber,
SynGutterMarks, SynGutterLineOverview,
SynPropertyEditObjectList, SynDesignStringConstants;
SynBeautifier, SynCompletion, SynDesignStringConstants, SynEdit,
SynEditAutoComplete, SynEditExport, SynEditFoldedView, SynEditHighlighter,
SynEditHighlighterFoldBase, SynEditHighlighterXMLBase, SynEditKeyCmds,
SynEditLazDsgn, SynEditLines, SynEditMarks, SynEditMarkup,
SynEditMarkupBracket, SynEditMarkupCtrlMouseLink, SynEditMarkupHighAll,
SynEditMarkupSelection, SynEditMarkupSpecialLine, SynEditMarkupWordGroup,
SynEditMiscClasses, SynEditMiscProcs, SynEditMouseCmds, SynEditPlugins,
SynEditPointClasses, SynEditRegexSearch, SynEditSearch, SynEditStrConst,
SynEditTextBase, SynEditTextBuffer, SynEditTextDoubleWidthChars,
SynEditTextTabExpander, SynEditTextTrimmer, SynEditTypes, SynExportHTML,
SynGutter, SynGutterBase, SynGutterChanges, SynGutterCodeFolding,
SynGutterLineNumber, SynGutterLineOverview, SynGutterMarks,
SynHighlighterAny, SynHighlighterCpp, SynHighlighterCss, SynHighlighterDiff,
SynHighlighterHashEntries, SynHighlighterHTML, SynHighlighterJava,
SynHighlighterJScript, SynHighlighterLFM, SynHighlighterMulti,
SynHighlighterPas, SynHighlighterPerl, SynHighlighterPHP,
SynHighlighterPosition, SynHighlighterPython, SynHighlighterSQL,
SynHighlighterTeX, synhighlighterunixshellscript, SynHighlighterVB,
SynHighlighterXML, SynMacroRecorder, SynMemo, SynPluginSyncroEdit,
SynPluginSyncronizedEditBase, SynPluginTemplateEdit,
SynPropertyEditObjectList, SynRegExpr, SynTextDrawer, LazarusPackageIntf;
implementation
end.
procedure Register;
begin
RegisterUnit('SynEdit', @SynEdit.Register);
RegisterUnit('synhighlighterunixshellscript', @synhighlighterunixshellscript.
Register);
end;
initialization
RegisterPackage('synedit1', @Register);
end.

View File

@ -702,6 +702,7 @@ type
procedure MoveFile(CurIndex, NewIndex: integer);
procedure SortFiles;
function FixFilesCaseSensitivity: boolean;
function MainUnitHasPkgName: boolean;
// required dependencies (plus removed required dependencies)
function FindDependencyByName(const PkgName: string): TPkgDependency;
function RequiredDepByIndex(Index: integer): TPkgDependency;
@ -3234,6 +3235,11 @@ begin
end;
end;
function TLazPackage.MainUnitHasPkgName: boolean;
begin
Result:=(MainUnit=nil) or (SysUtils.CompareText(MainUnit.Unit_Name,Name)=0);
end;
procedure TLazPackage.RemoveRemovedDependency(Dependency: TPkgDependency);
begin
Dependency.RemoveFromList(FFirstRemovedDependency,pdlRequires);

View File

@ -1156,6 +1156,7 @@ var
BrokenDependencies: TFPList;
RenameDependencies: Boolean;
OldPkgName: String;
NewMainUnitFileName: String;
procedure RenamePackageInProject;
var
@ -1203,6 +1204,10 @@ begin
end;
NewFileName:=CleanAndExpandFilename(SaveDialog.Filename);
NewPkgName:=ExtractFileNameOnly(NewFilename);
if APackage.MainUnitHasPkgName then
NewMainUnitFileName:=ChangeFileExt(NewFileName,'.pas')
else
NewMainUnitFileName:='';
// check file extension
if ExtractFileExt(NewFilename)='' then begin
@ -1245,15 +1250,18 @@ begin
if EnvironmentOptions.CharcaseFileAction = ccfaAutoRename then NewFileName:=LowerFilename;
end;
end;
// check unit name conflict
PkgFile:=APackage.FindUnit(NewPkgName);
if PkgFile<>nil then begin
Result:=IDEMessageDialog(lisNameConflict,
lisThePackageAlreadyContainsAUnitWithThisName,
mtWarning,[mbRetry,mbAbort]);
if Result=mrAbort then exit;
continue; // try again
if NewMainUnitFileName<>'' then
begin
PkgFile:=APackage.FindUnit(NewPkgName);
if PkgFile<>nil then begin
Result:=IDEMessageDialog(lisNameConflict,
lisThePackageAlreadyContainsAUnitWithThisName,
mtWarning,[mbRetry,mbAbort]);
if Result=mrAbort then exit;
continue; // try again
end;
end;
// check package name conflict
@ -1269,7 +1277,8 @@ begin
end;
// check file name conflict with project
if Project1.ProjectUnitWithFilename(NewFilename)<>nil then begin
if (NewMainUnitFileName<>'')
and (Project1.ProjectUnitWithFilename(NewMainUnitFileName)<>nil) then begin
Result:=IDEMessageDialog(lisPkgMangFilenameIsUsedByProject,
Format(lisPkgMangTheFileNameIsPartOfTheCurrentProject, ['"',
NewFilename, '"', #13]),
@ -1279,17 +1288,20 @@ begin
end;
// check file name conflicts with files in other packages
PkgFile:=PackageGraph.FindFileInAllPackages(NewFilename,true,false);
if PkgFile<>nil then begin
Result:=IDEMessageDialog(lisPkgMangFilenameIsUsedByOtherPackage,
Format(lisPkgMangTheFileNameIsUsedByThePackageInFile, ['"',
NewFilename, '"', #13, '"', PkgFile.LazPackage.IDAsString, '"',
#13, '"', PkgFile.LazPackage.Filename, '"']),
mtWarning,[mbRetry,mbAbort]);
if Result=mrAbort then exit;
continue; // try again
if (NewMainUnitFileName<>'') then
begin
PkgFile:=PackageGraph.FindFileInAllPackages(NewMainUnitFileName,true,false);
if PkgFile<>nil then begin
Result:=IDEMessageDialog(lisPkgMangFilenameIsUsedByOtherPackage,
Format(lisPkgMangTheFileNameIsUsedByThePackageInFile, ['"',
NewFilename, '"', #13, '"', PkgFile.LazPackage.IDAsString, '"',
#13, '"', PkgFile.LazPackage.Filename, '"']),
mtWarning,[mbRetry,mbAbort]);
if Result=mrAbort then exit;
continue; // try again
end;
end;
// check for broken dependencies
BrokenDependencies:=PackageGraph.GetBrokenDependenciesWhenChangingPkgID(
APackage,NewPkgName,APackage.Version);
@ -1307,14 +1319,23 @@ begin
end;
// check existing file
if (CompareFilenames(NewFileName,OldPkgFilename)<>0)
and FileExistsUTF8(NewFileName) then begin
Result:=IDEMessageDialog(lisPkgMangReplaceFile,
Format(lisPkgMangReplaceExistingFile, ['"', NewFilename, '"']),
mtConfirmation,[mbOk,mbCancel]);
if Result<>mrOk then exit;
if (CompareFilenames(NewFileName,OldPkgFilename)<>0) then
begin
if FileExistsUTF8(NewFileName) then begin
Result:=IDEMessageDialog(lisPkgMangReplaceFile,
Format(lisPkgMangReplaceExistingFile, ['"', NewFilename, '"']),
mtConfirmation,[mbOk,mbCancel]);
if Result<>mrOk then exit;
end;
if FileExistsUTF8(NewMainUnitFileName) then
begin
Result:=IDEMessageDialog(lisPkgMangReplaceFile,
Format(lisPkgMangReplaceExistingFile, ['"', NewFilename, '"']),
mtConfirmation,[mbOk,mbCancel]);
if Result<>mrOk then exit;
end;
end;
// check if new file is read/writable
Result:=CheckCreatingFile(NewFileName,true);
if Result=mrAbort then exit;