Here is a description of the xml_spumux, and xml_dvdauthor - classes. Those classes are used, to read/write the XML format of spumux, and dvdauthor and store the information in its structures.
I post these here in the hope that it can be used by others, do develop nice utilities/GUIs for usage with dvdauthor.
Here is the doxygen documentation for the source files.
following is a short example on how to generate a xml file for dvdauthor (source from dvdauthor.cpp)
void QDVDAuthor::createDvdauthorXml () { int t; // The following lines are to be changed later on. int iNrOfTitles = m_listMovieFiles.count(); int iNrOfButtons = m_listMovieFiles.count(); // Get some information to put into the xml file. CDVDMenuInterface *pInterface = m_pDVDMenu->getInterface(); CXmlDVDAuthor xmlDvdauthor; CXmlDVDAuthor::button_struct *pButton; CXmlDVDAuthor::vob_struct *pVob; CXmlDVDAuthor::pgc_struct *pPgc; CXmlDVDAuthor::titleset_struct *pTitleset; xmlDvdauthor.m_dvdauthor.dest = m_qsProjectPath; // First we create the main menu ... pPgc = xmlDvdauthor.m_dvdauthor.vmgm.menus.addPgc(); for (t=0;t < iNrOfButtons; t ++) { pButton = pPgc->addButton(); pButton->name = QString ("%1").arg(t+1); pButton->value = QString (" jump title %1; ").arg(t+1); } pVob = pPgc->addVob (); if (pInterface->qsMovieFileName.isNull()) pVob->file = QString ("%1_menu.mpg").arg(getTempFile(pInterface->qsBackgroundFileName)); else pVob->file = QString (pInterface->qsMovieFileName); pVob->pause = QString ("inf"); // And then we create the titles ... for (t=0;t < iNrOfTitles; t++) { pTitleset = xmlDvdauthor.m_dvdauthor.addTitleset(); pPgc = pTitleset->titles.addPgc(); pPgc->post.value = QString (" call vmgm menu 1; "); pVob = pPgc->addVob(); pVob->file= QString(m_listMovieFiles[t]); } // And here we save it to the temp directory. QString fileName = QString ("/tmp/dvdauthor.xml"); xmlDvdauthor.writeXml(fileName); }
Note: these classes depend on using Qt. If you re-write them for usage with another language, why don't you let me know so I can put up a link to it from here.