void PlaylistDialog::editScript() { Preferences *pPref = Preferences::get_instance(); if( pPref->getDefaultEditor().isEmpty() ){ QMessageBox::information ( this, "Hydrogen", trUtf8 ( "No Default Editor Set. Please set your Default Editor\nDo not use a console based Editor\nSorry, but this will not work for the moment." ) ); static QString lastUsedDir = "/usr/bin/"; QFileDialog fd(this); fd.setFileMode ( QFileDialog::ExistingFile ); fd.setDirectory ( lastUsedDir ); fd.setWindowTitle ( trUtf8 ( "Set your Default Editor" ) ); QString filename; if ( fd.exec() == QDialog::Accepted ){ filename = fd.selectedFiles().first(); pPref->setDefaultEditor( filename ); } } QTreeWidgetItem* pPlaylistItem = m_pPlaylistTree->currentItem(); if ( pPlaylistItem == NULL ){ QMessageBox::information ( this, "Hydrogen", trUtf8 ( "No Song selected!" ) ); return; } QString selected; selected = pPlaylistItem->text ( 1 ); QString filename = pPref->getDefaultEditor() + " " + selected + "&"; if( !QFile( selected ).exists() ){ QMessageBox::information ( this, "Hydrogen", trUtf8 ( "No Script selected!" )); return; } char *file; file = new char[ filename.length() + 1 ]; strcpy( file , filename.toAscii() ); int ret = std::system( file ); delete [] file; return; }
void PlaylistDialog::newScript() { Preferences *pPref = Preferences::get_instance(); QString sDirectory = ( Preferences::get_instance()->getDataDirectory() + "scripts/"); QFileDialog fd(this); fd.setFileMode ( QFileDialog::AnyFile ); fd.setFilter ( trUtf8 ( "Hydrogen Scripts (*.sh)" ) ); fd.setAcceptMode ( QFileDialog::AcceptSave ); fd.setWindowTitle ( trUtf8 ( "New Script" ) ); fd.setDirectory ( sDirectory ); QString defaultFilename; defaultFilename += ".sh"; fd.selectFile ( defaultFilename ); QString filename; if ( fd.exec() != QDialog::Accepted ) return; filename = fd.selectedFiles().first(); if( filename.contains(" ", Qt::CaseInsensitive)){ QMessageBox::information ( this, "Hydrogen", trUtf8 ( "Script name or path to the script contains whitespaces.\nIMPORTANT\nThe path to the script and the scriptname must without whitespaces.") ); return; } QFile chngPerm ( filename ); if (!chngPerm.open(QIODevice::WriteOnly | QIODevice::Text)) return; QTextStream out(&chngPerm); out << "#!/bin/sh\n\n#have phun"; chngPerm.close(); if (chngPerm.exists() ) { chngPerm.setPermissions( QFile::ReadOwner|QFile::WriteOwner|QFile::ExeOwner ); QMessageBox::information ( this, "Hydrogen", trUtf8 ( "WARNING, the new file is executable by the owner of the file!" ) ); } if( pPref->getDefaultEditor().isEmpty() ){ QMessageBox::information ( this, "Hydrogen", trUtf8 ( "No Default Editor Set. Please set your Default Editor\nDo not use a console based Editor\nSorry, but this will not work for the moment." ) ); static QString lastUsedDir = "/usr/bin/"; QFileDialog fd(this); fd.setFileMode ( QFileDialog::ExistingFile ); fd.setDirectory ( lastUsedDir ); fd.setWindowTitle ( trUtf8 ( "Set your Default Editor" ) ); QString filename; if ( fd.exec() == QDialog::Accepted ){ filename = fd.selectedFiles().first(); pPref->setDefaultEditor( filename ); } } QString openfile = pPref->getDefaultEditor() + " " + filename + "&"; char *ofile; ofile = new char[openfile.length() + 1]; strcpy(ofile, openfile.toAscii()); int ret = std::system( ofile ); delete [] ofile; return; }