[C++] 119 FLTK : 名前を付けて保存 Fl_File_Chooser

[M1 Mac, Big Sur 11.6.8, clang 13.0.0, NO IDE]

色表示履歴をcsvファイルに保存する際、自分でファイル名を付けることもできるようにしました。Fl_File_ChooserをCREATEタイプで使用します。

OKボタン以外をクリックすると異常終了するので、まだ手を入れる必要があります。

static Fl_Menu_Item	items[] = {
        { "★", 0, 0, 0, FL_SUBMENU },
        { "読込", 0, loadFavList, 0, 0 },
        { "保存", 0, 0, 0, FL_SUBMENU },
        { "名前を付けて保存", 0, saveFavListManu, 0, 0 },
        { "自動保存", 0, saveFavListAuto, 0, 0 },
        { 0 },
        { "消去", 0, deleteFavList, 0, 0 },
        { 0 },
        { "履歴", 0, 0, 0, FL_SUBMENU },
        { "消去", 0, deleteHistory, 0, 0 },
        { 0 },        
    #ifdef DEV
        { "開発", 0, 0, 0, FL_SUBMENU },
        { "開発モード", 0, showSubWindow, 0, 0 },
        { 0 }
    #else
    #endif
    };
    
    Fl_Sys_Menu_Bar *menubar;
    menubar = new Fl_Sys_Menu_Bar(0, 0, 60, 20);
    menubar->box(FL_FLAT_BOX);
    menubar->menu(items);
--------------------------------------------------
#include <csvProcessChar.h>
#include <filesystem>

namespace fs = std::filesystem;
using std::cout; using std::endl;
using std::string; using std::to_string;

vector<vector<const char*>> selectColorList;

void saveFavListManu(Fl_Widget*, void*){
    cout << "saveFavListManu" << endl;

    homedir = getenv("HOME");
    cout << "homedir " << homedir << endl;

    string cs = "/ColorSample";
    string appdir = string(homedir) + cs;

    if (!fs::exists(appdir)){
        fs::create_directory(appdir);
    }

    Fl_File_Chooser chooser(".",      // directory
                            "*",      // filter
                            Fl_File_Chooser::CREATE, // chooser type
                            "File_Chooser");   // title
    chooser.show();

    while(chooser.shown())
        { Fl::wait(); }

    const char* filePath = chooser.value();

    if (filePath == nullptr){
        return;
    }

    csvProcessChar::make(filePath,selectColorList);
}