Customize taskbar needs screenshot feature as a choice  [Closed]

Suggestions and feature requests for the Pale Moon browser
context
Fanatic
Fanatic
Posts: 198
Joined: 2012-07-22, 18:56
Location: USA Texas

Customize taskbar needs screenshot feature as a choice

Post by context » 2020-09-12, 16:59

After using it from the Web Developer Tool Panel for a few months, I'm continually impressed by how useful the screenshot tool is. There are some browsing instances where a true screenshot is really the only good capture option. And the screenshot tool is an excellent solution. But having to have the Developer Tools active on the desktop is cumbersome.

Since the screenshot tool already exists in Pale Moon, why not add it as a choice for the taskbar? It would make Pale Moon even more excellent!

User avatar
RealityRipple
Fanatic
Fanatic
Posts: 206
Joined: 2018-05-17, 02:34
Location: Los Berros Canyon, California
Contact:

Re: Customize taskbar needs screenshot feature as a choice

Post by RealityRipple » 2020-09-12, 18:16

Image

context
Fanatic
Fanatic
Posts: 198
Joined: 2012-07-22, 18:56
Location: USA Texas

Re: Customize taskbar needs screenshot feature as a choice

Post by context » 2020-09-12, 22:09

Just to clarify: the screenshot feature in the developer tools makes a PNG image of the entire web page the browser is currently viewing, regardless of its scrollable length. There are browser plugins that can do that sort of things (I've tried a couple), but nothing is as streamlined and as reliable as the developer screenshot tool. I suppose that's because it's directly accessing PM's page display buffer.

User avatar
letmeindude
Fanatic
Fanatic
Posts: 129
Joined: 2018-10-09, 08:56

Re: Customize taskbar needs screenshot feature as a choice

Post by letmeindude » 2020-09-13, 00:15

I use a button for that, but you will need Custom Buttons extension.

Image

Page Capture button code (Paste & Go it in the address bar after installing CB extension):

Code: Select all

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%3EPage%20Capture%20%28by%20Odyseus%29%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAESklEQVQ4jZXLS0zTBwDH8b8nd9qiS2aWtUhbBlIeSimP0oGAVYEibGDSTKSCK4OgjCFzsi0khGQE7XRW2eKUqSVqtBLUmBlCFhcoWGuLfVBeLX3RCuruGr18d9DNZbcdPpffQwDWWK3WdRaLJclisaT8T0lWq3UdsEYYtYyu9y8Ehlfiq88erz7lyeqfbzz+j391j1efshJffeZfCAyPWkbXC2azOXk5En8eDEQIh2IsRx4RCcWw2xxcu3qdH4zHOXbUyNDQZSattn824VCMYCDCciT+3Gw2JwsDAwNpsegjQktRYtEVVuJPMF8cYteuKrIV2chkMqRSKRkZmWzdWszpUz+xEn9CLLry+vOIgYGBNMFkMqVHI3FCwWXisVWOHOkiKSmJhIQExGIxEokEiUSCWCxGLBYjEokwGJqIx1YJBZeJRuKYTKZ0wWg0ZoaDywQWw1w8byY1NRWZTEZyehL5lWl8/l0Ohw5l8nFZCplpMmSyV86eOUdgMUw4uIzRaMwUenv7Nwf9ESbHbdR8UoNcLidDkUlZ6046L+2l+1w1DXXr6G0W01YrR7lZjlwup7qqGuv4PYL+CL29/ZuFnp6eLf75EJeGrlBSUkJGRgYFVWXU9rbScqqZfd+oqSl7iwb1Wr7d8T67CzaRnp5Oaek2Ll+6in8+RE9Pzxahu6s7a963RH/fMdRqNQUFBZTsa+KLn8+w84CB0ho1e7d9yGcZ79Ch3EBznhSFQkFRUREnjpuY9y3R3dWdJXR2dmX7PIv0fX+U4uJi1Go1GTvrkZQYSFB+yke5e2hQ7qJvu5ZT2u00Z6WgVCrRaDSYfjyNz7NIZ2dXttDR0aH0uua48OsQFRUVFBUVkawoR5b3JQliPVve3UeD/AAXDhq50NhGeUoqhYWF1Nbu5vq1EbyuOTo6OpRCe2t7jssxwx+/T1BVVU15eTmK7AJSN+nIfK+dvLeb0accxlQ/QMv2OlSKHCoqKjAYmpiasONyzNDe2p4jtLS05Trve/C55xkcPE9ubi5arRZFloq0D3aQv2EPO8T1FMm2kZ+Vh1arRaPRMDJ8E59nAed9Dy0tbbmCocGQb598iNc1R3gpxuGvvqawsBCdTkdlZSUqlQqVSkVlZSU6nY6ysjJOnjQRDsbwuuawTz7E0GDIF/T6/aqpcSdOu5dZr59oOM6Vy1dpbGyksaGR+vp69Ho9TYYmDh44yK2bt4mG48x6/TjtXqbGnej1+1WCTleXP3Zn4sW9CScOmxuXw4fPPY9t8gE3hm9x5uez/HLmHLdv/sYD2zQ+zwIuhw+Hzc29CSdjdyZe6HR1+YJGo5Ee6z8xfXds8qV9yoXD5mHa7sXtnGXGvcDcTIC5mQAz7gXczlmm7V4cNg/2KRd3xyZfHu07/rC0tFQmCIKwViQS1Ug2SgYTE6UjiYnSG9K/SaU3pFLZa2/yxFdGJBslgyKRqEYQhLV/AaXdCaOlCJzHAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/**%0A%20*%20%20Button%20based%20on%20code%20found%20in%20Mozilla%20German%20Forums.%20http%3A//www.camp-firefox.de/forum/viewtopic.php%3Ff%3D16%26t%3D100898%0A%20*%20%20Source%3A%20https%3A//github.com/ardiman/userChrome.js/tree/master/webscreenshot%0A%20*/%0A%0Aif%20%28self.parentNode%20%26%26%20/%5Ewrapper-/.test%28self.parentNode.id%29%29%0A%09return%3B%0A%0Avar%20%24%20%3D%20this.PageCapture%20%3D%20%7B%0A%09init%3A%20function%28%29%20%7B%0A%09%09if%20%28%21%28%22Services%22%20in%20window%29%29%0A%09%09%09Cu.import%28%22resource%3A//gre/modules/Services.jsm%22%29%3B%0A%0A%09%09custombuttons.isPref%28%24.Branch%20+%20%22pForceToSaveImages%22%2C%20false%29%3B%0A%09%09custombuttons.isPref%28%24.Branch%20+%20%22pContextMenuForImages%22%2C%20false%29%3B%0A%09%09custombuttons.isPref%28%24.Branch%20+%20%22pHotkeyAction%22%2C%200%29%3B%0A%0A%09%09if%20%28%21%28%24._UID%20in%20window%29%29%20%7B%0A%09%09%09window%5B%24._UID%5D%20%3D%20%7B%0A%09%09%09%09CustomizableUI%3A%20false%2C%0A%09%09%09%09FrameScriptLoaded%3A%20false%2C%0A%09%09%09%09RandomID%3A%20false%2C%0A%09%09%09%09SaveImage%3A%20null%0A%09%09%09%7D%3B%0A%09%09%7D%0A%0A%09%09//%20I%27m%20forced%20to%20use%20this%20effing%20sheet%20for%20multiple%20windows%20opened%21%21%21%0A%09%09//%20Otherwise%2C%20the%20stupid%20frame%20script%20is%20loaded%20every%20effing%20time%20a%20window%20is%20opened%21%21%21%0A%09%09//%20Mozilla%2C%20get%20your%20head%20out%20of%20your%20effing%20a%24%24%21%21%21%21%21%0A%09%09if%20%28%21window%5B%24._UID%5D%5B%22RandomID%22%5D%29%20%7B%0A%09%09%09window%5B%24._UID%5D%5B%22RandomID%22%5D%20%3D%20parseInt%28Math.random%28%29%20*%2010000%2C%2010%29%3B%0A%09%09%7D%0A%09%09%24._randomID%20%3D%20window%5B%24._UID%5D%5B%22RandomID%22%5D%3B%0A%0A%09%09window%5B%24._UID%5D%5B%22SaveImage%22%5D%20%3D%20%24.saveImage%3B%0A%0A%09%09self.setAttribute%28%22popup%22%2C%20%24._UID%20+%20%22-menupopup%22%29%3B%0A%09%09%24.createElements%28%29%3B%0A%0A%09%09if%20%28Services.prefs.getBoolPref%28%24.Branch%20+%20%22pContextMenuForImages%22%29%29%20%7B%0A%09%09%09if%20%28%21%24.%24%28%24._UID%20+%20%22-WebScreenShotOnImage%22%29%29%0A%09%09%09%09%24.b64Context.init%28%29%3B%0A%09%09%7D%0A%0A%09%09self.tooltipText%20%3D%20%22%20%20%22%20+%20self.name%20+%20%22%5Cn%5Cn%22%20+%0A%09%09%09%22%20%20Middle%20Click%20%3D%20Options%20menu%5Cn%22%20+%0A%09%09%09%22%20%20Right%20click%20-%20%5C%22Button%20Help%5C%22%20for%20tips.%20%20%22%3B%0A%0A%09%09self.onmousedown%20%3D%20function%28aE%29%20%7B%0A%09%09%09if%20%28aE.button%20%3D%3D%3D%200%20%26%26%20%24.accel%28aE%29%29%0A%09%09%09%09aE.preventDefault%28%29%3B%0A%09%09%7D%3B%0A%0A%09%09self.onclick%20%3D%20function%28aE%29%20%7B%0A%09%09%09if%20%28aE.button%20%3D%3D%3D%201%20%26%26%20%21aE.shiftKey%20%26%26%20%21%24.accel%28aE%29%20%26%26%20%21aE.altKey%20%7C%7C%0A%09%09%09%09aE.button%20%3D%3D%3D%200%20%26%26%20%21aE.shiftKey%20%26%26%20%24.accel%28aE%29%20%26%26%20%21aE.altKey%29%20%7B%0A%09%09%09%09aE.preventDefault%28%29%3B%0A%09%09%09%09let%20optPop%20%3D%20%24.%24%28%24._UID%20+%20%22-options-menu%22%29%3B%0A%09%09%09%09optPop%20%26%26%20optPop.openPopup%28aE.target%2C%20%22after_start%22%2C%200%2C%200%2C%20false%2C%20null%2C%20null%29%3B%0A%09%09%09%7D%0A%09%09%09aE.stopPropagation%28%29%3B%0A%09%09%7D%3B%0A%0A%09%09if%20%28%21window%5B%24._UID%5D%5B%22FrameScriptLoaded%22%5D%29%20%7B%0A%09%09%09window%5B%24._UID%5D%5B%22FrameScriptLoaded%22%5D%20%3D%20true%3B%0A%09%09%09%24._frameScript%20%3D%20%22data%3Aapplication/javascript%2C%22%20+%20encodeURIComponent%28%24.getHelp%28%22%25FrameScript%25%22%29%0A%09%09%09%09.replace%28/%25Capture_All_MsgID%25/g%2C%20%24._captureAllMsgID%29%0A%09%09%09%09.replace%28/%25Capture_Page_MsgID%25/g%2C%20%24._capturePageMsgID%29%0A%09%09%09%09.replace%28/%25Capture_Sel_Region_MsgID%25/g%2C%20%24._captureSelRegionMsgID%29%0A%09%09%09%09.replace%28/%25Cleanup_ID%25/g%2C%20%24._cleanUpMsgID%29%0A%09%09%09%09.replace%28/%25Capture_Sel_Node_MsgID%25/g%2C%20%24._captureSelNodeMsgID%29%0A%09%09%09%09.replace%28/%25Response_ID%25/g%2C%20%24._responseMsgID%29%29%3B%0A%09%09%09//%20Load%20frame%20script%20to%20send%20messages%20TO%20content.%0A%09%09%09%24._globalMM.loadFrameScript%28%24._frameScript%2C%20true%29%3B%0A%09%09%09//%20Add%20listener%20to%20receive%20messages%20FROM%20content.%0A%09%09%09%24._globalMM.addMessageListener%28%24._responseMsgID%2C%20%24._messageResponse%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%22CustomizableUI%22%20in%20window%29%20%7B%0A%09%09%09if%20%28%21window%5B%24._UID%5D%5B%22CustomizableUI%22%5D%29%20%7B%0A%09%09%09%09window%5B%24._UID%5D%5B%22CustomizableUI%22%5D%20%3D%20true%3B%0A%09%09%09%09CustomizableUI.addListener%28%7B%0A%09%09%09%09%09onCustomizeEnd%3A%20function%28aWindow%29%20%7B%0A%09%09%09%09%09%09var%20thisBtn%20%3D%20aWindow.document.getElementById%28self.id%29%3B%0A%09%09%09%09%09%09setTimeout%28function%28%29%20%7B%0A%09%09%09%09%09%09%09aWindow%5B%24._UID%5D%5B%22CustomizableUI%22%5D%20%26%26%20thisBtn.init%28%29%3B%0A%09%09%09%09%09%09%7D%2C%20Math.floor%28Math.random%28%29%20*%20%281%20+%202000%20-%20200%29%29%20+%20200%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09addDestructor%28function%28aReason%29%20%7B%0A%09%09%09if%20%28aReason%20%3D%3D%3D%20%22update%22%20%7C%7C%20aReason%20%3D%3D%3D%20%22delete%22%29%20%7B%0A%09%09%09%09//%20Delete%20all%20elements%20created%20by%20this%20button.%0A%09%09%09%09let%20selfEls%20%3D%20document.getElementsByAttribute%28%22cb_id%22%2C%20%24._UID%29%3B%0A%09%09%09%09Array.prototype.slice.call%28selfEls%29.forEach%28function%28aEl%29%20%7B%0A%09%09%09%09%09aEl.parentNode.removeChild%28aEl%29%3B%0A%09%09%09%09%7D%29%3B%0A%09%09%09%7D%0A%09%09%09if%20%28aReason%20%3D%3D%3D%20%22delete%22%20%7C%7C%20aReason%20%3D%3D%3D%20%22destructor%22%29%20%7B%0A%09%09%09%09%24._mm.sendAsyncMessage%28%24._cleanUpMsgID%29%3B%0A%09%09%09%09%24._globalMM.removeDelayedFrameScript%28%24._frameScript%29%3B%0A%09%09%09%09%24._globalMM.removeMessageListener%28%24._responseMsgID%2C%20%24._messageResponse%29%3B%0A%09%09%09%7D%0A%09%09%09if%20%28aReason%20%3D%3D%3D%20%22delete%22%29%20%7B%0A%09%09%09%09%28%24.SP.getBranch%28%24.Branch%29%29.deleteBranch%28%22%22%29%3B%0A%09%09%09%09Services.prefs.savePrefFile%28null%29%3B%0A%09%09%09%09delete%20window%5B%24._UID%5D%3B%0A%09%09%09%7D%0A%09%09%7D%29%3B%0A%09%7D%2C%0A%0A%09_messageResponse%3A%20%7B%0A%09%09receiveMessage%3A%20function%28aMsg%29%20%7B%0A%09%09%09if%20%28aMsg.name%20%21%3D%3D%20%24._responseMsgID%29%0A%09%09%09%09return%3B%0A%09%09%09switch%20%28aMsg.data.id%29%20%7B%0A%09%09%09%09case%20%22OpenImageOnTab%22%3A%0A%09%09%09%09%09gBrowser.addTab%28aMsg.data.image%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09case%20%22SaveImageToDisk%22%3A%0A%09%09%09%09%09window%5B%24._UID%5D%5B%22SaveImage%22%5D%28aMsg.data.image%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09case%20%22NotPossible%22%3A%0A%09%09%09%09%09%24.alertCallback.opt%20%3D%20%7B%0A%09%09%09%09%09%09centerScreen%3A%20true%2C%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%24.notifyme%28self.name%2C%0A%09%09%09%09%09%09%22No%20picture%20possible%21%21%21%22%2C%0A%09%09%09%09%09%09%24.getHelp%28%22%25WarningImg%25%22%29%2C%0A%09%09%09%09%09%09%24.alertCallback%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%7D%2C%0A%0A%09hotkeyPressed%3A%20function%28aE%29%20%7B%0A%09%09switch%20%28Services.prefs.getIntPref%28%24.Branch%20+%20%22pHotkeyAction%22%29%29%20%7B%0A%09%09%09case%201%3A%0A%09%09%09%09%24.shotCmd%28aE%2C%20%22captureAll%22%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%202%3A%0A%09%09%09%09%24.shotCmd%28aE%2C%20%22capturePage%22%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%203%3A%0A%09%09%09%09%24.shotCmd%28aE%2C%20%22captureSelRegion%22%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%204%3A%0A%09%09%09%09%24.shotCmd%28aE%2C%20%22captureSelNode%22%29%3B%0A%09%09%09%09break%3B%0A%09%09%09default%3A%0A%09%09%09%09return%20true%3B%0A%09%09%7D%0A%09%09aE.stopPropagation%28%29%3B%0A%09%7D%2C%0A%0A%09setHotkeyAction%3A%20function%28%29%20%7B%0A%09%09let%20opts%20%3D%20%5B%22Disabled%22%2C%0A%09%09%09%22Capture%20whole%20page%22%2C%0A%09%09%09%22Capture%20current%20view%22%2C%0A%09%09%09%22Capture%20selected%20region%22%2C%0A%09%09%09%22Capture%20selected%20node%22%0A%09%09%5D%3B%0A%09%09let%20selected%20%3D%20%7B%7D%3B%0A%09%09let%20result%20%3D%20Services.prompt.select%28null%2C%20self.name%2C%20%22Choose%20hotkey%20action.%22%2C%20opts.length%2C%0A%09%09%09opts%2C%20selected%29%3B%0A%09%09if%20%28result%29%20%7B%0A%09%09%09Services.prefs.setIntPref%28%24.Branch%20+%20%22pHotkeyAction%22%2C%20selected.value%29%3B%0A%09%09%7D%20else%0A%09%09%09return%3B%0A%09%7D%2C%0A%0A%09createElements%3A%20function%28%29%20%7B%0A%09%09let%20popSet%20%3D%20%24.%24%28%22mainPopupSet%22%29%3B%0A%09%09if%20%28popSet%20%26%26%20%21%24.%24%28%24._UID%20+%20%22-menupopup%22%29%29%20%7B%0A%09%09%09let%20shotMenu%20%3D%20popSet.appendChild%28%24.%24CNS%28%22menupopup%22%2C%20%7B%0A%09%09%09%09id%3A%20%24._UID%20+%20%22-menupopup%22%2C%0A%09%09%09%09position%3A%20%22after_start%22%2C%0A%09%09%09%09consumeoutsideclicks%3A%20false%2C%0A%09%09%09%09onpopupshown%3A%20%22this.handleOpenState%28event%2C%20true%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09%09onpopuphidden%3A%20%22this.handleOpenState%28event%2C%20false%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09%09cb_id%3A%20%24._UID%0A%09%09%09%7D%29%29%3B%0A%09%09%09shotMenu.handleOpenState%20%3D%20function%28aE%2C%20aState%29%20%7B%0A%09%09%09%09if%20%28aState%29%0A%09%09%09%09%09self.setAttribute%28%22open%22%2C%20aState%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09self.removeAttribute%28%22open%22%29%3B%0A%09%09%09%09aE.stopPropagation%28%29%3B%0A%09%09%09%7D%3B%0A%09%09%09shotMenu.appendChild%28%24.%24CNS%28%22menuitem%22%2C%20%7B%0A%09%09%09%09label%3A%20%22Capture%20whole%20page%22%2C%0A%09%09%09%09oncommand%3A%20%24.that%20+%20%22shotCmd%28event%2C%20%27captureAll%27%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09%09onclick%3A%20%22event.stopPropagation%28%29%3B%22%0A%09%09%09%7D%29%29%3B%0A%09%09%09shotMenu.appendChild%28%24.%24CNS%28%22menuitem%22%2C%20%7B%0A%09%09%09%09label%3A%20%22Capture%20current%20view%22%2C%0A%09%09%09%09oncommand%3A%20%24.that%20+%20%22shotCmd%28event%2C%20%27capturePage%27%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09%09onclick%3A%20%22event.stopPropagation%28%29%3B%22%0A%09%09%09%7D%29%29%3B%0A%09%09%09shotMenu.appendChild%28%24.%24CNS%28%22menuitem%22%2C%20%7B%0A%09%09%09%09label%3A%20%22Capture%20selected%20region%22%2C%0A%09%09%09%09oncommand%3A%20%24.that%20+%20%22shotCmd%28event%2C%20%27captureSelRegion%27%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09%09onclick%3A%20%22event.stopPropagation%28%29%3B%22%0A%09%09%09%7D%29%29%3B%0A%09%09%09shotMenu.appendChild%28%24.%24CNS%28%22menuitem%22%2C%20%7B%0A%09%09%09%09label%3A%20%22Capture%20selected%20node%22%2C%0A%09%09%09%09oncommand%3A%20%24.that%20+%20%22shotCmd%28event%2C%20%27captureSelNode%27%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09%09onclick%3A%20%22event.stopPropagation%28%29%3B%22%0A%09%09%09%7D%29%29%3B%0A%09%09%7D%0A%09%09if%20%28popSet%20%26%26%20%21%24.%24%28%24._UID%20+%20%22-options-menu%22%29%29%20%7B%0A%09%09%09popSet.appendChild%28%24.%24CNS%28%22menupopup%22%2C%20%7B%0A%09%09%09%09id%3A%20%24._UID%20+%20%22-options-menu%22%2C%0A%09%09%09%09position%3A%20%22after_start%22%2C%0A%09%09%09%09cb_id%3A%20%24._UID%2C%0A%09%09%09%09onpopupshowing%3A%20%24.that%20+%20%22populateOptionsMenu%28this%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09%7D%29%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09populateOptionsMenu%3A%20function%28aN%29%20%7B%0A%09%09aN.textContent%20%3D%20%22%22%3B%0A%09%09aN.appendChild%28%24.%24CNS%28%22menuitem%22%2C%20%7B%0A%09%09%09label%3A%20%22Context%20menu%20for%20images%22%2C%0A%09%09%09tooltiptext%3A%20%22If%20enabled/checked%2C%20it%20will%20add%20a%20context%20menu%20for%20images%20that%2C%20when%20clicked%2C%22%20+%0A%09%09%09%09%22%20will%20copy%20to%20the%20clipboard%20the%20selected%20image%20in%20base64%20format.%22%2C%0A%09%09%09type%3A%20%22checkbox%22%2C%0A%09%09%09checked%3A%20Services.prefs.getBoolPref%28%24.Branch%20+%20%22pContextMenuForImages%22%29%2C%0A%09%09%09oncommand%3A%20%24.that%20+%20%22switchPref%28%27pContextMenuForImages%27%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09onclick%3A%20%22event.stopPropagation%28%29%3B%22%0A%09%09%7D%29%29%3B%0A%09%09aN.appendChild%28%24.%24CNS%28%22menuitem%22%2C%20%7B%0A%09%09%09label%3A%20%22Force%20to%20save%20images%22%2C%0A%09%09%09type%3A%20%22checkbox%22%2C%0A%09%09%09tooltiptext%3A%20%22If%20enabled/checked%2C%20all%20page%20capture%20actions%20will%20save%20the%20image%20to%20disk%22%20+%0A%09%09%09%09%22%20instead%20of%20loading%20them%20in%20a%20new%20tab.%5Cn%22%20+%0A%09%09%09%09%22%20Even%20with%20this%20option%20set%20to%20false%2C%20images%20can%20be%20saved%20to%20disk%20if%20the%20Shift%20key%20is%20pressed%22%20+%0A%09%09%09%09%22%20while%20any%20capture%20action%20is%20performed.%5Cn%5Cn%22%20+%0A%09%09%09%09%22%20As%20a%20fails%20safe%2C%20images%20bigger%20than%205MB%20are%20forced%20to%20be%20saved%20to%20disk.%20Because%22%20+%0A%09%09%09%09%22%20Base64%20images%20that%20big%20will%20be%20hard%20to%20be%20loaded%20into%20a%20tab%22%20+%0A%09%09%09%09%22%20%28more%20than%205%20million%20characters%20%28aprox.%29%20inside%20the%20URL%20bar%29.%22%2C%0A%09%09%09checked%3A%20Services.prefs.getBoolPref%28%24.Branch%20+%20%22pForceToSaveImages%22%29%2C%0A%09%09%09oncommand%3A%20%24.that%20+%20%22switchPref%28%27pForceToSaveImages%27%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09onclick%3A%20%22event.stopPropagation%28%29%3B%22%0A%09%09%7D%29%29%3B%0A%09%09aN.appendChild%28%24.%24CNS%28%22menuitem%22%2C%20%7B%0A%09%09%09label%3A%20%22Choose%20hotkey%20action%22%2C%0A%09%09%09tooltiptext%3A%20%22Choose%20the%20action%20to%20be%20performed%20when%20this%20button%20hotkey%20is%20activated.%22%2C%0A%09%09%09oncommand%3A%20%24.that%20+%20%22setHotkeyAction%28%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09onclick%3A%20%22event.stopPropagation%28%29%3B%22%0A%09%09%7D%29%29%3B%0A%09%7D%2C%0A%0A%09switchPref%3A%20function%28aPref%29%20%7B%0A%09%09Services.prefs.setBoolPref%28%24.Branch%20+%20aPref%2C%20%21Services.prefs.getBoolPref%28%24.Branch%20+%20aPref%29%29%3B%0A%09%09if%20%28aPref%20%3D%3D%3D%20%22pContextMenuForImages%22%29%20%7B%0A%09%09%09if%20%28Services.prefs.getBoolPref%28%24.Branch%20+%20aPref%29%29%0A%09%09%09%09%24.b64Context.init%28%29%3B%0A%09%09%09else%0A%09%09%09%09%24.b64Context.uninit%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09shotCmd%3A%20function%28aE%2C%20aType%29%20%7B%0A%09%09let%20save%20%3D%20Services.prefs.getBoolPref%28%24.Branch%20+%20%22pForceToSaveImages%22%29%20%7C%7C%20aE.shiftKey%3B%0A%09%09switch%20%28aType%29%20%7B%0A%09%09%09case%20%22captureAll%22%3A%0A%09%09%09%09%24._mm.sendAsyncMessage%28%24._captureAllMsgID%2C%20%7B%0A%09%09%09%09%09SaveImage%3A%20save%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22capturePage%22%3A%0A%09%09%09%09%24._mm.sendAsyncMessage%28%24._capturePageMsgID%2C%20%7B%0A%09%09%09%09%09SaveImage%3A%20save%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22captureSelRegion%22%3A%0A%09%09%09%09%24._mm.sendAsyncMessage%28%24._captureSelRegionMsgID%2C%20%7B%0A%09%09%09%09%09SaveImage%3A%20save%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22captureSelNode%22%3A%0A%09%09%09%09%24._mm.sendAsyncMessage%28%24._captureSelNodeMsgID%2C%20%7B%0A%09%09%09%09%09SaveImage%3A%20save%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22b64Img%22%3A%0A%09%09%09%09%24.b64Context.copyImageAsBase64%28gContextMenu.target.src%29%3B%0A%09%09%09%09break%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09b64Context%3A%20%7B%0A%09%09init%3A%20function%28%29%20%7B%0A%09%09%09if%20%28%21%24.%24%28%24._UID%20+%20%22-WebScreenShotOnImage%22%29%29%20%7B%0A%09%09%09%09let%20inserPoint%20%3D%20%24.%24%28%22context-copyimage%22%29%3B%0A%09%09%09%09let%20b64Img%20%3D%20%24.%24CNS%28%22menuitem%22%2C%20%7B%0A%09%09%09%09%09id%3A%20%24._UID%20+%20%22-WebScreenShotOnImage%22%2C%0A%09%09%09%09%09cb_id%3A%20%24._UID%2C%0A%09%09%09%09%09class%3A%20%22menuitem-iconic%22%2C%0A%09%09%09%09%09label%3A%20%22Copy%20image%20as%20Base64%22%2C%0A%09%09%09%09%09image%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB7kl%22%20+%0A%09%09%09%09%09%09%22EQVQ4jc3Sz0vbYBjAcf/aeqiXQbAs3WFihuwQRFima7S0RVZ/ZFTNq61NmBpfmdREBk2Yc6/dOmV%22%20+%0A%09%09%09%09%09%09%22K6xiSg2OX7w5iZaznsef28Dx8ngeeZ2Tkv47ZFY+t4JhW9J6t4Bh7tcnQxiSOUUqRxDFe00MIl9r%22%20+%0A%09%09%09%09%09%09%22aBsv1PVrtU5RStNqnLNf3EMJFCPcBchwHpRRKKaSURGFImqakaUrv6pKLboduR3HR7XDd75Om6aD%22%20+%0A%09%09%09%09%09%09%223D8QwDDRNIwpDrvt9lFIEB4fMrng8LaxjrzaRUg6GRWGI4zh3iG3baJpGZjRDFIacnHxgrbGLPu8%22%20+%0A%09%09%09%09%09%09%22z53dYCa95VvtIzn6Lu72DUopu98vDBvdANptFSomUksmSTy285Kz3k3JwztzBD0y/x2SxMdhkKNC%22%20+%0A%09%09%09%09%09%09%22o19msbzM2u4No31AOznne+Ebp+Bcbn2CiekTp9SpJHA8HhHB5U1sn+3IX0+9h+j2KR7csJRB8vQM%22%20+%0A%09%09%09%09%09%09%22KxQpRGA4HvKbHUrXKk1ebTDWu8D5D9waS7yDaNzx+UcNxHA7fHf4NZEYzgz+YthZ4ZG0zt3PB/tk%22%20+%0A%09%09%09%09%09%09%22t5eAcfd5n2lrAa3oPZ9Q0jcXFRUzTJK/nkVKSxDFCuBSKFSZmKoxNlZiYqVAoVhDCJYljpJTk9fw%22%20+%0A%09%09%09%09%09%09%22dYlkWlmVhmiamaXKfG4aBnhtH0zT03DiGYQxqtm0Pf+t/Hr8B1iDy8J2HiUcAAAAASUVORK5CYII%3D%22%2C%0A%09%09%09%09%09oncommand%3A%20%24.that%20+%20%22shotCmd%28event%2C%20%27b64Img%27%29%3Bevent.stopPropagation%28%29%3B%22%2C%0A%09%09%09%09%09onclick%3A%20%22event.stopPropagation%28%29%3B%22%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09inserPoint.parentNode.insertBefore%28b64Img%2C%20inserPoint.nextSibling%29%3B%0A%09%09%09%09let%20ctx%20%3D%20%24.%24%28%22contentAreaContextMenu%22%29%3B%0A%09%09%09%09if%20%28ctx%29%0A%09%09%09%09%09ctx.addEventListener%28%22popupshowing%22%2C%20%24.b64Context.contextMenuListener%2C%20false%29%3B%0A%09%09%09%09addDestructor%28function%28aReason%29%20%7B%0A%09%09%09%09%09if%20%28aReason%20%3D%3D%3D%20%22update%22%20%7C%7C%20aReason%20%3D%3D%3D%20%22delete%22%29%20%7B%0A%09%09%09%09%09%09ctx.removeEventListener%28%22popupshowing%22%2C%20%24.b64Context.contextMenuListener%2C%20false%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09uninit%3A%20function%28%29%20%7B%0A%09%09%09let%20ctx%20%3D%20%24.%24%28%22contentAreaContextMenu%22%29%3B%0A%09%09%09ctx%20%26%26%20ctx.removeEventListener%28%22popupshowing%22%2C%20%24.b64Context.contextMenuListener%2C%20false%29%3B%0A%09%09%09let%20mI%20%3D%20%24.%24%28%24._UID%20+%20%22-WebScreenShotOnImage%22%29%3B%0A%09%09%09mI%20%26%26%20mI.parentNode.removeChild%28mI%29%3B%0A%09%09%7D%2C%0A%09%09copyImageAsBase64%3A%20function%28aImg%29%20%7B%0A%09%09%09%24.img_to_b64_cback%28aImg%2C%20function%28aImgData%29%20%7B%0A%09%09%09%09if%20%28aImgData%29%20%7B%0A%09%09%09%09%09gClipboard.write%28aImgData%29%3B%0A%09%09%09%09%09%24.alertCallback.opt%20%3D%20%7B%0A%09%09%09%09%09%09centerScreen%3A%20false%2C%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%24.notifyme%28self.name%2C%0A%09%09%09%09%09%09%22Image%20copied%20as%20Base64%22%2C%0A%09%09%09%09%09%09%24.getHelp%28%22%25AlertImg%25%22%29%2C%0A%09%09%09%09%09%09%24.alertCallback%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%24.alertCallback.opt%20%3D%20%7B%0A%09%09%09%09%09%09centerScreen%3A%20true%2C%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%24.notifyme%28self.name%2C%0A%09%09%09%09%09%09%22Something%20went%20wrong%20while%20trying%20to%20convert%20image%20to%20Base64.%22%2C%0A%09%09%09%09%09%09%24.getHelp%28%22%25ErrorImg%25%22%29%2C%0A%09%09%09%09%09%09%24.alertCallback%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%7D%29%3B%0A%09%09%7D%2C%0A%09%09contextMenuListener%3A%20function%28%29%20%7B%0A%09%09%09let%20itm%20%3D%20%24.%24%28%24._UID%20+%20%22-WebScreenShotOnImage%22%29%3B%0A%09%09%09if%20%28gContextMenu%20%26%26%20itm%29%0A%09%09%09%09itm.hidden%20%3D%20%28%21gContextMenu.onImage%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09img_to_b64_cback%3A%20function%28aURL%2C%20aCallback%29%20%7B%0A%09%09if%20%28%21aURL%29%0A%09%09%09aCallback%28false%29%3B%0A%09%09else%20%7B%0A%09%09%09let%20xhr%20%3D%20new%20XMLHttpRequest%28%29%2C%0A%09%09%09%09nsIMIMEService%20%3D%20Cc%5B%22@mozilla.org/mime%3B1%22%5D.getService%28Ci.nsIMIMEService%29%3B%0A%09%09%09try%20%7B%0A%09%09%09%09xhr.open%28%22GET%22%2C%20aURL%2C%20true%29%3B%0A%09%09%09%7D%20catch%20%28aErr%29%20%7B%0A%09%09%09%09aCallback%28false%29%3B%0A%09%09%09%09return%20true%3B%0A%09%09%09%7D%0A%09%09%09xhr.responseType%20%3D%20%22arraybuffer%22%3B%0A%09%09%09xhr.onload%20%3D%20function%28%29%20%7B%0A%09%09%09%09let%20mediaType%2C%0A%09%09%09%09%09dataURI%2C%0A%09%09%09%09%09binary%2C%0A%09%09%09%09%09bytes%3B%0A%09%09%09%09bytes%20%3D%20new%20Uint8Array%28xhr.response%29%3B%0A%09%09%09%09binary%20%3D%20%5B%5D.map.call%28bytes%2C%20function%28aByte%29%20%7B%0A%09%09%09%09%09return%20String.fromCharCode%28aByte%29%3B%0A%09%09%09%09%7D%29.join%28%22%22%29%3B%0A%09%09%09%09mediaType%20%3D%20xhr.getResponseHeader%28%22Content-Type%22%29%3B%0A%09%09%09%09let%20base64%20%3D%20btoa%28binary%29%3B%0A%09%09%09%09if%20%28mediaType.indexOf%28%22image/%22%29%20%21%3D%3D%200%29%20%7B%0A%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09mediaType%20%3D%20nsIMIMEService.getTypeFromURI%28Services.io.newURI%28aURL%2C%20null%2C%20null%29%29%3B%0A%09%09%09%09%09%09console.info%28mediaType%29%3B%0A%09%09%09%09%09%7D%20catch%20%28aError%29%20%7B%0A%09%09%09%09%09%09mediaType%20%3D%20%22image/png%22%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09dataURI%20%3D%20%22data%3A%22%20+%20mediaType%20+%20%22%3Bbase64%2C%22%20+%20base64%3B%0A%09%09%09%09aCallback%28dataURI%29%3B%0A%09%09%09%7D%3B%0A%09%09%09xhr.onerror%20%3D%20function%28%29%20%7B%0A%09%09%09%09aCallback%28false%29%3B%0A%09%09%09%7D%3B%0A%09%09%09xhr.send%28null%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09saveImage%3A%20function%28aImg%29%20%7B%0A%09%09if%20%28%21%28%22Task%22%20in%20window%29%29%0A%09%09%09Cu.import%28%22resource%3A//gre/modules/Task.jsm%22%29%3B%0A%09%09if%20%28%21%28%22Downloads%22%20in%20window%29%29%0A%09%09%09Cu.import%28%22resource%3A//gre/modules/Downloads.jsm%22%29%3B%0A%0A%09%09var%20fp%20%3D%20Cc%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28Ci.nsIFilePicker%29%3B%0A%09%09fp.init%28window%2C%20%22Save%20image%22%2C%20Ci.nsIFilePicker.modeSave%29%3B%0A%09%09fp.appendFilters%28fp.filterImages%29%3B%0A%09%09fp.appendFilters%28fp.filterAll%29%3B%0A%09%09fp.defaultString%20%3D%20%22Page%20Capture.png%22%3B%0A%09%09if%20%28fp.show%28%29%20%3D%3D%3D%20fp.returnOK%29%20%7B%0A%09%09%09Task.spawn%28function%28%29%20%7B%0A%09%09%09%09let%20doDownload%20%3D%20%22fetch%22%20in%20Downloads%20%3F%20Downloads.fetch%20%3A%20Downloads.simpleDownload%3B%0A%09%09%09%09doDownload.call%28Downloads%2C%20aImg%2C%20fp.file.path%29%3B%0A%09%09%09%7D%29.then%28null%2C%20Cu.reportError%29%3B%0A%09%09%7D%20else%0A%09%09%09return%3B%0A%09%7D%2C%0A%0A%09notifyme%3A%20function%28aTitle%2C%20aMsg%2C%20aImg%2C%20aCallback%29%20%7B%20//%20Notification%20function%0A%09%09let%20origin%20%3D%20%28Services.prefs.getPrefType%28%22ui.alertNotificationOrigin%22%29%20%21%3D%3D%200%29%20%3F%0A%09%09%09Services.prefs.getIntPref%28%22ui.alertNotificationOrigin%22%29%20%3A%0A%09%09%09null%3B%0A%09%09let%20win%20%3D%20Services.ww.openWindow%28null%2C%20%22chrome%3A//global/content/alerts/alert.xul%22%2C%0A%09%09%09%22_blank%22%2C%20%22chrome%2Ctitlebar%3Dno%2Cpopup%3Dyes%22%2C%20null%29%3B%0A%09%09win.arguments%20%3D%20%5BaImg%2C%20aTitle%2C%20aMsg%2C%20%21%21aCallback%2C%20%22%22%2C%20origin%2C%20%22%22%2C%20%22%22%2C%20null%2C%20%28%21%21aCallback%20%3F%20aCallback%20%3A%20null%29%5D%3B%0A%09%7D%2C%0A%0A%09alertCallback%3A%20%7B%0A%09%09opt%3A%20%7B%0A%09%09%09centerScreen%3A%20null%2C%0A%09%09%7D%2C%0A%09%09observe%3A%20function%28aSubject%2C%20aTopic%2C%20aData%29%20%7B%0A%09%09%09let%20alt%20%3D%20Services.wm.getMostRecentWindow%28%22alert%3Aalert%22%29%3B%0A%09%09%09let%20tBox%20%3D%20alt.document.getElementById%28%22alertTextBox%22%29%3B%0A%09%09%09if%20%28aTopic%20%3D%3D%3D%20%22alertshow%22%29%20%7B%0A%09%09%09%09tBox.appendChild%28%24.%24CNS%28%22label%22%2C%20%7B%0A%09%09%09%09%09flex%3A%201%2C%0A%09%09%09%09%09value%3A%20%22%uD835%uDDD6%uD835%uDDF9%uD835%uDDF6%uD835%uDDF0%uD835%uDDF8%20%uD835%uDDFA%uD835%uDDF2%20%uD835%uDE01%uD835%uDDFC%20%uD835%uDDF0%uD835%uDDF9%uD835%uDDFC%uD835%uDE00%uD835%uDDF2%20%uD835%uDDFA%uD835%uDDF2%22%2C%0A%09%09%09%09%7D%29%29%3B%0A%09%09%09%09if%20%28this.opt.centerScreen%29%20%7B%0A%09%09%09%09%09alt.moveTo%28%28screen.availWidth%20/%202%29%20-%20%28alt.outerWidth%20/%202%29%2C%0A%09%09%09%09%09%09%28screen.availHeight%20/%202%29%20-%20%28alt.outerHeight%20/%202%29%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09setTimeout%28function%28%29%20%7B%0A%09%09%09%09%09alt.close%28%29%3B%0A%09%09%09%09%7D%2C%20%28this.opt.centerScreen%20%3F%2010000%20%3A%203000%29%29%3B%0A%09%09%09%7D%0A%09%09%09if%20%28aTopic%20%3D%3D%3D%20%22alertclickcallback%22%29%20%7B%0A%09%09%09%09alt.close%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09getHelp%3A%20function%28aPlaceholder%29%20%7B%20//%20Get%20specific%20data%2C%20surrounded%20by%20%22placeholders%22%2C%20from%20the%20Help%20tab.%0A%09%09return%20%24.%24%28self.id%29.getAttribute%28%22Help%22%29.split%28%22%3C%21--%22%20+%20aPlaceholder%20+%20%22--%3E%22%29%5B1%5D%3B%0A%09%7D%2C%0A%0A%09%24%3A%20function%28aID%2C%20aParent%29%20%7B%0A%09%09if%20%28%21aParent%29%0A%09%09%09return%20document.getElementById%28aID%29%3B%0A%09%09return%20aParent.getElementById%28aID%29%3B%0A%09%7D%2C%0A%0A%09%24CNS%3A%20function%28aElName%2C%20aAttrs%2C%20aNS%29%20%7B%0A%09%09var%20el%20%3D%20document.createElement%28aElName%29%3B%0A%09%09if%20%28aAttrs%29%0A%09%09%09Object.keys%28aAttrs%29.forEach%28function%28n%29%20%7B%0A%09%09%09%09if%20%28aAttrs%5Bn%5D%20%21%3D%3D%20%22%22%29%0A%09%09%09%09%09el.setAttribute%28n%2C%20aAttrs%5Bn%5D%29%3B%0A%09%09%09%7D%29%3B%0A%09%09return%20el%3B%0A%09%7D%2C%0A%0A%09_UID%3A%20%22__page_capture%22%20+%20self.id.slice%2820%29%2C%0A%09_globalMM%3A%20Cc%5B%22@mozilla.org/globalmessagemanager%3B1%22%5D.getService%28Ci.nsIMessageListenerManager%29%2C%0A%09that%3A%20%22document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29.PageCapture.%22%2C%0A%09_randomID%3A%20null%2C%0A%09_frameScript%3A%20null%2C%0A%09isOSX%3A%20Services.appinfo.OS.toLowerCase%28%29.startsWith%28%22darwin%22%29%2C%0A%09accel%3A%20function%28aE%29%20%7B%0A%09%09if%20%28aE%29%0A%09%09%09return%20%24.isOSX%20%3F%20aE.metaKey%20%3A%20aE.ctrlKey%3B%0A%09%09return%20%24.isOSX%20%3F%20%22%uD835%uDDD6%uD835%uDDFC%uD835%uDDFA%uD835%uDDFA%uD835%uDDEE%uD835%uDDFB%uD835%uDDF1%22%20%3A%20%22%uD835%uDDD6%uD835%uDDFC%uD835%uDDFB%uD835%uDE01%uD835%uDDFF%uD835%uDDFC%uD835%uDDF9%22%3B%0A%09%7D%2C%0A%09get%20_responseMsgID%28%29%20%7B%0A%09%09return%20%22CB%3APageCapture%3AResponse%3A%22%20+%20self.id.slice%2814%29%20+%20%22-%22%20+%20%24._randomID%3B%0A%09%7D%2C%0A%09get%20_captureAllMsgID%28%29%20%7B%0A%09%09return%20%22CB%3APageCapture%3ACaptureAll%3A%22%20+%20self.id.slice%2814%29%20+%20%22-%22%20+%20%24._randomID%3B%0A%09%7D%2C%0A%09get%20_capturePageMsgID%28%29%20%7B%0A%09%09return%20%22CB%3APageCapture%3ACapturePage%3A%22%20+%20self.id.slice%2814%29%20+%20%22-%22%20+%20%24._randomID%3B%0A%09%7D%2C%0A%09get%20_captureSelRegionMsgID%28%29%20%7B%0A%09%09return%20%22CB%3APageCapture%3ACaptureSelRegion%3A%22%20+%20self.id.slice%2814%29%20+%20%22-%22%20+%20%24._randomID%3B%0A%09%7D%2C%0A%09get%20_captureSelNodeMsgID%28%29%20%7B%0A%09%09return%20%22CB%3APageCapture%3ACaptureSelNode%3A%22%20+%20self.id.slice%2814%29%20+%20%22-%22%20+%20%24._randomID%3B%0A%09%7D%2C%0A%09get%20_cleanUpMsgID%28%29%20%7B%0A%09%09return%20%22CB%3APageCapture%3ACleanup%3A%22%20+%20self.id.slice%2814%29%20+%20%22-%22%20+%20%24._randomID%3B%0A%09%7D%2C%0A%09get%20_mm%28%29%20%7B%0A%09%09let%20mm%20%3D%20null%3B%0A%09%09try%20%7B%0A%09%09%09mm%20%3D%20typeof%20gBrowser%20%3D%3D%3D%20%22object%22%20%3F%0A%09%09%09%09gBrowser.selectedTab.linkedBrowser.messageManager%20%3A%20//%20Everything%20else.%0A%09%09%09%09getBrowser%28%29.messageManager%3B%20//%20Thunderbird.%20%25%24/%26%24%25%20you%21%21%21%21%0A%09%09%7D%20catch%20%28aErr%29%20%7B%7D%0A%09%09return%20mm%3B%0A%09%7D%2C%0A%7D%3B%0A%0Athis.PageCapture.Branch%20%3D%20%22CB.PageCapture.Id%22%20+%20self.id.slice%2820%29%20+%20%22.%22%3B%0A%0Athis.PageCapture.init%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%20%28%21event.target%20%26%26%20%21this.disabled%29%0A%09this.PageCapture.hotkeyPressed%28event%29%3B%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%5BOptions%20%28Ctrl%20+%20Left%20Click%29%3A%0A%0A-%20Context%20menu%20for%20images%3A%0AIf%20enabled/checked%2C%20it%20will%20add%20a%20context%20menu%20for%20images%20that%2C%20when%20clicked%2C%20will%20copy%20to%20the%20clipboard%20the%20selected%20image%20in%20base64%20format.%0A%0A-%20Force%20to%20save%20images%3A%0AIf%20enabled/checked%2C%20all%20page%20capture%20actions%20will%20save%20the%20image%20to%20disk%20instead%20of%20loading%20them%20in%20a%20new%20tab.%20Even%20with%20this%20option%20set%20to%20false%2C%20images%20can%20be%20saved%20to%20disk%20if%20the%20Shift%20key%20is%20pressed%20while%20any%20capture%20action%20is%20performed.%20As%20a%20fails%20safe%2C%20images%20bigger%20than%205MB%20are%20forced%20to%20be%20saved%20to%20disk.%20Because%20Base64%20images%20that%20big%20will%20be%20hard%20to%20be%20loaded%20into%20a%20tab%20%28more%20than%205%20million%20characters%20%28approx.%29%20inside%20the%20URL%20bar%29.%0A%0A-%20Choose%20hotkey%20action%3A%0AIt%20allows%20you%20to%20choose%20the%20action%20to%20be%20performed%20when%20this%20button%20hotkey%20is%20activated.%0A%0A%5B%2C%5D%0A%0A/**%0A%20*%20%uD835%uDDD9%uD835%uDDE5%uD835%uDDE2%uD835%uDDE0%20%uD835%uDDDB%uD835%uDDD8%uD835%uDDE5%uD835%uDDD8%20%uD835%uDDD7%uD835%uDDE2%uD835%uDDEA%uD835%uDDE1%20%uD835%uDDD7%uD835%uDDE2%20%uD835%uDDE1%uD835%uDDE2%uD835%uDDE7%20%uD835%uDDE7%uD835%uDDE2%uD835%uDDE8%uD835%uDDD6%uD835%uDDDB%20%uD835%uDDD4%uD835%uDDE1%uD835%uDDEC%uD835%uDDE7%uD835%uDDDB%uD835%uDDDC%uD835%uDDE1%uD835%uDDDA%0A%20*/%0A%0A%3C%21--%25FrameScript%25--%3E%0A%28function%28aContext%29%20%7B%0A%09%22use%20sctrict%22%3B%0A%09var%20Ci%20%3D%20Components.interfaces%3B%0A%09var%20Cc%20%3D%20Components.classes%3B%0A%09var%20Cu%20%3D%20Components.utils%3B%0A%09let%20PageCapture%20%3D%20%7B%0A%09%09_forceSaveImages%3A%20null%2C%0A%09%09Init%3A%20function%28%29%20%7B%0A%09%09%09aContext.addMessageListener%28%22%25Capture_All_MsgID%25%22%2C%20this%29%3B%0A%09%09%09aContext.addMessageListener%28%22%25Capture_Page_MsgID%25%22%2C%20this%29%3B%0A%09%09%09aContext.addMessageListener%28%22%25Capture_Sel_Region_MsgID%25%22%2C%20this%29%3B%0A%09%09%09aContext.addMessageListener%28%22%25Capture_Sel_Node_MsgID%25%22%2C%20this%29%3B%0A%09%09%09aContext.addMessageListener%28%22%25Cleanup_ID%25%22%2C%20this%29%3B%0A%09%09%7D%2C%0A%0A%09%09unInit%3A%20function%28%29%20%7B%0A%09%09%09aContext.removeMessageListener%28%22%25Capture_All_MsgID%25%22%2C%20this%29%3B%0A%09%09%09aContext.removeMessageListener%28%22%25Capture_Page_MsgID%25%22%2C%20this%29%3B%0A%09%09%09aContext.removeMessageListener%28%22%25Capture_Sel_Region_MsgID%25%22%2C%20this%29%3B%0A%09%09%09aContext.removeMessageListener%28%22%25Capture_Sel_Node_MsgID%25%22%2C%20this%29%3B%0A%09%09%09aContext.removeMessageListener%28%22%25Cleanup_ID%25%22%2C%20this%29%3B%0A%09%09%7D%2C%0A%0A%09%09receiveMessage%3A%20function%28aMsg%29%20%7B%0A%09%09%09this._forceSaveImages%20%3D%20aMsg.data.SaveImage%3B%0A%09%09%09switch%20%28aMsg.name%29%20%7B%0A%09%09%09%09case%20%22%25Capture_All_MsgID%25%22%3A%0A%09%09%09%09%09this.WebScreenShot.captureAll%28%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09case%20%22%25Capture_Page_MsgID%25%22%3A%0A%09%09%09%09%09this.WebScreenShot.capturePage%28%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09case%20%22%25Capture_Sel_Region_MsgID%25%22%3A%0A%09%09%09%09%09WebScreenShotByClipping.init%28%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09case%20%22%25Capture_Sel_Node_MsgID%25%22%3A%0A%09%09%09%09%09WebScreenShotByClick.init%28%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09case%20%22%25Cleanup_MsgID%25%22%3A%0A%09%09%09%09%09this.unInit%28%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09WebScreenShot%3A%20%7B%0A%09%09%09capture%3A%20function%28win%2C%20x%2C%20y%2C%20width%2C%20height%2C%20isCopy%29%20%7B%0A%09%09%09%09var%20scrollbox%20%3D%20content.document.createElement%28%22scrollbox%22%29%3B%0A%09%09%09%09scrollbox.width%20%3D%20%221%22%3B%0A%09%09%09%09scrollbox.height%20%3D%20%221%22%3B%0A%09%09%09%09var%20canvas%20%3D%20content.document.createElementNS%28%22http%3A//www.w3.org/1999/xhtml%22%2C%20%22canvas%22%29%3B%0A%09%09%09%09canvas.style.display%20%3D%20%22inline%22%3B%0A%09%09%09%09canvas.width%20%3D%20width%3B%0A%09%09%09%09canvas.height%20%3D%20height%3B%0A%09%09%09%09var%20ctx%20%3D%20canvas.getContext%28%222d%22%29%3B%0A%09%09%09%09ctx.clearRect%280%2C%200%2C%20width%2C%20height%29%3B%0A%09%09%09%09ctx.save%28%29%3B%0A%09%09%09%09ctx.scale%281.0%2C%201.0%29%3B%0A%09%09%09%09ctx.drawWindow%28win%2C%20x%2C%20y%2C%20width%2C%20height%2C%20%22rgb%28255%2C255%2C255%29%22%29%3B%0A%09%09%09%09ctx.restore%28%29%3B%0A%09%09%09%09var%20base64%20%3D%20canvas.toDataURL%28%22image/png%22%29%3B%0A%09%09%09%09if%20%28base64.length%20%3E%20parseInt%285000000%2C%2010%29%29%0A%09%09%09%09%09PageCapture._forceSaveImages%20%3D%20true%3B%0A%09%09%09%09sendAsyncMessage%28%22%25Response_ID%25%22%2C%20%7B%0A%09%09%09%09%09id%3A%20PageCapture._forceSaveImages%20%3F%20%22SaveImageToDisk%22%20%3A%20%22OpenImageOnTab%22%2C%0A%09%09%09%09%09image%3A%20base64%2C%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09this._forceSaveImages%20%3D%20false%3B%0A%09%09%09%7D%2C%0A%09%09%09captureAll%3A%20function%28%29%20%7B%0A%09%09%09%09var%20win%20%3D%20content%3B%0A%09%09%09%09PageCapture.WebScreenShot.capture%28win%2C%200%2C%200%2C%20win.innerWidth%20+%20win.scrollMaxX%2C%20win.innerHeight%20+%20win.scrollMaxY%29%3B%0A%09%09%09%7D%2C%0A%09%09%09capturePage%3A%20function%28%29%20%7B%0A%09%09%09%09var%20win%20%3D%20content%2C%0A%09%09%09%09%09doc%20%3D%20win.document%2C%0A%09%09%09%09%09body%20%3D%20doc.body%2C%0A%09%09%09%09%09html%20%3D%20doc.documentElement%3B%0A%09%09%09%09if%20%28%21body%29%20%7B%0A%09%09%09%09%09sendAsyncMessage%28%22%25Response_ID%25%22%2C%20%7B%0A%09%09%09%09%09%09id%3A%20%22NotPossible%22%2C%0A%09%09%09%09%09%7D%29%3B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%09%09%09%09var%20scrX%20%3D%20%28body.scrollLeft%20%7C%7C%20html.scrollLeft%29%20-%20html.clientLeft%3B%0A%09%09%09%09var%20scrY%20%3D%20%28body.scrollTop%20%7C%7C%20html.scrollTop%29%20-%20html.clientTop%3B%0A%09%09%09%09PageCapture.WebScreenShot.capture%28win%2C%20scrX%2C%20scrY%2C%20win.innerWidth%2C%20win.innerHeight%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%7D%3B%0A%0A%09var%20WebScreenShotByClipping%20%3D%20%7B%0A%09%09capture%3A%20PageCapture.WebScreenShot.capture%2C%0A%09%09handleEvent%3A%20function%28aE%29%20%7B%0A%09%09%09if%20%28aE.button%20%21%3D%3D%200%29%0A%09%09%09%09return%20false%3B%0A%09%09%09aE.preventDefault%28%29%3B%0A%09%09%09aE.stopPropagation%28%29%3B%0A%09%09%09switch%20%28aE.type%29%20%7B%0A%09%09%09%09case%20%22mousedown%22%3A%0A%09%09%09%09%09this.downX%20%3D%20aE.pageX%3B%0A%09%09%09%09%09this.downY%20%3D%20aE.pageY%3B%0A%09%09%09%09%09this.bs.left%20%3D%20this.downX%20+%20%22px%22%3B%0A%09%09%09%09%09this.bs.top%20%3D%20this.downY%20+%20%22px%22%3B%0A%09%09%09%09%09this.body.appendChild%28this.box%29%3B%0A%09%09%09%09%09this.flag%20%3D%20true%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09case%20%22mousemove%22%3A%0A%09%09%09%09%09if%20%28%21this.flag%29%0A%09%09%09%09%09%09return%3B%0A%09%09%09%09%09this.moveX%20%3D%20aE.pageX%3B%0A%09%09%09%09%09this.moveY%20%3D%20aE.pageY%3B%0A%09%09%09%09%09if%20%28this.downX%20%3E%20this.moveX%29%0A%09%09%09%09%09%09this.bs.left%20%3D%20this.moveX%20+%20%22px%22%3B%0A%09%09%09%09%09if%20%28this.downY%20%3E%20this.moveY%29%0A%09%09%09%09%09%09this.bs.top%20%3D%20this.moveY%20+%20%22px%22%3B%0A%09%09%09%09%09this.bs.width%20%3D%20Math.abs%28this.moveX%20-%20this.downX%29%20+%20%22px%22%3B%0A%09%09%09%09%09this.bs.height%20%3D%20Math.abs%28this.moveY%20-%20this.downY%29%20+%20%22px%22%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09case%20%22mouseup%22%3A%0A%09%09%09%09%09PageCapture._forceSaveImages%20%3D%20aE.shiftKey%3B%0A%09%09%09%09%09this.uninit%28%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09init%3A%20function%28%29%20%7B%0A%09%09%09this.win%20%3D%20content%3B%0A%09%09%09this.doc%20%3D%20this.win.document%3B%0A%09%09%09this.body%20%3D%20this.doc.body%3B%0A%09%09%09if%20%28%21%28this.body%20instanceof%20Ci.nsIDOMHTMLBodyElement%29%29%20%7B%0A%09%09%09%09sendAsyncMessage%28%22%25Response_ID%25%22%2C%20%7B%0A%09%09%09%09%09id%3A%20%22NotPossible%22%2C%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%0A%09%09%09this.flag%20%3D%20null%3B%0A%09%09%09this.box%20%3D%20this.doc.createElement%28%22div%22%29%3B%0A%09%09%09this.bs%20%3D%20this.box.style%3B%0A%09%09%09this.bs.border%20%3D%20%22%230f0%20dashed%202px%22%3B%0A%09%09%09this.bs.position%20%3D%20%22absolute%22%3B%0A%09%09%09this.bs.zIndex%20%3D%20%222147483647%22%3B%0A%09%09%09this.defaultCursor%20%3D%20content.getComputedStyle%28this.body%2C%20%22%22%29.cursor%3B%0A%09%09%09this.body.style.cursor%20%3D%20%22crosshair%22%3B%0A%09%09%09this.doc.addEventListener%28%22mousedown%22%2C%20this%2C%20true%29%3B%0A%09%09%09this.doc.addEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%09%09%09this.doc.addEventListener%28%22mouseup%22%2C%20this%2C%20true%29%3B%0A%09%09%09this.doc.addEventListener%28%22click%22%2C%20this%2C%20true%29%3B%0A%09%09%7D%2C%0A%09%09uninit%3A%20function%28%29%20%7B%0A%09%09%09var%20pos%20%3D%20%5Bthis.win%2C%20parseInt%28this.bs.left%29%2C%20parseInt%28this.bs.top%29%2C%20parseInt%28this.bs.width%29%2C%20parseInt%28this.bs.height%29%5D%3B%0A%09%09%09this.doc.removeEventListener%28%22mousedown%22%2C%20this%2C%20true%29%3B%0A%09%09%09this.doc.removeEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%09%09%09this.doc.removeEventListener%28%22mouseup%22%2C%20this%2C%20true%29%3B%0A%09%09%09this.doc.removeEventListener%28%22click%22%2C%20this%2C%20true%29%3B%0A%09%09%09this.body.style.cursor%20%3D%20this.defaultCursor%3B%0A%09%09%09this.body.removeChild%28this.box%29%3B%0A%09%09%09this.capture.apply%28this%2C%20pos%29%3B%0A%09%09%7D%2C%0A%09%7D%3B%0A%0A%09var%20WebScreenShotByClick%20%3D%20%7B%0A%09%09capture%3A%20PageCapture.WebScreenShot.capture%2C%0A%09%09getPosition%3A%20function%28%29%20%7B%0A%09%09%09var%20html%20%3D%20this.doc.documentElement%3B%0A%09%09%09var%20body%20%3D%20this.doc.body%3B%0A%09%09%09var%20rect%20%3D%20this.target.getBoundingClientRect%28%29%3B%0A%09%09%09if%20%28%21body%29%0A%09%09%09%09return%20false%3B%0A%09%09%09return%20%5B%0A%09%09%09%09this.win%2C%20Math.round%28rect.left%29%20+%20%28body.scrollLeft%20%7C%7C%20html.scrollLeft%29%20-%20html.clientLeft%2C%20Math.round%28rect.top%29%20+%20%28body.scrollTop%20%7C%7C%20html.scrollTop%29%20-%20html.clientTop%2C%20parseInt%28rect.width%29%2C%20parseInt%28rect.height%29%0A%09%09%09%5D%3B%0A%09%09%7D%2C%0A%09%09highlight%3A%20function%28%29%20%7B%0A%09%09%09this.orgStyle%20%3D%20this.target.hasAttribute%28%22style%22%29%20%3F%20this.target.style.cssText%20%3A%20false%3B%0A%09%09%09this.target.style.cssText%20+%3D%20%22outline%3A%20red%202px%20solid%3B%20outline-offset%3A%202px%3B%20-moz-outline-radius%3A%202px%3B%22%3B%0A%09%09%7D%2C%0A%09%09lowlight%3A%20function%28%29%20%7B%0A%09%09%09if%20%28this.orgStyle%29%0A%09%09%09%09this.target.style.cssText%20%3D%20this.orgStyle%3B%0A%09%09%09else%0A%09%09%09%09this.target.removeAttribute%28%22style%22%29%3B%0A%09%09%7D%2C%0A%09%09handleEvent%3A%20function%28aE%29%20%7B%0A%09%09%09switch%20%28aE.type%29%20%7B%0A%09%09%09%09case%20%22click%22%3A%0A%09%09%09%09%09if%20%28aE.button%20%21%3D%3D%200%29%0A%09%09%09%09%09%09return%3B%0A%09%09%09%09%09aE.preventDefault%28%29%3B%0A%09%09%09%09%09aE.stopPropagation%28%29%3B%0A%09%09%09%09%09this.lowlight%28%29%3B%0A%09%09%09%09%09var%20pos%20%3D%20this.getPosition%28%29%3B%0A%09%09%09%09%09if%20%28%21pos%29%20%7B%0A%09%09%09%09%09%09sendAsyncMessage%28%22%25Response_ID%25%22%2C%20%7B%0A%09%09%09%09%09%09%09id%3A%20%22NotPossible%22%2C%0A%09%09%09%09%09%09%7D%29%3B%0A%09%09%09%09%09%09this.uninit%28%29%3B%0A%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09PageCapture._forceSaveImages%20%3D%20aE.shiftKey%3B%0A%09%09%09%09%09this.capture.apply%28this%2C%20pos%29%3B%0A%09%09%09%09%09this.uninit%28%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09case%20%22mouseover%22%3A%0A%09%09%09%09%09if%20%28this.target%29%0A%09%09%09%09%09%09this.lowlight%28%29%3B%0A%09%09%09%09%09this.target%20%3D%20aE.target%3B%0A%09%09%09%09%09this.highlight%28%29%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09init%3A%20function%28%29%20%7B%0A%09%09%09this.win%20%3D%20content%3B%0A%09%09%09this.doc%20%3D%20content.document%3B%0A%09%09%09this.doc.addEventListener%28%22mouseover%22%2C%20this%2C%20true%29%3B%0A%09%09%09this.doc.addEventListener%28%22click%22%2C%20this%2C%20true%29%3B%0A%09%09%7D%2C%0A%09%09uninit%3A%20function%28%29%20%7B%0A%09%09%09this.doc.removeEventListener%28%22mouseover%22%2C%20this%2C%20true%29%3B%0A%09%09%09this.doc.removeEventListener%28%22click%22%2C%20this%2C%20true%29%3B%0A%09%09%7D%2C%0A%09%7D%3B%0A%09PageCapture.Init%28%29%3B%0A%7D%29%28this%29%3B%0A%3C%21--%25FrameScript%25--%3E%0A%0A%3C%21--%25AlertImg%25--%3Edata%3Aimage/png%3Bbase64%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%3C%21--%25AlertImg%25--%3E%0A%3C%21--%25ErrorImg%25--%3Edata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAP8UlEQVRoge2aaVRb95mH/53O6ZZpY1ah/YpNgIQEEkiAMd4AGzBmJ3GSk8ZOmqTp9EPaTKZp0n5I0qbtxMm0NE1n3DZN0zN1HTsYsS9e8IIxXoohXrAx+47MYjA24PqZD5KxwcjttM05+TDvOc/Rufev+77PT9K59557JMT/16erPiuEeEAI4SWE8PmU4eV2+6wn+c9H61Zojz3/WNHwmy8MXHv3VTzyy9c+Ge4zc/jNFwaOPf9YUbRuhVYI8fnlPnl55ZN5702+so2xr67mSq6ZK3lRdxHtIt8DBZb/G5763J5z9+xcM2NfXc3kK9uofDLvPSGEfOk38S9CiOjOl54cceaaceaYcOaa3UThzHOTH40z3+KiwPqP5Xbf/Og783Kj7ni4nTpfenJECBHtdl4oLyHE+rHnCxnJimQk2+TGzEiOmZHcKEZyoxnNtzJaEPPJkm9lJDfaNTPH7HK47ZMVydjzhQgh1rudF8pPCJHh/EY2Q5sj3ZgYyjIxlB3FcK6F4Twrw/kxDBfEMlxgc1FoX8RQoZ3+Aht9+S568mLpyYtd2O4vsDG05JjhQvudfgWxrhl5VoZzLQxlR7kcNpsWvJzfyEYIkeF2XhRg0+izmxncZGRwUySDmZEMZpkZyo5mKMfCUF4MQ/k2hgrsbok4hgvj6C+w05Nnoz0nlgvZMZzJtHAyI5qmjGga0s00pJtpyojmZEY0ZzItXMiOoT0nlp48G/0Fd/oMFdpdvfNtrlk5FoayoxnMMrtcNkUyuMnI6LObEUJsWjbA8DOb6M8w0L8pkv7MSAY2mxnItjCQF8NAvo3BAjuDhXEMPhRPT0E8l3LttGTF0pBppek7z9JWsovR9gtMjY5wfXqK+bk55ufmuD49xdToCKPtF2gr2UXTd56lIdNKS1Ysl3Lt9BTEM/hQvKt3gZ2BfJtrZraFgc1m+jMjXU4ZBoaf2eQxQObgUxn0phnpTY+kb5OJvs3R9GVb6c+10Z9np78gnp6CBNpy4jidZaP+kRQuVZdy49o08/Pz3Lhxg5mZGa5du8b09DRTU1NMTU0xPT3NzMwM169fZ3Z21vXea9doryml/pEUTmfZaMuJo6cggf6CeNesXBt92VaXwyYTvemR9KYZGXwqAyFE5nIBNg9s3UjPBgM9aUZ60030ZkbTm2WlL8dGX14cHXlxtGTZqc+00XGwhvnZWWZnZxeklzIzM+OR69evMzc3x/zcLB0Ha6jPtNGSZacjL46+vDj6cmz0ZlldDukmetKM9GwwMLB1I0KIzcsFyOp7PJWuVAPdG410p5nozoiiZ3MMPdk22rJsnMiI4fALTzM95mRubo7r168vcOPGjb+Z+fl5psecHH7haU5kxNCWZaMn20bP5hi6M6JcLhuNdKUa6Hs8FSFE1tIAMiFETs9jyXSkRNC5wUBnmonOjCi6Mq2cz7TSmGbh6I+/x9zsLHNzc8y6X/9RzM/PMz87S8OPv09jmoXzmVa6Mq10ZkS5XDYY6EiJoOexZIQQOW7nRQFyu7es5fL6cDpSIujYEElHmpkL6dEcSzHTuP1Vbt4e5IGJoQFG2i96XB9pv8jE0MA9+2/evHmH+Tkat7/KsRTX7I40s8slJYLL68Pp3rIWIUTucgHyOgvXcGltGO3rw2lPMXJxg4kTySYqn8hh7saNxYOWMDk8yK9yUnk3JZ7h9rZ71kcuX+TdlHh+lZPK1ZEh/vznP3tkfnaWyidyOJFs4uIGE+0pRtrXh3NpbRidhWsQQuQtG+By/ira1ui5uC6MtmQDzesNlCeGM9bded+Bk8ND7MhJwbHaSPU6E79IsTN6+RK3bt3i1q1bjF6+xC9S7FSvM+FYbWRHTgpXR4YX1pdjrLuT8sRwmtcbaEs2uJzW6Lmcv8pjgIL2nEQuJOlpWxPG2bURHF4VRsNPf8KtW7fwVFOjI+zITqEkyUhreixnM2xUrTHxTrIdZ0c7zo523km2U7XGxNkMG63psZQkGdmRncLU6IjHvrdu3aLhpz/h8CqXS9uaMC4k6WnPSUQIUbBsgIuZ8ZxLDOV8kp5Tq8Ios4fQd+ZP9/2knF2dlD2cwelUC23psbSlx9K6MYaKJCM/X2fj5+tsVCQZad0Ys7B+OtVC2cMZOLs67vvN9p05TZk9hFOrwjifpOdcYigXM+M9BnjoQrqdswkhtCaGcjQhlJ1pK5mbnb3vb//mzZvMTE5Q/2gmLalWLmyM4cLGGFpSrdSsMlKzynjP/vpHM5mZnLjvCWF+fp65GzfYmbaSowmhtCaGcjYhhAvpdoQQDy0b4NzGWFrjg2lOCKbOHkz5i99c3PA+p8CZiXEOPLKJ5hQL5zZYObfBysepLm5vN6dYOPDIJmYmxj32m3VfHG9T9u1vUGd3ObXGB3NuY+yyAQKEEA9/nGKhxR7EqbggKmMCqXn9e/c0vB/XxsfZtyWD5uQozqZEL6I5OYp9WzK4Nj7O7OzsX32Rq37tZSpjAjkVF0SLPYiPUywIIR52Oy8KsKVlrZnm2ECaYgNxREnU/McPFl1t/xKDly7yflYKx9eYaF0fvYjja0y8n5XCwMW2+95iLKV2+xs4oiSaYgNpjg2kZa0ZIcSWpQHkQojHmpOMnLbqaIzRUWLWsPNfv+bxPmcpvWc/5u1EC8W2ME6uNnFmjXkRJ1ebKLaF8Xaihd6zHy86dnp62iMfPv8ce80aGmN0nLbqaE4yIoR4zO28OMCfEg2csug4btVRbpbYkbHuvs1v33F2t7bw1koLxbFhNCWZaF5tpnm1mdNubm83JZkojg3jrZUWultbFu5W78d7D2VRZpZotOo4ZdHxp0SD5wAn48M4ESVxPFpHlUniLWMgk5OTXL161SNdrWfYnmBhT4yexlWRnE4ycTrJROOqSOoK06grTLtn/54YPdsTLHS2NDM5OemRMaeTt6P1VJi0NEZLnIiSOBkf5jlAU2wox01aGqMkak1aikIVnNy7h4mJCY8MdXVRvu1RDsVFcHKlkZMrjTQkGKjO3chV5yhXnaNU526kIcGwsH4oLoLybY8y1NXF+Pi4R5r2fEhRqIJak5ZjURLHTVqaYkM9Bnj8uCWIxkgNjZFa6k0Sf4xQU5S29p7GY2NjC4yPjzM9OUn1tkc5bI/gaFwElVmpTDpHF0JOOkepzErlaFwEh+0RVG97lOnJyXt63c2VK1f4zeMP84cINQdMEo2RWhojNRy3BCGEeHxpAIUQ4okGs0SDUU2DUcNRk0SFScubwQqaivdw5coVj4yNjTE9MUHV1i2Ub05mcnSEsbExnE4nTqeTsbExJkdHKN+cTNXWLUxNjHPlypWF9eU4UVrCG4FyHEYNh01aGowal5tZQgjxhNt5UYCtR4wajkSoOBKh5miklrpIiQ/C1PwoLpqu8+cYHR31iNPpZGp8nAm3/NL1sbExJkZHmBofx+l0MjIy4pG+zg7esJn5IExNrVHiSKSWIxFql5tRgxBi69IASiHE1kNhKur1Cg6FqTgUoaY+UqLcoOXdUCXbU1bT29nB8PCwR24H8bTudDoZHR29b4++7m7eKcimKFhJmUFLvVHiUISau93cAZRLA2w7GKLgYIiC+lAV9WFqDhkkDhh0OAw6fhqk4heFOfR1dTE0NOSRwcHBv5mey5f5WXYG2wMVfBQusc+g45BBoj5MTX2oitt+QohtywbYHxTAgWA5B0KUHNSrOBiuod4gUWfQ8VG4xFtBSn4Qb+VkVQUDAwN/E/39/ctyel8tP0qK481ABbvDJaojdNQbJA6GazioV3EgRMmBYDn7gwKWDaASQjxZp5OxLzCAfUEK9oco2a9XcyBcy4EIHbUROvaGS/xXiIqXtXL+8O/fpq+v7++mo62ND7//Mt/VKSgKUrJbr6UyXMeBCB0HwrXs16vZH6JkX5CCfYEB1OlkCCGedDsvCvBUrSSjTpJRpwugLlDBvmAl+/Ua9odp2R+uoy5ch0Ov5XfBKn6ZlU5vb+899PT0/FWcPdHE/7z4bb4bouNVtYz3glXs1WupCdexP1znmqnXsC9YSV2gwuUkyaiVZAghnlouwNeqNf7UaPyp0cqokeTUBiqoDVZRF6KmTq9lX5hEpV7LB4FqThTvobu7exGXzp2j7r1fc8yxlzNHjnDp/Hna29pobTzG8Ypyan713/z2m8/xg5V2XlT48bpKxg5Jwa5gDWWhErVhEvvCJOr0WupC1NQGq6gNVFAjyV1OGn+qNf4IIb62XICnK9V+VKp8qdL4U6WVUS3JqQ5UUBOsoiZETWWIht3BKnYkxDDQ00NnZ+cCrU3HeX2lnVcUfrwk9+VFuS/fCvDhWwE+/Jvcl5fkvnxP4ccPVf4UaeX8VqdkV7AKR4iGylANtXottXotNaEaakLU1ASrqA5UUC3JqdLKqNL4U6nypVLthxDi6eUCPFOp8qNC4UOl0pdKlR+VGhlVWjkVkpwSnYJdkoJfR4bT+XErXV1ddHR0cPnyZRxvbeflkCC2K/35vaTg95KC9yUFv9G4eF+r4HeSgj9ICnbrlBQHqigNUlERpKY6+C6CVC4ClVRJcqq0cio1MpeL0tflpvJDCPHM0gAaIcSz5XJfygJ8KJf7Uq7wo1zpj0MlY6dSxq+1Smp/+Dojvb10dXVxqv4gH776Kq/Fx/FdPx9+rpCxU6PAISkpdeOQlJTctV0mqajQqahcDknpQqugQiOnQi2nXCWjXOnvcrnLTQjxrNt5UYCvl8p9cci8cci8KQ3woVTuy265L+/KfHgtysg7hQX8OHkdL4WF8C2fFbzi58WbAb78VuHPH9UBODRyyv8OytQBlKkCKFPKKFP6U6rwo1TuS2mAzx0vV4CvLxfgOYfMhxLfFZT4eVHi54XD35s9/t78xs+bt31X8LafF//p502Rvy87ZL78PsCPnXJ/iuX+OBQySv9u/F3I/XAE+OKQ+eDw917wKfFdgUPmgxDiuWUD7PX3odj7QRc+K1z4erHL14udvl7s9PNmp583u/x92O3vQ7HMl5J/IHv9fVz4ebvw9brj4fba6798ALUQ4utF3l6Te1Z8hQW8HmSP14N85L3iDj5enyx3zbo9/26nIm+vSfdPSH13AJkQ4pH8L32x8SM/H/Z4PcjuB7/sYsVXFrHQ9BNi6bzbHnu8HuQjPx/yv/TFRiHEI2LJY5UvCyHiPyfEGzkPPNDyMx+fq8UKBcVqFXs1Gkp0Eo6gIByhIZTq9ZRFhFNmMFBuiqTCbKYiOopKq5Wq2Biq7Xaq4+OoWZlAzapEFysTqI6Po9pupyo2hkqrlYroKCrMZspNkZQZDJRFhFOq1+MIDcERFESJTmKvRkOxWkWxQsHPfHyu5jzwQMvnhHhDCBHvdl6ozwjXY4r1QogXhBBFQogPPmUUud3Wu10/I5bUPwnXfxIMQogEIcTaTxkJbjcft6vH+mchxBeEEF/6lPEFt9ui+l9YIuFHAZ9xtQAAAABJRU5ErkJggg%3D%3D%3C%21--%25ErrorImg%25--%3E%0A%3C%21--%25WarningImg%25--%3Edata%3Aimage/png%3Bbase64%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%3D%3D%3C%21--%25WarningImg%25--%3E%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

coffeebreak
Moon Magic practitioner
Moon Magic practitioner
Posts: 2476
Joined: 2015-09-26, 04:51
Location: U.S.

Re: Customize taskbar needs screenshot feature as a choice

Post by coffeebreak » 2020-09-13, 04:32

Page Capture
For whoever wants to know the author/source for the Custom button suggested above...

The button AFAIK is by Odyseus, found here and here.

User avatar
New Tobin Paradigm
Knows the dark side
Knows the dark side
Posts: 7887
Joined: 2012-10-09, 19:37
Location: Space, maybe..

Re: Customize taskbar needs screenshot feature as a choice

Post by New Tobin Paradigm » 2020-09-13, 06:39

letmeindude wrote:
2020-09-13, 00:15
I use a button for that[...]
You also use Windows XP thus everything you say, do, or suggest is automatically suspect. I SUGGEST no one listen to an invalid user.
Image
- Mars will never be free until the sands run red with Earther blood! -

Image

coffeebreak
Moon Magic practitioner
Moon Magic practitioner
Posts: 2476
Joined: 2015-09-26, 04:51
Location: U.S.

Re: Customize taskbar needs screenshot feature as a choice

Post by coffeebreak » 2020-09-13, 07:21

New Tobin Paradigm wrote:
2020-09-13, 06:39
I SUGGEST no one listen to an invalid user.
Leaving aside the recommender's computing environment...

I've used the Page Capture custom button, and can attest that it does work.

coffeebreak
Moon Magic practitioner
Moon Magic practitioner
Posts: 2476
Joined: 2015-09-26, 04:51
Location: U.S.

Re: Customize taskbar needs screenshot feature as a choice

Post by coffeebreak » 2020-09-14, 16:45

context wrote:
2020-09-12, 16:59
taskbar
To clarify: By "taskbar", you actually mean the browser's status bar, correct?


context wrote:
2020-09-12, 22:09
the screenshot feature in the developer tools
context wrote:
2020-09-12, 16:59
But having to have the Developer Tools active on the desktop is cumbersome.
And to further clarify...
Are you speaking of the toolbar button with a "camera" icon that lives inside the devtools?
devtools-screenshot-button.png
Or are you speaking of the screenshot function available through the developer's toolbar?
gcli.png
gcli-screenshot.png
If the feature you mean is the first one, the toobar button with camera icon, please be aware that you can simply toggle it in and out of view (toggle the devtools) with the F12 key.

Michaell
Fanatic
Fanatic
Posts: 145
Joined: 2018-05-26, 18:13

Re: Customize taskbar needs screenshot feature as a choice

Post by Michaell » 2020-09-15, 16:25

The Page2Image button for PrefBar still works. Excellent quality, better than some separate extensions I've tried. There is a size limit; so really long pages will get cut off. I don't know how that's measured.

All his old Prefbar buttons may disappear later, but I checked and it is still available for now.
http://prefbar.tuxfamily.org/buttons.html
Of course, similar to Custom Buttons, you need the Prefbar extension installed. That's available in Classic Addons Archive. To make the best use, customize the displayed buttons to just the ones you want. Then if short enough they can be moved to another toolbar, so PB can be hidden. Or just use it's built-in menu button. And the text labels can be edited to be really short, like p2i for example.
Win10home(1709), PM28.13port

coffeebreak
Moon Magic practitioner
Moon Magic practitioner
Posts: 2476
Joined: 2015-09-26, 04:51
Location: U.S.

Re: Customize taskbar needs screenshot feature as a choice

Post by coffeebreak » 2020-09-15, 16:46

Michaell wrote:
2020-09-15, 16:25
Prefbar extension [...]. That's available in Classic Addons Archive.
Also available on PrefBar's site: http://prefbar.tuxfamily.org/archive.html

And please be aware that PrefBar (and Custom Buttons) do not target Pale Moon, so will need a PM application block added.

Michaell
Fanatic
Fanatic
Posts: 145
Joined: 2018-05-26, 18:13

Re: Customize taskbar needs screenshot feature as a choice

Post by Michaell » 2020-09-15, 17:19

Actually, the sort-of-forked/updated version of Custom Buttons does have the PM target. You can find it from the CB forum. The author was here but not treated nicely so I don't want to stir that up. (I think the link is in an old thread here, but search engine is probably quicker.)

And for those extra buttons for PrefBar, you need to download then use import from the PB Customize right click context menu. And Codefisher may have P2I as a button on his site if it is still functioning. His site would add PM target if you choose.
Win10home(1709), PM28.13port

coffeebreak
Moon Magic practitioner
Moon Magic practitioner
Posts: 2476
Joined: 2015-09-26, 04:51
Location: U.S.

Re: Customize taskbar needs screenshot feature as a choice

Post by coffeebreak » 2020-09-15, 17:58

Michaell wrote:
2020-09-15, 17:19
the sort-of-forked/updated version of Custom Buttons does have the PM target.
Off-topic:
That would be srazzano's version.
That is not the Custom Buttons recommended earlier in this thread (which I also use and would recommend to anyone).

For my part... I've tried srazzano's version in the past, thoroughly disliked it, and don't plan to discuss it here further.

People should be aware btw that srazzano has been banned from the Pale Moon Add-ons Site for good reason.

context
Fanatic
Fanatic
Posts: 198
Joined: 2012-07-22, 18:56
Location: USA Texas

Re: Customize taskbar needs screenshot feature as a choice

Post by context » 2020-09-20, 18:47

Upon checking this thread, I'm a bit surprised at the confusion about what I'm suggesting.

I'm adding this image as further clarification. And to reiterate: since the feature exists in PM, all that's needed is a button to access it.
PM Request.png

User avatar
RealityRipple
Fanatic
Fanatic
Posts: 206
Joined: 2018-05-17, 02:34
Location: Los Berros Canyon, California
Contact:

Re: Customize taskbar needs screenshot feature as a choice

Post by RealityRipple » 2020-09-20, 18:57

The developer tools button calls code that only exists and functions while the developer tools is open. It's literally impossible to make a button call the exact same code when the developer tools aren't open.

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 27909
Joined: 2011-08-28, 17:27
Location: Tranås, SE
Contact:

Re: Customize taskbar needs screenshot feature as a choice

Post by Moonchild » 2020-09-20, 19:03

To clarify: The developer tools components are not available to the rest of the browser UI. This is because the developer tools are a super special snowflake that creates its entire structure and UI when the tools are opened. It would have been possible if the tools were normal static resources like everything else, but it's not, and it's really not within our capacity to completely rewrite the tools from the ground up in a normal way.
"There will be times when the position you advocate, no matter how well framed and supported, will not be accepted by the public simply because you are who you are." -- Merrill Rose
Image

User avatar
New Tobin Paradigm
Knows the dark side
Knows the dark side
Posts: 7887
Joined: 2012-10-09, 19:37
Location: Space, maybe..

Re: Customize taskbar needs screenshot feature as a choice  [Closed]

Post by New Tobin Paradigm » 2020-09-20, 19:09

There are a couple Firefox targeting screenshot extensions already and I think one for Pale Moon with more on the way. So use them.
Image
- Mars will never be free until the sands run red with Earther blood! -

Image

User avatar
back2themoon
Board Warrior
Board Warrior
Posts: 1806
Joined: 2012-08-19, 20:32

Re: Customize taskbar needs screenshot feature as a choice

Post by back2themoon » 2020-09-21, 07:29

Doesn't the use of external tools (and Print Screen) reduce the image capture quality? Could be wrong, but it seems the internal tool provides the best possible quality. I wouldn't trade it for a Toolbar button. F12 is perfectly fine, unless you often need it right away. Also, on large scrolling captures external tools often result in broken "continuity" when joining the whole thing. Developer Tool solves that, too.

From what I'm reading here, extensions would also count as "external tools" since they wouldn't have access to the Developer Tools code. Or would they?
Safe Mode / clean profile info: Help/Restart in Safe Mode
Information to include when asking for support - How to apply user agent overrides
How to download videos

Windows 10 Pro • Pale Moon x64 • Interlink x64 • Emsisoft Anti-Malware

User avatar
RealityRipple
Fanatic
Fanatic
Posts: 206
Joined: 2018-05-17, 02:34
Location: Los Berros Canyon, California
Contact:

Re: Customize taskbar needs screenshot feature as a choice

Post by RealityRipple » 2020-09-21, 07:49

For Print Screen, it depends on the OS. Windows takes a pixel-for-pixel shot and saves it to the clipboard, so there's absolutely zero loss. Unless you press the Windows Key and Print Screen Key at the same time, then it saves it to a Screenshots subfolder in your Pictures folder as a PNG. Linux usually launches a screen capture app that tends to have JPEG as the default save format. And... I don't know anything about Mac.

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 27909
Joined: 2011-08-28, 17:27
Location: Tranås, SE
Contact:

Re: Customize taskbar needs screenshot feature as a choice

Post by Moonchild » 2020-09-21, 09:52

back2themoon wrote:
2020-09-21, 07:29
Doesn't the use of external tools (and Print Screen) reduce the image capture quality? Could be wrong, but it seems the internal tool provides the best possible quality.
No it doesn't, and yes you are wrong.

Fireshot which I always use myself results in a full capture. See attach (in zip because the forum would resize it to the 4000 pixel max, reducing quality)

That by the way does have a toolbar button.
Might be a little heavy with its internal editor and annotation tool but usually that's what you want to do with screenshots anyway: clip/crop/annotate/etc.
Attachments
FireShot Pro Screen Capture #235 - 'Customize taskbar needs screenshot feature as a choice - Pale Moon forum' - forum_palemoon_org_viewtopic_php_f=13&t=25216#unread.zip
(778.38 KiB) Downloaded 7 times
"There will be times when the position you advocate, no matter how well framed and supported, will not be accepted by the public simply because you are who you are." -- Merrill Rose
Image

User avatar
back2themoon
Board Warrior
Board Warrior
Posts: 1806
Joined: 2012-08-19, 20:32

Re: Customize taskbar needs screenshot feature as a choice

Post by back2themoon » 2020-09-21, 10:15

Compared your Fireshot screenshot with an internal one. Zoomed in. The internal looks notably better. The Fireshot is full of artefacts similar to these. You attached a .jpg though (not comparable to .png) and note I wasn't only talking about correctness of long captures.
Safe Mode / clean profile info: Help/Restart in Safe Mode
Information to include when asking for support - How to apply user agent overrides
How to download videos

Windows 10 Pro • Pale Moon x64 • Interlink x64 • Emsisoft Anti-Malware

Post Reply