[M1 Mac, Big Sur 11.6.7, clang 13.0.0, NO IDE]
Fl_Tabsのインデックス値を取得し、押下したカラーボタンの内容を3次元配列データから取り出すようにしました。
Tabのインデックス値取得はfor文内で変数に代入する方法ではうまくいかず、関数の戻り値にするとあっさり出来ました。
ようやく次の段階に移ることができます。選択した色の表示、カラーコードの変換などです。
extern Fl_Tabs *tabs;
extern string colorList[3][140];
extern string colorList2[4][3][120];
extern vector<string> tab_names;
int getIndex(vector<string> &input, string searched) {
for (int i = 0; i < input.size(); i++) {
if (input[i] == searched) {
return i;
}
}
return -1;
}
void getColor(Fl_Widget*, long num){
cout << "num " << num << endl;
Fl_Widget * tab = tabs->value();
const char* lbl = tab->label();
cout << "lbl " << lbl << endl;
string lbl_str = (string)lbl;
int tab_num = getIndex(tab_names,lbl_str);
cout << "tab_num " << tab_num << endl;
if (tab_num == 0){
string* name = &(colorList[0][num]);
const char* name_c = name->c_str();
name_input->value("");
name_input->insert(name_c);
const char* romaji_c = "-";
romaji_input->value("");
romaji_input->insert(romaji_c);
string* color = &(colorList[2][num]);
const char* color_c = color->c_str();
code_input->value("");
code_input->insert(color_c);
} else {
string* name = &(colorList2[tab_num-1][0][num]);
const char* name_c = name->c_str();
name_input->value("");
name_input->insert(name_c);
string* romaji = &(colorList2[tab_num-1][1][num]);
const char* romaji_c = romaji->c_str();
romaji_input->value("");
romaji_input->insert(romaji_c);
string* color = &(colorList2[tab_num-1][2][num]);
const char* color_c = color->c_str();
code_input->value("");
code_input->insert(color_c);
}
}