[C++] 324 BBS閲覧アプリの製作 その10 スレッドタイトルのGUI表示 Fl_Table 仮表示

[M1 Mac, MacOS Ventura 13.3.1, clang 14.0.3]

Fl_Tableを継承したWidgetTableクラスを使い、スレッドタイトル一覧表示の土台を作成しました。

クラスの作成は久しぶりだったので、少々手こずりました。

FLTKについてはChatGPTは余りあてにならず、ソースコードにあるサンプルを参考にしています。

ようやくゴールが見えてきた感じです。

#include "cppstd.h" // 自製ライブラリ
#include <FLstd.h>
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Tree.H>
#include "getBoard.h"
#include "WidgetTable.h"

int main(int argc, char *argv[]) {
  Fl_Double_Window *win = new Fl_Double_Window(1400, 1020, "BBS Browser");

  win->begin();
  {
    // Create the tree
    Fl_Tree* tree = new Fl_Tree(10, 45, 230, win->h()-45-10);
    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());
    }

    WidgetTable* table = new WidgetTable(240, 45, 1400-230-10, 350, "");
    table->SetSize(5, 5);

  }
  win->end();

  win->resizable(win);
  win->show(argc, argv);
  return(Fl::run());
}