From 690f5e6d29d1c85c4be72638eb22843964c2f512 Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Fri, 24 Apr 2015 08:21:28 +0000 Subject: All non-working stuff moved from trunk git-svn-id: http://svn.miranda-ng.org/main/trunk@13071 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/!NotAdopted/Chess4Net/ModalForm.pas | 519 ---------------------------- 1 file changed, 519 deletions(-) delete mode 100644 plugins/!NotAdopted/Chess4Net/ModalForm.pas (limited to 'plugins/!NotAdopted/Chess4Net/ModalForm.pas') diff --git a/plugins/!NotAdopted/Chess4Net/ModalForm.pas b/plugins/!NotAdopted/Chess4Net/ModalForm.pas deleted file mode 100644 index 165fee6b86..0000000000 --- a/plugins/!NotAdopted/Chess4Net/ModalForm.pas +++ /dev/null @@ -1,519 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// All code below is exclusively owned by author of Chess4Net - Pavel Perminov -// (packpaul@mail.ru, packpaul1@gmail.com). -// Any changes, modifications, borrowing and adaptation are a subject for -// explicit permition from the owner. - -unit ModalForm; - -interface - -uses - Forms, TntForms, Dialogs, Classes, Windows, Controls; - -type - TModalForm = class; - TModalFormClass = class of TModalForm; - - TModalFormID = (mfNone, mfMsgClose, mfMsgLeave, mfMsgAbort, mfMsgResign, - mfMsgDraw, mfMsgTakeBack, mfMsgAdjourn, mfConnecting, mfGameOptions, - mfLookFeel, mfCanPause, mfContinue, mfIncompatible, mfDontShowDlg -{$IFDEF SKYPE} - , mfSelectSkypeContact -{$ENDIF} -{$IFDEF MIRANDA} - , mfTransmitting, mfTransmitGame -{$ENDIF} - ); - - TModalFormHandler = procedure(modSender: TModalForm; modID: TModalFormID) of object; - - TDialogs = class - private - IDCount: array[TModalFormID] of word; - frmList: TList; - function GetShowing: boolean; - protected - RHandler: TModalFormHandler; - public - Owner: TForm; - constructor Create(Owner: TForm; Handler: TModalFormHandler); - destructor Destroy; override; - procedure MessageDlg(const wstrMsg: WideString; DlgType: TMsgDlgType; - Buttons: TMsgDlgButtons; msgDlgID: TModalFormID); - function CreateDialog(modalFormClass: TModalFormClass): TModalForm; - procedure SetShowing(msgDlg: TModalForm); - procedure UnsetShowing(msgDlg: TModalForm); - function InFormList(frm: TForm): boolean; - procedure BringToFront; - procedure MoveForms(dx, dy: integer); - procedure CloseNoneDialogs; - - class procedure ShowMessage(const wstrMsg: WideString); - class function HasStayOnTopOwners: boolean; - - property Showing: boolean read GetShowing; - end; - - - TModalForm = class(TTntForm) - procedure FormShow(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure ButtonClick(Sender: TObject); - private - GenFormShow: TNotifyEvent; - GenFormClose: TCloseEvent; - protected - RHandler: TModalFormHandler; - dlgOwner: TDialogs; - - constructor Create(dlgOwner: TDialogs; modHandler: TModalFormHandler); reintroduce; overload; virtual; - - function GetHandle: hWnd; virtual; - function GetEnabled_: boolean; virtual; - procedure SetEnabled_(flag: boolean); virtual; - function GetLeft_: integer; virtual; - procedure SetLeft_(x: integer); virtual; - function GetTop_: integer; virtual; - procedure SetTop_(y: integer); virtual; - - function GetModalID: TModalFormID; virtual; - - function RGetModalResult: TModalResult; virtual; - procedure RSetModalResult(Value: TModalResult); virtual; - - public - constructor Create(Owner: TForm; modHandler: TModalFormHandler = nil); reintroduce; overload; virtual; - - procedure Show; virtual; - procedure Close; virtual; - - property Handle: hWnd read GetHandle; - property Enabled: boolean read GetEnabled_ write SetEnabled_; - property Left: integer read GetLeft_ write SetLeft_; - property Top: integer read GetTop_ write SetTop_; - - property ModalResult: TModalResult read RGetModalResult write RSetModalResult; - end; - -implementation - -uses - SysUtils, StdCtrls, - DialogUnit, GlobalsUnit; - -var - g_lstDialogs: TList = nil; - -//////////////////////////////////////////////////////////////////////////////// -// TModalForm - -procedure TModalForm.FormShow(Sender: TObject); -var - frmOwner: TForm; - selfForm: TForm; - - procedure NCorrectIfOutOfScreen(var iLeft, iTop: integer); - var - R: TRect; - M: TMonitor; - begin - if (Assigned(frmOwner)) then - begin - M := Screen.MonitorFromRect(frmOwner.BoundsRect); - R := M.WorkareaRect; - end - else - R := Screen.WorkAreaRect; - - if ((iLeft + selfForm.Width) > R.Right) then - iLeft := R.Right - selfForm.Width; - if (iLeft < R.Left) then - iLeft := R.Left; - if ((iTop + selfForm.Height) > R.Bottom) then - iTop := R.Bottom - selfForm.Height; - if (iTop < R.Top) then - iTop := R.Top; - end; - -var - iWidth, iHeight: integer; - iLeft, iTop: integer; -begin // TModalForm.FormShow - selfForm := Sender as TForm; - frmOwner := nil; - - if (Assigned(Owner)) then - begin - frmOwner := (Owner as TForm); - iLeft := frmOwner.Left; - iTop := frmOwner.Top; - iWidth := frmOwner.Width; - iHeight := frmOwner.Height; - end - else - begin - iLeft := 0; - iTop := 0; - iWidth := Screen.Width; - iHeight := Screen.Height; - end; - - iLeft := iLeft + (iWidth - selfForm.Width) div 2; - iTop := iTop + (iHeight - selfForm.Height) div 2; - - NCorrectIfOutOfScreen(iLeft, iTop); - - selfForm.Left := iLeft; - selfForm.Top := iTop; - - if (Assigned(GenFormShow)) then - GenFormShow(Sender); -end; - - -procedure TModalForm.FormClose(Sender: TObject; var Action: TCloseAction); -begin - if Assigned(GenFormClose) then - GenFormClose(Sender, Action); - if Assigned(dlgOwner) then - dlgOwner.UnsetShowing(self); - if fsModal in FormState then - exit; - if (Assigned(RHandler)) then - RHandler(self, GetModalID); - Action := caFree; -end; - - -procedure TModalForm.ButtonClick(Sender: TObject); -begin - if (fsModal in FormState) then - exit; - Close; -end; - - -constructor TModalForm.Create(Owner: TForm; modHandler: TModalFormHandler); -var - i: integer; -begin - if (Assigned(Owner)) then - FormStyle := Owner.FormStyle; - - inherited Create(Owner); - RHandler := modHandler; - - GenFormShow := OnShow; - GenFormClose := OnClose; - OnShow := FormShow; - OnClose := FormClose; - - for i := 0 to (ComponentCount - 1) do - begin - if (Components[i] is TButton) then - (Components[i] as TButton).OnClick := ButtonClick; - end; -end; - -constructor TModalForm.Create(dlgOwner: TDialogs; modHandler: TModalFormHandler); -begin - self.dlgOwner := dlgOwner; - Create(dlgOwner.Owner, modHandler); - dlgOwner.SetShowing(self); -end; - - -function TModalForm.GetModalID : TModalFormID; -begin - Result := mfNone; -end; - - -function TModalForm.GetHandle: hWnd; -begin - Result := inherited Handle; -end; - - -function TModalForm.GetEnabled_: boolean; -begin - Result := inherited Enabled; -end; - - -procedure TModalForm.SetEnabled_(flag: boolean); -begin - inherited Enabled := flag; -end; - - -procedure TModalForm.Show; -begin - inherited Show; -end; - - -procedure TModalForm.Close; -begin - inherited Close; -end; - - -function TModalForm.GetLeft_: integer; -begin - Result := inherited Left; -end; - - -procedure TModalForm.SetLeft_(x: integer); -begin - inherited Left := x; -end; - - -function TModalForm.GetTop_: integer; -begin - Result := inherited Top; -end; - - -procedure TModalForm.SetTop_(y: integer); -begin - inherited Top := y; -end; - - -function TModalForm.RGetModalResult: TModalResult; -begin - Result := inherited ModalResult; -end; - -procedure TModalForm.RSetModalResult(Value: TModalResult); -begin - inherited ModalResult := Value; -end; - -//////////////////////////////////////////////////////////////////////////////// -// TDialogs - -constructor TDialogs.Create(Owner: TForm; Handler: TModalFormHandler); -var - i: TModalFormID; -begin - inherited Create; - - self.Owner := Owner; - self.RHandler := Handler; - frmList := TList.Create; - for i := Low(TModalFormID) to High(TModalFormID) do - IDCount[i] := 0; - - if (not Assigned(g_lstDialogs)) then - g_lstDialogs := TList.Create; - g_lstDialogs.Add(self); -end; - - -destructor TDialogs.Destroy; -var - i: integer; - ModalForm: TModalForm; -begin - if (Assigned(g_lstDialogs)) then - begin - g_lstDialogs.Remove(self); - if (g_lstDialogs.Count = 0) then - FreeAndNil(g_lstDialogs); - end; - - for i := 0 to frmList.Count - 1 do - begin - ModalForm := frmList[i]; - ModalForm.RHandler := nil; - ModalForm.dlgOwner := nil; -// ModalForm.Release; - ModalForm.Free; - end; - - inherited; -end; - - -function TDialogs.GetShowing: boolean; -var - i: TModalFormID; -begin - Result := TRUE; - for i := Low(TModalFormID) to High(TModalFormID) do - begin - if IDCount[i] > 0 then - exit; - end; - Result := FALSE; -end; - - -procedure TDialogs.UnsetShowing(msgDlg: TModalForm); -var - i: integer; -begin - dec(IDCount[msgDlg.GetModalID]); - - if (Assigned(msgDlg)) then - begin - for i := 0 to frmList.Count - 1 do - begin - if (TModalForm(frmList[i]).Handle = msgDlg.Handle) then - begin - frmList.Delete(i); - break; - end; - end; // for - end; - - if (frmList.Count > 0) then - begin - TModalForm(frmList.Last).Enabled := TRUE; - TModalForm(frmList.Last).SetFocus; - end - else - begin - if (Assigned(Owner)) then - begin - Owner.Enabled := TRUE; - Owner.SetFocus; - end; - end; -end; - - -function TDialogs.InFormList(frm: TForm): boolean; -var - i: integer; -begin - for i := 0 to frmList.Count - 1 do - begin - if TModalForm(frmList[i]).Handle = frm.Handle then - begin - Result := TRUE; - exit; - end; - end; - Result := FALSE; -end; - - -procedure TDialogs.MessageDlg(const wstrMsg: WideString; DlgType: TMsgDlgType; - Buttons: TMsgDlgButtons; msgDlgID: TModalFormID); -var - DialogForm: TDialogForm; -begin - if ((msgDlgID <> mfNone) and (IDCount[msgDlgID] > 0)) then - exit; - DialogForm := TDialogForm.Create(self, wstrMsg, DlgType, Buttons, msgDlgID, RHandler, - HasStayOnTopOwners); - DialogForm.Caption := DIALOG_CAPTION; - SetShowing(DialogForm); - DialogForm.Show; - frmList.Add(DialogForm); -end; - - -function TDialogs.CreateDialog(modalFormClass: TModalFormClass): TModalForm; -begin - Result := modalFormClass.Create(self, RHandler); - frmList.Add(Result); -end; - - -procedure TDialogs.SetShowing(msgDlg: TModalForm); -begin - inc(IDCount[msgDlg.GetModalID]); - if (frmList.Count > 0) then - TModalForm(frmList.Last).Enabled := FALSE; -end; - - -procedure TDialogs.BringToFront; -var - i: integer; -begin - if frmList.Count = 0 then - exit; - for i := 0 to frmList.Count - 1 do - TModalForm(frmList[i]).Show; - TModalForm(frmList.Last).SetFocus; -end; - - -procedure TDialogs.MoveForms(dx, dy: integer); -var - i: integer; -begin - for i := 0 to frmList.Count - 1 do - begin - with TModalForm(frmList[i]) do - begin - Left := Left + dx; - Top := Top + dy; - end; - end; -end; - - -procedure TDialogs.CloseNoneDialogs; -var - i: integer; - Dlg: TModalForm; -begin - i := frmList.Count - 1; - while (i >= 0) do - begin - Dlg := frmList[i]; - if (Dlg.GetModalID = mfNone) then - Dlg.Close; - dec(i); - end; -end; - - -class function TDialogs.HasStayOnTopOwners: boolean; -var - i: integer; - Dlgs: TDialogs; -begin - Result := FALSE; - if (not Assigned(g_lstDialogs)) then - exit; - - for i := 0 to g_lstDialogs.Count - 1 do - begin - Dlgs := g_lstDialogs[i]; - Result := (Assigned(Dlgs) and Assigned(Dlgs.Owner) and - (Dlgs.Owner.FormStyle = fsStayOnTop)); - if (Result) then - exit; - end; // for -end; - - -class procedure TDialogs.ShowMessage(const wstrMsg: WideString); -var - DummyOwner: TForm; - DummyHandler: TModalFormHandler; -begin - DummyOwner := nil; - DummyHandler := nil; - - with TDialogForm.Create(DummyOwner, wstrMsg, mtCustom, [mbOk], mfNone, DummyHandler, - HasStayOnTopOwners) do - try - ShowModal; - finally - Release; - end; -end; - -end. - -- cgit v1.2.3