Aufruf von OpenFileRequester()
Verfasst: 12.05.2021 00:18
Lässt sich der OpenFileRequester() so starten, dass die angezeigten Dateien sofort nach dem Datum sortiert sind (neueste zuerst)?
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
Procedure HookCallback(DialogHandle.I, Msg.I, WParam.I, LParam.I)
Protected DialogWindow.I
Protected *NMHdr.NMHDR
If Msg = #WM_NOTIFY
*NMHdr = LParam
If *NMHdr\code = #CDN_FOLDERCHANGE
DialogWindow = FindWindowEx_(GetParent_(DialogHandle), 0, "ShellDll_DefView", 0)
If DialogWindow
#byModified = $7605 + 1
#byAttributes = $7608 + 1
SendMessage_(DialogWindow, #WM_COMMAND, #OFN_VIEW_REPORT, 0)
SendMessage_(DialogWindow, #WM_COMMAND, #ByAttributes, 0)
SendMessage_(DialogWindow, #WM_COMMAND, #ByModified, 0)
EndIf
EndIf
EndIf
EndProcedure
Da hat mich mal wieder der Spaß mit der WinAPI gepackt, dass ich das gar nicht mitbekommen habemk-soft hat geschrieben: 12.05.2021 20:18 Vielleicht hat das noch keiner gemerkt. Wir sind hier in de Linux Ecke !![]()
Code: Alles auswählen
;-TOP
; Modify by mk-soft
EnableExplicit
ImportC ""
gtk_file_chooser_dialog_new(title.p-utf8, *parent.GtkWidget, action.i, b1.p-utf8, a1.i, b2.p-utf8, a2.i, null);
gtk_file_filter_set_name(*filter, label.p-utf8);
gtk_file_filter_add_pattern(*filter,pattern.p-utf8)
gtk_file_chooser_set_current_folder(*dialog, path.p-utf8)
EndImport
Procedure.s MyOpenFileRequester(Title.s, Path.s, Pattern.s, PatterPostion, Flags = 0)
Protected *dialog, *filter, *mem
Protected r1.l
Protected part.s, label.s, patter.s , index
Protected FileName.s
*dialog = gtk_file_chooser_dialog_new(Title, 0, #GTK_FILE_CHOOSER_ACTION_OPEN,
#GTK_STOCK_CANCEL,#GTK_RESPONSE_CANCEL,
#GTK_STOCK_OPEN,#GTK_RESPONSE_ACCEPT,
#Null);
gtk_window_set_modal_(*dialog, #True)
gtk_file_chooser_set_current_folder_(*dialog,path)
Repeat
index + 1
part = StringField(pattern, index, ";")
If part = ""
Break
EndIf
*filter = gtk_file_filter_new_()
label.s = StringField(part, 1, "|")
patter.s = StringField(part, 2, "|")
gtk_file_filter_set_name(*filter, label)
gtk_file_filter_add_pattern(*filter, patter)
gtk_file_chooser_add_filter_(*dialog, *filter)
ForEver
r1 = gtk_dialog_run_(*dialog)
If r1 = #GTK_RESPONSE_ACCEPT
*mem = gtk_file_chooser_get_filename_(*dialog);
filename.s = PeekS(*mem, -1, #PB_UTF8)
If *mem
g_free_(*mem);
EndIf
Else
FileName = ""
EndIf
gtk_widget_destroy_(*dialog)
ProcedureReturn FileName
EndProcedure
OpenWindow(0, 0, 0, 0, 0, "", #PB_Window_Invisible)
Define file.s = MyOpenFileRequester("Test", "/home", "PB-Files|*.pb;All Files|*", 0 , 0)
MessageRequester("Ifo", "Result = " + file)
Natürlich könnte ich das auch selbst machen. Leider ist mein Programm aber schon hart am Limit dessen, was die Testversion zulässtUnter Linux würde ich auf die Schnelle ein OpenFileRequester selber bauen.
Eigentlich ist dies in Linux so gelöst, dass man in einem FileRequester auf den Spaltentitel klickt (z.B. auf "Letzte Änderung") und fortan sind die Dateien nach dem Datum sortiert (neueste zuerst). Dies wird durch ein Dreieck mit der Spitze nach oben im Spaltenkopf angezeigt. Klickt man erneut auf den Spaltentitel, wird die Sortierreihenfolge umgekehrt (neueste zuletzt) und die Spitze des Dreiecks im Spaltenkopf zeigt dann nach unten. Dies erfolgt separat jeweils für Ordner und Dateien.Plenz hat geschrieben: 12.05.2021 00:18 Lässt sich der OpenFileRequester() so starten, dass die angezeigten Dateien sofort nach dem Datum sortiert sind (neueste zuerst)?