1
1
{%MainUnit gtk2int.pas}
2
{ $Id: gtk2lclintf.inc 38822 2012-09-25 03:34:08Z paul $ }
2
{ $Id: gtk2lclintf.inc 41477 2013-05-31 15:32:57Z mattias $ }
3
3
{******************************************************************************
4
4
All GTK2 interface communication implementations.
5
5
Initial Revision : Sat Jan 17 19:00:00 2004
891
891
function TGtk2WidgetSet.AskUser(const DialogCaption, DialogMessage: string; DialogType:
892
LongInt; Buttons: TDialogButtons; HelpCtx: Longint): LongInt;
892
LongInt; Buttons: TDialogButtons; HelpCtx: Longint): LongInt;
895
895
ButtonResults : array[mrNone..mrYesToAll] of Longint = (
896
896
-1, idButtonOK, idButtonCancel, idButtonAbort, idButtonRetry,
897
idButtonIgnore, idButtonYes,idButtonNo, idButtonAll, idButtonNoToAll,
897
idButtonIgnore, idButtonYes, idButtonNo, idButtonAll, idButtonNoToAll,
898
898
idButtonYesToAll);
903
901
Dialog: PGtkWidget;
904
ADialogResult: Integer;
905
GtkDialogType: TGtkMessageType;
906
Btns: TGtkButtonsType;
910
MainList,ChildList: PGList;
903
function ResponseID(const AnID: Integer): Integer;
906
idButtonOK : Result := GTK_RESPONSE_OK;
907
idButtonCancel : Result := GTK_RESPONSE_CANCEL;
908
idButtonHelp : Result := GTK_RESPONSE_HELP;
909
idButtonYes : Result := GTK_RESPONSE_YES;
910
idButtonNo : Result := GTK_RESPONSE_NO;
911
idButtonClose : Result := GTK_RESPONSE_CLOSE;
912
idButtonAbort : Result := GTK_RESPONSE_REJECT;
913
idButtonRetry : Result := GTK_RESPONSE_LCL_RETRY;
914
idButtonIgnore : Result := GTK_RESPONSE_LCL_IGNORE;
915
idButtonAll : Result := GTK_RESPONSE_LCL_ALL;
916
idButtonNoToAll : Result := GTK_RESPONSE_LCL_NOTOALL;
917
idButtonYesToAll : Result := GTK_RESPONSE_LCL_YESTOALL;
915
921
procedure CreateButton(const ALabel : String; const AResponse: Integer;
916
922
const AImageHint: Integer = -1);
955
function ResponseID(const AnID: Integer): Integer;
958
idButtonOK : Result := GTK_RESPONSE_OK;
959
idButtonCancel : Result := GTK_RESPONSE_CANCEL;
960
idButtonHelp : Result := GTK_RESPONSE_HELP;
961
idButtonYes : Result := GTK_RESPONSE_YES;
962
idButtonNo : Result := GTK_RESPONSE_NO;
963
idButtonClose : Result := GTK_RESPONSE_CLOSE;
964
idButtonAbort : Result := GTK_RESPONSE_REJECT;
965
idButtonRetry : Result := GTK_RESPONSE_LCL_RETRY;
966
idButtonIgnore : Result := GTK_RESPONSE_LCL_IGNORE;
967
idButtonAll : Result := GTK_RESPONSE_LCL_ALL;
968
idButtonNoToAll : Result := GTK_RESPONSE_LCL_NOTOALL;
969
idButtonYesToAll : Result := GTK_RESPONSE_LCL_YESTOALL;
964
GtkDialogType: TGtkMessageType;
966
DefaultID, CancelID: Integer;
968
MainList,ChildList: PGList;
972
DlgBtn: TDialogButton;
973
ADialogResult: Integer;
974
Btns: TGtkButtonsType;
973
976
Result := mrNone;
985
988
Btns := GTK_BUTTONS_NONE;
987
991
for X := 0 to Buttons.Count - 1 do
989
if Buttons[X].Default then
994
if (Buttons.DefaultButton=DlgBtn)
995
or ((Buttons.DefaultButton=nil) and DlgBtn.Default) then
997
if (Buttons.CancelButton=DlgBtn)
998
or ((Buttons.CancelButton=nil) and DlgBtn.Cancel)
1001
ADialogResult := DlgBtn.ModalResult;
992
1004
if (ADialogResult = mrNone) and
993
(Buttons[X].ModalResult in [mrCancel, mrAbort, mrIgnore,
994
mrNo, mrNoToAll]) then
1005
(Buttons[X].ModalResult in [mrCancel, mrAbort, mrIgnore, mrNo, mrNoToAll])
995
1007
ADialogResult := Buttons[X].ModalResult;
1044
1055
if GTK_IS_BUTTON(ChildList^.Data) then
1046
1057
Btn := PGtkButton(ChildList^.Data);
1058
DlgBtn := Buttons[BtnIdx];
1049
BtnResult:=Buttons[BtnIdx].ModalResult;
1061
BtnResult:=DlgBtn.ModalResult;
1050
1062
if (BtnResult>=Low(ButtonResults)) and (BtnResult<=High(ButtonResults)) then
1051
BtnID := ButtonResults[Buttons[BtnIdx].ModalResult];
1052
if BtnID = idButtonCancel then
1053
gtk_object_set_data(PGtkObject(Dialog), 'modal_result', Pointer(idButtonCancel));
1063
BtnID := ButtonResults[DlgBtn.ModalResult];
1064
if (BtnIdx=CancelID) then
1065
g_object_set_data(PGObject(Dialog), 'modal_result', Pointer(PtrInt(DlgBtn.ModalResult)));
1055
X := Buttons[BtnIdx].ModalResult;
1056
gtk_object_set_data(PGtkObject(Btn), 'modal_result',
1067
X := DlgBtn.ModalResult;
1068
g_object_set_data(PGObject(Btn), 'modal_result',
1057
1069
{%H-}Pointer(PtrInt(X)));
1059
1071
g_signal_connect(PGtkObject(Btn), 'clicked',
1062
1074
if DefaultID = BtnIdx then
1064
1076
gtk_dialog_set_default_response(PGtkDialog(Dialog), ResponseID(BtnID));
1065
X := Buttons[BtnIdx].ModalResult;
1066
gtk_object_set_data(PGtkObject(Dialog), 'modal_result',
1067
{%H-}Pointer(PtrInt(X)));
1077
X := DlgBtn.ModalResult;
1079
g_object_set_data(PGObject(Dialog), 'modal_result',
1080
{%H-}Pointer(PtrInt(X)));