[M1 Mac, Monterey 12.6.3, clang 13.0.0, FLTK 1.3.8, ChatGPT Plus, NO IDE]
一連の質問についてボタンで前後移動できるようにしました。
質問回数表示で数値がダブって描画されるというトラブルが発生しましたが、window -> redraw();で解決しました。
あとはGUI左下の回答内コード表示が出来れば完成です。
アプリが落ちないよう例外処理を随時追加していきます。
void backCB(Fl_Widget*, void*){
questionNumShow -> value("");
window -> redraw();
// jsonDataからuserとassistantのcontentを取り出し表示
if (arrowCount == 0){
currentCount = countQ - 2;
if(currentCount < 0){
currentCount = 0;
}
arrowCount++;
} else {
if (currentCount > 0){
currentCount--;
}
}
cout << "currentCount: " << currentCount << endl;
// jsonData確認
string jsonDataString = jsonData.dump(2);
cout << "jsonDataString:\n" << jsonDataString << endl;
auto messages = jsonData["messages"];
int i = 0;
for (auto message : messages) {
// roleがuserの場合はcontentを出力
if (message["role"] == "user") {
// cout << "user: " << message["content"] << endl;
if (i == currentCount){
cout << "user: " << message["content"] << endl;
input -> value(message["content"].get<string>().c_str());
}
i++;
}
}
i = 0;
for (auto message : messages) {
// roleがassistantの場合はcontentを出力
if (message["role"] == "assistant") {
// cout << "assistant: " << message["content"] << endl;
if (i == currentCount){
cout << "assistant: " << message["content"] << endl;
Fl_Text_Buffer* buffer = new Fl_Text_Buffer();
buffer -> text(message["content"].get<string>().c_str());
output -> buffer(buffer);
}
i++;
}
}
// 質問回数表示
string countStr = to_string(currentCount + 1) + " / " + to_string(countQ);
cout << "countStr: " << countStr << endl;
questionNumShow -> value(countStr.c_str());
}