2008-12-06 4 views
3

Я хочу использовать встроенную систему предпочтений для моего приложения xulrunner (Firefox). Но я не могу понять, как легко управлять пользовательским интерфейсом на основе предпочтений.Рисование пользовательского интерфейса на основе предпочтений

Пользователь может указать список домашних страниц, и каждая домашняя страница будет отображаться на другой вкладке. Поскольку вкладки находятся на уровне презентации, я хотел бы создать их с помощью шаблона в коде xul. Это возможно?

Я не видел способ сделать это с помощью шаблонов xul. Есть ли альтернативная система шаблонов, которая позволила бы мне изменить пользовательский интерфейс на основе пользовательских настроек?

ответ

1

Нет, шаблоны в XUL недостаточно сильны, поэтому вы застряли в написании кода JavaScript, который читает настройки и открывает необходимые вкладки.

0

XML.prototype.function::domNode = function domNode() { 
    function addPrefix(prefix, name) { 
     if (typeof(prefix) == "undefined" || prefix == null || prefix == "") { 
      return name; 
     } else { 
      return prefix + ":" + name; 
     } 
    } 

    function recurse(xml) { 
     var domNode = document.createElementNS(xml.namespace().uri, addPrefix(xml.namespace().prefix, xml.localName())); 

     for each (let attr in [email protected]*::*) { 
      let attrNode = document.createAttributeNS(attr.namespace().uri, addPrefix(attr.namespace().prefix, attr.localName())); 
      attrNode.nodeValue = attr; 
      domNode.setAttributeNode(attrNode); 
     } 
     if (xml.hasComplexContent()) { 
      for each (let node in xml.*) { 
       domNode.appendChild(recurse(node)); 
      } 
     } else if (xml.hasSimpleContent()) { 
      domNode.appendChild(document.createTextNode(xml)); 
     } 
     return domNode; 
    } 

    return recurse(this); 
}; 

var name = "example" 
var xml = {name}; 

document.querySelector("#example-statusbar-panel").appendChild(xml.domNode()); 

работает как очарование, но некоторые незначительные сбои с пространствами имен.

Вы всегда можете конвертировать РОМ обратно в XML с

var str = serializer.serializeToString(xml.domNode()); 

 Смежные вопросы

  • Нет связанных вопросов^_^