QUrl Info::makeValidTeXURL(const QUrl &url, QWidget *mainWidget, bool istexfile, bool checkForFileExistence) { QUrl newURL(url); //add a .tex extension if(!istexfile) { newURL = repairExtension(newURL, mainWidget, checkForFileExistence); } //remove characters TeX does not accept, make sure the newURL does not exists yet if(containsInvalidCharacters(newURL)) { newURL = repairInvalidCharacters(newURL, mainWidget, checkForFileExistence); } return newURL; }
KUrl Info::repairInvalidCharacters(const KUrl& url, QWidget* mainWidget, bool checkForFileExistence /* = true */) { KUrl ret(url); do { bool isOK; QString newURL = KInputDialog::getText( i18n("Invalid Characters"), i18n("The filename contains invalid characters ($~ #).<br>Please provide " "another one, or click \"Cancel\" to save anyway."), ret.fileName(), &isOK); if(!isOK) break; ret.setFileName(newURL); } while(containsInvalidCharacters(ret)); return (checkForFileExistence ? renameIfExist(ret, mainWidget) : ret); }
QUrl Info::repairInvalidCharacters(const QUrl &url, QWidget* mainWidget, bool checkForFileExistence /* = true */) { QUrl ret(url); do { bool isOK; QString newURL = QInputDialog::getText( mainWidget, i18n("Invalid Characters"), i18n("The filename contains invalid characters ($~ #).<br>Please provide " "another one, or click \"Cancel\" to save anyway."), QLineEdit::Normal, ret.fileName(), &isOK); if(!isOK) { break; } ret = ret.adjusted(QUrl::RemoveFilename); ret.setPath(ret.path() + newURL); } while(containsInvalidCharacters(ret)); return (checkForFileExistence ? renameIfExist(ret, mainWidget) : ret); }