[M1 Mac, Big Sur 11.6.8, FLTK 1.3.8, NO IDE]
Cancelボタンのcallback関数を追加し、命名規則をキャメルケースに統一してリネームしました。クラス名はアッパーキャメルケース、変数・関数はローワーキャメルケースにしました。アンダースコアでつなげるスネークケースよりもこちらが好みです。
まだスネークケースが混ざっているので順次直していきます。
#include <FileChooser.h>
#include <FileChooser2.h>
#include <btnAction.h>
int browserType;
char appDir[FL_PATH_MAX]; // アプリ用ディレクトリ
char selectPath[FL_PATH_MAX]; // 選択ファイルパス
vector<const char*> selectPaths; // 複数選択ファイルパス
void fileListShow(const char* dirname)
{
// アプリ用ディレクトリの読込&全ファイル表示
FileBrowser->load(dirname);
// アプリ用ディレクトリをコピー
fl_filename_absolute(appDir, sizeof(appDir), dirname);
cout << "appDir " << appDir << endl;
inputFileName->value(dirname);
}
void browserTypeSet(int t) {
cout << "int t " << t << endl;
browserType = t;
if (t == FileChooser::MULTI){
FileBrowser->type(FL_MULTI_BROWSER);
}else{
FileBrowser->type(FL_HOLD_BROWSER);
}
if (t == FileChooser::CREATE){
btnNew->activate();
}else{
btnNew->deactivate();
}
if (t == FileChooser::DIRECTORY){
FileBrowser->filetype(Fl_File_Browser::DIRECTORIES);
}else{
FileBrowser->filetype(Fl_File_Browser::FILES);
}
}
void FileBrowserCB()
{
char *fileName;
// クリックしたファイルのファイル名を取得
fileName = (char *)FileBrowser->Fl_Browser::text(FileBrowser->Fl_Browser::value());
cout << "fileName " << fileName << endl;
if (!fileName) return;
selectPath[0] = '\0';
// ディレクトリ名にファイル名を結合
strcat(selectPath ,appDir);
strcat(selectPath ,"/");
strcat(selectPath ,fileName);
cout << "selectPath " << selectPath << endl;
if (browserType == 1) { // 削除を選択してFL_MULTI_BROWSERになっている場合
char* name = new char[strlen(selectPath) + 1];
strcpy(name, selectPath);
selectPaths.push_back(name);
}
//ファイルパスを表示
inputFileName->value("");
inputFileName->value(selectPath);
}
void btnOKCB(Fl_Return_Button*, void*)
{
// FileChooserを閉じる
chooser->Fl_Window::hide();
}
void btnCancelCB(Fl_Button*, void*)
{
if (browserType != 1) {
selectPath[0] = '\0';
} else {
selectPaths.clear();
}
// FileChooserを閉じる
chooser->Fl_Window::hide();
}