[771] | 1 | #include "soundpagefinal.h"
|
---|
| 2 | #include "ui_soundpagefinal.h"
|
---|
| 3 |
|
---|
[1093] | 4 | SoundPageFinal::SoundPageFinal(QString AppDir, QString soundsLocation, DropTableWidget *page2Table, QHash<QString, QString> *commandMap, QWidget *parent) :
|
---|
[771] | 5 | QWizardPage(parent),
|
---|
| 6 | ui(new Ui::soundpagefinal)
|
---|
| 7 | {
|
---|
| 8 | ui->setupUi(this);
|
---|
| 9 | this->soundsLocation=soundsLocation;
|
---|
| 10 | this->page2Table=page2Table;
|
---|
| 11 | this->commandMap=commandMap;
|
---|
| 12 |
|
---|
| 13 | this->xmlCommands = new QStringList();
|
---|
| 14 | this->oniSplitCommands = new QStringList();
|
---|
[1093] | 15 | this->myXmlProcessor = new XmlProcessor(AppDir, this->xmlCommands);
|
---|
| 16 | this->myConverter = new Converter(AppDir,this->oniSplitCommands);
|
---|
[771] | 17 |
|
---|
[790] | 18 | ui->lbComplete->setText("<html>The wizard is now complete. The sounds have been converted. "
|
---|
| 19 | "You can view all converted files clicking <a href=' '>here.</a><br />"
|
---|
[1047] | 20 | "<br />Click restart to create more sounds from the wizard beggining, "
|
---|
[790] | 21 | "otherwise click finish.</html>"); // Don't use rich text in qtdesigner because it generates platform dependent code
|
---|
| 22 |
|
---|
[771] | 23 | connectSlots();
|
---|
| 24 | }
|
---|
| 25 |
|
---|
| 26 | void SoundPageFinal::openSoundsFolder(){
|
---|
| 27 | QString outputFolder;
|
---|
| 28 |
|
---|
| 29 | if(field("rbOther").toBool()){
|
---|
| 30 | outputFolder=field("leOtherLocation").toString();
|
---|
| 31 | }
|
---|
| 32 | else{
|
---|
| 33 | outputFolder=this->soundsLocation;
|
---|
| 34 | }
|
---|
| 35 |
|
---|
| 36 | QDesktopServices::openUrl(QUrl("file:///"+outputFolder));
|
---|
| 37 | }
|
---|
| 38 |
|
---|
| 39 | void SoundPageFinal::initializePage(){
|
---|
| 40 | startProcessing();
|
---|
| 41 | }
|
---|
| 42 |
|
---|
| 43 | void SoundPageFinal::startProcessing(){
|
---|
| 44 | // Sample files names
|
---|
| 45 | QString ambFile="OSBDsample_file.amb.xml";
|
---|
| 46 | QString grpFile="OSBDsample_file.grp.xml";
|
---|
[1054] | 47 | QString impFile="OSBDsample_file.imp.xml";
|
---|
[771] | 48 | QString ambFileLocation=GlobalVars::VagoTemporaryDir+"/"+ambFile;
|
---|
| 49 | QString grpFileLocation=GlobalVars::VagoTemporaryDir+"/"+grpFile;
|
---|
[1054] | 50 | QString impFileLocation=GlobalVars::VagoTemporaryDir+"/"+impFile;
|
---|
[771] | 51 |
|
---|
| 52 | // Page 2 variables
|
---|
| 53 | QString outputFolder;
|
---|
| 54 |
|
---|
| 55 | // Page 3 variables
|
---|
| 56 | QString sphereRadious, minElapsedTime, maxElapsedTime, minVolumeDistance,
|
---|
| 57 | maxVolumeDistance, minOcclusion, treshold, priority;
|
---|
| 58 | QStringList flags;
|
---|
| 59 | bool priorityLow = false, priorityNormal = false,
|
---|
| 60 | priorityHigh = false, priorityHighest = false;
|
---|
| 61 |
|
---|
| 62 | bool interruptOnStop=false;
|
---|
| 63 | bool playOnce=false;
|
---|
| 64 | bool canPan=false;
|
---|
| 65 |
|
---|
| 66 | // Page 4 variables
|
---|
| 67 | QString volume, minVolume, maxVolume, pitch, minPitch, weight, maxPitch,
|
---|
| 68 | numberChannels;
|
---|
| 69 | bool preventRepeat=false;
|
---|
| 70 | bool stereo22=false, mono22=false, mono44Pc=false;
|
---|
| 71 |
|
---|
[1054] | 72 | // Page 5 variables
|
---|
| 73 | QString minVolumeDistanceImp, maxVolumeDistanceImp, minAngleImp,
|
---|
| 74 | maxAngleImp, minAttenuationImp, impactVelocityImp,
|
---|
| 75 | minOcclusionImp, priorityImp;
|
---|
| 76 | bool priorityLowImp = false, priorityNormalImp = false,
|
---|
| 77 | priorityHighImp = false, priorityHighestImp = false;
|
---|
| 78 |
|
---|
[1059] | 79 | // Create temp folder if it doesn't exist
|
---|
| 80 | if(!QDir(GlobalVars::VagoTemporaryDir).exists()){
|
---|
| 81 | QDir().mkdir(GlobalVars::VagoTemporaryDir);
|
---|
| 82 | }
|
---|
| 83 |
|
---|
[771] | 84 | // Get data page 2
|
---|
| 85 | if(field("rbOther").toBool()){
|
---|
| 86 | outputFolder=field("leOtherLocation").toString();
|
---|
| 87 | }
|
---|
| 88 | else{
|
---|
| 89 | outputFolder=this->soundsLocation;
|
---|
| 90 | }
|
---|
| 91 |
|
---|
| 92 | // Get data page 3
|
---|
| 93 |
|
---|
| 94 | priorityLow=field("rbPriorityLow").toBool();
|
---|
| 95 | priorityNormal=field("rbPriorityNormal").toBool();
|
---|
| 96 | priorityHigh=field("rbPriorityHigh").toBool();
|
---|
| 97 | priorityHighest=field("rbPriorityHighest").toBool();
|
---|
[1061] | 98 | interruptOnStop=field("cbInterruptOnStop").toBool();
|
---|
| 99 | playOnce=field("cbPlayOnce").toBool();
|
---|
| 100 | canPan=field("cbCanPan").toBool();
|
---|
[771] | 101 |
|
---|
| 102 | if(priorityNormal){
|
---|
| 103 | priority="Normal";
|
---|
| 104 | }
|
---|
| 105 | else if(priorityLow){
|
---|
| 106 | priority="Low";
|
---|
| 107 | }
|
---|
| 108 | else if(priorityHigh){
|
---|
| 109 | priority="High";
|
---|
| 110 | }
|
---|
| 111 | else if(priorityHighest){
|
---|
| 112 | priority="Highest";
|
---|
| 113 | }
|
---|
| 114 |
|
---|
| 115 | if(interruptOnStop){
|
---|
| 116 | flags << "InterruptTracksOnStop";
|
---|
| 117 | }
|
---|
| 118 |
|
---|
| 119 | if(playOnce){
|
---|
| 120 | flags << "PlayOnce";
|
---|
| 121 | }
|
---|
| 122 |
|
---|
| 123 | if(canPan){
|
---|
| 124 | flags << "CanPan";
|
---|
| 125 | }
|
---|
| 126 |
|
---|
[1093] | 127 | sphereRadious=Util::String::normalizeDecimalSeparator(field("leSphereRadious").toString());
|
---|
| 128 | minElapsedTime=Util::String::normalizeDecimalSeparator(field("leMinElapsedTime").toString());
|
---|
| 129 | maxElapsedTime=Util::String::normalizeDecimalSeparator(field("leMaxElapsedTime").toString());
|
---|
| 130 | minVolumeDistance=Util::String::normalizeDecimalSeparator(field("leMinVolumeDistance").toString());
|
---|
| 131 | maxVolumeDistance=Util::String::normalizeDecimalSeparator(field("leMaxVolumeDistance").toString());
|
---|
| 132 | minOcclusion=Util::String::normalizeDecimalSeparator(field("leMinOcclusion").toString());
|
---|
| 133 | treshold=Util::String::normalizeDecimalSeparator(field("leTreshold").toString());
|
---|
[771] | 134 |
|
---|
| 135 | // Get data page 4
|
---|
| 136 |
|
---|
[1093] | 137 | volume=Util::String::normalizeDecimalSeparator(field("leVolume").toString());
|
---|
| 138 | minVolume=Util::String::normalizeDecimalSeparator(field("leMinVolume").toString());
|
---|
| 139 | maxVolume=Util::String::normalizeDecimalSeparator(field("leMaxVolume").toString());
|
---|
| 140 | pitch=Util::String::normalizeDecimalSeparator(field("lePitch").toString());
|
---|
| 141 | minPitch=Util::String::normalizeDecimalSeparator(field("leMinPitch").toString());
|
---|
| 142 | maxPitch=Util::String::normalizeDecimalSeparator(field("leMaxPitch").toString());
|
---|
| 143 | weight=Util::String::normalizeDecimalSeparator(field("leWeight").toString());
|
---|
[771] | 144 |
|
---|
| 145 | preventRepeat=field("cbPreventRepeat").toBool();
|
---|
| 146 |
|
---|
| 147 | stereo22=field("rbStereo22").toBool();
|
---|
| 148 | mono22=field("rbMono22").toBool();
|
---|
| 149 | mono44Pc=field("rbMono44Pc").toBool();
|
---|
| 150 |
|
---|
| 151 | if(stereo22 || mono44Pc){
|
---|
| 152 | numberChannels="2";
|
---|
| 153 | }
|
---|
| 154 | else if(mono22){
|
---|
| 155 | numberChannels="1";
|
---|
| 156 | }
|
---|
[1054] | 157 |
|
---|
| 158 | // Get data page 5
|
---|
| 159 | priorityLowImp=field("rbPriorityLowImp").toBool();
|
---|
| 160 | priorityNormalImp=field("rbPriorityNormalImp").toBool();
|
---|
| 161 | priorityHighImp=field("rbPriorityHighImp").toBool();
|
---|
| 162 | priorityHighestImp=field("rbPriorityHighestImp").toBool();
|
---|
| 163 |
|
---|
| 164 | if(priorityNormalImp){
|
---|
| 165 | priorityImp="Normal";
|
---|
| 166 | }
|
---|
| 167 | else if(priorityLowImp){
|
---|
| 168 | priorityImp="Low";
|
---|
| 169 | }
|
---|
| 170 | else if(priorityHighImp){
|
---|
| 171 | priorityImp="High";
|
---|
| 172 | }
|
---|
| 173 | else if(priorityHighestImp){
|
---|
| 174 | priorityImp="Highest";
|
---|
| 175 | }
|
---|
| 176 |
|
---|
[1093] | 177 | minVolumeDistanceImp=Util::String::normalizeDecimalSeparator(field("leMinVolumeDistanceImp").toString());
|
---|
| 178 | maxVolumeDistanceImp=Util::String::normalizeDecimalSeparator(field("leMaxVolumeDistanceImp").toString());
|
---|
| 179 | minAngleImp=Util::String::normalizeDecimalSeparator(field("leMinAngleImp").toString());
|
---|
| 180 | maxAngleImp=Util::String::normalizeDecimalSeparator(field("leMaxAngleImp").toString());
|
---|
| 181 | minAttenuationImp=Util::String::normalizeDecimalSeparator(field("leMinAttenuationImp").toString());
|
---|
| 182 | impactVelocityImp=Util::String::normalizeDecimalSeparator(field("leImpactVelocityImp").toString());
|
---|
| 183 | minOcclusionImp=Util::String::normalizeDecimalSeparator(field("leMinOcclusionImp").toString());
|
---|
[1054] | 184 |
|
---|
[771] | 185 | //######################################################### Starting xml processing
|
---|
| 186 |
|
---|
| 187 | // Clean tmp dir
|
---|
[1093] | 188 | if(!Util::FileSystem::rmDir(GlobalVars::VagoTemporaryDir)){
|
---|
| 189 | UtilVago::showAndLogErrorPopUpLogButton("Couldn't clean vago temp dir for complete sound wizard. Aborting.\n"+GlobalVars::VagoTemporaryDir);
|
---|
[771] | 190 | return;
|
---|
| 191 | }
|
---|
| 192 |
|
---|
| 193 | if(!QDir(QDir::tempPath()).mkpath("VagoTemp")){
|
---|
[1093] | 194 | UtilVago::showAndLogErrorPopUpLogButton("Couldn't reconstruct vago temp dir for complete sound wizard. Aborting.\n"+GlobalVars::VagoTemporaryDir);
|
---|
[771] | 195 | }
|
---|
| 196 |
|
---|
| 197 | // Copy sample xml files to tmp dir
|
---|
| 198 | QFile::copy(":/new/sampleFiles/"+ambFile , ambFileLocation);
|
---|
| 199 | QFile::copy(":/new/sampleFiles/"+grpFile , grpFileLocation);
|
---|
[1054] | 200 | QFile::copy(":/new/sampleFiles/"+impFile , impFileLocation);
|
---|
[771] | 201 | QFile::setPermissions(ambFileLocation, QFile::ReadOwner | QFile::WriteOwner); //remove read only attribute that come from resources
|
---|
| 202 | QFile::setPermissions(grpFileLocation, QFile::ReadOwner | QFile::WriteOwner);
|
---|
[1054] | 203 | QFile::setPermissions(impFileLocation, QFile::ReadOwner | QFile::WriteOwner);
|
---|
[771] | 204 |
|
---|
[1047] | 205 | (*this->xmlCommands)
|
---|
[1093] | 206 | << "--replace-all-values -e Priority -n "+Util::String::insertQuotes(priority)+" -f "+Util::String::insertQuotes(ambFileLocation)+" --no-backups --no-verbose"
|
---|
| 207 | << "--replace-all-values -e Flags -n "+(flags.join(" ").isEmpty() ? Util::String::insertQuotes("") : Util::String::insertQuotes(flags.join(" ")))+" -f "+Util::String::insertQuotes(ambFileLocation)+" --no-backups --no-verbose"
|
---|
| 208 | << "--replace-all-values -e SphereRadius -n "+Util::String::insertQuotes(sphereRadious)+" -f "+Util::String::insertQuotes(ambFileLocation)+" --no-backups --no-verbose"
|
---|
| 209 | << "--replace-all-values -e Treshold -n "+Util::String::insertQuotes(treshold)+" -f "+Util::String::insertQuotes(ambFileLocation)+" --no-backups --no-verbose"
|
---|
| 210 | << "--replace-all-values -e MinOcclusion -n "+Util::String::insertQuotes(minOcclusion)+" -f "+Util::String::insertQuotes(ambFileLocation)+" --no-backups --no-verbose"
|
---|
| 211 | << "--replace-all-values --parent-element-name ElapsedTime -e Max -n "+Util::String::insertQuotes(maxElapsedTime)+" -f "+Util::String::insertQuotes(ambFileLocation)+" --no-backups --no-verbose"
|
---|
| 212 | << "--replace-all-values --parent-element-name ElapsedTime -e Min -n "+Util::String::insertQuotes(minElapsedTime)+" -f "+Util::String::insertQuotes(ambFileLocation)+" --no-backups --no-verbose"
|
---|
| 213 | << "--replace-all-values --parent-element-name Distance -e Max -n "+Util::String::insertQuotes(maxVolumeDistance)+" -f "+Util::String::insertQuotes(ambFileLocation)+" --no-backups --no-verbose"
|
---|
| 214 | << "--replace-all-values --parent-element-name Distance -e Min -n "+Util::String::insertQuotes(minVolumeDistance)+" -f "+Util::String::insertQuotes(ambFileLocation)+" --no-backups --no-verbose"
|
---|
| 215 | << "--replace-all-values --parent-element-name SoundGroup -e Volume -n "+Util::String::insertQuotes(volume)+" -f "+Util::String::insertQuotes(grpFileLocation)+" --no-backups --no-verbose"
|
---|
| 216 | << "--replace-all-values --parent-element-name SoundGroup -e Pitch -n "+Util::String::insertQuotes(pitch)+" -f "+Util::String::insertQuotes(grpFileLocation)+" --no-backups --no-verbose"
|
---|
| 217 | << "--replace-all-values --parent-element-name SoundGroup -e NumberOfChannels -n "+Util::String::insertQuotes(numberChannels)+" -f "+Util::String::insertQuotes(grpFileLocation)+" --no-backups --no-verbose"
|
---|
| 218 | << "--replace-all-values --parent-element-name Volume -e Min -n "+Util::String::insertQuotes(minVolume)+" -f "+Util::String::insertQuotes(grpFileLocation)+" --no-backups --no-verbose"
|
---|
| 219 | << "--replace-all-values --parent-element-name Volume -e Max -n "+Util::String::insertQuotes(maxVolume)+" -f "+Util::String::insertQuotes(grpFileLocation)+" --no-backups --no-verbose"
|
---|
| 220 | << "--replace-all-values --parent-element-name Pitch -e Min -n "+Util::String::insertQuotes(minPitch)+" -f "+Util::String::insertQuotes(grpFileLocation)+" --no-backups --no-verbose"
|
---|
| 221 | << "--replace-all-values --parent-element-name Pitch -e Max -n "+Util::String::insertQuotes(maxPitch)+" -f "+Util::String::insertQuotes(grpFileLocation)+" --no-backups --no-verbose"
|
---|
| 222 | << "--replace-all-values -e Weight -n "+Util::String::insertQuotes(weight)+" -f "+Util::String::insertQuotes(grpFileLocation)+" --no-backups --no-verbose"
|
---|
| 223 | << "--replace-all-values -e Priority -n "+Util::String::insertQuotes(priorityImp)+" -f "+Util::String::insertQuotes(impFileLocation)+" --no-backups --no-verbose"
|
---|
| 224 | << "--replace-all-values --parent-element-name Distance -e Min -n "+Util::String::insertQuotes(minVolumeDistanceImp)+" -f "+Util::String::insertQuotes(impFileLocation)+" --no-backups --no-verbose"
|
---|
| 225 | << "--replace-all-values --parent-element-name Distance -e Max -n "+Util::String::insertQuotes(maxVolumeDistanceImp)+" -f "+Util::String::insertQuotes(impFileLocation)+" --no-backups --no-verbose"
|
---|
| 226 | << "--replace-all-values --parent-element-name Angle -e Min -n "+Util::String::insertQuotes(minAngleImp)+" -f "+Util::String::insertQuotes(impFileLocation)+" --no-backups --no-verbose"
|
---|
| 227 | << "--replace-all-values --parent-element-name Angle -e Max -n "+Util::String::insertQuotes(maxAngleImp)+" -f "+Util::String::insertQuotes(impFileLocation)+" --no-backups --no-verbose"
|
---|
| 228 | << "--replace-all-values -e MinAttenuation -n "+Util::String::insertQuotes(minAttenuationImp)+" -f "+Util::String::insertQuotes(impFileLocation)+" --no-backups --no-verbose"
|
---|
| 229 | << "--replace-all-values -e ImpactVelocity -n "+Util::String::insertQuotes(impactVelocityImp)+" -f "+Util::String::insertQuotes(impFileLocation)+" --no-backups --no-verbose"
|
---|
| 230 | << "--replace-all-values -e MinOcclusion -n "+Util::String::insertQuotes(minOcclusionImp)+" -f "+Util::String::insertQuotes(impFileLocation)+" --no-backups --no-verbose";
|
---|
[771] | 231 |
|
---|
| 232 | if(preventRepeat){
|
---|
[1093] | 233 | (*this->xmlCommands) << "--replace-all-values --parent-element-name SoundGroup -e Flags -n PreventRepeat -f "+Util::String::insertQuotes(grpFileLocation)+" --no-backups --no-verbose";
|
---|
[771] | 234 | }
|
---|
| 235 |
|
---|
| 236 | myXmlProcessor->start();
|
---|
| 237 | myXmlProcessor->wait(); // Wait until all xml is edited
|
---|
| 238 |
|
---|
| 239 | QString currFileName;
|
---|
| 240 | QString currGrpFileLocation;
|
---|
| 241 | QString currAmbFileLocation;
|
---|
[1054] | 242 | QString currImpFileLocation;
|
---|
[771] | 243 |
|
---|
| 244 | for(int i=0; i<this->page2Table->rowCount(); i++){
|
---|
| 245 |
|
---|
[1093] | 246 | (*this->oniSplitCommands) << this->commandMap->value("xml->XML->ONI")+" "+Util::String::insertQuotes(outputFolder)+" "+Util::String::insertQuotes(this->page2Table->item(i,1)->text()); // add location of sound file to convert
|
---|
[771] | 247 |
|
---|
| 248 | currFileName=this->page2Table->item(i,0)->text(); // get current file name
|
---|
[1054] | 249 | currAmbFileLocation = outputFolder + "/" + QString(ambFile).replace("sample_file",currFileName); // get the new files, filenames
|
---|
| 250 | currGrpFileLocation = outputFolder + "/" + QString(grpFile).replace("sample_file",currFileName);
|
---|
| 251 | currImpFileLocation = outputFolder + "/" + QString(impFile).replace("sample_file",currFileName);
|
---|
[771] | 252 |
|
---|
| 253 | QFile::copy(ambFileLocation, currAmbFileLocation); // make a copy of the sample files that will be the real files
|
---|
| 254 | QFile::copy(grpFileLocation, currGrpFileLocation);
|
---|
[1054] | 255 | QFile::copy(impFileLocation, currImpFileLocation);
|
---|
[771] | 256 |
|
---|
[1093] | 257 | (*this->xmlCommands) << "--replace-all-values -e BaseTrack1 -n "+Util::String::insertQuotes(currFileName)+" -f "+Util::String::insertQuotes(currAmbFileLocation)+" --no-backups --no-verbose" // process the xml
|
---|
| 258 | << "--replace-all-values -e Sound -n "+Util::String::insertQuotes(currFileName)+" -f "+Util::String::insertQuotes(currGrpFileLocation)+" --no-backups --no-verbose"
|
---|
| 259 | << "--replace-all-values -e Group -n "+Util::String::insertQuotes(currFileName)+" -f "+Util::String::insertQuotes(currImpFileLocation)+" --no-backups --no-verbose";
|
---|
[771] | 260 |
|
---|
| 261 | myXmlProcessor->start();
|
---|
| 262 | myXmlProcessor->wait(); // Wait until all xml is edited
|
---|
[1054] | 263 |
|
---|
[1093] | 264 | (*this->oniSplitCommands) << this->commandMap->value("xml->XML->ONI")+" "+Util::String::insertQuotes(outputFolder)+" "+Util::String::insertQuotes(currAmbFileLocation);
|
---|
| 265 | (*this->oniSplitCommands) << this->commandMap->value("xml->XML->ONI")+" "+Util::String::insertQuotes(outputFolder)+" "+Util::String::insertQuotes(currGrpFileLocation);
|
---|
| 266 | (*this->oniSplitCommands) << this->commandMap->value("xml->XML->ONI")+" "+Util::String::insertQuotes(outputFolder)+" "+Util::String::insertQuotes(currImpFileLocation);
|
---|
[771] | 267 | }
|
---|
| 268 |
|
---|
| 269 | this->myConverter->start(); // finally process the onisplit commands
|
---|
| 270 | this->myConverter->wait(); // wait for it to complete
|
---|
| 271 | }
|
---|
| 272 |
|
---|
| 273 | void SoundPageFinal::catchXmlAndOSplitProcessingError(QString result, int numErrors){
|
---|
| 274 |
|
---|
| 275 | if(numErrors!=0){
|
---|
| 276 | QString sNumErrors=QString::number(numErrors);
|
---|
| 277 | if(numErrors>1){
|
---|
[1054] | 278 | UtilVago::showErrorPopUpLogButton(result+"\n This is the last of " + sNumErrors + " errors.");
|
---|
[771] | 279 | }
|
---|
| 280 | else{
|
---|
[1047] | 281 | UtilVago::showErrorPopUpLogButton(result);
|
---|
[771] | 282 | }
|
---|
| 283 | }
|
---|
| 284 | }
|
---|
| 285 |
|
---|
| 286 | void SoundPageFinal::connectSlots(){
|
---|
| 287 | //This signal is for thread that is working setup the progress bar (make it visible and set it's min-max)
|
---|
| 288 | connect(this->myXmlProcessor, SIGNAL(resultConversion(QString, int)), this, SLOT(catchXmlAndOSplitProcessingError(QString, int)));
|
---|
| 289 | connect(this->myConverter, SIGNAL(resultConversion(QString, int)), this, SLOT(catchXmlAndOSplitProcessingError(QString, int)));
|
---|
| 290 | connect(ui->lbComplete, SIGNAL(linkActivated(const QString & )), this, SLOT(openSoundsFolder()));
|
---|
| 291 | }
|
---|
| 292 |
|
---|
| 293 | SoundPageFinal::~SoundPageFinal()
|
---|
| 294 | {
|
---|
| 295 | delete this->xmlCommands;
|
---|
| 296 | delete this->oniSplitCommands;
|
---|
| 297 | delete this->myXmlProcessor;
|
---|
| 298 | delete this->myConverter;
|
---|
| 299 | delete ui;
|
---|
| 300 | }
|
---|