Exemplo n.º 1
0
Arquivo: conf.cpp Projeto: Adamiko/los
void readConfiguration(Xml& xml, bool readOnlySequencer)/*{{{*/
{
    for (;;)
    {
        Xml::Token token = xml.parse();
        if (token == Xml::Error || token == Xml::End)
            break;
        QString tag = xml.s1();
        switch (token)
        {
            case Xml::TagStart:
                /* the reading of configuration is split in two; read
                   "sequencer" and read ALL. The reason is that it is
                   possible to load a song without configuration. In
                   this case the <configuration> chapter in the song
                   file should be skipped. However the sub part
                   <sequencer> contains elements that are necessary
                   to preserve composition consistency. Mainly
                   midiport configuration and VOLUME.
                 */
                if (tag == "sequencer")
                {
                    readSeqConfiguration(xml);
                    break;
                }
                else if (readOnlySequencer)
                {
                    xml.skip(tag);
                    break;
                }

                if (tag == "theme")
                    config.style = xml.parse1();
                else if (tag == "styleSheetFile")
                    config.styleSheetFile = xml.parse1();
                else if (tag == "useOldStyleStopShortCut")
                    config.useOldStyleStopShortCut = xml.parseInt();
                else if (tag == "moveArmedCheckBox")
                    config.moveArmedCheckBox = xml.parseInt();
                else if (tag == "externalWavEditor")
                    config.externalWavEditor = xml.parse1();
                else if (tag == "font0")
                    config.fonts[0].fromString(xml.parse1());
                else if (tag == "font1")
                    config.fonts[1].fromString(xml.parse1());
                else if (tag == "font2")
                    config.fonts[2].fromString(xml.parse1());
                else if (tag == "font3")
                    config.fonts[3].fromString(xml.parse1());
                else if (tag == "font4")
                    config.fonts[4].fromString(xml.parse1());
                else if (tag == "font5")
                    config.fonts[5].fromString(xml.parse1());
                else if (tag == "font6")
                    config.fonts[6].fromString(xml.parse1());
                else if (tag == "globalAlphaBlend")
                    config.globalAlphaBlend = xml.parseInt();
                else if (tag == "palette0")
                    config.palette[0] = readColor(xml);
                else if (tag == "palette1")
                    config.palette[1] = readColor(xml);
                else if (tag == "palette2")
                    config.palette[2] = readColor(xml);
                else if (tag == "palette3")
                    config.palette[3] = readColor(xml);
                else if (tag == "palette4")
                    config.palette[4] = readColor(xml);
                else if (tag == "palette5")
                    config.palette[5] = readColor(xml);
                else if (tag == "palette6")
                    config.palette[6] = readColor(xml);
                else if (tag == "palette7")
                    config.palette[7] = readColor(xml);
                else if (tag == "palette8")
                    config.palette[8] = readColor(xml);
                else if (tag == "palette9")
                    config.palette[9] = readColor(xml);
                else if (tag == "palette10")
                    config.palette[10] = readColor(xml);
                else if (tag == "palette11")
                    config.palette[11] = readColor(xml);
                else if (tag == "palette12")
                    config.palette[12] = readColor(xml);
                else if (tag == "palette13")
                    config.palette[13] = readColor(xml);
                else if (tag == "palette14")
                    config.palette[14] = readColor(xml);
                else if (tag == "palette15")
                    config.palette[15] = readColor(xml);
                else if (tag == "palette16")
                    config.palette[16] = readColor(xml);
                else if (tag == "ctrlGraphFg")
                    config.ctrlGraphFg = readColor(xml);
                else if (tag == "extendedMidi")
                    config.extendedMidi = xml.parseInt();
                else if (tag == "midiExportDivision")
                    config.midiDivision = xml.parseInt();
                else if (tag == "smfFormat")
                    config.smfFormat = xml.parseInt();
                else if (tag == "exp2ByteTimeSigs")
                    config.exp2ByteTimeSigs = xml.parseInt();
                else if (tag == "expOptimNoteOffs")
                    config.expOptimNoteOffs = xml.parseInt();
                else if (tag == "importMidiSplitParts")
                    config.importMidiSplitParts = xml.parseInt();
                else if (tag == "midiInputDevice")
                    midiInputPorts = xml.parseInt();
                else if (tag == "midiInputChannel")
                    midiInputChannel = xml.parseInt();
                else if (tag == "midiRecordType")
                    midiRecordType = xml.parseInt();
                else if (tag == "midiThruType")
                    midiThruType = xml.parseInt();
                else if (tag == "midiFilterCtrl1")
                    midiFilterCtrl1 = xml.parseInt();
                else if (tag == "midiFilterCtrl2")
                    midiFilterCtrl2 = xml.parseInt();
                else if (tag == "midiFilterCtrl3")
                    midiFilterCtrl3 = xml.parseInt();
                else if (tag == "midiFilterCtrl4")
                    midiFilterCtrl4 = xml.parseInt();
                else if (tag == "canvasShowPartType")
                    config.canvasShowPartType = xml.parseInt();
                else if (tag == "canvasShowPartEvent")
                    config.canvasShowPartEvent = xml.parseInt();
                else if (tag == "canvasShowGrid")
                    config.canvasShowGrid = xml.parseInt();
                else if (tag == "canvasBgPixmap")
                    config.canvasBgPixmap = xml.parse1();
                else if (tag == "canvasCustomBgList")
                    config.canvasCustomBgList = xml.parse1().split(";", QString::SkipEmptyParts);
                else if(tag == "vuColorStrip")
                {
                    vuColorStrip = xml.parseInt();
                }
                else if(tag == "nextTrackPartColor")
                {
                    lastTrackPartColorIndex = xml.parseInt();
                }
                else if (tag == "mtctype")
                    AL::mtcType = xml.parseInt();
                else if (tag == "jackTransportMaster")
                {
                    // XXX FIXME
                    bool jackTransportMaster = xml.parseInt();
                    if (audioDevice)
                        audioDevice->setMaster(jackTransportMaster);
                }
                else if (tag == "shortcuts")
                    readShortCuts(xml);
                else if (tag == "division")
                    config.division = xml.parseInt();
                else if (tag == "guiDivision")
                    config.guiDivision = xml.parseInt();
                else if (tag == "rtcTicks")
                    config.rtcTicks = xml.parseInt();
                else if (tag == "minMeter")
                    config.minMeter = xml.parseInt();
                else if (tag == "minSlider")
                    config.minSlider = xml.parseDouble();
                else if (tag == "freewheelMode")
                    config.freewheelMode = xml.parseInt();
                else if (tag == "denormalProtection")
                    config.useDenormalBias = xml.parseInt();
                else if (tag == "outputLimiter")
                    config.useOutputLimiter = xml.parseInt();
                else if (tag == "dummyAudioSampleRate")
                    config.dummyAudioSampleRate = xml.parseInt();
                else if (tag == "dummyAudioBufSize")
                    config.dummyAudioBufSize = xml.parseInt();
                else if (tag == "guiRefresh")
                    config.guiRefresh = xml.parseInt();
                else if (tag == "userInstrumentsDir")
                    config.userInstrumentsDir = xml.parse1();
                else if (tag == "midiTransform")
                    readMidiTransform(xml);
                else if (tag == "midiInputTransform")
                    readMidiInputTransform(xml);
                else if (tag == "startMode")
                    config.startMode = xml.parseInt();
                else if (tag == "startSong")
                    config.startSong = xml.parse1();
                else if (tag == "projectBaseFolder")
                    config.projectBaseFolder = xml.parse1();
                else if (tag == "projectStoreInFolder")
                    config.projectStoreInFolder = xml.parseInt();
                else if (tag == "useProjectSaveDialog")
                    config.useProjectSaveDialog = xml.parseInt();
                else if (tag == "useAutoCrossFades")
                    config.useAutoCrossFades = xml.parseInt();
                else if(tag == "globalInputList")
                    readGlobalInputList(xml);
                else
                    xml.skip(tag);
                break;
            case Xml::Text:
                printf("text <%s>\n", xml.s1().toLatin1().constData());
                break;
            case Xml::Attribut:
                if (readOnlySequencer)
                    break;
                if (tag == "version")
                {
                    int major = xml.s2().section('.', 0, 0).toInt();
                    int minor = xml.s2().section('.', 1, 1).toInt();
                    xml.setVersion(major, minor);
                }
                break;
            case Xml::TagEnd:
                if (tag == "configuration")
                {
                    return;
                }
                break;
            case Xml::Proc:
            default:
                break;
        }
    }
}/*}}}*/