; Module/File: Dialog_About_5.pb ; Function: Standard-non-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) g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *data, destroy= 0, flags= 0) As "g_signal_connect_data" 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 Global *gAbout ;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$ ProcedureC Callback_ShowAbout(*widget.GtkWidget, user_data.l) Debug user_data; here's the close signal If user_data = #GTK_RESPONSE_CANCEL Or user_data = #GTK_RESPONSE_DELETE_EVENT gtk_widget_destroy_(*widget); close & destroy. Also possible is gtk_widget_hide(), gtk_widget_show() *gAbout= #Null EndIf EndProcedure Procedure ShowAbout(*pixbuf, parent) Protected.l Ret Protected.s S= ~"Demo for full 'about-dialog'.\nFull features with embedded icon, authors, documeters, \ntranslators, copyright, website, license!" *gAbout= gtk_about_dialog_new() gtk_window_set_transient_for_(*gAbout, WindowID(parent)) gtk_about_dialog_set_program_name(*gAbout, "gtk3 - full API-about") gtk_about_dialog_set_version(*gAbout, "v1.0") gtk_about_dialog_set_copyright(*gAbout, "(c) by Charly Bauer (Omi)") gtk_about_dialog_set_comments(*gAbout, S) gtk_about_dialog_set_license(*gAbout, ~"Licensed as Freeware.\nDo what you want with it.") gtk_about_dialog_set_website(*gAbout, "http://www.chabba.de/LinuxAPI.html") gtk_about_dialog_set_website_label(*gAbout, "PureBasic Linux API Library") gtk_about_dialog_add_credit_section(*gAbout, "Beer + Food Support 😋", @AboutSupply()) gtk_about_dialog_set_authors(*gAbout, @AboutAuthors()) gtk_about_dialog_set_documenters (*gAbout, @AboutDokumenters()) gtk_about_dialog_set_translator_credits(*gAbout, ~"Transi Later\nParler Français") If *pixbuf gtk_about_dialog_set_logo(*gAbout, *pixbuf) EndIf g_signal_connect(*gAbout, "response", @Callback_ShowAbout(), *gAbout); connect signal for callback on close & destroy gtk_widget_show_all_(*gAbout) 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 If *gAbout gtk_widget_destroy_(*gAbout) Debug "'About' destroyed by closing parent window!" 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.45 LTS (Linux - x86) ; CursorPosition = 8 ; Folding = - ; EnableUnicode ; EnableXP