Compare commits
2 Commits
1fa2c13e6e
...
136df93fc5
| Author | SHA1 | Date | |
|---|---|---|---|
| 136df93fc5 | |||
| 7a07a7eedc |
@ -37,6 +37,9 @@ void ReloadDirectory(ftxui::ScreenInteractive& screen, const std::filesystem::pa
|
||||
std::string name = entry.path().filename().string();
|
||||
if (!name.empty() && name[0] == '.') // Works in C++11, C++14, and C++17
|
||||
continue; // Skip hidden files and directories
|
||||
if (std::filesystem::is_directory(entry.path())) {
|
||||
name += "/"; // Append slash to directories for clarity
|
||||
}
|
||||
entries.push_back(std::to_string(i) + ". " + name);
|
||||
clean_names.push_back(name);
|
||||
i++;
|
||||
@ -55,12 +58,10 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
if (argc > 1)
|
||||
{
|
||||
//directory_path = argv[1];
|
||||
// Convert relative input (like "../../..") into a full absolute path
|
||||
//std::cout << "argv[1]: " << argv[1] << std::endl;
|
||||
start_path = std::filesystem::absolute(argv[1]);
|
||||
// Convert to string
|
||||
|
||||
|
||||
// Convert to string
|
||||
start_path = start_path.lexically_normal();
|
||||
std::string path_str = start_path.string();
|
||||
// Manually remove trailing slash if it exists and isn't the root directory
|
||||
@ -69,27 +70,19 @@ int main(int argc, char* argv[]) {
|
||||
}
|
||||
|
||||
current_path = path_str;
|
||||
//std::cout << "directory_path: " << directory_path << std::endl;
|
||||
|
||||
//std::cout << "current_path: " << current_path << std::endl;
|
||||
//current_path = directory_path.string();
|
||||
//current_path = directory_path;
|
||||
}
|
||||
|
||||
//current_path = start_path.string(); // Sync local
|
||||
//std::cout << "current path: " << current_path << std::endl;
|
||||
|
||||
}
|
||||
|
||||
directory_path = current_path; // Update global
|
||||
//std::cout << "Initial current_path after argc: " << current_path << std::endl;
|
||||
|
||||
// Check if the directory exists
|
||||
if (!std::filesystem::exists(directory_path) || !std::filesystem::is_directory(directory_path)) {
|
||||
std::cerr << "Error: Directory '" << directory_path << "' not found or is not a directory." << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
auto screen = ftxui::ScreenInteractive::TerminalOutput();
|
||||
//std::cout << "Initial current_path before reload: " << current_path << std::endl;
|
||||
ReloadDirectory(screen, start_path, entries, clean_names);
|
||||
//std::cout << "Initial current_path after reload: " << current_path << std::endl;
|
||||
auto screen = ftxui::ScreenInteractive::TerminalOutput();
|
||||
ReloadDirectory(screen, start_path, entries, clean_names);
|
||||
int selected = 0;
|
||||
auto menu = ftxui::Menu({
|
||||
.entries = &entries,
|
||||
@ -104,8 +97,7 @@ int main(int argc, char* argv[]) {
|
||||
if (event.is_character()) {
|
||||
char c = event.character()[0];
|
||||
if (std::isdigit(c)) {
|
||||
input_buffer += c; // Add the digit to our "typing" buffer
|
||||
//std::cout << "Typed so far: " << input_buffer << std::endl; // For debugging
|
||||
input_buffer += c; // Add the digit to our "typing" buffer
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -117,8 +109,7 @@ int main(int argc, char* argv[]) {
|
||||
}
|
||||
|
||||
// Handle the 'Enter' key press
|
||||
if (event == ftxui::Event::Return) {
|
||||
//std::cout << "Enter pressed. Input buffer: " << input_buffer << std::endl;
|
||||
if (event == ftxui::Event::Return) {
|
||||
if (!input_buffer.empty()) {
|
||||
try
|
||||
{
|
||||
@ -145,13 +136,15 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
new_path = std::filesystem::absolute(new_path).lexically_normal();
|
||||
new_path.make_preferred();
|
||||
|
||||
current_path = new_path.string();
|
||||
directory_path = current_path; // Update global variable
|
||||
|
||||
if (std::filesystem::is_regular_file(new_path))
|
||||
screen.Exit(); // Exit the application
|
||||
// Call the function to switch and reload
|
||||
ReloadDirectory(screen, new_path, entries,clean_names);
|
||||
selected = 0; // Reset selection to the first item
|
||||
//screen.Exit(); // Exit the application
|
||||
|
||||
return true; // Event handled
|
||||
}
|
||||
|
||||
@ -209,13 +202,5 @@ int main(int argc, char* argv[]) {
|
||||
} else {
|
||||
std::cout << "Selection cancelled or no valid entry selected." << std::endl;
|
||||
}
|
||||
/*Element document = vbox({
|
||||
text("left") | border,
|
||||
text("middle") | border | flex,
|
||||
text("right") | border,
|
||||
});
|
||||
|
||||
auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document));
|
||||
Render(screen, document);
|
||||
screen.Print();*/
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user