program qt_dialogs_ex1;
{$mode objfpc}
{$h+}
uses
qt6;
procedure sample_files (const options: QFileDialogOptions);
var
str, title: wideString;
i: integer;
qstr_list: QStringListH;
begin
qstr_list := QStringList_Create();
title := 'Open these!';
QFileDialog_getOpenFileNames(qstr_list, nil, @title, nil, nil, nil, options);
for i := 0 to QStringList_size(qstr_list) - 1 do begin
QStringList_at(qstr_list, @str, i);
writeln(i + 1, ': ', str);
end;
QStringList_Destroy(qstr_list);
end;
procedure sample_save (const options: QFileDialogOptions);
var
file_name, title: wideString;
begin
title := 'Save this!';
QFileDialog_getSaveFileName(@file_name, nil, @title, nil, nil, nil, options);
writeln(file_name);
end;
procedure sample_open (const options: QFileDialogOptions);
var
file_name, title: wideString;
begin
title := 'Open this!';
QFileDialog_getOpenFileName(@file_name, nil, @title, nil, nil, nil, options);
writeln(file_name);
end;
procedure sample_dir (const options: QFileDialogOptions);
var
file_name, title: wideString;
begin
title := 'Get this!';
QFileDialog_getExistingDirectory(@file_name, nil, @title, nil, options);
writeln(file_name);
end;
procedure main;
var
app: QApplicationH;
begin
app := QApplication_create(@argc, @argv);
if argv[1] = 'save0' then sample_save(0)
else if argv[1] = 'save1' then sample_save(QFileDialogOptionDontUseNativeDialog)
else if argv[1] = 'open0' then sample_open(0)
else if argv[1] = 'open1' then sample_open(QFileDialogOptionDontUseNativeDialog)
else if argv[1] = 'dir0' then sample_dir(0)
else if argv[1] = 'dir1' then sample_dir(QFileDialogOptionDontUseNativeDialog)
else if argv[1] = 'files0' then sample_files(0)
else if argv[1] = 'files1' then sample_files(QFileDialogOptionDontUseNativeDialog);
QApplication_destroy(app);
writeln('Goodbye!');
end;
begin
if (argc > 1) then main
else begin
writeln('Usage: ', argv[0], ' <save0|save1|open0|open1|dir0|dir1|files0|files0>');
writeln('save0 # show save dialog using native dialog');
writeln('save1 # show save dialog not using native dialog');
writeln('open0 # show open dialog using native dialog');
writeln('open1 # show open dialog not using native dialog');
writeln('dir0 # show get directory dialog using native dialog');
writeln('dir1 # show get directory dialog not using native dialog');
writeln('files0 # show open files dialog using native dialog');
writeln('files1 # show open files dialog not using native dialog');
end;
end.
// CudaText: lexer_file=Pascal; tab_size=2; tab_spaces=Yes; newline=LF;