mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-03 22:23:50 +02:00
268 lines
5.8 KiB
ObjectPascal
268 lines
5.8 KiB
ObjectPascal
unit frmMain;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, ComCtrls,
|
|
ActnList, Menus, IniPropStorage, frasqldbfullrestschemaaditor, mrumanager;
|
|
|
|
type
|
|
|
|
{ TMainForm }
|
|
|
|
TMainForm = class(TForm)
|
|
aQuit: TAction;
|
|
ASchemaNew: TAction;
|
|
ASaveSchemaAs: TAction;
|
|
ASaveSchema: TAction;
|
|
ALoadSchema: TAction;
|
|
AFileWriteConnections: TAction;
|
|
AFileReadConnections: TAction;
|
|
alMain: TActionList;
|
|
ILMain: TImageList;
|
|
IPSMain: TIniPropStorage;
|
|
MIRecent: TMenuItem;
|
|
MFile: TMenuItem;
|
|
MIReadConnections: TMenuItem;
|
|
MRUSchema: TMRUMenuManager;
|
|
MWriteConnections: TMenuItem;
|
|
MISchemaLoad: TMenuItem;
|
|
MISchemaSave: TMenuItem;
|
|
MISaveSchemaAs: TMenuItem;
|
|
MISchemaNew: TMenuItem;
|
|
MISep2: TMenuItem;
|
|
MIQuit: TMenuItem;
|
|
N1: TMenuItem;
|
|
MMain: TMainMenu;
|
|
fraEditor: TSchemaEditorFrame;
|
|
odConnection: TOpenDialog;
|
|
ODSchema: TOpenDialog;
|
|
SDSchema: TSaveDialog;
|
|
sdConnection: TSaveDialog;
|
|
TreeView1: TTreeView;
|
|
procedure AFileReadConnectionsExecute(Sender: TObject);
|
|
procedure AFileWriteConnectionsExecute(Sender: TObject);
|
|
procedure ALoadSchemaExecute(Sender: TObject);
|
|
procedure aQuitExecute(Sender: TObject);
|
|
procedure ASaveSchemaAsExecute(Sender: TObject);
|
|
procedure ASaveSchemaExecute(Sender: TObject);
|
|
procedure ASchemaNewExecute(Sender: TObject);
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure IPSMainRestoreProperties(Sender: TObject);
|
|
procedure IPSMainSaveProperties(Sender: TObject);
|
|
procedure MRUSchemaRecentFile(Sender: TObject; const AFileName: String);
|
|
private
|
|
FBaseCaption,
|
|
FFileName : String;
|
|
procedure DoSchemaChanged(Sender: TObject);
|
|
function SaveSchema : Boolean;
|
|
function SaveSchemaAs : Boolean;
|
|
function LoadSchema : Boolean;
|
|
Function CheckSave : Boolean;
|
|
Procedure LoadSchemaFile(const aFileName : String);
|
|
Procedure SaveSchemaFile(const aFileName : String);
|
|
Procedure SetCaption;
|
|
public
|
|
|
|
end;
|
|
|
|
var
|
|
MainForm: TMainForm;
|
|
|
|
implementation
|
|
|
|
|
|
{$R *.lfm}
|
|
|
|
uses sqldbrestbridge, sqldbrestini;
|
|
|
|
resourcestring
|
|
SSchemaChanged = 'Schema changed';
|
|
SSchemaChangedSave = 'The schema has changed. %sDo you wish to save your changes?';
|
|
SSaveSchema = 'Save schema';
|
|
SDoNotSaveSchema = 'Do not save schema';
|
|
SCancel = 'Cancel';
|
|
SNewFile = 'New schema';
|
|
|
|
{ TMainForm }
|
|
|
|
procedure TMainForm.AFileReadConnectionsExecute(Sender: TObject);
|
|
|
|
begin
|
|
With ODConnection do
|
|
if Execute then
|
|
fraEditor.LoadConnections(FileName);
|
|
end;
|
|
|
|
|
|
procedure TMainForm.AFileWriteConnectionsExecute(Sender: TObject);
|
|
begin
|
|
With SDConnection do
|
|
if Execute then
|
|
fraEditor.SaveConnections(FileName);
|
|
end;
|
|
|
|
procedure TMainForm.ALoadSchemaExecute(Sender: TObject);
|
|
begin
|
|
if CheckSave then
|
|
LoadSchema;
|
|
end;
|
|
|
|
procedure TMainForm.aQuitExecute(Sender: TObject);
|
|
begin
|
|
Close
|
|
end;
|
|
|
|
procedure TMainForm.ASaveSchemaAsExecute(Sender: TObject);
|
|
begin
|
|
SaveSchemaAs;
|
|
end;
|
|
|
|
procedure TMainForm.ASaveSchemaExecute(Sender: TObject);
|
|
begin
|
|
SaveSchema
|
|
end;
|
|
|
|
function TMainForm.SaveSchema : Boolean;
|
|
|
|
begin
|
|
if FFileName='' then
|
|
Result:=SaveSchemaAs
|
|
else
|
|
begin
|
|
SaveSchemaFile(FFileName);
|
|
Result:=True;
|
|
end;
|
|
end;
|
|
|
|
procedure TMainForm.DoSchemaChanged(Sender: TObject);
|
|
begin
|
|
SetCaption;
|
|
end;
|
|
|
|
function TMainForm.SaveSchemaAs : Boolean;
|
|
|
|
begin
|
|
with SDSchema do
|
|
begin
|
|
FileName:=Self.FFileName;
|
|
Result:=Execute;
|
|
if Result then
|
|
SaveSchemaFile(FileName);
|
|
end;
|
|
end;
|
|
|
|
function TMainForm.LoadSchema: Boolean;
|
|
begin
|
|
Result:= CheckSave;
|
|
if not Result then
|
|
exit;
|
|
with ODSchema do
|
|
begin
|
|
Result:=Execute;
|
|
if Result then
|
|
LoadSchemaFile(FileName);
|
|
end;
|
|
end;
|
|
|
|
function TMainForm.CheckSave: Boolean;
|
|
|
|
begin
|
|
Result:=Not fraEditor.SchemaModified;
|
|
if Result then
|
|
exit;
|
|
case QuestionDlg(SSchemaChanged, Format(SSchemaChangedSave, [LineEnding]), mtWarning, [mrYes, SSaveSchema, mrNo,
|
|
SDoNotSaveSchema, mrCancel, SCancel], 0) of
|
|
mrYes: Result:=SaveSchema;
|
|
mrNo: Result:=True;
|
|
mrCancel: Result:=False;
|
|
end;
|
|
end;
|
|
|
|
procedure TMainForm.LoadSchemaFile(const aFileName: String);
|
|
begin
|
|
fraEditor.LoadSchema(aFileName);
|
|
FFileName:=aFileName;
|
|
MRUSchema.AddToRecent(aFileName);
|
|
SetCaption;
|
|
end;
|
|
|
|
procedure TMainForm.SaveSchemaFile(const aFileName: String);
|
|
begin
|
|
FraEditor.SaveSchema(aFileName);
|
|
FFileName:=aFileName;
|
|
MRUSchema.AddToRecent(aFileName);
|
|
SetCaption;
|
|
end;
|
|
|
|
procedure TMainForm.SetCaption;
|
|
|
|
Var
|
|
S : String;
|
|
|
|
begin
|
|
S:=FFileName;
|
|
If (S='') then
|
|
S:=SNewFile;
|
|
if fraEditor.SchemaModified then
|
|
S:=S+'*';
|
|
Caption:=FBaseCaption+' ['+S+']';
|
|
end;
|
|
|
|
procedure TMainForm.ASchemaNewExecute(Sender: TObject);
|
|
begin
|
|
if CheckSave then
|
|
begin
|
|
fraEditor.ClearSchema;
|
|
FFileName:='';
|
|
SetCaption;
|
|
end;
|
|
end;
|
|
|
|
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
begin
|
|
CanClose:=CheckSave;
|
|
end;
|
|
|
|
procedure TMainForm.FormCreate(Sender: TObject);
|
|
|
|
Var
|
|
FN : String;
|
|
|
|
begin
|
|
FBaseCaption:=Caption;
|
|
FN:=GetAppConfigFile(False,False);
|
|
IPSMain.IniFileName:=FN;
|
|
IPSMain.Active:=True;
|
|
IPSMain.Restore;
|
|
MRUSchema.ShowRecentFiles;
|
|
fraEditor.OnSchemaChanged:=@DoSchemaChanged;
|
|
if Application.HasOption('c','connections') then
|
|
fraEditor.LoadConnections(Application.GetOptionValue('c','connections'));
|
|
if Application.HasOption('s','schema') then
|
|
LoadSchemaFile(Application.GetOptionValue('s','schema'))
|
|
else
|
|
SetCaption;
|
|
end;
|
|
|
|
procedure TMainForm.IPSMainRestoreProperties(Sender: TObject);
|
|
begin
|
|
fraEditor.LoadSession(IPSMain);
|
|
end;
|
|
|
|
procedure TMainForm.IPSMainSaveProperties(Sender: TObject);
|
|
begin
|
|
fraEditor.SaveSession(IPSMain);
|
|
end;
|
|
|
|
procedure TMainForm.MRUSchemaRecentFile(Sender: TObject; const AFileName: String);
|
|
begin
|
|
LoadSchemaFile(aFileName);
|
|
end;
|
|
|
|
end.
|
|
|