Привет,
Можно ли поправить несколько кнопок?
Кнопка для переключения стиля из справки. Нужно чтобы при запуске ФФ стиль был включен. Или в идеале, чтобы у юзера был выбор режима.
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0426%u0432%u0435%u0442%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/ico%3Bbase64%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%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%20this.hasAttribute%28%22initialized%22%29%20%29%20return%3B%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20setStyleForPages%28%29%3B%20//%20%u041B%u041A%u041C%0A%7D%3B%0A%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%20self.Help%20%29%29%3B%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%0Avar%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28%20self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0Avar%20styleImage%20%3D%20%22data%3Aimage/ico%3Bbase64%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%3D%22%3B%0A%0Afunction%20setStyleForPages%28%20reason%20%29%20%7B%20%0A%20%20%20%20%20%20var%20style%20%3D%20sss.sheetRegistered%28uri%2C%20sss.AGENT_SHEET%29%3B%20%20%0A%20%20%20if%20%28%20style%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20icon.src%20%3D%20self.image%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%20if%20%28%20%28%21style%20%26%26%20reason%20%21%3D%3D%20%27update%27%29%20%7C%7C%20%28style%20%26%26%20reason%20%3D%3D%20%27update%27%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20icon.src%20%3D%20styleImage%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddDestructor%28function%28reason%29%20%7B%20if%20%28/update%7Cdelete/.test%28%20reason%20%29%20%29%20setStyleForPages%28reason%29%20%7D%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B/*AGENT_SHEET*/%0A%0A%20%20a%2C%20a%20span%20%0A%7B%0A%20%20text-decoration%3A%20none%20%21important%3B%20%0A%20%20color%3A%20%23BABAFF%20%21important%3B%0A%7D%0Aa%3Avisited%2C%20a%3Avisited%20span%20%7Bcolor%3A%20%23FFBABA%20%21important%3B%7D%0A%0Aa%3Ahover%2C%20a%3Ahover%20span%20%0A%7B%0A%20%20text-shadow%3A%200px%200px%208px%20green%20%21important%3B%20%0A%20%20transition%3A%20text-shadow%20.2s%20%20linear%20%21important%3B%0A%7D%0Aa%3Aactive%2C%20a%3Aactive%20span%20%20%7Bcolor%3A%20Silver%20%21important%3B%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0423%u043C%u0435%u043D%u044C%u0448%u0438%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u043D%u0430%20%u0432%u0441%u0435%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%u0445%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Eykp/xgyMv8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDIy/xMpKf8AAAD/AAAA/1Cop/9Nrqv/SKKf/0mkof9JpKH/SaSh/0mkof9JpKH/SaSh/0mkof9JpKH/SKKf/02uq/9QqKf/AAAA/wAAAP9OoqH/PpSQ/zWFgf83iIT/N4iE/zeIhP83iIT/N4iE/zeIhP83iIT/N4iE/zWFgf8+lJD/TqKh/wAAAP8AAAD/U6in/0WgnP88ko3/PpWQ/z6VkP8+lZD/PpWQ/z6VkP8+lZD/PpWQ/z6VkP88ko3/RaCc/1Oop/8AAAD/AAAA/1asrP9HpKD/PpaR/0CZlP9AmZT/QJmU/0CZlP9AmZT/QJmU/0CZlP9AmZT/PpaR/0ekoP9WrKz/AAAA/wAAAP9ZsLH/SKmj/0Calf9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0Calf9IqaP/WbCx/wAAAP8AAAD/XLW1/0uuqP9Cn5n/RKKc/0SinP9Eopz/RKKc/0SinP9Eopz/RKKc/0SinP9Cn5n/S66o/1y1tf8AAAD/AwMD/2C4uv9OtK//RKWf/0aoov9GqKL/Rqii/0aoov9GqKL/Rqii/0aoov9GqKL/RKWf/060r/9guLr/AwMD/1NSUv9qw8T/V8XE/1O+u/9Uv73/VL+9/1S/vf9Uv73/VL+9/1S/vf9Uv73/VL+9/1O+u/9XxcT/asPE/1NSUv9XVlb/bcfI/1vLyv9XxML/WMXE/1jFxP9YxcT/WMXE/1jFxP9YxcT/WMXE/1jFxP9XxML/W8vK/23HyP9XVlb/VlVU/3DMzf9f0ND/WsnH/1vKyf9bysn/W8rJ/1vKyf9bysn/W8rJ/1vKyf9bysn/WsnH/1/Q0P9wzM3/VlVU/1ZUVP9zz9H/YtfV/13Qzf9e0c7/XtHO/17Rzv9e0c7/XtHO/17Rzv9e0c7/XtHO/13Qzf9i19X/c8/R/1ZUVP9WVFT/d9PW/2Xc2/9f1dP/YdbU/2HW1P9h1tT/YdbU/2HW1P9h1tT/YdbU/2HW1P9f1dP/Zdzb/3fT1v9WVFT/VlRU/3nV2P9j39z/XdjU/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/XdjU/2Pf3P951dj/VlRU/1ZUVP9/4+f/ePX2/3Xu7/927/D/du/w/3bv8P927/D/du/w/3bv8P927/D/du/w/3Xu7/949fb/f+Pn/1ZUVP9XVlb/YXt8/2aBg/9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoGD/2F7fP9XVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041B%u041A%u041C%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20%u0441%u0442%u0438%u043B%u044C%20..........%0Athis._handleClick%20%3D%28%29%3D%3E%20setStyleForPages%28%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%20%29%3B%0A%0A%0A//%20%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u0435%u043D%u044F%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u0432%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%u0445%20%u0438%20%u0441%u0442%u0438%u043B%u0435%20..........%0Athis.onwheel%20%3De%3D%3E%7B%0A%20%20%20var%20i%20%3D%20cbu.getPrefs%28l%29%2C%0A%20%20%20%20%20%20%20i%20%3D%20e.deltaY%20%3C%200%20%3F%20i%20+%20step%20%3A%20i%20-%20step%3B%0A%20%20%20if%20%28%200%20%3C%3D%20i%20%26%26%20i%20%3C%3D%2099%20%29%20cbu.setPrefs%28l%2C%20i%29%3B%0A%0A%20%20%20setStyleForPages%28%20cbu.setPrefs%28s%2C%20true%29%20%29%3B%0A%7D%3B%0A%0A%0A//%20%u0418%u0441%u043F%u0440%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%u0443%20%u0441%20position%20%u0434%u043B%u044F%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0439%20..........%0AaddEventListener%28%22mouseover%22%2C%20e%3D%3E%7B%0A%20%20%20if%20%28%20e.button%20%7C%7C%20e.target.localName%20%21%3D%3D%20%27img%27%20%29%20return%3B%20%20%0A%20%20%20%0A%20%20%20var%20img%20%3D%20e.target%2C%20node%20%3D%20img%3B%0A%20%20%20if%20%28%20getPosition%28img%29%20%3D%3D%20%27absolute%27%29%20%7B%20img.setAttribute%28%27currentPosition%27%2C%20%27true%27%29%3B%20return%3B%20%7D%3B%20%20%0A%0A%20%20%20while%28%20node%20%3D%20node.parentNode%20%29%20%7B%0A%20%20%20%20%20%20if%20%28%20getPosition%28node%29%20%3D%3D%20%27relative%27%20%29%20break%3B%0A%20%20%20%20%20%20if%20%28%20getPosition%28node%29%20%3D%3D%20%27absolute%27%29%20%7B%20img.setAttribute%28%27parentPosition%27%2C%20%27true%27%29%3B%20break%3B%20%7D%3B%20%20%20%0A%20%20%20%7D%3B%0A%20%20%20%20function%20getPosition%28node%29%20%7B%20return%20getComputedStyle%28node%2C%20%27%27%29.position%20%7D%3B%20%20%0A%20%20%20%3B%0A%7D%2C%20false%2C%20gBrowser%29%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20css%20%u043A%u043E%u0434%20%u0438%u0437%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0421%u043F%u0440%u0430%u0432%u043A%u0430%20..........%0Avar%20step%20%3D%202%2C%0A%20%20%20%20s%20%3D%20%22CB.darken%22%2C%0A%20%20%20%20help%20%3D%20self.Help%2C%0A%20%20%20%20l%20%3D%20%22CB.darken.level%22%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0432%20about%3Aconfig%20%u0435%u0441%u043B%u0438%20%u043E%u043D%u0438%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20..........%0Acbu.isPref%28l%2C%2028%29%3B%0Acbu.isPref%28s%2C%20false%29%3B%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29.%0A%20%20%20src%20%3D%20%21cbu.getPrefs%28s%29%20%3F%20self.image%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/NTU1/z8/P/89PT3/Pj4+/z4+Pv8+Pj7/Pj4+/z4+Pv8+Pj7/Pj4+/z4+Pv89PT3/Pz8//zU1Nf8AAAD/AAAA/6Ghof+YmJj/ioqK/42Njf+NjY3/jY2N/42Njf+NjY3/jY2N/42Njf+NjY3/ioqK/5iYmP+hoaH/AAAA/wAAAP+dnZ3/hISE/3R0dP94eHj/eHh4/3h4eP94eHj/eHh4/3h4eP94eHj/eHh4/3R0dP+EhIT/nZ2d/wAAAP8AAAD/qKio/5OTk/+CgoL/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+CgoL/k5OT/6ioqP8AAAD/AAAA/6+vr/+ampr/iYmJ/42Njf+NjY3/jY2N/42Njf+NjY3/jY2N/42Njf+NjY3/iYmJ/5qamv+vr6//AAAA/wAAAP+1tbX/oqKi/5GRkf+VlZX/lZWV/5WVlf+VlZX/lZWV/5WVlf+VlZX/lZWV/5GRkf+ioqL/tbW1/wAAAP8CAgL/vb29/6mpqf+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/qamp/729vf8CAgL/AAAA/8PDw/+xsbH/n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/7Gxsf/Dw8P/AAAA/zo6Ov/Pz8//xMTE/7a2tv+5ubn/ubm5/7m5uf+5ubn/ubm5/7m5uf+5ubn/ubm5/7a2tv/ExMT/z8/P/zo6Ov9aWlr/2dnZ/9PT0//Jycn/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Jycn/09PT/9nZ2f9aWlr/U1NT/9/f3//a2tr/z8/P/9HR0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/R0dH/z8/P/9ra2v/f39//U1NT/1RUVP/m5ub/4+Pj/9jY2P/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9jY2P/j4+P/5ubm/1RUVP9UVFT/7u7u/+3t7f/i4uL/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/i4uL/7e3t/+7u7v9UVFT/VFRU/+/v7//y8vL/5+fn/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/5+fn//Ly8v/v7+//VFRU/1RUVP/8/Pz//////////////////////////////////////////////////////////////////Pz8/1RUVP9WVlb/kJCQ/5WVlf+VlZX/lpaW/5aWlv+Wlpb/lpaW/5aWlv+Wlpb/lpaW/5aWlv+VlZX/lZWV/5CQkP9WVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%22%3B%20%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%29%3B%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20..........%0Afunction%20setStyleForPages%28%29%20%7B%0A%20%20%20var%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20var%20css%20%3D%20help.replace%28/value/g%2C%20cbu.getPrefs%28l%29/100%20%29%3B%20%20%20%20%20%20%0A%20%20%20var%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%29%3B%20%0A%20%20%20%0A%20%20%20try%20%7B%20sss.unregisterSheet%28Services.previousUri%20%7C%7C%20uri%2C%200%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20Services.previousUri%20%3D%20uri%3B%0A%20%20%20%0A%20%20%20cbu.getPrefs%28s%29%20%26%26%20sss.loadAndRegisterSheet%28uri%2C%200%29%3B%0A%7D%3B%0Acbu.getPrefs%28s%29%20%26%26%20setStyleForPages%28%29%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%20%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%20%5Cn%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u043E%u0436%u043D%u043E%20%u043C%u0435%u043D%u044F%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B@-moz-document%20url-prefix%28http%3A//%29%2C%20url-prefix%28https%3A//%29%2C%20url-prefix%28ftp%3A//%29%2C%20url-prefix%28file%3A//%29%2C%0Aurl-prefix%28chrome%3A//%29%2C%20url-prefix%28about%29%20%7B%0A%20%20%20browser%7B%20background%3A%20LightGray%20%21important%3B%20%7D%20%20%20%0A%20%20%20%0A%20%20%20/*%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u0430%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%u0439%20%u0438%20%u0434%u0440%u0443%u0433%u0438%u043C%u0438%20%u044D%u043B%u0435%u043C%u0435%u043D%u0442%u0430%u043C%u0438%20%u043F%u0441%u0435%u0432%u0434%u043E%u044D%u043B%u0435%u043C%u0435%u043D%u0442%20%u0441%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u043D%u043E%u0439%20%u043F%u0440%u043E%u0437%u0440%u0430%u0447%u043D%u043E%u0441%u0442%u044C%u044E%20*/%0A%20%20%20html%3Aafter%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u0432%u0435%u0431%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%20%u043D%u0435%u043A%u043E%u0442%u043E%u0440%u044B%u0435%20about%3A%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%2C%20%u0438%u043D%u0441%u043F%u0435%u043A%u0442%u043E%u0440%20DOM%20%u0438%20%u0441%u0442%u0438%u043B%u0435%u0439%20*/%0A%20%20%20%23appbar-content%3Aafter%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0441%u0432%u0435%u0440%u0445%u0443%20%u043D%u0430%20youtube%20*/%0A%20%20%20%23txbTextNodeValue%3Aafter%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u0440%u0430%u0448%u0438%u0440%u0435%u043D%u0438%u0435%20DOM%20%u0438%u043D%u0441%u043F%u0435%u043A%u0442%u043E%u0440%20*/%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23editor%3Aafter%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u0438%u043D%u0441%u043F%u0435%u043A%u0442%u043E%u0440%20DOM%20%u0438%20%u0441%u0442%u0438%u043B%u0435%u0439%20*/%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23profiles-list%3Aafter%2C%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23options-panel%3Aafter%2C%0A%20%20%20window%3Anot%28%5Bclass%3D%22theme-dark%22%5D%29%20%23editor%3Aafter%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23style-editor-chrome%3Aafter%2C%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23network-inspector-view%3Aafter%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20.cbeditor-textbox%3Aafter%2C%20%23newtab-window%3Aafter%2C%20%20%20%20%20%20%20%20%20%20/*%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%20%u0421%u0412%20%u043A%u043D%u043E%u043F%u043A%u0438%2C%20%u043D%u043E%u0432%u0430%u044F%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%20*/%0A%20%20%20treecols%3Anot%28%5Bid%3D%22placeContentColumns%22%5D%29%3Aafter%2C%20%20%20%20%20%20%20%20%20/*%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%2C%20%u0438%u0441%u0442%u043E%u0440%u0438%u044F%2C%20%u0431%u0438%u0431%u043B%u0438%u043E%u0442%u0435%u043A%u0430%2C%20about%3Aconfig%20*/%0A%20%20%20%23devtools-webconsole%3Aafter%2C%20%23ConsoleBox%3Aafter%2C%20%20%20%20%20%20%20%20%20%20/*%20%u043A%u043E%u043D%u0441%u043E%u043B%u044C%20%u043E%u0448%u0438%u0431%u043E%u043A%2C%20%u0432%u0435%u0431%20%u043A%u043E%u043D%u0441%u043E%u043B%u044C%20%u043E%u0448%u0438%u0431%u043E%u043A%20*/%0A%20%20%20%5Btitle%3D%22%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%22%5D%5BhasBrowserHandlers%3D%22true%22%5D%3Aafter%2C%20%20%20/*%20%u0440%u0430%u0437%u043D%u044B%u0435%20about%3A%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20*/%0A%20%20%20%5Bid%3D%22permissions-page%22%5D%3Aafter%2C%20%5Bid%20%3D%22tabsList%22%5D%3Aafter%2C%0A%20%20%20%5Bid%3D%22contentAreaDownloadsView%22%5D%3Aafter%2C%20%5Bid%3D%22addons-page%22%5D%3Aafter%20%20%20%0A%20%20%20%7B%0A%20%20%20%20%20content%3A%20%22%22%20%21important%3B%0A%20%20%20%20%20position%3A%20fixed%20%21important%3B%0A%20%20%20%20%20top%3A%200%3B%20bottom%3A%200%3B%20left%3A%200%3B%20right%3A%200%3B%0A%20%20%20%20%20background%3A%20%23000%20%21important%3B%0A%20%20%20%20%20z-index%3A%2099999999%20%21important%3B%0A%20%20%20%20%20pointer-events%3A%20none%20%21important%3B%0A%20%20%20%20%20opacity%3A%20value%20%21important%3B%0A%20%20%20%7D%0A%20%20%20%0A%20%20%20/*%20%u043E%u0442%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0443%u043C%u0435%u043D%u044C%u0448%u0435%u043D%u0438%u0435%20%u044F%u0440%u043A%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u043A%u0438%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u0437%u0430%u0442%u0435%u043C%u043D%u0435%u043D%u0438%u044F%20%20*/%0A%20%20%20%23comments-test-iframe%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u043A%u043E%u043C%u0435%u043D%u0442%u0430%u0440%u0438%u0438%20%u043D%u0430%20youtube%20*/%0A%20%20%20%0A%20%20%20/*%20%u043E%u0442%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0443%u043C%u0435%u043D%u044C%u0448%u0435%u043D%u0438%u0435%20%u044F%u0440%u043A%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0439%20%u043F%u0440%u0438%20%u043D%u0430%u0432%u0435%u0434%u0435%u043D%u0438%u0438%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%20*/%0A%20%20%20svg%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22img%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22rel%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22ytp-thumbnail%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bid%3D%22watch7-sidebar-modules%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22right_block%20video_right%20video_today%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22photo%22%5D%3Ahover%2C%0A%20%20%20img%3Ahover%3Anot%28%5Bparentposition%5D%29%3Anot%28%5Bcurrentposition%5D%29%3Anot%28%5Bid%3D%22keyboard_picture%22%5D%29%3Anot%28%5Bid%3D%22mpiv-preview%22%5D%29%3Anot%28%5Bid%3D%22splashoverlay%22%5D%29%3Anot%28%5Bclass%3D%22prew%22%5D%29%3Anot%28%5Bclass%3D%22rel%22%5D%29%0A%20%20%20%7B%20%0A%20%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%20position%3A%20relative%20%21important%3B%20z-index%3A%20999999999%20%21important%3B%0A%20%20%20%7D%0A%20%20%20img%5Bparentposition%5D%3Ahover%20%7B%20%0A%20%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%20position%3A%20relative%20%21important%3B%20z-index%3A%20999999999%20%21important%3B%20left%3A%200px%3B%20bottom%3A%200px%3B%0A%20%20%20%7D%0A%20%20%20img%5Bcurrentposition%5D%3Ahover%20%7B%20%0A%20%20%20%20%20z-index%3A%20999999999%20%21important%3B%0A%20%20%20%7D%0A%0A%20%20%20/*%20%u043F%u043E%u043B%u043E%u0441%u0430%20%u043F%u043E%u0438%u0441%u043A%u0430%20%u043D%u0430%20youtube%20*/%0A%20%20%20%23yt-masthead-container%20%7B%20background%3A%20LightGray%20%21important%3B%20%7D%0A%0A%20%20%20/*%20%u0438%u0441%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0432%u0438%u0434%u0435%u043E%20*/%0A%20%20%20embed%5Bflashvars%5D%2C%20%20%0A%20%20%20div%5Bclass%3D%22html5-video-container%22%5D%2C%0A%20%20%20*%5Btype*%3D%22application/x-silverlight%22%5D%2C%0A%20%20%20*%5Btype*%3D%22application/x-shockwave-flash%22%5D%20%7B%20%0A%20%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%20z-index%3A%20999999999%20%21important%3B%0A%20%20%20%7D%0A%7D%0A%0A/*%20%u0438%u0441%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043D%u0435%u043A%u043E%u0442%u043E%u0440%u044B%u0435%20%u044D%u043B%u0435%u043C%u0435%u043D%u0442%u044B%20%u043D%u0430%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%u043D%u044B%u0445%20%u0441%u0430%u0439%u0442%u0430%u0445%20%u0434%u043B%u044F%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u043A%u0438%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u0437%u0430%u0442%u0435%u043C%u043D%u0435%u043D%u0438%u044F%20*/%20%0A@-moz-document%20domain%28politobzor.net%29%20%7B%20%0A%20%20%20html%5Bxmlns%3D%22http%3A//www.w3.org/1999/xhtml%22%5D%3Aafter%20%7B%20content%3A%20none%20%21important%3B%20%7D%0A%20%20%20.item%20%7B%20background%3A%20LightGray%20%21important%3B%20%7D%0A%7D%0A@-moz-document%20url-prefix%28http%3A//translate.google.com/translate%29%20%7B%20%0A%20%20%20html%3Aafter%20%7B%20content%3A%20none%20%21important%3B%20%7D%0A%7D%0A@-moz-document%20url%28about%3Ahealthreport%29%2C%20url%28about%3Asessionrestore%29%2C%20url%28about%3Awelcomeback%29%20%7B%20%0A%20%20%20html%3Aafter%20%7B%20content%3A%20none%20%21important%3B%20%7D%0A%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отредактировано Ultima2m (24-12-2017 08:31:28)
Отсутствует
Кнопка для переключения стиля из справки. Нужно чтобы при запуске ФФ стиль был включен.
Добавьте: setStyleForPages(); предпоследней строкой (перед "addDestructor(function(reason) { if (/update|delete/.test( reason ) ) setStyleForPages(reason) });")
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Добавьте: setStyleForPages();
Спасибо, работает.
И еще одну кнопку нашел
Findbar Persist. СКМ не работает. Хотелось бы переместить панель вправо, а текстовые кнопки заменить иконками.
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EFindbar%20Persist%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACaElEQVR42pWTbUhTURjH7znnnnu91yhMhSidI67T2OaI+tCalFBUBpUSYm/YNqPsbTEpK3phEEEg+WVR0Yf6ZAmDoPJT+bm+RBBjLsqK0FZIZG3a3O495/ZsrgiaZgcOXHjO//f8z/85FwlzLM2+5pQgoNRI7NnN2c6gOcRWSaKXCCEsGOi66+/Y9fi/ADan56yqlqhIQGlNW14Z6b8VnDeg1uG2yrLcLctSHCEhrRvMGjp38kXr9uaHswLAsoIQsggI1VJKnbJEM6IojuUAjPGF1VXLtG/J1MtE4nPMNPnYm+jTdB6gOdyrMEYnqChyjEkSvicIweMEky+Y4CRAp01TIIyxMoOxJZzxcs55GeNcNXTjGgK7miRLIZnSOAjGQTAJewp2GiGcgSZGwaQInWXTNBVm8Iqsbqy+HDr9PH+FrS17towlPm2mIh0mGCAYA0DIAECHMisACAAoY+Yi3TAcxw759QO+3Vd/Z9C29+DO1yPvnFQkUVEkX0E8DS5y3c1feUEWatbgdn9He+nxLm/vX1NoafPt/zD6UZYk8S1G6Ac4yQF4oYyzWWPpjm3NtgtnAr1Fx2hzNW5QS0pWyjKNzWSRd5EHwN1xRjc07772qsBhX3FAXYPHqyhKJTh4BRNJgThbyCB3DZLJMkvTOveKvisXQ8UBLk+PqigMMhjlpoBBUzpzyJzABCVhlIvr62wN/bfD54sC6l2NffD6vufaOe12KXC0873JOQrfuGOJxuK5NzJVWVGuPRkc6C4KqHWsDdfUVKOe4JHhTRvXX/+zdi/yoDVy/1FTMjW5YGhwoPOfP9N810+kr+NMRAKE6QAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%22use%20strict%22%3B%0A%0Aconst%20css%20%3D%20encodeURIComponent%28this.getAttribute%28%22Help%22%29%29%2C%0A%20%20%20%20%20%20fp%20%3D%20Cc%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28Ci.nsIFilePicker%29%2C%0A%20%20%20%20%20%20ios%20%3D%20Cc%5B%22@mozilla.org/network/io-service%3B1%22%5D.getService%28Ci.nsIIOService%29%2C%0A%20%20%20%20%20%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20%20%20%20%0Apref.root%20%3D%20%22extensions.custombuttons.FindbarPersist.%22%3B%0Apref.defaults%20%3D%20%7B%0A//***%20Editable%20text%20in%20quotes%20below%0A%20%20textAdd%3A%20%22Add%22%2C%0A%20%20textAlert%3A%20%22Alert%22%2C%0A%20%20textAlert1%3A%20%22%20Protocol%20not%20listed.%22%2C%0A%20%20textAlert2%3A%20%22Add%20to%20list%20by%20clicking%20Add%20or%20click%20Settings%20to%20add/delete%20manually.%22%2C%0A%20%20textAlert3%3A%20%22Current%20List%3A%20%22%2C%0A%20%20textAlertDialog%3A%20%22Protocol%20Unlisted%20Alert%22%2C%0A%20%20textCancel%3A%20%22Cancel%22%2C%0A%20%20textClose%3A%20%22Close%22%2C%0A%20%20textEditable%3A%20%22Editable%20List%20Below%20%28No%20spaces%20and%20comma%20separate%29%22%2C%0A%20%20textHelp%3A%20%22Help%20Tab%20CSS%22%2C%0A%20%20textImages%3A%20%22Dialog%20Images%22%2C%0A%20%20textList%3A%20%22Protocol%20List%22%2C%0A%20%20textName%3A%20%22Button%20Name%22%2C%0A%20%20textOff%3A%20%22Off%22%2C%0A%20%20textOn%3A%20%22On%22%2C%0A%20%20textSettings%3A%20%22Settings%22%2C%0A%20%20textSettingsDialog%3A%20%22Findbar%20Persist%20Settings%22%2C%0A%20%20textStates%3A%20%22Button%20States%22%2C%0A%20%20textTooltip%3A%20%22Tooltip%20Text%22%2C%0A//***%20End%20of%20editable%20text%0A%20%20buttonName%3A%20%22Findbar%20Persist%22%2C%0A%20%20cssEnabled%3A%20true%2C%0A%20%20enableFindbar%3A%20false%2C%0A%20%20iconOff%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACaElEQVR42pWTbUhTURjH7znnnnu91yhMhSidI67T2OaI+tCalFBUBpUSYm/YNqPsbTEpK3phEE%5C%0AEg+WVR0Yf6ZAmDoPJT+bm+RBBjLsqK0FZIZG3a3O495/ZsrgiaZgcOXHjO//f8z/85FwlzLM2+5pQgoNRI7NnN2c6gOcRWSaKXCCEsGOi66+/Y9fi/ADan56yqlqhIQGlNW14Z6b8VnDeg1uG2yrLcLctSHC%5C%0AEhrRvMGjp38kXr9uaHswLAsoIQsggI1VJKnbJEM6IojuUAjPGF1VXLtG/J1MtE4nPMNPnYm+jTdB6gOdyrMEYnqChyjEkSvicIweMEky+Y4CRAp01TIIyxMoOxJZzxcs55GeNcNXTjGgK7miRLIZnSOAjGQT%5C%0AAJewp2GiGcgSZGwaQInWXTNBVm8Iqsbqy+HDr9PH+FrS17towlPm2mIh0mGCAYA0DIAECHMisACAAoY+Yi3TAcxw759QO+3Vd/Z9C29+DO1yPvnFQkUVEkX0E8DS5y3c1feUEWatbgdn9He+nxLm/vX1Noaf%5C%0APt/zD6UZYk8S1G6Ac4yQF4oYyzWWPpjm3NtgtnAr1Fx2hzNW5QS0pWyjKNzWSRd5EHwN1xRjc07772qsBhX3FAXYPHqyhKJTh4BRNJgThbyCB3DZLJMkvTOveKvisXQ8UBLk+PqigMMhjlpoBBUzpzyJzABC%5C%0AVhlIvr62wN/bfD54sC6l2NffD6vufaOe12KXC0873JOQrfuGOJxuK5NzJVWVGuPRkc6C4KqHWsDdfUVKOe4JHhTRvXX/+zdi/yoDVy/1FTMjW5YGhwoPOfP9N810+kr+NMRAKE6QAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20iconOn%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACiUlEQVR42pWTa0iTURjHn/fddHu3F6UWKKLGdF4YrYYmSo4uqw+GEBmB4jKFhIgyCyNZ0ZdSBlI%5C%0AgK2LQihoiShO6fOnyKWLQoJsm6YarJdN08zJ3v7zveTvvpAjayg48H845z//3PP/zcAj4yxo2aW8nE+G19rN2faYcItOF9d4hpUIemGASawQr0jXV7r3w5L8ALx4eHtm5w9uM2BWwvy+yNepeajYMeDTUolS%5C%0AW+SfkhV4BoBWYciLEUPrWql2nRjMCxu430QJBdgUQRHVxQbittHhJk0MvA3BBWF1lwemWT7nclCkRD9gQYh0nesZDKcADY61WJqPM8q0COUURIBGzIKXCQImDICDWMCAKLMtBOJIFgVA2hMIIgsEkOJyEezU%5C%0Ag6CDM17epK0o5e5WayZZQfEMsFiVSQuBieJ/EgdaDS0IEHy/6SHjzjmZKthu6UxYsxjqdqsJtqSxLkGIxn8gLmPXgGEAIQSwOuAOA714SJj+LEJ3XNXCkdUD/6w2GbmlOq8o/GcsVcVIs+glhsZhLiYNYPO8%5C%0Al4OOkCAnpDuPxk6bzf0zBeremX1M9fSlvSxQ4XJnBbhjcRBw7CgQBHC4hzPoaLZ3dj9vTjtFkULQ1aJcsxQX+lFdeyGJIEkPCEYDpmSzwJ/jqd7rTAswDZX0NWs9lWhoFPx4AD8EOUkl8N555IXxZ2D/W1fv%5C%0A8aFrA8M38kfoaX3MogmB2jsSvLUQkCbB5E0PSEgShCAEzsyrbuSvjmrSAocHcD0WFEbXrGwkLy5W2fQf1IwTOePXM0JIrna6npSzMLeZ/7e33lKQFXOuRvRZJZKK6PRdHdx/ovPH73VPr1WPjb61nYrFYTt+%5C%0AgU/nPz7TR9QMbEh0SkoyVAwAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20imageAdd%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACF0lEQVR42o1Tz2sTQRR+s7tJG2OwSctaGxWxWJCkFgXrPQUP4sGTIKIUvErBo2fpqYLQqwjeB%5C%0AA8KCr210pN/QDcq9VKxF6P5UbSbNDPznm8m3W2SpuKD3dlZ5vve9973RkBfXPt4uoQtXNZNnCIFHmoCJFIiAZvkwsLGjcpa93nRvZldzweqgQVCAkIA5BWl+ebVEPE/J03lz7erxUMEs2v5mvqN2X+BUfGLv%5C%0A2EY6l/n67mY4H8yR2Cz14pBx6G89aBRFKZmWdGrg8DB3YpVN/k0B84wADkdsCXlVWRxTlz9MLGf/XDmT/d/WoL8wwwkJ1zOKmKwVcT9EFdWxtvYhMQg2V/mOwT+nTQkz3vgjokYjIrPeCTF5XfjqPdI9Ms+K%5C%0Ak49zgAkuB3C2IskZt6eRN0k0S/7qMjdOwaOz71PckIgEtNv/DaGlIhky18aWlsSZBWh8mrXgk5cTwEPEoBruw/uqAAa4oaaEi699wNZw0JkFbUIeB5AhQTfn+xYgpGbKXBN1jQ/LJ1cBhvFbKWYXvFL7R+42%5C%0Au+zWb89anQIbqXAO+uYrttGa9k5Q8ZGc+Di69FAGRW612dV07C3re0+lh2B01gOl2QxHuULL7M1ucOcXT4jlyP/cFnyQLYFD2E9fCYPRjmKcy9GAlWlQuSzNl63sVf2fuaBt9HEmeeZkg5pWe3SFF9pz2RXf%5C%0AJ3RhU0UuBAuyp7r/Be32NAthDcPUAAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20imageAlert%3A%20%22chrome%3A//global/skin/icons/question-64.png%22%2C%0A%20%20imageCancel%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACJklEQVR42p2TQYjTQBSGX5qWNJrZtGJ7sGtsmwXtgmVZFxT04kVREM+CeBH02JO3vehB8e%5C%0AhRwYt48rigXkXQ7VIPQmkV3WhRl26bapImOpHttr7JTkq27nrwwTCZf97/zbzJjEAIgWhUdT2N3RVsl7Ed5XId22Nsj04YhhXNF6IANFewu+5TWto/OwtJSQIYjcAfDKDXbLLxO5y/j5B7fwHQ/LDvOJcOzs%5C%0A/LA9ME2TAgRikIPHGgKPBL06DTbntThDxByNUxgK1s2/YdrVyW49UqLHW7cCGd3lqBA5YsCy4yTRTho6J4+1KpRbYToTE3xzJfyfl8KbG8DM86HbiG234gCHCOQ56jOdTOo7aJ/U9NY+WcZICK1e/fzWQy0o%5C%0AuVlSAxDGZgMamdQchqPO4dyOUWGaC2oaoLcqMBQzysl7a9zRANZj6dSgXf3zFnqlB4wwD+iBBpWK+Pa369A4SZT3EzCx/nk4XC7wCAY8lvtcYHVtsFcJwDWB4dDoEUiwGgZrnuQqLXCybfOs4/S2BxDEEmAr%5C%0ARiMSih0lpfv6lSqjYmzDsdYpXvoi2KPw5r2q3xb/xiGKVkLAYfOISZj6hqkPw+opVQ83D1Q7q+9RvDi/TNNG+MXDcnYtInNOjcHNa8itoMahsI2lSUbj6bvR1cpOhV/mqaZz3Hye3FnUTNYbholgnpFLLZp9%5C%0Auu8uRjaq6tJfqUzshcp2jcI8ufy9PT/q6P6X+f8x86rQqGIF3bbQAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20imageClose%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACAklEQVR42qWT309SYRzGP+fE8aCOwdBwFZlASQQjwRajcdWvtf6Ati76B10XXTWW1RWD0RK%5C%0AU4RziD5boxCmTocKRdug9JzFoNWt+r973nO/7vM/3ed5Hoq8OoSuBZgcrf6gGtLugOkDqfTtfLEMpA9MK6I+hcBMi/Ye3IP8Zwh2Q47AaBH9Xkq6YAAWo1Gy2W9r4OPLQEEq1ivv4OB+AqPF/BXLV0dFIx+1%5C%0AGPz1F3d/H1Wxu3YdJyaD9VjRd83h4OTODbreTXFjg+/o6D05OzNu/joxg8fl4MTuL3GjwfnGR7c1N3hgjGHO9A+Wq3y8/j8eRJyZo1+ss53Kk8nkTIBGJEIxGsY6Noe/u8iGToVYq6a+hY45QERKs2Wz3tKk%5C%0ApnsViKKLxcG+PqmBhlNvrxSEYdjSN+WQStVzG12yWPHBXEkIMS91uaxWyK6r68HoohDccxul0CvzOTwUtFuqtFhsCcCedJnB09GUaYucuCBAECNtiOSfLPE0kCAk9EEzMEqIVl5b4mErxSte58buNFwIcHFA%5C%0AUepgAom8A4J9GUBTqQtiNQoGdYpGApg2OcKGIwkKHy0VHMJnPZlErlV8i/peNgpVeqw3aeOmHdOmn3FOzCOU03DbC9ERoMimC0x+mb+KeTxA0wvQI1kJwp+eCJFzoGpvWWZytf4lz+yzOw332/wA3xhvxRw2%5C%0ABzwAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20imageSettings%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC0UlEQVR42mOcOnnyThZmZuf0rCwOBgaGPwzYAVtsTMxqby8fv+8/vzN8/f61LScrpxok%5C%0AwcjKwtJ+4+bVijUrVr8or66RxKa7pqbmWFZWluXTp08ZsrOyNxka6IXOnD3nF9gAMMHIWFZWVNTp7e68ws7NKxJZs4yMjOOuXbv2cXBwMMyYMYNBTkEObHtdXd2pvXv3LmSEKeRkZZVKTIh76u/nM9XdNzAH%5C%0AJm5oaJiwdOnS+T9//mS4f/8hw+Onzxmeg1ySnc7g5eWVxohsGzcbK3tcXMyPAG+fFvfA4FqwwVxc1rt37Tpy/PhxBmdnZ4a/f/8ycHNzM9y6detHQECAOSO6f0GGxMRE/Wg3MCgQyiucmGkX8L9hfi/Dsk2b%5C%0AwJpdXV0ZXr16xVBRUTHx7NmzBRgGwAy5HhH14/fRwwzLPnxkyDhwlME/tWDz0+ePHqioSEqePHly15cvX2bDAxEbWCkh+d8pO41hUv9khne//55YIBL88Ov9eRHo6rAawCIX8l/n+SaGMjFBBre8fIaZnb2g%5C%0ABLKx/t3bAIIGsMoH/xd0y2N4deY6g5up0Q+3NZ4csenJDF9Wr2Poe/OGQYKDmbn2xdt/WA0AaRZyy2F4deEOg5C1KcPHVTV/HN7v/WvPxcWev2Auw5uKGoamx48YFnz6xIhhAKtc8H8BrxKGN6evMAhZGTN8%5C%0AXNfw68/TTewgORdOzh8OQENyFy1leN/UyNB84xrD3I8fGeEGsAA1C/qWMbw+ep5B2N6c4eOa+j9AzazIrnPj4vofKiLCEDZ9OsP7xmaG6bdvMnS+f8/IyCIT8Js/qJ7l/bHTDIKWQGevb/j758lGFmyB6w40%5C%0AJF5cnMF70hSGt5UVDJn37v5hZGQXTWCRsJ/PF9LI8HFF+f8/T7cwMeABzpycH6dLSvIVvn7N8PznTzFYGKSxSLpP/PN8JycDEcCBg+PHgR8/7IDMUwAJ9h3/3XPKfAAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20protocolList%3A%20%22http%3A%2Chttps%3A%2Cfile%3A%2Cftp%3A%2Cchrome%3A%22%2C%0A%20%20toolTip%3A%20%22Middle-click%20or%20Ctrl%20+%20Left-click%20%20%3E%20%20Settings%22%0A%7D%0A%0Afor%20%28let%20key%20in%20pref.defaults%29%20%7B%0A%20%20if%20%28pref.defaults.hasOwnProperty%28key%29%29%20%7B%0A%20%20%20%20let%20val%20%3D%20pref.defaults%5Bkey%5D%3B%0A%20%20%20%20switch%20%28typeof%20val%29%20%7B%0A%20%20%20%20%20%20case%20%22boolean%22%3A%0A%20%20%20%20%20%20%20%20Services.prefs.getDefaultBranch%28pref.root%29.setBoolPref%28key%2C%20val%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%22number%22%3A%0A%20%20%20%20%20%20%20%20Services.prefs.getDefaultBranch%28pref.root%29.setIntPref%28key%2C%20val%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%22string%22%3A%0A%20%20%20%20%20%20%20%20let%20str%20%3D%20Cc%5B%22@mozilla.org/supports-string%3B1%22%5D.createInstance%28Ci.nsISupportsString%29%3B%0A%20%20%20%20%20%20%20%20str.data%20%3D%20val%3B%0A%20%20%20%20%20%20%20%20Services.prefs.getDefaultBranch%28pref.root%29.setComplexValue%28%28key%29%2C%20Ci.nsISupportsString%2C%20str%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%7D%20%7D%20%7D%0A%0Afunction%20pref%28key%29%20%7B%0A%20%20let%20%7Bbranch%2C%20defaults%7D%20%3D%20pref%3B%0A%20%20if%20%28branch%20%3D%3D%20null%29%20branch%20%3D%20Services.prefs.getBranch%28pref.root%29%3B%0A%20%20switch%20%28typeof%20defaults%5Bkey%5D%29%20%7B%0A%20%20%20%20case%20%22boolean%22%3A%20%0A%20%20%20%20%20%20return%20branch.getBoolPref%28key%29%3B%0A%20%20%20%20case%20%22number%22%3A%20%0A%20%20%20%20%20%20return%20branch.getIntPref%28key%29%3B%0A%20%20%20%20case%20%22string%22%3A%20%0A%20%20%20%20%20%20//return%20branch.getCharPref%28key%29%3B%0A%20%20%20%20%20%20return%20branch.getComplexValue%28key%2C%20Ci.nsISupportsString%29.data%3B%0A%20%20%7D%0A%20%20return%20null%3B%0A%7D%0A%0Apref.observe%20%3D%20function%28prefs%2C%20callback%29%20%7B%0A%20%20let%20%7Broot%7D%20%3D%20pref%3B%0A%20%20function%20observe%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20if%20%28topic%20%21%3D%3D%20%22nsPref%3Achanged%22%29%20return%3B%0A%20%20%20%20let%20pref%20%3D%20data.slice%28root.length%29%3B%0A%20%20%20%20if%20%28prefs.indexOf%28pref%29%20%3D%3D%3D%20-1%29%20return%3B%0A%20%20%20%20callback%28pref%29%3B%0A%20%20%7D%0A%20%20Services.prefs.addObserver%28root%2C%20observe%2C%20false%29%3B%0A%20%20unload%20%3D%3E%20Services.prefs.removeObserver%28root%2C%20observe%29%3B%0A%7D%0A%0Afunction%20getSS%28filepath%29%20%7B%20%0A%20%20return%20ios.newURI%28%22data%3Atext/css%2C%22%20+%20filepath%2C%20null%2C%20null%29%3B%0A%7D%0A%0Afunction%20loadSheet%28filepath%29%20%7B%20%0A%20%20sss.loadAndRegisterSheet%28getSS%28filepath%29%2C%20sss.USER_SHEET%29%3B%0A%7D%0A%0Afunction%20unloadSheet%28filepath%29%20%7B%0A%20%20let%20uri%20%3D%20getSS%28filepath%29%3B%0A%20%20if%20%28sss.sheetRegistered%28uri%2C%20sss.USER_SHEET%29%29%20sss.unregisterSheet%28uri%2C%20sss.USER_SHEET%29%3B%0A%7D%0A%0Afunction%20loadAndObserve%28prefName%2C%20filepath%29%20%7B%0A%20%20if%20%28pref%28prefName%29%29%20loadSheet%28filepath%29%3B%0A%20%20pref.observe%28%5BprefName%5D%2C%20function%28%29%20%7Bpref%28prefName%29%20%3F%20loadSheet%28filepath%29%20%3A%20unloadSheet%28filepath%29%3B%7D%29%3B%0A%20%20unload%20%3D%3E%20unloadSheet%28filepath%29%3B%0A%7D%0A%0Afunction%20unload%28callback%2C%20container%29%20%7B%0A%20%20let%20unloaders%20%3D%20unload.unloaders%3B%0A%20%20if%20%28unloaders%20%3D%3D%20null%29%20unloaders%20%3D%20unload.unloaders%20%3D%20%5B%5D%3B%0A%20%20if%20%28callback%20%3D%3D%20null%29%20%7B%0A%20%20%20%20unloaders.slice%28%29.forEach%28unloader%20%3D%3E%20unloader%28%29%29%3B%0A%20%20%20%20unloaders.length%20%3D%200%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%20%20if%20%28container%20%21%3D%20null%29%20%7B%0A%20%20%20%20container.addEventListener%28%22unload%22%2C%20removeUnloader%2C%20false%29%3B%0A%20%20%20%20let%20origCallback%20%3D%20callback%3B%0A%20%20%20%20callback%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20container.removeEventListener%28%22unload%22%2C%20removeUnloader%2C%20false%29%3B%0A%20%20%20%20%20%20origCallback%28%29%3B%0A%20%20%7D%20%7D%0A%20%20function%20unloader%28%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20callback%28%29%3B%0A%20%20%20%20%7D%20catch%28ex%29%20%7B%7D%0A%20%20%7D%0A%20%20unloaders.push%28unloader%29%3B%0A%20%20function%20removeUnloader%28%29%20%7B%0A%20%20%20%20let%20index%20%3D%20unloaders.indexOf%28unloader%29%3B%0A%20%20%20%20if%20%28index%20%21%3D%3D%20-1%29%20unloaders.splice%28index%2C%201%29%3B%0A%20%20%7D%0A%20%20return%20removeUnloader%3B%0A%7D%0A%0Afunction%20gCV%28aKey%2C%20aBranch%29%20%7B%0A%20%20return%20Services.prefs.getComplexValue%28%28%28%21aBranch%29%20%3F%20pref.root%20+%20aKey%20%3A%20aKey%29%2C%20Ci.nsISupportsString%29.data%3B%0A%7D%0A%0Afunction%20sCV%28aKey%2C%20aVal%2C%20aBranch%29%20%7B%0A%20%20var%20str%20%3D%20Cc%5B%22@mozilla.org/supports-string%3B1%22%5D.createInstance%28Ci.nsISupportsString%29%3B%0A%20%20str.data%20%3D%20aVal%3B%0A%20%20Services.prefs.setComplexValue%28%28%28%21aBranch%29%20%3F%20pref.root%20+%20aKey%20%3A%20aKey%29%2C%20Ci.nsISupportsString%2C%20str%29%3B%0A%7D%0A%0Afunction%20getProtocol%28%29%20%7B%0A%20%20var%20uri%20%3D%20gBrowser.contentDocument.documentURIObject.spec.split%28%22//%22%29%5B0%5D%2C%20list%20%3D%20pref%28%22protocolList%22%29.split%28%22%2C%22%29%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20list.length%3B%20i++%29%20if%20%28list%5Bi%5D%20%3D%3D%3D%20uri%29%20return%20list%5Bi%5D%3B%0A%7D%0A%0Afunction%20toggleFindbar%28%29%20%7B%0A%20%20removeEventListener%28%22mouseover%22%2C%20toggleFindbar%2C%20false%29%3B%0A%20%20if%20%28pref%28%22enableFindbar%22%29%20%26%26%20getProtocol%28%29%29%20%7B%0A%20%20%20%20gFindBar.hidden%20%3D%20false%3B%0A%20%20%20%20this.image%20%3D%20pref%28%22iconOn%22%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20gFindBar.hidden%20%3D%20true%3B%0A%20%20%20%20this.image%20%3D%20pref%28%22iconOff%22%29%3B%0A%7D%20%7D%0A%0Avar%20gRoot%20%3D%20Services.prefs.getBranch%28pref.root%29%2C%0A%20%20%20%20css2%20%3D%20%27%5C%0A%20%20%20%20%20%20%23settingsDialog%20%23textEditable%20%7B%5C%0A%20%20%20%20%20%20%20%20margin-left%3A%2081px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20%23hbox1%20%7B%5C%0A%20%20%20%20%20%20%20%20height%3A%2047px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20%23hbox5%20%7B%5C%0A%20%20%20%20%20%20%20%20margin-top%3A%2017px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20.button%20%7B%5C%0A%20%20%20%20%20%20%20%20min-width%3A%2032px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20.icon%20.button-icon%20%7B%5C%0A%20%20%20%20%20%20%20%20max-height%3A%2032px%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20max-width%3A%2032px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20.image%20.button-icon%20%7B%5C%0A%20%20%20%20%20%20%20%20height%3A%2016px%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20width%3A%2016px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20.button-text%20%7B%5C%0A%20%20%20%20%20%20%20%20margin%3A%200%202px%200%206px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20%7B%5C%0A%20%20%20%20%20%20%20%20padding%3A%202px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20%23image1%20%7B%5C%0A%20%20%20%20%20%20%20%20max-height%3A%2064px%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20max-width%3A%2064px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20.button%20%7B%5C%0A%20%20%20%20%20%20%20%20min-width%3A%2032px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20%23protocol%20%7B%5C%0A%20%20%20%20%20%20%20%20border-bottom%3A%201px%20solid%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20font-weight%3A%20bold%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20.image%20.button-icon%20%7B%5C%0A%20%20%20%20%20%20%20%20height%3A%2016px%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20margin-right%3A%204px%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20width%3A%2016px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20.button-text%20%7B%5C%0A%20%20%20%20%20%20%20%20margin%3A%200%202px%200%202px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%27.replace%28/%23/g%2C%20%22%2523%22%29%3B%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20if%20%28e.ctrlKey%20%26%26%20e.button%20%3D%3D%3D%200%20%7C%7C%20e.button%20%3D%3D%3D%201%29%20this.settingsDialog%28%29%3B%0A%20%20if%20%28%21e.ctrlKey%20%26%26%20e.button%20%3D%3D%3D%200%20%26%26%20%21getProtocol%28%29%29%20this.alertDialog%28%29%3B%0A%20%20if%20%28%21e.ctrlKey%20%26%26%20e.button%20%3D%3D%3D%200%20%26%26%20getProtocol%28%29%29%20%7B%0A%20%20%20%20var%20bool%20%3D%20pref%28%22enableFindbar%22%29%20%21%3D%3D%20true%20%3F%20true%20%3A%20false%3B%0A%20%20%20%20gRoot.setBoolPref%28%22enableFindbar%22%2C%20bool%29%3B%0A%7D%20%7D%0A%0Athis.settingsDialog%20%3D%20function%28%29%20%7B%0A%20%20var%20data%20%3D%20%27%3C%3Fxml%20version%3D%221.0%22%3F%3E%3C%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%20type%3D%22text/css%22%3F%3E%5C%0A%20%20%20%20%3Cwindow%20xmlns%3D%22%27%20+%20xulns%20+%20%27%22%20id%3D%22settingsDialog%22%20windowtype%3D%22settings%3Adialog%22%20minheight%3D%22202%22%20minwidth%3D%22484%22%20%5C%0A%20%20%20%20%20%20title%3D%22%27%20+%20pref%28%22textSettingsDialog%22%29%20+%20%27%22%20persist%3D%22screenX%20screenY%20width%20height%22%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox1%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textName%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textName%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Ctextbox%20id%3D%22buttonName%22%20class%3D%22textbox%22%20value%3D%22%27%20+%20pref%28%22buttonName%22%29%20+%20%27%22%20flex%3D%221%22%20oninput%3D%22self.onTextbox%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textStates%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textStates%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22iconOn%22%20class%3D%22button%20icon%22%20label%3D%22%27%20+%20pref%28%22textOn%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22iconOn%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22iconOff%22%20class%3D%22button%20icon%22%20label%3D%22%27%20+%20pref%28%22textOff%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22iconOff%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox2%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textTooltip%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textTooltip%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Ctextbox%20id%3D%22toolTip%22%20class%3D%22textbox%22%20value%3D%22%27%20+%20pref%28%22toolTip%22%29%20+%20%27%22%20flex%3D%221%22%20oninput%3D%22self.onTextbox%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox3%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textImages%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textImages%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22imageAlert%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textAlert%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageAlert%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22imageAdd%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textAdd%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageAdd%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22imageSettings%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textSettings%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageSettings%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22imageCancel%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textCancel%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageCancel%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22imageClose%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textClose%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageClose%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%3Clabel%20id%3D%22textEditable%22%20value%3D%22%27%20+%20pref%28%22textEditable%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox4%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textList%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textList%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Ctextbox%20id%3D%22protocolList%22%20class%3D%22textbox%22%20value%3D%22%27%20+%20pref%28%22protocolList%22%29%20+%20%27%22%20flex%3D%221%22%20oninput%3D%22self.onTextbox%28this%29%22%20onblur%3D%22self.onBlur%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox5%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Ccheckbox%20id%3D%22cssEnabled%22%20label%3D%22%27%20+%20pref%28%22textHelp%22%29%20+%20%27%22%20checked%3D%22%27%20+%20pref%28%22cssEnabled%22%29%20+%20%27%22%20oncommand%3D%22self.onCheckbox%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cspacer%20id%3D%22spacer1%22%20flex%3D%221%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22btnClose%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textClose%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageClose%22%29%20+%20%27%22%20oncommand%3D%22close%28%29%22/%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%3C/window%3E%27%3B%0A%20%20data%20%3D%20data.replace%28/self/g%2C%20%22opener.document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29%22%29%3B%0A%20%20var%20url%20%3D%20%22data%3Aapplication/vnd.mozilla.xul+xml%3Btext/plain%2C%22%20+%20encodeURIComponent%28data%29%3B%0A%20%20window.openDialog%28url%2C%20%22%22%2C%20%22chrome%2Ccenterscreen%2Cdialog%2Cresizable%2CalwaysRaised%22%29%3B%0A%7D%0A%0Athis.alertDialog%20%3D%20function%28%29%20%7B%0A%20%20var%20uri%20%3D%20gBrowser.contentDocument.documentURIObject.spec.split%28%22//%22%29%5B0%5D%3B%0A%20%20var%20data%20%3D%20%27%3C%3Fxml%20version%3D%221.0%22%3F%3E%3C%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%20type%3D%22text/css%22%3F%3E%5C%0A%20%20%20%20%3Cwindow%20xmlns%3D%22%27%20+%20xulns%20+%20%27%22%20id%3D%22alertDialog%22%20windowtype%3D%22alert%3Adialog%22%20onblur%3D%22close%28%29%22%20%5C%0A%20%20%20%20%20%20title%3D%22%27%20+%20pref%28%22textAlertDialog%22%29%20+%20%27%22%20persist%3D%22screenX%20screenY%20width%20height%22%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox1%22%20class%3D%22hbox%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Cvbox%20id%3D%22vbox1%22%20class%3D%22vbox%22%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3Cimage%20id%3D%22image1%22%20src%3D%22%27%20+%20pref%28%22imageAlert%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3C/vbox%3E%5C%0A%20%20%20%20%20%20%20%20%3Cvbox%20id%3D%22vbox2%22%20class%3D%22vbox%22%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3Chbox%20id%3D%22hbox2%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22protocol%22%20class%3D%22label%22%20value%3D%22%27%20+%20uri%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textAlert%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textAlert1%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textAlert2%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textAlert2%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textAlert3%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textAlert3%22%29%20+%20%27%26quot%3B%27%20+%20pref%28%22protocolList%22%29%20+%20%27%26quot%3B%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3Chbox%20id%3D%22hbox3%22%20class%3D%22hbox%22%20align%3D%22center%22%20pack%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22btnAdd%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textAdd%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageAdd%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22btnSettings%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textSettings%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageSettings%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22btnCancel%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textCancel%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageCancel%22%29%20+%20%27%22%20oncommand%3D%22close%28%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%20%20%3C/vbox%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%3C/window%3E%27%3B%0A%20%20data%20%3D%20data.replace%28/self/g%2C%20%22opener.document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29%22%29%3B%0A%20%20var%20url%20%3D%20%22data%3Aapplication/vnd.mozilla.xul+xml%3Btext/plain%2C%22%20+%20encodeURIComponent%28data%29%3B%0A%20%20window.openDialog%28url%2C%20%22%22%2C%20%22chrome%2Ccenterscreen%2Cdialog%2Cresizable%22%29%3B%0A%7D%0A%0Athis.onTextbox%20%3D%20function%28e%29%20%7B%0A%20%20//gRoot.setCharPref%28e.id%2C%20e.value%29%3B%0A%20%20sCV%28e.id%2C%20e.value%29%3B%0A%20%20if%20%28e.id%20%3D%3D%3D%20%22buttonName%22%29%20this.label%20%3D%20pref%28e.id%29%3B%0A%20%20if%20%28e.id%20%3D%3D%3D%20%22toolTip%22%29%20this.tooltipText%20%3D%20pref%28e.id%29%0A%20%20this.label%20%3D%20pref%28%22buttonName%22%29%3B%0A%20%20this.tooltipText%20%3D%20this.label%20+%20%22%5Cn%5Cu2022%20%22%20+%20pref%28%22toolTip%22%29%3B%0A%7D%0A%20%20%0A%0Athis.onButton%20%3D%20function%28e%29%20%7B%0A%20%20addEventListener%28%22mouseover%22%2C%20toggleFindbar%2C%20false%29%3B%0A%20%20if%20%28e.id%20%3D%3D%3D%20%22btnAdd%22%29%20%7B%0A%20%20%20%20var%20mrw%20%3D%20Services.wm.getMostRecentWindow%28%22alert%3Adialog%22%29%2C%20uri%20%3D%20gBrowser.contentDocument.documentURIObject.spec.split%28%22//%22%29%5B0%5D%3B%0A%20%20%20%20//gRoot.setCharPref%28%22protocolList%22%2C%20pref%28%22protocolList%22%29%20+%20%22%2C%22%20+%20uri%29%3B%0A%20%20%20%20sCV%28%22protocolList%22%2C%20pref%28%22protocolList%22%29%20+%20%22%2C%22%20+%20uri%29%3B%0A%20%20%20%20mrw.close%28%29%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%20%20if%20%28e.id%20%3D%3D%3D%20%22btnSettings%22%29%20%7B%0A%20%20%20%20var%20mrw%20%3D%20Services.wm.getMostRecentWindow%28%22alert%3Adialog%22%29%3B%0A%20%20%20%20this.settingsDialog%28%29%3B%0A%20%20%20%20mrw.close%28%29%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%20%20fp.init%28window%2C%20null%2C%20fp.modeOpen%29%3B%0A%20%20fp.appendFilters%28fp.filterImages%29%3B%0A%20%20if%20%28fp.show%28%29%20%21%3D%20fp.returnCancel%29%20%7B%0A%20%20%20%20//gRoot.setCharPref%28e.id%2C%20fp.fileURL.spec%29%3B%0A%20%20%20%20sCV%28e.id%2C%20fp.fileURL.spec%29%3B%0A%20%20%20%20e.image%20%3D%20fp.fileURL.spec%3B%0A%20%20%7D%0A%20%20if%20%28e.id%20%3D%3D%3D%20%22imageClose%22%29%20%7B%0A%20%20%20%20var%20mrw%20%3D%20Services.wm.getMostRecentWindow%28%22settings%3Adialog%22%29%3B%0A%20%20%20%20mrw.document.getElementById%28%22btnClose%22%29.image%20%3D%20pref%28%22imageClose%22%29%3B%0A%7D%20%7D%0A%0Athis.onCheckbox%20%3D%20function%28e%29%20%7B%0A%20%20var%20bol%20%3D%20pref%28e.id%29%20%21%3D%3D%20false%20%3F%20false%20%3A%20true%3B%0A%20%20gRoot.setBoolPref%28e.id%2C%20bol%29%3B%0A%7D%0A%0Athis.onBlur%20%3D%20function%28e%29%20%7B%0A%20%20e.value%20%3D%20e.value.replace%28/%2C%2C+/g%2C%20%22%2C%22%29.replace%28/%5E%2C/%2C%20%22%22%29.replace%28/%2C%24/%2C%20%22%22%29.replace%28/%5Cs+/g%2C%20%22%22%29%3B%0A%20%20//gRoot.setCharPref%28e.id%2C%20e.value%29%3B%0A%20%20sCV%28e.id%2C%20e.value%29%3B%0A%7D%0A%0Athis.onDestroy%20%3D%20function%28reason%29%20%7B%0A%20%20if%20%28reason%20%3D%3D%3D%20%22delete%22%29%20%7B%0A%20%20%20%20removeEventListener%28%22click%22%2C%20toggleFindbar%2C%20false%29%3B%0A%20%20%20%20removeEventListener%28%22mouseover%22%2C%20toggleFindbar%2C%20false%29%3B%0A%20%20%20%20removeEventListener%28%22DOMContentLoaded%22%2C%20toggleFindbar%2C%20false%29%3B%0A%20%20%20%20unloadSheet%28css%29%3B%0A%20%20%20%20unloadSheet%28css2%29%3B%0A%20%20%20%20//Services.prefs.deleteBranch%28pref.root%29%3B%0A%7D%20%7D%0A%0Athis.label%20%3D%20pref%28%22buttonName%22%29%3B%0Athis.tooltipText%20%3D%20pref%28%22buttonName%22%29%20+%20%22%5Cn%5Cu2022%20%22%20+%20pref%28%22toolTip%22%29%3B%0A%0Aif%20%28pref%28%22enableFindbar%22%29%20%26%26%20getProtocol%28%29%29%20this.image%20%3D%20pref%28%22iconOn%22%29%3B%0Aif%20%28pref%28%22enableFindbar%22%29%20%26%26%20%21getProtocol%28%29%20%7C%7C%20%21pref%28%22enableFindbar%22%29%29%20this.image%20%3D%20pref%28%22iconOff%22%29%3B%0A%0AloadSheet%28css2%29%3B%0AloadAndObserve%28%22cssEnabled%22%2C%20css%29%3B%0A%0AaddEventListener%28%22click%22%2C%20toggleFindbar%2C%20false%29%3B%0AaddEventListener%28%22DOMContentLoaded%22%2C%20toggleFindbar%2C%20false%29%3B%0A%0A//%20Name%3A%20Findbar%20Persist%0A//%20Author%3A%20Sonny%20Razzano%20a.k.a.%20srazzano%0A//%20Created%3A%20Jul.%201%2C%202016%0A//%20Updated%3A%20Sep.%208%2C%202016%20%28Added%20protocol%20ftp%3A/chrome%3A%20and%20settings%20dialog%29%0A//%20Homepage%3A%20http%3A//custombuttons.sourceforge.net/forum/viewtopic.php%3Ff%3D4%26t%3D3776%0A//%20Description%3A%20Toggles%20Findbar%20and%20persist%20on%20all%20page%20protocols%20http%3A%2C%20https%3A%2C%20file%3A%2C%20ftp%3A%20and%20chrome%3A%20%28editable%20in%20settings%20dialog%29%2C%20while%20initiated%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%23settingsDialog%20%7B%0A%20%20padding%3A%202px%204px%204px%200%20%21important%3B%0A%7D%0A%20%20%20%20%20%20%0A%23settingsDialog%20.hbox%2C%0A%23alertDialog%20%23hbox3%20%7B%0A%20%20margin%3A%202px%200%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20%23hbox3%20.button%20%7B%0A%20%20margin-left%3A%204px%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20%23hbox5%20%7B%0A%20%20margin-top%3A%202px%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20.label%20%7B%0A%20%20margin-top%3A%204px%20%21important%3B%0A%20%20text-align%3A%20right%20%21important%3B%0A%20%20width%3A%2078px%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20.textbox%2C%0A%23settingsDialog%20.button%2C%0A%23alertDialog%20.button%20%7B%0A%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20background%3A%20linear-gradient%28%23EEE%2C%20%23BBB%29%20%21important%3B%0A%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20border-radius%3A%203px%20%21important%3B%20%0A%20%20box-shadow%3A%200px%201px%202px%20rgba%280%2C%200%2C%200%2C%200.3%29%20inset%2C%202px%202px%202px%20%23222%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20.textbox%20%7B%0A%20%20padding%3A%203px%204px%202px%204px%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20.button%2C%0A%23alertDialog%20.button%20%7B%0A%20%20padding%3A%203px%200%200%203px%20%21important%3B%0A%7D%0A%0A%23alertDialog%20.image%20.button-icon%20%7B%0A%20%20margin-right%3A%200%20%21important%3B%0A%7D%0A%0A%23settingstDialog%20.image%20.button-text%20%7B%0A%20%20margin%3A%200%202px%200%204px%20%21important%3B%0A%7D%0A%0A%23alertDialog%20.image%20.button-text%20%7B%0A%20%20margin%3A%200%202px%200%206px%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20.textbox%3Ahover%2C%0A%23settingsDialog%20.textbox%5Bfocused%5D%2C%0A%23settingsDialog%20.button%3Ahover%2C%0A%23alertDialog%20.button%3Ahover%20%7B%0A%20%20background%3A%20%23FFF%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20%23textEditable%20%7B%0A%20%20margin%3A%202px%204px%20-4px%2093px%20%21important%3B%0A%20%20font-style%3A%20italic%20%21important%3B%0A%7D%0A%0A@-moz-document%20url%28chrome%3A//browser/content/browser.xul%29%20%7B%0A%20%20%23main-window%20findbar%20%7B%0A%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20%20%20background%3A%20linear-gradient%28%23EEE%2C%20%23AAA%29%20%21important%3B%0A%20%20%20%20border%3A%201px%20solid%20%23CCC%20%21important%3B%0A%20%20%20%20border-radius%3A%205px%20%21important%3B%0A%20%20%20%20box-shadow%3A%20none%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-closebutton%20%7B%0A%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20%20%20-moz-image-region%3A%20auto%20%21important%3B%0A%20%20%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20%20%20border-radius%3A%203px%20%21important%3B%0A%20%20%20%20box-shadow%3A%200%201px%202px%20rgba%280%2C%200%2C%200%2C%20.5%29%20inset%20%21important%3B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAgUlEQVR42mNkoBAwUt2AhoaGeijdSIw4I7oiIIax4YpxiaMYAFO0cOFCBl5eXoagoCAGZE3r1q1j+Pz5M0N8fDyKIRgGgBQKCQkxvHv3DmwICKCLYTUAlyEgAGKDgIODA24v4DIEBLDZTBsD8HkBlyHUC0SKo5HihESVpEwOoNgAAE1frxFe2fGiAAAAAElFTkSuQmCC%29%20%21important%3B%0A%20%20%20%20margin-right%3A%2048px%20%21important%3B%0A%20%20%20%20min-width%3A%2024px%20%21important%3B%0A%20%20%20%20padding%3A%202px%204px%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-closebutton%3Ahover%20%7B%0A%20%20%20%20background-color%3A%20%23FFF%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVR42q2TvRWAIAyELzY6g7WbOIez8JjFOdzE2hm0MZqozyg+CuEqOI4Pwg8hUZQVwMtCqKpVO/NcPJLGp7LkAHBN9nyMOSIQs44zEVvfQm7AGXJtC9Q1fN8f4V3qdx0wTfDD8ICHAAk2DTCOCtFVX943wJRgJ6ikLTtxLlLCDhAz2InotfKVzQ+IlmAg8Vv4fYjJ15j6kJKfcpbP9EcblnvEEeDffrAAAAAASUVORK5CYII%3D%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-closebutton%20.toolbarbutton-text%20%7B%0A%20%20%20%20margin-left%3A%20-4px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-clear%20%7B%0A%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20%20%20-moz-image-region%3A%20auto%20%21important%3B%0A%20%20%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20%20%20border-radius%3A%203px%20%21important%3B%0A%20%20%20%20box-shadow%3A%200%201px%202px%20rgba%280%2C%200%2C%200%2C%20.5%29%20inset%20%21important%3B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACLklEQVR42qVTW4tSURReRyMdr01qjooonBQTOiD0qIR4eVAjLxCCL4L14O8ZEOZtHicSBcMbmg8hKFQqFg3l7cUHEbyAgoPX1hGNsAZhWvCxzj5nrW9/59trE/CfQdylyWazUev12r9ara6OEuj1eg3CvNlsAPFxNBrdp5udTicZj8dbxwgeIahcLveGJohEIp/6/f5Dk8lE5vP5FhL9W4HX6z3B9DwWi62azebrTCYDYrEY+Hw+XFxcfG40Gqfz+fyq1WrVCZ/Px0B2DjbwMZ9ifszlckmKotQkSUq63S7TarUCTSISiYDD4cDl5eUXrH2fTqevCdztFY/HI/EDWyAQsJVK5QOpVMq/ublhzmYzwDXU63XaOEilUiCRSIDJZEI0Gi1ms9lzwu1265DthcfjebZYLABNgul0ut1NLpfDcDjcNtVqNbDb7ZBMJkEoFAJ6UEScEzunKUx+o9FIqlQqkMlkgAYBygeNRgPL5XK7rlQqYDAYIBQKFc1m84dCofD9t4kOh+MJKnnpcrkM7XYbGAwGaLVaQLO2BPhbMB6PIRwOl7E8ibU//xqkvZJAIEDSKmgiFosFCoUC8PggkUhco5JouVz+duskWiwWPRZ5n2LQsnU63fZXcBZ+4PpdtVr9enSU1Wo1hafiDwaDJJ41lEql5mQyedvpdOq33QU24mSXWfT7s7MzNQ6PjZ7AwWCQ7vV6tOzlATZ7gnsH2MeaLkKsds+HuNtt/DN+AXlHCgCxWmnnAAAAAElFTkSuQmCC%29%20%21important%3B%0A%20%20%20%20margin-right%3A%205px%20%21important%3B%0A%20%20%20%20min-width%3A%2024px%20%21important%3B%0A%20%20%20%20padding%3A%202px%204px%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-clear%3Ahover%20%7B%0A%20%20%20%20background%3A%20%23FFF%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACc0lEQVR42qWTX0hTYRjGn685p87p/LPM2fyTS6HEtFOCiZpbFystJQqhSEJv9KKrLiIRqRzVRV1YKF6USReWaWKptJXMPwlSKgiFWE0RlJDMzMTU7Zzz9U5WCCWCffDjPbyc9/me853nY/jPxbYydCcLFkmG1e1GxaYCeQJLP7YfJZwDxMPlUR4gSbDm5J8UOptahzcTMBLm8aGbdZ7pjprytvkRbkgzZQuOzt5hUdrAwd1ipqVy7kI9F53O8Vqb7QVMsU4otVo8r7vaPurg+qVVVDyeg43VlDAluQumDcKJSBpM81MHH4jdl5ESFZ0c1zW2Q2E2W2C3dyAn5hN8AwPR3nC7k8u4Vf6E9zDarcpPHXJQpQ5S+2vCNDrD7oiQiJ3h7kWXj7iwgtA9BrT2KmEy5ZJIG8xx41AoFLC31DdWPuVnWfV5liXLuHiooOyE6BKx+OU7lr8tQRsRirBdevycnofGoENTv4JECkikGaZgJ14PtDy69oyfWTuD03thoWI1ZwpClNEAXUwkZFHG3IfPiEo1gq9IYC4ZD94yJCVlorS0sPFyLu5f7+COP4d4o5Blk5NLGXlFR6fGJuHDFYhONkJadq8JaGO2wzW9gLSyey30ejXnvP+vIP12UlScL3hcTL+fhErlB128HosTs2i3N/fRr6uq7UPXhkmsOM5yKGXlCQnpR2SyFJ+SiFn6FFv3qwHqX2kYxMtNo3w4DhZdAKzFZaeEqXeT6HkzNDjzA5WOCdj+dRe2EWoiiNAQ/p5eih6piWEo9UT441dUj8ygm/ouYpVwe58l5hXxJVTeqvT2aBSyF4kQvXU9fEu3cf36BSQ89XDedE3mAAAAAElFTkSuQmCC%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-textbox%20%7B%0A%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20%20%20border-radius%3A%203px%20%21important%3B%0A%20%20%20%20box-shadow%3A%200%201px%202px%20rgba%280%2C%200%2C%200%2C%20.5%29%20inset%20%21important%3B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20margin-right%3A%205px%20%21important%3B%0A%20%20%20%20min-width%3A%20200px%20%21important%3B%0A%20%20%20%20padding%3A%202px%204px%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-textbox%5Bstatus%3D%27notfound%27%5D%20%7B%0A%20%20%20%20background%3A%20%23F00%20%21important%3B%0A%20%20%20%20color%3A%20%23FFF%20%21important%3B%0A%20%20%20%20text-shadow%3A%201px%201px%202px%20%23000%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.tabbable%20%7B%0A%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20%20%20border-radius%3A%203px%20%21important%3B%0A%20%20%20%20box-shadow%3A%200%201px%202px%20rgba%280%2C%200%2C%200%2C%20.5%29%20inset%20%21important%3B%0A%20%20%20%20min-width%3A%2024px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-next%2C%0A%20%20%23main-window%20findbar%20.findbar-find-previous%20%7B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20padding%3A%202px%204px%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-next%20%7B%0A%20%20%20%20-moz-image-region%3A%20auto%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABSklEQVR42qXQv0sCYRzH8c+lEZWcUOed9MPQJSihoUHaWluCgohqaelPqNVrbWhu6b9oqaGWEKJoac8uMX8l/sjT8/H0mxfpIXn6QJ/lHg7eL3geAf+c0O+ntHlD4cUp1IoMeqWOqsGQ1FKoPx8KXMD68RNF1hRoWYbcp4F8juHtJY7i7TYfEDmKUXBV6caFQh2ZVw3G/S4fEN67I2VZ7salWgPl9wRaD/t8QGjrmsSA3I0rholm+gP0eMAH+DeuaMwn2XGLgGyKH5DagOnx2rG1Qh4U2xkArFyST54Gud1go+Oo0ogdW2MM0L9ARhXIZwDtROgFli6iUmBObUxMQm+gN+6saQLlEigZV9vA6d8rhM6jrpmA2vKIgMs9NO7/BgtnUWE2qEL02ohD7PiIPYg1h9gZ6CD+edU6UjrRNx4M/CI/X4d4OMCxb7reuhENyrkyAAAAAElFTkSuQmCC%29%20%21important%3B%0A%20%20%20%20margin-right%3A%205px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-next%5Bdisabled%3Dtrue%5D%20%7B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABJElEQVR42qWRvYqDQBRGrxKsEosUol0a8VksQwqxySsItrbWllpZRIQpLfdprExnEVHxF3UdwWHD6mZgPxiuOJzDzDcM/DPM1k/TNJEsy1DXNVRVtcwkSSAIAp1K4HkeUhQFsiyD1+u1zDiOwXVdOoHjOOhyuRA4z3N4Pp/g+z6dwLZtJEkSgcuyhDRN6a9gWRY6n88Exj0URQFhGNIJcImn04nAwzAsk1pgGAY6HA4ExmnbFh6Px75A13UkCALZ6LqOwDjjOELf98vCzxpFkf4m0DTtLoqiyrIsNE3zBq+ZpmkRz918zYLg1xVut9ud53kVH59hmI/wZgfX63WRcBxHJHvwbok/JWsfW/CuYJUcj0cVf8/PuQn/KVgleO7BHwU0+QaQocoRLKElSwAAAABJRU5ErkJggg%3D%3D%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-next%3Anot%28%5Bdisabled%3Dtrue%5D%29%3Ahover%20%7B%0A%20%20%20%20background-color%3A%20%23FFF%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-previous%20%7B%0A%20%20%20%20-moz-image-region%3A%20auto%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR42tXQvUoDQRSG4W+UEAt/CCQhglqJvYUoEisrL8AipLQWbLR15g68CRUbK69BBEEURDBEggHRJAzjqrPubmY97lbrkh93sfLANGd4n+Iw/HHY0M+10310XdBFRaQGwri8OMO15eLqusZxsyUSA2G8vjrHJ0sTkNJB47aF5t09R21b/Ar8jC1tIDte8GzIlzbshzrH464YCPSLlXJhfXbxoV34rwr01AiQPdEDDI0dA/+LAN8Ab1YMiYCVY1qYLWA0kwGyWWgf8djzAP0OcmxAthAAbOAR8xtnZManojgcJUHnm7036weMlU/I5IpRHE77GXRZTQaMLB8R5UvxZRqALR0SitP/GcD8AbFcIbYi1QHqOwmBFPMNG5KzEWHCSEoAAAAASUVORK5CYII%3D%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-previous%5Bdisabled%3Dtrue%5D%20%7B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA/ElEQVR42tWRO4qEQBCGa/CBGHgH72DkDSY3GRARPIBnshU6UDT0GF7AxNhAEd+i7paBrMzOrLLR/FBBdfN9dFfd4J+5vbs0TdOY5xlc1yWXBQgrinJv2xaSJIkppeS0AGFVVe+SJEFZlpBlGaRpGvu+T/4U/ISbptkERVFAnudYcRiG5KXgN7iqKqjreuu7rsM+jqKIPAnewTgHHOa6rjCO40GyCwzDoLIsA8dxwDAM9H1/gJdlgWmatsKXfAseL4do2zZlWXaHMcMwgOM4j1NbsCyL8jy/wxiUeZ53ToDfEQThcHZJoOs6FUXxkwWapj3NANcaBME5wZV8AeRHxBGt/ThhAAAAAElFTkSuQmCC%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-previous%3Anot%28%5Bdisabled%3Dtrue%5D%29%3Ahover%20%7B%0A%20%20%20%20background-color%3A%20%23FFF%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-next%5Bchecked%5D%3Ahover%2C%0A%20%20%23main-window%20findbar%20.findbar-find-previous%5Bchecked%5D%3Ahover%20%7B%0A%20%20%20%20background-color%3A%20%23FFF%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-highlight%2C%0A%20%20%23main-window%20findbar%20.findbar-case-sensitive%20%7B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20padding%3A%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-highlight%20%7B%0A%20%20%20%20background%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACRElEQVR42qWTS6hSURSGl2/FIpRwEuQkEB2Y3CAHDZwEotwLiRg4CQpMJ81FnDhQQQwkxEkiCEo0EPLSQNKJJGYgPuI6CSVNUQLfen0fbW97jHxcvQs253DY5/v//a+1SXBECQQCtlgsftHpdHKxWOzzrr2kQ+Fer/cei8U6DQaDtyaTCaD1rVAonPd6PeLaAiqVim2z2V4tFgtGJpMBv98P/X4fyGRytVarva/X65fXEnA6nU94PN59Pp8Pq9UKWq0WPhEg90Cj0Tr5fP5Nt9s9TsBsNj/kcrkK5B44HA6gHgCbzYbRaAQejweKxeLXRCIROeoEOp3urkgkejafzylMJhOWyyUwGAyQSCSA+gHT6XSODLyORqPTgwXkcvlNpVL5EjXzBobhaAiCACqVisF4oohGo/FBr9dfbPp/p4BQKKQYDIbnCH4HOyaRSP/hfyeIKJfLAZ/PV97G2CngcDjOEPQEAykUCuD88RNFhbNftdvtjy6XK7OLsVXAZDI9QE09xe90On3tHI3jWgQ3Frn/YrVaP+2LeKOAVqu9rdFoDKVSad1UDMeF88dwJPIdxfKuUqns428WMBqNQrVa/RSNHjSbzbVrnD+Gown6FQqFfNlsdraXvk3AYrGcKBSKM3yBqtUqDAYDGI/HMJvNLpPJ5NtIJNK7CnyrgN1ufySVSh8Ph8M/m5B7FNcinU77A4FA7arwrQKoRHiFw2ERamwbnaSSSqUu3G73j0PgWwXQDTXmcrlzmUz289+3eDw+PBSO6zdwHx8gUmei8gAAAABJRU5ErkJggg%3D%3D%29%20no-repeat%200%204px%2C%20linear-gradient%28%23EEE%2C%20%23AAA%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-highlight%3Ahover%2C%0A%20%20%23main-window%20findbar%20.findbar-highlight%5Bchecked%5D%20%7B%0A%20%20%20%20background%3A%20%23FFF%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACgElEQVR42qWSXUhTYRjH/zvneI5s1RylJtgHBBGCSCF6UUmghd0IohZEiJE4uwgzEM1AzCZ2YfhBn2wFXqRGkDCLCAxrihkYSxph0oeGupwf286287mz0zHorqmbf3hvXh5+v+d53leHOFJmMu02m0wjP3i+p8rttqxXq4sVbrPZTmdx3IPZtra9QVnGiqI8sbJs5ZSiCFsWnD+Tn3q95e50WJZ3/HY48NViARsIQEcQ719LUvFbQVjckmDZTvdwdGH5L/0VKCoBcWEBruYbUD0eJFLUzy6f78C0LKtxCSYfM5cPJovdskhA2JYJ964OkIkpCGsTOBsbsexyddctLdXENUF/M5NXnCMOiUEiwZCkNag1ySn7MZfeBZHYB1kU+ZaGhrTB4WF/zIK6c3R6a3l4gmfVVL1RB0KJQBV1UBkK/gCD2aRWaWIm8YLZbO6N+ZELsinmhQUOKRDOYQwkKEKBykOD0xA4CZyPkAZdaYWVnfPD0RjrChYHaJshIl0kaRIMrSCyBqdoSLKE0CrUT/Mp5lNNHut6jKiCj1am+lCyeF9VSegNGvzvL0+AhLAGVzHn3dlxuHbl6kYr/q+gpiIvo7lij5Na7qcNRm0tGlxVKISpCELeCPxB48uSdqnI+Z2PxCWw1NeUVpcce4bVXuild6AVPxQG4LwKeM7wufoRedQ+zgY2gkcVdDbVVZ09eeIh510FHRpAqnEQPCuDC9Ce9lfbc28/X5nZDDyqwHrzWn3BkcxbQoBFAimAYYIgfH2CfdyTf+ne0thm4VEFWsrWztTTO6UUpXzzhnyOUedIX23H0JtY4FEFuVkZ/g+TXyqLjmeP/ruzj0y4Y4Wv5Q8F6iIgX85TdgAAAABJRU5ErkJggg%3D%3D%29%20no-repeat%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-case-sensitive%20%7B%0A%20%20%20%20background%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAABvklEQVR42rWUOYsqURCFT6u4ICouiAtiYqTirzExFMHERAQjg0uHgoobGKiIgfh73HEJDUQQxDURnVcFT2aCx2udmYKGey/d56tz6tISfrmkdz+sVCrifr/j8Xjw4/F4EIvF5B8B5PN5YTKZYLVaWZxA2+0WmUzmZwC5XE4EAgHodDr8dTEYDFAoFL4PkGVZGAwGuFwu7HY7OByOJ6BYLL4HqNVq4vOeOt9sNvD5fFCpVAwYDocolUqvA0h8uVzymuKw2+0wm82w2WyIx+Nyp9NhODkol8uvA/4MTlAcRqORARTL6XTC7XaDJEmIRCJ8ToBqtfoagLofj8cIBoMcBQktFgvo9XpeU4XDYV6PRqPXAYlEQni9Xo5lv9/DYrGAgK1Wi4XS6bQIhULPGdTrdeWAaDQq3G43nE4n7y+XC9+Y2Wz2BUDuyMFkMiHHygHUvd/v5+6ortcrO5nP509Av98Xq9WK3zkcDjifz2g0GvJ/AclkUtBQaZAkrNVqecjkYDqdotvtylBY/wRQ9uv1Gs1mk8Wy2aygq0kdt9vt9wEkTrdErVbjeDw+40ilUkKj0XAM5KrX6ymCvP03VVoflz3vEVRW3O4AAAAASUVORK5CYII%3D%29%20no-repeat%200%204px%2C%20linear-gradient%28%23EEE%2C%20%23AAA%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-case-sensitive%3Ahover%2C%0A%20%20%23main-window%20findbar%20.findbar-case-sensitive%5Bchecked%5D%20%7B%0A%20%20%20%20background%3A%20%23FFF%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACMUlEQVR42rXUS2hTQRQG4P/m5qWJ0aZpb0IxJJG22IAxiSXFokXBgsWCFMWFqAtdaEEQuhQ34kJwoRioIFWIgiiuBME3orQ2L9O86KJtrIqU1FeiMX1Ec483EyiKXSRRh7mLAzPnO5yZuRz+8+Bq3djjHSciEdKEKH2ta1fCu9f2R76agC3nEiSsUsBUr2TJRZHwemYB9wbs/wZwnAyQu1WPFSqeJS8h/tAbxC5s/3ug89RL0muLMDbV492HBZgb1ZB6hUDwLWIXawRS/QP0azzYtgcjH9WwW7WQyTgGhELTiHm7qwdKyefGQhAhY6d5y70fEVsnmhpUuHKomTvsmyzlRyQwheilndUDia3dpLZYwOtWSzdGhI9rxh1FC6hQAMfJ4G63snOI+iXgck91QKn6zOgI6to7ADkPFEWcyZoQEVzluylN5yYLA+L+FKJDVQLDGzykl6pXGU04KByAL30NDydm0f/sJtvnOPaAHG4Ls5L+SUSv7qocmIFA7z3roTKbWZzLL6LOaMCj1KclwHn0Ptld5RaNh6UWDVUBPN/ooYZ1LTjSdoLF58NnsUYw4PF0Zgk4fvsVxeNf2NnkM1+xmMsjef13ZFngqXsb6TUKFL//QLpICApO9M5PQWsyYiKRRG/0RcXvZ9mFftdm0lltSMxmsW/4LlsT3LGbdI0G3EgrcfrJYO1AyNFBvEYDnpcj+y2HrrFytWFPF3FyJXLzc/hcENGXHK0IqflvWun4CYr06hFCjHr8AAAAAElFTkSuQmCC%29%20no-repeat%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-entire-word%20%7B%0A%20%20%20%20background%3A%20%23CCC%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACM0lEQVR42q2US4hSYRTHz0Wvr8wXiG+FXI3bFuOuhQUu2rQIWtdCdCM+yJAJRuMi1WJAzRdK4Lo2FUQQgqFIuBB1EYGIlJM0tskX13vVOncoiCHIO3k23+V7/c75/+/5COARgUDgkkwmM1MU9W7bM8S2GyORCGk2m6nBYLCZz+eHuVyO3ikgHo9fdblc1/v9PtRqtTf5fP71zgDhcFiC0lBut1tAkiSUy2V6tVrdz2az7H8DvF6vRCqVBoxGo9TpdCq4uV6vB41G4xVW8fbcgFAoZNLr9Vfw8svtdjusUql0SqXyntVqhWazWVgul98KhcIJb0AwGBQRBBHVarUqm80GAoEA6vV6ar1ef9bpdI/sdjt0u927iUSC8Xg8t3D9eSaTYbcGcBGNRp2Y4U2RSCTAKsBisQACAMGnwEqlcozbhg6HYx+rO95sNlmsZsZLIjR2D4fbKA2J4xe8WItGkygTmEwmmEwmIJFIYDabQbVa/cowzJNisTjhZbLf77dg5jfS6XQSm4xA2Y7QE5hOp98RJMNvUqFQwGKxAKyEoWn6AI1ntgb8GQi4iIAHGo0GWq3WAWa/lMvljzFzFiU6YVn2RTKZ/Mirgt+Bv+ohGnwBPSF/Ad6LxeJn2AsBXH6JJn/gZfLZ8Pl8DrzwDspxajrnA9cHqVTq/H3wF4k8arV6jwMMh8NP4/H4CDv5x84A3HMhFAopg8EAnU7nYalU+meT8QJwEYvFro1GIzO+pE+3PfMT2B/gEZMDjLUAAAAASUVORK5CYII%3D%29%20no-repeat%20left%20center%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-entire-word%5Bchecked%5D%20%7B%0A%20%20%20%20background%3A%20%23FFF%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACa0lEQVR42q3TS0wTURQG4DNzp5127LulU0uBABpIQ1iA2jbEINFEYqIL48YVWxYoLrBalQCJISYGE6FG3WhCjAtZuNGoCw0mPpo2KKU1EWnlUSpvdNCWTmfu1HbhQl3YQf7lzT35cu85hwAZ0XrDLRaGaJjurR8otoYo9iJ1KanxOHKLkZn13PfUZiUecq1uK1BxZaan65ChNziVhvuvZ/ux33Nx2wDqwgxbxmwmu47YEUMS0D4c38CiUC4O7uP+G1CcDlpUavWr3aX6kjaPzlQ4ezuZgpFAohv73Ze3DCh9sb01NnWnlRZPjobnGLWJdbI65Tt3uQJGQssnMJ+O4RtNYdkAdT5mZCATLbFa7K5qEgxYgntvkq0ZTIYcNuNac5USHkc3jMt9td9QR+AuIOoMvr6HKxooxNwTaxd43p+hzchpR+AuQyBhASQqP6oSwO3n81EM5NhBp6ntWXhpAiThcP41i7K+iPFNHqNAHCkxaJQiUB8RhSp1GpIuMwI05tEVTgSGIYH7iuHOy/lYLptqxTeb47KarOj60AQ4ezVHqfYDiRBrMfGsWoS1H/yS1ag0aXcgRak+BzzHw5PxlVQ6k63Ij+9a0cBvvTn3yZEHErVGDKPj03ZCpU2ZNTSXyQpZkMTJlEB4xYG6p7Je8CvoVGhhp81iBlqrqDEUgM/DBK3pIEQ+KOWIs3iw8ZGsJv8FdI4dV9PUA1JvR/VWBLv0IjwMxLu5a56t78Gf0XgjL8wmXUsVq4Mvibn38VXeld9kYdsAyjfNmql0ss6mgtFIohHfOvDPJZMFFFLdP9U3u7DeIA65jhZb8xNNSOwRvU1bqQAAAABJRU5ErkJggg%3D%3D%29%20no-repeat%20left%20center%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-highlight%20.toolbarbutton-text%2C%0A%20%20%23main-window%20findbar%20.findbar-case-sensitive%20.toolbarbutton-text%20%7B%0A%20%20%20%20background%3A%20none%20%21important%3B%0A%20%20%20%20border%3A%20none%20%21important%3B%0A%20%20%20%20box-shadow%3A%20none%20%21important%3B%0A%20%20%20%20margin-left%3A%2018px%20%21important%3B%0A%20%20%20%20padding-top%3A%202px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.find-status-icon%5Bstatus%3D%27notfound%27%5D%20+%20.findbar-find-status%2C%0A%20%20%23main-window%20findbar%20.find-status-icon%5Bstatus%3D%27wrapped%27%5D%20+%20.findbar-find-status%20%7B%0A%20%20%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20%20%20border-radius%3A%203px%20%21important%3B%0A%20%20%20%20box-shadow%3A%200%201px%202px%20rgba%280%2C%200%2C%200%2C%20.5%29%20inset%20%21important%3B%0A%20%20%20%20color%3A%20%23000%20%21important%3B%0A%20%20%20%20font-weight%3A%20bold%20%21important%3B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20margin-left%3A%205px%20%21important%3B%0A%20%20%20%20min-width%3A%2024px%20%21important%3B%0A%20%20%20%20padding%3A%204px%206px%200%2024px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.find-status-icon%5Bstatus%3D%27notfound%27%5D%20+%20.findbar-find-status%20%7B%0A%20%20%20%20background%3A%20%23FFF%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACqklEQVR42pWUXUgUURTHz8ydGQVpmIwk19U2t2ILVosi+sL2JVkfgkxIg+yDEKFekqKiF333oR4ysc3o40Uf8otAezKQiAqSgtXaJJVg/didTTfd2Z3ZO9uZdbXF1t3tD8M9s/ee/++ee/YOA1noBiFSPss6NnPcPmAY8GvayIyuj7ZTGsiUy6SbvInGe0Xx3m6T6VJxfj7wHAcQi4GGz89AADyy3PZ2bq65k1L5vwF3cbdHi4p67SUlFs3ng4gsg65pawlEEIBIEnh03d05NXWyNxqdyRpwHXdeUVg4ut9stixOTMSNUyUYMUMIjAmCu9/nc3RR6s8K8EAUWyrt9uagxwNSdTVYOzrAU1cHi0ND8XnJ6YRdXV0w2dgIcnc3UOzLa1VtbQ6FbmUF6C8t/bWd56Wl2Vk4trCw9vtXhBiyofmq3uExGSZjquq9oig7MVTSAq4ScuJCWdkbdXoaaDQKW6qqwJ5kmCw3AgODg/E4oOvwQlEqXlI6khZwh+cdZ2y24QUErC7YipDydZDPaC4nzA2F8Z/1OBSq6aW0Jy2gyQBYrcNBr3dtsgABB9YBPiHAlwAY6xSs4Kmi1PRlAlwkZMdps/kHG1i5Q9vQ/BA2MpU+ImQ+AZmnFFpDIdt4LPYtY5PvS9KkmVKLEdcEg38bWlsbH48kAftEceXIVPV7SyRSnrHJhq7x/OWDgvAkl2XBgqaHXS4YwXEmsVsTVnUcIR8aGmAaxyU8nlfhcGMPpY/We214k2/n5Dzfw/P1hGH+WZgcG5+N95HIQLumncXXSNYAFNskCM+sHHc+DytJlfAbzb+oap9L0+rxdSmVSdqPnaFzHFdZTEjTJpZ15iWqWcYj8ev6sIfStkFKB4xCNsrPCEhal3tKEAqKWVZ8GA4bl2QZH5op8Q/uPxcgcP8LuQAAAABJRU5ErkJggg%3D%3D%29%20no-repeat%200%205px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.find-status-icon%5Bstatus%3D%27wrapped%27%5D%20+%20.findbar-find-status%20%7B%0A%20%20%20%20background%3A%20%23FFF%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAAB+UlEQVR42mNkoDFgJFUDd9Du/zA2KyMjw4e1LnjNYCTGsK/rXBnRxWAAWY4oCxYtWgQ3YNYNbTCdpnEVQ2PmBkkwPT3gOYp4XFwcI0ELgsOiGViZGRmc6s+DxXbWGTD8/cfA8OcvEP/7D8QMDGqZhxn+f/nBcHaWM1D8P8MvoNyVQyuJt+DD138M4b2XwGJba2AWIEJHKf0ww5dfjAzXJluB+V9+/me4cYRMCzZV6YNd3T7nKkP/6rsMPLICDF85OSEa3n5m+H/vJUNhih6DochF0i14+uo7w8leC4bffyE+mLD4GsOEQ28YGIR5oBZ8YUgxEWSIDdFkeHBqNWELVq9e/d/LNwhsQUDrWYb3H38ybGsxY2BnZWb4+ec/AzMwafbPv8ow9chrsPoUCxGGxHAtoNwfhsen15FmgX3lSYa3H34yHO+3ZuBgYwZH8DegV77/+M8wf+UNBlCUJIRpMfwHxv7Pf8wMT8+tIsWCvwyOVacY3gAtONaHsOAf0NQvvxgYOFghWt8DHfIbKP73LyPD07NEWACLg59/GBhk4/YxfPvHxPBgth3YEHAyBeJfQEv+Avm/ofy///+D4+f5uTXEWQBj48pM+ABBC1AkPXf8ZxDjZ2D4+I2B4edvsNj/lx8YGM5FEF2G4VdotOI/o7gAihB1LaACAABKph8gxHqCawAAAABJRU5ErkJggg%3D%3D%29%20no-repeat%200%205px%20%21important%3B%0A%20%20%7D%0A%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
Findbar Persist. СКМ не работает
У меня - работает... Окно диалога вызывается.
Чтобы его поместить не в центр, а в другое место, надо в функции this.settingsDialog = function() {... заменить строку:
вместо window.openDialog(url, "", "chrome,centerscreen,dialog,resizable,alwaysRaised"); надо:
window.openDialog(url, "", "chrome,left=1000,top=400,dialog,resizable,alwaysRaised");
Здесь, конечно - 1000 и 400 я взял "с потолка" - Вы должны подобрать по своему вкусу - расстояние в пикселях от левого края и от верха.
Но будьте осторожны - если зададите большое значение для left, окно диалога может "вылезти" из экрана и Вы сможете закрыть его только через Таскбар винды.
Так что надо "поиграться".
В принципе их можно вычислить, зная высоту и длину диалогового окна и получив значения высоты и ширины экрана.
Если Вам это важно, я постараюсь это Вам подготовить.
Но дайте мне сначала знать - открывается ли у Вас диалоговое окно вообще и удалось ли "поиграться" с перемещением его?
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
У меня при клике СКМ вылетает окошко. ФФ-57скрытый текст
А если в about:config
параметр security.data_uri.unique_opaque_origin поставить в false и перезапустить?
Отредактировано lokiju (24-12-2017 18:10:24)
Отсутствует
У меня при клике СКМ вылетает окошко. ФФ-57
Я не понял, у Вас ФФ57 или 52?
У меня - 52.
А в 57 очень многое не будет работать имхо. Здесь я уже ничем помочь не могу...
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor пишетЯ не понял, у Вас ФФ57 или 52?
Сижу на FF-52 ESR и допиливаю под себя FF-57
Так на 52-й у Вас СКМ работает?
Как переместить диалоговое окно я Вам показал. Попробуйте на 52-й
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
На 52 у меня дополнение FindBar Tweak стоит.
Очень нравится
У меня оно тоже стоит.
Но я эту кнопку специально поставил, пытаясь Вам помочь. Теперь отключил за ненадобностью.
Для ФФ57 ничем помочь не могу.
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Dumby спасибо за ответ с профилями.
Еще один вопрос, в FF57 убрали и теперь не работает if (fp.show() == fp.returnCancel || !fp.file) return;
Смотрел здесь https://developer.mozilla.org/en-US/doc … FilePicker
и если с массивами данных понятно, например
var uc = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Components.interfaces.nsIScriptableUnicodeConverter); uc.charset = 'utf-8'; fileContent = uc.ConvertFromUnicode(fileContent); var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker); fp.init(window, '', fp.modeSave); fp.defaultString = fileName; fp.appendFilters(fp.filterHTML); fp.appendFilters(fp.filterAll); fp.open(function (rv) { if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { var stream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); stream.init(fp.file, 0x02|0x20|0x08, 0666, 0); stream.write(fileContent, fileContent.length); stream.close(); } });
var fp = window.makeFilePicker(); fp.init(window, "Сохранить как…", fp.modeSave); fp.appendFilter("", "*.png"); fp.defaultString = getTabLabel() + " " + (new Date().toLocaleFormat("%d.%m.%Y. %H:%M:%S")) + ".png"; if (fp.show() == fp.returnCancel || !fp.file) return;
Отсутствует
Прошу меня простить за дублирование просьбы - думаю, что просто не заметили
Есть кнопка, добавляющая прогресс-бар в адресной строке (код от Andrey_Krropotkin):
скрытый текстВыделить кодКод:
//Полоса загрузки в адресной строке (function(){ //Location Bar Enhancer5.1;Loading Bar0.3.0 var cssStr = (function(){/* #urlbar { background-image: -moz-repeating-linear-gradient(top -45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,0) 6px, rgba(255,255,255,0) 12px), -moz-linear-gradient(left, #33FF66 0%, #33FF66 100%); background-size:0 0; background-repeat:repeat-x, no-repeat; // transition: background-size 350ms ease 0s !important; } #urlbar:not([connecting])::after { display:none; } @-moz-keyframes progress-bar-stripes { from { background-position: 0, 0; } to { background-position: 51px 0, 0; } } */}).toString().replace(/^.+\s|.+$/,""); var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\""); var mainW = document.getElementById("main-window"); document.insertBefore(style, mainW); function main(window) { var {document, gBrowser} = window; function $(id) document.getElementById(id); var urlbar = $("urlbar"); let pageProgress = 0; let async = makeWindowHelpers(window).async; var LoadingBar = { listener: { onChangeTab: function(e) { urlbar.style.backgroundSize = '0% 100%'; pageProgress = 0; }, onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) { if (gBrowser.contentDocument === aBrowser.contentDocument) { var val = (curTotalProgress-1)/(maxTotalProgress-1); pageProgress = val; urlbar.style.backgroundSize = (100*val) + '% 100%'; if (val > 0.9) async(function() { if (pageProgress > 0.95) urlbar.style.backgroundSize = '100% 100%'; }, 1000); } }, onStateChange: function() { if (pageProgress > 0.95){ async(function() { urlbar.style.backgroundSize = '0% 100%'; pageProgress = 0; }, 1000); }else{ urlbar.style.backgroundSize = '0% 100%'; } } } }; gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false); gBrowser.addTabsProgressListener(LoadingBar.listener); unload(function() { gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false); gBrowser.removeTabsProgressListener(LoadingBar.listener); }, window); } watchWindows(main, "navigator:browser"); function runOnLoad(window, callback, winType) { window.addEventListener("load", function() { window.removeEventListener("load", arguments.callee, false); if (window.document.documentElement.getAttribute("windowtype") == winType) callback(window); }, false); } function runOnWindows(callback, winType) { function watcher(window) { try { callback(window); } catch(ex) {} } let browserWindows = Services.wm.getEnumerator(winType); while (browserWindows.hasMoreElements()) { let browserWindow = browserWindows.getNext(); if (browserWindow.document.readyState == "complete") watcher(browserWindow); else runOnLoad(browserWindow, watcher, winType); } } function watchWindows(callback, winType) { function watcher(window) { try { callback(window); } catch(ex) {} } runOnWindows(callback, winType); function windowWatcher(subject, topic) { if (topic == "domwindowopened") runOnLoad(subject, watcher, winType); } Services.ww.registerNotification(windowWatcher); unload(function() Services.ww.unregisterNotification(windowWatcher)); } function unload(callback, container) { let unloaders = unload.unloaders; if (unloaders == null) unloaders = unload.unloaders = []; if (callback == null) { unloaders.slice().forEach(function(unloader) unloader()); unloaders.length = 0; return null; } if (container != null) { container.addEventListener("unload", removeUnloader, false); let origCallback = callback; callback = function() { container.removeEventListener("unload", removeUnloader, false); origCallback(); } } function unloader() { try { callback(); } catch(ex) {} } unloaders.push(unloader); function removeUnloader() { let index = unloaders.indexOf(unloader); if (index != -1) unloaders.splice(index, 1); } return removeUnloader; } function makeWindowHelpers(window) { let {clearTimeout, setTimeout} = window; function async(callback, delay) { delay = delay || 0; let timer = setTimeout(function() { stopTimer(); callback(); }, delay); function stopTimer() { if (timer == null) return; clearTimeout(timer); timer = null; } } return { async: async, }; } })();
Для полного счастья не хватает отображения степени загрузки страницы в %, как здесь - https://www.w3schools.com/howto/tryit.a … r_label_js. Для удобства метка должна пропадать по окончании загрузки страницы вместе с прогресс-баром. Если такое возможно - сделайте, пожалуйста Спасибо
Отсутствует
в кнопке Save+- fileContent явно не задан
Не готов согласиться. fileContent задан явно в переменной url,
только в виде адреса, представленного интерфейсом nsIURI.
Так что здесь всё аналогично.
var fp = window.makeFilePicker(); fp.init(window, "Сохранить как…", fp.modeSave); fp.appendFilter("", "*.png"); fp.defaultString = getTabLabel() + " " + (new Date().toLocaleFormat("%d.%m.%Y. %H:%M:%S")) + ".png"; /* if (fp.show() == fp.returnCancel || !fp.file) return; var wbp = window.makeWebBrowserPersist(); parseInt(Services.appinfo.version) < 36 ? wbp.saveURI(url, null, null, null, null, fp.file, null) : wbp.saveURI(url, null, null, null, null, null, fp.file, null); // если FF36+ */ fp.open(res => { if (res == fp.returnCancel || !fp.file) return; var save = window.makeWebBrowserPersist().saveURI; save.length < 8 ? save(url, null, null, null, null, fp.file, null) : save(url, null, null, null, null, null, fp.file, null); });
Отсутствует
Dumby спасибо. Да в 58 не только toLocaleFormat заменят, но и многое другое - Firefox Site Compatibility. Опять придется все править.
Отредактировано Andrey_Krropotkin (26-12-2017 12:11:06)
Отсутствует
Благодаря Dumby подgравил кнопку для FF57 - Создает пункт в контекстном меню закладок "Экспорт в HTML файл" (сохраняет выборочно папки или любой пункт из контекстного меню закладок в HTML)
//-------------------- Экспорт в HTML файл в контекстном меню закладок //Источник - https://github.com/ardiman/userChrome.js/blob/master/exporthtmlfolder/ExportHTMLFolder.uc.xul (function () { function ImageConverter(imageURL) { this.imageURL = imageURL; this.channel = Services.io.newChannel(imageURL, null, null); this.channel.asyncOpen(this, null); } ImageConverter.prototype = { imageURL : "", channel : null, bytes : [], stream : null, Database64 : null, iscompleted : false, QueryInterface : function (iid) { if (!iid.equals(Components.interfaces.nsISupports) && !iid.equals(Components.interfaces.nsIRequestObserver) && !iid.equals(Components.interfaces.nsIStreamListener)) { throw Components.results.NS_ERROR_NO_INTERFACE; } return this; }, onStartRequest : function (aRequest, aContext) { this.stream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream); this.iscompleted = false; }, onStopRequest : function (aRequest, aContext, aStatusCode) { this.Database64 = 'data:' + this.channel.contentType + ';base64,' + btoa(String.fromCharCode.apply(null, this.bytes)); this.iscompleted = true; }, onDataAvailable : function (aRequest, aContext, aInputStream, aOffset, aCount) { this.stream.setInputStream(aInputStream); var chunk = this.stream.readByteArray(aCount); this.bytes = this.bytes.concat(chunk); } }; var ExportHTMLFolder = { escapeHTML: function(str) { return str.replace(/[&"<>]/g, function (m) ({ "&": "&", '"': """, "<": "<", ">": ">" })[m]); }, onMenuItemCommand: function(event) { var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Ci.nsINavBookmarksService); var historyService = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService); var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); var MPMenu = PlacesUtils.getString("BookmarksMenuFolderTitle"); var NodeID = document.popupNode._placesNode || document.popupNode.parentNode.selectedNode; fp.init(window, PlacesUIUtils.getString("EnterExport"),Ci.nsIFilePicker.modeSave); fp.appendFilters(Ci.nsIFilePicker.filterHTML); fp.defaultString = NodeID.title+".html"; fp.open(res => { if (res == fp.returnCancel || !fp.file) return; var file = fp.file; var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"] .createInstance(Components.interfaces.nsIFileOutputStream); var charset = "UTF-8"; foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); var os = Components.classes["@mozilla.org/intl/converter-output-stream;1"] .createInstance(Components.interfaces.nsIConverterOutputStream); os.init(foStream, charset, 0, 0x0000); var nbTab = 5; var data = '<!DOCTYPE NETSCAPE-Bookmark-file-1>\n'; data = data + '<!-- This is an automatically generated file.\n'; data = data + '\tIt will be read and overwritten.\n'; data = data + '\tDO NOT EDIT! -->\n'; data = data + '<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">\n'; data = data + '<TITLE>Bookmarks</TITLE>\n'; data = data + '<H1>'+ExportHTMLFolder.escapeHTML(MPMenu)+'</H1>\n'; data = data + '\n'; data = data + '<DL><p>\n'; os.writeString(data); var options = historyService.getNewQueryOptions(); var query = historyService.getNewQuery(); if( NodeID.type != 0 ) { query.setFolders([NodeID.itemId], 1); var result = historyService.executeQuery(query, options); node = result.root; } else { query.setFolders([NodeID.parent.itemId], 1); var result = historyService.executeQuery(query, options); var rootNode = result.root; rootNode.containerOpen = true; inc = 0; var node = rootNode.getChild(inc); while(( inc < rootNode.childCount )&&( node.itemId != NodeID.itemId )) { inc++; var node = rootNode.getChild(inc); } rootNode.containerOpen = false; } this.ecrireUnMP( os, node, nbTab ); data = '</DL></p>\n'; os.writeString(data); os.close(); }); }, ecrireUnMP: function( flux, elem, nbTab ) { var resultTypes = Ci.nsINavHistoryResultNode; if( elem.type == resultTypes.RESULT_TYPE_SEPARATOR ) { var chaine = new Array(nbTab).join(' ') + "<HR>\n"; flux.writeString(chaine); } else if( elem.type == resultTypes.RESULT_TYPE_URI ) { var Description= PlacesUIUtils.getItemDescription(elem.itemId); var chaine = new Array(nbTab).join(' ') + '<DT><A HREF="' + this.escapeHTML(elem.uri); if ( elem.icon.indexOf('moz-anno:favicon:http') >= 0 ) { if ( elem.icon.indexOf('http://www.mozilla.org/2005/made-up-favicon/') < 0 ){ chaine = chaine + '" ICON_URI="' + elem.icon.slice(elem.icon.indexOf('moz-anno:favicon:http') + 'moz-anno:favicon:'.length); } var Image = new ImageConverter( elem.icon.slice(elem.icon.indexOf('moz-anno:favicon:http')) ); var thread = Cc['@mozilla.org/thread-manager;1'].getService().mainThread; while ( !Image.iscompleted ) { thread.processNextEvent(true); } chaine = chaine + '" ICON="' + Image.Database64; } else if ( elem.icon.indexOf('moz-anno:favicon:data:image') >= 0 ) { chaine = chaine + '" ICON="' +elem.icon.slice(elem.icon.indexOf('data:image')); } var chaine = chaine + '">' + this.escapeHTML(elem.title) + '</A>\n' + new Array(nbTab).join(' ') + '<DD>' + this.escapeHTML(Description) + '\n'; flux.writeString(chaine); } else if(( elem.type == resultTypes.RESULT_TYPE_FOLDER )||( elem.type == resultTypes.RESULT_TYPE_FOLDER_SHORTCUT )) { var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Ci.nsINavBookmarksService); var historyService = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService); var Description= PlacesUIUtils.getItemDescription(elem.itemId); this.escapeHTML(elem.title) + '</H3>\n'; var chaine = new Array(nbTab).join(' ') + '<DT><H3>' + this.escapeHTML(elem.title) + '</H3>\n'; var chaine = chaine + new Array(nbTab).join(' ') + '<DD>' + this.escapeHTML(Description) + '\n'; chaine = chaine + new Array(nbTab).join(' ') + '<DL><p>\n'; flux.writeString(chaine); nbTab = nbTab + 4; var options = historyService.getNewQueryOptions(); var query = historyService.getNewQuery(); query.setFolders([elem.itemId], 1); var result = historyService.executeQuery(query, options); var rootNode = result.root; rootNode.containerOpen = true; for (var inc = 0; inc < rootNode.childCount; inc ++) { var node = rootNode.getChild(inc); this.ecrireUnMP( flux, node, nbTab ); } rootNode.containerOpen = false; nbTab = nbTab - 4; chaine = new Array(nbTab).join(' ') + '</DL></p>\n'; flux.writeString(chaine); } }, init: function() { var contextMenu = document.getElementById("placesContext"); if (contextMenu) contextMenu.addEventListener("popupshowing", this.ExportHTMLFolderShowHideItem, false); }, ExportHTMLFolderShowHideItem: function(event) { var show = document.getElementById("placesContext_ExportHTMLFolder"); show.hidden = (document.popupNode.localName == "menuseparator")||( document.popupNode.className == "openintabs-menuitem"); document.getElementById("placesContext_ExportHTMLFolderSep").hidden = show.hidden; }, }; window.addEventListener("load", function load(event) { window.removeEventListener("load", load, false); //remove listener, no longer needed ExportHTMLFolder.init(); }, false); if ( document.getElementById("placesContext_ExportHTMLFolder") ) return; var contextMenu = document.getElementById("placesContext"); var copyBothMenuItem = document.createElement("menuitem"); copyBothMenuItem.id = "placesContext_ExportHTMLFolder"; copyBothMenuItem.setAttribute("label", "Экспорт в HTML"); copyBothMenuItem.setAttribute("selection", "any"); copyBothMenuItem.setAttribute("closemenu", "single"); copyBothMenuItem.addEventListener("command", function () { ExportHTMLFolder.onMenuItemCommand(event); }); contextMenu.insertBefore(copyBothMenuItem, document.getElementById("placesContext_newSeparator") ); var SMenuItem = document.createElement("menuseparator"); SMenuItem.id = "placesContext_ExportHTMLFolderSep"; contextMenu.insertBefore(SMenuItem, document.getElementById("placesContext_ExportHTMLFolder") ); })();
Отредактировано Andrey_Krropotkin (26-12-2017 21:52:43)
Отсутствует
На стадии переделки, (все нет времени довести до ума), но вполне работает для FF57 кнопка - дополняет контекстное меню кнопок дополнительными пунктами:
Показать Id кнопки,
Копировать изображение кнопки в формате base64,
Копировать код кнопки как текст,
Копировать код кнопки как HTML ссылку,
Копировать код кнопки как BBcode сылку,
Сохранить изображение кнопки,
Сохранить код кнопки в HTML файл,
Сохранить все кнопки в HTML файл,
Сохранить код кнопки в XML файл,
Добавить кнопку из XML файла,
Переместить кнопку.
+ Дополняет иконками пукнты меню
/*Дополнительные пункты в контекстном меню кнопки*/ const topicURL = "http://forum.mozilla-russia.org/viewforum.php?id=34" const cbNamespace = "http://xsms.nm.ru/custombuttons/"; const nsIFilePicker = Ci.nsIFilePicker; const nsIFile = Ci.nsIFile; function $(aId) { return document.getElementById(aId); }; ///////////////////////////////////////////////////////////////////////////// /////////////////////////////// Context menus /////////////////////////////// ///////////////////////////////////////////////////////////////////////////// function addMenuItem(aNewIDs, aNodeIDs, aLabel, aIcon, aCommand) { for (var i = 0; i < aNewIDs.length; i++) { // Remove previously created menuitems if any if ($(aNewIDs[i])) $(aNewIDs[i]).parentNode.removeChild($(aNewIDs[i])); let mi = e4xConv_parseXULFromString( '<menuitem xmlns="' + e4xConv_encodeHTML(xulns, true) + '"\n\ id="' + e4xConv_encodeHTML(aNewIDs[i], true) + '" class="menuitem-iconic"\n\ image="' + e4xConv_encodeHTML(aIcon, true) + '" label="' + e4xConv_encodeHTML(aLabel, true) + '"\n\ oncommand="' + e4xConv_encodeHTML(aCommand, true) + '"/>'); if (i == 0) mi.setAttribute("observes", "custombuttons-contextbroadcaster-primary"); if ($(aNodeIDs[i])) { if ($(aNodeIDs[i]).nextSibling) { $(aNodeIDs[i]).parentNode.insertBefore(mi, $(aNodeIDs[i]).nextSibling); } else { $(aNodeIDs[i]).parentNode.appendChild(mi); } } } }; var saveImg1 = "data:application/file;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///8A////AESqAABHpgAASKAAAEukAQxMpQMYR6MAAEepAQ9MpgOLRKgACUenAABHpgAARKoAAP///wD///8A////AP///wBEqgAARaIAAFS2FVBj0jS3Y9AzyVG0EUROrwt8TKcDs0ikAANInwAAR6YAAESqAAD///8A////AP///wD///8ARKQAAVvJKJtj0jX/SaAJ/0abCv9UtSH/U7QX8lW5IMddwyfQW8Iii0mqBQ1DqQAA////AP///wD///8A////AEWlAAFYwB6YXsYc5F7GFt9bwA+vVbgWvU6rAKBRrgf0RZgA/02oDP9ezCzJR6UBA////wD///8A////AP///wBFrAAASKIAADiGNQAeYIIpF1iJHVa4GKEve0tFLHl1Pla7J51exRnUWL8VjEetAAP///8A////AP///wD///8AC0WuAAk/tAAANdpIAFD6/wA+7f8gd6jqBlPX+QBE9PIGS8uDLnZLADqNJwAzjDMA////AP///wD///8A////AAAw0QAALc0AAEPdegBI4f8AK8P/ADHX/wAwzf8AL8b/AEno/gAz2zYALtEQAC3VAP///wD///8A////AP///wAAMssAADjSMwBA2pIATen/ADG9/wBe1v8ATcz/ADHK/wBN5/4ASeH/AEvl6wA10DP///8A////AP///wD///8AADnTSQBO5/8ANc7/ADnR/xC+9/8C0f//AMj//wCP8P8ALcX/ACrC/wBE3f8ASeOf////AP///wD///8A////AABI4Z4ARN3/ACvG/wJAxP8Z5v//AMT//wDE//8Axv7/AETM/wA51P8AUervADjSPP///wD///8A////AP///wAAOdRiAFry+QBS6/QATOP/H+P8/xDe//8J1///E9H4/wFE2f8AReC6ADTOEwAyywD///8A////AP///wD///8AADDNAAAyzCcARN7WACvG/wVfzf8d0vf/HM30/whf0/8AI7n/ADzV+AA40kUAMswA////AP///wD///8A////AAAwywAAPNdTAEfg/wAsw/8AOdb/ADLP/wAswv8AReP/AC7H/wA40f8AR+GfADDKAP///wD///8A////AP///wAAMswAADfRQgBY8f8AT+j/AE7o7AA+1/8AK8T/AE7o/wBN5f8AVe7/AD/ZbAAwywD///8A////AP///wD///8AADPMAAAyywAANM4vADjSUQA0zikAU+z3AEff/wBJ4sMAN9EtADjROQAyywAAM8wA////AP///wD///8A////AAAzzAAAM8wAADHLAAAwywAAMcsAAD/YXQBK4pYAN9AxAC/KAAAwygAAM8wAADPMAP///wD///8A+R8AAPAfAADABwAAwAMAAPgDAADwHwAA8AcAAOADAADAAwAAwAMAAMAHAADgBwAA4AcAAOAHAADwDwAA/j8AAA=="; var saveImg2 = "data:application/file;base64,AAABAAEAEBACAAEAAQCwAAAAFgAAACgAAAAQAAAAIAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAADbAAADpcAAA//AAANVwAAD/8AAAKsAAAD/AAAP//AAAP8AAAD/AAAD/8AAAwDAAAP/wAAA/wAAAP8AAA"; var saveImg3 = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAAAAAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAAAAAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQf//rEH4j6xB8IesQeHDrEHD4axBh/CsQYf4rEGH8KxBw+GsQeHDrEHwh6xB+I+sQf//rEH//6xB//+sQQ=="; var saveImg4 = "data:application/file;base64,AAABAAEAEBACAAEAAQCwAAAAFgAAACgAAAAQAAAAIAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAD/8AAA//AAAP/wAAD/8AAA//AAAP/wAAD/8AAA//AAAP/wAAD/8AAA//AAAP/wAAA/wAAAP8AAA"; var saveImg = "data:application/file;base64,AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8BAAAAFwAAAGkAAABzAAAAdQAAAHUAAAB1AAAAdQAAAHUAAAB1AAAAdQAAAHUAAAB1AAAAdQAAADkAAAAP////AQAAAIdgZmj/YWlt/2FobP9haGz/YGhr/2Boa/9fZ2v/X2dr/15mav9dZWn/XGRo/0ZNUP8AAACdAAAAFf///wEAAACr2tzc/9ve4P/a3t//1dnZ/7S2tf+foJz/m5ya/6apqP/O0tP/09fZ/9DV1v+hqq//AAAAuQAAABX///8BAAAAq+3u7//e4eL/ub29/2hnXv9oVUX/U0As/zgxGf83Lx3/YWBX/7a5uv/S1tj/o6yx/wAAALkAAAAV////AQAAAKv29/f/19na/1dUQf9jXDv/dmtJ/4FoSP9VQiL/V0Ek/008Iv9HQTP/yc3P/6Wus/8AAAC5AAAAFf///wEAAACr+Pj4/5uamP9tY0L/g31b/6GLa/+McVH/eFY5/4xwUv9yXkD/RTki/4uMiv+nsLT/AAAAuQAAABX///8BAAAAq/n6+v+FfXL/waSM/8qznf/DrZP/ooFi/7WfhP+qh2//blk9/1A+Iv9aWlH/pK2x/wAAALkAAAAV////AQAAAKv6+/v/d3Rr/9zCsP/RxbH/z8Wu/9fJt//Qvab/qItv/5iOb/9tYUH/VVJK/6Wtsf8AAAC5AAAAFf///wEAAACr+/z8/4mHff+3pI//3NK//+HXxf/m3Mz/5trJ/9rMuf+bgWT/d14//2hnYP+osbX/AAAAuQAAABX///8BAAAAq/z9/f/FxL7/j4l+//Xw5f/29ez/8/Dl/+DMuv/VuaP/poZn/2dFKv+srav/oamt/wAAALkAAAAV////AQAAAKv+/v7/+/z8/5iZjf+5uqr/6+PW/+3i1P/kzL3/vZR+/4NhSf+Qh3z/z9HS/4qQkv8AAAC1AAAAFf///wEAAACr/v7+//7+/v/u7u3/tbiv/5WSgP+DfGj/e25Z/29gTv+sppz/vr6+/5aYmP90eHr/AAAApwAAABP///8BAAAAq/////////////////7+/v/9/f3//f39//v8/P/5+fn/1dXV/2pqav9TU1P/QUFB/wEBAYkAAAAJ////AQAAAKv7+/v//////////////////v7+//7+/v/+/v7/+vr6/9fY2P/V1tb/7Ozs/4KCgv8EBAQrAAAAA////wEAAACFlJSU/6ioqP+qqqr/qqqq/6qqqv+qqqr/qKio/6anp/2kpaX9o6Oj/4qKitUZGRk9////Af///wH///8BAAAAFQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABTBAQEUx8fH1dfX18z////Af///wH///8BAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w=="; var saveImg6 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABKklEQVR42mNkQAMNDAxCQMoTiB2BWAEq/ACI9wPxdqD8O2T1jGiao4HUEgb8IAaobimGAUDBGiDVzEAcqAWqb4EbQKTNWF3CCPXzW5ho/f//YDqHkZFhCpQNA7lAMV4gzY4QEmZEtx1mgCtQ8W4o2xLIPg5lJwDZUghDYkAGzAEyktENMAQqPA9l6wDZEkB6D6Yhc0EG7AGynfEZYAxkawHpxVC+A5CvC6RFGBj2Em2AIZCeg8Q3BtLSUAMIegGkwQBIz8U0YC7OQEQ2wAjIPoekGRQTUC/E4IxGkMKzaNEI8jso4chDbGdgA0UjekJ6A8S3gRikFWQyKOF/higGR50UFLPBEhLM9AZoUv4F1cAA1QTi/2SAJFkQnxdCoyZlJEPIz0xIhpCUnQFx83abgfUZOQAAAABJRU5ErkJggg=="; var saveImg7 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAASUlEQVR42mNkoBAw0s6ABob/aHxGkg1I8zEGM2dtOTskDED3MxCgGIBpASOGATANhACyi6hrAGVeoDgQB6UB2PxMvAFEAooNAAC7izYR2pQ0nAAAAABJRU5ErkJggg=="; var loadImg = "data:image/x-icon;base64,AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////AQAAAB+yg2l71ZRt+daTa//Wk2v/1pNr/9aTa//Wk2v/v4NlywYEAycAAAAX////Af///wH///8B////Af///wHdo4M53Zx3/+Sgef/innb/4p52/+Kedv/lo3r/5aR6/+mqgfvPj27N////Af///wH///8B////Af///wH///8B4KSD8+mmff/opH3/56N6/+Whef/no3r/66qB/8KBXf/Fg1//0Y5s78+Pbqn///8B////Af///wH///8B////AeGlg//trIX/7ayE/+6thP/urIX/9bWL/8eFYf/GhF//yYZh/9SPa/nkn3j/////Af///wH///8B////Af///wHkn3j/76+G/+6uh//vrob/76+G//W3jP/GhF//y4di/9ONZ//XkWr/5J94/////wH///8B////Af///wH///8B5J94/++wif/wsIj/8LGJ//CxiP/0toz/y4di/8+KZf/vroP/766D/+SfeP////8B////Af///wH///8B////AeSfeP/xs4v/8bOL//Cziv/ws4v/87WL/9CNa+3QjWvt3p96/96fev/en3r/////Af///wH///8B////Af///wHkn3j/8rWN//K2jf/ytY3/8rWN//O2jvfdo4Lj0I5sJdCObCXQjmwl0I5sJf///wH///8B////Af///wH///8B5J94//O3j//zuI//87iP//O4j//zuZDx3aOD7////wH///8B////Af///wHdo4M/5J94/+SfeP/kn3j/5J94/++2j//zupH/9LqR//O6kv/0upL/87qR/+SfeP/kn3j/5J94/+SfeP////8B////Af///wHkoXr/9cCY//W8k//0vJT/9L2T//S8lP/0vZT/9LyU//S8lP/1vJT/9cCY/+Shev////8B////Af///wH///8B9b+WC+SjfP/2yqP/9b+W//a/lf/2v5X/9b6V//W+lv/1vpX/9sqj/+SjfP////8B////Af///wH///8B////Af///wH2wZgX5aZ+//fTrP/2wJj/9sCY//bAmP/2wZj/99Os/+Smf/////8B////Af///wH///8B////Af///wH///8B////Af///wHkqYH/99ax//fCmv/3wpn/99aw/+Sogf////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AeWrhP/317L/99ey/+WrhP////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B5a2F/+Wthf////8B////Af///wH///8B////Af///wH///8BAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w=="; var saveImg5 = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU1FQr1FRT7BRUU+wUVFPsFFRT7BRUU+wUVFPsFFRT7BRUU+wUVFPsFFRT7BRUU+wU1FQrwAAAAAAAAAAAAAAAHd0cpz//////////////////////////////////////////////////////////3d0cpwAAAAAAAAAAAAAAAB4d3Sc/////+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg//////94d3ScAAAAAAAAAAAAAAAAenh3nP/////i4uL/4uLi/5yiz/9HYcT/PWrR/1qQ3P+nuNr/4uLi/+Li4v//////enh3nAAAAAAAAAAAAAAAAH18eJz/////5OTk/2FluP8IJ6r/D1TU/wli4v8FZeb/D3He/4y+5f/k5OT/+/v7/318eJwAAAAAAAAAAAAAAACBfXyc/////5Wc0v8JKq//E2Pd/yFTrv9EKTn/LjVZ/xaF2/8OdNP/zNnm//z8/P+BfXycAAAAAAAAAAAAAAAAhIGBnP////89Xc7/Dk7N/wpQ0/8zVp//TGCK/4U2Cf9DW2b/Eqj7/5C+5//8/Pz/hIGBnAAAAAAAAAAAAAAAAIaEgZz/////Kmnf/wlFzf8gPZ7/uXcl/8OAK/+UTBL/b1Az/zfG9f9srdX/+fn5/4aEgZwAAAAAAAAAAAAAAACJhoac/////0iN6P8HQtH/EVzd/2mCqf/dqkz/0pY6/6FnKv9Nvt7/kMfs//X19f+JhoacAAAAAAAAAAAAAAAAiomJnP////+Mr+r/FFnU/xVRyv+LorL/8Oqh//nXbP+5omH/Urvf/8bj7v/s7Oz/iomJnAAAAAAAAAAAAAAAAI6Kipz/////2+n3/5aSm/+hcEn/4uXC////2P/25KD/rqSD/7HR5//o6Oj/4eHh/46KipwAAAAAAAAAAAAAAACPjo6c//////j4+P/4+Pj/3s/F/9i/n//p27n/5NG0/+7r6f/r6+v/3t7e/9LS0v+Pjo6cAAAAAAAAAAAAAAAAk4+PnP/////6+vr/+vr6//r6+v/6+vr/+vr6//j4+P/19fX/r66t/62sq/ObmprrkI2NpgAAAAAAAAAAAAAAAJOTk5z//////Pz8//z8/P/8/Pz/+/v7//r6+v/4+Pj/9fX1/66trfHs7Ozrp6emp4aGhhMAAAAAAAAAAAAAAACWlpOc/////////////////v7+//39/f/6+vr/9/f3//Pz8/+bmprrp6enp3NzcxYAAAAAAAAAAAAAAAAAAAAAmJiWnJiYlpyYmJacmJiWnJeTk52SkZGemJiWnJeTk52SkZGej4+LpIaGhhMAAAAAAAAAAAAAAAAAAAAAgAMAAIADAACAAwAAgAMAAIADAACAAwAAgAMAAIADAACAAwAAgAMAAIADAACAAwAAgAMAAIADAACABwAAgA8AAA=="; var moveToMenu = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABKElEQVR42o3TMUvDQBQH8P+7tLlEwaW4ugl+iU6CCA4i0tbdqavgZ/ErCE79DsVBkYpKLR2kuApOatG297zLJWkqXnIPwrsk937cveQIJXHZBZt8cgFyzaEqYGuTvl7feM2FVAIHR8Bj341UAu1T4PPdjXgBJgzyPKDFy4SDIkJZo1yRASZ+FDB5Itzfct7YBGjuBBBh6oT6ed2OazGjsV3wQ2Cu64bXUKM7FgZJgPaufinTSVFhrDPFheVIe01nwLgfq9HNVCRAaw8Q6USWS4B05mgVIH2/qG+ABh+46im7heP9EELOLRDZpVqAQev8ZwUS/DBLivMtlDWxc7Ycs6yBhyov9vqMGcBBDB5/rxT7/Qfntjn/FXsDrmIvoHUonMVegMllx/kXlvSRMQ0GPE4AAAAASUVORK5CYII="; var removeFromToolbar = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACMElEQVR42p3Sz2/SUBwA8G9pgQJd6QYZQQkOjUFdXMCLMn9B4l3myRgXhydPZgcTY2KyLfGiF/wT9GTmhfIXjMQ4NP5YD5qZTGdVdEx+9FVKSwttrTV4QD3AN3mH9837fr7v+/Kww1e4ic2HiSYMRGxufcHjxs87nQ5GN0zodnXQNLVomvCAL6ZR/xxmAS9VsX1umz1pJ/dfKGeD4+58OERNYQQO7Y4BWs8E3XCAqvRAEkWkdpTcNptm+4DpMVUOtboZl4tY2reXWmTGvbDTVKFnALicTrvYsFqbpgEOBw6tpgiigOb4Yoa1gTMzY1B+XUexKM1gLid8a3QgQHtBklQQBJm3RuAxDBiPl0z4aMq+eu1rFYmiFLOBowd8QJEEiLIBlbpV7PdArdZCApJX3j9O3e/Pe/Di0zTpJgvB8CSjSG1o7O7mbCA04QIHjoGsGuAfI6FRk0D8ISe3VlPc4OPGL61nab+/QDE0VD9/+T1CKOCCtqoDQRBAe0n4yH/nZUVLVtjTCP4R8cvPN8LRSKL6qVKygUjIC0rXAAMw6+EI6GkmoGaDM0DP8KuzfyHx+WfLe6KRpdpOlbMB+E9oWof78OhEcjB/5OqLbHAyUEB1oYTBCDFz7VWaYZg11BTYkYBj17lFyu3Lo5aYGwk4fuNNHgd8QVHk2EjA7K3NDVM3iuV708tDA2dXtqb0rr5mrWT57jQaGjh1+13eKio+uXOo9Gs/NJC6+TZhdf7zQ38Ceg0HgF1MCP0AAAAASUVORK5CYII="; var iconADD = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACDUlEQVR42nWT30sUURTHz91Zd9FkVBRrX0oScTMI8weSIYSU/QMFbb5oGAn+AQo9B/UH9BAF+lIr+OLrSETQQ4GhEVRrUFkP/SLRNcvUnXv8nrmz7XVcB86cy7nn+5kz556ryHrueKxIYcFkPMmbxXHgzA6NDyguatQewBzHkKMMQDnWPgDsIwYh8/hATP8HQCRJEFIc5iA1DpljZIGogJU/9WXp39DR1pj99QBwe45dZb6UhCXE2Hx6m4xtQZQ/8SDni+DdSNopVYtysUiFpVbDqp4vPL4uCWc6zt+H+wvbAOBrCBCRFgh0AtIA6BboBVADc6eeZLMCGOq/kkF8Hcs8AO8tgDwav5M0AI/bw87Xw9dml+bvSUamtfsGYmuIrQDwKgIoQirkF3pR9uCbz28vx+tTMWo6VRdsL79eLax80yePtc3MTlwYKwMIT8HTvYufFkc+bq4NOjWN9Kf6cIVsHNr4sePnf9LxytqH06Od1w6oICGA9uZGOnvEpb7tgkrefLl8UXZvdTV5CYe3vv9Wzy6dVnfL9KAKfkcALeihaSKT+yj3Imji1XRPBvFyTTSn4LHMi5Y5SCnrGFc3c5MCqKtMD5c5RnsOisfILlmD1NxA5yThwy96GhkkRtlxrP3oIO0d5ZKXfSSbUYaJ1/tGef9lovAyUeQyAaKCO4nLpPRBABWJlwCWt6vYBccZ9A793wmLAAAAAElFTkSuQmCC"; var customBtn = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjVJREFUeNqcUkuIUmEUPl4fML6bBsFRacRF2EaCcRO48bFLEIJcBIJLxb2b2UWLkIEgQQjauVFaKmgYuclUTMUHKoaKE4GPxnxh5r3ezh0QHJFmmA/OPZfDfx7fdw7AfojQ7qGx4QawdgMymeyRyWR6IZVKucFg8N10Ov0Ot4VGozmNRCLx5XL5F/HHbrefYZh7m1yWWq0+TafTn2kEdqXr9TrtcDje3JR4xRHH1QYCgXOz2Wzs9/sQj8dBIpEATtGrVqu9yWSywmdLNGq3AAeNsFgsz202mxk7QzKZBK1WCzqdjtHjKUmSx41Go4L+slQqpYvF4keKoibXpnA6nWfY+VehUKBSqRTJ0Oh2u3Qul6MHgwE9Ho9pLMD4H16v95zD4RxuU6BbrdYlPh5g8tfFYvET9XiIiRylUsnQgPl8DtgVhsOheL1eS6LRaGy1Wg02FAA5VmKxWB1/yUQioWOxWHKXy2XEYsDQEggEgKJCJpOBcrnMbOliW4MNSOaDCbVKpVISCoVGHBnQQygUgnK1AkeH9z+Ew+HX2xoQezZDjUaj3ygDiMViaLfbV8kK+TGw2WysJzzafry3QK1W+9Lr9RpIDbLZLEhE4vedTsdvMBieuN3ulwRBPLh2B7uYzWYXzWZzjBoc5PP5MJ70K1xfEsVc4cpNeDcnuLFvzM3978gILpcrRy/w+XybGE+v1z/z+/2frFarG9d5AHeBSqUyeDyetwqF4jHcFXw+/4TH44n+CTAA3Ccog288LRAAAAAASUVORK5CYII="; var saveAll = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACOElEQVR42mNkwAJ+7xf7//3tKwZeIUELRqf3JxnwAEZkzrtlwnv/MzE6/WfkWCwS/iTu7RLO/wzMPAwc/z4Lc0f/eIfTgP/7BM0PXDY5ofB9N8M/EB8k+BcoyQw1mEWd4SurLIO97lkUFzX9b/oPNmBznc7/////MbAzfIdoBoI/P77Abfnzn4XhH9A0kOLA7icQV88HKn0EdcH6Ss3/yM76/f0jg2vTXYZ/f39j9fdUgQkMdTp1DNFXoiEGrCzFNMCj6SrD/79/MDQzsbAzCEfyMTBwADkbGBjBBiwrRDXgF9AAz6ZLWF1QIlHCsFRnKdj2pYxLIQYsytPAMMC75SLYBVMkpzDkPM+By0lFSTEwCDAwvJ79eouoqKgv2IB5WWgGfPvI4N95kUEyQQwcJVXbq8CGeEp6MlzUuQi2fcKbCQgDZqWhG/CJIaDrLIPMf0kGBjeggAoDw5YNWxh8rHwYGMQZGB5PfszAysq6RUJCAmLAtCR1DAMCu08zzJSZxtDm0cbA8AQoyAxJGyDbWx+2MrCwsGyRkZGBGDApDpsBx8FhME95HkObfhtYM4MqA8OdnjtgNSAXyMvLQwzoi8JmwGF4NGoc12Bg6IHYXnuzFm6AsrIyxIAJ+UHXfj27oomIhc9AA/ajpAOdPToMV1yuwPnMzMxbNDU14QaEAqnGH28fqYGywt/fP5i8q5czYUtIMABygY6ODsSAJUuWOKMrUFHT2PPvzy90YZhX/79//36dt7d3KACPfPJHOU7GxAAAAABJRU5ErkJggg=="; let cIDs = ["custombuttons-contextpopup-exportXML", "custombuttons-contextpopup-exportXML-sub"]; let bIDs = ["custombuttons-contextpopup-bookmarkButton", "custombuttons-contextpopup-bookmarkButton-sub"]; addMenuItem(cIDs, bIDs, "Сохранить код кнопки в XML файл", saveImg, "document.getElementById('" + this.id + "').saveXML(('triggerNode' in this.parentNode) " + "? this.parentNode.triggerNode.URI " + ": document.popupNode.URI);", "X"); let xIDs = ["custombuttons-contextpopup-importnewbutton", "custombuttons-contextpopup-importnewbutton-sub"]; let aIDs = ["custombuttons-contextpopup-addnewbutton", "custombuttons-contextpopup-addnewbutton-sub"]; addMenuItem(xIDs, aIDs, "Добавить кнопку из XML файла\u2026", loadImg, "document.getElementById('" + this.id + "').checkDocumentForCBXML(content.document);"); let fIDs = ["custombuttons-contextpopup-copyImageURI", "custombuttons-contextpopup-copyImageURI-sub"]; let b2IDs = ["custombuttons-contextpopup-copyURI", "custombuttons-contextpopup-copyURI-sub"]; addMenuItem(fIDs, b2IDs, "Копировать изображение кнопки в формате base64", saveImg1, "document.getElementById('" + this.id + "').copyImageURI();"); let f1IDs = ["custombuttons-contextpopup-saveButtonImage", "custombuttons-contextpopup-saveButtonImage-sub"]; addMenuItem(f1IDs, cIDs, "Сохранить изображение кнопки", saveImg1, "document.getElementById('" + this.id + "').saveImageURI();"); let f2IDs = ["custombuttons-contextpopup-copyButtonsCodeText", "custombuttons-contextpopup-copyButtonsCodeText-sub"]; addMenuItem(f2IDs, b2IDs, "Копировать код кнопки как текст", saveImg2, "document.getElementById('" + this.id + "').copyButtonsCodeText();"); let f3IDs = ["custombuttons-contextpopup-copyAsHTML", "custombuttons-contextpopup-copyAsHTML-sub"]; addMenuItem(f3IDs, b2IDs, "Копировать код кнопки как HTML ссылку", saveImg3, "document.getElementById('" + this.id + "').copyToHTMLCode();"); let f4Ds = ["custombuttons-contextpopup-copyToBBCode", "custombuttons-contextpopup-copyToBBCode-sub"]; addMenuItem(f4Ds, b2IDs, "Копировать код кнопки как BBcode сылку", saveImg4, "document.getElementById('" + this.id + "').copyToBBCode();"); let f5Ds = ["custombuttons-contextpopup-saveAsHTML", "custombuttons-contextpopup-saveAsHTML-sub"]; addMenuItem(f5Ds, bIDs, "Сохранить код кнопки в HTML файл", saveImg5, "document.getElementById('" + this.id + "').saveToHTMLCode();"); let f8Ds = ["custombuttons-contextpopup-saveAsHTMLAll", "custombuttons-contextpopup-AsHTMLAll-sub"]; addMenuItem(f8Ds, f5Ds, "Сохранить все кнопки в HTML файл", saveAll, "document.getElementById('" + this.id + "').saveToHTMLALLCode();"); let f6Ds = ["custombuttons-contextpopup-getButtonId", "custombuttons-contextpopup-getButtonId-sub"]; let b1IDs = ["custombuttons-contextpopup-remove", "custombuttons-contextpopup-remove-sub"]; addMenuItem(f6Ds, b1IDs, "Показать Id кнопки", saveImg6, "document.getElementById('" + this.id + "').idMIonclick(content.document);"); let f7Ds = ["custombuttons-contextpopup-addNextButton", "custombuttons-contextpopup-addNextButton-sub"]; var addMI = document.getElementById('custombuttons-contextpopup-addnewbutton'); addMI.setAttribute('image', iconADD); var addMI1 = document.getElementById('custombuttons-contextpopup-addnewbutton-sub'); addMI1.setAttribute('image', iconADD); var addMI2 = document.getElementById('custombuttons-contextpopup-move-moveToPanel'); addMI2.setAttribute('image', moveToMenu); var addMI3 = document.getElementById('custombuttons-contextpopup-move-removeFromToolbar'); addMI3.setAttribute('image', removeFromToolbar); var addMI4 = document.getElementById('custombuttons-contextpopup-customize'); addMI4.setAttribute('image', customBtn); var saveToFile = function (fileContent, fileName) { var uc = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Components.interfaces.nsIScriptableUnicodeConverter); uc.charset = 'utf-8'; fileContent = uc.ConvertFromUnicode(fileContent); var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker); fp.init(window, '', fp.modeSave); fp.defaultString = fileName; fp.appendFilters(fp.filterHTML); fp.appendFilters(fp.filterAll); fp.open(function (rv) { if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { var stream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); stream.init(fp.file, 0x02|0x20|0x08, 0666, 0); stream.write(fileContent, fileContent.length); stream.close(); } }); }; function readFile(aFile) { var data = ""; var fstream = Cc["@mozilla.org/network/file-input-stream;1"]. createInstance(Ci.nsIFileInputStream); fstream.init(aFile, -1, 0, 0); var charset = "UTF-8"; const replacementChar = Ci.nsIConverterInputStream .DEFAULT_REPLACEMENT_CHARACTER; var is = Cc["@mozilla.org/intl/converter-input-stream;1"]. createInstance(Ci.nsIConverterInputStream); is.init(fstream, charset, 1024, replacementChar); var str = {}; while (is.readString(4096, str) != 0) { data += str.value; } is.close(); return data; }; function stringToDOM(aString) { var parser = new DOMParser(); var dom = parser.parseFromString(aString, "text/xml"); if (dom.documentElement.nodeName == "parsererror") { return null; } else { return dom; } }; function importXMLtoButton(aStrXMLData) { loadURI("custombutton://" + escape(aStrXMLData)); }; function getCBOverlay() { var dirsvc = Cc["@mozilla.org/file/directory_service;1"]. getService(Ci.nsIProperties); var file = dirsvc.get("ProfD", Ci.nsIFile); file.append("custombuttons"); file.append("buttonsoverlay.xul"); return file; }; this.checkDocumentForCBXML = function checkDocumentForCBXML(aDocument) { if (((aDocument.contentType == "text/xml") || (aDocument.contentType == "application/xml"))&& (aDocument.documentElement.localName == "custombutton")) { var serializer = new XMLSerializer(); var xml = serializer.serializeToString(aDocument); importXMLtoButton(xml); } else { this.loadXML(); } }; this.loadXML = function loadXML() { var fp = window.makeFilePicker(); fp.init(window, "Установить кнопку из XML файла", nsIFilePicker.modeOpen); fp.appendFilters(fp.filterXML); fp.appendFilter("Все файлы", "*.*"); fp.displayDirectory = FileUtils.File( getPathToHtmlFileFolder() ); fp.open(re=> { if ( re == fp.returnOK ) gBrowser.selectedTab = gBrowser.addTab(fp.file.path); }) var xmlData = readFile(fp.file); var xmlDOM = stringToDOM(xmlData).documentElement; if (!xmlDOM) { custombuttons.alertBox("Импорт не удался", "Это не XML файл!"); return; } if ((xmlDOM.localName == "custombutton") && ((xmlDOM.getAttribute("xmlns:cb") == cbNamespace) || (xmlDOM.getAttribute("xmlns") == cbNamespace))) { importXMLtoButton(xmlData); } else { custombuttons.alertBox("Импорт не удался", "XML файл не содержит кнопок!"); } } this.copyImageURI = function copyImageURI() { var btn = document.popupNode; if (!btn) return; cbu.gClipboard.write(btn.image); var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "Изображение кнопки скопировано в буфер", false, "", null); } this.copyToHTMLCode = function copyToHTMLCode() { var btn = document.popupNode; if (!btn) return; var code = "<p><div id=\"install\" style=\"background: transparent -moz-linear-gradient(center top , rgb(224, 102, 255) 30%, rgb(125, 38, 205) 55%); text-shadow: 0pt -1px 0pt rgb(122, 55, 139); border: 1px outset rgb(85, 26, 139); border-radius: 1em; padding: 0; width: 240px; text-align: center;\"><a href=\"" + btn.URI + "\" style=\"display: block; padding: 1em; color: #ffffff; text-decoration: none;\" title=\"Click here to install " + btn.name + "\" rel=\"nofollow\"><img src=\"" + btn.image + "\" alt=\"" + btn.name + "\" style=\"vertical-align: middle; float: left;\"/>" + btn.name + "</a></div></p>"; cbu.gClipboard.write(code); var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "HTML кнопки скопирован в буфер", false, "", null); } this.copyToBBCode = function copyToBBCode() { var btn = document.popupNode; if (!btn) return; var code = "[url=" + btn.URI + "][B]" + btn.name + "[/B][/url]"; cbu.gClipboard.write(code); //.toXMLString()); var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "BBCode кнопки скопирован в буфер", false, "", null); } this.saveImageURI = function saveImageURI() { var btn = document.popupNode, br = gBrowser; if (!btn) return; if(btn.image != "") { var tab = br.mCurrentTab; br.selectedTab = br.addTab(btn.image); setTimeout( function() { window.content.document.title = btn.name; saveDocument(window.content.document); //br.removeCurrentTab(); //br.selectedTab = tab; }, 200); } else custombuttons.alertBox("Эта кнопка не имееет изображения!"); } this.copyButtonsCodeText = function copyButtonsCodeText() { var btn = document.popupNode; if (!btn) return; var code = ((btn.cbCommand == "") || (btn.Command == "/*CODE*/")) ? "" : ("\n/*CODE*/\n" + btn.cbCommand + "\n"); var init = ((btn.cbInitCode == "") || (btn.cbInitCode == "/*Initialization Code*/")) ? "" : ("\n/*Initialization Code*/\n" + btn.cbInitCode); cbu.gClipboard.write(code + init); //custombuttons.alertSlide(btn.name, "Код скопирван в буфер"); var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "Код скопирван в буфер", false, "", null); } this.createNextButton = function(aButton) { custombuttons.cloneButton(aButton, true); window.setTimeout(function(){ if(!aButton.nextSibling.hasAttribute('initialized')) { custombuttons.editButton(aButton.nextSibling); } }) } this.saveXML = function saveXML(aStrURI) { var cbURI = (aStrURI != undefined) ? aStrURI : readFromClipboard(); if (!cbURI || !/^custombutton\:\/\//.test(cbURI)) { custombuttons.uChelpButton(this); return; } var cbXML = cbURI.replace(/^custombutton\:\/\//, ""); var decodeXML = unescape(cbXML); var btnName = decodeXML.match(/\<name\/?.+/).toString(); var name = "untitled"; if (!/\<name\/\>/.test(btnName)) { name = btnName.replace(/\<\/?\w+\>/g, "").toString(); } var image = decodeXML.match(/\<image\/?.+/).toString(); var icon = ""; if (!/\<\image.*\[\].*\>$/.test(image)) { icon = image.match(/[^\[\]]+/g)[2].toString() .replace(/custombuttons\-stdicon\-\d/, "").toString(); } function htmlEntities(str) { return str.replace(/&/g, "&").replace(/</g, "<") .replace(/>/g, ">").replace(/"/g, """); } var xmlTemplate = "custombuttons/\"\n\ xmlns:html=\"http://www.w3.org/1999/xhtml\">\n\ <html:head>\n\ <html:title><![CDATA[" + name + "]]></html:title>\n\ <html:link rel=\"shortcut icon\" href=\"" + icon + "\"/>\n\ <html:style type=\"text/css\"><![CDATA[\n\ body { font-size: medium; margin: 0; }\n\ body, code:before, help:before, initcode:before {\n\ font-family: \"Verdana\", sans-serif;\n\ }\n\ #wrapper { position: fixed; top: 1em; right: 1em; text-align: center; }\n\ p { font-size: small; text-align: center; }\n\ #button {\n\ background-color: rgb(85, 168, 2);\n\ background-image: linear-gradient(to bottom, rgb(147, 200, 94),\ rgb(85, 168, 2));\n\ background-image: -moz-linear-gradient(top, rgb(147, 200, 94),\ rgb(85, 168, 2));\n\ background-image: -o-linear-gradient(top, rgb(147, 200, 94),\ rgb(85, 168, 2));\n\ background-image: -webkit-linear-gradient(top, rgb(147, 200, 94),\ rgb(85, 168, 2));\n\ border: 1px solid rgb(58, 116, 4);\n\ border-radius: .5em;\n\ -moz-border-radius: .5em;\n\ -webkit-border-radius: .5em;\n\ padding: 0;\n\ margin-bottom: 1em;\n\ box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ -moz-box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ -o-box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ -webkit-box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ }\n\ #button a {\n\ color: #000;\n\ text-shadow: -1pt -1px 0pt rgba(255, 255, 255, .5);\n\ padding: 1em;\n\ text-decoration: none;\n\ }\n\ :-moz-any-link:focus {\n\ color: white;\n\ outline-color: transparent;\n\ text-decoration: none;\n\ }\n\ #button a, code, code:before, initcode, initcode:before, help, help:before {\ \n display: block;\n\ }\n\ #credits { position: fixed; bottom: 1em; right: 1em; font-size: small; }\n\ custombutton { background-color: rgb(171, 171, 171); margin: 1em; }\n\ date, image, mode, accelkey { display: none; }\n\ name { font-weight: bold; font-size: x-large; }\n\ code:before, help:before, initcode:before {\n\ font-weight: bold;\n\ font-size: large;\n\ margin: 0 0 1em;\n\ padding: .5em;\n\ }\n\ code:before { content: \"Код\"; }\n\ help:before { content: \"Справка\"; }\n\ initcode:before { content: \"Инициализация\"; }\n\ code, initcode, help {\n\ background-color: rgb(255, 255, 255);\n\ border: 1px inset rgb(170, 170, 170);\n\ font: medium monospace;\n\ margin: 1em 1em 2em 0;\n\ padding: 1em;\n\ text-align: left;\n\ width: 840px;\n\ white-space: pre-wrap;\n\ word-wrap: break-word;\n\ }\n\ .clear { clear: both; }\n\ ]]></html:style>\n\ </html:head>\n\ <html:body>\n\ <html:div id=\"wrapper\">\n\ <html:div id=\"button\">\n\ <html:a href=\"" + cbURI + "\" rel=\"nofollow\" title=\"Установить " + htmlEntities(name, "ENT_COMPAT") +"\">\n\ <![CDATA[Установить кнопку]]>\n\ </html:a>\n\ </html:div>\n\ <html:div id=\"credits\">\n\ <html:a href=\"" + topicURL +"\">\n\ <![CDATA[Другие кнопки]]><html:br/>\ <![CDATA[на форуме Mozilla Россия]]>\n\ </html:a>\n\ </html:div>\n\ </html:div>\n\ </html:body>"; decodeXML = decodeXML.replace(/custombuttons\/\"\>/, xmlTemplate); name += ".xml"; saveToFile(decodeXML, name); var btn = document.popupNode; var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "сохранена в XML файл", false, "", null); } var mrw = mostRecentWindow('navigator:browser'); var css = '@-moz-document url("chrome://browser/content/browser.xul"){' + this.Help + '}'; var uri = makeURI('data:text/css,' + encodeURIComponent(css)); var sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService); if (!sss.sheetRegistered(uri, sss.USER_SHEET)) sss.loadAndRegisterSheet(uri, sss.USER_SHEET); this.idMIonclick = function idMIonclick() { var btn = document.popupNode.id; var box = custombuttons.confirmBox("Копировать в буфер", btn, "Да", "Нет"); if (box) { custombuttons.cbService.writeToClipboard(btn); custombuttons.alertSlide(btn, "Скопирована в буфер"); } } function mostRecentWindow(windowType) { return Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow(windowType); } this.saveToHTMLALLCode = function saveToHTMLALLCode() { var fp = window.makeFilePicker(); fp.init(window, "Укажите папку для экспорта CB кнопок!", fp.modeGetFolder); fp.open(re=> { if ( re != fp.returnOK ) return; cbu.setPrefs("CB.exportsButtonsToHtmlFile.path", convertFromUnicode("UTF-8", fp.file.path)); exportsButtonsToHtmlFile(); }) }; this.saveToHTMLCode = function saveToHTMLCode() { var btn = document.popupNode; var xml = '<html xmlns="' + e4xConv_encodeHTML(xhtmlns, true) + '">\n\ <head>\n\ <meta http-equiv=\'Content-Type\' content=\'text/html; charset=utf-8\'/>\n\ <title>' + e4xConv_encodeHTML(btn.name + ' for Custom Buttons') + '</title>\n\ <link rel=\'icon\' type=\'image/vnd.microsoft.icon\' href="' + e4xConv_encodeHTML(btn.image, true) + '"/>\n\ <style type="text/css">\n\ .button a{\n\ background-color: rgb(85, 168, 2);\n\ background-image: linear-gradient(to bottom, rgb(147, 200, 94), rgb(85, 168, 2));\n\ background-image: -moz-linear-gradient(top, rgb(147, 200, 94), rgb(85, 168, 2));\n\ border: 1px solid rgb(58, 116, 4);\n\ border-radius: .5em;\n\ -webkit-border-radius: .5em;\n\ padding: 0;\n\ margin-bottom: 1em;\n\ box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ -o-box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ -webkit-box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ color: #000;\n\ text-shadow: -1pt -1px 0pt rgba(255, 255, 255, .5);\n\ padding: 0.5em;\n\ text-decoration: none;\n\ }\n\ pre { border: 1px inset rgb(170, 170, 170); \n\ background-color: rgb(255, 255, 255);}\n\ body { background-color: rgb(245, 245, 220);} \n\ </style> \n\ </head>\n\ <body>\n\ <section id=\'install\'><h1>' + e4xConv_encodeHTML(btn.name) + '</h1>\n\ </section>\n\ <div class="button"><a href="' + e4xConv_encodeHTML(btn.URI, true) + '">Установить кнопку</a></div>\n\ <section id=\'init\'><h2>Инициализация</h2><pre>' + e4xConv_encodeHTML(btn.cbInitCode) + '</pre></section>\n\ <section id=\'code\'><h2>Код</h2><pre>' + e4xConv_encodeHTML(btn.cbCommand) + '</pre></section>\n\ <section id=\'help\'><h2>Справка</h2><pre>' + e4xConv_encodeHTML(btn.Help) + '</pre></section>\n\ </body>\n\ </html>'; var html = '<!DOCTYPE html>\n' + xml; var name = btn.name + ".HTML"; saveToFile(html, name); var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "сохранена в HTML файл", false, "", null); } function e4xConv_parseXULFromString(xul) { xul = xul.replace(/>\s+</g, "><"); return new DOMParser().parseFromString(xul, "application/xml").documentElement; } function e4xConv_encodeHTML(s, isAttr) { s = String(s) .replace(/&/g, "&") .replace(/</g, "<") .replace(/>/g, ">") .replace(/"/g, """); if(isAttr) { s = s .replace(/\t/g, "	") .replace(/\n/g, "
") .replace(/\r/g, "
"); } return s; }; function exportsButtonsToHtmlFile() { var visibleCBbuttons = [...document.querySelectorAll('[cb-mode]')]; var paletteCBbuttons = [...custombuttons.palette.querySelectorAll('[cb-mode]')]; var allCBbuttons = visibleCBbuttons.concat(paletteCBbuttons); var array = []; allCBbuttons.forEach(but=> { if ( !but.URI ) return; var name = but.getAttribute("label") || "Без названия"; if ( but.URI.endsWith("custombutton%3E") ) var uri = but.URI; var image = but.getAttribute("image") || "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAACNFBMVEXDRgDweQDnbwC0NgDCRQC7PQDtpTu+QQD78q3PUwDCRAD//8vbYQDLTgDocAD0iQX1jQbGSgD7iAD4gwDVaw7vdwDyegD+igDweQDlawDyhAXveADmZwDzmBbtcwDwkhHveADmhBTkgxbweADkfRH+igD7hADXZQX0gADyjA/tfgvveQDiawDQVADRXgfnbwD1jAb9iQD9z0PVZAbxpinykRHtdgD5mRbERQDDRgDOYArCRAD9iQD3ewDxegD3dwDFRgDAQAD+hgD4fQDucgDtgQftfwTISQDCRQDvdgD5lxb1kRb2qh7wnynkagD766LDRQDDRwDDRQDspjbtpzbuqDbvqzv//8DUZAbCRQD//83pjhvveQbvggW+QQDfcxLlmUb//8veYADMTwDHSADVVwC8PgDwixb78q3oZgDUWADRVADCRQD9iQDERwDBQQDYVQC+PgC0NgDbYQDWWgDUWADSVQDFSAC+QAC7PAC0NgD+wRL+/kD+/zb+7i3+8Cv+/DX+wBL/+DD/rwz+qgz+rwz/tAz+sQzfbAT+3iP/+jD//Dz1jwP+nwf5iwf7pBz2tRr4lwb/ogfsdQT+2R7/9ET+2iT8yyLmgBL5iQL2egLokhP7zzT60zv1zUr0gAL1ewP50yn9+UL++EXooyngaAH41EPzowzyySj+xxzlhhHvvyruwjXxvTnUag3+zxrwigP+swz86U/ZXwD75lHqegD6xzb//kn+uhPTXAG3OAD/+UC2vFeJAAAAe3RSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAACfnwAIaelpAAA2+wD7UQAAa3oArKzRzMysnwgAvPQA/gAAw3prw0oALr16vS4AACnF6bspAAAA/mIAADQAAAAAAI8AAEwA0vv7kd2yAuuvr+vKABL23U+8Sk/d9vUDIIAQAAAQgCAfvupHAAABB0lEQVR4Xi3IU3fDABgA0C+u26FdZ9u2bdu2vZSzbds2/tyac3IfLxjpGyA6MimqY6gHTNgiiNwkwRM1E7EhTrYyTfMzzsh0ZEPiH+D6+u5mV1jEhpe5haVCYW1T4suEvUOkk7PLpVJ5WFnl7hEUDN5LPvsHJ6cazdn13f3DYxu0B35+/Y2qVSr17NzGeUgohIVHLK/PMDa39qKieRATGxd/9cS4uU1MwnmQktqY/qGlaVr7/ZOVDTmQm5df8PwyNj4xOTVdjOM4kCRZOr+wWFa+srpWQVEU8PnV2zu7NbV19UfHDQRBAIfTdNHc0soVdnR2dfdgGAgEvW99/QNc4eDQ8O8Ihv0D77NPgbVLZ6kAAAAASUVORK5CYII="; array.push("<img src=" + image + "> <a href=" + uri + ">" + name +"</a><br>\n"); }); var before = "<html>\n<head>\n<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n</head>\n<body>\n"; var after = "\n</body>\n</html>"; var text = before + array.join("") + after; var text = convertFromUnicode("UTF-8", text); var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); file.initWithPath( getPathToHtmlFileFolder() ); file.append("CB buttons " + new Date().toLocaleFormat("%d.%m.%Y. %H·%M·%S") + ".html"); custombuttonsUtils.writeFile(file.path, text); var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService) alertsService.showAlertNotification(saveImg5, "Экспорт в HTML", "Экспортировал все CB кнопки как HTML в " + file.path); setTimeout(()=> alertsService.closeAlert(), 4000); }; function getPathToHtmlFileFolder() { try { return Services.prefs.getComplexValue("CB.exportsButtonsToHtmlFile.path", Ci.nsISupportsString).data } catch(e) { return "C:" }; }; function convertFromUnicode(charset, str) { var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); converter.charset = charset; str = converter.ConvertFromUnicode(str); return str + converter.Finish(); }; this.MoveToolbarButtons = MTB = { // Start editable preferences MoveButtonMICBContext: true, // Add "Move button" menu item to Custom Buttons context menu? MoveButtonMITBarContext: false, // Add "Move button" menu item to toolbars context menu? ShowMoveAlert: false, // Show the alert with instructions when moving buttons? MoveBtnImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYklEQVQ4" + "jWNgGJTgaAXHf2LEcGrGZQBBQ45WcPz/fZ0XpwG45FAUEDIAqzyyJLIiZIxNHqdmYvHRCo7/DLhsIEYziivQDcHn" + "BawxgqyQUCzgjQlC6YCotEB2QkJWTIzY4AAAezv/caeCLKcAAAAASUVORK5CYII=", // End editable preferences _UID: "__cb_move_toolbar_buttons_" + custombuttons.getNumber(self.id), WindowIDs: ["main-window", "messengerWindow", "msgcomposeWindow"], ToolbarContexIDs: ["toolbar-context-menu", "aios-toolbar-contextmenu", "aios-sbhtoolbar-contextmenu"], Pref: "extensions.custombuttons.MoveToolbarButtons.Id" + custombuttons.getNumber(self.id) + ".MoveButtonID", SP: Services.prefs, Init: function() { if (!(MTB._UID in window)) { window[MTB._UID] = { Initialized: false }; } if (!window[MTB._UID]["Initialized"]) { window[MTB._UID]["Initialized"] = true; custombuttons.isPref(MTB.Pref, ""); if ("CustomizableUI" in window) { var originalFunction = custombuttons.persistCurrentSets.toString(); eval("custombuttons.persistCurrentSets=" + originalFunction .replace(", newButtonId)", ", newButtonId, aToRight)") .replace("pos + 1", "aToRight ? pos : pos + 1")); } if (MTB.MoveButtonMICBContext) { var contextPops = document.getElementsByTagName("menupopup"); let p = 0, pLen = contextPops.length; for (; p < pLen; p++) { var cPopID = contextPops[p].id; if (cPopID.substr(0, 26) === "custombuttons-contextpopup") { var cPopEl = document.getElementById(cPopID); var moveMIID = "custombuttons-contextpopup-moveButton" + cPopID.slice(26); var moveMIEl = document.getElementById(moveMIID); if (!moveMIEl) MTB.CreateMoveMI(moveMIID, cPopEl); } } } if (MTB.MoveButtonMITBarContext) { Array.prototype.slice.call(MTB.ToolbarContexIDs).forEach(function(aTBCtxID, aIndex) { let Ctx = document.getElementById(aTBCtxID); let tBarCtxMIID = MTB._UID + "moveButton" + aIndex; if (!document.getElementById(tBarCtxMIID)) { if (Ctx) { MTB.CreateMoveMI(tBarCtxMIID, Ctx); Ctx.addEventListener("popupshowing", function(aE) { document.getElementById(tBarCtxMIID).hidden = (document.popupNode.tagName !== "toolbarbutton"); }, false); } } }); } addDestructor(function(aReason) { if (aReason === "delete") { SP.resetUserPrefs(MTB.Pref); delete window[_UID]; } if (aReason === "delete" || aReason === "update") { window[MTB._UID]["Initialized"] = false; } }); } }, getPopupNode: function(aEl) { if (custombuttons.popupNode) return custombuttons.popupNode; var popupNode = aEl; while (popupNode.tagName.toLowerCase() !== "toolbarbutton") { popupNode = popupNode.parentNode; } return popupNode; }, CreateMoveMI: function(aMItemID, aPopupEl) { let moveMIEl = aPopupEl.appendChild(document.createElementNS(xulns, "menuitem")); moveMIEl.setAttribute("id", aMItemID); moveMIEl.setAttribute("label", "Переместить кнопку..."); moveMIEl.setAttribute("image", MTB.MoveBtnImage); moveMIEl.setAttribute("tooltip", MTB._UID + "moveButtonMI_tooltip"); moveMIEl.setAttribute("onclick", "document.getElementById(\"" + self.id + "\").MoveToolbarButtons.MoveOnClick(event);"); }, MoveOnClick: function(aE) { var popupNode = MTB.getPopupNode(aE.target); if (!popupNode) return; aE.stopPropagation(); aE.preventDefault(); if (aE.button === 0 && !aE.shiftKey && !aE.ctrlKey && !aE.altKey) { MTB.SP.setCharPref(MTB.Pref, popupNode.id); window.addEventListener('click', MTB.MoveListener, true); window.addEventListener('mouseup', MTB.DefaultPrevention, true); window.addEventListener('mousedown', MTB.DefaultPrevention, true); window.addEventListener('contextmenu', MTB.DefaultPrevention, true); MTB.HidePopup(aE.target); MTB.ShowMoveAlert && Services.prompt.alert(null, self.name, "Now click ANY toolbarbutton element inside ANY toolbar.\n" + "Left click will position the button to the left of the target.\n" + "Right click will position the button to the right of the target.\n\n" + "To cancel the movement, just click ANY element inside the browser that IS NOT a toolbarbutton.\n"); } }, MoveListener: function(aE) { MTB.DefaultPrevention(aE); window.removeEventListener('click', MTB.MoveListener, true); window.removeEventListener('mouseup', MTB.DefaultPrevention, true); window.removeEventListener('mousedown', MTB.DefaultPrevention, true); window.removeEventListener('contextmenu', MTB.DefaultPrevention, true); var anchor = aE.target; if (anchor.tagName !== "toolbarbutton") return; var toolbar = anchor.parentNode; var BtnToMove = document.getElementById(MTB.SP.getCharPref(MTB.Pref)); if (aE.button === 0 && !aE.shiftKey && !aE.ctrlKey && !aE.altKey) toolbar.insertBefore(BtnToMove, anchor); else if (aE.button === 2 && !aE.shiftKey && !aE.ctrlKey && !aE.altKey) toolbar.insertBefore(BtnToMove, anchor.nextSibling); if ("CustomizableUI" in window) custombuttons.persistCurrentSets(toolbar.id, anchor.id, BtnToMove.id || BtnToMove.getAttribute("id"), !(aE.button === 2)); else { toolbar.setAttribute("currentset", toolbar.currentSet); document.persist(toolbar.id, "currentset"); } MTB.SP.setCharPref(MTB.Pref, ""); }, DefaultPrevention: function(aE) { aE.preventDefault(); aE.stopImmediatePropagation && aE.stopImmediatePropagation(); aE.stopPropagation(); }, Tooltips: function(aRem) { var popSetID = MTB._UID + "popupset"; var popSetEl = document.getElementById(popSetID); if (popSetEl) popSetEl.parentNode.removeChild(popSetEl); if (aRem) return; if (!popSetEl) { popSetEl = document.createElementNS(xulns, "popupset"); popSetEl.setAttribute("id", popSetID); } popSetEl.appendChild(MTB.parseXML("<tooltip xmlns=\"" + xulns + "\" xmlns:html=\"" + xhtmlns + "\" id=\"" + MTB._UID + "moveButtonMI_tooltip" + "\">" + "<description><html:b>Instructions</html:b> : After clicking this menu item, you can " + "click ANY toolbarbutton element inside the application to place the currently " + "selected button to the left (with Left click) or to the right (with Right click) " + "of the targeted toolbarbutton.</description>" + "<separator/>" + "<description><html:b>Note</html:b> : It can be ANY toolbarbutton, not just " + "other Custom Buttons.</description>" + "</tooltip>")); setTimeout(function() { Array.prototype.slice.call(MTB.WindowIDs).forEach(function(aWinID) { let win = document.getElementById(aWinID); if (win) !document.getElementById(popSetID) && win.appendChild(popSetEl); }); }, 100); }, parseXML: function(aXML) { // Return parsed XML aXML = aXML.replace(/>\s+</g, "><"); // Linearize XML return (new DOMParser).parseFromString(aXML, "application/xml").documentElement; }, HidePopup: function(aEl) { try { aEl.hidePopup(); } catch (aError) { try { aEl.parentNode.hidePopup(); } catch (aError) { try { aEl.parentNode.parentNode.hidePopup(); } catch (aError) { try { aEl.parentNode.parentNode.parentNode.hidePopup(); } catch (aError) {} } } } } }; this.MoveToolbarButtons.Init();
Отсутствует
difaborКнопка FindBar Tweak работает в FF57
Это дополнение. Не работает.
Автор еще год назад сообщил, что функционал FindBar Tweak
невозможно реализовать через web extensions.
Отсутствует
difabor
Кнопка FindBar Tweak работает в FF57
Так я не спорю на этот счёт. Просто я пока не собираюсь ставить ФФ57 и выше и поэтому не смогу с этим помочь.
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Привет. Не знаю, где спросить, поэтому тут пишу.
В предыдущих версиях ФФ у меня была такая фишка:
если кликнуть ПКМ по фавиконке в адресной строке,
значок мигал красным, а адрес копировался в буфер.
То ли в CTR была настройка, то ли кнопка какая...
Может, кто вспомнит, где взять или код подскажет?
Отсутствует
Ultima2m
я не помню с какой кнопки выдрал этот код, но он работает
// ... Дополнительные возможности для значка идентификации сайта в строке адреса ............... addEventListener("click", e=> { e.preventDefault(); e.stopPropagation(); // ЛКМ без запроса открывает информацию о странице в вкладке 'Разрешения' .... if ( e.button == 0 ) BrowserPageInfo(content.document, (gURLBar.value.startsWith("http") ? "permTab" : "generalTab")); // ПКМ копирует текущий адрес .... if ( e.button == 2 ) { gClipboard.write( content.location ); // значок идентификации сайта мигает синим .... document.getElementById("identity-box").style.background = "blue"; setTimeout(()=> document.getElementById("identity-box").style.background = "", 1000); } }, true, document.getElementById("identity-icon") );
ну я еще цвет себе на синий поменял
Отредактировано sonyas75 (29-12-2017 17:46:44)
Отсутствует
Привет. Не знаю, где спросить, поэтому тут пишу.
В предыдущих версиях ФФ у меня была такая фишка:
если кликнуть ПКМ по фавиконке в адресной строке,
А у меня вообще нет фавиконки в адресной строке ни на одном сайте, только на вкладке. FF-55
Как сделать, чтоб появилась иконка сайта?
Отсутствует
sonyas75
Спасибо код работает, только не мигает. И менюшка вылезает, не нужная совсем.
.
ПС. Разобрался. Конфликтует с identitybox_colors.css из CTR.
rubel
Такая же фигня - родные фавиконки заменены на стандартный глобус.
Нужно в CTR посмотреть, может через него, получится исправить.
Отредактировано Ultima2m (30-12-2017 09:02:19)
Отсутствует
Ultima2m, rubel
Вернуть иконки сайтов в адресной строке от 04.02.2016
Отредактировано oleg.sgh (30-12-2017 09:02:40)
Отсутствует