; 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