Доброго времени суток, уважаемые форумчане.

Передо мной стоит дилемма. Нужно хранить свойства элементов тулбара каким-то способом.
1. Persist
2. nsIPrefBranch


Первый вариант, изящен, не требует каких-либо потугов со стороны программиста.

Например:

Выделить код

Код:

<toolbarbutton id="mybutton1" type="menu" hidden="false" collapsed="false" pos="0" persist="hidden;collapsed;pos"
label="MyButton" />

На тулбаре есть кнопки. Какие-то по умолчанию hidden="true", какие-то "false". Далее через форму редактирования тулбара устанавливаю значения hidden. Изменения применяются - все ок. Закрываю окно FF, открываю все ок - кнопки отображаются правильно. Опять закрываю, открываю все стоит как-будто впервый раз был установлен мой плагин.

По каким-то непонятным для меня причинам, параметр hidden не всегда считывается правильно (а именно через раз). Как отловить? Что с этим сделать? Даже малейшего представления не имею.

Второй вариант, требует вмешательства со стороны программиста, трудоемок для работы FF.

Например:

Выделить код

Код:

const MyPrefService =Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);

const MyBranch = MyPrefService.getBranch("MyApp.");

function CloseToolbar()
{

	var MainToolBar = document.getElementById("MyToolbar");
	var MainArray=new Array();
	
	for(var i=0; i<MainToolBar.childNodes.length; i++)
	{
		var iItem=MainToolBar.childNodes[i];
		var id=iItem.id;
		MainArray[id]=new Array();
		MainArray[id]["hidden"]=iItem.hidden;
		MainArray[id]["collapsed"]=iItem.collapsed;
		MainArray[id]["pos"]=iItem.attributes.getNamedItem("pos").nodeValue;
	}

//КАК СОХРАНИТЬ ДВУМЕРНЫЙ АССОЦИАТИВНЫЙ МАССИВ ??????????????
	
}

Также не понятно как можно в данном случае сохранить такого рода массив?????? Может кто-нибудь сталкивался с такой задачей????

Может быть кто-нибдуь что-то знает про это??? Про глюки при использовании persist ??

Диня
параметры persist перечисляются через пробел

Добавлено Mon Sep 17 18:28:51 2007 :
http://developer.mozilla.org/en/docs/XU … te:persist

shutnik пишет

Диня
параметры persist перечисляются через пробел

Добавлено Mon Sep 17 18:28:51 2007 :
http://developer.mozilla.org/en/docs/XU … te:persist

Добрый день, shutnik ;)

Спорить не буду в разных источниках по разному.

Сидеть на месте и ждать ответа не cмог, поэтому пока наваял следующее, может кому-то пригодится.


Выделить код

Код:

function LoadFromBranch()
{

var MainToolBar = document.getElementById("MyToolbar");

		// get stored tbbuttons properties;
		for(var i=0; i<MainToolBar.childNodes.length; i++)
		{
			var id=MainToolBar.childNodes[i].id;
			
			if(MyBranch.prefHasUserValue("mytoolbar_"+id+"_hidden_value")) 
MainToolBar.childNodes[i].hidden=MyBranch.getBoolPref("advsb_"+id+"_hidden_value");
			
			if(MyBranch.prefHasUserValue("mytoolbar_"+id+"_pos_value"))MainToolBar.childNodes[i].setAttribute("pos",MyBranch.getIntPref("mytoolbar_"+id+"_pos_value"));
			else MainToolBar.childNodes[i].setAttribute("pos",i);
		}
}

function SaveToBranch()
{
var MainToolBar = document.getElementById("MyToolbar");

		//save properties of all elements
		for(var i=0; i<MainToolBar.childNodes.length; i++)
		{
			var id=MainToolBar.childNodes[i].id;
			MyBranch.setBoolPref("mytoolbar_"+id+"_hidden_value",MainToolBar.childNodes[i].hidden);
			MyBranch.setIntPref("mytoolbar_"+id+"_pos_value",i);
		}
}