[M1 Mac, MacOS Ventura 13.3.1, clang 14.0.3]
いよいよGUIの作成に取りかかります。
FLTKのFl_Treeを使ってボードタイトルをカテゴリーごとにツリー表示できるようにしました。
今回はChatGPTをほとんど使わず、FLTKのtestコードを参考にしました。
なお、自製ライブラリcppstd.hでusing std::stringなどを設定しているのでstd::は省略されています。そうしないと可読性が著しく低くなります。
C++版がある程度形になったらSwiftへの移植も考えています。
#include "cppstd.h" // 自製ライブラリ
#include <stdio.h>
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Tree.H>
#include "getBoard.h"
int main(int argc, char *argv[]) {
Fl_Double_Window *win = new Fl_Double_Window(1400, 1050, "BBS Browser");
win->begin();
{
// Create the tree
Fl_Tree *tree = new Fl_Tree(10, 10, 230, win->h()-20);
tree->showroot(0);
vector<tuple<string, string, string>> idTitleCat = getBoard();
vector<string> categories;
for (const auto& element : idTitleCat) {
string path = get<2>(element) + "/" + get<1>(element);
cout << "path: " << path << endl;
string category = get<2>(element);
if (find(categories.begin(), categories.end(), category) == categories.end()) {
tree->add(category.c_str())->close();
categories.push_back(category);
}
tree->add(path.c_str());
}
}
win->end();
win->resizable(win);
win->show(argc, argv);
return(Fl::run());
}