Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.X] Open Dialog Box - okno wyboru pliku

Ostatnio zmodyfikowano 2024-10-17 09:37
Autor Wiadomość
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:

C/C++
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:
C/C++
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 {
       
// both are file
       
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;
       
   
}
   
}
P-181707
pekfos
» 2024-10-16 14:50:46
Trochę workaround, ale faktycznie wystarczy.
P-181708
tBane
Temat założony przez niniejszego użytkownika
» 2024-10-16 14:57:15
Ważne, że działa. Dzięki za pomoc ! :-)

https://github.com/tBane1995/Open-Dialog-Box

P-181709
1 2 3 4 « 5 »
Poprzednia strona Strona 5 z 5