mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-21 09:39:31 +02:00
IDE: fixed save package as when mainunit is custom unit
git-svn-id: trunk@27488 -
This commit is contained in:
parent
cc80ae5460
commit
766f240486
@ -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.
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user