[SFML 2.X] Open Dialog Box - okno wyboru pliku
Ostatnio zmodyfikowano 2024-10-16 14:57
tBane Temat założony przez niniejszego użytkownika |
» 2024-10-16 14:33:16 aaa znaczy się sortowałem folder nadrzędny z jego zawartością. Teraz tak wczytuję folder i wszystko działa: void loadDirectory() { paths.clear(); if( filesystem::exists( current_path ) && filesystem::is_directory( current_path ) ) { for( auto & entry: filesystem::directory_iterator( current_path ) ) { paths.push_back( entry ); } } std::sort( paths.begin(), paths.end(), sortkey ); paths.emplace( paths.begin(), current_path.parent_path() ); }
i tu jeszcze klucz do sortowania: bool sortkey( std::filesystem::directory_entry first, std::filesystem::directory_entry second ) { if( first.is_directory() && second.is_directory() ) { string name_1 = first.path().filename().string(); string name_2 = second.path().filename().string(); std::transform( name_1.begin(), name_1.end(), name_1.begin(),[ ]( unsigned char c ) { return std::tolower( c ); } ); std::transform( name_2.begin(), name_2.end(), name_2.begin(),[ ]( unsigned char c ) { return std::tolower( c ); } ); if( name_1 < name_2 ) return true; else return false; } else if( first.is_directory() && !second.is_directory() ) { return true; } else if( !first.is_directory() && second.is_directory() ) { return false; } else { string name_1 = first.path().filename().string(); string name_2 = second.path().filename().string(); std::transform( name_1.begin(), name_1.end(), name_1.begin(),[ ]( unsigned char c ) { return std::tolower( c ); } ); std::transform( name_2.begin(), name_2.end(), name_2.begin(),[ ]( unsigned char c ) { return std::tolower( c ); } ); if( name_1 < name_2 ) return true; else return false; } }
|
|
pekfos |
» 2024-10-16 14:50:46 Trochę workaround, ale faktycznie wystarczy. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2024-10-16 14:57:15 |
|
1 2 3 4 « 5 » |