Esempio n. 1
0
Xml Xml::parse( const char *src , int& len , bool& p_error ) {
	if( src == NULL )
		return( Xml() );

	// parse
	TiXmlDocument *doc = new TiXmlDocument();

	Xml xml;
	try {
		const char *res = doc -> Parse( src );
		if( res != NULL ) {
			p_error = false;
			len = res - src;
			xml.attach( doc , doc -> FirstChildElement() );
		}
	}
	catch( RuntimeException& e ) {
		Logger log;
		log.attachRoot();
		log.printStack( e );
		p_error = true;
		len = 0;
	}

	return( xml );
}
Esempio n. 2
0
Xml AdminApiSocket::execute( Xml req ) {
    ASSERTMSG( connected , "Not connected" );

    // get request ID
    String requestId = req.getAttribute( "requestId" , "" );
    if( requestId.isEmpty() )
        requestId = setXmlRequestId( req );
    String request = req.serialize();

    bool disconnected = false;
    protocol.writeMessage( socket , request , disconnected );
    if( disconnected )
        connected = false;
    ASSERTMSG( connected , "Connection is closed from server side while making request" );

    String response;
    if( !protocol.readMessage( socket , response , true , disconnected ) ) {
        if( disconnected )
            connected = false;
        ASSERTMSG( connected , "Connection is closed from server side while reading response" );
        ASSERTFAILED( "Timeout while waiting response for request=" + requestId );
        return( Xml() );
    }

    Xml xml = Xml::read( response , "xmlcallresult" );
    return( xml );
}
Esempio n. 3
0
StepsNewGesture::StepsNewGesture(ExecutionManager *pExecutionManager, int pNumberOfGesture, QWidget *parent)
{
    int labelFontSize = 23;
    QColor labelColor = QColor(210,210,210);

    this->executionManager = pExecutionManager;
    this->commandChooser = new CommandChooser(parent);

    this->stepper = new StepperNewGesture(this->executionManager, this->commandChooser, pNumberOfGesture, parent);

    /* Local */
    QString locale = QLocale::system().name().section('_', 0, 0);
    XmlConf* conf = Xml().importConfig(Utils::getConfigLocation());
    if (conf != NULL)
    {
        if (conf->language != NULL)
        {
            locale = conf->language;
        }
    }
    if (locale.compare("en") != 0 && locale.compare("fr") != 0)
    {
        locale = "en";
    }

    /* STEP 0 */
    QWidget *step = new QWidget(stepper);
    QVBoxLayout* vLayoutStep = new QVBoxLayout(step);
    vLayoutStep->setMargin(0);
    Label* lblStepTop = new Label(tr("\n\nThe recording of a gesture MUST start and end with a neutral stance.\n\n"),step);
    lblStepTop->setTextColor(labelColor);
    lblStepTop->changeFontSize(16);
    lblStepTop->setPaintShadow(false);
    lblStepTop->setFixedHeight(60);
    lblStepTop->setPaintShadow(false);
    QLabel *picNeutral = new QLabel(step);
    QPixmap pix = QPixmap(Utils::getResourcesDirectory() + "/tuto/neutral_" + locale + ".png");
    picNeutral->setPixmap(pix);
    vLayoutStep->addWidget(lblStepTop);
    vLayoutStep->addWidget(picNeutral);
    stepper->addStep(tr("Information"),true,false,true, StepperNewGesture::First ,step);

    /* STEP 1 */
    Label *step1 = new Label(tr("You will have 5 seconds to place\nbefore registering your gesture\n1/") + QString::number(pNumberOfGesture),stepper);
    step1->changeFontSize(labelFontSize);
    step1->setTextColor(labelColor);
    step1->setPaintShadow(false);
    stepper->addStep(tr("Add a new gesture"),true,true,true, StepperNewGesture::StartTimer ,step1);

    /* STEP 2 */
    Label *step2 = new Label(tr("Ready ?"),stepper);
    step2->changeFontSize(labelFontSize);
    step2->setTextColor(labelColor);
    step2->setPaintShadow(false);
    stepper->addStep(tr("Add a new gesture"),false,true,true,StepperNewGesture::StartRecording ,step2);

    /* STEP 3 */
    QWidget* step3 = new QWidget(parent);
    QVBoxLayout* vLayoutStep3 = new QVBoxLayout(step3);
    GlView* glViewStep3= new GlView(step3);
    DAOLayer* dao = DAOLayer::getInstance();
    connect(dao, SIGNAL(skeletonDataReceived(QString)), glViewStep3,SLOT(skeletonDataReceived(QString)));
    Label* labelStep3 = new Label(tr("Realtime visualizer"), step3);
    labelStep3->setFixedHeight(50);
    labelStep3->changeFontSize(labelFontSize);
    labelStep3->setTextColor(labelColor);
    labelStep3->setPaintShadow(false);
    vLayoutStep3->addWidget(labelStep3);
    vLayoutStep3->addWidget(glViewStep3);
    glViewStep3->startAnimating();
    stepper->addStep(tr("Add a new gesture"),false,true,true,StepperNewGesture::VisualizeRecording ,step3);

    /* STEP 4 */
    QWidget* step4 = new QWidget(parent);
    QVBoxLayout* vLayoutStep4 = new QVBoxLayout(step4);
    this->glViewStep4= new GlView(step4);
    connect(this->executionManager, SIGNAL(gestureRecorded(Gesture*)), this, SLOT(gestureReceived(Gesture*)));
    Label *labelStep4 = new Label(tr("Is it the right gesture ?"),stepper);
    labelStep4->setFixedHeight(50);
    labelStep4->changeFontSize(labelFontSize);
    labelStep4->setTextColor(labelColor);
    labelStep4->setPaintShadow(false);
    vLayoutStep4->addWidget(labelStep4);
    vLayoutStep4->addWidget(this->glViewStep4);
    this->glViewStep4->startAnimating();
    stepper->addStep(tr("Add a new gesture"),true,true,true,StepperNewGesture::ConfigureAction,step4);

    /* STEP 5 */
    QWidget* step5 = new QWidget(parent);
    QVBoxLayout* vLayout = new QVBoxLayout(step5);


    QWidget* step5Bottom = new QWidget(step5);
    QHBoxLayout* hLayoutStep5 = new QHBoxLayout(step5Bottom);
    this->commandChooser->setParent(step5Bottom);

    ComboBox *combo = this->commandChooser->getCommandComboBox();
    KeyListener *keyListener = this->commandChooser->getCommandKeyListener();
    TextField *tfNewGesture = this->commandChooser->getCommandTextField();
    ButtonElement *btnCommand = this->commandChooser->getCommandButton();
    Label* labelRecordName = new Label("Record name : ",step5);
    labelRecordName->setPaintShadow(false);
    labelRecordName->setTextColor(labelColor);
    TextField *tfRecordName = this->commandChooser->getRecordNameTextField();


    hLayoutStep5->addWidget(combo);
    hLayoutStep5->addWidget(keyListener);
    hLayoutStep5->addWidget(tfNewGesture);
    hLayoutStep5->addWidget(btnCommand);
    hLayoutStep5->addWidget(labelRecordName);
    hLayoutStep5->addWidget(tfRecordName);

    Label *labelStep5 = new Label(tr("Command linked to your gesture"),step5);
    labelStep5->setPaintShadow(false);
    labelStep5->changeFontSize(labelFontSize);
    labelStep5->setTextColor(labelColor);
    labelStep5->setFixedHeight(50);

    vLayout->addWidget(labelStep5);
    vLayout->addWidget(step5Bottom);

    stepper->addStep(tr("Add a new gesture"),true,false,true,StepperNewGesture::SaveRecord,step5);

    /* STEP 6 */
    QWidget* step6 = new QWidget(parent);
    QLabel* labelLoading = new QLabel(step6);
    QMovie* loading = new QMovie(Utils::getResourcesDirectory() + "loader.gif", QByteArray(), labelLoading);
    labelLoading->resize(128, 128);
    labelLoading->setMovie(loading);
    loading->start();
    stepper->addStep(tr("Add a new gesture"),false,false,false,StepperNewGesture::Close,step6);
    labelLoading->move(step6->width()/2 - labelLoading->width()/2, step6->height()/2 - labelLoading->height()/2);
}
Esempio n. 4
0
void LOS::importPartToTrack(QString& filename, unsigned tick, MidiTrack* track)
{
    bool popenFlag = false;
    FILE* fp = fileOpen(this, filename, ".mpt", "r", popenFlag, false, false);

    if (fp)
    {
        Xml xml = Xml(fp);
        bool firstPart = true;
        int posOffset = 0;
        int notDone = 0;
        int done = 0;

        bool end = false;
        song->startUndo();
        for (;;)
        {
            Xml::Token token = xml.parse();
            const QString& tag = xml.s1();
            switch (token)
            {
                case Xml::Error:
                case Xml::End:
                    end = true;
                    break;
                case Xml::TagStart:
                    if (tag == "part")
                    {

                        // Read the part.
                        Part* p = 0;
                        p = readXmlPart(xml, track);
                        // If it could not be created...
                        if (!p)
                        {
                            // Increment the number of parts not done and break.
                            ++notDone;
                            break;
                        }

                        // Increment the number of parts done.
                        ++done;

                        if (firstPart)
                        {
                            firstPart = false;
                            posOffset = tick - p->tick();
                        }
                        p->setTick(p->tick() + posOffset);
                        p->setColorIndex(track->getDefaultPartColor());
                        audio->msgAddPart(p, false);
                    }
                    else
                        xml.unknown("LOS::importPartToTrack");
                    break;
                case Xml::TagEnd:
                    break;
                default:
                    end = true;
                    break;
            }
            if (end)
                break;
        }
        fclose(fp);
        song->endUndo(SC_PART_INSERTED);

        if (notDone)
        {
            int tot = notDone + done;
            QMessageBox::critical(this, QString("LOS"),
                    QString().setNum(notDone) + (tot > 1 ? (tr(" out of ") + QString().setNum(tot)) : QString("")) +
                    (tot > 1 ? tr(" parts") : tr(" part")) +
                    tr(" could not be imported.\nLikely the track is the wrong type."));
        }

        return;
    }
}