>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Persist vs Branch. Проблемы. http://forum.mozilla-russia.org/viewtopic.php?id=19056 |
Диня > 17-09-2007 17:40:06 |
Доброго времени суток, уважаемые форумчане. Передо мной стоит дилемма. Нужно хранить свойства элементов тулбара каким-то способом. Первый вариант, изящен, не требует каких-либо потугов со стороны программиста. Например: Выделить код Код:<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 ?? |
Shutnik > 17-09-2007 18:28:20 |
Диня Добавлено Mon Sep 17 18:28:51 2007 : |
Диня > 18-09-2007 09:30:48 |
shutnik пишет
Добрый день, 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); } } |