//! The write filename callback void FileDialog::writeFilename(GuiElement* elem){ FileDialog* dia = dynamic_cast<FileDialog*>(elem->getParent()); InputField* inp = dynamic_cast<InputField*>(dia->getElement(2)); ListBox* files = dynamic_cast<ListBox*>(dia->getElement(1)); string file = files->selectedItem(); inp->setText(file); }
//! The change directory callback void FileDialog::changeDir(GuiElement* elem){ Dialog* dia = dynamic_cast<Dialog*>(elem->getParent()); ListBox* dirs = dynamic_cast<ListBox*>(dia->getElement(0)); string dir = dirs->selectedItem(); //collapse path when .. is chosen and the situation is appropriate if (dir == ".." && path_.length() > 1 && path_[path_.length()-1] != '.'){ size_t n = path_.find_last_of(SEPARATOR); if (n != path_.npos) path_.erase(n); else path_ += "."; } else path_ += SEPARATOR+dir; dirs->clear(); dirs->addEntries(Filesystem::getDirectories(cwd_+SEPARATOR+path_)); //update file list ListBox* files = dynamic_cast<ListBox*>(dia->getElement(1)); files->clear(); files->addEntries(Filesystem::getFiles(cwd_+SEPARATOR+path_)); }