; Module/File: Gadget_AddRecentChooserSys.pb ; Function: Add system RecentChooser widget w. optional filter/tooltips - Linux gtk2/gtk3 ; Author: Omi ; Date: Nov. 20, 2015 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.40 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ImportC "" gtk_recent_chooser_widget_new() gtk_recent_chooser_get_current_item(*chooser) ; gtk_recent_chooser_set_show_tips(*chooser, show_tips) gtk_recent_chooser_set_filter(*chooser, *filter) gtk_recent_info_get_short_name(*info) gtk_recent_info_get_uri_display(*info) gtk_recent_info_unref(*info) gtk_recent_filter_new() gtk_recent_filter_add_pattern(*filter, pattern.p-utf8) gtk_recent_filter_set_name(*filter, name.p-utf8) g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *data, destroy= 0, flags= 0) As "g_signal_connect_data" EndImport ; Object constants #MainWin= 0 #TxtShort= 0 #TxtUri = 1 #Txt = 2 Global.i gEvent, gQuit Global *gRecentChooser ProcedureC Callback_RecentChooserSelected(*chooser, user_data) Protected *RecentInfo= gtk_recent_chooser_get_current_item(*chooser) If *RecentInfo SetGadgetText(#TxtShort, PeekS(gtk_recent_info_get_short_name(*RecentInfo), -1, #PB_UTF8)) SetGadgetText(#TxtUri, PeekS(gtk_recent_info_get_uri_display(*RecentInfo), -1, #PB_UTF8)) SetGadgetText(#Txt, "Further functions see 'Menu_AddStockImageById.pb'") gtk_recent_info_unref(*RecentInfo) EndIf EndProcedure Procedure.i RecentChooserGadget(Gadget, x, y, w, h, filter.s= "") Protected.i Container= ContainerGadget(Gadget, x, y, w, h, #PB_Container_BorderLess) Protected *cbutton.GtkWidget= gtk_recent_chooser_widget_new() If filter <> "" Protected *rffilter= gtk_recent_filter_new() gtk_recent_filter_set_name(*rffilter, filter) gtk_recent_filter_add_pattern(*rffilter, filter) gtk_recent_chooser_set_filter(*cbutton, *rffilter) EndIf ; gtk_recent_chooser_set_show_tips(*cbutton, #True); activate tooltips If Gadget <> #PB_Any : Container= Gadget : EndIf gtk_container_add_(GadgetID(Container), *cbutton) gtk_widget_set_size_request_(*cbutton, w-4, h-4); stillv-size-problems gtk_widget_show_(*cbutton) CloseGadgetList() ProcedureReturn *cbutton EndProcedure If OpenWindow(#MainWin, 300, 200, 800, 310, "Add SysRecentChooser", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) TextGadget(#TxtShort, 260, 5, 530, 22, "") TextGadget(#TxtUri, 260, 30, 530, 36, "") TextGadget(#Txt, 260, 100, 530, 36, "") *gRecentChooser= RecentChooserGadget(#PB_Any, 5, 5, 250, 290, "*.pb") g_signal_connect(*gRecentChooser, "selection-changed", @Callback_RecentChooserSelected(), 0) Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True EndSelect Until gQuit EndIf ; IDE Options = PureBasic 5.44 LTS (Linux - x86) ; CursorPosition = 22 ; Folding = - ; EnableUnicode ; EnableXP