mirror of https://gitlab.com/basile.b/dexed.git
more clever usage of the ICEMultiDoc observer
- the notifications are used to create/delete a page.
- was not possible until the bug c1a0ed2799
.
This commit is contained in:
parent
bea6177ff6
commit
2d6eb412b4
|
@ -59,8 +59,6 @@ type
|
||||||
public
|
public
|
||||||
constructor create(aOwner: TComponent); override;
|
constructor create(aOwner: TComponent); override;
|
||||||
destructor destroy; override;
|
destructor destroy; override;
|
||||||
procedure addEditor;
|
|
||||||
procedure removeEditor(const aIndex: NativeInt);
|
|
||||||
procedure focusedEditorChanged;
|
procedure focusedEditorChanged;
|
||||||
//
|
//
|
||||||
procedure docNew(aDoc: TCESynMemo);
|
procedure docNew(aDoc: TCESynMemo);
|
||||||
|
@ -85,9 +83,8 @@ var
|
||||||
i: integer;
|
i: integer;
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
for i := 0 to ComponentCount-1 do
|
for i := 0 to ControlCount-1 do
|
||||||
if (Components[i] is TWinControl) then
|
Controls[i].Visible:= Value;
|
||||||
TWinControl(Components[i]).Visible:= Value;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$REGION Standard Comp/Obj------------------------------------------------------}
|
{$REGION Standard Comp/Obj------------------------------------------------------}
|
||||||
|
@ -116,8 +113,14 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TCEEditorWidget.destroy;
|
destructor TCEEditorWidget.destroy;
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
begin
|
begin
|
||||||
EntitiesConnector.removeObserver(self);
|
EntitiesConnector.removeObserver(self);
|
||||||
|
for i := 0 to PageControl.PageCount-1 do
|
||||||
|
if PageControl.Page[i].ControlCount > 0 then
|
||||||
|
if (PageControl.Controls[0] is TCESynMemo) then
|
||||||
|
PageControl.Controls[0].Free;
|
||||||
tokLst.Free;
|
tokLst.Free;
|
||||||
errLst.Free;
|
errLst.Free;
|
||||||
inherited;
|
inherited;
|
||||||
|
@ -142,14 +145,38 @@ end;
|
||||||
|
|
||||||
{$REGION ICEMultiDocObserver ---------------------------------------------------}
|
{$REGION ICEMultiDocObserver ---------------------------------------------------}
|
||||||
procedure TCEEditorWidget.docNew(aDoc: TCESynMemo);
|
procedure TCEEditorWidget.docNew(aDoc: TCESynMemo);
|
||||||
|
var
|
||||||
|
sheet: TCEEditorPage;
|
||||||
begin
|
begin
|
||||||
|
sheet := TCEEditorPage.Create(self);
|
||||||
|
sheet.PageControl := PageControl;
|
||||||
|
//
|
||||||
|
aDoc.Align := alClient;
|
||||||
|
aDoc.Parent := sheet;
|
||||||
|
//
|
||||||
|
aDoc.OnKeyDown := @memoKeyDown;
|
||||||
|
aDoc.OnKeyUp := @memoKeyDown;
|
||||||
|
aDoc.OnKeyPress := @memoKeyPress;
|
||||||
|
aDoc.OnMouseDown := @memoMouseDown;
|
||||||
|
aDoc.OnMouseMove := @memoMouseMove;
|
||||||
|
aDoc.OnClickLink := @memoCtrlClick;
|
||||||
|
//
|
||||||
|
fDoc := aDoc;
|
||||||
|
pageControl.ActivePage := sheet;
|
||||||
|
focusedEditorChanged;
|
||||||
|
beginUpdateByDelay;
|
||||||
|
UpdateByEvent;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.docClosing(aDoc: TCESynMemo);
|
procedure TCEEditorWidget.docClosing(aDoc: TCESynMemo);
|
||||||
|
var
|
||||||
|
sheet: TWinControl;
|
||||||
begin
|
begin
|
||||||
if fDoc <> aDoc then exit;
|
if fDoc <> aDoc then exit;
|
||||||
|
sheet := fDoc.Parent;
|
||||||
|
fDoc.Parent := nil;
|
||||||
fDoc := nil;
|
fDoc := nil;
|
||||||
PageControl.Update;
|
if sheet <> nil then sheet.Free;
|
||||||
UpdateByEvent;
|
UpdateByEvent;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -221,34 +248,6 @@ begin
|
||||||
Value := Value[1..length(Value)-20];
|
Value := Value[1..length(Value)-20];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.addEditor;
|
|
||||||
var
|
|
||||||
sheet: TCEEditorPage;
|
|
||||||
memo: TCESynMemo;
|
|
||||||
begin
|
|
||||||
sheet := TCEEditorPage.Create(self);
|
|
||||||
memo := TCESynMemo.Create(sheet);
|
|
||||||
sheet.PageControl := PageControl;
|
|
||||||
//
|
|
||||||
memo.Align := alClient;
|
|
||||||
memo.Parent := sheet;
|
|
||||||
//
|
|
||||||
memo.OnKeyDown := @memoKeyDown;
|
|
||||||
memo.OnKeyUp := @memoKeyDown;
|
|
||||||
memo.OnKeyPress := @memoKeyPress;
|
|
||||||
memo.OnMouseDown := @memoMouseDown;
|
|
||||||
memo.OnMouseMove := @memoMouseMove;
|
|
||||||
memo.OnClickLink := @memoCtrlClick;
|
|
||||||
//
|
|
||||||
pageControl.ActivePage := sheet;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEEditorWidget.removeEditor(const aIndex: NativeInt);
|
|
||||||
begin
|
|
||||||
editor[aIndex].OnChange:= nil;
|
|
||||||
pageControl.Pages[aIndex].Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEEditorWidget.memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure TCEEditorWidget.memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
begin
|
begin
|
||||||
UpdateByEvent;
|
UpdateByEvent;
|
||||||
|
|
|
@ -989,8 +989,7 @@ end;
|
||||||
|
|
||||||
procedure TCEMainForm.newFile;
|
procedure TCEMainForm.newFile;
|
||||||
begin
|
begin
|
||||||
if fEditWidg = nil then exit;
|
TCESynMemo.Create(nil);
|
||||||
fEditWidg.addEditor;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCEMainForm.findFile(const aFilename: string): NativeInt;
|
function TCEMainForm.findFile(const aFilename: string): NativeInt;
|
||||||
|
@ -1017,10 +1016,9 @@ begin
|
||||||
fEditWidg.PageControl.PageIndex := i;
|
fEditWidg.PageControl.PageIndex := i;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
i := fEditWidg.editorCount;
|
TCESynMemo.Create(nil);
|
||||||
fEditWidg.addEditor;
|
if fDoc = nil then exit;
|
||||||
fEditWidg.editor[i].loadFromFile(aFilename);
|
fDoc.loadFromFile(aFilename);
|
||||||
fEditWidg.focusedEditorChanged;
|
|
||||||
fFileMru.Insert(0, aFilename);
|
fFileMru.Insert(0, aFilename);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -1148,7 +1146,8 @@ begin
|
||||||
'The latest mdofifications are not saved, continue ?') = mrCancel
|
'The latest mdofifications are not saved, continue ?') = mrCancel
|
||||||
then exit;
|
then exit;
|
||||||
//
|
//
|
||||||
fEditWidg.removeEditor(fEditWidg.editorIndex);
|
fDoc.Free;
|
||||||
|
//fEditWidg.removeEditor(fEditWidg.editorIndex);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMainForm.actFileSaveAllExecute(Sender: TObject);
|
procedure TCEMainForm.actFileSaveAllExecute(Sender: TObject);
|
||||||
|
|
Loading…
Reference in New Issue