void PrefixControlWidget::prefixExport_Click(){ /* * Function for exporting preefix to file */ if (!prefixTable->currentIndex().isValid()) return; if(prefixTable->currentIndex().row()<0) return; QString prefixName = model->index(prefixTable->currentIndex().row(), 0, QModelIndex()).data().toString(); QString prefixPath = model->index(prefixTable->currentIndex().row(), 2, QModelIndex()).data().toString(); if (prefixName.isEmpty()) return; if (prefixPath.isEmpty()){ prefixPath.append(QDir::homePath()); prefixPath.append("/.wine/"); } QString savepath = QDir::homePath(); savepath.append("/.config/"); savepath.append(APP_SHORT_NAME); savepath.append("/prefixes/"); savepath.append(prefixName); savepath.append("-"); savepath.append(QDate::currentDate().toString(Qt::ISODate)); savepath.append(".tbz"); //Request user for valid save path #if QT_VERSION >= 0x040500 QFileDialog::Options options; if (CoreLib->getSetting("advanced", "useNativeFileDialog", false, 1)==0) options = QFileDialog::DontUseNativeDialog; QString fileName = QFileDialog::getSaveFileName(this, tr("Select file to export"), savepath , tr("Prefix archive images (*.tbz)"), 0, options); #else QString fileName = QFileDialog::getSaveFileName(this, tr("Select file to export"), savepath , tr("Prefix archive images (*.tbz)")); #endif if (!fileName.isEmpty()){ QStringList args; args << "-cjf"; args << fileName; args << "-C"; args << prefixPath; args << "./"; //Creating process dialog Process exportProcess(args, CoreLib->getSetting("system", "tar").toString(), prefixPath, tr("Exporting %1 prefix.<br>This can take a while...").arg(prefixName), tr("Exporting prefix")); exportProcess.exec(); } return; }
void PrefixControlWidget::prefixImport_Click(){ /* Function for importing preefix from file */ if (!prefixTable->currentIndex().isValid()) return; if(prefixTable->currentIndex().row()<0) return; QString prefixName = model->index(prefixTable->currentIndex().row(), 0, QModelIndex()).data().toString(); QString targetDir = model->index(prefixTable->currentIndex().row(), 2, QModelIndex()).data().toString(); if (prefixName.isEmpty()) return; if (targetDir.isEmpty()){ targetDir.append(QDir::homePath()); targetDir.append("/.wine/"); } QString openpath = QDir::homePath(); openpath.append("/.config/"); openpath.append(APP_SHORT_NAME); openpath.append("/prefixes/"); #if QT_VERSION >= 0x040500 QFileDialog::Options options; if (CoreLib->getSetting("advanced", "useNativeFileDialog", false, 1)==0) options = QFileDialog::DontUseNativeDialog; QString fileName = QFileDialog::getOpenFileName(this, tr("Select file to import"), openpath , tr("Prefix archive images (*.tbz)"), 0, options); #else QString fileName = QFileDialog::getOpenFileName(this, tr("Select file to import"), openpath , tr("Prefix archive images (*.tbz)")); #endif if (!fileName.isEmpty()){ QDir dir; if (dir.exists(targetDir)){ if(QMessageBox::warning(this, tr("Warning"), tr("Do you really wish to delete all old prefix files?"), QMessageBox::Ok, QMessageBox::Cancel)==QMessageBox::Ok){ QStringList args; args << "-rdf"; args << targetDir; Process exportProcess(args, CoreLib->getWhichOut("rm"), QDir::homePath(), tr("Removing old fake drive.<br>This can take a while..."), tr("Removing old fake drive")); if (exportProcess.exec()!=QDialog::Accepted){ return; } } else { return; } } dir.mkdir(targetDir); QStringList args; args << "-xjf"; args << fileName; args << "-C" << targetDir; //Creating process dialog Process exportProcess(args, CoreLib->getSetting("system", "tar").toString(), QDir::homePath(), tr("Importing prefix.<br>This can take a while..."), tr("Importing prefix")); exportProcess.exec(); } return; }
void IconSettings::cmdGetIcon_Click(){ QString fileName, searchPath=this->prefix_path; if ((!txtWorkDir->text().isEmpty()) and (QDir(txtWorkDir->text()).exists())){ searchPath = txtWorkDir->text(); } else { if (QDir(this->prefix_path).exists()){ searchPath=this->prefix_path; } else { searchPath=QDir::homePath(); } } QFileDialog dialog(this); dialog.setFilter(QDir::Dirs | QDir::Files | QDir::Hidden); dialog.setFileMode(QFileDialog::ExistingFile); dialog.setWindowTitle(tr("Open image file")); #if QT_VERSION >= 0x040500 if (CoreLib->getSetting("advanced", "useNativeFileDialog", false, 1)==0){ dialog.setOptions(QFileDialog::DontUseNativeDialog); } #endif if ((!iconPath.isEmpty()) and (QFile(iconPath).exists())){ QStringList list = iconPath.split("/"); searchPath = iconPath.left(iconPath.length() - list.last().length()); } dialog.setDirectory(searchPath); #ifndef WITH_ICOUTILS dialog.setNameFilter(tr("Image files (*.png *.jpg *.gif *.bmp *.xpm)")); #else dialog.setNameFilter(tr("Image and Win32 binary files (*.png *.jpg *.gif *.bmp *.xpm *.exe *.dll);;Image files (*.png *.jpg *.gif *.bmp *.xpm);;Win32 Executable (*.exe);;Win32 Shared libraies (*.dll);;Win32 Executable and Shared libraies (*.exe *.dll)")); #endif //dialog.setSidebarUrls(add_prefix_urls); if (dialog.exec()) fileName = dialog.selectedFiles().first(); if(!fileName.isEmpty()){ if ((fileName.toLower().right(3)!="exe") && (fileName.toLower().right(3)!="dll")){ cmdGetIcon->setIcon (QIcon(fileName)); } else { QStringList args; args << "-x"; args << "-t" << "14"; QString tmpDir=""; QStringList list1 = fileName.split("/"); tmpDir.append(QDir::homePath()); tmpDir.append("/.config/"); tmpDir.append(APP_SHORT_NAME); tmpDir.append("/tmp/"); tmpDir.append(list1.last()); QDir tmp(tmpDir); tmp.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); QFileInfoList list = tmp.entryInfoList(); if (tmp.exists(tmpDir)){ for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); if (!tmp.remove(fileInfo.filePath())) qDebug()<<"[EE] - Can't delete files at: "<<fileInfo.filePath(); } } else { if (!tmp.mkdir(tmpDir)){ qDebug()<<"[EE] - Can't create temp directory at: "<<tmpDir; } } args << "-o" << tmpDir; args << fileName; Process exportProcess(args, CoreLib->getSetting("icotool", "wrestool").toString(), QDir::homePath(), tr("Exporting icon from binary file.<br>This can take a while..."), tr("Exporting icon"), FALSE); if (exportProcess.exec()==QDialog::Accepted){ //icotool -x -o ./regedit.png --width=32 --height=32 ./regedit.exe_14_100_0.ico args.clear(); args << "-x"; QDir ico_dir(tmpDir); // Updating file index list = ico_dir.entryInfoList(); //Creating file list for converting for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); qDebug() << fileInfo.fileName(); if (fileInfo.fileName().right(3)=="ico") args << fileInfo.filePath(); } args << "-o" << QString("%1/").arg(tmpDir); //Converting ico files to png //Look here, this function checks is some icons found, or not. 5 -- is default number of arguments, //if more -- then we have some ico file to convert if (args.size()>=4){ Process exportProcess(args, CoreLib->getSetting("icotool", "icotool").toString(), QDir::homePath(), tr("Convering icon from binary file.<br>This can take a while..."), tr("Converting icon"), FALSE); if (exportProcess.exec()==QDialog::Accepted){ IconsView iconsView(tmpDir); if (iconsView.exec()==QDialog::Accepted){ fileName=iconsView.selectedFile; cmdGetIcon->setIcon (QIcon(fileName)); } else { fileName.clear(); } } } else { IconsView iconsView(tmpDir); if (iconsView.exec()==QDialog::Accepted){ fileName=iconsView.selectedFile; cmdGetIcon->setIcon (QIcon(fileName)); } else { fileName.clear(); } } } else { qDebug()<<"wrestool testing Rejected"; fileName.clear(); } //Clearing temp files list = tmp.entryInfoList(); //Creating file list for converting for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); if (!QFile::remove(fileInfo.filePath())) qDebug()<<"[EE] - Can't delete files at: "<<fileInfo.filePath(); } if (!tmp.rmdir(tmpDir)) qDebug()<<"[EE] - Can't delete tmp dir: "<<tmpDir; } if (!fileName.isEmpty()) iconPath=fileName; } return; }