Example #1
0
void Environment::xmlConfigure(xmlNode *fNode)
{
  int fEmbeddedSkin = 0;
  while (fNode) {
    if (!strcmp((char *) fNode->name, "Menu")) {
      SubMenuNode *t = new SubMenuNode();
      t->xmlConfigure(fNode->children);
      setTopMenu(t);
      setCurrentMenu(t);
    } else if (!strcmp((char *) fNode->name, "Resources")) {
      Resources *t = new Resources();
      t->xmlConfigure(fNode->children);
      setResources(t);
      fEmbeddedSkin = 1;
    } else if (!strcmp((char *) fNode->name, "Elements")) {
      Elements *t = new Elements();
      t->xmlConfigure(fNode->children);
      setElements(t);
      fEmbeddedSkin = 1;
    } else if (!strcmp((char *) fNode->name, "Dialog")) {
      Generic *t = new Generic();
      t->xmlConfigure(fNode->children);
      setDialog(t);
    } else if (!strcmp((char *) fNode->name, "LogFile")) {
      setLogFileName((char *) fNode->children->content);
    }
    fNode = fNode->next;
  }
  if (fEmbeddedSkin) {
    mResources->loadResources();
    mElements->associateResources(mResources);
  }
}
Example #2
0
int Environment::loadSkin(char *fSkinDirectory)
{

  Elements *fOldElements = mElements;
  Resources *fOldResources = mResources;

  struct stat sbuf;

  char buf[255];
  sprintf(buf, "%sskin.xml", fSkinDirectory);

  printf("Loading %s\n", buf);
  if (stat(buf, &sbuf)) {
    return 0;
  }

  xmlDoc *theDoc = 0;
  xmlNode *theRoot = 0;

  theDoc = xmlReadFile(buf, NULL, 0);
  if (theDoc == NULL) {
    return 0;
  }

  theRoot = xmlDocGetRootElement(theDoc);

  xmlNode *fNode = theRoot->children;

  while (fNode) {
    if (!strcmp((char *) fNode->name, "Resources") && fNode->children) {
      Resources *t = new Resources();
      t->xmlConfigure(fNode->children);
      setResources(t);
    } else if (!strcmp((char *) fNode->name, "Elements") && fNode->children) {
      Elements *t = new Elements();
      t->xmlConfigure(fNode->children);
      setElements(t);
    }
    fNode = fNode->next;
  }

  if (fOldElements != mElements && fOldElements) {
    delete fOldElements;
  }
  if (fOldResources != mResources && fOldResources) {
    delete fOldResources;
  }

  setSkinPath(fSkinDirectory);

  debugPrint("     Loading resources\n");

  mResources->loadResources();
  debugPrint("     Associating resources & elements\n");

  mElements->associateResources(mResources);

  xmlFreeDoc(theDoc);
  return 1;
}