; Module/File: Dialog_About_4.pb
; Function: Standard-modal-About-Dialog (complete) - Linux gtk3
; Author: Omi
; Date: Sep. 05, 2014
; Version: 0.2, set parent
; Target Compiler: PureBasic 5.40
; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni
;--------------------------------------------------------------
EnableExplicit
ImportC ""
gtk_about_dialog_new()
gtk_about_dialog_set_program_name(*about, name.p-utf8)
gtk_about_dialog_set_version(*about, version.p-utf8)
gtk_about_dialog_set_copyright(*about, copyright.p-utf8)
gtk_about_dialog_set_comments(*about, comments.p-utf8)
gtk_about_dialog_set_license(*about, license.p-utf8)
gtk_about_dialog_set_website(*about, website.p-utf8)
gtk_about_dialog_set_website_label(*about, website_label.p-utf8)
gtk_about_dialog_set_logo(*about, *logo)
gtk_about_dialog_add_credit_section(*about, section_name.p-utf8, *people)
gtk_about_dialog_set_documenters(*about, *documenters)
gtk_about_dialog_set_authors(*about, *authors)
gtk_about_dialog_set_translator_credits(*about, translator_credits.p-utf8)
EndImport
UsePNGImageDecoder()
; object variables
#MainWin= 0
#Exp1 = 0
#InfoImage= 0
Procedure.s PbToUtf8(SUni.s)
Protected *gMem= AllocateMemory(StringByteLength(SUni, #PB_Unicode) + 2)
PokeS(*gMem, SUni, -1, #PB_UTF8)
Protected.s UTF8= PeekS(*gMem)
FreeMemory(*gMem)
ProcedureReturn UTF8
EndProcedure
Global.l gEvent, gQuit
;Fill string-arrays in Utf8 ...
Global Dim AboutSupply.s(4); credits list
AboutSupply(0)= PbToUtf8("Fetch Jägermeister")
AboutSupply(1)= PbToUtf8("Wait Ress")
AboutSupply(2)= PbToUtf8("Garçon")
AboutSupply(3)= PbToUtf8("Veggie Tary")
AboutSupply(4)= #Null$
Global Dim AboutAuthors.s(4); authors list
AboutAuthors(0)= PbToUtf8("Pure Proggi")
AboutAuthors(1)= PbToUtf8("Assem Bler")
AboutAuthors(2)= PbToUtf8("Ate Visba")
AboutAuthors(3)= PbToUtf8(~"Fritz Eierschale")
AboutAuthors(4)= #Null$
Global Dim AboutDokumenters.s(4); documenters list
AboutDokumenters(0)= PbToUtf8("Canot Rite")
AboutDokumenters(1)= PbToUtf8("Ate Word")
AboutDokumenters(2)= PbToUtf8("Watar Letters")
AboutDokumenters(3)= PbToUtf8("Canned Read")
AboutDokumenters(4)= #Null$
Procedure ShowAbout(*pixbuf, parent)
Protected *about
Protected.l Ret
Protected.s S= ~"Demo for full 'about-dialog'.\nFull features with embedded icon, authors, documeters, \ntranslators, copyright, website, license!"
*about= gtk_about_dialog_new()
gtk_window_set_transient_for_(*about, WindowID(parent))
gtk_about_dialog_set_program_name(*about, "gtk3 - full API-about")
gtk_about_dialog_set_version(*about, "v1.0")
gtk_about_dialog_set_copyright(*about, "(c) by Charly Bauer (Omi)")
gtk_about_dialog_set_comments(*about, S)
gtk_about_dialog_set_license(*about, ~"Licensed as Freeware.\nDo what you want with it.")
gtk_about_dialog_set_website(*about, "http://www.chabba.de/LinuxAPI.html")
gtk_about_dialog_set_website_label(*about, "PureBasic Linux API Library")
gtk_about_dialog_add_credit_section(*about, "Beer + Food Support 😋", @AboutSupply())
gtk_about_dialog_set_authors(*about, @AboutAuthors())
gtk_about_dialog_set_documenters(*about, @AboutDokumenters())
gtk_about_dialog_set_translator_credits(*about, ~"Transi Later\nParler Français")
If *pixbuf
gtk_about_dialog_set_logo(*about, *pixbuf)
EndIf
Ret= gtk_dialog_run_(*about); i.e. #GTK_RESPONSE_CANCEL = -6, #GTK_RESPONSE_DELETE_EVENT = -4
Debug Ret; direct Debug show wrong int-Value at 64-Bit
gtk_widget_destroy_(*about)
EndProcedure
If OpenWindow(#MainWin, 300, 200, 400, 300, "about-dialog w. embedded icon", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CatchImage(#InfoImage, ?InfoIcon)
ShowAbout(ImageID(#InfoImage), #MainWin)
EndIf
Repeat
gEvent= WaitWindowEvent()
Select gEvent
Case #PB_Event_CloseWindow
gQuit= #True
EndSelect
Until gQuit
EndIf
DataSection
;change to existing 48x48-icon ...
InfoIcon: : IncludeBinary "/usr/share/icons/default.kde4/48x48/apps/preferences-desktop-screensaver.png"; change to existing 48x48-icon
EndDataSection
; IDE Options = PureBasic 5.46 LTS Beta 2 (Linux - x86)
; CursorPosition = 81
; FirstLine = 27
; Folding = -
; EnableUnicode
; EnableXP