[M1 Mac, Big Sur 11.6.7, clang 13.0.0, NO IDE]
カラーコードからGUI内ボタン位置を検索できるようにしました。カラー名からの検索は前回記事で書いたようにappファイルでひらがなの抽出ができずに難航しているため、一旦これで仮完成とします。
ひらがな抽出はPythonモジュールでもうまくいかないので、C++で再挑戦してみます。
// CEクラスとfindIndex関数は自製
void searchLocation(Fl_Widget*, void*){
string name_alpha, name_hira;
string location;
int column,row;
input_name = name_input->value();
input_code = code_input->value();
onoff_name = name_rbtn->value();
onoff_code = code_rbtn->value();
if (onoff_name == 1){
cout << "Name検索" << endl;
name_hira = CE.extract(input_name, HIRAGANA);
name_alpha = CE.extract(input_name, ALPHABET);
cout << "Alphabet " << name_alpha << endl;
cout << "ひらがな " << name_hira << endl;
if (name_alpha != ""){
cout << "140色検索" << endl;
auto index = findIndex(colorList_name, name_alpha);
if (index != -1){
column = index/28 + 1;
row = index%28 + 1;
location = "140色 " + to_string(column) + "列 " + to_string(row) + "行";
roma_input->value("");
code_input->value("");
location_input->value("");
location_input->insert(location.c_str());
} else{
location_input->value("");
location_input->insert("該当なし");
}
} else if (name_hira !=""){
cout << "和色検索" << endl;
int process = 0; // 検索状態 0:検索中, 1:検索終了
int tab_num = 1;
for (vector<string> list:colorList2_name){
auto index = findIndex(list, name_hira);
if (index != -1){
column = index/30 + 1;
row = index%30 + 1;
location = tab_names[tab_num] + " " + to_string(column) + "列 " + to_string(row) + "行";
roma_input->value("");
code_input->value("");
location_input->value("");
location_input->insert(location.c_str());
process = 1;
break;
}
tab_num += 1;
}
if (process==0){
location_input->value("");
location_input->insert("該当なし");
}
} else {
cout << "検索文字列なし" << endl;
}
} else {
cout << "Code検索" << endl;
int process = 0;
// input_codeを0xへ変換
code_zero = ToZeroConvert2();
cout << "code 140色検索" << endl;
auto index = findIndex(colorList_code, code_zero);
if (index != -1){
column = index/28 + 1;
row = index%28 + 1;
string result_name = colorList_name[index];
location = "140色 " + to_string(column) + "列 " + to_string(row) + "行 " + result_name;
string name = colorList_name[index];
name_input->value("");
roma_input->value("");
location_input->value("");
location_input->insert(location.c_str());
process = 1;
}
cout << "code 和色検索" << endl;
if (process == 0){
int tab_num = 1;
for (vector<string> list:colorList2_code){
auto index = findIndex(list, code_zero);
if (index != -1){
column = index/30 + 1;
row = index%30 + 1;
string result_name = colorList2_name[tab_num -1][index];
location = tab_names[tab_num] + " " + to_string(column) + "列 " + to_string(row) + "行 " + result_name;
name_input->value("");
roma_input->value("");
location_input->value("");
location_input->insert(location.c_str());
process = 1;
break;
}
tab_num += 1;
}
if (process==0){
location_input->value("");
location_input->insert("該当なし");
}
}
}