void SevenZipArch::addFile( const TQStringList & urls ) { TDEProcess *kp = m_currentProcess = new TDEProcess; kp->clearArguments(); *kp << m_archiver_program << "a" ; if ( !m_password.isEmpty() ) *kp << "-p" + m_password; KURL url( urls.first() ); TQDir::setCurrent( url.directory() ); *kp << m_filename; TQStringList::ConstIterator iter; for ( iter = urls.begin(); iter != urls.end(); ++iter ) { KURL url( *iter ); *kp << url.fileName(); } connect( kp, TQT_SIGNAL( receivedStdout(TDEProcess*, char*, int) ), TQT_SLOT( slotReceivedOutput(TDEProcess*, char*, int) ) ); connect( kp, TQT_SIGNAL( receivedStderr(TDEProcess*, char*, int) ), TQT_SLOT( slotReceivedOutput(TDEProcess*, char*, int) ) ); connect( kp, TQT_SIGNAL( processExited(TDEProcess*) ), TQT_SLOT( slotAddExited(TDEProcess*) ) ); if ( !kp->start( TDEProcess::NotifyOnExit, TDEProcess::AllOutput ) ) { KMessageBox::error( 0, i18n( "Could not start a subprocess." ) ); emit sigAdd( false ); } }
void ZipArch::addFile( const QStringList &urls ) { KProcess *kp = m_currentProcess = new KProcess; kp->clearArguments(); *kp << m_archiver_program; if ( !m_password.isEmpty() ) *kp << "-P" << m_password; if ( ArkSettings::rarRecurseSubdirs() ) *kp << "-r"; if ( ArkSettings::rarStoreSymlinks() ) *kp << "-y"; if ( ArkSettings::forceMSDOS() ) *kp << "-k"; if ( ArkSettings::convertLF2CRLF() ) *kp << "-l"; if ( ArkSettings::replaceOnlyWithNewer() ) *kp << "-u"; *kp << m_filename; QStringList::ConstIterator iter; KURL url( urls.first() ); QDir::setCurrent( url.directory() ); for ( iter = urls.begin(); iter != urls.end(); ++iter ) { KURL fileURL( *iter ); *kp << fileURL.fileName(); } connect( kp, SIGNAL( receivedStdout(KProcess*, char*, int) ), SLOT( slotReceivedOutput(KProcess*, char*, int) ) ); connect( kp, SIGNAL( receivedStderr(KProcess*, char*, int) ), SLOT( slotReceivedOutput(KProcess*, char*, int) ) ); connect( kp, SIGNAL( processExited(KProcess*) ), SLOT( slotAddExited(KProcess*) ) ); if ( !kp->start( KProcess::NotifyOnExit, KProcess::AllOutput ) ) { KMessageBox::error( 0, i18n( "Could not start a subprocess." ) ); emit sigAdd( false ); } }
//! mix une liste de signaux sur n bus siglist mix(const siglist& lsig, int nbus) { int nlines = (int)lsig.size(); siglist dst(nbus); for (int b=0; b<nbus; b++) { Tree t = (b<nlines) ? lsig[b] : sigInt(0); for (int i=b+nbus; i<nlines; i+=nbus) { t = sigAdd(t, lsig[i]); } dst[b] = t; } return dst; }
void ZooArch::addFile( const QStringList &urls ) { KProcess *kp = m_currentProcess = new KProcess; kp->clearArguments(); *kp << m_archiver_program; if ( ArkSettings::replaceOnlyWithNewer() ) *kp << "-update"; else *kp << "-add"; *kp << m_filename; KURL url( urls.first() ); QDir::setCurrent( url.directory() ); QStringList::ConstIterator iter; for ( iter = urls.begin(); iter != urls.end(); ++iter ) { KURL fileURL( *iter ); *kp << fileURL.fileName(); } connect( kp, SIGNAL( receivedStdout(KProcess*, char*, int) ), SLOT( slotReceivedOutput(KProcess*, char*, int) ) ); connect( kp, SIGNAL( receivedStderr(KProcess*, char*, int) ), SLOT( slotReceivedOutput(KProcess*, char*, int) ) ); connect( kp, SIGNAL( processExited(KProcess*) ), SLOT( slotAddExited(KProcess*) ) ); if ( !kp->start( KProcess::NotifyOnExit, KProcess::AllOutput ) ) { KMessageBox::error( 0, i18n( "Could not start a subprocess." ) ); emit sigAdd( false ); } }
siglist realPropagate (Tree slotenv, Tree path, Tree box, const siglist& lsig) { int i; double r; prim0 p0; prim1 p1; prim2 p2; prim3 p3; prim4 p4; prim5 p5; Tree t1, t2, ff, label, cur, min, max, step, type, name, file, slot, body, chan; tvec wf; xtended* xt = (xtended*)getUserData(box); // Extended Primitives if (xt) { faustassert(lsig.size() == xt->arity()); return makeList(xt->computeSigOutput(lsig)); } // Numbers and Constants else if (isBoxInt(box, &i)) { faustassert(lsig.size()==0); return makeList(sigInt(i)); } else if (isBoxReal(box, &r)) { faustassert(lsig.size()==0); return makeList(sigReal(r)); } // A Waveform has two outputs it size and a period signal representing its content else if (isBoxWaveform(box)) { faustassert(lsig.size()==0); const tvec br = box->branches(); return listConcat(makeList(sigInt(int(br.size()))), makeList(sigWaveform(br))); } else if (isBoxFConst(box, type, name, file)) { faustassert(lsig.size()==0); return makeList(sigFConst(type, name, file)); } else if (isBoxFVar(box, type, name, file)) { faustassert(lsig.size()==0); return makeList(sigFVar(type, name, file)); } // Wire and Cut else if (isBoxCut(box)) { faustassert(lsig.size()==1); return siglist(); } else if (isBoxWire(box)) { faustassert(lsig.size()==1); return lsig; } // Slots and Symbolic Boxes else if (isBoxSlot(box)) { Tree sig; faustassert(lsig.size()==0); if (!searchEnv(box,sig,slotenv)) { // test YO simplification des diagrames //fprintf(stderr, "propagate : internal error (slot undefined)\n"); sig = sigInput(++gGlobal->gDummyInput); } return makeList(sig); } else if (isBoxSymbolic(box, slot, body)) { faustassert(lsig.size()>0); return propagate(pushEnv(slot,lsig[0],slotenv), path, body, listRange(lsig, 1, (int)lsig.size())); } // Primitives else if (isBoxPrim0(box, &p0)) { faustassert(lsig.size()==0); return makeList(p0()); } else if (isBoxPrim1(box, &p1)) { faustassert(lsig.size()==1); return makeList(p1(lsig[0])); } else if (isBoxPrim2(box, &p2)) { // printf("prim2 recoit : "); print(lsig); printf("\n"); faustassert(lsig.size()==2); if (p2 == &sigEnable) { if (gGlobal->gEnableFlag) { // special case for sigEnable that requires a transformation // enable(X,Y) -> sigEnable(X*Y, Y>0) return makeList(sigEnable( sigMul(lsig[0],lsig[1]), sigGT(lsig[1],sigReal(0.0)))); } else { // We gEnableFlag is false we replace enable by a simple multiplication return makeList(sigMul(lsig[0],lsig[1])); } } else if (p2 == &sigControl) { if (gGlobal->gEnableFlag) { // special case for sigEnable that requires a transformation // enable(X,Y) -> sigEnable(X*Y, Y>0) return makeList(sigEnable( lsig[0], lsig[1])); } else { // We gEnableFlag is false we replace control by identity function return makeList(lsig[0]); } } return makeList( p2(lsig[0],lsig[1]) ); } else if (isBoxPrim3(box, &p3)) { faustassert(lsig.size()==3); return makeList(p3(lsig[0],lsig[1],lsig[2])); } else if (isBoxPrim4(box, &p4)) { faustassert(lsig.size()==4); return makeList(p4(lsig[0],lsig[1],lsig[2],lsig[3])); } else if (isBoxPrim5(box, &p5)) { faustassert(lsig.size()==5); return makeList(p5(lsig[0],lsig[1],lsig[2],lsig[3],lsig[4])); } else if (isBoxFFun(box, ff)) { //cerr << "propagate en boxFFun of arity " << ffarity(ff) << endl; faustassert(int(lsig.size())==ffarity(ff)); return makeList(sigFFun(ff, listConvert(lsig))); } // User Interface Widgets else if (isBoxButton(box, label)) { faustassert(lsig.size()==0); return makeList(sigButton(normalizePath(cons(label, path)))); } else if (isBoxCheckbox(box, label)) { faustassert(lsig.size()==0); return makeList(sigCheckbox(normalizePath(cons(label, path)))); } else if (isBoxVSlider(box, label, cur, min, max, step)) { faustassert(lsig.size()==0); return makeList(sigVSlider(normalizePath(cons(label, path)), cur, min, max, step)); } else if (isBoxHSlider(box, label, cur, min, max, step)) { faustassert(lsig.size()==0); return makeList(sigHSlider(normalizePath(cons(label, path)), cur, min, max, step)); } else if (isBoxNumEntry(box, label, cur, min, max, step)) { faustassert(lsig.size()==0); return makeList(sigNumEntry(normalizePath(cons(label, path)), cur, min, max, step)); } else if (isBoxVBargraph(box, label, min, max)) { faustassert(lsig.size()==1); return makeList(sigVBargraph(normalizePath(cons(label, path)), min, max, lsig[0])); } else if (isBoxHBargraph(box, label, min, max)) { faustassert(lsig.size()==1); return makeList(sigHBargraph(normalizePath(cons(label, path)), min, max, lsig[0])); } else if (isBoxSoundfile(box, label, chan)) { faustassert(lsig.size()==1); Tree fullpath = normalizePath(cons(label, path)); Tree soundfile = sigSoundfile(fullpath); int c = tree2int(chan); siglist lsig2(c+3); lsig2[0] = sigSoundfileLength(soundfile); lsig2[1] = sigSoundfileRate(soundfile); lsig2[2] = sigSoundfileChannels(soundfile); // compute bound limited read index : int(max(0, min(ridx,length-1))) Tree ridx = sigIntCast(tree(gGlobal->gMaxPrim->symbol(), sigInt(0), tree(gGlobal->gMinPrim->symbol(), lsig[0], sigAdd(lsig2[0],sigInt(-1))))); for (int i = 0; i<c; i++) { lsig2[i+3] = sigSoundfileBuffer(soundfile, sigInt(i), ridx); } return lsig2; } // User Interface Groups else if (isBoxVGroup(box, label, t1)) { return propagate(slotenv,cons(cons(tree(0),label), path), t1, lsig); } else if (isBoxHGroup(box, label, t1)) { return propagate(slotenv, cons(cons(tree(1),label), path), t1, lsig); } else if (isBoxTGroup(box, label, t1)) { return propagate(slotenv, cons(cons(tree(2),label), path), t1, lsig); } // Block Diagram Composition Algebra else if (isBoxSeq(box, t1, t2)) { int in1, out1, in2, out2; getBoxType(t1, &in1, &out1); getBoxType(t2, &in2, &out2); faustassert(out1==in2); if (out1 == in2) { return propagate(slotenv, path, t2, propagate(slotenv, path,t1,lsig)); } else if (out1 > in2) { siglist lr = propagate(slotenv, path, t1,lsig); return listConcat(propagate(slotenv, path, t2, listRange(lr, 0, in2)), listRange(lr, in2, out1)); } else { return propagate(slotenv, path, t2, listConcat( propagate(slotenv, path, t1, listRange(lsig,0,in1)), listRange(lsig,in1,in1+in2-out1))); } } else if (isBoxPar(box, t1, t2)) { int in1, out1, in2, out2; getBoxType(t1, &in1, &out1); getBoxType(t2, &in2, &out2); return listConcat(propagate(slotenv, path, t1, listRange(lsig, 0, in1)), propagate(slotenv, path, t2, listRange(lsig, in1, in1+in2))); } else if (isBoxSplit(box, t1, t2)) { int in1, out1, in2, out2; getBoxType(t1, &in1, &out1); getBoxType(t2, &in2, &out2); siglist l1 = propagate(slotenv, path, t1, lsig); siglist l2 = split(l1, in2); return propagate(slotenv, path, t2, l2); } else if (isBoxMerge(box, t1, t2)) { int in1, out1, in2, out2; getBoxType(t1, &in1, &out1); getBoxType(t2, &in2, &out2); siglist l1 = propagate(slotenv, path, t1, lsig); siglist l2 = mix(l1, in2); return propagate(slotenv, path, t2, l2); } else if (isBoxRec(box, t1, t2)) { // Bug Corrected int in1, out1, in2, out2; getBoxType(t1, &in1, &out1); getBoxType(t2, &in2, &out2); Tree slotenv2 = lift(slotenv); // the environment must also be lifted siglist l0 = makeMemSigProjList(ref(1), in2); siglist l1 = propagate(slotenv2, path, t2, l0); siglist l2 = propagate(slotenv2, path, t1, listConcat(l1,listLift(lsig))); siglist l3 = (gGlobal->gFTZMode > 0) ? wrapWithFTZ(l2) : l2; Tree g = rec(listConvert(l3)); return makeSigProjList(g, out1); } stringstream error; error << "ERROR in file " << __FILE__ << ':' << __LINE__ << ", unrecognised box expression : " << boxpp(box) << endl; throw faustexception(error.str()); return siglist(); }