{%MainUnit fpguiint.pp} {****************************************************************************** All FPGUI interface communication implementations. Initial Revision : Sun Nov 23 23:53:53 2003 !! Keep alphabetical !! Support routines go to gtkproc.pp ****************************************************************************** Implementation ****************************************************************************** ***************************************************************************** This file is part of the Lazarus Component Library (LCL) See the file COPYING.modifiedLGPL.txt, included in this distribution, for details about the license. ***************************************************************************** } //##apiwiz##sps## // Do not remove const IdButtonToFPGuiStandardButton: array[idButtonOK..idButtonShield] of TfpgMsgDlgBtn = ( { idButtonOk } mbOK, { idButtonCancel } mbCancel, { idButtonHelp } mbHelp, { idButtonYes } mbYes, { idButtonNo } mbNo, { idButtonClose } mbClose, { idButtonAbort } mbAbort, { idButtonRetry } mbRetry, { idButtonIgnore } mbIgnore, { idButtonAll } mbAll, { idButtonYesToAll } mbYesToAll, { idButtonNoToAll } mbNoToAll, { idButtonOpen } mbNoButton, { idButtonSave } mbNoButton, { idButtonShield } mbNoButton ); {------------------------------------------------------------------------------ function FontCanUTF8(Font: HFont): boolean; True if font recognizes Unicode UTF8 encoding. FPGUI supports only Unicode ------------------------------------------------------------------------------} function TFpGuiWidgetSet.FontCanUTF8(Font: HFont): boolean; begin Result := True; end; function TFpGuiWidgetSet.PromptUser(const DialogCaption, DialogMessage: String; DialogType: longint; Buttons: PLongint; ButtonCount, DefaultIndex, EscapeResult: Longint): Longint; var btns: TfpgMsgDlgButtons; BtnIdx, BtnID: LongInt; ResultBtn: TfpgMsgDlgBtn; function ResponseMappingfpGUItoLCL(const AResultBtn: TfpgMsgDlgBtn): Integer; begin { LCL is so confusing with modal results, button types, button results and Integer/LongInt as possible return results in various location is the LCL. I based the following mapping on trial-and-error with LCL-GTK2, and a best guess. } case AResultBtn of mbNoButton: Result := idButtonBase; // ??? mbOK: Result := idButtonOK; mbCancel: Result := idButtonCancel; mbYes: Result := idButtonYes; mbNo: Result := idButtonNo; mbAbort: Result := idButtonAbort; mbRetry: Result := idButtonRetry; mbIgnore: Result := idButtonIgnore; mbAll: Result := idButtonAll; mbNoToAll: Result := idButtonNoToAll; mbYesToAll: Result := idButtonYesToAll; mbHelp: Result := idButtonHelp; mbClose: Result := idButtonClose; end; end; begin ResultBtn := mbOK; btns := []; for BtnIdx := 0 to ButtonCount-1 do begin BtnID := Buttons[BtnIdx]; if (BtnID >= Low(IdButtonToFPGuiStandardButton)) and (BtnID <= High(IdButtonToFPGuiStandardButton)) and (IdButtonToFPGuiStandardButton[BtnID] <> mbNoButton) then Include(btns, IdButtonToFPGuiStandardButton[BtnID]) else btns := [mbOK]; end; case DialogType of idDialogWarning: ResultBtn := TfpgMessageDialog.Warning(DialogCaption, DialogMessage, btns); idDialogError: ResultBtn := TfpgMessageDialog.Critical(DialogCaption, DialogMessage, btns); idDialogInfo: ResultBtn :=TfpgMessageDialog.Information(DialogCaption, DialogMessage, btns); idDialogConfirm: ResultBtn := TfpgMessageDialog.Question(DialogCaption, DialogMessage, btns); else begin fpg_dialogs.ShowMessage(DialogMessage, DialogCaption); end; end; Result := ResponseMappingfpGUItoLCL(ResultBtn); end; {------------------------------------------------------------------------------ Function: RawImage_QueryDescription Params: AFlags: ADesc: Returns: ------------------------------------------------------------------------------} //function TFpguiWidgetSet.RawImage_QueryDescription(AFlags: TRawImageQueryFlags; var ADesc: TRawImageDescription): Boolean; //begin // // override only when queried formats are different from screen description //end; //##apiwiz##eps## // Do not remove, no wizard declaration after this line