git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.jcl@20 c37d764d-f447-7644-a108-883140d013fb
257 lines
9.8 KiB
ObjectPascal
257 lines
9.8 KiB
ObjectPascal
{**************************************************************************************************}
|
|
{ }
|
|
{ Project JEDI Code Library (JCL) }
|
|
{ }
|
|
{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); }
|
|
{ you may not use this file except in compliance with the License. You may obtain a copy of the }
|
|
{ License at http://www.mozilla.org/MPL/ }
|
|
{ }
|
|
{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF }
|
|
{ ANY KIND, either express or implied. See the License for the specific language governing rights }
|
|
{ and limitations under the License. }
|
|
{ }
|
|
{ The Original Code is JclOtaExcDlgFileFrame.pas. }
|
|
{ }
|
|
{ The Initial Developer of the Original Code is Florent Ouchet }
|
|
{ <outchy att users dott sourceforge dott net> }
|
|
{ Portions created by Florent Ouchet are Copyright (C) of Florent Ouchet. All rights reserved. }
|
|
{ }
|
|
{ Contributors: }
|
|
{ }
|
|
{**************************************************************************************************}
|
|
{ }
|
|
{ Last modified: $Date:: 2009-09-14 18:00:50 +0200 (lun., 14 sept. 2009) $ }
|
|
{ Revision: $Rev:: 3012 $ }
|
|
{ Author: $Author:: outchy $ }
|
|
{ }
|
|
{**************************************************************************************************}
|
|
|
|
unit JclOtaExcDlgFileFrame;
|
|
|
|
interface
|
|
|
|
{$I jcl.inc}
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
|
|
Dialogs, StdCtrls,
|
|
{$IFDEF UNITVERSIONING}
|
|
JclUnitVersioning,
|
|
{$ENDIF UNITVERSIONING}
|
|
JclBorlandTools, JclOtaWizardFrame, JclOtaExcDlgRepository, JclOtaConsts, JclOtaUtils;
|
|
|
|
type
|
|
TJclOtaExcDlgFilePage = class(TJclWizardFrame)
|
|
ComboBoxLanguage: TComboBox;
|
|
LabelLanguage: TLabel;
|
|
EditFormName: TEdit;
|
|
LabelFormName: TLabel;
|
|
EditFileName: TEdit;
|
|
LabelFileName: TLabel;
|
|
ButtonFileBrowse: TButton;
|
|
EditFormAncestor: TEdit;
|
|
LabelFormAncestor: TLabel;
|
|
SaveDialogFileName: TSaveDialog;
|
|
procedure ButtonFileBrowseClick(Sender: TObject);
|
|
procedure ComboBoxLanguageClick(Sender: TObject);
|
|
private
|
|
FParams: TJclOtaExcDlgParams;
|
|
procedure AdjustFileExtension;
|
|
function GetSelectedLanguage: TJclBorPersonality;
|
|
protected
|
|
function GetSupportsNext: Boolean; override;
|
|
property SelectedLanguage: TJclBorPersonality read GetSelectedLanguage;
|
|
public
|
|
constructor Create(AOwner: TComponent;
|
|
AParams: TJclOtaExcDlgParams); reintroduce;
|
|
|
|
procedure PageActivated(Direction: TJclWizardDirection); override;
|
|
procedure PageDesactivated(Direction: TJclWizardDirection); override;
|
|
|
|
property Params: TJclOtaExcDlgParams read FParams write FParams;
|
|
end;
|
|
|
|
{$IFDEF UNITVERSIONING}
|
|
const
|
|
UnitVersioning: TUnitVersionInfo = (
|
|
RCSfile: '$URL: https://jcl.svn.sourceforge.net/svnroot/jcl/tags/JCL-2.1-Build3536/jcl/experts/repository/JclOtaExcDlgFileFrame.pas $';
|
|
Revision: '$Revision: 3012 $';
|
|
Date: '$Date: 2009-09-14 18:00:50 +0200 (lun., 14 sept. 2009) $';
|
|
LogPath: 'JCL\experts\repository';
|
|
Extra: '';
|
|
Data: nil
|
|
);
|
|
{$ENDIF UNITVERSIONING}
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
uses
|
|
ToolsAPI,
|
|
JclStrings,
|
|
JclOtaResources;
|
|
|
|
//=== { TJclOtaExcDlgFilePage } ==============================================
|
|
|
|
procedure TJclOtaExcDlgFilePage.AdjustFileExtension;
|
|
var
|
|
AFileName: string;
|
|
begin
|
|
AFileName := EditFileName.Text;
|
|
if AFileName <> '' then
|
|
begin
|
|
case SelectedLanguage of
|
|
bpDelphi32:
|
|
AFileName := ChangeFileExt(AFileName, SourceExtensionPAS);
|
|
bpBCBuilder32:
|
|
AFileName := ChangeFileExt(AFileName, SourceExtensionCPP);
|
|
end;
|
|
EditFileName.Text := AFileName;
|
|
end;
|
|
end;
|
|
|
|
procedure TJclOtaExcDlgFilePage.ButtonFileBrowseClick(Sender: TObject);
|
|
procedure AddFilter(const NewDescription, NewExtension: string);
|
|
var
|
|
AFilter: string;
|
|
begin
|
|
AFilter := SaveDialogFileName.Filter;
|
|
if AFilter <> '' then
|
|
AFilter := StrEnsureSuffix('|',AFilter);
|
|
AFilter := Format('%s%s (*%s)|*%s',[AFilter, NewDescription, NewExtension, NewExtension]);
|
|
SaveDialogFileName.Filter := AFilter;
|
|
end;
|
|
begin
|
|
SaveDialogFileName.FileName := EditFileName.Text;
|
|
SaveDialogFileName.Title := LoadResString(@RsFileNameDialog);
|
|
|
|
SaveDialogFileName.Filter := '';
|
|
AddFilter('All files', '.*');
|
|
if (bpDelphi32 in Params.Languages) or (bpBCBuilder32 in Params.Languages) then
|
|
AddFilter(SourceDescriptionPAS, SourceExtensionPAS);
|
|
if bpBCBuilder32 in Params.Languages then
|
|
AddFilter(SourceDescriptionCPP, SourceExtensionCPP);
|
|
|
|
if ComboBoxLanguage.ItemIndex > -1 then
|
|
case SelectedLanguage of
|
|
bpDelphi32 :
|
|
SaveDialogFileName.FilterIndex := 2;
|
|
bpBCBuilder32 :
|
|
SaveDialogFileName.FilterIndex := 3;
|
|
else
|
|
SaveDialogFileName.FilterIndex := 1;
|
|
end
|
|
else
|
|
SaveDialogFileName.DefaultExt := '';
|
|
|
|
if SaveDialogFileName.Execute then
|
|
EditFileName.Text := SaveDialogFileName.FileName;
|
|
AdjustFileExtension;
|
|
end;
|
|
|
|
procedure TJclOtaExcDlgFilePage.ComboBoxLanguageClick(Sender: TObject);
|
|
begin
|
|
AdjustFileExtension;
|
|
end;
|
|
|
|
constructor TJclOtaExcDlgFilePage.Create(AOwner: TComponent;
|
|
AParams: TJclOtaExcDlgParams);
|
|
begin
|
|
FParams := AParams;
|
|
inherited Create(AOwner);
|
|
|
|
Caption := LoadResString(@RsExcDlgFileOptions);
|
|
LabelLanguage.Caption := LoadResString(@RsLanguage);
|
|
LabelFileName.Caption := LoadResString(@RsFileName);
|
|
LabelFormName.Caption := LoadResString(@RsFormName);
|
|
LabelFormAncestor.Caption := LoadResString(@RsFormAncestor);
|
|
end;
|
|
|
|
function TJclOtaExcDlgFilePage.GetSelectedLanguage: TJclBorPersonality;
|
|
begin
|
|
if ComboBoxLanguage.ItemIndex > -1 then
|
|
Result := TJclBorPersonality(ComboBoxLanguage.Items.Objects[ComboBoxLanguage.ItemIndex])
|
|
else
|
|
Result := bpUnknown;
|
|
end;
|
|
|
|
function TJclOtaExcDlgFilePage.GetSupportsNext: Boolean;
|
|
var
|
|
AProject: IOTAProject;
|
|
AModuleInfo: IOTAModuleInfo;
|
|
ValidFormName, ValidFileName: Boolean;
|
|
ProposedModuleName: string;
|
|
Index: Integer;
|
|
begin
|
|
AProject := TJclOTAExpertBase.GetActiveProject;
|
|
ValidFormName := IsValidIdent(EditFormName.Text);
|
|
ProposedModuleName := ChangeFileExt(ExtractFileName(EditFileName.Text), '');
|
|
ValidFileName := (ProposedModuleName = '') or IsValidIdent(ProposedModuleName);
|
|
|
|
if Assigned(AProject) then
|
|
begin
|
|
if ValidFileName and (ProposedModuleName <> '') and StrSame(ProposedModuleName, ChangeFileExt(ExtractFileName(AProject.FileName), '')) then
|
|
ValidFileName := False;
|
|
|
|
for Index := 0 to AProject.GetModuleCount - 1 do
|
|
begin
|
|
AModuleInfo := AProject.GetModule(Index);
|
|
if ValidFormName and (AModuleInfo.ModuleType = JclRepositoryModuleTypeForm) and StrSame(EditFormName.Text, AModuleInfo.FormName) then
|
|
ValidFormName := False;
|
|
if ValidFileName and (ProposedModuleName <> '') and StrSame(ProposedModuleName, ChangeFileExt(ExtractFileName(AModuleInfo.FileName), '')) then
|
|
ValidFileName := False;
|
|
end;
|
|
end;
|
|
|
|
Result := ValidFormName and ValidFileName and (ComboBoxLanguage.ItemIndex > -1) and (EditFormName.Text <> '') and (EditFormAncestor.Text <> '')
|
|
and (( SelectedLanguage = Params.ActivePersonality)
|
|
or (EditFileName.Text <> ''));
|
|
end;
|
|
|
|
procedure TJclOtaExcDlgFilePage.PageActivated(Direction: TJclWizardDirection);
|
|
var
|
|
Language: TJclBorPersonality;
|
|
ItemIndex: Integer;
|
|
begin
|
|
inherited PageActivated(Direction);
|
|
|
|
ComboBoxLanguage.Items.Clear;
|
|
|
|
for Language := Low(TJclBorPersonality) to High(TJclBorPersonality) do
|
|
if Language in Params.Languages then
|
|
begin
|
|
ItemIndex := ComboBoxLanguage.Items.AddObject(JclBorPersonalityDescription[Language], TObject(Language));
|
|
if Language = Params.Language then
|
|
ComboBoxLanguage.ItemIndex := ItemIndex;
|
|
end;
|
|
|
|
EditFileName.Text := Params.FileName;
|
|
EditFormName.Text := Params.FormName;
|
|
EditFormAncestor.Text := Params.FormAncestor;
|
|
end;
|
|
|
|
procedure TJclOtaExcDlgFilePage.PageDesactivated(
|
|
Direction: TJclWizardDirection);
|
|
begin
|
|
inherited PageDesactivated(Direction);
|
|
|
|
if ComboBoxLanguage.ItemIndex > -1 then
|
|
Params.Language := SelectedLanguage
|
|
else
|
|
Params.Language := bpUnknown;
|
|
Params.FileName := EditFileName.Text;
|
|
Params.FormName := EditFormName.Text;
|
|
Params.FormAncestor := EditFormAncestor.Text;
|
|
end;
|
|
|
|
{$IFDEF UNITVERSIONING}
|
|
initialization
|
|
RegisterUnitVersion(HInstance, UnitVersioning);
|
|
|
|
finalization
|
|
UnregisterUnitVersion(HInstance);
|
|
{$ENDIF UNITVERSIONING}
|
|
|
|
end.
|