; Module/File: Button_FileChooserButton.pb ; Function: Add FileChooserButton with file chooser - Linux gtk2.6+ ; Author: Omi ; Date: Dec. 06, 2014 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.40 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- ;Problem in Save-mode in gtk (no PB bug!) EnableExplicit ImportC "" g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *data, destroy= 0, flags= 0) As "g_signal_connect_data" gtk_file_chooser_button_new(title.p-utf8, action) gtk_file_chooser_button_set_width_chars(*button.GtkWidget, n_chars) gtk_file_chooser_set_current_folder(*chooser, filenae.p-utf8) EndImport ; Object constants #MainWin = 0 #Text1 = 0 #Text2 = 1 #Text3 = 2 #Text4 = 3 Global.i gEvent, gQuit Global gFile1, gFile2, gFile3, gFile4 ProcedureC Callback_FileSet(*widget.GtkWidget, user_data) If *widget = gFile1 Debug "file open changed" Debug PeekS(gtk_file_chooser_get_filename_(*widget), -1, #PB_UTF8) ;filename ??? ElseIf *widget = gFile3 Debug PeekS(gtk_file_chooser_get_filename_(*widget), -1, #PB_UTF8) EndIf EndProcedure Procedure.i FileChooserButtonGadget(Gadget, x, y, w, h, title.s, folder.s, action) Protected.i Container= ContainerGadget(Gadget, x, y, w, h, #PB_Container_Flat) Protected *fbutton= gtk_file_chooser_button_new(title, action) gtk_file_chooser_button_set_width_chars(*fbutton, 20); gtk2.6+ gtk_file_chooser_set_current_folder(*fbutton, folder) If Gadget <> #PB_Any : Container= Gadget : EndIf gtk_container_add_(GadgetID(Container), *fbutton) gtk_widget_show_(*fbutton) CloseGadgetList() ProcedureReturn *fbutton EndProcedure If OpenWindow(#MainWin, 300, 200, 320, 200, "Add FileChooserButton", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) TextGadget(#Text1, 5, 12, 100, 22, "open file: ") TextGadget(#Text2, 5, 48, 100, 22, "save file: ") TextGadget(#Text3, 5, 84, 100, 22, "choose folder: ") TextGadget(#Text4, 5, 120, 100, 22, "create folder: ") gFile1= FileChooserButtonGadget(#PB_Any, 95, 5, 200, 32, "Choose a file ...", "/home", #GTK_FILE_CHOOSER_ACTION_OPEN) ;gFile2= FileChooserButtonGadget(#PB_Any, 95, 41, 200, 32, "Choose a file ...", "/home", #GTK_FILE_CHOOSER_ACTION_SAVE); Problem, seems to be a bug gFile3= FileChooserButtonGadget(#PB_Any, 95, 77, 200, 32, "Choose a folder ...", "/home", #GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) ;gFile4= FileChooserButtonGadget(#PB_Any, 95, 113, 200, 32, "Create a folder ...", "/home", #GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER); Problem, seems to be a bug g_signal_connect(gFile1, "file-set", @Callback_FileSet(), 0) ; g_signal_connect(gFile2, "file-set", @Callback_FileSet(), 0) g_signal_connect(gFile3, "file-set", @Callback_FileSet(), 0) Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True EndSelect Until gQuit EndIf ; IDE Options = PureBasic 5.45 LTS (Linux - x86) ; CursorPosition = 52 ; Folding = - ; EnableUnicode ; EnableXP