Mozilla Home
Privacy
Cookies
Legal
Bugzilla
Browse
Advanced Search
New Bug
Reports
Documentation
Log In
Log In with GitHub
or
Remember me
Browse
Advanced Search
New Bug
Reports
Documentation
Attachment 9210611 Details for
Bug 1700003
[patch]
1700003-domi_2_0_17_2-2538.patch
1700003-domi_2_0_17_2-2538.patch (text/plain), 1.29 MB, created by
Frank-Rainer Grahl (:frg)
(
hide
)
Description:
1700003-domi_2_0_17_2-2538.patch
Filename:
MIME Type:
Creator:
Frank-Rainer Grahl (:frg)
Size:
1.29 MB
patch
obsolete
># HG changeset patch ># User Frank-Rainer Grahl <frgrahl@gmx.net> ># Date 1513014354 -3600 ># Mon Dec 11 18:45:54 2017 +0100 ># Node ID 262eacbb8de0f634239e4466065cac7293d405ad ># Parent eeb6ac2fef1a362d5082197874a2e72b42c587a5 >Bug 1700003 - Intial DOMi 2.0.17.2 checkin for SeaMonkey 2.53 branch. r=IanN a=IanN > >(NOT PART OF BUILD) Document Inspector >* * * >(NOT PART OF BUILD) Document Inspector >* * * >yet another try to fix the rep.; not part of build, a=leaf >* * * >not part of build; fixing Makefile rules to have TABS, r=hewitt >* * * >famous last words -> "NOT PART OF BUILD" >* * * >Enables deletion of nodes in tree, inspecting of <browser> and <iframe> documents. (Not Part of Build) (No small animals were injured in the making of this checkin) >* * * >UIEvent button property is incorrect according to the DOM2 spec. Changing values to 0, 1, 2 (left, middle, right mouse buttons respectively) from 1, 2, 3. |event.which| continues to use the old values for backwards compatibility. This affects future xbl, js, and c++ event button checks so please see the newsgroups for more info (60703). r=timeless sr=jst >* * * >The rest of 70755. >* * * >Fix for 71262 and 71485, r=jag, srs=shaver on 71262 and hewitt on 71485 >* * * >Bug 65428 language="javascript" should be type="application/x-javascript" >r=ksosez@softhome.net a=ben >* * * >fix bug 70747 [XUL Syntax] Replace <textfield> with <textbox> >r=blake, a=ben >* * * >Fixing 70746: major xul syntax changes. If you use xul, this WILL affect you! Read n.p.m.xpfe for details on the changes and how you can fix your code. r=hewitt sr=hyatt, ben >* * * >Making this file compile on Mac. Not part of default build. >* * * >Use more efficient command structure, refactor commands, broadcasters and keys, remove unused attributes, do some other optimization (72923). Landing navigator part only; this should help new window opening and some other areas. r=ben sr=hyatt >* * * >bug 70810 [XUL Syntax] Change tab syntax - another of the XUL 1.0 changes >r=ben, sr=hyatt >* * * >Set EXPORT_LIBRARY=1 in all pertinent Makefile.ins. Allows us to build the final link list as we traverse the tree. Bug #46775 >* * * >Check in for Ron Guilmette. r=shaver, sr=waterson. For intl r=nhotta. Changes for NS_IMPL_NSGETMODULE. bug #46775. >* * * >Fixing potential bustage in access-builtin, inspector, and transformiix (adding REQUIRES, adding newlines, etc.) so they can be added to --with-extensions=all. r=cls@seawood.org sr=hewitt@netscape.com b=75924 >* * * >Change true and false to PR_TRUE and PR_FALSE to fix AIX and OS/2 bustage from adding inspector to --with-extensions=all. b=75924 >* * * >Attempt to fix AIX bustage by linking against gkgfx and gkconshared_s (ugh!). >* * * >Fix creation of two copies of the archive resulting from a space after the LIBRARY_NAME line. r=cls@seawood.org b=75924 >* * * >Fix potential bustage pointed out by mkaply - "$(LIB_SUFFIX)" rather than ".a". b=75924 >* * * >fix for 78010 (implement nsIClipboardHelper). r=pavlov, pinkerton, hewitt, sr=hyatt >* * * >Replace chrome:: target with install::. Using chrome:: was causing |make -j3 install| builds to fail to execute the chrome:: target due to a suspected bug in gnu make. (|make MAKE='make -j3' install| works fine.) >* * * >No bug - need PR_CALLBACK to build inspector on OS/2 >* * * >83595 - fix inspector style bustage, sr=hyatt >* * * >No bug >r=cls >Need SHORT_LIBNAME on OS/2 >* * * >Dumb OS/2 only bustage. I messed with the wrong short name. >* * * >Fix bustage from scc's checkin for bug 85271. r=scc >* * * >Fix bustage from scc's checkin for bug 85271. r=jag,scc >* * * >Replaced NO_SHARED_LIB & NO_STATIC_LIB with BUILD_SHARED_LIBS, BUILD_STATIC_LIBS, FORCE_STATIC_LIB & FORCE_SHARED_LIB. Added FORCE_USE_PIC. >Changes allow us to have a finer control over which parts of the tree are built with PIC. Part of the static build branch landing. >Bug #46775 r=mcafee a=leaf >* * * >Fix bad getters on nsIDocument and nsIScriptContext to use out params rather than return |AddRef|ed pointers. b=81289 r=jaggernaut sr=jst a=asa >* * * >Land STATIC_BUILD_20010612_BRANCH, which supports building mozilla with components statically linked into the executable, as well as 'meta modules' that combine components into uber-DLLs. >* * * >Landing url parsing branch. 73845. r=alecf@netscape.com, sr=darin@netscape.com, a=blizzard@rednat.com. >This fixes many crashes caused by illegal uses of the nsStdURL. >This also allows a plugable protocol to provide their own url parser. >* * * >Bugzilla Bug 70857 [XUL Syntax] Replace <boxDerivedTag align="horizontal|vertical"> with ><boxDerivedTag orient="horizontal|vertical"> >patch by andersma@luther.edu r=timeless sr=blake >* * * >Header include dependency cleanup. b=64023 r=jag rs=brendan >* * * >84230 - DOM Inspector revival, rs=hyatt >* * * >84230 - DOM Inspector revival, rs=hyatt >* * * >84230 - DOM Inspector revival, rs=hyatt >* * * >adding newline to fix hp-ux bustage >* * * >OS/2 build bustage >* * * >Adding imglib2 to REQUIRES to fix MOZ_TRACK_MODULE_DEPS (senna tinderbox) bustage. >* * * >OS/2 bustage and tab fixes - add PNG_LIBS to EXTRA_DSO_LIBS >* * * >We need ZLIBS as well >* * * >Adding mimetype and exthandler to REQUIRES to fix MOZ_TRACK_MODULE_DEPS (senna tinderbox) bustage. >* * * >Add "imglib2" to REQUIRES to fix Senna bustage >* * * >Bug 73353: clean up the REQUIRES lines in Makefiles. >* * * >Fix for 71471. r=blake, sr=hewitt >* * * >93193 - cleaning up after align/pack xul box model changes, r=blake, sr=hyatt, 90741 - replacing box with hbox/vbox (from andersma@luther.edu), r=hewitt, sr=hyatt >* * * >Fix for 71106. r=jag, sr=jst >* * * >bug 40670 [URL: resolution of protocol:/path] checking in the groundwork to have an easy fix if we ever decide to support these kind of deprecated relative urls. For that a new attribute URIType is added to nsIProtocolHandler and its implementations to store some protocol/scheme dependend information to have enough information to allow correct parsing. r=darin@netscape.com sr=rpotts@netscape.com >* * * >Bug 94458: change dynamically registered listeners to "create" and "destroy" events to listen to "popupshowing" and "popuphiding". r=bryner, sr=hyatt >* * * >Part of bug 95475. >* * * >Fix linux bustage. >* * * >Update REQUIRES so that we do not accidentally build using the system headers of jpeg,zlib,png,mng when we are supposed to be building using the Mozilla copies of these libraries. >Bug #97386 r=mcafee a=dbaron >* * * >83222 - offline:Mac - GUI - offline indicator hidden in message window, r=ben, sr=hyatt, a=dbaron >* * * >fix build bustage from bug #97227 >* * * >Backing out unapproved checkin for bug 97227. a=brendan,blizzard >* * * >Undoing backout of bug 97227 because valeski and rpotts insist. I guess drivers aren't doing approvals after all. >* * * >r=dbaron, sr=dougt. 97667. nsIInterfaceRequestor is now frozen. nsIInterfaceRequestorUtils.h is now required if you want to use do_GetInterface() for convenience. The two were split because the stuff that is now in nsIInterfaceRequestorUtils.h wasn't ready for freezing. Also, .idl files should just contain interface defs anyway. >* * * >Bug 97571: Any <label> in <groupbox> becomes <caption> per XUL 1.0. r=ben, sr=hyatt >* * * >#76856 >Night of the Living Dead CVS files - rekilling files that got changes made after they were killed >* * * >Clean up REQUIRES lines, put content in its own module instead of in layout's, r=cls. >* * * >checking bbaetz's patch for bug 89500 "SOCKS: only http|https re-directted in (post Mozilla 0.9.2)" >patch=bbaetz, r=dougt, sr=darin >* * * >Bug 73353: move gfx from module layout to module gfx and fix up REQUIRES lines. r=cls >* * * >Bug 73353: splitting the modules on the REQUIRES lines in Makefile.in across multiple lines to more clearly show the changes made. sr=alecf >* * * >Bug 99876: [XUL Syntax] <spring/> --> <spacer/>, r=alecf, sr=hyatt. >* * * >bug #98089: ripped new license >* * * >Oops. >* * * >97574 - Implement toolbarbutton and kill menubutton (except outliner.css), r=blake, sr=hyatt >* * * >97574 - implement toolbarbutton, kill menubutton, r=blake, sr=hyatt >* * * >Bug 99962 - inspector assertions when flashing a DOM node with display: none. r=hewitt, sr=hyatt. >* * * >License changes, take 2. Bug 98089. mozilla/extensions/. >* * * >Bug 101429, bad argument to function, fixes assertion and potential crash. r=harishd, sr=hewitt. >* * * >Bug 100476: Convert uses of member functions ToNewUnicode, ToNewCString and ToNewUTF8String to their global versions and remove support from nsCString and nsString. r=dbaron, rs=scc >* * * >102626 - can't switch views in inspector, r=blake, sr=hyatt >* * * >95876 - Support <button type='checkbox'/>, r=blake, sr=hyatt >* * * >Bug 45797: replace remaining uses of deprecated macros NS_IMPL_QUERY_INTERFACE and friends with NS_IMPL_QUERY_INTERFACE1 and friends and remove the deprecated macros. r=jag sr=alecf >* * * >Fix for bug 75572. Separator support in outliner. >r=waterson, sr=hyatt >* * * >fixing build bustage >* * * >bah, stupid build problems >* * * >nsIObserver and nsIObserverService API freeze. r=rpotts@netscape.com, alecf@netscape.com. bug 99163 >* * * >Fix for bug 103883. Add weak ref support for prefs observers to help reduce MLK cycles with preferences. r=ccarlen, darin, gordon, hewitt, mstoltz, srilatha, sspitzer. sr=alecf. >* * * >cking out bnesse at his request since he found conflicts with dougt's >checkin >* * * >102241 - [XUL 1.0] use selectedIndex on deck and tabpanels, r=blake, sr=hyatt >* * * >70751 - [XUL Syntax] XUL docs loaded in iframes should use <page>, r=blake, sr=hyatt >* * * >Bug 105973: s/Observe/observe/ >* * * >Fix for bug 103883. Add weak ref support for prefs observers to help reduce MLK cycles with preferences. r=ccarlen, darin, gordon, hewitt, mstoltz, srilatha, sspitzer. sr=alecf. >* * * >Fix for bug 103883. Add weak ref support for prefs observers to help reduce MLK cycles with preferences. r=ccarlen, darin, gordon, hewitt, mstoltz, srilatha, sspitzer. sr=alecf. >* * * >fixing bug 106199. r=ben sr=hyatt >* * * >106132 - DOM Inspector broken by changes to Pref API, r=jag, sr=hyatt >* * * >Fix inspector bustage. >* * * >105751 - splitter should set orient attribute on itself based on parent orientation, r=jag, sr=hyatt >* * * >Fix for bug 103883/106273. Bad JS broke theme switching. r=jag, sr=alecf >* * * >Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc >* * * >b=107823, r=ccarlen, sr=brendan > >--pete >* * * >Bug 107703. Fixes some of the crashes in DOM inspector. r=timeless, sr=hewitt >* * * >107642 - XUL syntax/cleanup landing. Fixes 94470, 96008, 96019, 76800, 102637, 80399, 108303, and removes over a thousand unnecessary or nonsensical attributes. Also fixes 108302, 102366, 102367, 105815. r=sspitzer,cmanske on appropriate parts sr=ben >* * * >106637 - DOM inspector not working with tabbrowser, r=jag, sr=hyatt >* * * >Tweak XP_MACOSX ifdefs to fix keyboard shortcuts (partly), context menus, and hidden window behavior and build the mac classic skin in the Mach-O build. b=109165 r=pinkerton sr=beard >* * * >DOM Inspector update - tons of crash fixes, js error fixes, performance and usability improvements, r=jag, sr=hyatt >* * * >DOM Inspector update - tons of crash fixes, js error fixes, performance and usability improvements, r=jag, sr=hyatt >* * * >Clean up REQUIRES lines. r/sr=alecf >* * * >Renaming 'install' build phase to 'libs' >Bug #56601 r=pavlov >* * * >Bugzilla Bug 107823 change nsIFile >to use 'Modified' instead of 'Modification' >r=akkana sr=brendan >* * * >fix inspector >* * * >bug #94205 (r=adamlock@netscape.com, sr=jst@netscape.com) nsIWebNavigation interface changes... >* * * >112772 - DOM Inspector leaks a whole document, r=dbaron, sr=hyatt >* * * >Make DOM inspector scroll to elements before flashing them. Bug 112817, >r=hidday@geocities.com, sr=hewitt >* * * >b=112515, r=douft, sr=jst >remove spawn method from nsIFile. > >/** > Warning nsIFile API change > */ > >--pete >* * * >113353 - DOM Inspector needs chromeclass toolbar, r=me >* * * >Re-enable inspector showing positioning values. Bug 113863, r=timeless, >sr=hewitt >* * * >114258 - pref panel header binding, dialogoverlay.css shouldn't have to be included in each panel. r=ben sr=hewitt > >114268 - unnecessarily setting localname attribute on all pref-based elements when loading pref panels. r=ben sr=hewitt >* * * >Make OS/2 use the win32 build changes and finish LIB_PREFIX substitution. >Thanks to Javier Pedemonte (pedemont@us.ibm.com) for the patch. >Bug #58981 r=cls >* * * >Remove timer from REQUIRES. r=pavlov >* * * >Landing the rest of the win32 gmake changes: >* Adds Makefile.ins to win32 specific dirs >* Adds WINNT ifdefs to Makefile.ins >* Causes NSPR to be compiled with --with-mozilla >* Misc general Makefile.in cleanup > >Bug #58981 r=mcafee >* * * >Fix for 113477. Group outlinercols. r=bryner sr=hyatt >* * * >XUL/theme simplification changes - removing unnecessary boxes and re-writing large portions of the themes to use new -moz-border-colors and -moz-image-region css features. Also cleans up the classic skin quite a bit for both mac and win. Fixes bugs 113024, 113043, 113585, 113586, 115943, 113643, 114475, 99787, 110214, 113977, 113966, 114802, 64894, 90724, 103173, 103199, 103298, 110442, 111472, 111989, 113027, 113041, 109180, 109204, 81581, 81903, 103324, 110108, 114540, and probably more I forgot to mention. r=ben, sr=hyatt >* * * >Bug 116499 - convert nsIOutlinerView::GetCellText to return an nsAString, so we can avoid copying strings. r=blake, sr=jag. >* * * >Bug 117720 - Can't inspect XBL properties >patch by neil@parkwaycc.co.uk r=timeless sr=hewitt >* * * >Bug 117713 - Want grippy on panels splitter >patch by neil@parkwaycc.co.uk r=bz sr=hewitt >* * * >80834 - [outliner scrollbar] if inbox has less than one page of messages, it will come up with a box where the scroll bar is > >80548 - outliner scroll bar "disappears" in 3 stages > >111101 - No scrollbox / slider / thumb in thread pane scrollbar > >116269 - white scrollbars briefly show up in folder pane > >116432 - Sometimes the twisty won't update after a click > >116855 - Modify outliner builder syntax to match outliner content model >r=waterson, sspitzer, blake >sr=hyatt > >99715 - convert category tree to use outliner >r=hixie >sr=blake >* * * >Fix for 115748, r=bryner, sr=sspitzer >* * * >Rest of tree-wide cleanup for bug 100212 - switch last consumers of nsIFile.URL r=dougt, sr=darin >* * * >Fix assertions when getting computed -moz-outline-width and >-moz-marker-offset and enable these in Inspector. Bug 114086, r=fabian, >sr=attinasi >* * * >fix bug 118044, windows static build bustage. sr=waterson r=darin, timeless >* * * >119168 - DOM Inspector DOM tree view doesn't load, r=jag, sr=bryner >* * * >Fix bug 107270 >Reduce nsCSSDeclaration footprint >r=dbaron, sr=hyatt >* * * >Fix inspector link errors by adding a method on nsICSSStyleRule that forwards GetValue to nsCSSDeclaration. >* * * >Fixes for: > >94653 - can't right align text in outliner cell >95730 - White block displays/artifacts in the highlight area after Move/Drag mail to folder. >112238 - [RFE] Outliner widget should support line-through >116855 - Modify outliner builder syntax to match outliner content model >118093 - Make -moz-image-region work in the outliner >118113 - Too little space between pref category tree and pref page >118154 - Category now has a column picker >118647 - Memory leak of 52 bytes from 1 block allocated in nsOutlinerBodyFrame::CheckVerticalOverflow >118660 - left arrow no longer moves to parent category >119751 - Branches are open by default and then closed after launch. > >- outermost <outlinerchildren> has "-moz-box-flex: 1" by default > and it actaully replaced <outlinerbody> >- all event handlers moved on <outliner> >- content builder, outliner builder and content view use <outliner> as root > element >- nsIBoxObject has a new attribute "element" >- all CSS rules outlinerbody:foo replaced with outlinerchildren:foo >- drop feedback is now skinable > >r=waterson for the changes in mozilla/content >r=sspitzer on the mailnews parts >r=blake on the bookmarks/history >r=bryner on the OutlinerBodyFrame and OutlinerContentView changes > >sr=hyatt,hewitt >* * * >Bug 118528 Access Violation [@inDOMView::AppendKidsToArray] [aKids==0]->GetLength >r=bzbarsky@mit.edu sr=hewitt >* * * >Bug 119051 duplicate symbol breaks win32 static build >create and use nsIIOService::getQueryAttributeValue >r=dbradley sr=darin >* * * >Use dynamic library & xpidl_module names from nmake build for win32 gmake builds for compatibility. >bug #58981 sr=jag >* * * >Fix scrolling to element in inspector to scroll only when really >needed. Bug 120947, r=doron, sr=hewitt >* * * >Human-readable tooltips for nodetype in inspector. Bug 113793, patch by >Christopher Aillon <caillon@returnzero.com>, r=bzbarsky, sr=hewitt >* * * >Fix "static" build support for win32 gmake builds. >Bug #58981 r=bryner >* * * >Bug 117716â XBL Bindings Property radio group should have horizontal orient >patch by neil@parkwaycc.co.uk r=bzbarsky@mit.edu sr=hewitt >* * * >Making the nsModuleComponentInfo data const; bug 74803. r=dp, sr=waterson >* * * >Bug 106053, remove unused XHTML namespace declarations, and fix incorrect namespace usages. r=harishd, sr=hewitt. >* * * >Use @ so that regchrome commands aren't echoed. >Thanks to Stephen Walker <walk84@yahoo.com> for the patch. >Bug #124328 r=cls >* * * >Create a small service in the content library to allow inspector to avoid bad link-time dependencies on CSS code. b=79091 r=attinasi,beard sr=shaver >* * * >Fix Windows bustage. b=79091 >* * * >Fix for 123109. crash when trying to view XBL Bindings in DOM Inspector. >- don't destroy outliner body frame for now >r=bryner, sr=hewitt, a=shaver >* * * >"Find nodes fail sometimes". Patch by caillon@returnzero.com >(Christopher Aillon), r=bzbarsky, sr=hewitt, a=roc+moz >* * * >#128663, "Exit" menuitem doesn't work. >r=bzbarsky, sr=hewitt, a=asa >* * * >fixes bug 124042 "support internationalized URIs" r=dougt, sr=alecf, a=asa >* * * >- Implement the :checked CSS pseudoclass which maps to the "selected" property on option elements. >- Eliminate the _moz-option-selected attribute; move the actual selected state into the option content node. >- Change all users of _moz-option-selected to use :checked. >- Add a third parameter to nsIDocument[Observer]::ContentStatesChanged to indicate which pseudoclass changed, this is used for optimizing handling of :checked state changes. > >Bug 128947, r=dbaron, sr=jst, a=asa. >* * * >Remove now redudant REGCHROME calls. >Bug#129456 r=bryner a=asa >* * * >bugzilla 129140 r=hwaara, sr=hewitt, a=asa - updating skinversion to 1.0 >* * * >b=128508 "freeze nsIChannel nsIRequest" r=gagan, sr=rpotts, a=asa >* * * >Convert users of nsAReadable[C]String and nsAWritable[C]String typedefs to [const] nsA[C]String. b=131899 r=scc sr=jag a=asa >* * * >fix linux static build installer. bug 128507, bug 130995, bug 130998 r=seawood sr=dveditz a=asa (verbal) >* * * >bugs 110156, 110155 >Removing support for <outliner> tags >Removing <tree> layout code and moving <tree> tags to outliner layout >Convert all usage of <outliner> to tree tags >Convert all usage of <tree> tags to new <tree> syntax or <listbox> >r=cmanske,varga sr=hyatt,sspitzer a=asa > >Also includes fixes by Jan Varga (varga@utcruk.sk) for bugs 132020, 133451, 131393, 115894, and 129327 >* * * >Do not set EXPORT_LIBRARY for libs that we do _not_ want in the static link list. >Bug #134012 r=rjesup sr=dveditz a=leaf >* * * >Do not define MODULE_NAME for components which are shareable even in >static builds. >b=134650 r=cls sr=dveditz a=asa >* * * >Fixing bug 52334. Making iframe's load their document even if they are not displayed. r=jkeiser@netscae.com, sr=rpotts@netscape.com, a=asa@mozilla.org >* * * >Backing out latest checkins due to them not working on linux and other unix systems with broken compilers. >* * * >Checking in the fix for bug 52334 again now that the linux crash and the scrollwheel crash has been fixed. Making iframe's load their document even if they are not displayed. r=jkeiser@netscae.com, sr=rpotts@netscape.com, a=asa@mozilla.org >* * * >http://bonsai.mozilla.org/cvsquery.cgi?module=SeaMonkeyAll&branch=HEAD&cvsroot=/cvsroot&date=explicit&mindate=1017959940&maxdate=1017960540&who=jst%25netscape.com&generateBackoutCVSCommands=1 >Backing out the fix for bug 52334 > >approved by sheriff (karnaze) and cathleen >* * * >Fix up and enable hierarchical :hover and remove the hacks that made :hover work for anchors without it. Pass mask rather than pseudo-class to ContentStatesChanged notifications. Optimize event state changes in the style system by passing state mask to HasStateDependentStyle and using it in HasStateDependentStyle implementations. b=5693 r=bryner, joki sr=hyatt >* * * >Fix the "Close" menuitem and keyboard shortcut in Inspector. r=hwaara, >sr=hewitt. >* * * >Checking in the fix for bug 52334 for the third time. This time it should stick! Making iframe's load their document even if they're not displayed. r=jkeiser@netscape.com, sr=rpotts@netscape.com. >* * * >Fix the "style rules" display for display:table elements. Bug 122557, >r=caillon, sr=hewitt >* * * >Add 'make install' target to build. It's "MRE-friendly". (See http://www.mozilla.org/projects/embedding/MRE.html for details.) >Changes: >* Added EXTRA_COMPONENTS variable to build. Use it to automagically install files into the components dir. >* Added SYSINSTALL variable. Use it install files onto the system. >* Move mozilla-config generation from configure to makefiles >* mozilla-config will now generate paths based upon the MRE-based directory layout. >* Generate mozilla script from template > >The installation heirarchy currently looks like: >$prefix -> /bin/mozilla > /bin/mozilla-config > /include/mozilla-ver/* > /lib/mozilla-ver (mozappdir) > /components > /res > /defaults > /chrome > >There is preliminary build support for MRE dirs as well though the component manager hasn't had MRE support added yet. > >$prefix -> /lib/mre/mre-ver (mredir) > /components >* * * >fixes bug 129279 "nsIFile unicode/utf8/ascii task" >r=dougt sr=alecf >* * * >Fix for bug 138299 - switch consumers of nsIWindowMediator service to use the non-RDF contractID, in preparation for bug 132175 >r=danm, sr=jag >* * * >fixes bug 142870 "nsIFile should use UCS-2 instead of UTF-8" >r=dougt sr=alecf >* * * >bug 143379 build Bustage-patch for bug 124042 broke Solaris's build, r=blizzard, sr=darin >* * * >Fix crash on "moz-bitmap:" urls with no bitmap name. Bug 143912, >r=timeless, sr=hewitt/shaver >* * * >Fix for bug 137334: DOM Inspecting the URL bar will crash. r=timeless, sr=hewitt >* * * >bug 115473 r=pavlov sr=brendan >Remove timer priorities >* * * >bugzilla 150696 - Dom Inspector needs "window" menu - r=timeless, sr=hewitt >* * * >Fix crash when looking at style rules of element matching no rules. b=141022 r=hewitt sr=waterson >* * * >Bug 114121 miFindCSSRules.accesskey definied as "Find CSS Rules..." >r=hwaara sr=jst >* * * >final part of fix for bug 132175 - switch consumers over to new interface >r=bnesse, rs=waterson >* * * >Minor cleanup of the fix for bug 122557. r=dbaron, sr=jst. >* * * >#156074, processing-instructions should be better denoted. >r=caillon, tim <riceman+bmo@mail.rit.edu> >sr=bzbarsky >a=scc > >#156072, DOM inspector omits the #document node, and also doesn't show any sibling nodes to the root element (comments, text nodes, etc.) >r=caillon, tim <riceman+bmo@mail.rit.edu> >sr=bzbarsky >a=scc >* * * >Bug 158264. Prefix showOpenURLDialog() with http://. r=caillon@netscape.com, sr=hewitt@netscape.com (also Module Owner), a=asa@mozilla.org >* * * >fix for bug 157572 - remove nsIAtom references from strings, and thus expicitly #include nsIAtom.h for consumers who are expecting it. >r=dmose, sr=jag, a=asa >* * * >Backing out fix for bug 156072 due to regression bug 158792. r=caillon/sr=jst/a=asa >* * * >bug 157624 - prep for freezing nsISupports* primitives by renaming the string classes appropriately >nsISupportsString -> nsISupportsCString >nsISupportsWString -> nsISupportsString >r=dougt, sr=jag >* * * >Bug 117564. Make Inspector flash the right spot when things are >positioned. r=caillon, sr=hewitt. >* * * >Bug 157913. Priority is "important", not "!important". r=glazman, >sr=dbaron >* * * >Fix JS object display in Inspector. Bug 160254, r=timeless, sr=hewitt. >* * * >Remove unused defines: >_IMPL_NS_HTML >_IMPL_NS_RDF >_IMPL_NS_WEB >USE_NSREG > >Patches for removing above defines contributed by Stephen Walker <walk84@yahoo.com>. >Bug #125118 r=cls sr=bryner >Bug #160397 r=cls sr=bryner >Bug #160628 r=cls >Bug #160451 r=cls sr=bryner > >_IMPL_NS_VIEW > >Patches for removing above define contributed by Brian Ryner <bryner@netscape.com> >Bug #160416 r=cls >* * * >disable mouseup/mousedown/click events during "click-to-select" so that >links and such don't trigger. Bug 116773, r=jkeiser, sr=hewitt >* * * >Bug 162461: Make inLayoutUtils::GetContainerFor use nsIDOMWindowInternal::GetFrameElement >r=bz, sr=hewitt >* * * >Bug 160936. Add type nsChangeHint for style hints. Make it a set of bits. Make sure an NS_STYLE_HINT_REFLOW always also does a repaint of the frame. r=dbaron,sr=kin >* * * >152553 - "Show Anonymous Content" menu item doesn't reflect the true state because we were checking |false != null| or |true != null| to determine state. >r=timeless sr=bzbarsky >* * * >fix bug 166085 [Assertion constructing about: URIs >[@nsAboutProtocolHandler:122]] This is a regression fix from the fix >for bug 163225. The assertions never made sense and now they are >exposed. r=bzbarsky, sr=darin >* * * >167009 - We should be using the node type constants defined on Node instead of their numerical expression. >r=glazman rs=bzbarsky a=asa >* * * >Fixes up the timer interface. b157136, r=rpotts@netscape.com, sr=alecf@netscape.com, a=rjesup@wgate.com >* * * >166917. Clean up xpcom SDK includes. r=rpotts@netscape.com, sr=alecf@netscape.com, a=rjesup@wgate.com >* * * >166947 - Copy XML (on node context menu) should encode character entities >r=timeless sr=bzbarsky >* * * >Show style rules for things that are display:none and their >descendants. Bug 166548, r=dbaron, sr=hewitt. >* * * >bugzilla bug 164174 r=suresh, sr=hewitt. Updating skin version number due to new backwards incompatibilites. >* * * >fixes bug 166792 "move nsIIOService::GetURLSpecFromFile, etc. to >nsIFileProtocolHandler" r=dougt sr=alecf >* * * >b=143046 r=rods sr=boris API change so we can create different depth nsImages >* * * >Remove gfx2 from REQUIRES globally, since we no longer export headers to a separate gfx2 module. r=cls. >* * * >Fix for bug 112534. Remove collapse grippies. >r=caillon, sr=jag >* * * >OS/2 bustage - one more PNGAPI needed >* * * >Define WIN32_LEAN_AND_MEAN globally for win32 builds. >Thanks to Stephen Walker <walk84@yahoo.com> for the patch. >Bug #172898 r=cls a=asa >* * * >bug 174989, 1.2b sucks and won't get localization - missing .dtd updates for locale version number, updating all known non-fitting locale version strings (to 1.2b), r=jbetak,sr=bzbarsky, a=asa >* * * >Bug 175853, Update localeVersion strings for 1.2 final - and do it correctly, r=jbetak, sr=bzbarsky, a=blizzard >* * * >Bug 177179 >slightly optimize inDOMView::GetNodeTypeKey >r=timeless/jkeiser sr=bzbarsky a=roc+moz >* * * >167867. Convert the unicodeToEntity functions to use regexps. >r=timeless sr=bzbarsky >* * * >Bug 153821 crash while inspecting an error window [@inLayoutUtils::GetPresShellFor] >r=caillon sr=bz >* * * >Allow the hiding of "empty" text nodes from DOM Inspector. >r=cbiesinger, sr=alecf, bug 147189 >* * * >Make sure we properly init the show whitespace nodes checkmark. >r=jkeiser sr=bzbarsky >* * * >Bug 112682 >Some rules have no parentStyleSheet. Add a null check. >r=cbiesinger sr=bzbarsky >* * * >Bug 107812 >Copying from inspector should also copy to primary on platforms that support it. >r=akkana sr=bzbarsky >* * * >177153 - Cleanup of inspector toggling code >r=timeless sr=bzbarsky >* * * >Bug 125268 Edit/Pr_e_ferences, not Pre_f_erences >patch by neil@parkwaycc.co.uk r=timeless sr=bz >* * * >Final removal of 'editorShell' from DOM inspector. b=169029, r=akkana, sr=sfraser >* * * >Bug 163137. Make DOM inspector scroll to put an element in view upon selecting it in the DOM tree view. This was previously only working for HTML elements. >r=rbs, sr=bzbarsky >* * * >Bug 147189. Part 2: Don't hide "significant" whitespace nodes. >r=bzbarsky sr=hewitt >* * * >Attempt to fix nebiros bustage by moving style struct access into nsIInspectorCSSUtils >r/a=timeless,jkeiser,#mozilla >bug 147189 >* * * >OS/2 bustage - need get() >* * * >Bug 122224 Inspect a Window submenu needs access keys >patch by neil@parkwaycc.co.uk r=timeless sr=bz >* * * >Bug 122224 Inspect a Window submenu needs access keys >patch by neil@parkwaycc.co.uk r=timeless sr=bz >* * * >Bug 180127 Inspector destructors unconditionally delete objects >r=caillon sr=bz >* * * >Bug 181808: Use macros to declare and implement nsIDocumentObserver > >r=caillon sr=bz >* * * >180551 - Add color, thickness, and invert to the flasher interface. They should not be passed around so often to its methods since they rarely change and really >belong on the interface to begin with. >r=timeless,sr=peterv >* * * >Make the CSSLoader correctly order stylesheets as they are dynamically added >and removed via the DOM. Clean up the nsIDocument stylesheet accessors. Clean >up nsIDocumentObserver stylesheet stuff a bit. Make style sheets visible in >the CSSOM (though not completely accessible) from the moment the load is kicked >off. Make us have sheet objects that can be manipulated via CSSOM even for >failed loads. Bug 107567, bug 47734, bug 57225, bug 178407. >r=sicking, sr=peterv. >* * * >Remiander of bug 169590. Hook a catch-all W3C entity converter and user-prefs for custom levels of entity-zation in the editor's '<HTML> Source' and 'Save As...' >* * * >Bug 185647 - Setting pseudo class of a closed window crashes [@ inLayoutUtils::GetEventStateManagerFor] >r=timeless sr=tor >* * * >187309 r=dougt sr=bzbarsky convert out param of nsIProcess::Run to a return value >* * * >change all localeVersion strings, as well as brand.dtd/region.dtd to 1.3b; bug 185698, r=tao, sr=blizzard >* * * >Bug 178643: Remove uses of NS_INIT_ISUPPORTS, since it is no longer needed. r=timeless sr=jag >* * * >Phase 1 of style context deCOMtamination (bug 114713). Remove all dependencies on nsIStyleContext from outside of content and layout. Make nsIFrame::GetStyleData be a non-inline virtual function when called from outside of layout, since the nsStyleContext implementation won't be available to those callers. r=dbaron, sr=bzbarsky. >* * * >Stop at the viewmanager root when computing offsets for flashing stuff. Bug >188210, r=caillon, sr=kin >* * * >Putting toolbar grippies back in. Bug 175091. >Original bug for removing them was 112534. >Please see the discussion in those 2 bugs before complaining or filling new bug reports! >r=caillon,a=UE team >* * * >187414 - Use NodeFilter where we mean it. >r=sicking sr=bzbarsky >* * * >Whitespace change to trigger rebuild of libs that depend upon zlib. >* * * >Bug 192479 DOM inspector XBL bindings not updated for xbl: namespace prefix on inherits= attribute r=caillon sr=peterv sr=alecf a=asa >* * * >Fix mach-o static builds by forcing all code that's linked into a shared lib to build with -fPIC. >Bug #194662 r=ccarlen >* * * >Eliminate libpr0n's use of prescontexts as unique keys; use documents instead >and do not hold a ref to them. Bug 190475, r=pavlov, sr=jst >* * * >bug 194924 - localeVersion update for 1.4a, r=rchen, sr=blizzard >* * * >Bug 147189. Part 3: hide ignorable whitespace nodes without frames, e.g., in between <table>\n<tr>, r=caillon, sr=bzbarsky >* * * >Adding mingw makefile changes. >Bug #134113 r=bryner >* * * >Bug 193726 Separate command execution from command stack insertion >patch by ajvincent@juno.com r=timeless sr=roc+moz >* * * >Bug 193942 >removing unused file jsObjectView.js from manifest >patch by ajvincent@juno.com r=timeless sr=bryner >* * * >Bug 132209 Many XUL documents are invalid XML (<!DOCTYPE window ...>) >patch by riceman+bmo@mail.rit.edu r=timeless sr=jag moa=caillon >* * * >fix for bug 195262: >- convert atoms to UTF8 because 99% of the time, that is what they are used for >- add support for static atoms, where the strings are declared in a large const array and not copied into the heap >r=dbaron, sr=darin > >this is an experimental landing - if there are performance issues, I will back it out. >* * * >backout my static atom patch for now until I figure out the performance loss! :( >bug 195262 >* * * >Bug 198512 FMM [@ inCSSValueSearch::~inCSSValueSearch] >r=caillon sr=heikki >* * * >landing attempt #2 for 195262 - support for static atoms, and converting atoms over to UTF8 to reduce bloat - now without performance regressions! > >sr=darin, r=dbaron >* * * >Make DOM inspector deal with a root Document object in the DOM view. Bug >201577, r=timeless, sr=peterv >* * * >bug 202312 - localeVersion update for 1.4b, r=rchen, sr=blizzard >* * * >Bug 173557 flawfinder warnings in inspector >r=caillon sr=bz >* * * >Bug 203029 <?xml-stylesheet?> in XBL can cause assertions r=caillon sr=bz a=asa >* * * >182099 - lock up on stylesheets tab double-clicking the twisty >r=varga, sr=bzbarsky, a=sspitzer >* * * >Bug 204809: <browser disableHistory=.../> -> <browser disablehistory=.../>. r=sr=a=sspitzer >* * * >204810 - Inspector does not need an nsISecurityUI object to be created for its <browser>s >r+sr=jag a=sspitzer >* * * >Fix a leak and some minor code cleanup. r+sr=jst, a=sspitzer. (205104) >* * * >Bug 150158 clean up after nsIFile.delete was renamed to .remove p=stevechapel@earthlink.net r=shliang sr=brendan a=asa >* * * >Clean up API (and its callers) for getting style data: remove unneeded null checks and switch to new inline member functions (one for each struct) that return values. b=197205 r+sr=roc a=brendan >* * * >Make Inspector localizable and use nsIPromptService for alerts >Bug 109891 >r=biesi rs=bzbarsky a=sspitzer >* * * >Bug 199566 - Inspector needs a command line handler. >The following should now work: >./mozilla -inspector >./mozilla -inspector "http://www.foo.com/" > >r=timeless sr=jst a=asa >* * * >206452 - Making new attribute and edit attribute work again. >r=ajvincent@juno.com sr=dmose a=asa >* * * >Bug 207242 styleRules.js misuses prompt service r=caillon sr=jst >* * * >Bug 153736 Warning ``reference to undefined property this.mLinkedPanel'' [xs] in file ``chrome://inspector/content/inspector.xml#panel.linkedPanel (setter)'', line 1, character 0. >r=rginda sr=bz >* * * >bug 207642 - update localeVersion for 1.5a - r=rchen, sr=blizzard >* * * >Bug 209087 >Content interface out-parameters should use ptr-to-ptrs instead of ref-to-ptrs and some small deCOMtamination. >r+sr=jst@netscape.com >* * * >Create only one CSSStyleRuleImpl per rule rather than one per comma-separated selector to fix CSSOM compliance bugs and make rule immutability easier. Store list of selectors on the CSSStyleRuleImpl, each with their own weight. b=98765 r+sr=bzbarsky >* * * >fix a couple of memory leaks in DOM inspector's PNG encoder, and clean up the interface a little. > >b=208704, r=biesi/caillon, sr=jst >* * * >DeCOMtaminate nsIFrame::GetView and SetView, and add HasView, GetClosestView, and AreAncestorViewsVisible to consolidate common patterns. b=208004 r+sr=roc >* * * >Show the root #document node in the Inspector DOM view. Highlight doctype >nodes in a different color. Bug 156072, patch by ajvincent@juno.com (Alex >Vincent), r=caillon, sr=bzbarsky >* * * >Show #document nodes in iframes. Fix up various code that assumed they would >_not_ be shown. Minor cleanup of various sorts (nsCOMArray, etc). Bug 201585, >r=caillon, sr=alecf >* * * >removing bitmap/png, screen capturing, and boxmodel colorpicking functionality from DOM Inspector. > >b=211096, r=caillon, sr=jst. >* * * >Implement the DOM interfaces for CSS style rules on a wrapper object which allows the immutable rule object to be swapped out underneath. b=188803 r+sr=bzbarsky >* * * >Fix some memory leaks in Inspector. Bug 211166, r=caillon, sr=alecf >* * * >Bug 211537 DOM Inspector not displaying full tree of nodes r=caillon sr=bz >* * * >Backout of Neil's patch for bug 211537. This was only supposed to touch 10 or so lines, not every line in each of two files. >* * * >Bug 211537 DOM Inspector not displaying full tree of nodes r=caillon sr=bz >Using correct line endings this time :-) >* * * >Move to the double-'::' notation for -moz-tree-* pseudo-elements in SeaMonkey. >Bug 211657, r+sr=dbaron >* * * >Remove hint parameter from AttributeChanged methods and simplify style hint mechanism. b=211308 r+sr=bzbarsky >* * * >Bug 212272: Switch some Substring users over to String(Begins|Ends)With. r=dwitte, sr=bzbarsky >* * * >Bump skinVersion up to 1.5, since older skins are likely to get broken by the >change to no longer support single-':' pseudo-elements. Bug 211657, r+sr=dbaron >* * * >DeCOMify GetParent/GetBindingParent/GetDocument on nsIContent. Bug 213823, >r+sr=jst >* * * >bug 214207 - update localeVersion for 1.5b - rs=blizzard, a=asa >* * * >Set MODULE in makefiles at the top of a heirarchy so that module-deps lists are more precise and builds will have the proper order if some subdirs contain other modules. >* * * >Fix build on gcc 3.4 by removing extra semicolons (bug 218551). r/sr=dbaron, a=brendan. >* * * >Don't create style rule DOM wrappers for inline style, since we are not supposed to, and ours crash when used on inline style. b=218222 r+sr=bzbarsky >* * * >Bug 219284 "nsISupports is not defined" in inspector-cmdline.js >r=caillon sr=peterv >* * * >Restore the style attribute to the style rules view. b=218222 r=caillon sr=bzbarsky >* * * >Bug 190735. Final patch for deCOMtamination of core nsIFrame methods! rs=dbaron >* * * >Fixing bustage. >* * * >Bug 220093 inCSSValueSearch incorrectly uses strings >r=caillon sr=bz >* * * >Fixing bug 215981. DeCOMtaminating nsIContent and nsIDocument some, and also some minor changes to other related interfaces. r=caillon@aillon.org, sr=peterv@propagandism.org. >* * * >Bug 220215 use XPCNativeWrapper instead of directly calling Components.lookupMethod r=caillon sr=bz >* * * >Make URIs in the style system nsIURI pointers instead of strings. b=113173 r+sr=bzbarsky >* * * >XUL doesn't implement .style; catch the exception it throws. Bug 218222 >followup-to-followup, r=caillon, sr=dbaron >* * * >Bug 221578 Double click to edit property >patch by mozbug@durys.net r=caillon sr=bz >* * * >Bug 119853 aSink.removeXMLSinkObserver is not a function >add additional QI to nsIRDFXMLSink >patch by axel hecht axel@pike.org >r=caillon sr=peterv >* * * >Bug 221988 Replace doesQI function with built-in instanceof operator r=peterv sr=alecf moa=caillon >* * * >bug 154927 - automate localeVersion updates based on milestone.txt - we'll now create all those files during compile time from .in files, r=leaf, sr=bz >* * * >deCOMtaminate nsIDocument by changing methods to use return value instead of out-params, eliminating unused nsresult return values, moving some members to nsIDocument and inlining the getters/setters. Bug 222134, r=bzbarsky, sr=jst. >* * * >Bug 224215 Edit Attribute says "Enter the attribute name" instead of "Enter the attribute value" >r=caillon sr=heikki >* * * >Bug 220891 Create Profile Wizard overhaul >patch by borggraefe@despammed.com r=neil sr=roc >* * * >Convert URL stuff in XBL to use nsIURI instead of strings. Bug 224765, r+sr=bryner >* * * >Separate locale version from Mozilla version so we do not have to bump locale version for every release. b=226377 r=kairo, bsmedberg sr=ben a=asa >* * * >Bug 133606 getAnonymousElementByAttribute now works r=caillon sr=bz >* * * >Use stable APIs in inCSSValueSearch. b=224164 r=caillon sr=bzbarsky >* * * >Bug 229806. CSS Errors in DOM Inspector. Patch by Bob Clary <bc@bclary.com> r=timeless, sr=dbaron >* * * >Beginning to land the PACKAGING_20030906_BRANCH for bug 20640. Not part of the build, yet. >* * * >Continuing to land the PACKAGING_20030906_BRANCH for bug 20640. Not part of the build, yet. >* * * >Free remaining stack items in destructor to fix leaking pretty much everything. b=230264 r=caillon sr=bryner >* * * >Eliminate nsIStyleSet as an XPCOM interface, making the implementation internal to layout. Frame constructor ownership moves to the pres shell, and the style set methods that forward to the frame constructor are gone. Rewrote style set sheet add/remove to reduce code size. For more details, see bug 64116. r+sr=dbaron. >* * * >Fix one-time leak of atoms by converting to static atoms. b=230361 r=caillon sr=bryner >* * * >General deCOMtamination of nsIDocument, nsIContent, and nsIFormSubmission. Eliminating nsIAttributeContent, and doing some URL->URI changes. r+sr=peterv@propagandism.org >* * * >Fixing bug 230840. DeCOMtaminating nsIDocumentObserver, nsIAttribute, nsIContentList, and nsIContentIterator, and doing some other cleanup. r=jonas@sicking.cc, sr=bryner@brianryner.com >* * * >Fixing bug 232503. Start using Empty[C]String() to save a bit on code-size. r+sr=peterv@propagandism.org >* * * >bug 232011 - Use the XUL preprocessor for build-time inserting of localeVersion strings, this removes contents*.rdf.in files and resurrects the contents*.rdf files, using preprocessor.pl via the jar.mn definitions >* * * >Fixing bug 233307. deCOMtaminating nsIScript* and related interfaces. r+sr=bryner@brianryner.com. >* * * >Inline TwipsToPixels and PixelsToTwips on nsIPresContext. Bug 229371, r+sr=dbaron. >* * * >Bug 121634 JS error: viewer.onpopupshowingContext is not a function >r=caillon sr=bz >* * * >bug 232928 "DOM inspector" in sidebar is not localizable >patch by Constantine A. Murenin <cnst.bmo@bugmail.mojo.ru> r=caillon sr=bryner >* * * >bug 218210 - find nodes does not work when searching for attribute >also makes search match on substrings, and makes it case insensitive >r=timeless, sr=bzbarsky >* * * >Rename {nsIDocument,nsIDocumentObserver,nsIFrame}::ContentChanged to CharacterDataChanged, since that's the only thing it's used for. Replace its nsISupports* parameter with a PRBool, since we don't need to allocate an object to pass a boolean parameter. Remove some (but probably not all) unneeded implementations on frames whose content is never a text node. b=234960 r+sr=jst >* * * >bug 234014 - Use the XUL preprocessor for build-time inserting of skinVersion strings, r=bsmedberg, sr=peterv >* * * >deCOMtaminate nsIPresContext::GetEventStateManager. Bug 229371, r+sr=roc. >* * * >Bug 236973 >Have some of DOM Inspector's treerow backgrounds alternate. >r+sr=jst >* * * >Bug 189950 Inspector should not use @mozilla.org/network/local-file-channel;1 p=ajvincent@juno.com r=darin sr=brendan a=asa >* * * >Bug 237566: Remove nsIContent::ReplaceChildAt and supportive codepaths. > >r=bz sr=jst >* * * >Make nsXULElement::GetChildNodes use the same (live) node list that >nsGenericElement uses. Bug 240633, r+sr=jst on the C++ changes, r=neil, sr=jst >on the JS changes. >* * * >Fix for bug 221619. Tree widget refactoring and enhancement. r=neil sr=bryner >* * * >Bug 236613: change to MPL/LGPL/GPL tri-license. >* * * >Don't crash if we're asked for the style rules for a node in a document with no >presentation at all. Bug 240767, r=caillon, sr=bryner. >* * * >Make click-to-select work on nodes that are more than one level down the frame >hierarchy. Bug 240892, r=timeless, sr=peterv >* * * >Bug 233441. Make nsViewManager always have a root view, you can't change it. r+sr=dbaron >* * * >Fixing bug 242734. deCOMtaminate nsITextContent. r+sr=bryner@brianryner.com >* * * >Backing out 233441. >* * * >Patch for bug 239785: "only first part blinks for elements split into multiple lines" >Contributed by Michal Ceresna <ceresna@amos.sturak.sk> >r=caillon, sr=roc >* * * >Bug 226439. Convert Seamonkey to EqualsLiteral. rs=darin >* * * >Change FlushPendingNotifications to have more granularity and update callers to >only flush the things they really need flushed. Bug 144072, r+sr=jst >* * * >Bug 252468 Remove outdated autostretch attribute from the tree >patch by Simon Paquet <bugzilla@babylonsounds.com> r=neil rs=bz >* * * >Change nsIPresContext to nsPresContext globally, follow-up to bug 253470. rs=roc >* * * >changing onclick to oncommand so that i can use a keyboard to install the >domi sidebar >rs=caillon rs=bz >* * * >Bug 222357 Shift-F10 doesn't trigger context menu >rs=caillon rs=neil >* * * >calling addEventListener and passing an object that is not defined yet >fails, which means that code expecting the result of that function call >is somewhat unhappy, to the tune of: >Error: inspector is not defined >Source File: chrome://inspector/content/sidebar.js >Line: 142 >r=caillon rs(sr)=neil >* * * >Remove refcounting version of nsIPresShell::GetPresContext. Bug 253889, r+sr=roc. >* * * >Moving context menu from treechildren context to tree contextmenu for right panels of dom inspector. This makes them >keyboard accessible. >r=caillon sr=neil >* * * >Bug 259032. DeCOMtaminate nsIFrame::GetNext/PrevInFlow. r+sr=roc, patch by Will Levine >* * * >Move XPCNativeWrapper.js from communicator to global. b=256630 r=bryner sr=bzbarsky >* * * >Bug 179621 Inspector should use Editor's TransactionManager model >patch by ajvincent@gmail.com r=roc sr=roc >* * * >Bug 264102 Chrome should use document.title instead of window.title - various fixes (inspector,pki) >p=gandalf@firefox.pl r/sr=neil.parkwaycc.co.uk >* * * >Fix bogus assumptions in inspector that can lead to crashes. Bug >270771. r=timeless, sr=jst >* * * >Reduce do_GetService code bloat further by adding specialized assignment to nsCOMPtr and providing a version with no error pointer. Also make CallGetService work the same way as CallGetComponent does, as far as using frozen/non-frozen interface to service manager. Bug 264456, r=darin. >* * * >bug 179621: Inspector should use Editor's TransactionManager model: Phase One amendment patch >patch by Alex Vincent <ajvincent@gmail.com> r=timeless sr=roc >* * * >Bug 272151: reorganize files within layout, r+sr=roc >* * * >remove unused prescontext argument from GetOffsetFromView bug 276015 r/sr=dbaron >* * * >Bug 179621 Inspector should use Editor's TransactionManager model: Phase Two patch >patch by Alex Vincent <ajvincent@gmail.com> r=timeless sr=bzarsky >* * * >Bug 276588 - Rework command line handling in the toolkit to use a generic API - see COMMANDLINES_20050109_BRANCH for more detailed cvs logs r=darin,caillon,mscott,mconnor >* * * >bug277885 Some Textfields are spoken as "Undefined single line text". >r = aaronleventhal >sr = neil.parkwaycc.co.uk >* * * >Fix up some issues in Inspector (including mis-spelled identifier). Bug >281165, patch by Frank Wein <bugzilla@mcsmurf.de>, r=timeless, sr=bzbarsky >* * * >Bug 281119 Warning ``assignment to undeclared variable seq'' [xs] in file ``chrome://inspector/content/jsutil/rdf/RDFU.js'', line 86, character 0. >patch by ajvincent@gmail.com r=timeless sr=roc >* * * >Add localization note for root.title >note from Frank Wein <bugzilla@mcsmurf.de> r=timeless >* * * >Guarantee that a document's binding manager is non-null. Bug 282792, r+sr=bzbarsky. >* * * >Remove nsIXBLBinding (bug 194834). r+sr=bzbarsky. >* * * >Switch some internal users of text/xml to application/xml. Bug 247024, patch >by Anne van Kesteren <bug@annevankesteren.nl>, r+sr=bzbarsky >* * * >bug 285102: XBL Viewer broken >r=caillon, sr=neil >* * * >Adding MOZILLA_INTERNAL_API to internal makefiles, bug 288626, rs=darin >* * * >Bug 289468 "@mozilla.org/network/simple-uri;1" is not a service and should not be accessed as one >r=neil sr=neil a=shaver >* * * >Add an nsIContent api for getting the intrinsic state of the content; this can >be used to implement more pseudo-classes (eg CSS3 UI ones for XForms). Bug >296309, r+sr=dbaron, a=chofmann >* * * >Bug 295711 part 3 - Package inspector as a real extension (in <appdir>/extensions/inspector@mozilla.org/...) and consolidate all the silly app-specific forking/overriding done in browser/extensions/inspector and mail/extensions/inspector r=mconnor sr+a=shaver >* * * >Fix assorted issues with fastback, including adding progress listener notifications and introducing the PageHide and PageShow events. See bug 292971 for all of the details. r=darin, sr=bzbarsky, a=shaver. >* * * >Bug 297660 No node is selected anymore after deleting node in dom inspector >patch by martijn.martijn@gmail.com r=bz sr=bz a=asa >* * * >Bug 297307: Tools -> DOM Inspector opens empty. r/a=benjamin. >* * * >Fix and enable post-update prompting, make sure app managed items don't show up in incompatible list, make sure disabled items dont show up in incompatible list, reorg code and add documentation. bug 299302 for making extension manager getIncompatibleItemList have an optional filterDisabled parameter r=darin >* * * >Bug 299286 - Make multiple in-tree localizations of DOMI possible, r=gandalf a=asa >* * * >Bug 301565, bustage fix from bug 299265, seamonkey-only. >* * * >Bug 299286 - Move reporter locale files from en-US.jar to reporter.jar, r=gandalf a=shaver >* * * >Change PageShow/PageHide events to be lowercase and hook them up so that onpageshow= works on the body tag. Bug 297887, patch by brettw@gmail.com, r=me, a=bsmedberg. >* * * >adding German (de) locale for inspector, no bug, blanket-a=bsmedberg >* * * >Bug 302465 - Add Czech locales for DOMI, patch by Pavel Franc - Pawell (Czilla.cz) <p.franc@gmail.com>, blanket-a=me >* * * >Additional inspector locales: >Swedish - bug 302521 - Hasse <jasajudeju@telia.com> >Polish - bug 302770 - Marek A. Stepien <marek.stepien@gmail.com> >Russian - bug 302780 - Marek A. Stepien <marek.stepien@gmail.com> >* * * >Bug 222654: global/scrollbars.css for native scrollbars different on Mac (many Firefox themes break scrollbars on Mac). Use nativescrollbars.css and xulscrollbars.css and ship both files on all platforms. r=neil, kevin, sr=bz >* * * >Bug 303886 - ga-IE locale of DOMI, provided by Kevin P. Scannell <kscanne@yahoo.com>, a=me >* * * >Bug 304476 (and 304478) - remove app.extensions.version from default prefs - r=chase >* * * >Bug 304326 - Change inspectorTaskCmd.accesskey.ff in Polish [pl] l10n of DOM Inspector >patch by marek.stepien@gmail.com (module owner) >* * * >Make sure to mainain our mContextMenu member correctly. Bug 251274, >r=timeless, sr=neil >* * * >Make nsIPresShell::GetPrimaryFrameFor return nsIFrame* instead of using an out >param. Bug 303779, patch by Bastiaan Jacques <b.jacques@planet.nl>, r+sr=bzbarsky >* * * >Bug 302275 - Flip xpcnativewrappers default to yes - r=bz sr=shaver >* * * >Bug 306171 - [mac] The 'Preferences' menuitem is disabled in Firefox's DOMi. r=mconnor. >* * * >Bug 302521 Add sv-SE to inspector locales >small text corrections >patch by jasajudeju@telia.com >* * * >bug 302215 make "make install" work correctly >r=bsmedberg >* * * >Bug 289444 Give prefs panels titles a unique name (LP, inspector and wallet patch) >p=giacomo.magnini@portalis.it (as was previous patch) r=me sr=neil.parkwaycc.co.uk >* * * >Backing out inspector parts of Bug 289444 to fix bustage >* * * >Bug 236613: change to MPL/LGPL/GPL tri-license. >* * * >bug 301566, add zh-TW l10n of inspector, extensions l10n only >* * * >bug 303100, add ca l10n of inspector, extensions l10n only >* * * >bug 304275, add pt-BR l10n of inspector, extensions l10n only >* * * >bug 306781, add sk l10n of inspector, extensions l10n only >* * * >bug 304275, bustage fix, line endings, extensions l10n only >* * * >bug 306781, bustage fix, line endings, extensions l10n only >* * * >bugs 304275, 306781, fixing more line endings >* * * >bug 308058, add hu l10n of inspector, extensions l10n only >* * * >bug 308810, add nb-NO l10n of inspector, extensions l10n only >* * * >bug 308873, add da l10n of inspector, extensions l10n only >* * * >bug 306458, fix spell errors in pl inspector, l10n extensions only >* * * >bugs 309200, 309325, 309699, adding fr, el, zh-CN to inspector, a=l10n@mozilla.com, extensions l10n only >* * * >bugs 309200, 309325, 309699, adding fr, el, zh-CN to inspector, a=l10n@mozilla.com, extensions l10n only >* * * >Pass nsIStyledContent to AttributeChanged() so that consumers don't have to QI >to it. Bug 313343, r=sicking, sr=jst >* * * >Remove nsIStyledContent. Bug 313968, r=sicking, r=dbaron on nsCSSStyleSheet >changes, sr=jst >* * * >Fixing bug 316794. Moving HandleDOMEvent() and Get/SetDocShell from nsIScriptGlobalObject to nsPIDOMWindow. r=mrbkap@gmail.com, sr=peterv@propagandism.org >* * * >Bug 299097 remove useless references to nsVoidArray >r=caillon sr=bz >* * * >Bug 318204 don't use ===, properties might be undefined >Ok, use === carefully :) >r=bz sr=neil >* * * >Bug 307255 Fix regression in DOM Inspector caused by bug 221619 r=bz >* * * >Bug 109481: Easy way to pick open pages (as opposed to open windows), patch by Jason Barnabe (np) <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Back out previous checkin pending locale fixes >* * * >Synchronize xpfe autocomplete handlers with toolkit. bug 255731, r=Neil, sr=mscott >* * * >make German inspector locale more consistent with rest of German L10n (NPOTDB) >* * * >Make the search by ID in Inspector work even for nodes with no "id" property >(eg xml:id, MathML, etc). Bug 324752, patch by Alex Vincent ><ajvincent@gmail.com>, r+sr=bzbarsky >* * * >Bug 328323: Flasher code needs to be adjusted for bug 299065. r+sr=bzbarsky >* * * >Bug 78081 - don't export intermediate libraries - initial makefile changes to switch from $(DIST)/lib to in-tree library locations - blanket-r=mento >* * * >Bug 242729 Copy in the right-click menu in the DOM inspector nodeName/nodeValue doesn't work >patch by jason_barnabe@fastmail.fm r=timeless sr=neil >* * * >Bug 109481 Easy way to pick open pages (as opposed to open windows) >patch by jason_barnabe@fastmail.fm r=timeless sr=neil >localizations by: >hu timar@fsf.hu >pl marek.stepien@gmail.com >ru als@mozilla.ru >sv-SE hasse@jasajudeju.se >el pkst@gmx.net >nb-NO havarmor@stud.ntnu.no >zh-CN shaohua.wen@gmail.com >ga-IE kscanne@yahoo.com > >German committed w/ English strings per kairo >* * * >Bug 109481 Easy way to pick open pages (as opposed to open windows) >introduced strings for which replacements were not available for: >cs-CZ da fr pt-BR sk zh-TW >So they have been removed from this Makefile.in until they're provided. > >de remains in the list because kairo promised to translate the en-us strings >that we copied into de per his request. >* * * >Bug 109481 Easy way to pick open pages (as opposed to open windows) >localizations by: >cs-CZ p.franc@gmail.com >* * * >bug 331189 - string changes required (in German locale) for DOMI bug 109481, additionally fix .properties file to really include strings (my local conversion script was buggy) >* * * >Bug 331184 string changes required for DOMI bug 109481 >patch by sskroeder@skroeder.dk >* * * >Bug 331184 string changes required for DOMI bug 109481 >restoring da as it is now current >* * * >Bug 331184 string changes required for DOMI bug 109481 >removing old strings (fixing build "bustage") >* * * >Remove uses of MOZ_DECL_CTOR_COUNTER, which is always defined to nothing. b=332745 rs=roc,bzbarsky >* * * >Bug 331758 Add SeaMonkey to install.rdf so that DOMI will run with it when SeaMonkey becomes a MOZ_XUL_APP. r=timeless,sr=Neil >* * * >Fix coding error (kids = document.createElement ...) r=timeless,caillon >* * * >Bug 333795, kill unused BeginReflow/EndReflow functions. r/sr=dbaron >* * * >Bug 334416: Misc view usage cleanups. r+sr=roc. >* * * >bug 267789 Add support for Sunbird to DOMi r=timeless >* * * >backing this out. tree is closed. :( >* * * >bug 267789 enable Sunbird support in DOMi r=timeless >* * * >Backing out mattwillis' checkin to see if it caused balsa orange. >* * * >bug 267789 provide DOMi inspector for Sunbird r=timeless >* * * >bustage fix: tweaking whitespace to make this rebuild >* * * >backing out bug 267789 due to balsa orange >* * * >bug 267789 bustage fix >* * * >bug 267789 bustage fix >* * * >Bug 121182 Can't copy values from computed style >patch by jason_barnabe@fastmail.fm r=timeless sr=neil >* * * >Fix mutation handling in Inspector to be more robust and correct. Bug 285204, >r=timeless, sr=neil >* * * >Bug 325100 - move DOMI C++ components into gklayout, r=dbaron >* * * >From bug 325100, the files in extensions/inspector/base/public|src were cvs-copied to layout/inspector. The old locations are no longer used. >* * * >Bug 265871: rename JavaScript console to Error console, patch by Kurt <supernova_00@yahoo.com>, r=mconnor, ui-r=beltzner, sr=neil/bzbarsky >* * * >Bug 277324: Copy XML doesn't work on #document nodes, patch by Jason Barnabe <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Bug 338383: Implement Copy on properties in CSS Style Rules view, patch by Jason Barnabe <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Bug 339054: JavaScript object subject should be expanded when the view is loaded, patch by Jason Barnabe <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Bug 332192: The DOM Inspector's maximized state is not remembered, patch by Simon B¸nzli <zeniko@gmail.com>, r=caillon >* * * >Bug 336961: fix DOM Inspector leak, patch by Regis Caspar <regis.caspar+bz@gmail.com>, r=jag, sr=neil >* * * >Bug 112922: Ability to edit and split #text nodes, patch by Jason Barnabe <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Fix for bug 296040. Cell-based selection in trees >r=Neil Deakin, sr=Neil Rashbrook, sponsored by BEToptions >* * * >small encoding fixes for German inspector L10n >* * * >Bug 210246: DOM Nodes viewer paste command should allow multiple insertion points, patch by Jason Barnabe (np) <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Bug 340233 -inspector produces unsizable window r=timeless >* * * >Bug 221995 Followup fix for bug revealed by fixing jsObject.js r=timeless >* * * >Bug 341256: DOM Inspector allows for editing, copying, pasting, and cutting of multiple attributes of a node, but only the last one selected, patch by Shawn Wilsher <comrade693@gmail.com>, r=timeless, sr=neil >* * * >Bug 331828: Can't inspect windows using DOMi on Mac, patch by Phil Ringnalda <philringnalda@gmail.com>, r=timeless, sr=neil >* * * >Bug 341894: Style rules view should allow for Undo and handle multiple/no selection better, patch by Jason Barnabe (np) <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Bug 341816: Node Type in DOM Inspector doesn't display a string of what it is, patch by Shawn Wilsher <comrade693@gmail.com>, r=timeless, sr=neil >* * * >update German L10n for recent inspector changes >* * * >Bug 310403 merge formatting.css from communicator into global p=surkov.alexander@gmail.com r=me sr=jag >* * * >Removing obsolete files, unused after checkin of bug 325100 >* * * >Bug 344510 DOMI appears twice in SeaMonkey's mailnews tools menu when MOZ_XUL_APP=1 is set. r=timeless,sr=Neil >* * * >(NOT PART OF BUILD) Document Inspector >* * * >84230 - DOM Inspector revival, rs=hyatt >* * * >84230 - DOM Inspector revival, rs=hyatt >* * * >bug #98089: ripped new license >* * * >Oops. >* * * >License changes, take 2. Bug 98089. mozilla/extensions/. >* * * >DOM Inspector update - tons of crash fixes, js error fixes, performance and usability improvements, r=jag, sr=hyatt >* * * >Human-readable tooltips for nodetype in inspector. Bug 113793, patch by >Christopher Aillon <caillon@returnzero.com>, r=bzbarsky, sr=hewitt >* * * >bugs 110156, 110155 >Removing support for <outliner> tags >Removing <tree> layout code and moving <tree> tags to outliner layout >Convert all usage of <outliner> to tree tags >Convert all usage of <tree> tags to new <tree> syntax or <listbox> >r=cmanske,varga sr=hyatt,sspitzer a=asa > >Also includes fixes by Jan Varga (varga@utcruk.sk) for bugs 132020, 133451, 131393, 115894, and 129327 >* * * >Fix JS object display in Inspector. Bug 160254, r=timeless, sr=hewitt. >* * * >Bug 107812 >Copying from inspector should also copy to primary on platforms that support it. >r=akkana sr=bzbarsky >* * * >Make nsXULElement::GetChildNodes use the same (live) node list that >nsGenericElement uses. Bug 240633, r+sr=jst on the C++ changes, r=neil, sr=jst >on the JS changes. >* * * >Bug 236613: change to MPL/LGPL/GPL tri-license. >* * * >Fix up some issues in Inspector (including mis-spelled identifier). Bug >281165, patch by Frank Wein <bugzilla@mcsmurf.de>, r=timeless, sr=bzbarsky >* * * >Bug 318204 don't use ===, properties might be undefined >Ok, use === carefully :) >r=bz sr=neil >* * * >Fix coding error (kids = document.createElement ...) r=timeless,caillon >* * * >Bug 339054: JavaScript object subject should be expanded when the view is loaded, patch by Jason Barnabe <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Bug 221995 Followup fix for bug revealed by fixing jsObject.js r=timeless >* * * >Bug 270023 DOM Node view should show namespace uri of attributes >patch by vhaarr+bmo@gmail.com r=caillon sr=neil >* * * >bug 346796 - Syncs DOMi install.rdf text with NSIS. patch by reed, r=timeless, a181=beltzner >* * * >Bug 337674. Make it possible to inspect accessibles (nsIAccessible) objects. Patch thanks to Alexander Surkov. r=timeless, sr=neil >* * * >Bug 205872: domNode viewer should use one dialog for setting new/editing attributes, patch by Shawn Wilsher <comrade693@gmail.com>, r=timeless, sr=neil >* * * >Forgot this change when landing the patch for bug 205872. Original patch by Shawn Wilsher <comrade693@gmail.com>, r=timeless, sr=neil >* * * >Bug 348668: Split nodeName into prefix and localName. >patch by sdwilsh (comrade693@gmail.com) >r=timeless >sr=neil >* * * >Fix typo in patch for bug 205872 >* * * >Bug 205872 domNode viewer should use one dialog for setting new/editing attributes >Fix for disappearing attribute bug >patch by comrade693@gmail.com r=timeless sr=neil >* * * >Bug 341504 global history toolkit autocomplete interface r=IanN,biesi sr=jag >* * * >Bug 352770 DOMI DOM Node textboxes should not appear editable >patch by jason_barnabe@fastmail.fm r=timeless sr=neil >* * * >Bug 352773 DOM Inspector node type still shows tooltip of node type in word form >patch by jason_barnabe@fastmail.fm r=timeless sr=neil >* * * >Bug 226819: Javascript Object window should allow sort properties and methods by name, patch by Jason Barnabe <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Bug 352990: Improve domi's Evaluate JavaScript, patch by Jason Barnabe <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >update German L10n to fit with current code >* * * >Bug 337069: inspecting chrome is undiscoverable, patch by Jason Barnabe (np) <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Bug 344302: [Mac] Delete (to remove nodes) doesn't work unless I hold Fn, patch by Shawn Wilsher <comrade693+bmo@gmail.com>, r=timeless, sr=neil >* * * >Bug 352770 tweak: use a class selector instead of descendent selector, patch by Jason Barnabe (np) <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Bug 353006: Disable editing of styles on resource:stylesheets in domi, patch by Jason Barnabe (np) <jason_barnabe@fastmail.fm>, r=timeless, sr=neil >* * * >Bug 354533: DOMi locale updates for da, patch by S¯ren Munk Skr¯der <sskroeder@skroeder.dk> >* * * >Bug 354538: update DOMi locale (pl), patch by Marek A. Stepien <marcoos+bmo@marcoos.org> >* * * >German L10n for new strings introduced by bug 337069 >* * * >Bug 342316: Updating fr translation of DOMi, patch by CÃdric Corazza <cedric.corazza@wanadoo.fr>, r=philippe <bugzilla.fr@gmail.com> >* * * >Bug 349885. GetAccessibleFor() doesn't look if ally nodes are allowed inside anon content. Patch by Alexander Surkov. r=aaronlev, sr=neil >* * * >Bug 354543: add sv-SE entities for DOMi and re-enable it in the default build, patch by Hasse <hasse@jasajudeju.se> >* * * >add German inspector L10n back into default build >* * * >Bug 327833, In <inspector.xul>, Failed to load overlay from chrome://browser/content/baseMenuOverlay.xul, p= Shawn Wilsher<comrade693+bmo@gmail.com>, r=timeless, sr=neil >* * * >Bug 205872, l10n fix, p=Shawn Wilsher<comrade693+bmo@gmail.com>, r=pike >* * * >Bug 327833, In <inspector.xul>, Failed to load overlay from chrome://browser/content/baseMenuOverlay.xul >p= Shawn Wilsher693+bmo@gmail.com"><comrade693+bmo@gmail.com>, r=timeless, sr=neil > >Backing out. jar.mn magic is wrong resulting in unhappiness >* * * >Bug 361687: French translation update for DOMi, patch by CÃdric Corazza <cedric.corazza@wanadoo.fr>, r=bugzilla.fr@gmail.com >* * * >Bug 361105: Failed to load overlay from chrome://communicator/content..., patch by Shawn Wilsher :sdwilsh <comrade693+bmo@gmail.com>, r=db48x, sr=neil >* * * >Bug 361146: DOM Inspector doesn't observe its preferences correctly, patch by Shawn Wilsher :sdwilsh <comrade693+bmo@gmail.com>, r=db48x, sr=neil >* * * >Bug 362047 - bustage fix for bug 361146, missing paren, irc r=timeless >* * * >Bug 362047: fix bustage fix >* * * >Bug 362286: nsIPrefBranchInternal is deprecated - use nsIPrefBranch2, patch by Shawn Wilsher :sdwilsh <comrade693+bmo@gmail.com>, r=db48x, sr=neil >* * * >bug 327833: In <inspector.xul>, "Failed to load overlay from chrome://browser/content/baseMenuOverlay.xul" >patch by Shawn Wilsher :sdwilsh <comrade693+bmo@gmail.com>, r=timeless, sr=neil >* * * >Bug 362646 - domNodeDialog.xul doesn't have control attributes pointing to valid ids >p=comrade693+bmo@gmail.com (Shawn Wilsher) >r=db48x (Daniel Brooks) >sr=neil@parkwaycc.co.uk >* * * >Bug 236613: change to MPL/LGPL/GPL tri-license. >* * * >Bug 360898: Option to hide processing instructions, patch by Shawn Wilsher <comrade693@gmail.com>, r=db48x, sr=neil >* * * >Bug 363734: update French DOMi locale, patch by CÃdric Corazza <cedric.corazza@wanadoo.fr>, r=bugzilla.fr@gmail.com >* * * >bug 366287, Undoing the insertion of a new attribute doesn't work. patch by ajvincent@gmail.com, r+sr=neil >* * * >Bug 363323 DOM View is really inefficient with setting what is to be shown >patch by comrade693+bmo@gmail.com r=timeless sr=neil >* * * >Bug 344545 DOM Inspector 1.8.1b1 Leak (dom.js) >patch by comrade693+bmo@gmail.com r=db48x sr=neil >* * * >Javascript -> JavaScript b=367638 p=sdwilsh r+sr=me >* * * >Bug 333172 minVersion should be a fixed number, don't link against layout for DOM Inspector >patch by comrade693+bmo@gmail.com r=jminta, r=neil, r=gavin, sr=neil >* * * >Bug 210096, part two - remove inIFileSearch interface and its implementation >patch by Shawn Wilsher <comrade693+bmo@gmail.com> >r=db48x, sr=neil >* * * >Bug 221934 - Display page title in DOM Inspector Window >patch by Michael Gall <michael@wakeless.net> >r=db48x, sr=neil >* * * >Fix typo from patch for bug 221934, a=vlad >* * * >Bug 112775 âÃì DOM Inspector to create nodes >patch by Dave Townsend (Mossop) <mossop.bugzilla@blueprintit.co.uk>, r=db48x, sr=neil >* * * >Bug 374461 - [fr] Update of DOMi. Patch by Câ©dric Corazza <cedric.corazza@wanadoo.fr. r=benoit.leseul >* * * >Bug 268935. nsIAccessibilityService should not be scriptable -- only the nsIAccessibleRetrieval that it inherits from. r=surkov >* * * >Bug 354539 - DOM Inspector Entities Need to be added. l10n patch. Patch by Alexander L. Slovesnik <unghost@mozilla-russia.org>. >* * * >Bug 380846 - "Make the build system friendlier for XULRunner apps and extensions." r=bsmedberg. Adds confvars.sh files for all major apps and makefiles.sh for all extensions. >* * * >Bug 379109 DOMI should provide window icons for Linux and OS2 as well as Windows. r=timeless,luser,sr=Neil. >* * * >Bug 379109 DOMI should provide window icons for Linux and OS2 as well as Windows. r=timeless,luser,sr=Neil. >* * * >Bug 383259 - Thunderbird's current trunk version is less than DOMi's minVerson for it, r=timeless, sr=neil >* * * >Bug 378696 - Remove dead search code. r=db48x, sr=neil >* * * >Bug 383160 - Need to have localName in dom viewer. Patch by Mook <mook.moz+mozbz@gmail.com>. r=sdwilsh, sr=neil >* * * >Bug 384243 - undefined entity inserting new attribute (regression from bug 383160). Patch by Mook <mook.moz+mozbz@gmail.com>. r=sdwilsh, sr=dmose >* * * >Bug 383581 - [pl] Update of DOMi. Patch by Marek A. StÆÃ´pieâà <marcoos+bmo@marcoos.org>. r=hubert.gajewski >* * * >Bug 72494 - DOM Inspector needs save option. r=timeless, sr=neil >* * * >Bug 384439 - [fr] Update for fr DOMi. Patch by Câ©dric Corazza <cedric.corazza@wanadoo.fr>. r=bugzilla.fr >* * * >Bug 383966 - Remove contents.rdf from DOMi. r=timeless, sr=neil >* * * >update German inspector L10n for recent changes in inspector code >* * * >Bug 354537 - [nb-NO] DOM Inspector Entities Need to be added. Patch by Hââ¢vard Mork <havard.mork@gmail.com>. r=sdwilsh >* * * >Bug 378696 - Remove dead search code (step 2). r=timeless, sr=neil >* * * >Bug 378696 - Remove dead search code (step 2). r=timeless, sr=neil >* * * >Bug 378696 - Remove dead search code (step 2). r=timeless, sr=neil >* * * >Pass the wrappedJSObject so that XPCNativeWrapper doesn't get confused by DOMI having its hands on implicit native wrappers. bug 387053, r=sdwilsh sr=jst >* * * >Bug 387054 - Opening DomI - File Inspect Current Document throws error in JS Console. r=db48x, sr=neil >* * * >Backing out these changes, they were subsumed by bug 387084 and weren't really right anyway. bug 387053 >* * * >Bug 378696 - Remove dead search code. r=timeless, sr=neil >* * * >Bug 347791 - expose accessible role and state as strings in Inspector, patch=vasiliy.potapenko, r=me,sdwilsh, sr=neil >* * * >Bug 387700 - [pl] Update for pl DOMi due to bug 347791. Patch by Marek A. StÆÃ´pieâà <marcoos+bmo@marcoos.org>. r=hubert.gajewski >* * * >Bug 387698 - [fr] Update for fr DOMi due to bug 347791. Patch by Câ©dric Corazza <cedric.corazza@wanadoo.fr>. r=bugzilla.fr >* * * >Bug 387907 - [ru] Update for Russian DOM Inspector localization. Patch by Alexander L. Slovesnik <unghost@mozilla-russia.org>. rs=sdwilsh >* * * >Bug 387907 - [ru] Update for Russian DOM Inspector localization. Patch by Alexander L. Slovesnik <unghost@mozilla-russia.org>. rs=sdwilsh >* * * >Bug 386818 - expose right accessible tree in DOMi, r=sdwilsh, ajvincent, evan.yan, sr=neil >* * * >Bug 391930 - [pl] [DOMi] Localization for accessibleTree.dtd. Patch by Marek A. StÆÃ´pieâà <marcoos+bmo@marcoos.org>. rs=sdwilsh >* * * >Bug 391800 - left panel view should be able to pass a more than one subject to the right panel view, rs=sdwilsh >* * * >Bug catch accessibility events in DOMi, r=sdwilsh, ajvincent, evan.yan, sr=neil, a=dsicore >* * * >Bug 393384 - [pl] localization for DOMi accessibleEvents.dtd, patch=marcoos+bmo@marcoos.org, r=hubert.gajewski >* * * >update German Inspector L10n for current trunk, NPOTDB >* * * >Bug 394158 Disable toolbargrippies on inspector panels so we don't have to hide them in CSS and also fix the toolbar alignment on toolkit apps r=sdwilsh >* * * >Bug 342592 - Make --enable-extensions=inspector work for XULRunner. Patch by Alex Vincent <ajvincent@gmail.com>. r=sdwilsh, sr=neil >* * * >Bug 394253 - Opening DOM inspector enables accessibility globally, r=timeless, aaronlev, sr=neil >* * * >Bug 391411 - "Update sv-SE files for DOM Inspector" [p=hasse@jasajudeju.se (Hasse) r=slicedlime@gmail.com (Mikael Hedberg) rs=sdwilsh] >* * * >Bug 394888 - "[fr] DOMi update due to bugs 388517 and 386266" [p=cedric.corazza@wanadoo.fr (Câ©dric Corazza) r=bugzilla.fr@gmail.com (philippe)] >* * * >Bug 397220 - Dom node <label>s have 'for' attributes instead of 'control' attributes, r=sdwilsh, sr=neil, a1.9=dsicore >* * * >Bug 347792 - expose accessible relations in DOM inspector, r=sdwilsh, ajvincent, evan.yan, sr=neil, a=dsicore >* * * >remove de L10n files that have been gone from en-US for some time already >* * * >add de L10n file for bug 347792 that I previously forgot to add >* * * >re-add de to inspector build, rs=sdwilsh >* * * >really localize this file >* * * >Bug 402081 - "[fr] DOMi update due to bug 347792" [p=cedric.corazza@wanadoo.fr (Câ©dric Corazza) r=Benoit aM9=beltzner] >* * * >Bug 400864 - "Polish DOMi l10n needs accessibleRelations.dtd" [p=marcoos+bmo@marcoos.org (Marek A. StÆÃ´pieâÃ) r=hubert aM9=beltzner] >* * * >Bug 402432 - "[ru] DOMi update due to bug 347792" [p=unghost@mozilla-russia.org (Alexander L. Slovesnik) r=timeless aM9=beltzner] >* * * >Bug 402081 - "[fr] DOMi update due to bug 347792" (add fr locale to Makefile.in) [p=cedric.corazza@wanadoo.fr (Câ©dric Corazza) aM9=beltzner] >* * * >Bug 402626, update sk DOMi locale, a=beltzner >* * * >Remove DOS line endings from new files recently added. >* * * >Bug 398699 - "DOM Inspector Find Nodes dialog does not have access keys" [p=ehsan.akhgari@gmail.com (Ehsan Akhgari) r=sdwilsh sr=Neil a1.9=schrep] >* * * >Bug 398700 - "DOM Inspector Insert Node dialog does not have access keys" [p=ehsan.akhgari@gmail.com (Ehsan Akhgari) r=sdwilsh sr=Neil a1.9=schrep] >* * * >Bug 398603 - "Missing access keys in DOM Inspector main window" [p=ehsan.akhgari@gmail.com (Ehsan Akhgari) r=sdwilsh sr=Neil a1.9=schrep] >* * * >Bug 403646 - "[fr] DOMi update due to bug 398699, 398700 and 398603" [p=cedric.corazza@wanadoo.fr (Câ©dric Corazza) r=philippe a1.9=mconnor] >* * * >Bug 403814 - "Update accesskeys in Polish DOMi" [p=marcoos+bmo@marcoos.org (Marek A. StÆÃ´pieâÃ) r=hubert a1.9=schrep] >* * * >Bug 403696 - "[sk] DOMi update for bug 398699, 398700 and 398603" [p=rozbora@mozilla.sk (Branislav Rozbora) r=rado a1.9=schrep] >* * * >Bug 404863 - "[DOMi] Remove obsolete search/ directory from extensions/inspector/resources/locale/sk" [p=reed] >* * * >b=404851.r=sdwilsh.a=beltzner. change communicator to global skin >* * * >Bug 373623 - "Unicode âö should be used instead of three separate dots: ..." (DOM Inspector changes) [p=hendrik.maryns@uni-tuebingen.de (Hendrik Maryns) rs=sdwilsh a1.9=mconnor] >* * * >German L10n for bugs 398699, 398700, 398603 (all access keys stuff) and bug 373623 (unicode ellipsis) >* * * >Bug 398910. Remove support for namespaced ARIA properties since they are no longer official (we are pre-1.0). r=surkov, r=ginn, r=bienvenu, r=mano, r=mconnor, r+sr=neil >* * * >Bug 398704 - "DOM Inspector Pseudo Classes dialog does not have access keys" [p=ehsan.akhgari@gmail.com (Ehsan Akhgari) r=sdwilsh sr=Neil a1.9=schrep] >* * * >Bug 398706 - "DOM Inspector DOM tree viewer context menu does not have access keys" [p=ehsan.akhgari@gmail.com (Ehsan Akhgari) r=sdwilsh sr=Neil a1.9=schrep] >* * * >Remove all other DOMi locales besides en-US due to new entities. >* * * >German L10n for bug 398706 and bug 398704 (DOMI only) >* * * >Bug 408654 - "[sk] DOMi update for bug 398704 and 398706" [p=valastiak@mozilla.sk (Vlado Valastiak) r=rado a1.9=schrep] >* * * >Bug 398706 - "DOM Inspector DOM tree viewer context menu does not have access keys" (Remove the duplicate menu item) [p=ehsan.akhgari@gmail.com (Ehsan Akhgari) r+sr=Neil a1.9=schrep] >* * * >Bug 393353 show context information of accessibility events in accessibilityEvents view, r=sdwilsh, sr=neil, a=mtschrep >* * * >Bug 409067 - "[fr] DOMi update for bug 398704, 398706 and 393353" [p=cedric.corazza@wanadoo.fr (Câ©dric Corazza) r=philippe a1.9=beltzner] >* * * >Bug 409367 - "[sk] DOMi update for bug 393353" [p=valastiak@mozilla.sk (Vlado Valastiak) r=rado a1.9=beltzner] >* * * >add German L10n for bug 393353 >* * * >Bug 411329 - "pl DOMi localization update (accesskeys, accessibleEvent.dtd)" [p=marcoos+bmo@marcoos.org (Marek A. StÆÃ´pieâÃ) r=hubert a1.9=schrep] >* * * >Bug 408486 - "Update accesskeys in Russian DOMi" [p=unghost@mozilla-russia.org (Alexander L. Slovesnik) rs=sdwilsh a1.9=schrep] >* * * >Bug 413202 - [sv-SE] DOMi updates for bug 347792 and others. Patch by Hasse (hasse@jasajudeju.se), sv-SE translation by Lars PM (lars.pm@ebox.tninet.se). r=slicedlime (Mikael Hedberg), a=mtschrep. >* * * >Bug 413202, adding 2 files >* * * >Removing obsolete files from bug 413202 >* * * >Bug 333262,In <inspector.xml>, strict warning 'reference to undefined property event.originalTarget.nodeType', r=sdwilsh, sr=neil, a=dsicore >* * * >Bug 404500 - "add localized description for DOMi" (for sk) [p=valastiak@mozilla.sk (Vlado Valastiak [wladow]) r=sdwilsh sr=Neil a1.9=damons] >* * * >Bug 408471 - "[cs] Fixed DOMI in trunk" [p=p.franc@gmail.com (Pavel Franc [Pawell]) / Mozilla@KecNet.cz (Michal Kec [MiK]) r=Pawell a1.9=beltzner] >* * * >Bug 413605 âÃì allow to use JS for the selected accessible in the accessibleTree view, r=sdwilsh, sr=neil, a=mconnor >* * * >Bug 393820 âÃì expose bounds of accessible for accessible properties view, r=swilsh, l10n, sr=neil, a=dsicore >* * * >Bug 415992 - "[fr] French DOMi update for bug 413605 and bug 393820" [p=cedric.corazza@wanadoo.fr (Câ©dric Corazza) r=Benoit a1.9=schrep] >* * * >Bug 416903 - "[sk] DOMi update for bug 413605 and bug 393820" [p=valastiak@mozilla.sk (Vlado Valastiak [wladow]) r=rado a1.9=beltzner] >* * * >update German locale to current trunk and re-add it to the build >* * * >Bug 271812 - DOM Inspector not published to addons.mozilla.org. r=mconnor, sr=mconnor. NPOTDB >* * * >Bug 395454 - "[Mac] Have one file, scrollbars.css" [p=mozcbarrett@gmail.com (Colin Barrett [cbarrett]) r=Enn r=Neil sr=roc a1.9=damons] >* * * >Bug 423625 - ""Evaluate JavaScript" window is transparent" [p=trev.moz@adblockplus.org (Wladimir Palant) r=sdwilsh sr=Neil] >* * * >Bug 422336 - ""Edit Attribute" > "Namespace URI" is not selected onload" [p=taken.spc@gmail.com (KUROSAWA, Takeshi) r=db48x sr=Neil] >* * * >Bug 399653 - "Insert Node dialog can't create HTML elements" [p=taken.spc@gmail.com (KUROSAWA, Takeshi) r=db48x sr=Neil] >* * * >Fix bug 427216 - Make tools menu popup match other applications. r=dbo,r=timeless,sr=dmose,a=ss >* * * >Bug 421006 DOMi isn't available on trunk >r=sdwilsh moa=timeless >* * * >Bug 431358 - "DOM Inspector doesn't work in Sunbird 0.6a1 Trunk builds" (use correct trunk version) [p=ssitter@gmail.com (Stefan Sitter) r=sdwilsh] >* * * >bug 399031 - Convert xpfe prefpane to toolkit version (DOMi), p=aqualon@aquachan.de r=sdwilsh sr=Neil >* * * >Update install.rdf to latest mozilla-central version. No bug. >* * * >Bug 444590 - [sk] DOMi update for bug 399031 >r=rado >rs=sdwilsh (locale change) >* * * >Version bump for trunk. (no bug) >rs=me >* * * >Bug 451224 â [ru] DOMi update >* * * >remove ru from locales list again as long as it breaks the build >* * * >Bug 451224 â [ru] DOMi update - add missing file >* * * >Add ru to locales list (missing files has been added) >* * * >bug 452971 - Update German DOMi L10n, rs=sdwilsh >* * * >Bug 452694: column headers broken in xblBindings.xul for methods/handlers/resources; r=sdwilsh/kairo, sr=neil >* * * >Bug 438793: treelines for DOMI; r=sdwilsh, sr=neil >* * * >Bug 451909 kill MOZ_XUL_APP now that all apps set it (inspector cleanup) r=sdwilsh >* * * >Bug 452851 Icon files have problems being copied when source code is read-only. r=sdwilsh,sr=neil >* * * >Bug 452851 Icon files have problems being copied when source code is read-only. r=sdwilsh,sr=neil >* * * >Bug 453126 - [sk] DOMi update for bug 452694; r=rado >* * * >bug 451601 - kill MOZILLA_LOCALE_VERSION, DOMi part, rs=sdwilsh >* * * >Bug 365988 - Label on ID/tag/attr name and Value fields not exposed to accessibility aid; r=sdwilsh sr=neil >* * * >Bug 427817: remove files obsoleted by pref panel migration; rs=sdwilsh >* * * >Removed trailing whitespace (no bug) >* * * >Version bump to 2.0.1. Also adjusted maxversions to make AMO happy. >rs=me >* * * >Remove spurious \r characters rs=sdwilsh >* * * >Bumping Suite maxVersion rs=sdwilsh over IRC >* * * >Bug 457849: DOMi fails to load the main app when -inspector is used, r=sdwilsh, sr=neil >* * * >Bug 459404 - Add support for Sunbird 1.0pre comm-central builds; r=sdwilsh >* * * >Bug 461006 - Update DOMi to overlay the new Sunbird main window uri; r=sdwilsh sr=neil >* * * >Bug 280136 - Remove GetFinalState(), r=sdwilsh, sr=neil >* * * >Version bump to support mozilla-central trunk. No bug. >* * * >Bug 467761 Update max version number of Thunderbird to 3.0b2pre. rs=sdwilsh >* * * >bug 467755 - Update DOMi compat info for SeaMonkey 2.0a3, which is also the max allowed by AMO, rs=sdwildsh >* * * >Bug 471190 - [ru] DOMi update for bug 452694 >* * * >Bug 473936 - Use javascriptConsole as Error Console menuitem id for better extension compatibility; javascriptConsole id change, DOMI part v2; r=sdwilsh sr=neil >* * * >Bug 474615: Add explicit support for Fennec to DOMi, r=sdwilsh, sr=neil >* * * >Version bump to 2.0.2 for bug 457254. >* * * >Bug 474615: Add explicit support for Fennec to DOMi (take 2), r=sdwilsh, sr=neil >* * * >Bug 474615: Add the comment sdwilsh wanted >* * * >Bug 475781 - DOM Inspector 2.0.3 >This is just a version bump. Nothing to see here... >* * * >Bug 479290 - bump maxVersion numbers of the in-tree extensions to tb3.1a1pre/sm2.0b1. rs=sdwilsh >* * * >Bug 477400 - No shortcut for SeaMonkey and Thunderbird; r=(philringnalda + sdwilsh) sr=neil >* * * >Bug 400095 - The title of window have repeated name when inspect dom inspector; (Bv1) Reuse the initial title; r=timeless >* * * >Bug 482055 - use 'role' if there is no 'finalRole' in accessible object, r=sdwilsh, sr=neil >* * * >Bug 482055 - use 'role' if there is no 'finalRole' in accessible object, r=sdwilsh, sr=neil >* * * >Bug 488297 - Drop use of long-dead xulkey attribute, r=sdwish, sr=neil >* * * >Bug 321939 - Legacy XUL attribute 'xulkey'; (Bv2) DOMi, whitespace cleanup only; rs=sdwilsh >* * * >Bug 494181: Update maxVersion for Fennec, rs=sdwilsh >* * * >Bug 466223 - [fr] French DOMi update for bug 399031 >r=benoit.leseul >rs=sdwilsh >* * * >Bug 496681 - Update Firefox version in DOM Inspector's install.rdf; to 3.6a1pre; r=sdwilsh >* * * >Bug 212754 - Should be able to copy stylesheet URIs from DOM Inspector; r=sdwilsh sr=neil >* * * >Update Russian DOMi for Bug 212754 >* * * >update >* * * >Bug 502445 - update Polish L10n files for DOMi, r=marcoos, sr=sdwilsh >* * * >Polish DOMi localization: fix broken license headers and add two missing L10n files >* * * >Add Polish localization to DOMi ALL_LOCALES >* * * >Update German L10n for bug 212754 >* * * >bug 501788 - [fr] DOMi update due to bug 212754, r=benoit.leseul >* * * >Bug 504713 - Update extensions to "support" SeaMonkey 2.1; (Av1) DOMi; rs=sdwilsh >* * * >Bug 504480 - runtests.py.in needs to do a '-silent' run first, as runreftest.py does; (Cv1-DOMi) popupOverlay.xul: un-duplicate 6 ids; r=sdwilsh >* * * >Bug 505209 Make XBL bindings tab work for non-chrome bindings again r=sdwlish >* * * >Bug 192841 - CSS Style Rules lower panel breaks when selected rule is not a style rule; r=sdwilsh sr=neil >* * * >Bug 424277 - accessible tree view doesn't work in content documents, r=sdwilsh, sr=neil >* * * >Bug 192841 - CSS Style Rules lower panel breaks when selected rule is not a style rule >r=sdwilsh sr=neil >* * * >Bug 522181 - add an ability to inspect nsIAccessibleTableCell interface, r=sdwilsh, sr=neil >* * * >jar.mn fix for bug 522181 >* * * >Bug 522844. Stop depending on the buggy inDeepTreeWalker::parentNode. r=sdwilsh, sr=neil >* * * >Update Russian DOMi for Bug 522181 >* * * >Update Slovak DOMi for Bug 522181 >* * * >Bug 524113 - Add UI integration with Songbird >r=sdwilsh >* * * >Appropriate version bumps for new release. >* * * >Bug 477844 - DOM Inspector 2.0.4. >This is just a version bump. >* * * >Bug 393355 - make accessibilityEvents view to filter events, r=sdwilsh, sr=neil >* * * >Update Russian DOMi for Bug 393355 >* * * >Bug 532032 - in accessibleProps string bundle should be replaced with %S, rs=sdwilsh, sr=neil >* * * >Bug 528784 - [fr] DOMi update due to Bug 522181; Patch version 3. >r=benoit.leseul. >* * * >Bug 530039 - expose accessible action interface in DOMi, r=sdwilsh, sr=neil >* * * >Bug 532024 - update accessible tree when accessible reorder event is occurred, r=sdwilsh, sr=neil >* * * >Bug 536788 - [fr] DOMi update due to Bug 530039; French DOMi update patch version2. >r=benoit.leseul. >* * * >Bug 532355 - Implement 'Blink selected element' for accessibleTree view, r=sdwilsh, sr=neil >* * * >fr locale update for bug 532355 >* * * >Bug 536012 - Recent Version of DOM Inspector (2.04) unable to edit CSS properties in CSS Rules view; fix brokenness in isCommandEnabled introduced in fix to 212754. >r=sdwilsh sr=neil. >* * * >[ru] DOMi update >* * * >Bug 530643 - Multipanels are bad; entab the XBL viewer; mkVII cleanup. >r=sdwilsh sr=neil. >* * * >Bug 530643 - Multipanels are bad; entab the XBL viewer; mkVII realchanges. >r=sdwilsh sr=neil. >* * * >update German L10n to current development state >* * * >[sk] DOMi update >* * * >Bug 530643 - Multipanels are bad; entab the XBL viewer; remove multipanel bindings and style. >r=sdwilsh sr=neil. >* * * >Bug 533599. Stop using xpcnativewrappers=no in DOM Inspector. r=sdwilsh,neil sr=mrbkap >* * * >Update DOMI maxVersion for Thunderbird to 3.2a1 (current trunk Tb), rs=sdwilsh >* * * >Version bump to a2pre >* * * >Bug 532355 - Implement 'Blink selected element' for accessibleTree view, part 2, r=sdwilsh, sr=neil >* * * >Bug 501178 - style sheets viewer doesn't handle HTMLStyleElements well and incorrectly implements nsITreeView::hasNextSibling; no directory moves. >r=sdwilsh sr=neil. >* * * >Bug 424527 - Remove dead file jsObjectView.js. >rs=sdwilsh sr=neil. >* * * >Version bump to support mozilla-central. No bug. >* * * >Bug 546679 - Dead code removal: tree-editable binding and file.js; remove file.js and treeEditable binding and skin files. >r=sdwilsh. >* * * >Bug 532355 - Implement 'Blink selected element' for accessibleTree view, part3, r=sdwilsh, sr=neil >* * * >Bug 548139 - Enable double-click to edit in DOM node viewer; cleanup+realchanges. >r=sdwilsh sr=neil. >* * * >Bug 548157 - don't use iconViewerMenu.gif for viewers' menus in classic scheme; remove files and tweak classic skin to use dropmarker glyph. >r=sdwilsh sr=neil. >* * * >Bug 551457 - add some syntax sugar for evaluated code in accessibleTree/evalJSDialog, r=sdwilsh, sr=neil >* * * >Bug 526939 - DOM Inspector hangs trying to find a ID that doesn't exist (part1: dom.js cleanup), r=sdwilsh >* * * >Bug 526939 - DOM Inspector hangs trying to find a ID that doesn't exist (part2), r=sdwilsh, sr=bzbarsky >* * * >Bug 564790 - Update DOMi compat info for SeaMonkey 2.1a2, rs=sdwilsh for version updates >* * * >Bug 503037 - spare closebutton="true" attribute in inspectorOverlay.xul >* * * >Bug 435906 - No overlay support in Chatzilla standalone on XULRunner for DOMi (DOM Inspector) >* * * >Bug 536012 - Recent Version of DOM Inspector (2.04) unable to edit CSS properties in CSS Rules view, r=sdwilsh, sr=neil >* * * >Bug 530187 - (DOMi2.0.5) DOM Inspector 2.0.5 >* * * >Bug 551404 - allow to watch a11y events for whole application, r=sevensprade, sr=neil >* * * >Update Russian l10n >* * * >Bug 316295 - DOMViewer.rebuild thinks mDOMView is an nsITreeView, r=sdwilsh, sr=neil >* * * >Bug 566035 - "[fr] DOMi update due to Bug 551404" [r=benoit.leseul] >* * * >Bug 567094. Keep saying xpcnativewrappers=no for now. r=sdwilsh >* * * >Bug 179621 - Inspector should use Editor's TransactionManager model (cleanup), r=ajvincent >* * * >Bug 179621 - Inspector should use Editor's TransactionManager model (phase 2), r=ajvincent, sr=neil >* * * >Bug 179621 - Inspector should use Editor's TransactionManager model (phase 3), r=ajvincent, sr=neil >* * * >Bug 571008 - ViewerRegistry should guard against runtime errors in entry filters (cleanup), r=sdwilsh >* * * >Bug 571008 - ViewerRegistry should guard against runtime errors in entry filters (real changes), r=sdwilsh, sr=neil >* * * >Bug 553697 - JavaScript error "_content is null" in console.xul (Error Console) [cleanup], r=sdwilsh >* * * >Bug 553697 - JavaScript error "_content is null" in console.xul (Error Console) [real changes], r=sdwilsh, sr=neil, f=philip.chee >* * * >bug 573991 - Update DOMi compat info for SeaMonkey 2.1a3, also bump Firefox to 3.7a6pre (current nightlies), rs=sdwilsh for version updates >* * * >Backed out changesets fab44c4360a4 and a788b3f753ec for DOMi2.0.6 and merge. >* * * >Bug 535436 - (DOMi2.0.6) DOM Inspector 2.0.6 >* * * >Backed out changeset 914ed8321991 >* * * >Bug 565436 - (DOMi2.0.6) DOM Inspector 2.0.6 >* * * >Bug 576910 - Make DOM-inspector XPCOM components use new manifests and data tables >f=Callek rs=sdwilsh >* * * >Bug 570409 - XML Parsing Error in DOM Inspector v2.0.5 >* * * >Bug 578775 - Change popups to menupopups and move them into popupsets in DOM Inspector >* * * >Bug 582704 - Bump DOM Inspector compatibility for Firefox to 4.0b3pre, rs=sdwilsh via IRC >* * * >Bug 576163 - (DOMi2.0.7) DOM Inspector 2.0.7 >* * * >Bug 585330 - Fix "a the" in comments >* * * >Bug 346725 - DOM Inspector menu bar keyboard navigation issue (toolboxOverlay.xul cleanup), r=neil >* * * >Bug 346725 - DOM Inspector menu bar keyboard navigation issue (eliminate empty children of the menubar), r=neil >* * * >Bug 586149 - Some strings in the XBL Bindings viewer are hard to read, r=neil >* * * >bug 587515 - Update DOMi compat info for SeaMonkey 2.1b1, also bump Firefox to 4.0b4pre (current nightlies) and toolkit to 2.0.* (1.9.3 was renamed to 2.0), rs=sdwilsh for version updates >* * * >minor correction for de locale >* * * >Bug 218864 - Inspector should have a keystroke to focus the urlbar like the browser does (cleanup), r=neil >* * * >Bug 218864 - Inspector should have a keystroke to focus the urlbar like the browser does (Use Firefox's keyboard shortcuts), r=neil >* * * >Bug 586149 - Some strings in the XBL Bindings viewer are hard to read (remove unused tooltip element), r=neil >* * * >Bug 587726 - Menu structure should look more like other apps' (cleanup), r=neil >* * * >Bug 587726 - Menu structure should look more like other apps' (real changes; use accel+Shift+Z on all non-Win, even SeaMonkey), r=neil >* * * >Update Russian l10n for Bug 218864 and Bug 587726 >* * * >bug 569054 - override Firefox 4 "Inspect" shortcut key (conflicts with existing DOMi key) >* * * >Bug 583418 - Add DOM Inspector menuitem to Developer Tools menupopup for Firefox app button (cleanup), r=sdwilsh >* * * >Bug 583418 - Add DOM Inspector menuitem to Developer Tools menupopup for Firefox app button (real changes), r=sdwilsh >* * * >Bug 582713 - (DOMi2.0.8) DOM Inspector 2.0.8 >* * * >Update German L10n to current inspector trunk >* * * >Bump DOMI maxversion to 3.3a1pre to match current trunk version. rs=sdwilsh >* * * >Bug 551881 - Switch application/x-javascript to application/javascript, DOM Inspector part. r=sdwilsh >* * * >Bug 391955 - Missing string jsObjectExpressionError.title in inspector.properties; r=neil >* * * >Bug 550751 - JS/Accessible Object viewer tree has border and margins; r=neil >* * * >Bug 601489 - Firefox appmenu developer popup changed ids; Firefox overlay needs updating >* * * >Bug 601101 - no a11y view of right panel are available, sr=neil >* * * >bug 602633 - Update DOMi compat info for SeaMonkey 2.1b2, also bump Firefox to 4.0b8pre (current nightlies), rs=sdwilsh for version updates >* * * >Bug 603406 - domNode viewer assumes some non-element nodes are element nodes, r=neil >* * * >Bug 551404 - allow to watch a11y events for whole application, r=neil >* * * >Bug 603396 - No need for entryList in panel binding (r=neil) >* * * >Update Russian l10n >* * * >Bug 589299 - Make the DOM Nodes viewer currentIndex-clean and do more intelligent rebuilding (phase 1), r=neil >* * * >Bug 589299 - Make the DOM Nodes viewer currentIndex-clean and do more intelligent rebuilding (phase 2), r=neil >* * * >Bug 588071 - Add "Inspect in New Window" to the Edit menu and give it a shortcut (cleanup), r=neil >* * * >Bug 588071 - Add "Inspect in New Window" to the Edit menu and give it a shortcut (phase 2 - consolidate Inspect in New Window entities from dom.dtd and inspector.dtd), r=neil >* * * >Bug 588071 - Add "Inspect in New Window" to the Edit menu and give it a shortcut (phase 3 - wire up dom viewer), r=neil >* * * >Bug 588071 - Add "Inspect in New Window" to the Edit menu and give it a shortcut (phase 4 - jsObjectViewer.js cleanup), r=neil >* * * >Bug 588071 - Add "Inspect in New Window" to the Edit menu and give it a shortcut (phase 4 - make jsObjectViewer currentIndex-clean and wire up cmdEditInspectInNewWindow), r=neil >* * * >Bug 588071 - Add "Inspect in New Window" to the Edit menu and give it a shortcut (phase 5 - make accessibleTree viewer currentIndex-clean and wire up cmdEditInspectInNewWindow), r=neil >* * * >Bug 588071 - Add "Inspect in New Window" to the Edit menu and give it a shortcut (phase 6 - make accessibleProps viewer currentIndex-clean and wire up cmdEditInspectInNewWindow), r=neil >* * * >Bug 588071 - Add "Inspect in New Window" to the Edit menu and give it a shortcut (phase 7 - make accessibleRelations viewer currentIndex-clean and wire up cmdEditInspectInNewWindow), r=neil >* * * >Bug 588071 - Add "Inspect in New Window" to the Edit menu and give it a shortcut (phase 8 - shuffle non-English entities around), r=neil >* * * >Bug stylesheets/Inspect in New Window cleanup >* * * >Bug stylesheets/Inspect in New Window real changes >* * * >Backed out changeset b2d8d0859260 (unintentional push) >* * * >Backed out changeset 8ae572b60821 (unintentional push) >* * * >Bug 588071 - Add "Inspect in New Window" to the Edit menu and give it a shortcut (jsObjectViewer.js cleanup, don't break string literal onto multiple lines), in response to a followup comment by neil >* * * >Bug 606821 - Add Inspect in New Window to stylesheets viewer (cleanup), r=neil >* * * >Bug 606821 - Add Inspect in New Window to stylesheets viewer (real changes), r=neil >* * * >Update Russian l10n for Bug 588071 >* * * >Bug 589300 - DOM Nodes viewer's context menu's Paste and Insert menus should be disabled if no items are enabled, r=neil >* * * >Bug 607080 - Add Copy URI and View File to stylesheets viewer's context menu (phase 1: cleanup), r=neil >* * * >Bug 607080 - Add Copy URI and View File to stylesheets viewer's context menu (phase 2: move strings and menuitems into shared overlays), r=neil >* * * >Bug 607080 - Add Copy URI and View File to stylesheets viewer's context menu (phase 3: move the transactions to shared file, and wire up Style Sheets and CSS Rules viewers), r=neil >* * * >Bug 607080 - Add Copy URI and View File to stylesheets viewer's context menu (phase 4: move non-English entities around), r=neil >* * * >Update Russian l10n for Bug 607080 >* * * >Bug 611629 - dead code removal: utilWindow.xul, r=neil >* * * >Bug 609789 - inBaseCommand for all your transaction prototype needs (phase 1: clean up computedStyle.xul), r=neil >* * * >Bug 609789 - inBaseCommand for all your transaction prototype needs (phase 2: make some required additions to inBaseCommand), r=neil >* * * >Bug 609789 - inBaseCommand for all your transaction prototype needs (phase 3: switch txn* consumers over to inBaseCommand), r=neil >* * * >Bug 609789 - inBaseCommand for all your transaction prototype needs (phase 4: get rid of the rest of the transaction stuff in utils.js, moving to baseCommands.js where appropriate), r=neil >* * * >Bump DOM Inspector's max version for Thunderbird as 3.3a1 is about to be tagged. Blanket-rs=sdwilsh >* * * >Bug 612333 - Add tooltips to inspect menus, r=neil >* * * >Bug 610114 - [fr] DOMi update >* * * >Bug 112674 - Inspect Contained Document followed by view Stylesheets screw ups, r=neil >* * * >Finnish translation for DOMi >* * * >Update German L10n to current trunk >* * * >Bug 617053 - "Error: getSelectedItem is not defined" when switching from jsObject viewer to dom viewer in document pane, r=neil >* * * >Bug 620604 - Rev DOM Inspector maxversion for FF4 to 4.0b9pre. r=Callek >* * * >Bug 620149 - Unable to select or scroll properties tree in CSS Rules viewer after undoing a deletion, r=neil >* * * >Bug 613718 - Add Copy URI and View File to XBL Bindings Viewer (phase 1), r=neil >* * * >Bug 613718 - Add Copy URI and View File to XBL Bindings Viewer (phase 2: eliminate wrappedJSObject), r=neil >* * * >Bug 256244 - Unable to navigate DOM Inspector without mouse (mouselessly) (phase 1: add viewer list menupopups accessible from the menubar), r=neil >* * * >Bug 256244 - Unable to navigate DOM Inspector without mouse (mouselessly) (phase 2: do some caching), r=neil >* * * >Bug 256244 - Unable to navigate DOM Inspector without mouse (mouselessly) (phase 3: put panels' menulists in the tab order for except for the full inspector), r=neil >* * * >Update Russian l10n for Bug 256244 >* * * >Bug 619216 - update Polish L10n files for DOMi. r=crussell >* * * >Bug 615156 - Add Enhanced BOX MODEL Viewer, showing All Data at once + bold style for significant data (value!=0) >* * * >Update Russian l10n for Bug 615156 >* * * >Update Russian l10n for Bug 615156 >* * * >update German L10n for recent additions >* * * >Bump DOM Inspector's max version for Thunderbird as 3.3a2 is about to be tagged. Blanket-rs=sdwilsh >* * * >[sk] Updating DOMi for bugs 551404, 588071, 607080, 256244, 615156 >* * * >[Bug 626482] [fr] DOMi update >* * * >Bug 630167 - update Polish L10n files for DOMi Bug 615156. r=crussell >* * * >Bug 631286 - Update DOMi compat info for SeaMonkey 2.1b2; (Av1a) Update FF to 4.0.* and SM to 2.1b3, s/Suite/SeaMonkey/. >f=KaiRo rs=sdwilsh. >* * * >Bug 592530 - (DOMi2.0.9) DOM Inspector 2.0.9 >* * * >Bump version number to 2.0.10pre. No bug. >* * * >Bug 623372 - Node type and namespace fields get in the way when using the Insert Node dialog, r=neil >* * * >Bug 639456 Make Inspector's URL bar look a little nicer r=crussell >* * * >Bump DOM Inspector's max version for Thunderbird as 3.3a3 is about to be tagged. Blanket-rs=sdwilsh >* * * >Bump DOM Inspector's max version for Thunderbird as 3.4a1pre builds are now possible on the new trunk. Blanket-rs=sdwilsh >* * * >Bug 644433, bump SeaMonkey's version number. >* * * >Bug 660311 - sv-SE localization >* * * >Back out changeset 183299e8fbd0 >* * * >Bug 660311 - sv-SE localization >* * * >Bug 310370 - Cannot delete multiple selected nodes simultaneously, r=neil >* * * >Bump fx, tb version numbers. No bug. >* * * >Bug 310370 - Cannot delete multiple selected nodes simultaneously. >* * * >Bug 389547 - use .selectedIndex instead of setAttribute("selectedIndex", ...), r=neil >* * * >Bug 661538 - Dead code removal: _toXML, r=neil >* * * >Bug 656858 - Move DOM Inspector menuitem to the new Tools/Web Developer sub-menu, r=neil >* * * >Update Russian l10n for Bug 310370 >* * * >Bug 662619 - Bump DOM Inspector compatibility for SeaMonkey 2.4 rs=sdwilsh >* * * >Bump DOM Inspector compatibility for latest Thunderbird trunk nightly version. Blanket rs=sdwilsh >* * * >update German L10n for bug 310370 >* * * >Bug 661466 - Refactor utils.js clipboard flavors (Phase 1: Move CSSDeclaration and DOMAttribute from utils.js to jsutil/system/clipboardFlavors.js), r=neil >* * * >Bug 661466 - Refactor utils.js clipboard flavors (Phase 2: Rename CSSDeclaration to CSSProperty and make entailing viewer changes), r=neil >* * * >Bug 643924 - JavaScript Object viewer shouldn't indefinitely cache object keys, r=neil >* * * >Bug 609789 - inBaseCommand for all your transaction prototype needs (reopened - remove TODO item mentioning this bug), r=neil >* * * >Bug 664355 - Maintain view selection and position across nodes for Computed Style viewer (computedStyle.js cleanup), r=neil >* * * >Bug 664355 - Maintain view selection and position across nodes for Computed Style viewer (copy view stuff and position across views), r=neil >* * * >Bug 193942 - Fix selection in JSObject viewer (left panel) to update right panel, r=neil >* * * >Bug 664184 - Mistakes in JavaScript Object viewer implementation, r=neil >* * * >Bug 264748 - Allow localization of DOMI resource file, r=neil >* * * >[l10n][fr] Bug 264748 - Allow localization of DOMI resource file. >* * * >[l10n][ru] Bug 264748 - Allow localization of DOMI resource file >* * * >Bump toolkit version number. No bug. >* * * >Bump fx, tb, toolkit version numbers. No bug. >* * * >[l10n][sv-SE] Bug 310370 - Cannot delete multiple selected nodes simultaneously >* * * >Bug 670218 - Need to branch and release DOMi 2.0.10 for SeaMonkey 2.2 (bump default branch version number to 2.0.11pre) >* * * >sync de L10n with recent inspector changes in bug 264748 >* * * >[sk] update for Slovak DOMi 2.0.10 >* * * >Bug 672777 - Bump DOM Inspector compatibility for SeaMonkey 2.5 rs=sdwilsh >* * * >Bump DOM Inspector compatibility for latest Firefox and Thunderbird trunk nightly version. Blanket rs=sdwilsh >* * * >Bump DOM Inspector compatibility for SeaMonkey 2.6 rs=sdwilsh >* * * >Bug 690153 - Bump DOM Inspector compatibility for SeaMonkey 2.7 / Firefox 10.0 / Thunderbird 10.0 rs=sdwilsh >* * * >Bug 159027 - Rename menu item View/Browser with View/Document in Browser Pane. r=crussell >* * * >[L10n][pl] Update Polish localization on default branch >* * * >Update Russian l10n for Bug 159027 >* * * >[l10n][fr] Bug 159027 - Rename menu item View/Browser with View/Document in Browser Pane. >* * * >Update Slovak l10n for Bug 159027 >* * * >re-enable FR L10n accidently removed in previous commit >* * * >Backing out incorrect patch for bug 690153 >* * * >Bug 690153 - Bump DOM Inspector compatibility for SeaMonkey 2.7 / Firefox 10.0 / Thunderbird 10.0 rs=sdwilsh >* * * >update German L10n for bug 159027 >* * * >Bug 553364 - allow user handlers for accessible events, r=colby >* * * >Bug 553364 - followup fixes >* * * >Bug 567713 - accessibleEvent view should show changed state rather than current state of accessible, r=colby, davidb, sr=neil >* * * >[l10n][fr] Bug 553364 - allow user handlers for accessible events. >* * * >[l10n][fr] Bug 553364 - allow user handlers for accessible events. Adding a missing space in Makefile.in. >* * * >Update Russian l10n for Bug 553364 >* * * >Update German l10n for bug 553364 >* * * >Bug 121188 - Remove references to dialogOverlay.css in allskin.xul. r=Neil >* * * >Bug 537994 - Get rid of unused util.dtd. r=Sevenspade >* * * >Update Slovak l10n for bug 553364 >* * * >Bug 702057 - Bump DOM Inspector compatibility for SeaMonkey 2.8 / Firefox 11.0 / Thunderbird 11.0 rs=sdwilsh >* * * >Bug 147174 - 'nodeName' column header in DOM inspector is confusing. r=Sevenspade >* * * >[l10n][fr] Bug 147174 - 'nodeName' column header in DOM inspector is confusing. >* * * >Update Russian l10n for Bug 147174 >* * * >Update Slovak l10n for Bug 147174 >* * * >update de L10n for bug 147174 >* * * >Update FI l10n, bug 705250, rev=Ville >* * * >Bug 646519 No DOM Inspector window icon since Gecko 2 r=Neil >* * * >Bug 532809 - minVersion of DOMi for Sunbird should be lowered to 1.0b1pre >* * * >Bump DOM Inspector compatibility for Sunbird to 5.0b2pre. No bug. >* * * >Bug 715367 - Add en-GB localisation for DOM Inspector r=crussell >* * * >Bug 672819 - Disable Browser menuitem in View menu when inspected document isn't in the browser pane >* * * >Bug 725565 - update DOMi since nsIAccessNode interface was removed, r=neil >* * * >Bug 567968 - show role and name of event accessible target in event list, r=colby, sr=neil >* * * >Bug 698181 - add outputAttrs function for accessibleEvent viewers, r=crussel >* * * >Bug 725571 - make property values of accessibleProperties view selectable, r=neil >* * * >[l10n][fr] Bug 567968 - show role and name of event accessible target in event list. >* * * >[l10n][fr] Bug 698181 - add outputAttrs function for accessibleEvent viewers. >* * * >[l10n][fr] Bug 725571 - make property values of accessibleProperties view selectable. >* * * >[l10n][ru] Bug 567968 - show role and name of event accessible target in event list. >* * * >[l10n][ru] Bug 698181 - add outputAttrs function for accessibleEvent viewers. >* * * >[l10n][ru] Bug 725571 - make property values of accessibleProperties view selectable. >* * * >Bug 725908 - check 'enable event handler' checkbox of AccessibleEvents viewer when user starts typing the event handler, r=neil >* * * >Bug 727380 - custom event handler isn't updated if selecting other event, r=neil >* * * >Bug 728766 - outputTree's tree of Accessible Event view should have treelines, r=neil >* * * >Bug 725573 - make outputTree function of accessibleEvents viewer to expand tree, r=neil >* * * >Bug 725575 - add outputDOMAttrs function to accessibleEvents viewer, r=crussell >* * * >[l10n][fr] Bug 725575 - add outputDOMAttrs function to accessibleEvents viewer. >* * * >Bug 658776 - Search API for JS dialog (accessible tree viewer), r=crussell >* * * >Update Russian L10n for bug 725575 and bug 658776 >* * * >[l10n][fr] Bug 658776 - Search API for JS dialog (accessible tree viewer). >* * * >Bug 509628 - Some DOM Inspector menu items lack ID's. r=Sevenspade >* * * >Bug 509880 - DOMi context menu items lack ID's. r=Sevenspade >* * * >Bug 730690 - Bump DOM Inspector compatibility for SeaMonkey 2.10 / Firefox 13.0 / Thunderbird 13.0. rs=sdwilsh >* * * >sync de L10n with current state of inspector again >* * * >[sk][l10n] sync sk L10n with current state of inspector (for bugs 567968, 725571, 698181, 725575, 658776) >* * * >Bug 716554 - upgrade license to MPL 2. r=sevenspade. >* * * >Bug 736347 - Bump DOM Inspector compatibility for Firefox 14.0a1 / SeaMonkey 2.11a1 / Thunderbird 14.0a1 / (Gecko) Toolkit 14.0a1. rs=sdwilsh. >* * * >Bug 733373. (Av1) Use '.*' syntax (instead of 'a1') for compatibility with FF/SM/TB/Tk. r=crussell. >* * * >Bug 736625 - en-GB localization for DOM Inspector 2.0.11 >* * * >[l10n][sv-SE] Bug 736606 - Swedish localization for DOM Inspector 2.0.11 >* * * >Bug 670224 - (DOMi2.0.11) DOM Inspector 2.0.11 >* * * >Backout b91b5e9b53c1 and b91b5e9b53c1 due to uninteroperability with AMO >* * * >Backout changeset ee98524b59af due to uninteroperability with AMO >* * * >Bug 670224 - (DOMi2.0.11) DOM Inspector 2.0.11 >* * * >Bug 738048 - (DOMi2.0.12) DOM Inspector 2.0.12 (bump version number to 2.0.12pre) >* * * >Bug 738054 Setting :focus in DOM pseudoClass dialog doesn't work r=crussell >* * * >Bug 733373. (Dv1a) Documentation improvements. r=crussell. >* * * >Bug 639455 - Reference to communicator skin from inspector skin >* * * >Bug 346854 - DOM Inspector, Inspect URL dialog accessibility issues, r=crussell >* * * >Revert changeset bbb08097cdd8 (wrong attribution) >* * * >Bug 346854 - DOM Inspector, Inspect URL dialog accessibility issues, r=crussell >* * * >Bug 748542 - (DOMi2.0.13) DOM Inspector 2.0.13 (bump version number to 2.0.13pre) >* * * >Bug 748634. Bump DOM Inspector compatibility for Firefox 15.0a1 / SeaMonkey 2.12a1 / Thunderbird 15.0a1 / (Gecko) Toolkit 15.0a1. rs=sdwilsh. >* * * >Bug 738228 Add an option to display used font faces for a node r=crussell >* * * >Update Russian L10n for Bug 738228 >* * * >Update Russian L10n for Bug 738228 >* * * >add German L10n for bug 738228 >* * * >Bug 746111 - Accessible object viewers should be available unconditionally for Accessible Tree viewer, r=neil >* * * >Bug 760393 - ignore hide events targeted to not watched document, r=neil >* * * >Bug 332328 - WARNING: NS_ENSURE_TRUE(!(aColor.IsEmpty())) failed: file r:/mozilla/extensions/inspector/base/src/inFlasher.cpp, line 88; r=crussell >* * * >[sk][l10n] Bug 738228 Add an option to display used font faces for a node >* * * >Bug 726500 Space key should toggle watched event r=Neil f=surkov >* * * >Bug 768320. (Av1) Bump DOM Inspector compatibility for Firefox 16.0a1 / SeaMonkey 2.13a1 / Thunderbird 16.0a1 / (Gecko) Toolkit 16.0a1. rs=sdwilsh. >* * * >Bug 767841 Locales don't need to be preprocessed r=crussell >* * * >Bug 773018 - (DOMi2.0.14) DOM Inspector 2.0.14 (bump version number to 2.0.14pre) >* * * >Polish localization for DOMi 2.0.14pre >* * * >Bug 784482 Add DOM Inspector to Thunderbird's AppMenu r=Neil >* * * >No Bug - Update Compat Versions. rs=sdwilsh >* * * >Bug 746107 - add outputTextAttrs helper function to JSDialog of AccessibleTree view, r=neil >* * * >Bug 746111 follow up, fix set subject function of style rules viewer, r=neil >* * * >Bug 725644 - make outputTree(target.document, [target]) working for hide event target, r=neil >* * * >Bump tb, toolkit version numbers. No bug. >* * * >Bug 798174 - (DOMi2.0.15) DOM Inspector 2.0.15 (bump version number to 2.0.15pre) >* * * >No Bug - Update Compat Versions. rs=sdwilsh >* * * >No Bug, update compat vers. rs=sdwilsh >* * * >Bug 838076 - action tabpanel in accessibility properties viewer doesn't work, r=neil >* * * >Bug 838508 - add a text attributes inspection tab to accessible properties viewer, r=neil >* * * >[sk] Bug 838508 - add a text attributes inspection tab to accessible properties viewer >* * * >[ru] Bug 838508 - add a text attributes inspection tab to accessible properties viewer >* * * >No Bug - Update compat versions >* * * >Bug 846524 - Part 4: Convert to moz.build files; r=gps >* * * >Bug 846524 - Followup: Remove obsoleted SUBMAKEFILES assignment; r=RattyAway over IRC >* * * >bug 407956 - inspector changes f=surkov r=sevenspade >* * * >Bug 853242 - Move "MODULE" in DOM Inspector Makefiles to moz.build files, r=gps >* * * >No Bug, update compat vers. rs=sdwilsh >* * * >[en-GB] Bug 838508 - add a text attributes inspection tab to accessible properties viewer >* * * >Bug 867540 - Search by attribute treats missing attribute as the string "null", r=crussell >* * * >Bug 865008 - Search by "ID" never finds any results, r=neil >* * * >Bug 868170 - function DVr_ShowNodeInTree does not always return a value, r=neil >* * * >Bug 868175 - Warning: octal literals and octal escape sequences are deprecated, r=neil >* * * >Bug 874012 - Finnish l10n for DOM Inspector >* * * >No Bug, update compat vers. rs=sdwilsh >* * * >Bug 833164, part2 - fix DOMi to pick up interface changes, r=neil >* * * >Polish L10n for Bug 838508 - add a text attributes inspection tab to accessible properties viewer >* * * >update de L10n and re-add it >* * * >Port bug 939044 to DOM Inspector, rs=bustage-fix >Port Bug 931017, part 2: Move FINAL_TARGET and friends to moz.build >* * * >Bug 947803 - Remove unused NO_JAR_AUTO_REG; r=glandium >* * * >Bug 952120 - Port bug 774572 (Define JAR_MANIFESTS in moz.build files) to DOMi, r=glandium >* * * >Fix bug #996074. Remove xpcnativewrappers=no directive from DOMi. r=Neil >* * * >Bug 368608 Rewrite DOM Inspector's flasher r=Ratty >* * * >Bug 957149 - (DOMi2.0.15) DOM Inspector 2.0.15 a=release >* * * >Back out release attempts >* * * >Bug 957149 - DOM Inspector 2.0.15 - Bump version to 2.0.16pre >* * * >Aviary.pl Issue 3737 - ZmieniÄ wszÄdzie cudzysÅowy na polskie drukarskie >* * * >Fix spelling mistakes in Polish DOM Inspector >* * * >No Bug, update compat vers. rs=sdwilsh >* * * >Add Pale Moon support to install.rdf and to jar.mn (chrome.manifest) r=Ratty >* * * >Bug 1112690 Make the dialog for "Edit/New Attribute" Resizable r=Neil >* * * >Bug 1115036 - Update el (Greek) locale for DOM Inspector. L10n by George Malamas <nightgeorgy@yahoo.com> >* * * >Bug 1128291 - Move PREF_JS_EXPORTS to moz.build in DOM Inspector >* * * >Remove nonstandard let blocks from the DOM Inspector r=Neil >* * * >Bug 1147685 Build inspector-cmdline.js again r=glandium,IanN >* * * >Fix bug 1158751 - Port NO_JS_MANIFEST changes. r=IanN >* * * >Bug 1158774 - Port |Bug 1155776 - move USE_EXTENSION_MANIFEST to moz.build| to comm-central - DOMi port r=Ratty >* * * >Bug 1162694 - Remove XULAPP_DEFINES from DOM Inspector r=Ratty >* * * >Bug 522934 - sv-SE l10n update for DOMi, r=stefanh. >* * * >Bug 1165696 - Enable sv-SE in DOMi. r=Ratty. >* * * >Bump application max versions for DOMi 2.0.16 >* * * >Bump DOMi version to 2.0.16 >* * * >Bump DOMi version to 2.0.17pre >* * * >Backout cset c89fa53ff4e9 for comm-release bustage. >* * * >Backout cset f66946b1ca57 >* * * >Bug 1227305 - ReferenceError: can't access lexical declaration `max' before initialization declaration `max' before initialization r=Neil >* * * >Bug 1229803 - Port Bug 1228444 (Rename DIST_FILES to FINAL_TARGET_PP_FILES) to DOM Inspector r=IanN >* * * >Bug 1291884 - Replace legacy Drag and Drop observers. r=Ratty >* * * >Bug 1299673 - Skip undefined contentDocument's r=IanN >* * * >Bug 1313906 - Remove the overlay to globalOverlay.xul. r=IanN >* * * >Bug 1324905 - convert nsISupportsArray in mozilla/extensions/inspector,r=philip.chee >* * * >Bug 1324899 - Port bug 1322414 (remove content-primary) to DOM Inspector. r=Ratty >* * * >Bug 1388275 - Port Bug 1374847. Rename nsIPrefBranch2 to nsIPrefBranch. r=IanN >* * * >Bug 1404423 - Fix DOMi for Gecko 57 and up. r=IanN > >diff --git a/suite/extensions/inspector/Makefile.in b/suite/extensions/inspector/Makefile.in >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/Makefile.in >@@ -0,0 +1,30 @@ >+# >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+ >+DEPTH = ../.. >+topsrcdir = @top_srcdir@ >+srcdir = @srcdir@ >+VPATH = @srcdir@ >+ >+include $(DEPTH)/config/autoconf.mk >+ >+DOMi_VERSION = 2.0.17.2 >+ >+XPI_NAME = inspector >+INSTALL_EXTENSION_ID = inspector@mozilla.org >+XPI_PKGNAME = inspector-$(DOMi_VERSION) >+ >+DIST_FILES = install.rdf >+ >+DEFINES += -DDOMi_VERSION=$(DOMi_VERSION) >+ >+include $(topsrcdir)/config/rules.mk >+ >+export:: >+ $(NSINSTALL) -D $(FINAL_TARGET)/chrome/icons/default >+ $(INSTALL) $(srcdir)/resources/content/res/Linux/winInspectorMain.xpm $(FINAL_TARGET)/chrome/icons/default >+ $(INSTALL) $(srcdir)/resources/content/res/Linux/winInspectorMain16.xpm $(FINAL_TARGET)/chrome/icons/default >+ $(INSTALL) $(srcdir)/resources/content/res/WINNT/winInspectorMain.ico $(FINAL_TARGET)/chrome/icons/default >diff --git a/suite/extensions/inspector/base/js/inspector-cmdline.js b/suite/extensions/inspector/base/js/inspector-cmdline.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/base/js/inspector-cmdline.js >@@ -0,0 +1,60 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); >+ >+const nsICommandLineHandler = Components.interfaces.nsICommandLineHandler; >+const nsISupportsString = Components.interfaces.nsISupportsString; >+const nsIWindowWatcher = Components.interfaces.nsIWindowWatcher; >+ >+function InspectorCmdLineHandler() {} >+InspectorCmdLineHandler.prototype = >+{ >+ classDescription: "DOM Inspector Command Line Handler", >+ classID: Components.ID("{38293526-6b13-4d4f-a075-71939435b408}"), >+ contractID: "@mozilla.org/commandlinehandler/general-startup;1?type=inspector", >+ /* Needed for XPCOMUtils NSGetModule */ >+ _xpcom_categories: [{category: "command-line-handler", >+ entry: "m-inspector"}], >+ >+ /* nsISupports */ >+ QueryInterface: XPCOMUtils.generateQI([nsICommandLineHandler]), >+ >+ /* nsICommandLineHandler */ >+ handle : function handler_handle(cmdLine) { >+ var args = Components.classes["@mozilla.org/supports-string;1"] >+ .createInstance(nsISupportsString); >+ try { >+ var uristr = cmdLine.handleFlagWithParam("inspector", false); >+ if (uristr == null) >+ return; >+ try { >+ args.data = cmdLine.resolveURI(uristr).spec; >+ } >+ catch (e) { >+ return; >+ } >+ } >+ catch (e) { >+ cmdLine.handleFlag("inspector", true); >+ } >+ >+ var wwatch = Components.classes["@mozilla.org/embedcomp/window-watcher;1"] >+ .getService(nsIWindowWatcher); >+ wwatch.openWindow(null, "chrome://inspector/content/", "_blank", >+ "chrome,dialog=no,all", args); >+ }, >+ >+ helpInfo : " -inspector <url> Open the DOM inspector.\n" >+}; >+ >+ >+/** >+ * XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4). >+ * XPCOMUtils.generateNSGetModule is for Mozilla 1.9.0 (Firefox 3.0). >+ */ >+if (XPCOMUtils.generateNSGetFactory) >+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([InspectorCmdLineHandler]); >+else >+ var NSGetModule = XPCOMUtils.generateNSGetModule([InspectorCmdLineHandler]); >diff --git a/suite/extensions/inspector/build/Makefile.in b/suite/extensions/inspector/build/Makefile.in >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/build/Makefile.in >@@ -0,0 +1,14 @@ >+# >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+DEPTH=../../.. >+topsrcdir=@top_srcdir@ >+srcdir=@srcdir@ >+VPATH=@srcdir@ >+ >+include $(DEPTH)/config/autoconf.mk >+ >+include $(topsrcdir)/config/rules.mk >+ >diff --git a/suite/extensions/inspector/build/install.js b/suite/extensions/inspector/build/install.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/build/install.js >@@ -0,0 +1,26 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+var gVersion = "0.5"; >+ >+var err = initInstall("DOM Inspector", "inspector", gVersion); >+logComment("initInstall: " + err); >+ >+var fProgram = getFolder("Program"); >+logComment("fProgram: " + fProgram); >+ >+err = addDirectory("", gVersion, "bin", fProgram, "", true); >+logComment("addDirectory: " + err); >+ >+registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","inspector.jar"), "content/inspector/"); >+registerChrome(LOCALE | DELAYED_CHROME, getFolder("Chrome","inspector.jar"), "locale/en-US/inspector/"); >+registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","inspector.jar"), "skin/modern/inspector/"); >+registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","inspector.jar"), "skin/classic/inspector/"); >+ >+if (getLastError() == SUCCESS) { >+ err = performInstall(); >+ logComment("performInstall: " + err); >+} else { >+ cancelInstall(err); >+} >diff --git a/suite/extensions/inspector/build/moz.build b/suite/extensions/inspector/build/moz.build >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/build/moz.build >@@ -0,0 +1,8 @@ >+# vim: set filetype=python: >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+DIRS += [ >+ 'src', >+] >diff --git a/suite/extensions/inspector/install.rdf b/suite/extensions/inspector/install.rdf >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/install.rdf >@@ -0,0 +1,135 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+#filter substitution >+ >+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >+ xmlns:em="http://www.mozilla.org/2004/em-rdf#"> >+ <Description about="urn:mozilla:install-manifest"> >+ <em:id>inspector@mozilla.org</em:id> >+ <em:version>@DOMi_VERSION@</em:version> >+ <em:type>2</em:type> >+ <em:multiprocessCompatible>false</em:multiprocessCompatible> >+ >+ <!-- DOM Inspector supports Gecko 2.0.0 and higher. >+ All applications listed below are the subset of supported versions >+ which also use an appropriate version of Gecko. --> >+ <!-- For maxVersion of applications that follow the rapid cycle pattern, >+ use '(x)a1' (*-central) on default, >+ and '(x-1).*' (*-aurora/beta/release) for branches. --> >+ >+ <!-- Fennec --> >+ <em:targetApplication> >+ <Description> >+ <em:id>{a23983c0-fd0e-11dc-95ff-0800200c9a66}</em:id> >+ <em:minVersion>4.0</em:minVersion> >+ <em:maxVersion>56.0</em:maxVersion> >+ </Description> >+ </em:targetApplication> >+ >+ <!-- Firefox >+ 3.0 is Gecko 1.9.0 >+ 3.5 is Gecko 1.9.1 >+ 3.6 is Gecko 1.9.2 >+ 4.0 is Gecko 2.0 >+ 5.0 is Gecko 5.0 >+ x.0 is Gecko x.0, where x is greater than 5 --> >+ <em:targetApplication> >+ <Description> >+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> >+ <em:minVersion>4.0</em:minVersion> >+ <em:maxVersion>56.0</em:maxVersion> >+ </Description> >+ </em:targetApplication> >+ >+ <!-- SeaMonkey >+ 2.0 is Gecko 1.9.1 >+ 2.1 is Gecko 2.0 >+ 2.2 is Gecko 5.0 >+ 2.x is Gecko (x+3).0, where x is greater than 2 --> >+ <em:targetApplication> >+ <Description> >+ <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id> >+ <em:minVersion>2.1</em:minVersion> >+ <em:maxVersion>2.56</em:maxVersion> >+ </Description> >+ </em:targetApplication> >+ >+ <!-- Pale Moon --> >+ <em:targetApplication> >+ <Description> >+ <em:id>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</em:id> >+ <em:minVersion>25.0</em:minVersion> >+ <em:maxVersion>27.*</em:maxVersion> >+ </Description> >+ </em:targetApplication> >+ >+ <!-- Sunbird --> >+ <em:targetApplication> >+ <Description> >+ <em:id>{718e30fb-e89b-41dd-9da7-e25a45638b28}</em:id> >+ <em:minVersion>1.0b1pre</em:minVersion> >+ <em:maxVersion>5.0b2pre</em:maxVersion> >+ </Description> >+ </em:targetApplication> >+ >+ <!-- Thunderbird >+ 3.0 is Gecko 1.9.1 >+ 3.1 is Gecko 1.9.2 >+ 5.0 is Gecko 5.0 >+ x.0 is Gecko x.0, where x is greater than 5 --> >+ <em:targetApplication> >+ <Description> >+ <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id> >+ <em:minVersion>4.0</em:minVersion> >+ <em:maxVersion>59.0</em:maxVersion> >+ </Description> >+ </em:targetApplication> >+ >+ <!-- Gecko Toolkit >+ version 2.0.0 and higher --> >+ <em:targetApplication> >+ <Description> >+ <em:id>toolkit@mozilla.org</em:id> >+ <em:minVersion>2.0</em:minVersion> >+ <em:maxVersion>59.0</em:maxVersion> >+ </Description> >+ </em:targetApplication> >+ >+ <!-- front-end metadata --> >+ <em:name>DOM Inspector</em:name> >+ <em:description>Inspects the structure and properties of a window and its contents.</em:description> >+ <em:creator>mozilla.org</em:creator> >+ <em:homepageURL>http://www.mozilla.org/projects/inspector/</em:homepageURL> >+ >+ <em:localized> >+ <Description> >+ <em:locale>sk</em:locale> >+ <em:name>DOM Inspector</em:name> >+ <em:description>Umožnà preskúmaÅ¥ Å¡truktúru a vlastnosti okna a jeho obsahu.</em:description> >+ </Description> >+ </em:localized> >+ >+ <em:localized> >+ <Description> >+ <em:locale>sv-SE</em:locale> >+ <em:name>DOM-granskaren (DOM Inspector)</em:name> >+ <em:description>Granskar strukturen och egenskaperna för ett fönster och dess innehÃ¥ll.</em:description> >+ </Description> >+ </em:localized> >+ >+ <em:localized> >+ <Description> >+ <em:locale>el</em:locale> >+ <em:name>ÎÏιθεÏÏηÏÎ®Ï DOM</em:name> >+ <em:description>ÎÏιθεÏÏεί Ïη δομή και ÏÎ¹Ï Î¹Î´Î¹ÏÏηÏÎµÏ ÎµÎ½ÏÏ ÏαÏαθÏÏÎ¿Ï ÎºÎ±Î¹ ÏÏν ÏεÏιεÏομÎνÏν ÏÎ¿Ï .</em:description> >+ </Description> >+ </em:localized> >+ >+ <!-- Force unpack the xpi, otherwise window icons do not work >+ on Gecko 2.0 and higher. --> >+ <em:unpack>true</em:unpack> >+ </Description> >+</RDF> >diff --git a/suite/extensions/inspector/jar.mn b/suite/extensions/inspector/jar.mn >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/jar.mn >@@ -0,0 +1,199 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+inspector.jar: >+% content inspector %content/inspector/ >+# SeaMonkey >+% overlay chrome://inspector/content/inspector.xul chrome://communicator/content/utilityOverlay.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} >+% overlay chrome://inspector/content/inspector.xul chrome://communicator/content/tasksOverlay.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} >+% overlay chrome://communicator/content/tasksOverlay.xul chrome://inspector/content/tasksOverlay.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} >+% overlay chrome://communicator/content/pref/preferences.xul chrome://inspector/content/prefs/prefsOverlay.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} >+# ChatZilla >+% overlay chrome://chatzilla/content/chatzilla.xul chrome://inspector/content/tasksOverlay-cz.xul application={59c81df5-4b7a-477b-912d-4e0fdf64e5f2} >+# Calendar >+% overlay chrome://sunbird/content/calendar.xul chrome://inspector/content/tasksOverlay-sb.xul application={718e30fb-e89b-41dd-9da7-e25a45638b28} >+# Firefox >+% overlay chrome://browser/content/browser.xul chrome://inspector/content/tasksOverlay-ff.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} >+% overlay chrome://browser/content/macBrowserOverlay.xul chrome://inspector/content/tasksOverlay-ff.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} >+% overlay chrome://inspector/content/inspector.xul chrome://browser/content/baseMenuOverlay.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} >+# Pale Moon >+% overlay chrome://browser/content/browser.xul chrome://inspector/content/tasksOverlay-ff.xul application={8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4} >+% overlay chrome://browser/content/macBrowserOverlay.xul chrome://inspector/content/tasksOverlay-ff.xul application={8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4} >+% overlay chrome://inspector/content/inspector.xul chrome://browser/content/baseMenuOverlay.xul application={8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4} >+# Fennec >+% overlay chrome://browser/content/browser.xul chrome://inspector/content/tasksOverlay-mobile.xul application={a23983c0-fd0e-11dc-95ff-0800200c9a66} >+# Thunderbird >+% overlay chrome://messenger/content/mailWindowOverlay.xul chrome://inspector/content/tasksOverlay-tb.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6} >+# Songbird >+% overlay chrome://browser/content/browser.xul chrome://inspector/content/tasksOverlay-ff.xul application=songbird@songbirdnest.com >+# Common >+% overlay chrome://inspector/content/commandOverlay.xul chrome://inspector/content/viewers/dom/commandOverlay.xul >+% overlay chrome://inspector/content/commandOverlay.xul chrome://inspector/content/viewers/styleRules/commandOverlay.xul >+% overlay chrome://inspector/content/keysetOverlay.xul chrome://inspector/content/viewers/dom/keysetOverlay.xul >+% overlay chrome://inspector/content/popupOverlay.xul chrome://inspector/content/viewers/dom/popupOverlay.xul >+% overlay chrome://inspector/content/popupOverlay.xul chrome://inspector/content/viewers/styleRules/popupOverlay.xul >+#ifdef XPI_NAME >+% component {38293526-6b13-4d4f-a075-71939435b408} components/inspector-cmdline.js >+% contract @mozilla.org/commandlinehandler/general-startup;1?type=inspector {38293526-6b13-4d4f-a075-71939435b408} >+% category command-line-handler m-inspector @mozilla.org/commandlinehandler/general-startup;1?type=inspector >+#endif >+ content/inspector/inspector.xul (resources/content/inspector.xul) >+ content/inspector/inspector.js (resources/content/inspector.js) >+ content/inspector/inspector.css (resources/content/inspector.css) >+ content/inspector/inspector.xml (resources/content/inspector.xml) >+ content/inspector/sidebar.xul (resources/content/sidebar.xul) >+ content/inspector/sidebar.js (resources/content/sidebar.js) >+ content/inspector/object.xul (resources/content/object.xul) >+ content/inspector/object.js (resources/content/object.js) >+ content/inspector/inspectorOverlay.xul (resources/content/inspectorOverlay.xul) >+ content/inspector/toolboxOverlay.xul (resources/content/toolboxOverlay.xul) >+ content/inspector/commandOverlay.xul (resources/content/commandOverlay.xul) >+ content/inspector/keysetOverlay.xul (resources/content/keysetOverlay.xul) >+ content/inspector/popupOverlay.xul (resources/content/popupOverlay.xul) >+ content/inspector/statusbarOverlay.xul (resources/content/statusbarOverlay.xul) >+ content/inspector/tasksOverlay.xul (resources/content/tasksOverlay.xul) >+ content/inspector/tasksOverlay-cz.xul (resources/content/tasksOverlay-cz.xul) >+ content/inspector/tasksOverlay-ff.xul (resources/content/tasksOverlay-ff.xul) >+ content/inspector/tasksOverlay-sb.xul (resources/content/tasksOverlay-sb.xul) >+ content/inspector/tasksOverlay-tb.xul (resources/content/tasksOverlay-tb.xul) >+ content/inspector/tasksOverlay-mobile.xul (resources/content/tasksOverlay-mobile.xul) >+ content/inspector/editingOverlay.xul (resources/content/editingOverlay.xul) >+ content/inspector/Flasher.js (resources/content/Flasher.js) >+ content/inspector/ViewerRegistry.js (resources/content/ViewerRegistry.js) >+ content/inspector/utils.js (resources/content/utils.js) >+ content/inspector/hooks.js (resources/content/hooks.js) >+ content/inspector/res/viewer-registry.rdf (resources/content/res/viewer-registry.rdf) >+ content/inspector/extensions/titledSplitter.css (resources/content/extensions/titledSplitter.css) >+ content/inspector/extensions/titledSplitter.xml (resources/content/extensions/titledSplitter.xml) >+ content/inspector/extensions/wsm-colorpicker.js (resources/content/extensions/wsm-colorpicker.js) >+ content/inspector/jsutil/rdf/RDFArray.js (resources/content/jsutil/rdf/RDFArray.js) >+ content/inspector/jsutil/rdf/RDFU.js (resources/content/jsutil/rdf/RDFU.js) >+ content/inspector/jsutil/system/DiskSearch.js (resources/content/jsutil/system/DiskSearch.js) >+ content/inspector/jsutil/system/FilePickerUtils.js (resources/content/jsutil/system/FilePickerUtils.js) >+ content/inspector/jsutil/system/PrefUtils.js (resources/content/jsutil/system/PrefUtils.js) >+ content/inspector/jsutil/system/clipboardFlavors.js (resources/content/jsutil/system/clipboardFlavors.js) >+ content/inspector/jsutil/xpcom/XPCU.js (resources/content/jsutil/xpcom/XPCU.js) >+ content/inspector/jsutil/xul/DNDUtils.js (resources/content/jsutil/xul/DNDUtils.js) >+ content/inspector/jsutil/xul/FrameExchange.js (resources/content/jsutil/xul/FrameExchange.js) >+ content/inspector/jsutil/xul/inFormManager.js (resources/content/jsutil/xul/inFormManager.js) >+ content/inspector/jsutil/xul/inTreeBuilder.js (resources/content/jsutil/xul/inTreeBuilder.js) >+ content/inspector/jsutil/xul/inBaseTreeView.js (resources/content/jsutil/xul/inBaseTreeView.js) >+ content/inspector/jsutil/xul/inDataTreeView.js (resources/content/jsutil/xul/inDataTreeView.js) >+ content/inspector/jsutil/events/ObserverManager.js (resources/content/jsutil/events/ObserverManager.js) >+ content/inspector/jsutil/commands/baseCommands.js (resources/content/jsutil/commands/baseCommands.js) >+ content/inspector/prefs/pref-inspector.xul (resources/content/prefs/pref-inspector.xul) >+ content/inspector/prefs/pref-inspector.js (resources/content/prefs/pref-inspector.js) >+ content/inspector/prefs/prefsOverlay.xul (resources/content/prefs/prefsOverlay.xul) >+ content/inspector/prefs/pref-sidebar.js (resources/content/prefs/pref-sidebar.js) >+ content/inspector/tests/allskin.xul (resources/content/tests/allskin.xul) >+ content/inspector/viewers/accessibleEvent/accessibleEvent.js (resources/content/viewers/accessibleEvent/accessibleEvent.js) >+ content/inspector/viewers/accessibleEvent/accessibleEvent.xul (resources/content/viewers/accessibleEvent/accessibleEvent.xul) >+ content/inspector/viewers/accessibleEvents/accessibleEvents.js (resources/content/viewers/accessibleEvents/accessibleEvents.js) >+ content/inspector/viewers/accessibleEvents/accessibleEvents.xul (resources/content/viewers/accessibleEvents/accessibleEvents.xul) >+ content/inspector/viewers/accessibleEvents/handlerHelpDialog.xul (resources/content/viewers/accessibleEvents/handlerHelpDialog.xul) >+ content/inspector/viewers/accessibleObject/accessibleObject.js (resources/content/viewers/accessibleObject/accessibleObject.js) >+ content/inspector/viewers/accessibleObject/accessibleObject.xul (resources/content/viewers/accessibleObject/accessibleObject.xul) >+ content/inspector/viewers/accessibleProps/accessibleProps.js (resources/content/viewers/accessibleProps/accessibleProps.js) >+ content/inspector/viewers/accessibleProps/accessiblePropViewerMgr.js (resources/content/viewers/accessibleProps/accessiblePropViewerMgr.js) >+ content/inspector/viewers/accessibleProps/accessibleProps.xul (resources/content/viewers/accessibleProps/accessibleProps.xul) >+ content/inspector/viewers/accessibleRelations/accessibleRelations.js (resources/content/viewers/accessibleRelations/accessibleRelations.js) >+ content/inspector/viewers/accessibleRelations/accessibleRelations.xul (resources/content/viewers/accessibleRelations/accessibleRelations.xul) >+ content/inspector/viewers/accessibleTree/accessibleTree.js (resources/content/viewers/accessibleTree/accessibleTree.js) >+ content/inspector/viewers/accessibleTree/accessibleTree.xul (resources/content/viewers/accessibleTree/accessibleTree.xul) >+ content/inspector/viewers/accessibleTree/evalJSDialog.js (resources/content/viewers/accessibleTree/evalJSDialog.js) >+ content/inspector/viewers/accessibleTree/evalJSDialog.xul (resources/content/viewers/accessibleTree/evalJSDialog.xul) >+ content/inspector/viewers/computedStyle/computedStyle.js (resources/content/viewers/computedStyle/computedStyle.js) >+ content/inspector/viewers/computedStyle/computedStyle.xul (resources/content/viewers/computedStyle/computedStyle.xul) >+ content/inspector/viewers/usedFontFaces/usedFontFaces.js (resources/content/viewers/usedFontFaces/usedFontFaces.js) >+ content/inspector/viewers/usedFontFaces/usedFontFaces.xul (resources/content/viewers/usedFontFaces/usedFontFaces.xul) >+ content/inspector/viewers/dom/FindDialog.js (resources/content/viewers/dom/FindDialog.js) >+ content/inspector/viewers/dom/columnsDialog.js (resources/content/viewers/dom/columnsDialog.js) >+ content/inspector/viewers/dom/columnsDialog.xul (resources/content/viewers/dom/columnsDialog.xul) >+ content/inspector/viewers/dom/commandOverlay.xul (resources/content/viewers/dom/commandOverlay.xul) >+ content/inspector/viewers/dom/insertDialog.js (resources/content/viewers/dom/insertDialog.js) >+ content/inspector/viewers/dom/insertDialog.xul (resources/content/viewers/dom/insertDialog.xul) >+ content/inspector/viewers/dom/findDialog.xul (resources/content/viewers/dom/findDialog.xul) >+ content/inspector/viewers/dom/keysetOverlay.xul (resources/content/viewers/dom/keysetOverlay.xul) >+ content/inspector/viewers/dom/popupOverlay.xul (resources/content/viewers/dom/popupOverlay.xul) >+ content/inspector/viewers/dom/dom.xul (resources/content/viewers/dom/dom.xul) >+ content/inspector/viewers/dom/dom.js (resources/content/viewers/dom/dom.js) >+ content/inspector/viewers/dom/pseudoClassDialog.js (resources/content/viewers/dom/pseudoClassDialog.js) >+ content/inspector/viewers/dom/pseudoClassDialog.xul (resources/content/viewers/dom/pseudoClassDialog.xul) >+ content/inspector/viewers/boxModel/boxModel.js (resources/content/viewers/boxModel/boxModel.js) >+ content/inspector/viewers/boxModel/boxModel.xul (resources/content/viewers/boxModel/boxModel.xul) >+ content/inspector/viewers/jsObject/jsObject.js (resources/content/viewers/jsObject/jsObject.js) >+ content/inspector/viewers/jsObject/jsObject.xul (resources/content/viewers/jsObject/jsObject.xul) >+ content/inspector/viewers/jsObject/jsObjectViewer.js (resources/content/viewers/jsObject/jsObjectViewer.js) >+ content/inspector/viewers/jsObject/jsObjectViewer.xul (resources/content/viewers/jsObject/jsObjectViewer.xul) >+ content/inspector/viewers/jsObject/evalExprDialog.js (resources/content/viewers/jsObject/evalExprDialog.js) >+ content/inspector/viewers/jsObject/evalExprDialog.xul (resources/content/viewers/jsObject/evalExprDialog.xul) >+ content/inspector/viewers/domNode/domNode.js (resources/content/viewers/domNode/domNode.js) >+ content/inspector/viewers/domNode/domNode.xul (resources/content/viewers/domNode/domNode.xul) >+ content/inspector/viewers/domNode/domNodeDialog.js (resources/content/viewers/domNode/domNodeDialog.js) >+ content/inspector/viewers/domNode/domNodeDialog.xul (resources/content/viewers/domNode/domNodeDialog.xul) >+ content/inspector/viewers/styleRules/commandOverlay.xul (resources/content/viewers/styleRules/commandOverlay.xul) >+ content/inspector/viewers/styleRules/keysetOverlay.xul (resources/content/viewers/styleRules/keysetOverlay.xul) >+ content/inspector/viewers/styleRules/popupOverlay.xul (resources/content/viewers/styleRules/popupOverlay.xul) >+ content/inspector/viewers/styleRules/styleRules.js (resources/content/viewers/styleRules/styleRules.js) >+ content/inspector/viewers/styleRules/styleRules.xul (resources/content/viewers/styleRules/styleRules.xul) >+ content/inspector/viewers/stylesheets/stylesheets.js (resources/content/viewers/stylesheets/stylesheets.js) >+ content/inspector/viewers/stylesheets/stylesheets.xul (resources/content/viewers/stylesheets/stylesheets.xul) >+ content/inspector/viewers/xblBindings/xblBindings.js (resources/content/viewers/xblBindings/xblBindings.js) >+ content/inspector/viewers/xblBindings/xblBindings.xul (resources/content/viewers/xblBindings/xblBindings.xul) >+% skin inspector classic/1.0 %skin/classic/inspector/ >+ skin/classic/inspector/btnFind.gif (resources/skin/classic/btnFind.gif) >+ skin/classic/inspector/btnFind-dis.gif (resources/skin/classic/btnFind-dis.gif) >+ skin/classic/inspector/btnSelecting.gif (resources/skin/classic/btnSelecting.gif) >+ skin/classic/inspector/btnSelecting-act.gif (resources/skin/classic/btnSelecting-act.gif) >+ skin/classic/inspector/btnSelecting-dis.gif (resources/skin/classic/btnSelecting-dis.gif) >+ skin/classic/inspector/ImageSearchItem.gif (resources/skin/classic/ImageSearchItem.gif) >+ skin/classic/inspector/iconImportant.gif (resources/skin/classic/iconImportant.gif) >+ skin/classic/inspector/iconViewerList.gif (resources/skin/classic/iconViewerList.gif) >+ skin/classic/inspector/inspector.css (resources/skin/classic/inspector.css) >+ skin/classic/inspector/inspectorWindow.css (resources/skin/classic/inspectorWindow.css) >+ skin/classic/inspector/titledSplitter.css (resources/skin/classic/titledSplitter.css) >+ skin/classic/inspector/titledsplitter-close.gif (resources/skin/classic/titledsplitter-close.gif) >+ skin/classic/inspector/panelset.css (resources/skin/classic/panelset.css) >+ skin/classic/inspector/sidebar.css (resources/skin/classic/sidebar.css) >+ skin/classic/inspector/iconViewerList-dis.gif (resources/skin/classic/iconViewerList-dis.gif) >+ skin/classic/inspector/viewers/accessibleEvent/accessibleEvent.css (resources/skin/classic/viewers/accessibleEvent/accessibleEvent.css) >+ skin/classic/inspector/viewers/accessibleEvents/accessibleEvents.css (resources/skin/classic/viewers/accessibleEvents/accessibleEvents.css) >+ skin/classic/inspector/viewers/accessibleProps/accessibleProps.css (resources/skin/classic/viewers/accessibleProps/accessibleProps.css) >+ skin/classic/inspector/viewers/accessibleTree/accessibleTree.css (resources/skin/classic/viewers/accessibleTree/accessibleTree.css) >+ skin/classic/inspector/viewers/boxModel/boxModel.css (resources/skin/classic/viewers/boxModel/boxModel.css) >+ skin/classic/inspector/viewers/dom/columnsDialog.css (resources/skin/classic/viewers/dom/columnsDialog.css) >+ skin/classic/inspector/viewers/dom/dom.css (resources/skin/classic/viewers/dom/dom.css) >+ skin/classic/inspector/viewers/dom/findDialog.css (resources/skin/classic/viewers/dom/findDialog.css) >+ skin/classic/inspector/viewers/domNode/domNode.css (resources/skin/classic/viewers/domNode/domNode.css) >+ skin/classic/inspector/viewers/styleRules/styleRules.css (resources/skin/classic/viewers/styleRules/styleRules.css) >+ skin/classic/inspector/viewers/xblBindings/xblBindings.css (resources/skin/classic/viewers/xblBindings/xblBindings.css) >+% skin inspector modern/1.0 %skin/modern/inspector/ >+ skin/modern/inspector/btnFind.gif (resources/skin/modern/btnFind.gif) >+ skin/modern/inspector/btnFind-dis.gif (resources/skin/modern/btnFind-dis.gif) >+ skin/modern/inspector/btnSelecting.gif (resources/skin/modern/btnSelecting.gif) >+ skin/modern/inspector/btnSelecting-act.gif (resources/skin/modern/btnSelecting-act.gif) >+ skin/modern/inspector/btnSelecting-dis.gif (resources/skin/modern/btnSelecting-dis.gif) >+ skin/modern/inspector/ImageSearchItem.gif (resources/skin/modern/ImageSearchItem.gif) >+ skin/modern/inspector/iconImportant.gif (resources/skin/modern/iconImportant.gif) >+ skin/modern/inspector/iconViewerMenu-dis.gif (resources/skin/modern/iconViewerMenu-dis.gif) >+ skin/modern/inspector/inspector.css (resources/skin/modern/inspector.css) >+ skin/modern/inspector/inspectorWindow.css (resources/skin/modern/inspectorWindow.css) >+ skin/modern/inspector/titledSplitter.css (resources/skin/modern/titledSplitter.css) >+ skin/modern/inspector/titledsplitter-close.gif (resources/skin/modern/titledsplitter-close.gif) >+ skin/modern/inspector/panelset.css (resources/skin/modern/panelset.css) >+ skin/modern/inspector/sidebar.css (resources/skin/modern/sidebar.css) >+ skin/modern/inspector/iconViewerMenu.gif (resources/skin/modern/iconViewerMenu.gif) >+ skin/modern/inspector/iconViewerList.gif (resources/skin/modern/iconViewerList.gif) >+ skin/modern/inspector/iconViewerList-dis.gif (resources/skin/modern/iconViewerList-dis.gif) >+ skin/modern/inspector/viewers/accessibleEvent/accessibleEvent.css (resources/skin/modern/viewers/accessibleEvent/accessibleEvent.css) >+ skin/modern/inspector/viewers/accessibleEvents/accessibleEvents.css (resources/skin/modern/viewers/accessibleEvents/accessibleEvents.css) >+ skin/modern/inspector/viewers/accessibleProps/accessibleProps.css (resources/skin/modern/viewers/accessibleProps/accessibleProps.css) >+ skin/modern/inspector/viewers/accessibleTree/accessibleTree.css (resources/skin/modern/viewers/accessibleTree/accessibleTree.css) >+ skin/modern/inspector/viewers/boxModel/boxModel.css (resources/skin/modern/viewers/boxModel/boxModel.css) >+ skin/modern/inspector/viewers/dom/columnsDialog.css (resources/skin/modern/viewers/dom/columnsDialog.css) >+ skin/modern/inspector/viewers/dom/dom.css (resources/skin/modern/viewers/dom/dom.css) >+ skin/modern/inspector/viewers/dom/findDialog.css (resources/skin/modern/viewers/dom/findDialog.css) >+ skin/modern/inspector/viewers/domNode/domNode.css (resources/skin/modern/viewers/domNode/domNode.css) >+ skin/modern/inspector/viewers/styleRules/styleRules.css (resources/skin/modern/viewers/styleRules/styleRules.css) >+ skin/modern/inspector/viewers/xblBindings/xblBindings.css (resources/skin/modern/viewers/xblBindings/xblBindings.css) >diff --git a/suite/extensions/inspector/moz.build b/suite/extensions/inspector/moz.build >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/moz.build >@@ -0,0 +1,28 @@ >+# vim: set filetype=python: >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+DIRS += [ >+ 'resources', >+] >+ >+XPI_NAME = 'inspector' >+export('XPI_NAME') >+ >+NO_JS_MANIFEST = True >+USE_EXTENSION_MANIFEST = True >+ >+JAR_MANIFESTS += ['jar.mn'] >+ >+JS_PREFERENCE_FILES += [ >+ 'resources/content/prefs/inspector.js', >+] >+ >+EXTRA_COMPONENTS += [ >+ 'base/js/inspector-cmdline.js', >+] >+ >+FINAL_TARGET_PP_FILES += [ >+ 'install.rdf', >+] >diff --git a/suite/extensions/inspector/resources/Makefile.in b/suite/extensions/inspector/resources/Makefile.in >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/Makefile.in >@@ -0,0 +1,40 @@ >+# >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+ >+DEPTH=../../.. >+topsrcdir=@top_srcdir@ >+srcdir=@srcdir@ >+VPATH=@srcdir@ >+ >+include $(DEPTH)/config/autoconf.mk >+ >+ALL_LOCALES = \ >+ de \ >+ el \ >+ en-GB \ >+ en-US \ >+ pl \ >+ ru \ >+ sk \ >+ sv-SE \ >+ $(NULL) >+ >+include $(topsrcdir)/config/config.mk >+ >+include $(topsrcdir)/config/rules.mk >+ >+libs realchrome:: locale/Makefile >+ @$(EXIT_ON_ERROR) \ >+ for locale in $(ALL_LOCALES); do \ >+ $(MAKE) -C locale AB_CD=$$locale; \ >+ done >+ >+install:: >+ @$(EXIT_ON_ERROR) \ >+ for locale in $(ALL_LOCALES); do \ >+ $(MAKE) -C locale AB_CD=$$locale install; \ >+ done >+ >diff --git a/suite/extensions/inspector/resources/content/Flasher.js b/suite/extensions/inspector/resources/content/Flasher.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/Flasher.js >@@ -0,0 +1,395 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* Flasher --------------------------------------------------- >+* Object for controlling a timed flashing animation which >+* paints a border around an element. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+Components.utils.import("resource://gre/modules/Services.jsm"); >+ >+//////////// global variables ///////////////////// >+ >+//////////// global constants //////////////////// >+ >+const isGecko58plus = Services.vc.compare(Services.appinfo.platformVersion, "58.0a1") >= 0; >+ >+const HIGHLIGHTED_PSEUDO_CLASS = isGecko58plus? ":target" : ":-moz-devtools-highlighted"; >+const INVERT = "filter: url(\"data:image/svg+xml;charset=utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='invert'><feColorMatrix in='SourceGraphic' type='matrix' values='-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0'/></filter></svg>%23invert\") !important; " >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class Flasher >+ >+function Flasher(aColor, aThickness, aDuration, aSpeed, aInvert) >+{ >+ document.querySelector(HIGHLIGHTED_PSEUDO_CLASS); >+ this.mIOService = XPCU.getService("@mozilla.org/network/io-service;1", "nsIIOService"); >+ this.mDOMUtils = XPCU.getService("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils"); >+ this.mShell = XPCU.getService("@mozilla.org/inspector/flasher;1", "inIFlasher") || this.mDOMUtils; >+ this.color = aColor; >+ this.thickness = aThickness; >+ this.invert = aInvert; >+ this.duration = aDuration; >+ this.speed = aSpeed; >+} >+ >+Flasher.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mFlashTimeout: null, >+ mElement: null, >+ mRegistryId: null, >+ mFlashes: 0, >+ mStartTime: 0, >+ mDOMUtils: null, >+ mWinUtils: null, >+ mStyleURI: null, >+ mColor: "#000000", >+ mInvert: false, >+ mThickness: 0, >+ mDuration: 0, >+ mSpeed: 0, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Properties >+ >+ get flashing() { return this.mFlashTimeout != null; }, >+ >+ get element() { return this.mElement; }, >+ set element(val) >+ { >+ if (val && val.nodeType == Node.ELEMENT_NODE) { >+ this.mElement = val; >+ this.mShell.scrollElementIntoView(val); >+ this.mWinUtils = val.ownerDocument.defaultView >+ .QueryInterface(Components.interfaces.nsIInterfaceRequestor) >+ .getInterface(Components.interfaces.nsIDOMWindowUtils); >+ } else { >+ throw "Invalid node type."; >+ } >+ }, >+ >+ get color() { return this.mColor; }, >+ set color(aVal) >+ { >+ var spacer = document.createElement("spacer"); >+ spacer.style.color = aVal; >+ if (spacer.style.color) { >+ this.mStyleURI = null; >+ this.mColor = aVal; >+ } >+ return aVal; >+ }, >+ >+ get thickness() { return this.mThickness | 0; }, >+ set thickness(aVal) { this.mStyleURI = null; return this.mThickness = aVal; }, >+ >+ get duration() { return this.mDuration; }, >+ set duration(aVal) { this.mDuration = aVal; }, >+ >+ get speed() { return this.mSpeed; }, >+ set speed(aVal) { this.mSpeed = aVal; }, >+ >+ get invert() { return !!this.mInvert; }, >+ set invert(aVal) { this.mStyleURI = null; return this.mInvert = aVal; }, >+ >+ // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >+ // :::::::::::::::::::: Methods :::::::::::::::::::::::::::: >+ // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >+ >+ start: function(aDuration, aSpeed, aHold) >+ { >+ if (!this.mStyleURI) { >+ var styleURI = "data:text/css;charset=utf-8," + HIGHLIGHTED_PSEUDO_CLASS + >+ " { outline: " + this.thickness + "px solid " + >+ encodeURIComponent(this.color) + >+ " !important; outline-offset: " + -this.thickness + >+ "px !important; " + (this.invert ? INVERT : "") + "}"; >+ this.mStyleURI = this.mIOService.newURI(styleURI, null, null); >+ } >+ >+ this.mWinUtils.loadSheet(this.mStyleURI, this.mWinUtils.AGENT_SHEET); >+ this.mUDuration = aDuration ? aDuration * 1000 : this.mDuration; >+ this.mUSpeed = aSpeed ? aSpeed : this.mSpeed; >+ this.mHold = aHold; >+ this.mFlashes = 0; >+ this.mStartTime = Date.now(); >+ this.doFlash(); >+ }, >+ >+ doFlash: function() >+ { >+ if (this.mHold || this.mFlashes & 1) { >+ this.paintOn(); >+ } else { >+ this.paintOff(); >+ } >+ this.mFlashes++; >+ >+ if (this.mUDuration < 0 || Date.now() - this.mStartTime < this.mUDuration) { >+ this.mFlashTimeout = window.setTimeout(this.timeout, this.mUSpeed, this); >+ } else { >+ this.stop(); >+ } >+ }, >+ >+ timeout: function(self) >+ { >+ self.doFlash(); >+ }, >+ >+ stop: function() >+ { >+ if (this.flashing) { >+ this.mWinUtils.removeSheet(this.mStyleURI, this.mWinUtils.AGENT_SHEET); >+ window.clearTimeout(this.mFlashTimeout); >+ this.mFlashTimeout = null; >+ this.paintOff(); >+ } >+ }, >+ >+ paintOn: function() >+ { >+ this.mDOMUtils.addPseudoClassLock(this.mElement, HIGHLIGHTED_PSEUDO_CLASS); >+ }, >+ >+ paintOff: function() >+ { >+ this.mDOMUtils.removePseudoClassLock(this.mElement, HIGHLIGHTED_PSEUDO_CLASS); >+ } >+ >+}; >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class LegacyFlasher >+ >+function LegacyFlasher(aColor, aThickness, aDuration, aSpeed, aInvert) >+{ >+ this.mShell = XPCU.getService("@mozilla.org/inspector/flasher;1", "inIFlasher"); >+ this.color = aColor; >+ this.mShell.thickness = aThickness; >+ this.mShell.invert = aInvert; >+ this.duration = aDuration; >+ this.mSpeed = aSpeed; >+} >+ >+LegacyFlasher.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mFlashTimeout: null, >+ mElement:null, >+ mRegistryId: null, >+ mFlashes: 0, >+ mStartTime: 0, >+ mDuration: 0, >+ mSpeed: 0, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Properties >+ >+ get flashing() { return this.mFlashTimeout != null; }, >+ >+ get element() { return this.mElement; }, >+ set element(val) >+ { >+ if (val && val.nodeType == Node.ELEMENT_NODE) { >+ this.mElement = val; >+ this.mShell.scrollElementIntoView(val); >+ } else >+ throw "Invalid node type."; >+ }, >+ >+ get color() { return this.mShell.color; }, >+ set color(aVal) >+ { >+ try { >+ this.mShell.color = aVal; >+ } >+ catch (e) { // Catch exception in case aVal is an invalid or empty value. >+ Components.utils.reportError(e); >+ } >+ return aVal; >+ }, >+ >+ get thickness() { return this.mShell.thickness; }, >+ set thickness(aVal) { this.mShell.thickness = aVal; }, >+ >+ get duration() { return this.mDuration; }, >+ set duration(aVal) { this.mDuration = aVal; }, >+ >+ get speed() { return this.mSpeed; }, >+ set speed(aVal) { this.mSpeed = aVal; }, >+ >+ get invert() { return this.mShell.invert; }, >+ set invert(aVal) { this.mShell.invert = aVal; }, >+ >+ // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >+ // :::::::::::::::::::: Methods :::::::::::::::::::::::::::: >+ // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >+ >+ start: function(aDuration, aSpeed, aHold) >+ { >+ this.mUDuration = aDuration ? aDuration*1000 : this.mDuration; >+ this.mUSpeed = aSpeed ? aSpeed : this.mSpeed >+ this.mHold = aHold; >+ this.mFlashes = 0; >+ this.mStartTime = new Date(); >+ this.doFlash(); >+ }, >+ >+ doFlash: function() >+ { >+ if (this.mHold || this.mFlashes%2) { >+ this.paintOn(); >+ } else { >+ this.paintOff(); >+ } >+ this.mFlashes++; >+ >+ if (this.mUDuration < 0 || new Date() - this.mStartTime < this.mUDuration) { >+ this.mFlashTimeout = window.setTimeout(this.timeout, this.mUSpeed, this); >+ } else { >+ this.stop(); >+ } >+ }, >+ >+ timeout: function(self) >+ { >+ self.doFlash(); >+ }, >+ >+ stop: function() >+ { >+ if (this.flashing) { >+ window.clearTimeout(this.mFlashTimeout); >+ this.mFlashTimeout = null; >+ this.paintOff(); >+ } >+ }, >+ >+ paintOn: function() >+ { >+ this.mShell.drawElementOutline(this.mElement); >+ }, >+ >+ paintOff: function() >+ { >+ this.mShell.repaintElement(this.mElement); >+ } >+ >+}; >+ >+//////////////////////////////////////////////////////////////////////////////// >+//// DOMIFlasher >+ >+/** >+ * The special version of the flasher operating with DOM Inspector flasher >+ * preferences. >+ */ >+function DOMIFlasher() >+{ >+ this.init(); >+} >+ >+DOMIFlasher.prototype = >+{ >+ ////////////////////////////////////////////////////////////////////////////// >+ //// Public >+ >+ get flashOnSelect() { return PrefUtils.getPref("inspector.blink.on"); }, >+ set flashOnSelect(aVal) { PrefUtils.setPref("inspector.blink.on", aVal); }, >+ >+ get color() { return PrefUtils.getPref("inspector.blink.border-color"); }, >+ set color(aVal) { PrefUtils.setPref("inspector.blink.border-color", aVal); }, >+ >+ get thickness() { return PrefUtils.getPref("inspector.blink.border-width"); }, >+ set thickness(aVal) { PrefUtils.setPref("inspector.blink.border-width", aVal); }, >+ >+ get duration() { return PrefUtils.getPref("inspector.blink.duration"); }, >+ set duration(aVal) { PrefUtils.setPref("inspector.blink.duration", aVal); }, >+ >+ get speed() { return PrefUtils.getPref("inspector.blink.speed"); }, >+ set speed(aVal) { PrefUtils.setPref("inspector.blink.speed", aVal); }, >+ >+ get invert() { return PrefUtils.getPref("inspector.blink.invert"); }, >+ set invert(aVal) { PrefUtils.setPref("inspector.blink.invert", aVal); }, >+ >+ flashElement: function DOMIFlasher_flashElement(aElement) >+ { >+ if (this.mFlasher.flashing) >+ this.mFlasher.stop(); >+ >+ this.mFlasher.element = aElement; >+ this.mFlasher.start(); >+ }, >+ >+ flashElementOnSelect: function DOMIFlasher_flashElementOnSelect(aElement) >+ { >+ if (this.flashOnSelect) { >+ this.flashElement(aElement); >+ } >+ }, >+ >+ destroy: function DOMIFlasher_destroy() >+ { >+ PrefUtils.removeObserver("inspector.blink.", this); >+ }, >+ >+ ////////////////////////////////////////////////////////////////////////////// >+ //// Private >+ >+ init: function DOMIFlasher_init() >+ { >+ // See Bug 368608 comment 43. Flasher should work in Gecko 25 and up. >+ if (Services.vc.compare(Services.appinfo.platformVersion, "25.0a2") >= 0) { >+ this.mFlasher = new Flasher(this.color, this.thickness, this.duration, >+ this.speed, this.invert); >+ } else { >+ this.mFlasher = new LegacyFlasher(this.color, this.thickness, >+ this.duration, this.speed, this.invert); >+ } >+ >+ PrefUtils.addObserver("inspector.blink.", this); >+ >+ this.updateFlashOnSelectCommand(); >+ }, >+ >+ updateFlashOnSelectCommand: function DOMIFlasher_updateFlashOnSelectCommand() >+ { >+ var cmdEl = document.getElementById("cmdFlashOnSelect"); >+ if (this.flashOnSelect) { >+ cmdEl.setAttribute("checked", "true"); >+ } else { >+ cmdEl.removeAttribute("checked"); >+ } >+ }, >+ >+ observe: function DOMIFlasher_observe(aSubject, aTopic, aData) >+ { >+ if (aData == "inspector.blink.on") { >+ this.updateFlashOnSelectCommand(); >+ return; >+ } >+ >+ var value = PrefUtils.getPref(aData); >+ >+ if (aData == "inspector.blink.border-color") { >+ this.mFlasher.color = value; >+ } else if (aData == "inspector.blink.border-width") { >+ this.mFlasher.thickness = value; >+ } else if (aData == "inspector.blink.duration") { >+ this.mFlasher.duration = value; >+ } else if (aData == "inspector.blink.speed") { >+ this.mFlasher.speed = value; >+ } else if (aData == "inspector.blink.invert") { >+ this.mFlasher.invert = value; >+ } >+ } >+} >diff --git a/suite/extensions/inspector/resources/content/ViewerRegistry.js b/suite/extensions/inspector/resources/content/ViewerRegistry.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/ViewerRegistry.js >@@ -0,0 +1,251 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* ViewerRegistry ------------------------------------------------------------- >+* The central registry where information about all installed viewers is >+* kept. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/jsutil/rdf/RDFU.js >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kViewerURLPrefix = "chrome://inspector/content/viewers/"; >+const kViewerRegURL = "chrome://inspector/content/res/viewer-registry.rdf"; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Class ViewerRegistry >+ >+function ViewerRegistry() // implements inIViewerRegistry >+{ >+ this.mViewerHash = {}; >+} >+ >+ViewerRegistry.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Interface inIViewerRegistry (not yet formalized...) >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mDS: null, >+ mObserver: null, >+ mViewerDS: null, >+ mViewerHash: null, >+ mFilters: null, >+ >+ get url() >+ { >+ return this.mURL; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Loading Methods >+ >+ load: function VR_Load(aURL, aObserver) >+ { >+ this.mURL = aURL; >+ this.mObserver = aObserver; >+ RDFU.loadDataSource(aURL, new ViewerRegistryLoadObserver(this)); >+ }, >+ >+ onError: function VR_OnError(aStatus, aErrorMsg) >+ { >+ this.mObserver.onViewerRegistryLoadError(aStatus, aErrorMsg); >+ }, >+ >+ onLoad: function VR_OnLoad(aDS) >+ { >+ this.mDS = aDS; >+ this.prepareRegistry(); >+ this.mObserver.onViewerRegistryLoad(); >+ }, >+ >+ prepareRegistry: function VR_PrepareRegistry() >+ { >+ this.mViewerDS = RDFArray.fromContainer(this.mDS, "inspector:viewers", >+ kInspectorNSURI); >+ >+ // create and cache the filter functions >+ var js, fn; >+ this.mFilters = []; >+ for (var i = 0; i < this.mViewerDS.length; ++i) { >+ js = this.getEntryProperty(i, "filter"); >+ try { >+ fn = new Function("object", "linkedViewer", js); >+ } >+ catch (ex) { >+ fn = new Function("return false"); >+ debug("### ERROR - Syntax error in filter for viewer \"" + >+ this.getEntryProperty(i, "description") + "\"\n"); >+ } >+ this.mFilters.push(fn); >+ } >+ }, >+ >+ /** >+ * Returns the absolute url where the xul file for a viewer can be found. >+ * >+ * @param aIndex >+ * The numerical index of the entry representing the viewer. >+ * @return A string of the fully canonized url. >+ */ >+ getEntryURL: function VR_GetEntryURL(aIndex) >+ { >+ var uid = this.getEntryProperty(aIndex, "uid"); >+ return kViewerURLPrefix + uid + "/" + uid + ".xul"; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Lookup Methods >+ >+ /** >+ * Searches the viewer registry for all viewers that can view a particular >+ * object. >+ * >+ * @param aObject >+ * The object being searched against. >+ * @param aPanelId >+ * A string containing the id of the panel requesting viewers. >+ * @param aLinkedViewer >+ * The view object of linked panel. >+ * @return An array of nsIRDFResource entries in the viewer registry. >+ */ >+ findViewersForObject: >+ function VR_FindViewersForObject(aObject, aPanelId, aLinkedViewer) >+ { >+ // check each entry in the registry >+ var len = this.mViewerDS.length; >+ var entry; >+ var urls = []; >+ for (var i = 0; i < len; ++i) { >+ if (this.getEntryProperty(i, "panels").indexOf(aPanelId) == -1) { >+ continue; >+ } >+ if (this.objectMatchesEntry(aObject, aLinkedViewer, i)) { >+ if (this.getEntryProperty(i, "important")) { >+ urls.unshift(i); >+ } else { >+ urls.push(i); >+ } >+ } >+ } >+ >+ return urls; >+ }, >+ >+ /** >+ * Determines if an object is eligible to be viewed by a particular viewer. >+ * >+ * @param aObject >+ * The object being checked for eligibility. >+ * @param aLinkedViewer >+ * The view object of linked panel. >+ * @param aIndex >+ * The numerical index of the entry. >+ * @return true if object can be viewed. >+ */ >+ objectMatchesEntry: >+ function VR_ObjectMatchesEntry(aObject, aLinkedViewer, aIndex) >+ { >+ try { >+ return this.mFilters[aIndex](aObject, aLinkedViewer); >+ } >+ catch (ex) { >+ Components.utils.reportError(ex); >+ } >+ return false; >+ }, >+ >+ /** >+ * Notifies the registry that a viewer has been instantiated, and that it >+ * corresponds to a particular entry in the viewer registry. >+ * >+ * @param aViewer >+ * The inIViewer object to cache. >+ * @param aIndex >+ * The numerical index of the entry. >+ */ >+ cacheViewer: function VR_CacheViewer(aViewer, aIndex) >+ { >+ var uid = this.getEntryProperty(aIndex, "uid"); >+ this.mViewerHash[uid] = { viewer: aViewer, entry: aIndex }; >+ }, >+ >+ uncacheViewer: function VR_UncacheViewer(aViewer) >+ { >+ delete this.mViewerHash[aViewer.uid]; >+ }, >+ >+ // for previously loaded viewers only >+ getViewerByUID: function VR_GetViewerByUID(aUID) >+ { >+ return this.mViewerHash[aUID].viewer; >+ }, >+ >+ // for previously loaded viewers only >+ getEntryForViewer: function VR_GetEntryForViewer(aViewer) >+ { >+ return this.mViewerHash[aViewer.uid].entry; >+ }, >+ >+ // for previously loaded viewers only >+ getEntryByUID: function VR_GetEntryByUID(aUID) >+ { >+ return this.mViewerHash[aUID].aIndex; >+ }, >+ >+ getEntryProperty: function VR_GetEntryProperty(aIndex, aProp) >+ { >+ return this.mViewerDS.get(aIndex, aProp); >+ }, >+ >+ getEntryCount: function VR_GetEntryCount() >+ { >+ return this.mViewerDS.length; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Viewer Registration >+ >+ addNewEntry: function VR_AddNewEntry(aUID, aDescription, aFilter) >+ { >+ }, >+ >+ removeEntry: function VR_RemoveEntry(aIndex) >+ { >+ }, >+ >+ saveRegistry: function VR_SaveRegistry() >+ { >+ } >+}; >+ >+//////////////////////////////////////////////////////////////////////////// >+//// Listener Objects >+ >+function ViewerRegistryLoadObserver(aTarget) >+{ >+ this.mTarget = aTarget; >+} >+ >+ViewerRegistryLoadObserver.prototype = >+{ >+ mTarget: null, >+ >+ onError: function VRLO_OnError(aStatus, aErrorMsg) >+ { >+ this.mTarget.onError(aStatus, aErrorMsg); >+ }, >+ >+ onDataSourceReady: function VRLO_OnDataSourceReady(aDS) >+ { >+ this.mTarget.onLoad(aDS); >+ } >+}; >diff --git a/suite/extensions/inspector/resources/content/browserOverlay.xul b/suite/extensions/inspector/resources/content/browserOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/browserOverlay.xul >@@ -0,0 +1,68 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/tasksOverlay.dtd" > >+ >+<overlay id="ovBrowser" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" src="chrome://inspector/content/hooks.js"/> >+ >+ <script type="application/javascript"><![CDATA[ >+ >+ window.addEventListener("load", inspectorNavOnLoad, true); >+ >+ function inspectorNavOnLoad() >+ { >+ var prefService = Components.classes["@mozilla.org/preferences-service;1"] >+ .getService(Components.interfaces.nsIPrefService); >+ var pref = prefService.getBranch(null); >+ >+ var enabled = pref.getBoolPref("inspector.hooks.navigator"); >+ if (!enabled) { >+ document.getElementById("context-inspect").setAttribute("hidden", "true"); >+ document.getElementById("menu_inspectPage").setAttribute("hidden", "true"); >+ } else { >+ var popup = document.getElementById("contentAreaContextMenu"); >+ popup.addEventListener("popupshowing", inspectorContextCreate, false); >+ } >+ } >+ >+ function inspectorContextCreate() >+ { >+ var mi = document.getElementById("context-inspect"); >+ mi.setAttribute("label", "Inspect <"+inspectorGetContextNode().localName+">"); >+ } >+ >+ function inspectPopupNode() >+ { >+ inspectDOMNode(inspectorGetContextNode()); >+ } >+ >+ function inspectorGetContextNode() >+ { >+ var n = document.popupNode; >+ while (n && n.nodeType != Node.ELEMENT_NODE) >+ n = n.parentNode; >+ >+ return n; >+ } >+ >+ ]]></script> >+ >+ <popup id="contentAreaContextMenu"> >+ <menuitem id="context-inspect" >+ insertbefore="context-sep-view" >+ oncommand="inspectPopupNode();"/> >+ </popup> >+ >+ <menupopup id="menu_FilePopup"> >+ <menuitem id="menu_inspectPage" label="&inspectPageTaskCmd.label;" command="Tasks:InspectPage" >+ accesskey="&inspectPageTaskCmd.accesskey;" key="key_inspectPage" >+ insertbefore="menu_sendPage"/> >+ </menupopup> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/commandOverlay.xul b/suite/extensions/inspector/resources/content/commandOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/commandOverlay.xul >@@ -0,0 +1,58 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+]> >+ >+<overlay id="ovCommandsMain" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <commandset id="cmdsGlobalCommands"> >+ >+ <command id="cmdGotoURL" >+ ontextentered="inspector.gotoTypedURL();" >+ oncommand="inspector.gotoTypedURL();"/> >+ >+ <command id="cmdEnterLocation" >+ oncommand="inspector.enterLocation();"/> >+ <command id="cmdSave" oncommand="inspector.save();"/> >+ <command id="cmdClose" oncommand="inspector.exit();"/> >+ >+ <command id="cmdShowPrefsDialog" >+ oncommand="inspector.showPrefsDialog();"/> >+ >+ <command id="cmdToggleDocument" >+ oncommand="inspector.toggleBrowser(true);"/> >+ >+ <command id="cmdFlashOnSelect" >+ viewer="dom accessibleTree" >+ oncommand="inspector.toggleFlashOnSelect();"/> >+ >+ <!-- These implement the editing commands needed by the top-level >+ inspectors. See editingOverlay.xul for more information. --> >+ <command id="cmdEditUndo" global="true" >+ oncommand="inspector.doViewerCommand('cmdEditUndo');"/> >+ <command id="cmdEditRedo" global="true" >+ oncommand="inspector.doViewerCommand('cmdEditRedo');"/> >+ <command id="cmdEditCut" global="true" >+ oncommand="inspector.doViewerCommand('cmdEditCut');"/> >+ <command id="cmdEditCopy" global="true" >+ oncommand="inspector.doViewerCommand('cmdEditCopy');"/> >+ <command id="cmdEditPaste" global="true" >+ oncommand="inspector.doViewerCommand('cmdEditPaste');"/> >+ <command id="cmdEditInsert" global="true" >+ oncommand="inspector.doViewerCommand('cmdEditInsert');"/> >+ <command id="cmdEditEdit" global="true" >+ oncommand="inspector.doViewerCommand('cmdEditEdit');"/> >+ <command id="cmdEditDelete" global="true" >+ oncommand="inspector.doViewerCommand('cmdEditDelete');"/> >+ <command id="cmdEditInspectInNewWindow" global="true" >+ oncommand="inspector.doViewerCommand('cmdEditInspectInNewWindow');"/> >+ >+ </commandset> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/editingOverlay.xul b/suite/extensions/inspector/resources/content/editingOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/editingOverlay.xul >@@ -0,0 +1,90 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/editing.dtd"> >+ >+<overlay id="ovEditing" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+<!-- This overlay is pulled in by popupOverlay.xul, which is itself pulled in >+ by the top-level inspectors (inspector.xul, object.xul, and sidebar.xul), >+ to add these items to its menus. Additionally, this overlay is suitable >+ for use by viewers which want to offer any of these items (e.g., for >+ their context menus). Note that the cmdsEditing commandset is used only >+ by viewers due to scoping differences; the implementation of the commands >+ used in the top-level inspectors can be found in commandOverlay.xul. --> >+ >+ <commandset id="cmdsEditing"> >+ <command id="cmdEditUndo" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditUndo');"/> >+ <command id="cmdEditRedo" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditRedo');"/> >+ <command id="cmdEditCut" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditCut');"/> >+ <command id="cmdEditCopy" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditCopy');"/> >+ <command id="cmdEditPaste" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditPaste');"/> >+ <command id="cmdEditInsert" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditInsert');"/> >+ <command id="cmdEditEdit" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditEdit');"/> >+ <command id="cmdEditDelete" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditDelete');"/> >+ </commandset> >+ <commandset id="cmdsEditingExtras"> >+ <command id="cmdEditInspectInNewWindow" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditInspectInNewWindow');"/> >+ <command id="cmdEditCopyFileURI" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditCopyFileURI');"/> >+ <command id="cmdEditViewFileURI" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditViewFileURI');"/> >+ </commandset> >+ >+ <keyset id="ksGlobalKeyset"> >+ <key id="keyEditUndo" key="z" modifiers="accel" command="cmdEditUndo"/> >+ <key id="keyEditRedo" key="z" modifiers="accel,shift" >+ command="cmdEditRedo"/> >+ <key id="keyEditRedo2" key="y" modifiers="accel" command="cmdEditRedo"/> >+ <key id="keyEditCut" key="x" modifiers="accel" command="cmdEditCut"/> >+ <key id="keyEditCopy" key="c" modifiers="accel" command="cmdEditCopy"/> >+ <key id="keyEditPaste" key="v" modifiers="accel" command="cmdEditPaste"/> >+ <key id="keyEditDelete" keycode="VK_DELETE" command="cmdEditDelete"/> >+ <key id="keyEditDeleteMac" keycode="VK_BACK" command="cmdEditDelete"/> >+ <key id="keyEditInspectInNewWindow" key="&mnEditInspectInNewWindow.key;" >+ modifiers="accel" command="cmdEditInspectInNewWindow"/> >+ </keyset> >+ >+ <menuitem id="mnEditUndo" label="&mnEditUndo.label;" command="cmdEditUndo" >+ accesskey="&mnEditUndo.accesskey;" key="keyEditUndo"/> >+ <menuitem id="mnEditRedo" label="&mnEditRedo.label;" command="cmdEditRedo" >+ accesskey="&mnEditRedo.accesskey;" key="keyEditRedo"/> >+ <menuitem id="mnEditCut" label="&mnEditCut.label;" command="cmdEditCut" >+ accesskey="&mnEditCut.accesskey;" key="keyEditCut"/> >+ <menuitem id="mnEditCopy" label="&mnEditCopy.label;" command="cmdEditCopy" >+ accesskey="&mnEditCopy.accesskey;" key="keyEditCopy"/> >+ <menuitem id="mnEditPaste" label="&mnEditPaste.label;" command="cmdEditPaste" >+ accesskey="&mnEditPaste.accesskey;" key="keyEditPaste"/> >+ <menuitem id="mnEditInsert" label="&mnEditInsert.label;" >+ command="cmdEditInsert" accesskey="&mnEditInsert.accesskey;"/> >+ <menuitem id="mnEditEdit" label="&mnEditEdit.label;" command="cmdEditEdit" >+ accesskey="&mnEditEdit.accesskey;"/> >+ <menuitem id="mnEditDelete" label="&mnEditDelete.label;" >+ command="cmdEditDelete" accesskey="&mnEditDelete.accesskey;" >+ key="keyEditDelete"/> >+ <menuitem id="mnEditInspectInNewWindow" >+ label="&mnEditInspectInNewWindow.label;" >+ command="cmdEditInspectInNewWindow" >+ accesskey="&mnEditInspectInNewWindow.accesskey;" >+ key="keyEditInspectInNewWindow"/> >+ <menuitem id="mnEditCopyFileURI" label="&mnEditCopyFileURI.label;" >+ command="cmdEditCopyFileURI" >+ accesskey="&mnEditCopyFileURI.accesskey;"/> >+ <menuitem id="mnEditViewFileURI" label="&mnEditViewFileURI.label;" >+ command="cmdEditViewFileURI" >+ accesskey="&mnEditViewFileURI.accesskey;"/> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/extensions/titledSplitter.css b/suite/extensions/inspector/resources/content/extensions/titledSplitter.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/extensions/titledSplitter.css >@@ -0,0 +1,9 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin/titledSplitter.css"); >+ >+.titled-splitter { >+ -moz-binding: url("titledSplitter.xml#titledSplitter") !important; >+} >diff --git a/suite/extensions/inspector/resources/content/extensions/titledSplitter.xml b/suite/extensions/inspector/resources/content/extensions/titledSplitter.xml >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/extensions/titledSplitter.xml >@@ -0,0 +1,88 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<bindings id="bdsTitledSplitter" >+ xmlns="http://www.mozilla.org/xbl" >+ xmlns:xbl="http://www.mozilla.org/xbl" >+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <binding id="titledSplitter" extends="chrome://global/content/bindings/splitter.xml#splitter"> >+ <content> >+ <xul:vbox class="titledsplitter-container" flex="1"> >+ <xul:spacer class="titledsplitter-dragbar"/> >+ <xul:box class="titledsplitter-titlebox" flex="1" onmousedown="event.stopPropagation()"> >+ <xul:box align="center"> >+ <xul:label class="titledsplitter-text" xbl:inherits="value=label"/> >+ </xul:box> >+ <xul:spacer flex="1"/> >+ <xul:button class="titledsplitter-closebutton" align="center" pack="center" >+ onclick="this.parentNode.parentNode.parentNode.close();"> >+ <xul:image class="titledsplitter-closeimage"/> >+ </xul:button> >+ </xul:box> >+ </xul:vbox> >+ </content> >+ >+ <implementation> >+ <property name="isOpened"> >+ <getter><![CDATA[ >+ return this.mOpened; >+ ]]></getter> >+ </property> >+ >+ <property name="collapsee"> >+ <getter><![CDATA[ >+ var collapse = this.getAttribute("collapse"); >+ return collapse == "before" ? this.previousSibling : this.nextSibling; >+ ]]></getter> >+ </property> >+ >+ <method name="open"> >+ <body><![CDATA[ >+ var collapsee = this.collapsee; >+ if (collapsee) { >+ this.removeAttribute("closed"); >+ this.removeAttribute("collapsed"); >+ collapsee.removeAttribute("collapsed"); >+ this.mOpened = true; >+ this.onopen(); >+ } >+ ]]></body> >+ </method> >+ >+ <method name="close"> >+ <body><![CDATA[ >+ var collapsee = this.collapsee; >+ if (collapsee) { >+ this.setAttribute("closed", "true"); >+ this.setAttribute("collapsed", "true"); >+ collapsee.setAttribute("collapsed", "true"); >+ this.mOpened = false; >+ this.onopen(); >+ } >+ ]]></body> >+ </method> >+ >+ <method name="onopen"> >+ <body><![CDATA[ >+ if (!this.mOnOpen) { >+ var js = this.getAttribute("onopen"); >+ if (js) >+ this.mOnOpen = new Function(js); >+ } >+ >+ return this.mOnOpen ? this.mOnOpen() : null; >+ ]]></body> >+ </method> >+ >+ <constructor><![CDATA[ >+ this.mOpened = false; >+ ]]></constructor> >+ </implementation> >+ >+ </binding> >+ >+</bindings> >diff --git a/suite/extensions/inspector/resources/content/extensions/wsm-colorpicker.js b/suite/extensions/inspector/resources/content/extensions/wsm-colorpicker.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/extensions/wsm-colorpicker.js >@@ -0,0 +1,51 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* wsm-colorpicker ---------------------------------------------- >+* Quick script which adds support for the color picker widget >+* to nsWidgetStateManager in the pref winodw. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+ >+function AddColorPicker(aCallback) >+{ >+ window.addEventListener("load", AddColorPicker_delayCheck, false); >+ window.AddColorPicker_callback = aCallback; >+} >+ >+function AddColorPicker_delayCheck() >+{ >+ if (parent.hPrefWindow) >+ AddColorPicker_addColorHandlers() >+ else >+ setTimeout("AddColorPicker_delayCheck()", 1); >+} >+ >+function AddColorPicker_addColorHandlers() >+{ >+ parent.hPrefWindow.wsm.handlers.colorpicker = { >+ set: function (aElementID, aDataObject) >+ { >+ var wsm = parent.hPrefWindow.wsm; >+ var element = wsm.contentArea.document.getElementById( aElementID ); >+ element.color = aDataObject.color; >+ }, >+ >+ get: function (aElementID) >+ { >+ var wsm = parent.hPrefWindow.wsm; >+ var element = wsm.contentArea.document.getElementById( aElementID ); >+ var dataObject = wsm.generic_Get(element); >+ if(dataObject) { >+ dataObject.color = element.color; >+ return dataObject; >+ } >+ return null; >+ } >+ } >+ >+ window.AddColorPicker_callback(); >+} >diff --git a/suite/extensions/inspector/resources/content/hooks.js b/suite/extensions/inspector/resources/content/hooks.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/hooks.js >@@ -0,0 +1,21 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+function inspectDOMDocument(aDocument, aModal) >+{ >+ window.openDialog("chrome://inspector/content/", "_blank", >+ "chrome,all,dialog=no"+(aModal?",modal":""), aDocument); >+} >+ >+function inspectDOMNode(aNode, aModal) >+{ >+ window.openDialog("chrome://inspector/content/", "_blank", >+ "chrome,all,dialog=no"+(aModal?",modal":""), aNode); >+} >+ >+function inspectObject(aObject, aModal) >+{ >+ window.openDialog("chrome://inspector/content/object.xul", "_blank", >+ "chrome,all,dialog=no"+(aModal?",modal":""), aObject); >+} >diff --git a/suite/extensions/inspector/resources/content/inspector.css b/suite/extensions/inspector/resources/content/inspector.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/inspector.css >@@ -0,0 +1,38 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/content/extensions/titledSplitter.css"); >+ >+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); >+ >+*[hide="true"] { >+ visibility: hidden; >+} >+ >+domi-panelset { >+ -moz-binding: url("chrome://inspector/content/inspector.xml#panelset"); >+ display: -moz-box; >+} >+ >+domi-panel { >+ -moz-binding: url("chrome://inspector/content/inspector.xml#panel"); >+ display: -moz-box; >+} >+ >+#ppsViewerPopupset { >+ display: none; >+} >+ >+.tree-list > treecol, >+.tree-list > .tree-columns > treecol { >+ -moz-binding: none; >+ background-color: transparent !important; >+ margin: 0px !important; >+ border: none !important; >+ padding: 0px !important; >+} >+ >+.tree-nocolpicker > .tree-columns > .tree-columnpicker { >+ visibility: collapse; >+} >diff --git a/suite/extensions/inspector/resources/content/inspector.js b/suite/extensions/inspector/resources/content/inspector.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/inspector.js >@@ -0,0 +1,746 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* InspectorApp --------------------------------------------------------------- >+* The primary object that controls the Inspector application. >+*****************************************************************************/ >+ >+Components.utils.import("resource://gre/modules/Services.jsm"); >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var inspector; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kIsMac = /Mac/.test(navigator.platform); >+const kInspectorTitle = kIsMac ? "" : " - " + document.title; >+ >+const kAccessibleRetrievalContractID = >+ "@mozilla.org/accessibleRetrieval;1"; >+const kClipboardHelperContractID = >+ "@mozilla.org/widget/clipboardhelper;1"; >+const kPromptServiceContractID = >+ "@mozilla.org/embedcomp/prompt-service;1"; >+const kFOStreamContractID = >+ "@mozilla.org/network/file-output-stream;1"; >+const kEncoderContractIDbase = >+ "@mozilla.org/layout/documentEncoder;1?type="; >+const kSerializerContractID = >+ "@mozilla.org/xmlextras/xmlserializer;1"; >+const kWindowMediatorContractID = >+ "@mozilla.org/appshell/window-mediator;1"; >+const kFilePickerContractID = >+ "@mozilla.org/filepicker;1"; >+ >+const nsIAccessible = Components.interfaces.nsIAccessible; >+const nsIWebNavigation = Components.interfaces.nsIWebNavigation; >+const nsIDocShellTreeItem = Components.interfaces.nsIDocShellTreeItem; >+const nsIDocShell = Components.interfaces.nsIDocShell; >+ >+////////////////////////////////////////////////////////////////////////////// >+ >+window.addEventListener("load", InspectorApp_initialize, false); >+window.addEventListener("unload", InspectorApp_destroy, false); >+ >+function InspectorApp_initialize() >+{ >+ inspector = new InspectorApp(); >+ >+ // window.arguments may be either a string or a node. >+ // If passed via a command line handler, it will be a uri string. >+ // If passed via navigator hooks, it will be a dom node to inspect. >+ var initNode, initURI; >+ if (window.arguments && window.arguments.length) { >+ if (typeof window.arguments[0] == "string") { >+ initURI = window.arguments[0]; >+ } >+ else if (window.arguments[0] instanceof Components.interfaces.nsIDOMNode) { >+ initNode = window.arguments[0]; >+ } >+ } >+ inspector.initialize(initNode, initURI); >+ >+ // Fix up content primary for older versions. >+ // See bug 1324899. >+ if (Services.vc.compare(Services.appinfo.platformVersion, "53.0a1") < 0) { >+ document.getElementById("ifBrowser").setAttribute("type", >+ "content-primary"); >+ } >+ >+ // Enable/disable Mac outlier keys. >+ if (kIsMac) { >+ document.getElementById("keyEnterLocation2").setAttribute("disabled", >+ "true"); >+ } >+ else { >+ document.getElementById("keyEditDeleteMac").setAttribute("disabled", >+ "true"); >+ } >+ >+ if (/Win/.test(navigator.platform)) { >+ document.getElementById("mnEditRedo").setAttribute("key", "keyEditRedo2"); >+ } >+ >+ // Get rid of any menus that we expose as overlay points for integration >+ // with several applications but aren't of use with the one hosting us here. >+ var menubar = document.getElementById("mbrInspectorMain"); >+ var kid = menubar.firstChild; >+ while (kid) { >+ let nextSibling = kid.nextSibling; >+ if (!kid.hasChildNodes()) { >+ menubar.removeChild(kid); >+ } >+ kid = nextSibling; >+ } >+} >+ >+function InspectorApp_destroy() >+{ >+ inspector.destroy(); >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Class InspectorApp >+ >+function InspectorApp() >+{ >+} >+ >+InspectorApp.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mShowBrowser: false, >+ mClipboardHelper: null, >+ mPromptService: null, >+ >+ mDocPanel: null, >+ mObjectPanel: null, >+ mDocViewerListPopup: null, >+ mObjectViewerListPopup: null, >+ >+ mLastKnownDocPanelSubject: null, >+ mLastKnownObjectPanelSubject: null, >+ >+ get document() >+ { >+ return this.mDocPanel.viewer.subject >+ }, >+ >+ get panelset() >+ { >+ return this.mPanelSet; >+ }, >+ >+ initialize: function IA_Initialize(aTarget, aURI) >+ { >+ this.mInitTarget = aTarget; >+ >+ var el = document.getElementById("bxBrowser"); >+ el.addEventListener("pageshow", BrowserPageShowListener, true); >+ >+ this.setBrowser(false, true); >+ >+ this.mClipboardHelper = XPCU.getService(kClipboardHelperContractID, >+ "nsIClipboardHelper"); >+ this.mPromptService = XPCU.getService(kPromptServiceContractID, >+ "nsIPromptService"); >+ >+ this.mDocViewerListPopup = >+ document.getElementById("mppDocViewerList"); >+ this.mObjectViewerListPopup = >+ document.getElementById("mppObjectViewerList"); >+ >+ this.mPanelSet = document.getElementById("bxPanelSet"); >+ this.mPanelSet.addObserver("panelsetready", this); >+ this.mPanelSet.initialize(); >+ >+ // check if accessibility service is available >+ if (!(kAccessibleRetrievalContractID in Components.classes)) { >+ var elm = document.getElementById("cmd:toggleAccessibleNodes"); >+ if (elm) { >+ elm.setAttribute("disabled", "true"); >+ } >+ >+ elm = document.getElementById("mnInspectApplicationAccessible"); >+ if (elm) { >+ elm.setAttribute("disabled", "true"); >+ } >+ } >+ >+ if (aURI) { >+ this.gotoURL(aURI); >+ } >+ }, >+ >+ destroy: function IA_Destroy() >+ { >+ InsUtil.persistAll("bxDocPanel"); >+ InsUtil.persistAll("bxObjectPanel"); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Viewer Panels >+ >+ initViewerPanels: function IA_InitViewerPanels() >+ { >+ this.mDocPanel = this.mPanelSet.getPanel(0); >+ this.mDocPanel.addObserver("subjectChange", this); >+ this.mObjectPanel = this.mPanelSet.getPanel(1); >+ this.mObjectPanel.addObserver("subjectChange", this); >+ >+ if (this.mInitTarget) { >+ if (this.mInitTarget.nodeType == Node.DOCUMENT_NODE) { >+ this.setTargetDocument(this.mInitTarget, false); >+ } >+ else if (this.mInitTarget.nodeType == Node.ELEMENT_NODE) { >+ this.setTargetDocument(this.mInitTarget.ownerDocument, false); >+ this.mDocPanel.params = this.mInitTarget; >+ } >+ this.mInitTarget = null; >+ } >+ }, >+ >+ onEvent: function IA_OnEvent(aEvent) >+ { >+ switch (aEvent.type) { >+ case "panelsetready": >+ this.initViewerPanels(); >+ break; >+ case "subjectChange": >+ // A subjectChange really means the *viewer's* subject changed, and >+ // one will be dispatched everytime a new viewer is loaded. Don't >+ // update the entries if the panel's subject is the same as before and >+ // the subjectChange was only dispatched because of a new viewer. >+ if (aEvent.target == this.mDocPanel.viewer) { >+ let panel = this.mDocPanel; >+ let mpp = this.mDocViewerListPopup; >+ // Update the viewer list. >+ if (this.mLastKnownDocPanelSubject != aEvent.subject) { >+ panel.rebuildViewerList(mpp); >+ this.mLastKnownDocPanelSubject = aEvent.subject; >+ } >+ panel.updateViewerListSelection(mpp); >+ >+ if (aEvent.subject) { >+ if ("location" in aEvent.subject) { >+ // display document url >+ this.locationText = aEvent.subject.location; >+ >+ document.title = >+ (aEvent.subject.title || aEvent.subject.location) + >+ kInspectorTitle; >+ >+ this.updateCommand("cmdSave"); >+ } >+ else if (("nsIAccessibleApplication" in Components.interfaces && >+ aEvent.subject instanceof >+ Components.interfaces.nsIAccessibleApplication) || >+ (aEvent.subject instanceof nsIAccessible && >+ !aEvent.subject.parent)) { >+ // Update title for application accessible in compatible way for >+ // Gecko 2.0 and 1.9.2. >+ this.locationText = ""; >+ >+ var title = this.mPanelSet. >+ stringBundle.getString("applicationAccesible.title"); >+ document.title = title + kInspectorTitle; >+ >+ this.updateCommand("cmdSave"); >+ } >+ } >+ } >+ else if (aEvent.target == this.mObjectPanel.viewer) { >+ let panel = this.mObjectPanel; >+ let mpp = this.mObjectViewerListPopup; >+ // Update the viewer list. >+ if (this.mLastKnownObjectPanelSubject != aEvent.subject) { >+ panel.rebuildViewerList(mpp); >+ this.mLastKnownObjectPanelSubject = aEvent.subject; >+ } >+ panel.updateViewerListSelection(mpp); >+ } >+ break; >+ } >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// UI Commands >+ >+ updateCommand: function IA_UpdateCommand(aCommand) >+ { >+ var command = document.getElementById(aCommand); >+ >+ var disabled = false; >+ switch (aCommand) { >+ case "cmdSave": >+ var doc = this.mDocPanel.subject; >+ disabled = >+ !((kEncoderContractIDbase + doc.contentType) in Components.classes || >+ (kSerializerContractID in Components.classes)); >+ break; >+ } >+ >+ command.setAttribute("disabled", disabled); >+ }, >+ >+ doViewerCommand: function IA_DoViewerCommand(aCommand) >+ { >+ this.mPanelSet.execCommand(aCommand); >+ }, >+ >+ enterLocation: function IA_EnterLocation() >+ { >+ this.locationBar.focus(); >+ this.locationBar.select(); >+ }, >+ >+ showPrefsDialog: function IA_ShowPrefsDialog() >+ { >+ goPreferences("inspector_pane"); >+ }, >+ >+ toggleBrowser: function IA_ToggleBrowser(aToggleSplitter) >+ { >+ this.setBrowser(!this.mShowBrowser, aToggleSplitter) >+ }, >+ >+ /** >+ * Toggle 'blink on select' command. >+ */ >+ toggleFlashOnSelect: function IA_ToggleFlashOnSelect() >+ { >+ this.mPanelSet.flasher.flashOnSelect = >+ !this.mPanelSet.flasher.flashOnSelect; >+ }, >+ >+ setBrowser: function IA_SetBrowser(aValue, aToggleSplitter) >+ { >+ this.mShowBrowser = aValue; >+ if (aToggleSplitter) { >+ this.openSplitter("Browser", aValue); >+ } >+ var cmd = document.getElementById("cmdToggleDocument"); >+ cmd.setAttribute("checked", aValue); >+ }, >+ >+ openSplitter: function IA_OpenSplitter(aName, aTruth) >+ { >+ var splitter = document.getElementById("spl" + aName); >+ if (aTruth) { >+ splitter.open(); >+ } >+ else { >+ splitter.close(); >+ } >+ }, >+ >+ /** >+ * Saves the current document state in the inspector. >+ */ >+ save: function IA_Save() >+ { >+ var picker = XPCU.createInstance(kFilePickerContractID, "nsIFilePicker"); >+ var title = document.getElementById("mi-save").label; >+ picker.init(window, title, picker.modeSave) >+ picker.appendFilters(picker.filterHTML | picker.filterXML | >+ picker.filterXUL); >+ if (picker.show() == picker.returnCancel) { >+ return; >+ } >+ >+ var fos = XPCU.createInstance(kFOStreamContractID, "nsIFileOutputStream"); >+ const flags = 0x02 | 0x08 | 0x20; // write, create, truncate >+ >+ var doc = this.mDocPanel.subject; >+ if ((kEncoderContractIDbase + doc.contentType) in Components.classes) { >+ // first we try to use the document encoder for that content type. If >+ // that fails, we move on to the xml serializer. >+ var encoder = >+ XPCU.createInstance(kEncoderContractIDbase + doc.contentType, >+ "nsIDocumentEncoder"); >+ encoder.init(doc, doc.contentType, encoder.OutputRaw); >+ encoder.setCharset(doc.characterSet); >+ fos.init(picker.file, flags, -1, 0); >+ try { >+ encoder.encodeToStream(fos); >+ } >+ finally { >+ fos.close(); >+ } >+ } >+ else { >+ var serializer = XPCU.createInstance(kSerializerContractID, >+ "nsIDOMSerializer"); >+ fos.init(picker.file, flags, -1, 0); >+ try { >+ serializer.serializeToStream(doc, fos); >+ } >+ finally { >+ fos.close(); >+ } >+ } >+ }, >+ >+ exit: function IA_Exit() >+ { >+ window.close(); >+ // Todo: remove observer service here >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Navigation >+ >+ gotoTypedURL: function IA_GotoTypedURL() >+ { >+ var url = document.getElementById("tfURLBar").value; >+ this.gotoURL(url); >+ }, >+ >+ gotoURL: function IA_GotoURL(aURL, aNoSaveHistory) >+ { >+ this.mPendingURL = aURL; >+ this.mPendingNoSave = aNoSaveHistory; >+ this.browseToURL(aURL); >+ this.setBrowser(true, true); >+ }, >+ >+ browseToURL: function IA_BrowseToURL(aURL) >+ { >+ try { >+ this.webNavigation.loadURI(aURL, nsIWebNavigation.LOAD_FLAGS_NONE, null, >+ null, null); >+ } >+ catch(ex) { >+ // nsIWebNavigation.loadURI will spit out an appropriate user prompt, so >+ // we don't need to do anything here. See nsDocShell::DisplayLoadError() >+ } >+ }, >+ >+ /** >+ * Creates the submenu for Inspect Content/Chrome Document >+ */ >+ showInspectDocumentList: >+ function IA_ShowInspectDocumentList(aEvent, aChrome) >+ { >+ var menu = aEvent.target; >+ var ww = XPCU.getService(kWindowMediatorContractID, "nsIWindowMediator"); >+ var windows = ww.getXULWindowEnumerator(null); >+ var docs = []; >+ >+ while (windows.hasMoreElements()) { >+ try { >+ // Get the window's main docshell >+ var windowDocShell = >+ XPCU.QI(windows.getNext(), "nsIXULWindow").docShell; >+ this.appendContainedDocuments(docs, windowDocShell, >+ aChrome ? >+ nsIDocShellTreeItem.typeChrome : >+ nsIDocShellTreeItem.typeContent); >+ } >+ catch (ex) { >+ // We've failed with this window somehow, but we're catching the error >+ // so the others will still work >+ Components.utils.reportError(ex); >+ } >+ } >+ >+ // Clear out any previous menu >+ this.emptyChildren(menu); >+ >+ // Now add what we found to the menu >+ if (!docs.length) { >+ var noneMenuItem = document.createElementNS(kXULNSURI, "menuitem"); >+ var label = this.mPanelSet.stringBundle.getString( >+ "inspectWindow.noDocuments.message" >+ ); >+ noneMenuItem.setAttribute("label", label); >+ noneMenuItem.setAttribute("disabled", true); >+ menu.appendChild(noneMenuItem); >+ } >+ else { >+ for (var i = 0; i < docs.length; i++) { >+ this.addInspectDocumentMenuItem(menu, docs[i], i + 1); >+ } >+ } >+ }, >+ >+ /** >+ * Appends to the array the documents contained in docShell (including the >+ * passed docShell itself). >+ * >+ * @param array >+ * The array to append to. >+ * @param docShell >+ * The docshell to look for documents in. >+ * @param type >+ * One of the types defined in nsIDocShellTreeItem. >+ */ >+ appendContainedDocuments: >+ function IA_AppendContainedDocuments(array, docShell, type) >+ { >+ // Load all the window's content docShells >+ var containedDocShells = docShell.getDocShellEnumerator(type, >+ nsIDocShell.ENUMERATE_FORWARDS); >+ while (containedDocShells.hasMoreElements()) { >+ try { >+ // Get the corresponding document for this docshell >+ var childDoc = XPCU.QI(containedDocShells.getNext(), "nsIDocShell") >+ .contentViewer.DOMDocument; >+ >+ // Ignore the DOM Inspector's browser docshell if it's not being used >+ if (docShell.contentViewer.DOMDocument.location.href != >+ document.location.href || >+ childDoc.location.href != "about:blank") { >+ array.push(childDoc); >+ } >+ } >+ catch (ex) { >+ // We've failed with this document somehow, but we're catching the >+ // error so the others will still work >+ dump(ex + "\n"); >+ } >+ } >+ }, >+ >+ /** >+ * Creates a menu item for Inspect Document. >+ * >+ * @param doc >+ * Document related to this menu item. >+ * @param docNumber >+ * The position of the document. >+ */ >+ addInspectDocumentMenuItem: >+ function IA_AddInspectDocumentMenuItem(parent, doc, docNumber) >+ { >+ var menuItem = document.createElementNS(kXULNSURI, "menuitem"); >+ menuItem.doc = doc; >+ // Use the URL if there's no title >+ var title = doc.title || doc.location.href; >+ // The first ten items get numeric access keys >+ if (docNumber < 10) { >+ menuItem.setAttribute("label", docNumber + " " + title); >+ menuItem.setAttribute("accesskey", docNumber); >+ } >+ else { >+ menuItem.setAttribute("label", title); >+ } >+ parent.appendChild(menuItem); >+ }, >+ >+ setTargetApplicationAccessible: function setTargetApplicationAccessible() >+ { >+ var accService = >+ XPCU.getService(kAccessibleRetrievalContractID, "nsIAccessibleRetrieval"); >+ >+ if (accService) { >+ if ("getApplicationAccessible" in accService) { >+ this.mDocPanel.subject = accService.getApplicationAccessible(); >+ } >+ else { >+ // Gecko 1.9.2 support. >+ var accessible = accService.getAccessibleFor(document); >+ while (accessible.parent) { >+ accessible = accessible.parent; >+ } >+ this.mDocPanel.subject = accessible; >+ } >+ } >+ }, >+ >+ setTargetWindow: function IA_SetTargetWindow(aWindow) >+ { >+ this.setTargetDocument(aWindow.document, true); >+ }, >+ >+ setTargetDocument: function IA_SetTargetDocument(aDoc, aIsInternal) >+ { >+ var cmd = document.getElementById("cmdToggleDocument"); >+ >+ if (aIsInternal == undefined) { >+ aIsInternal = false; >+ } >+ >+ cmd.setAttribute("disabled", !aIsInternal); >+ this.setBrowser(aIsInternal, true); >+ >+ this.mDocPanel.subject = aDoc; >+ }, >+ >+ get webNavigation() >+ { >+ var browser = document.getElementById("ifBrowser"); >+ return browser.webNavigation; >+ }, >+ >+ get locationBar() >+ { >+ return document.getElementById("tfURLBar"); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// UI Labels Getters and Setters >+ >+ get locationText() >+ { >+ return this.locationBar.value; >+ }, >+ >+ set locationText(aText) >+ { >+ this.locationBar.value = aText; >+ }, >+ >+ get statusText() >+ { >+ return document.getElementById("txStatus").value; >+ }, >+ >+ set statusText(aText) >+ { >+ document.getElementById("txStatus").value = aText; >+ }, >+ >+ get progress() >+ { >+ return document.getElementById("pmStatus").value; >+ }, >+ >+ set progress(aPct) >+ { >+ document.getElementById("pmStatus").value = aPct; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Document Loading >+ >+ documentLoaded: function IA_DocumentLoaded() >+ { >+ this.setTargetWindow(content); >+ >+ var url = this.webNavigation.currentURI.spec; >+ >+ // put the url into the urlbar >+ this.locationText = url; >+ >+ // add url to the history, unless explicity told not to >+ if (!this.mPendingNoSave) { >+ this.addToHistory(url); >+ } >+ >+ this.mPendingURL = null; >+ this.mPendingNoSave = null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// History >+ >+ addToHistory: function IA_AddToHistory(aURL) >+ { >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Uncategorized >+ >+ get isViewingContent() >+ { >+ return this.mPanelSet.getPanel(0).subject != null; >+ }, >+ >+ fillInTooltip: function IA_FillInTooltip(aMenuItem) >+ { >+ var doc = aMenuItem.doc; >+ if (!doc) { >+ return false; >+ } >+ >+ var titleLabel = document.getElementById("docItemsTitle"); >+ var uriLabel = document.getElementById("docItemsURI"); >+ titleLabel.value = doc.title; >+ uriLabel.value = doc.location.href; >+ titleLabel.hidden = !titleLabel.value; >+ return true; >+ }, >+ >+ initPopup: function IA_InitPopup(aPopup) >+ { >+ var items = aPopup.getElementsByTagName("menuitem"); >+ var js, fn, item; >+ for (var i = 0; i < items.length; i++) { >+ item = items[i]; >+ fn = "isDisabled" in item ? item.isDisabled : null; >+ if (!fn) { >+ js = item.getAttribute("isDisabled"); >+ if (js) { >+ fn = new Function(js); >+ item.isDisabled = fn; >+ } >+ else { >+ // to prevent annoying "strict" warning messages >+ item.isDisabled = null; >+ } >+ } >+ if (fn) { >+ if (item.isDisabled()) { >+ item.setAttribute("disabled", "true"); >+ } >+ else { >+ item.removeAttribute("disabled"); >+ } >+ } >+ >+ fn = null; >+ } >+ }, >+ >+ emptyChildren: function IA_EmptyChildren(aNode) >+ { >+ while (aNode.hasChildNodes()) { >+ aNode.removeChild(aNode.lastChild); >+ } >+ }, >+ >+ onSplitterOpen: function IA_OnSplitterOpen(aSplitter) >+ { >+ if (aSplitter.id == "splBrowser") { >+ this.setBrowser(aSplitter.isOpened, false); >+ } >+ }, >+ >+ onViewerListCommand: function IA_OnViewerListCommand(aItem) >+ { >+ var mpp = aItem.parentNode; >+ if (mpp == this.mDocViewerListPopup) { >+ this.mDocPanel.onViewerListCommand(aItem); >+ } >+ else if (mpp == this.mObjectViewerListPopup) { >+ this.mObjectPanel.onViewerListCommand(aItem); >+ } >+ }, >+ >+ // needed by overlayed commands from viewer to get references to a specific >+ // viewer object by name >+ getViewer: function IA_GetViewer(aUID) >+ { >+ return this.mPanelSet.registry.getViewerByUID(aUID); >+ } >+}; >+ >+//////////////////////////////////////////////////////////////////////////// >+//// Event Listeners >+ >+function BrowserPageShowListener(aEvent) >+{ >+ // since we will also get pageshow events for frame documents, >+ // make sure we respond to the top-level document load >+ if (aEvent.target.defaultView == content) { >+ inspector.documentLoaded(); >+ } >+} >diff --git a/suite/extensions/inspector/resources/content/inspector.xml b/suite/extensions/inspector/resources/content/inspector.xml >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/inspector.xml >@@ -0,0 +1,926 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<bindings id="ViewerPaneBindings" >+ xmlns="http://www.mozilla.org/xbl" >+ xmlns:xbl="http://www.mozilla.org/xbl" >+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <!-- *********************************************************************** >+ * Inspector >+ * Interface for a set of viewer panels. >+ * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+ * REQUIRED IMPORTS: >+ * chrome://inspector/content/jsutil/xpcom/XPCU.js >+ * chrome://inspector/content/Flasher.js >+ * chrome://inspector/content/ViewerRegistry.js >+ * chrome://inspector/content/jsutil/events/ObserverManager.js >+ * chrome://inspector/content/jsutil/system/PrefUtils.js >+ ************************************************************************ --> >+ >+ <binding id="panelset" >+ extends="chrome://inspector/content/inspector.xml#base"> >+ <content> >+ <xul:stringbundle src="chrome://inspector/locale/inspector.properties"/> >+ <children/> >+ </content> >+ >+ <implementation> >+ <field name="mFocusedDocument">null</field> >+ <field name="mFocusedPanel">null</field> >+ <field name="mStringBundle">null</field> >+ <field name="mTransactionManager">null</field> >+ >+ <property name="registry" readonly="true" >+ onget="return this.mRegistry"/> >+ <property name="initialized" readonly="true" >+ onget="return this.mInitialized"/> >+ <property name="focusedPanel" readonly="true" >+ onget="return this.mFocusedPanel;"/> >+ <property name="stringBundle" readonly="true" >+ onget="return this.mStringBundle;"/> >+ <property name="flasher" readonly="true" >+ onget="return this.mFlasher;"/> >+ >+ <method name="initialize"> >+ <body><![CDATA[ >+ this.mRegistry = new ViewerRegistry(); >+ this.mRegistry.load(kViewerRegURL, this); >+ >+ this.mFlasher = new DOMIFlasher(); >+ >+ var tmClassID = "@mozilla.org/transactionmanager;1"; >+ var tmIface = "nsITransactionManager"; >+ this.mTransactionManager = XPCU.createInstance(tmClassID, tmIface); >+ ]]></body> >+ </method> >+ >+ <method name="onEvent"> >+ <parameter name="aEvent"/> >+ <body><![CDATA[ >+ if (aEvent.type == "viewerChange") { >+ this.onViewerChange(aEvent); >+ } >+ >+ // bubble the event up >+ this.mObsMan.dispatchEvent(aEvent.type, aEvent); >+ ]]></body> >+ </method> >+ >+ <method name="onViewerRegistryLoad"> >+ <body><![CDATA[ >+ var panels = this.panels; >+ for (let i = 0; i < panels.length; ++i) { >+ panels[i].initialize(); >+ panels[i].addObserver("viewerChange", this); >+ panels[i].addObserver("subjectChange", this); >+ } >+ >+ this.updateViewerCommandsFor(null, null); >+ this.updateAllCommands(); >+ >+ this.mInitialized = true; >+ this.mObsMan.dispatchEvent("panelsetready", {}); >+ ]]></body> >+ </method> >+ >+ <method name="onViewerRegistryLoadError"> >+ <body><![CDATA[ >+ throw "Unable to load the Viewer Registry"; >+ ]]></body> >+ </method> >+ >+ <method name="onViewerChange"> >+ <parameter name="aEvent"/> >+ <body><![CDATA[ >+ // Update commands for the new viewer of the primary panel >+ // (currently driven viewers don't have own commands). >+ this.updateViewerCommandsFor(aEvent.newViewer.uid, >+ aEvent.oldViewer ? >+ aEvent.oldViewer.uid : >+ null); >+ ]]></body> >+ </method> >+ >+ <property name="panels"> >+ <getter> >+ return this.getElementsByTagName("domi-panel"); >+ </getter> >+ </property> >+ >+ <property name="panelCount"> >+ <getter> >+ return this.panels.length; >+ </getter> >+ </property> >+ >+ <method name="getPanel"> >+ <parameter name="aIndex"/> >+ <body><![CDATA[ >+ return this.panels[aIndex]; >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ //// Global Commands --> >+ >+ <method name="updateAllCommands"> >+ <body><![CDATA[ >+ var cmds = >+ document.getElementById(this.getAttribute("viewercommandset")); >+ if (!cmds) { >+ return; >+ } >+ >+ var els = cmds.getElementsByAttribute("global", "true"); >+ for (let i = 0; i < els.length; i++) { >+ this.updateCommand(els[i].id); >+ } >+ ]]></body> >+ </method> >+ >+ <method name="updateCommand"> >+ <parameter name="aCommand"/> >+ <body><![CDATA[ >+ var enabled; >+ if (aCommand == "cmdEditUndo") { >+ enabled = this.mTransactionManager && >+ this.mTransactionManager.numberOfUndoItems > 0; >+ } >+ else if (aCommand == "cmdEditRedo") { >+ enabled = this.mTransactionManager && >+ this.mTransactionManager.numberOfRedoItems > 0; >+ } >+ else { >+ if (this.focusedPanel && this.focusedPanel.viewer) { >+ enabled = this.focusedPanel.viewer.isCommandEnabled(aCommand); >+ } >+ } >+ this.setCommandAttribute(aCommand, "disabled", !enabled); >+ ]]></body> >+ </method> >+ >+ <method name="getCommandAttribute"> >+ <parameter name="aCommand"/> >+ <parameter name="aAttribute"/> >+ <body><![CDATA[ >+ var cmd = document.getElementById(aCommand); >+ return cmd ? cmd.getAttribute(aAttribute) : null; >+ ]]></body> >+ </method> >+ >+ <method name="setCommandAttribute"> >+ <parameter name="aCommand"/> >+ <parameter name="aAttribute"/> >+ <parameter name="aValue"/> >+ <body><![CDATA[ >+ // set attribute on command in our document >+ var cmd = document.getElementById(aCommand); >+ if (cmd) { >+ if (aValue == false || aValue == "false") { >+ cmd.removeAttribute(aAttribute); >+ } >+ else { >+ cmd.setAttribute(aAttribute, aValue); >+ } >+ } >+ >+ // set attribute on command in each viewer document >+ var panels = this.panels; >+ for (let i = 0; i < panels.length; ++i) { >+ var doc = panels[i].viewerDocument; >+ cmd = doc.getElementById(aCommand); >+ if (cmd) { >+ if (aValue == false || aValue == "false") { >+ cmd.removeAttribute(aAttribute); >+ } >+ else { >+ cmd.setAttribute(aAttribute, aValue); >+ } >+ } >+ } >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ //// Viewer-Specific Commands --> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Update viewer-specific commands states in accordance with the current >+ // viewer. >+ //////////////////////////////////////////////////////////////////// --> >+ <method name="updateViewerCommandsFor"> >+ <parameter name="aNewViewerUid"/> >+ <parameter name="aOldViewerUid"/> >+ <body><![CDATA[ >+ let cmdsetElId = this.getAttribute("viewercommandset"); >+ let cmdsetEl = document.getElementById(cmdsetElId); >+ if (!cmdsetEl) { >+ return; >+ } >+ >+ let cmdEls = cmdsetEl.getElementsByAttribute("viewer", "*"); >+ for (let idx = 0; idx < cmdEls.length; idx++) { >+ let cmdEl = cmdEls[idx]; >+ >+ if (!aNewViewerUid && !aOldViewerUid) { >+ cmdEl.setAttribute("disabled", "true"); >+ continue; >+ } >+ >+ let viewerUids = cmdEl.getAttribute("viewer"); >+ let viewerUidArray = viewerUids.split(/\s/); >+ >+ if (aNewViewerUid && viewerUidArray.indexOf(aNewViewerUid) != -1) { >+ cmdEl.removeAttribute("disabled"); >+ >+ } >+ else if (aOldViewerUid && >+ viewerUidArray.indexOf(aOldViewerUid) != -1) { >+ cmdEl.setAttribute("disabled", "true"); >+ } >+ } >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ //// Command Execution --> >+ >+ <method name="execCommand"> >+ <parameter name="aCommand"/> >+ <body><![CDATA[ >+ if (aCommand == "cmdEditUndo") { >+ this.mTransactionManager.undoTransaction(); >+ } >+ else if (aCommand == "cmdEditRedo") { >+ this.mTransactionManager.redoTransaction(); >+ } >+ else { >+ if (!this.focusedPanel) { >+ return; >+ } >+ >+ // if the command is enabled, execute it >+ var viewer = this.focusedPanel.viewer; >+ if (!viewer.isCommandEnabled(aCommand)) { >+ return; >+ } >+ var command = viewer.getCommand(aCommand); >+ if (!command) { >+ return; >+ } >+ >+ this.mTransactionManager.doTransaction(command); >+ } >+ >+ this.updateCommand("cmdEditUndo"); >+ this.updateCommand("cmdEditRedo"); >+ ]]></body> >+ </method> >+ >+ <method name="addTransactionListener"> >+ <parameter name="aListener"/> >+ <body><![CDATA[ >+ this.mTransactionManager.AddListener(aListener); >+ ]]></body> >+ </method> >+ >+ <method name="removeTransactionListener"> >+ <parameter name="aListener"/> >+ <body><![CDATA[ >+ this.mTransactionManager.RemoveListener(aListener); >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ //// Clipboard --> >+ >+ <field name="mClipboard">null</field> >+ <field name="mClipboardData">null</field> >+ <field name="mClipboardFlavor">null</field> >+ <field name="mClipboardHelper">null</field> >+ >+ <property name="clipboardFlavor" readonly="true" >+ onget="return this.mClipboardFlavor"/> >+ >+ <property name="clipboard" readonly="true"> >+ <getter> >+ <![CDATA[ >+ if (!this.mClipboard) { >+ var iid = Components.interfaces.nsIClipboard; >+ var cid = "@mozilla.org/widget/clipboard;1"; >+ this.mClipboard = Components.classes[cid].createInstance(iid); >+ } >+ return this.mClipboard; >+ ]]></getter> >+ </property> >+ >+ <property name="clipboardHelper" readonly="true"> >+ <getter> >+ <![CDATA[ >+ if (!this.mClipboardHelper) { >+ this.mClipboardHelper = >+ Components.classes["@mozilla.org/widget/clipboardhelper;1"] >+ .getService(Components.interfaces.nsIClipboardHelper); >+ } >+ return this.mClipboardHelper; >+ ]]></getter> >+ </property> >+ >+ <method name="setClipboardData"> >+ <parameter name="aObject"/> >+ <parameter name="aFlavor"/> >+ <parameter name="aTextRepresentation"/> >+ <body><![CDATA[ >+ // put the text representation on the system clipboard >+ if (aTextRepresentation) { >+ this.clipboardHelper.copyString(aTextRepresentation); >+ } >+ >+ // store the real object internally >+ this.mClipboardData = aObject; >+ this.mClipboardFlavor = aFlavor; >+ >+ this.updateCommand("cmdEditPaste"); >+ ]]></body> >+ </method> >+ >+ <method name="getClipboardData"> >+ <body><![CDATA[ >+ return this.mClipboardData; >+ ]]></body> >+ </method> >+ >+ <constructor><![CDATA[ >+ this.mStringBundle = document.getAnonymousNodes(this)[0]; >+ ]]></constructor> >+ >+ <destructor> >+ this.mFlasher.destroy(); >+ this.mFlasher = null; >+ </destructor> >+ </implementation> >+ >+ <handlers> >+ <handler event="focus" phase="capturing"> >+ <![CDATA[ >+ if (!(event.originalTarget instanceof Element)) { >+ return; >+ } >+ >+ var targetDoc = event.originalTarget.ownerDocument; >+ if (targetDoc == this.mFocusedDocument) { >+ return; >+ } >+ >+ this.mFocusedDocument = targetDoc; >+ >+ if (targetDoc != this.ownerDocument) { >+ var panels = this.panels; >+ for (let i = 0; i < panels.length; ++i) { >+ if (targetDoc == panels[i].viewerDocument) { >+ this.mFocusedPanel = panels[i]; >+ this.updateAllCommands(); >+ return; >+ } >+ } >+ } >+ >+ this.mFocusedPanel = null; // if all else fails >+ ]]> >+ </handler> >+ </handlers> >+ >+ </binding> >+ >+ <!-- ************************************************************************ >+ * ViewerPane >+ * Interface for a panel accepts a node and displays all eligible >+ * viewers in a list and activates the selected viewer. >+ * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+ * REQUIRED IMPORTS: >+ * chrome://inspector/content/jsutil/xpcom/XPCU.js >+ * chrome://inspector/content/jsutil/events/ObserverManager.js >+ ************************************************************************ --> >+ >+ <binding id="panel" extends="chrome://inspector/content/inspector.xml#base"> >+ <content orient="vertical"> >+ <xul:toolbox class="viewer-pane-toolbox" xbl:inherits="disabled"> >+ <xul:toolbar class="viewer-pane-header" align="center" >+ xbl:inherits="disabled" xpfe="false"> >+ <xul:toolbarbutton type="menu" anonid="viewer-list" >+ class="viewer-list" disabled="true"/> >+ <xul:label anonid="viewer-title" class="viewer-title label toolbar" >+ flex="1"/> >+ <xul:toolbarbutton type="menu" anonid="viewer-menu" >+ class="viewer-menu" disabled="true"/> >+ </xul:toolbar> >+ </xul:toolbox> >+ <xul:box class="viewer-pane-box-1" flex="1"> >+ <xul:box class="viewer-pane-box-2" flex="1"> >+ <xul:browser anonid="viewer-iframe" class="viewer-iframe" >+ disablehistory="true" disablesecurity="true" flex="1"/> >+ </xul:box> >+ </xul:box> >+ </content> >+ >+ <resources> >+ <stylesheet src="chrome://inspector/skin/panelset.css"/> >+ </resources> >+ >+ <implementation> >+ <field name="mCurrentEntry">null</field> >+ <field name="mCurrentViewer">null</field> >+ <field name="mSubject">null</field> >+ <field name="mParams">null</field> >+ <field name="mParamsPending">null</field> >+ >+ <constructor><![CDATA[ >+ // look for panelset parent >+ var p = this.parentNode; >+ while (p && p.localName != "domi-panelset") { >+ p = p.parentNode; >+ } >+ >+ this.mPanelSet = p; >+ >+ this.setAttribute("disabled", "true"); >+ >+ this.mIFrameEl = >+ document.getAnonymousElementByAttribute(this, "anonid", >+ "viewer-iframe"); >+ ]]></constructor> >+ >+ <destructor><![CDATA[ >+ if (this.mCurrentViewer) { >+ this.destroyViewer(); >+ } >+ ]]></destructor> >+ >+ <property name="panelset" >+ onget="return this.mPanelSet;"/> >+ >+ <property name="viewer" >+ onget="return this.mCurrentViewer;"/> >+ >+ <property name="subject" >+ onget="return this.mSubject;" >+ onset="this.setSubject(val);"/> >+ >+ <property name="params"> >+ <getter><![CDATA[ >+ return this.mParams; >+ ]]></getter> >+ <setter><![CDATA[ >+ // Don't let the params get nulled out before anyone gets to use them. >+ this.mParamsPending = true; >+ return this.mParams = val; >+ ]]></setter> >+ </property> >+ >+ <property name="title" >+ onget="return this.getAttribute('title');" >+ onset="return this.setAttribute('title', val);"/> >+ >+ <property name="registry" >+ onget="return this.panelset.registry;"/> >+ >+ <property name="viewerDocument" >+ onget="return this.mIFrameEl.contentDocument;"/> >+ >+ <property name="linkedPanel"> >+ <getter><![CDATA[ >+ return this.mLinkedPanel; >+ ]]></getter> >+ <setter><![CDATA[ >+ if (this.mLinkedPanel) { >+ this.mLinkedPanel.removeObserver("viewerChange", this); >+ } >+ >+ this.mLinkedPanel = val; >+ >+ if (val) { >+ val.addObserver("viewerChange", this); >+ } >+ ]]></setter> >+ </property> >+ >+ <field name="mLinkedPanel">null</field> >+ <field name="mLinkedViewer">null</field> >+ <field name="mCurrentViewer">null</field> >+ <field name="mCurrentEntry">null</field> >+ <field name="mCachedEntries">null</field> >+ >+ <method name="initialize"> >+ <body><![CDATA[ >+ this.mListEl = >+ document.getAnonymousElementByAttribute(this, "anonid", >+ "viewer-list"); >+ this.mTitleEl = >+ document.getAnonymousElementByAttribute(this, "anonid", >+ "viewer-title"); >+ this.mMenuEl = >+ document.getAnonymousElementByAttribute(this, "anonid", >+ "viewer-menu"); >+ >+ if (this.hasAttribute("linkedpanel")) { >+ this.linkedPanel = >+ document.getElementById(this.getAttribute("linkedpanel")); >+ } >+ >+ this.fillViewerList(); >+ ]]></body> >+ </method> >+ >+ <method name="notifyViewerReady"> >+ <parameter name="aViewer"/> >+ <body><![CDATA[ >+ var old = this.mCurrentViewer; >+ this.mCurrentViewer = aViewer; >+ var oldEntry = this.mCurrentEntry; >+ this.mCurrentEntry = this.mPendingEntry; >+ >+ if (aViewer) { >+ this.registry.cacheViewer(aViewer, this.mCurrentEntry); >+ var title = this.registry.getEntryProperty(this.mCurrentEntry, >+ "description"); >+ this.setTitle(title); >+ } >+ else { >+ this.setTitle(null); >+ } >+ >+ this.rebuildViewerContextMenu(); >+ this.updateViewerListSelection(this.mListElPopup); >+ >+ // listen for subjectChange so we can bubble it >+ if (old) { >+ old.removeObserver("subjectChange", this); >+ } >+ >+ if (aViewer) { >+ aViewer.addObserver("subjectChange", this); >+ } >+ >+ this.mObsMan.dispatchEvent("viewerChange", >+ { viewerPane: this, oldViewer: old, newViewer: aViewer }); >+ >+ if (aViewer) { >+ aViewer.subject = this.mSubject; >+ // only give initial focus to panes that are not on the right side >+ // of a link >+ if (!aViewer.pane.hasAttribute("linkedpanel")) { >+ var doc = aViewer.pane.viewerDocument; >+ doc.commandDispatcher >+ .advanceFocusIntoSubtree(doc.documentElement); >+ } >+ } >+ ]]></body> >+ </method> >+ >+ <method name="destroyViewer"> >+ <body><![CDATA[ >+ this.mCurrentViewer.destroy(); >+ this.registry.uncacheViewer(this.mCurrentViewer); >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ //// UI Commands --> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Sets the new view to the item just selected from the "viewer list" >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="onViewerListCommand"> >+ <parameter name="aItem"/> >+ <body><![CDATA[ >+ this.switchViewer(parseInt(aItem.getAttribute("viewerListEntry"))); >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Prepares the list of viewers for a node, rebuilds the menulist to >+ // display them, and load the default viewer for the node. >+ // >+ // @param aObject >+ // the object to begin viewing >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="setSubject"> >+ <parameter name="aObject"/> >+ <body><![CDATA[ >+ // Check if someone wanted to pass some parameters in. >+ if (this.mParamsPending) { >+ this.mParamsPending = false; >+ } >+ else { >+ this.mParams = null; >+ } >+ >+ var didRebuild = false; >+ var entries = this.mCachedEntries; >+ if (this.mSubject != aObject || !entries) { >+ this.mSubject = aObject; >+ entries = this.registry.findViewersForObject(aObject, this.id, >+ this.mLinkedViewer); >+ // It's possible that the entries will be the same, even for >+ // different objects. If they are, we can forego the DOM >+ // manipulations involved in rebuilding. >+ if (!this.mCachedEntries || >+ this.mCachedEntries.toString() != entries.toString()) { >+ this.mCachedEntries = entries; >+ this.rebuildViewerList(this.mListElPopup); >+ didRebuild = true; >+ } >+ } >+ >+ if (entries.length == 0) { >+ this.switchViewer(-1); >+ this.setAttribute("disabled", "true"); >+ } >+ else if (entries.indexOf(this.mCurrentEntry) < 0) { >+ this.switchViewer(entries[0]); >+ this.removeAttribute("disabled"); >+ } >+ else { >+ this.mCurrentViewer.subject = aObject; >+ this.removeAttribute("disabled"); >+ if (didRebuild) { >+ // We need to ensure here that the viewer list selection gets >+ // updated, because otherwise it will only get updated when a >+ // new viewer loads and calls notifyViewerReady. >+ this.updateViewerListSelection(this.mListElPopup); >+ } >+ } >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Clear out and rebuild the menulist full of the available views for >+ // the currently selected node. >+ // >+ // @param aPopup >+ // the menupopup to which the items should be added >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="rebuildViewerList"> >+ <parameter name="aPopup"/> >+ <body><![CDATA[ >+ var entries = this.mCachedEntries; >+ if (entries.length <= 0) { >+ aPopup.parentNode.setAttribute("disabled", true); >+ } >+ else { >+ aPopup.parentNode.removeAttribute("disabled"); >+ } >+ >+ // empty the list >+ while (aPopup.firstChild) { >+ aPopup.removeChild(aPopup.firstChild); >+ } >+ >+ for (let i = 0; i < entries.length; i++) { >+ let entry = entries[i]; >+ let menuitem = aPopup.ownerDocument.createElement("menuitem"); >+ menuitem.setAttribute("label", >+ this.registry >+ .getEntryProperty(entry, "description")); >+ menuitem.setAttribute("viewerListEntry", entry); >+ menuitem.setAttribute("type", "radio"); >+ menuitem.setAttribute("name", "viewerListEntries"); >+ aPopup.appendChild(menuitem); >+ } >+ ]]></body> >+ </method> >+ >+ <method name="updateViewerListSelection"> >+ <parameter name="aPopup"/> >+ <body><![CDATA[ >+ // Uncheck any previously checked items. >+ var checked = aPopup.getElementsByAttribute("checked", "true"); >+ if (checked.length > 1) { >+ Components.utils.reportError("expected only zero or one checked items"); >+ } >+ while (checked.length) { >+ checked[0].removeAttribute("checked"); >+ } >+ var entry = this.mCurrentEntry; >+ checked = aPopup.getElementsByAttribute("viewerListEntry", entry); >+ if (checked.length == 1) { >+ checked[0].setAttribute("checked", "true"); >+ } >+ else { >+ Components.utils.reportError("expected one item to match entry " + >+ entry); >+ } >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Loads the viewer described by an entry in the viewer registry. >+ // >+ // @param aEntry >+ // entry index in the viewer registry >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="switchViewer"> >+ <parameter name="aEntry"/> >+ <body><![CDATA[ >+ if (aEntry < 0) { // -1 is for null viewer >+ this.mPendingEntry = -1; >+ this.notifyViewerReady(null); >+ return; >+ } >+ >+ var url = this.registry.getEntryURL(aEntry); >+ >+ var loadNew = true; >+ if (this.mCurrentViewer) { >+ var oldURL = this.registry.getEntryURL(this.mCurrentEntry); >+ if (oldURL == url) { >+ loadNew = false; >+ } >+ } >+ >+ if (loadNew) { >+ this.mPendingEntry = aEntry; >+ this.loadViewerURL(url); >+ } >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Begin loading a new viewer from a given url. >+ // >+ // @param aURL >+ // the url of the viewer document >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="loadViewerURL"> >+ <parameter name="aURL"/> >+ <body><![CDATA[ >+ if (this.mCurrentViewer) { >+ // tell the old viewer it's about to go away >+ this.destroyViewer(); >+ } >+ >+ // load the new document >+ FrameExchange.loadURL(this.mIFrameEl, aURL, this); >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Rebuild the viewer context menu >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="rebuildViewerContextMenu"> >+ <body><![CDATA[ >+ if (!this.mSubject) { >+ this.mMenuEl.setAttribute("disabled", "true"); >+ return; >+ } >+ else { >+ this.mMenuEl.removeAttribute("disabled"); >+ } >+ >+ // remove old context menu >+ if (this.mContextMenu) { >+ this.mMenuEl.removeChild(this.mContextMenu); >+ this.mFormerContextParent.appendChild(this.mContextMenu); >+ } >+ >+ var uid = this.registry.getEntryProperty(this.mCurrentEntry, "uid"); >+ var ppId = "ppViewerContext-" + uid; >+ var pp = document.getElementById(ppId); >+ if (pp) { >+ this.mMenuEl.removeAttribute("disabled"); >+ var parent = pp.parentNode; >+ parent.removeChild(pp); >+ this.mMenuEl.appendChild(pp); >+ >+ this.mFormerContextParent = parent; >+ } >+ else { >+ this.mMenuEl.setAttribute("disabled", "true"); >+ } >+ this.mContextMenu = pp; >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Set the text in the viewer title bar >+ // >+ // @param title >+ // the text to use >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="setTitle"> >+ <parameter name="aTitle"/> >+ <body><![CDATA[ >+ this.mTitleEl.setAttribute("value", >+ this.title && aTitle ? >+ this.title + " - " + aTitle : >+ ""); >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Fill out the content of the "viewer list" menu >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="fillViewerList"> >+ <body><![CDATA[ >+ this.mListEl.pViewer = this; >+ this.mListEl.setAttribute("oncommand", >+ "this.pViewer.onViewerListCommand(event.originalTarget)"); >+ >+ var mpp = document.createElement("menupopup"); >+ this.mListEl.appendChild(mpp); >+ this.mListElPopup = mpp; >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Listen for selection changes on the viewer in the linked pane >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="observerLinkedViewer"> >+ <body><![CDATA[ >+ if (this.mLinkedViewer) { >+ this.mLinkedViewer.removeObserver("selectionChange", this); >+ } >+ >+ this.mCachedEntries = null; >+ this.mLinkedViewer = this.mLinkedPanel.viewer; >+ this.mLinkedViewer.addObserver("selectionChange", this); >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // Update this pane's subject to be the selection of it's linked pane >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="updateLinkedSubject"> >+ <body><![CDATA[ >+ this.subject = this.mLinkedViewer.selection; >+ ]]></body> >+ </method> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ // global event handler >+ //////////////////////////////////////////////////////////////////// --> >+ >+ <method name="onEvent"> >+ <parameter name="aEvent"/> >+ <body><![CDATA[ >+ switch (aEvent.type) { >+ case "viewerChange": >+ this.observerLinkedViewer(); >+ break; >+ case "selectionChange": >+ this.updateLinkedSubject(); >+ break; >+ case "subjectChange": >+ this.mObsMan.dispatchEvent("subjectChange", aEvent); >+ }; >+ ]]></body> >+ </method> >+ >+ </implementation> >+ >+ </binding> >+ >+ <binding id="base"> >+ <implementation> >+ <constructor><![CDATA[ >+ this.mObsMan = new ObserverManager(this); >+ ]]></constructor> >+ >+ <!-- /////////////////////////////////////////////////////////////////// >+ //// Event Handling --> >+ >+ <method name="addObserver"> >+ <parameter name="aEvent"/> >+ <parameter name="aObserver"/> >+ <body><![CDATA[ >+ this.mObsMan.addObserver(aEvent, aObserver); >+ ]]></body> >+ </method> >+ >+ <method name="removeObserver"> >+ <parameter name="aEvent"/> >+ <parameter name="aObserver"/> >+ <body><![CDATA[ >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ ]]></body> >+ </method> >+ >+ </implementation> >+ >+ </binding> >+ >+</bindings> >diff --git a/suite/extensions/inspector/resources/content/inspector.xul b/suite/extensions/inspector/resources/content/inspector.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/inspector.xul >@@ -0,0 +1,58 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE window [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+]> >+ >+<?xul-overlay href="chrome://inspector/content/inspectorOverlay.xul"?> >+<?xul-overlay href="chrome://inspector/content/toolboxOverlay.xul"?> >+<?xul-overlay href="chrome://inspector/content/popupOverlay.xul"?> >+<?xul-overlay href="chrome://inspector/content/commandOverlay.xul"?> >+<?xul-overlay href="chrome://inspector/content/keysetOverlay.xul"?> >+<?xul-overlay href="chrome://inspector/content/statusbarOverlay.xul"?> >+ >+<?xml-stylesheet href="chrome://inspector/skin/inspectorWindow.css"?> >+ >+<window id="winInspectorMain" title="&Inspector.title;" >+ width="640" height="480" >+ persist="screenX screenY width height sizemode" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <stringbundleset id="stringbundleset"> >+ <stringbundle id="inspector-bundle" >+ src="chrome://inspector/locale/inspector.properties"/> >+ </stringbundleset> >+ <popupset id="aTooltipSet"/> >+ >+ <popupset id="ppsGlobalPopupset"/> >+ <popupset id="ppsViewerPopupset"/> >+ >+ <keyset id="ksGlobalKeyset"/> >+ <commandset id="cmdsGlobalCommands"/> >+ >+ <commandset id="tasksCommands"> >+ <command id="cmd_quit"/> >+ </commandset> >+ >+ <commandset id="baseMenuCommandSet"/> >+ >+ <keyset id="tasksKeys"> >+ <key id="key_saveInspector" key="&saveCmd.key;" command="cmdSave" >+ modifiers="accel"/> >+ <key id="key_closeInspector" key="&closeCmd.key;" command="cmdClose" >+ modifiers="accel"/> >+ <key id="key_quit"/> >+ </keyset> >+ >+ <keyset id="baseMenuKeyset"/> >+ >+ <toolbox id="tbxInsToolbox"> >+ <menubar id="mbrInspectorMain"/> >+ <toolbar id="tbInspectorPrimary"/> >+ </toolbox> >+ >+ <vbox id="bxInspectorMain" flex="1"/> >+</window> >diff --git a/suite/extensions/inspector/resources/content/inspectorOverlay.xul b/suite/extensions/inspector/resources/content/inspectorOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/inspectorOverlay.xul >@@ -0,0 +1,61 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/inspector.dtd"> >+ >+<overlay id="ovInspector" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/inspector.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/ViewerRegistry.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/Flasher.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/rdf/RDFU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/rdf/RDFArray.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/FrameExchange.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/system/PrefUtils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/system/FilePickerUtils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <vbox id="bxInspectorMain"> >+ >+ <domi-panelset id="bxPanelSet" flex="1" >+ viewercommandset="cmdsGlobalCommands"> >+ <domi-panel id="bxDocPanel" title="&bxDocPanel.title;" >+ flex="1" persist="width"/> >+ >+ <splitter id="splPanels" collapse="after"> >+ <grippy/> >+ </splitter> >+ >+ <domi-panel id="bxObjectPanel" title="&bxObjectPanel.title;" >+ linkedpanel="bxDocPanel" flex="1" persist="width"/> >+ </domi-panelset> >+ >+ <splitter id="splBrowser" class="titled-splitter" >+ onopen="inspector.onSplitterOpen(this)" >+ label="&browserPanel.label;" collapse="after"/> >+ >+ <hbox id="bxBrowser" flex="1"> >+ <browser id="ifBrowser" type="content" primary="true" >+ disablehistory="true" disablesecurity="true" >+ flex="1" src="about:blank"/> >+ </hbox> >+ >+ </vbox> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/jsutil/commands/baseCommands.js b/suite/extensions/inspector/resources/content/jsutil/commands/baseCommands.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/commands/baseCommands.js >@@ -0,0 +1,164 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* Base Commands -------------------------------------------------------------- >+* Transactions which can be used to implement common commands. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* (Other files may be necessary, depending on which base commands are used.) >+*****************************************************************************/ >+ >+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kClipboardHelperClassID = "@mozilla.org/widget/clipboardhelper;1"; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Transactions >+ >+/** >+ * Base implementation of an nsITransaction. >+ * @param aIsTransient [optional] >+ * Override the isTransient field. The default is true. >+ */ >+function inBaseCommand(aIsTransient) >+{ >+ if (aIsTransient !== undefined) { >+ this.isTransient = aIsTransient; >+ } >+} >+ >+inBaseCommand.prototype = { >+ isTransient: true, >+ >+ merge: function BaseCommand_Merge() >+ { >+ return false; >+ }, >+ >+ QueryInterface: >+ XPCOMUtils.generateQI([Components.interfaces.nsITransaction]), >+ >+ doTransaction: function BaseCommand_DoTransaction() {}, >+ undoTransaction: function BaseCommand_UndoTransaction() {}, >+ >+ redoTransaction: function BaseCommand_RedoTransaction() >+ { >+ this.doTransaction(); >+ } >+}; >+ >+/** >+ * Open the object "mini" viewer (object.xul) on a given object. The mObject >+ * field should be overridden to contain the object to be inspected. >+ * >+ * Primitives are uninteresting and attempts to inspect them will fail. >+ * Consumers should take this into account when determining whether the >+ * corresponding command should be enabled. For convenience, >+ * cmdEditInspectInNewWindowBase.isInspectable is provided. >+ */ >+function cmdEditInspectInNewWindowBase() >+{ >+ this.mObject = null; >+} >+ >+cmdEditInspectInNewWindowBase.isInspectable = >+ function InspectInNewWindowBase_IsInspectable(aValue) >+{ >+ var type = typeof aValue; >+ return (type == "object" && aValue !== null) || type == "function"; >+}; >+ >+cmdEditInspectInNewWindowBase.prototype = new inBaseCommand(); >+ >+cmdEditInspectInNewWindowBase.prototype.doTransaction = >+ function InspectInNewWindowBase_DoTransaction() >+{ >+ if (cmdEditInspectInNewWindowBase.isInspectable(this.mObject)) { >+ inspectObject(this.mObject); >+ } >+}; >+ >+/** >+ * Copy a string to the clipboard. The mString field should be overridden to >+ * contain the string to be copied. >+ */ >+function cmdEditCopySimpleStringBase() >+{ >+ this.mString = null; >+} >+ >+cmdEditCopySimpleStringBase.prototype = new inBaseCommand(); >+ >+cmdEditCopySimpleStringBase.prototype.doTransaction = >+ function CopySimpleStringBase_DoTransaction() >+{ >+ if (this.mString) { >+ var helper = XPCU.getService(kClipboardHelperClassID, >+ "nsIClipboardHelper"); >+ helper.copyString(this.mString); >+ } >+}; >+ >+/** >+ * An nsITransaction to copy items to the panelset clipboard. >+ * @param aObjects >+ * an array of objects that define a clipboard flavor, a delimiter, and >+ * toString(). >+ */ >+function cmdEditCopy(aObjects) >+{ >+ this.mObjects = aObjects; >+} >+ >+cmdEditCopy.prototype = new inBaseCommand(); >+ >+cmdEditCopy.prototype.doTransaction = function Utils_Copy_DoTransaction() >+{ >+ if (this.mObjects.length == 1) { >+ viewer.pane.panelset.setClipboardData(this.mObjects[0], >+ this.mObjects[0].flavor, >+ this.mObjects.toString()); >+ } >+ else { >+ var joinedObjects = this.mObjects.join(this.mObjects[0].delimiter); >+ viewer.pane.panelset.setClipboardData(this.mObjects, >+ this.mObjects[0].flavor + "s", >+ joinedObjects); >+ } >+} >+ >+/** >+ * Open a source view on a file. The mURI field should be overridden to >+ * contain the URI of the file on which to open the source view. The >+ * mLineNumber field may optionally be set to contain the line number at which >+ * the source view should be opened. >+ */ >+function cmdEditViewFileURIBase() >+{ >+ this.mURI = null; >+ this.mLineNumber = 0; >+} >+ >+cmdEditViewFileURIBase.prototype = new inBaseCommand(); >+ >+cmdEditViewFileURIBase.prototype.doTransaction = >+ function ViewFileURIBase_DoTransaction() >+{ >+ if (this.mURI) { >+ // 1.9.0 toolkit doesn't have this method >+ if ("viewSource" in gViewSourceUtils) { >+ gViewSourceUtils.viewSource(this.mURI, null, null, this.mLineNumber); >+ } >+ else { >+ openDialog("chrome://global/content/viewSource.xul", >+ "_blank", >+ "all,dialog=no", >+ this.mURI, null, null, this.mLineNumber, null); >+ } >+ } >+}; >diff --git a/suite/extensions/inspector/resources/content/jsutil/events/ObserverManager.js b/suite/extensions/inspector/resources/content/jsutil/events/ObserverManager.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/events/ObserverManager.js >@@ -0,0 +1,62 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* ObserverManager ----------------------------------------------- >+* Manages observer and event dispatching for an object. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class ObserverManager >+ >+function ObserverManager(aTarget) >+{ >+ this.mTarget = aTarget; >+ this.mObservers = {}; >+} >+ >+ObserverManager.prototype = >+{ >+ addObserver: function(aEventName, aObserver) >+ { >+ var list; >+ if (!(aEventName in this.mObservers)) { >+ list = []; >+ this.mObservers[aEventName] = list; >+ } else >+ list = this.mObservers[aEventName]; >+ >+ >+ list.push(aObserver); >+ }, >+ >+ removeObserver: function(aEventName, aObserver) >+ { >+ if (aEventName in this.mObservers) { >+ var list = this.mObservers[aEventName]; >+ for (var i = 0; i < list.length; ++i) { >+ if (list[i] == aObserver) { >+ list.splice(i, 1); >+ return; >+ } >+ } >+ } >+ }, >+ >+ dispatchEvent: function(aEventName, aEventData) >+ { >+ if (aEventName in this.mObservers) { >+ if (!("target" in aEventData)) >+ aEventData.target = this.mTarget; >+ aEventData.type = aEventName; >+ >+ var list = this.mObservers[aEventName]; >+ for (var i = 0; i < list.length; ++i) >+ list[i].onEvent(aEventData); >+ } >+ } >+ >+}; >diff --git a/suite/extensions/inspector/resources/content/jsutil/rdf/RDFArray.js b/suite/extensions/inspector/resources/content/jsutil/rdf/RDFArray.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/rdf/RDFArray.js >@@ -0,0 +1,163 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* RDFArray ----------------------------------------------- >+* A convenience routine for creating an RDF-based 2d array >+* indexed by number and hashkey. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/utils.js >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/jsutil/rdf/RDFU.js >+****************************************************************/ >+ >+//////////// global constants //////////////////// >+ >+RDFArray.URI = "http://www.joehewitt.com/mozilla/util/RDFArray#"; >+RDFArray.RDF_URI = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; >+ >+///// class RDFArray ///////////////////////// >+ >+function RDFArray(aNSURI, aRootURN, aArcName) >+{ >+ this.mNSURI = aNSURI; >+ this.mRootURN = aRootURN; >+ this.mArcName = aArcName ? aArcName : "list"; >+} >+ >+RDFArray.prototype = { >+ get datasource() { return this.mDS; }, >+ get length() { return this.mLength } , >+ >+ initialize: function() >+ { >+ this.mLength = 0; >+ >+ this.mDS = XPCU.createInstance("@mozilla.org/rdf/datasource;1?name=in-memory-datasource", "nsIRDFDataSource"); >+ >+ var root = gRDF.GetResource(this.mRootURN); >+ var res = gRDF.GetAnonymousResource(); >+ this.mDS.Assert(root, gRDF.GetResource(this.mNSURI+this.mArcName), res, true); >+ >+ this.mSeq = gRDFCU.MakeSeq(this.mDS, res); >+ }, >+ >+ add: function(aObject) >+ { >+ var res = this.createResourceFrom(aObject); >+ this.addResource(res); >+ }, >+ >+ addResource: function(aResource) >+ { >+ this.mSeq.AppendElement(aResource); >+ this.mLength++; >+ }, >+ >+ insertAt: function(aIndex, aObject) >+ { >+ var res = this.createResourceFrom(aObject); >+ this.insertResourceAt(aIndex, res); >+ }, >+ >+ insertResourceAt: function(aIndex, aResource) >+ { >+ }, >+ >+ removeAt: function(aIndex) >+ { >+ this.mSeq.RemoveElementAt(aIndex+1, true); >+ this.mLength--; >+ }, >+ >+ removeById: function(aId) >+ { >+ var proj = gRDF.GetResource(aId); >+ proj = XPCU.QI(proj, "nsIRDFNode"); >+ this.mSeq.RemoveElement(proj, true); >+ this.mLength--; >+ }, >+ >+ get: function(aIndex, aKey) >+ { >+ var res = RDFU.getSeqElementAt(this.mSeq, aIndex); >+ return RDFU.readAttribute(this.mDS, res, this.mNSURI+aKey); >+ }, >+ >+ set: function(aIndex, aKey, aValue) >+ { >+ var res = RDFU.getSeqElementAt(this.mSeq, aIndex); >+ RDFU.writeAttribute(this.mDS, res, this.mNSURI+aKey, aValue); >+ }, >+ >+ getResource: function(aIndex) >+ { >+ return RDFU.getSeqElementAt(this.mSeq, aIndex); >+ }, >+ >+ getResourceId: function(aIndex) >+ { >+ var el = RDFU.getSeqElementAt(this.mSeq, aIndex); >+ return el.Value; >+ }, >+ >+ save: function() >+ { >+ RDFU.saveDataSource(this.mDS); >+ }, >+ >+ >+ clear: function() >+ { >+ while (this.mLength) { >+ this.mSeq.RemoveElementAt(1, true); >+ this.mLength--; >+ } >+ }, >+ >+ createResourceFrom: function(aObject) >+ { >+ var el = gRDF.GetAnonymousResource(); >+ >+ // add a literal node for each property being added >+ for (var name in aObject) { >+ this.mDS.Assert(el, gRDF.GetResource(this.mNSURI+name), gRDF.GetLiteral(aObject[name]), true); >+ } >+ >+ return el; >+ } >+ >+}; >+ >+/////////// static factory methods ///////////////////////// >+ >+RDFArray.fromContainer = function(aDS, aResourceID, aNSURI) >+{ >+ var list = new RDFArray(aNSURI); >+ >+ list.mDS = aDS; >+ var seq = RDFU.findSeq(aDS, aResourceID); >+ list.mSeq = seq; >+ list.mLength = seq.GetCount(); >+ >+ return list; >+} >+ >+RDFArray.fromContainerArc = function(aDS, aSourceId, aTargetId, aNSURI) >+{ >+ var list = new RDFArray(aNSURI); >+ list.mDS = aDS; >+ >+ var source = gRDF.GetResource(aSourceId); >+ var target = gRDF.GetResource(aTargetId); >+ var seqRes = aDS.GetTarget(source, target, true); >+ >+ var seq = RDFU.makeSeq(aDS, seqRes); >+ list.mSeq = seq; >+ list.mLength = seq.GetCount(); >+ >+ return list; >+} >+ >diff --git a/suite/extensions/inspector/resources/content/jsutil/rdf/RDFU.js b/suite/extensions/inspector/resources/content/jsutil/rdf/RDFU.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/rdf/RDFU.js >@@ -0,0 +1,121 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* RDFU ----------------------------------------------- >+* Convenience routines for common RDF commands. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+****************************************************************/ >+ >+//////////// global constants //////////////////// >+ >+try { >+var gRDF = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService(); >+gRDF = gRDF.QueryInterface(Components.interfaces.nsIRDFService); >+ >+var gRDFCU = Components.classes['@mozilla.org/rdf/container-utils;1'].getService(); >+gRDFCU = gRDFCU.QueryInterface(Components.interfaces.nsIRDFContainerUtils); >+} catch (ex) { alert("RDFU: " + ex); } >+/////////////////////////////////////////////////// >+ >+var RDFU = { >+ >+ getSeqElementAt: function(aSeq, aIndex) >+ { >+ var ordinal = gRDFCU.IndexToOrdinalResource(aIndex+1); >+ return aSeq.DataSource.GetTarget(aSeq.Resource, ordinal, true); >+ }, >+ >+ readAttribute: function(aDS, aRes, aName) >+ { >+ var attr = aDS.GetTarget(aRes, gRDF.GetResource(aName), true); >+ if (attr) >+ attr = XPCU.QI(attr, "nsIRDFLiteral"); >+ return attr ? attr.Value : null; >+ }, >+ >+ >+ writeAttribute: function(aDS, aRes, aName, aValue) >+ { >+ var attr = aDS.GetTarget(aRes, gRDF.GetResource(aName), true); >+ if (attr) >+ aDS.Change(aRes, gRDF.GetResource(aName), attr, gRDF.GetLiteral(aValue)); >+ }, >+ >+ >+ findSeq: function(aDS, aResName) >+ { >+ try { >+ var res = gRDF.GetResource(aResName); >+ var seq = this.makeSeq(aDS, res); >+ } catch (ex) { >+ alert("Unable to find sequence:" + ex); >+ } >+ >+ return seq; >+ }, >+ >+ makeSeq: function(aDS, aRes) >+ { >+ var seq = XPCU.createInstance("@mozilla.org/rdf/container;1", "nsIRDFContainer"); >+ seq.Init(aDS, aRes); >+ return seq; >+ }, >+ >+ createSeq: function(aDS, aBaseRes, aArcRes) >+ { >+ var res = gRDF.GetAnonymousResource(); >+ aDS.Assert(aBaseRes, aArcRes, res, true); >+ var seq = gRDFCU.MakeSeq(aDS, res); >+ return seq; >+ }, >+ >+ loadDataSource: function(aURL, aListener) >+ { >+ var ds = gRDF.GetDataSource(aURL); >+ var rds = XPCU.QI(ds, "nsIRDFRemoteDataSource"); >+ >+ var observer = new DSLoadObserver(aListener); >+ >+ if (rds.loaded) { >+ observer.onEndLoad(ds); >+ } else { >+ var sink = XPCU.QI(ds, "nsIRDFXMLSink"); >+ sink.addXMLSinkObserver(observer); >+ } >+ }, >+ >+ saveDataSource: function(aDS) >+ { >+ var ds = XPCU.QI(aDS, "nsIRDFRemoteDataSource"); >+ ds.Flush(); >+ } >+}; >+ >+/////////// >+ >+function DSLoadObserver(aListener) { this.mListener = aListener; } >+ >+DSLoadObserver.prototype = >+{ >+ onBeginLoad: function(aSink) { }, >+ onInterrupt: function(aSink) {}, >+ onResume: function(aSink) {}, >+ onError: function(aSink, aStatus, aErrorMsg) >+ { >+ this.mListener.onError(aStatus, aErrorMsg); >+ aSink.removeXMLSinkObserver(this); >+ }, >+ >+ onEndLoad: function(aSink) >+ { >+ var ds = XPCU.QI(aSink, "nsIRDFDataSource"); >+ this.mListener.onDataSourceReady(ds); >+ aSink = XPCU.QI(aSink, "nsIRDFXMLSink"); >+ aSink.removeXMLSinkObserver(this); >+ } >+ >+}; >diff --git a/suite/extensions/inspector/resources/content/jsutil/system/DiskSearch.js b/suite/extensions/inspector/resources/content/jsutil/system/DiskSearch.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/system/DiskSearch.js >@@ -0,0 +1,66 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* DiskSearch ------------------------------------------------- >+* A utility for handily searching the disk for files matching >+* a certain criteria. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+ >+//////////// global variables ///////////////////// >+ >+//////////// global constants //////////////////// >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class DiskSearch >+ >+var DiskSearch = >+{ >+ findFiles: function(aRootDir, aExtList, aRecurse) >+ { >+ // has the file extensions so we don't have to >+ // linear search the array every time through >+ var extHash = {}; >+ for (var i = 0; i < aExtList.length; i++) { >+ extHash[aExtList[i]] = true; >+ } >+ >+ var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); >+ this.fileHandler = ios.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler); >+ >+ // recursively build the list of results >+ var results = []; >+ this.recurseDir(aRootDir, extHash, aRecurse, results); >+ return results; >+ }, >+ >+ recurseDir: function(aDir, aExtHash, aRecurse, aResults) >+ { >+ debug("("+aResults.length+") entering " + aDir.path + "\n"); >+ var entries = aDir.directoryEntries; >+ var entry, ext; >+ while (entries.hasMoreElements()) { >+ entry = XPCU.QI(entries.getNext(), "nsIFile"); >+ if (aRecurse && entry.isDirectory()) >+ this.recurseDir(entry, aExtHash, aRecurse, aResults); >+ ext = this.getExtension(entry.leafName); >+ if (ext) { >+ if (aExtHash[ext]) >+ aResults.push(this.fileHandler.getURLSpecFromFile(entry)); >+ } >+ } >+ }, >+ >+ getExtension: function(aFileName) >+ { >+ var dotpt = aFileName.lastIndexOf("."); >+ if (dotpt) >+ return aFileName.substr(dotpt+1).toLowerCase(); >+ >+ return null; >+ } >+}; >+ >diff --git a/suite/extensions/inspector/resources/content/jsutil/system/FilePickerUtils.js b/suite/extensions/inspector/resources/content/jsutil/system/FilePickerUtils.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/system/FilePickerUtils.js >@@ -0,0 +1,90 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* FilePickerUtils ------------------------------------------------- >+* A utility for easily dealing with the file picker dialog. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+ >+//////////// global constants //////////////////// >+ >+const kFilePickerCID = "@mozilla.org/filepicker;1"; >+const kLFileCID = "@mozilla.org/file/local;1"; >+ >+const nsIFilePicker = Components.interfaces.nsIFilePicker; >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class FilePickerUtils >+ >+var FilePickerUtils = >+{ >+ pickFile: function(aTitle, aInitPath, aFilters, aMode) >+ { >+ try { >+ var modeStr = aMode ? "mode" + aMode : "modeOpen"; >+ var mode; >+ try { >+ mode = nsIFilePicker[modeStr]; >+ } catch (ex) { >+ dump("WARNING: Invalid FilePicker mode '"+aMode+"'. Defaulting to 'Open'.\n"); >+ mode = nsIFilePicker.modeOpen; >+ } >+ >+ var fp = XPCU.createInstance(kFilePickerCID, "nsIFilePicker"); >+ fp.init(window, aTitle, mode); >+ >+ // join array of filter names into bit string >+ var filters = this.prepareFilters(aFilters); >+ >+ if (aInitPath) { >+ var dir = XPCU.createInstance(kLFileCID, "nsILocalFile"); >+ dir.initWithPath(aInitPath); >+ fp.displayDirectory = dir; >+ } >+ >+ if (fp.show() == nsIFilePicker.returnOK) { >+ return fp.file; >+ } >+ } catch (ex) { >+ dump("ERROR: Unable to open file picker.\n" + ex + "\n"); >+ } >+ return null; >+ }, >+ >+ pickDir: function(aTitle, aInitPath) >+ { >+ try { >+ var fp = XPCU.createInstance(kFilePickerCID, "nsIFilePicker"); >+ fp.init(window, aTitle, nsIFilePicker.modeGetFolder); >+ >+ if (aInitPath) { >+ var dir = XPCU.createInstance(kLFileCID, "nsILocalFile"); >+ dir.initWithPath(aInitPath); >+ fp.displayDirectory = dir; >+ } >+ >+ if (fp.show() == nsIFilePicker.returnOK) { >+ return fp.file; >+ } >+ } catch (ex) { >+ dump("ERROR: Unable to open directory picker.\n" + ex + "\n"); >+ } >+ >+ return null; >+ }, >+ >+ prepareFilters: function(aFilters) >+ { >+ // join array of filter names into bit string >+ var filters = 0; >+ for (var i = 0; i < aFilters.length; ++i) >+ filters = filters | nsIFilePicker[aFilters[i]]; >+ >+ return filters; >+ } >+ >+}; >+ >diff --git a/suite/extensions/inspector/resources/content/jsutil/system/PrefUtils.js b/suite/extensions/inspector/resources/content/jsutil/system/PrefUtils.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/system/PrefUtils.js >@@ -0,0 +1,95 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* PrefUtils ------------------------------------------------- >+* Utility for easily using the Mozilla preferences system. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+Components.utils.import("resource://gre/modules/Services.jsm"); >+ >+//////////// global variables //////////////////// >+ >+//////////// global constants //////////////////// >+const nsIPrefBranch = Components.interfaces.nsIPrefBranch; >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class PrefUtils >+ >+var PrefUtils = >+{ >+ mPrefs: null, >+ >+ init: function() >+ { >+ var prefService = XPCU.getService("@mozilla.org/preferences-service;1", "nsIPrefService"); >+ this.mPrefs = prefService.getBranch(null); >+ }, >+ >+ addObserver: function addObserver(aDomain, aFunction) >+ { >+ if (!this.mPrefs) this.init(); >+ >+ var pbi = XPCU.QI(this.mPrefs, "nsIPrefBranch"); >+ if (pbi) >+ pbi.addObserver(aDomain, aFunction, false); >+ }, >+ >+ removeObserver: function removeObserver(aDomain, aFunction) >+ { >+ if (!this.mPrefs) this.init(); >+ >+ var pbi = XPCU.QI(this.mPrefs, "nsIPrefBranch"); >+ if (pbi) >+ pbi.removeObserver(aDomain, aFunction); >+ }, >+ >+ setPref: function(aName, aValue) >+ { >+ if (!this.mPrefs) this.init(); >+ >+ var type = this.mPrefs.getPrefType(aName); >+ try { >+ if (type == nsIPrefBranch.PREF_STRING) { >+ if (Services.vc.compare(Services.appinfo.platformVersion, "55.0a1") >= 0) { >+ this.mPrefs.setStringPref(aName, aValue); >+ } else { >+ var str = Components.classes["@mozilla.org/supports-string;1"] >+ .createInstance(Components.interfaces.nsISupportsString); >+ str.data = aValue; >+ this.mPrefs.setComplexValue(aName, Components.interfaces.nsISupportsString, str); >+ } >+ } else if (type == nsIPrefBranch.PREF_BOOL) { >+ this.mPrefs.setBoolPref(aName, aValue); >+ } else if (type == nsIPrefBranch.PREF_INT) { >+ this.mPrefs.setIntPref(aName, aValue); >+ } >+ } catch(ex) { >+ debug("ERROR: Unable to write pref \"" + aName + "\".\n"); >+ } >+ }, >+ >+ getPref: function(aName) >+ { >+ if (!this.mPrefs) this.init(); >+ >+ var type = this.mPrefs.getPrefType(aName); >+ try { >+ if (type == nsIPrefBranch.PREF_STRING) { >+ if (Services.vc.compare(Services.appinfo.platformVersion, "55.0a1") >= 0) { >+ return this.mPrefs.getStringPref(aName); >+ } >+ return this.mPrefs.getComplexValue(aName, Components.interfaces.nsISupportsString).data; >+ } else if (type == nsIPrefBranch.PREF_BOOL) { >+ return this.mPrefs.getBoolPref(aName); >+ } else if (type == nsIPrefBranch.PREF_INT) { >+ return this.mPrefs.getIntPref(aName); >+ } >+ } catch(ex) { >+ debug("ERROR: Unable to read pref \"" + aName + "\".\n"); >+ } >+ return null; >+ } >+}; >diff --git a/suite/extensions/inspector/resources/content/jsutil/system/clipboardFlavors.js b/suite/extensions/inspector/resources/content/jsutil/system/clipboardFlavors.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/system/clipboardFlavors.js >@@ -0,0 +1,62 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* Clipboard Flavors ---------------------------------------------------------- >+* Flavors for copying inspected data to the clipboard. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/utils.js >+*****************************************************************************/ >+ >+/** >+ * Represents a CSS property. >+ * @param aProperty >+ * the name of the property >+ * @param aValue >+ * the value of the property >+ * @param aImportant >+ * boolean indicating whether this is !important >+ */ >+function CSSProperty(aProperty, aValue, aImportant) >+{ >+ this.flavor = "inspector/css-property"; >+ this.delimiter = "\n"; >+ this.property = aProperty; >+ this.value = aValue; >+ this.important = aImportant == true; >+} >+ >+/** >+ * Returns a usable CSS string for the CSSProperty. >+ * @return a string in the form "property: value;" >+ */ >+CSSProperty.prototype.toString = function CSSProperty_ToString() >+{ >+ return this.property + ": " + this.value + (this.important ? >+ " !important" : >+ "") + ";"; >+} >+ >+/** >+ * Represents a DOM attribute. >+ * @param aNode >+ * the attribute node >+ */ >+function DOMAttribute(aNode) >+{ >+ this.flavor = "inspector/dom-attribute"; >+ this.node = aNode.cloneNode(false); >+ this.delimiter = " "; >+} >+ >+/** >+ * Returns a string representing an attribute name/value pair >+ * @return a string in the form of 'name="value"' >+ */ >+DOMAttribute.prototype.toString = function DOMA_ToString() >+{ >+ return this.node.nodeName + '="' + >+ InsUtil.unicodeToEntity(this.node.nodeValue) + '"'; >+}; >diff --git a/suite/extensions/inspector/resources/content/jsutil/xpcom/XPCU.js b/suite/extensions/inspector/resources/content/jsutil/xpcom/XPCU.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/xpcom/XPCU.js >@@ -0,0 +1,36 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+var XPCU = >+{ >+ getService: function(aURL, aInterface) >+ { >+ try { >+ return Components.classes[aURL].getService(Components.interfaces[aInterface]); >+ } catch (ex) { >+ dump("Error getting service: " + aURL + ", " + aInterface + "\n" + ex); >+ return null; >+ } >+ }, >+ >+ createInstance: function (aURL, aInterface) >+ { >+ try { >+ return Components.classes[aURL].createInstance(Components.interfaces[aInterface]); >+ } catch (ex) { >+ dump("Error creating instance: " + aURL + ", " + aInterface + "\n" + ex); >+ return null; >+ } >+ }, >+ >+ QI: function(aEl, aIName) >+ { >+ try { >+ return aEl.QueryInterface(Components.interfaces[aIName]); >+ } catch (ex) { >+ throw("Unable to QI " + aEl + " to " + aIName); >+ } >+ } >+ >+}; >\ No newline at end of file >diff --git a/suite/extensions/inspector/resources/content/jsutil/xul/DNDUtils.js b/suite/extensions/inspector/resources/content/jsutil/xul/DNDUtils.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/xul/DNDUtils.js >@@ -0,0 +1,83 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* DNDUtils ------------------------------------------------- >+* Utility functions for common drag and drop tasks. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+ >+//////////// global variables ///////////////////// >+ >+var app; >+ >+//////////// global constants //////////////////// >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class DNDUtils >+ >+var DNDUtils = >+{ >+ invokeSession: function(aTarget, aTypes, aValues) >+ { >+ var transData, trans, supports; >+ let transArray = XPCU.createInstance("@mozilla.org/array;1", "nsIMutableArray"); >+ for (var i = 0; i < aTypes.length; ++i) { >+ transData = this.createTransferableData(aValues[i]); >+ trans = XPCU.createInstance("@mozilla.org/widget/transferable;1", "nsITransferable"); >+ trans.addDataFlavor(aTypes[i]); >+ trans.setTransferData (aTypes[i], transData.data, transData.size); >+ supports = trans.QueryInterface(Components.interfaces.nsISupports); >+ transArray.appendElement(supports, /* weak */ false); >+ } >+ >+ var nsIDragService = Components.interfaces.nsIDragService; >+ var dragService = XPCU.getService("@mozilla.org/widget/dragservice;1", "nsIDragService"); >+ dragService.invokeDragSession(aTarget, transArray, null, nsIDragService.DRAGDROP_ACTION_MOVE); >+ }, >+ >+ createTransferableData: function(aValue) >+ { >+ var obj = {}; >+ if (typeof(aValue) == "string") { >+ obj.data = XPCU.createInstance("@mozilla.org/supports-string;1", "nsISupportsString"); >+ obj.data.data = aValue; >+ obj.size = aValue.length*2; >+ } else if (false) { >+ // TODO: create data for other primitive types >+ } >+ >+ return obj; >+ }, >+ >+ checkCanDrop: function(aType) >+ { >+ var dragService = XPCU.getService("@mozilla.org/widget/dragservice;1", "nsIDragService"); >+ var dragSession = dragService.getCurrentSession(); >+ >+ var gotFlavor = false; >+ for (var i = 0; i < arguments.length; ++i) >+ gotFlavor |= dragSession.isDataFlavorSupported(arguments[i]); >+ >+ dragSession.canDrop = gotFlavor; >+ return gotFlavor; >+ }, >+ >+ getData: function(aType, aIndex) >+ { >+ var dragService = XPCU.getService("@mozilla.org/widget/dragservice;1", "nsIDragService"); >+ var dragSession = dragService.getCurrentSession(); >+ >+ var trans = XPCU.createInstance("@mozilla.org/widget/transferable;1", "nsITransferable"); >+ trans.addDataFlavor(aType); >+ >+ dragSession.getData(trans, aIndex); >+ var data = new Object(); >+ trans.getAnyTransferData ({}, data, {}); >+ return data.value; >+ } >+ >+}; >+ >diff --git a/suite/extensions/inspector/resources/content/jsutil/xul/FrameExchange.js b/suite/extensions/inspector/resources/content/jsutil/xul/FrameExchange.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/xul/FrameExchange.js >@@ -0,0 +1,34 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* FrameExchange ---------------------------------------------- >+* Utility for passing specific data to a document loaded >+* through an iframe >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+ >+//////////// implementation //////////////////// >+ >+var FrameExchange = { >+ mData: {}, >+ >+ loadURL: function(aFrame, aURL, aData) >+ { >+ this.mData[aURL] = aData; >+ aFrame.setAttribute("src", aURL); >+ }, >+ >+ receiveData: function(aWindow) >+ { >+ var id = aWindow.location.href; >+ var data = this.mData[id]; >+ this.mData[id] = null; >+ >+ return data; >+ } >+}; >+ >+ >diff --git a/suite/extensions/inspector/resources/content/jsutil/xul/inBaseTreeView.js b/suite/extensions/inspector/resources/content/jsutil/xul/inBaseTreeView.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/xul/inBaseTreeView.js >@@ -0,0 +1,96 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* inBaseTreeView ------------------------------------------------- >+* Simple tree view object meant to be extended. >+* >+* Usage example: MyView.prototype = new inBaseTreeView(); >+****************************************************************/ >+ >+//XXX Don't use anonymous functions >+function inBaseTreeView() { } >+ >+inBaseTreeView.prototype = >+{ >+ mRowCount: 0, >+ mTree: null, >+ >+ get rowCount() { return this.mRowCount; }, >+ setTree: function(aTree) { this.mTree = aTree; }, >+ getCellText: function(aRow, aCol) { return ""; }, >+ getRowProperties: function(aIndex, aProperties) { return ""; }, >+ getCellProperties: function(aIndex, aCol, aProperties) { return ""; }, >+ getColumnProperties: function(aCol, aProperties) { return ""; }, >+ getParentIndex: function(aRowIndex) { }, >+ hasNextSibling: function(aRowIndex, aAfterIndex) { }, >+ getLevel: function(aIndex) {}, >+ getImageSrc: function(aRow, aCol) {}, >+ getProgressMode: function(aRow, aCol) {}, >+ getCellValue: function(aRow, aCol) {}, >+ isContainer: function(aIndex) {}, >+ isContainerOpen: function(aIndex) {}, >+ isContainerEmpty: function(aIndex) {}, >+ isSeparator: function(aIndex) {}, >+ isSorted: function() {}, >+ toggleOpenState: function(aIndex) {}, >+ selectionChanged: function() {}, >+ cycleHeader: function(aCol) {}, >+ cycleCell: function(aRow, aCol) {}, >+ isEditable: function(aRow, aCol) {}, >+ isSelectable: function(aRow, aCol) {}, >+ setCellValue: function(aRow, aCol, aValue) {}, >+ setCellText: function(aRow, aCol, aValue) {}, >+ performAction: function(aAction) {}, >+ performActionOnRow: function(aAction, aRow) {}, >+ performActionOnCell: function(aAction, aRow, aCol) {}, >+ >+ >+ // extra utility stuff >+ >+ createAtom: function createAtom(aVal) >+ { >+ try { >+ var i = Components.interfaces.nsIAtomService; >+ var svc = Components.classes["@mozilla.org/atom-service;1"].getService(i); >+ return svc.getAtom(aVal); >+ } catch(ex) { >+ return null; >+ } >+ }, >+ >+ /** >+ * Returns an array of selected indices in the tree. >+ * @return an array of indices >+ */ >+ getSelectedIndices: function getSelectedIndices() >+ { >+ var indices = []; >+ var rangeCount = this.selection.getRangeCount(); >+ for (var i = 0; i < rangeCount; i++) { >+ var start = {}; >+ var end = {}; >+ this.selection.getRangeAt(i,start,end); >+ for (var c = start.value; c <= end.value; c++) { >+ indices.push(c); >+ } >+ } >+ return indices; >+ }, >+ >+ /** >+ * Returns an array of row objects selected in the tree. >+ * @return an array of row objects >+ */ >+ getSelectedRowObjects: function getSelectedRowObjects() >+ { >+ var declarations = []; >+ var indices = this.getSelectedIndices(); >+ for (var i = 0; i < indices.length; i++) { >+ declarations.push(this.getRowObjectFromIndex(indices[i])); >+ } >+ return declarations; >+ } >+ >+}; >diff --git a/suite/extensions/inspector/resources/content/jsutil/xul/inDataTreeView.js b/suite/extensions/inspector/resources/content/jsutil/xul/inDataTreeView.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/xul/inDataTreeView.js >@@ -0,0 +1,243 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inDataTreeView >+ >+function inDataTreeView() >+{ >+ this.mRows = []; >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inDataTreeView. nsITreeView interface implementation >+ >+inDataTreeView.prototype = new inBaseTreeView(); >+ >+inDataTreeView.prototype.__defineGetter__("rowCount", >+ function inDataTreeView_rowCount() >+ { >+ return this.mRows.length; >+ } >+); >+ >+inDataTreeView.prototype.getCellText = >+ function inDataTreeView_getCellText(aRowIdx, aCol) >+{ >+ var row = this.getRowAt(aRowIdx); >+ return row ? row.node.data[aCol.id] : ""; >+}; >+ >+inDataTreeView.prototype.isContainer = >+ function inDataTreeView_isContainer(aRowIdx) >+{ >+ var row = this.getRowAt(aRowIdx); >+ return row ? row.node.children.length > 0 : false; >+}; >+ >+inDataTreeView.prototype.isContainerOpen = >+ function inDataTreeView_isContainerOpen(aRowIdx) >+{ >+ var row = this.getRowAt(aRowIdx); >+ return row ? row.isOpen : false; >+}; >+ >+inDataTreeView.prototype.isContainerEmpty = >+ function inDataTreeView_isContainerEmpty(aRowIdx) >+{ >+ return !this.isContainer(aRowIdx); >+}; >+ >+inDataTreeView.prototype.getLevel = >+ function inDataTreeView_getLevel(aRowIdx) >+{ >+ var row = this.getRowAt(aRowIdx); >+ return row ? row.node.level : 0; >+}; >+ >+inDataTreeView.prototype.getParentIndex = >+ function inDataTreeView_getParentIndex(aRowIdx) >+{ >+ var row = this.getRowAt(aRowIdx); >+ if (!row) { >+ return -1; >+ } >+ >+ for (let i = aRowIdx - 1; i >= 0; --i) { >+ let checkRow = this.getRowAt(i); >+ if (checkRow.node == row.node.parent) { >+ return i; >+ } >+ } >+ >+ return -1; >+}; >+ >+inDataTreeView.prototype.hasNextSibling = >+ function inDataTreeView_hasNextSibling(aRowIdx, aAfterRowIdx) >+{ >+ var row = this.getRowAt(aRowIdx); >+ if (!row || !row.node.parent) { >+ return false; >+ } >+ >+ var lastIdx = row.node.parent.children.length - 1; >+ return row.node.parent.children[lastIdx] != row.node; >+}; >+ >+inDataTreeView.prototype.toggleOpenState = >+ function inDataTreeView_toggleOpenState(aRowIdx) >+{ >+ var row = this.getRowAt(aRowIdx); >+ if (!row) { >+ return; >+ } >+ >+ var oldCount = this.rowCount; >+ if (row.isOpen) { >+ this.collapseRowAt(aRowIdx); >+ } >+ else { >+ this.expandRowAt(aRowIdx); >+ } >+ >+ this.mTree.invalidateRow(aRowIdx); >+ this.mTree.rowCountChanged(aRowIdx + 1, this.rowCount - oldCount); >+}; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inDataTreeView. Public. >+ >+/** >+ * Append the child row to the row at the given index. >+ */ >+inDataTreeView.prototype.appendChild = >+ function inDataTreeView_appendChild(aParent, aData) >+{ >+ var node = new inDataTreeViewNode(aData); >+ if (aParent) { >+ node.level = aParent.level + 1; >+ node.parent = aParent; >+ aParent.children.push(node); >+ return node; >+ } >+ >+ this.mRows.push(new inDataTreeViewRow(node)); >+ return node; >+}; >+ >+/** >+ * Expand nodes from the given list. The caller should ensure that every node >+ * to expand precedes its ancestors in the list, in other words the list should >+ * be in reverse order, and include all ancestor nodes. >+ */ >+inDataTreeView.prototype.expandNodes = >+ function inDataTreeView_expandNodes(aNodes) >+{ >+ var node = aNodes.pop(); >+ for (let rowIdx = 0; node && rowIdx < this.mRows.length; rowIdx++) { >+ if (this.getRowAt(rowIdx).node == node) { >+ this.expandRowAt(rowIdx); >+ node = aNodes.pop(); >+ } >+ } >+} >+ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inDataTreeView. Tree utils. >+ >+/** >+ * Expands a tree node on the given row. >+ */ >+inDataTreeView.prototype.expandRowAt = >+ function inDataTreeView_expandRowAt(aRowIdx) >+{ >+ var row = this.getRowAt(aRowIdx); >+ if (!row || row.isOpen) { >+ return; >+ } >+ >+ var kids = row.node.children; >+ var kidCount = kids.length; >+ >+ for (let i = this.rowCount - 1; i > aRowIdx; --i) { >+ this.mRows[i + kidCount] = this.mRows[i]; >+ } >+ >+ for (let i = 0; i < kidCount; ++i) { >+ this.mRows[aRowIdx + i + 1] = new inDataTreeViewRow(kids[i]); >+ } >+ >+ row.isOpen = true; >+}; >+ >+/** >+ * Collapse a tree node on the given row. >+ */ >+inDataTreeView.prototype.collapseRowAt = >+ function inDataTreeView_collapseRowAt(aRowIdx) >+{ >+ var row = this.getRowAt(aRowIdx); >+ if (!row || !row.isOpen) { >+ return; >+ } >+ >+ var removeCount = 0; >+ var rowLevel = row.node.level; >+ for (let idx = aRowIdx + 1; idx < this.rowCount; idx++) { >+ if (this.getRowAt(idx).node.level <= rowLevel) { >+ removeCount = idx - aRowIdx - 1; >+ break; >+ } >+ } >+ this.mRows.splice(aRowIdx + 1, removeCount); >+ >+ row.isOpen = false; >+}; >+ >+/** >+ * Return a tree row object by the given row index. >+ */ >+inDataTreeView.prototype.getRowAt = >+ function inDataTreeView_getRowAt(aRowIdx) >+{ >+ if (aRowIdx < 0 || aRowIdx >= this.rowCount) { >+ return null; >+ } >+ >+ return this.mRows[aRowIdx]; >+} >+ >+/** >+ * Return a tree row data object by the given row index. >+ */ >+inDataTreeView.prototype.getDataAt = >+ function inDataTreeView_getDataAt(aRowIdx) >+{ >+ if (aRowIdx < 0 || aRowIdx >= this.rowCount) { >+ return null; >+ } >+ >+ return this.mRows[aRowIdx].node.data; >+}; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inDataTreeViewNode >+ >+function inDataTreeViewNode(aData) >+{ >+ this.parent = null; >+ this.children = []; >+ >+ this.level = 0; >+ this.data = aData; >+} >+ >+function inDataTreeViewRow(aNode) >+{ >+ this.node = aNode; >+ this.isOpen = false; >+} >diff --git a/suite/extensions/inspector/resources/content/jsutil/xul/inFormManager.js b/suite/extensions/inspector/resources/content/jsutil/xul/inFormManager.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/xul/inFormManager.js >@@ -0,0 +1,111 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* inFormManager ------------------------------------------------- >+* Manages the reading and writing of forms via simple maps of >+* attribute/value pairs. A "form" is simply a XUL window which >+* contains "form widgets" such as textboxes and menulists. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class inFormManager >+ >+var inFormManager = >+{ >+ // Object >+ readWindow: function(aWindow, aIds) >+ { >+ var el, fn; >+ var doc = aWindow.document; >+ var map = {}; >+ for (var i = 0; i < aIds.length; i++) { >+ el = doc.getElementById(aIds[i]); >+ if (el) { >+ this.persistIf(doc, el); >+ fn = this["read_"+el.localName]; >+ if (fn) >+ map[aIds[i]] = fn(el); >+ } >+ } >+ >+ return map; >+ }, >+ >+ // void >+ writeWindow: function(aWindow, aMap) >+ { >+ var el, fn; >+ var doc = aWindow.document; >+ for (var i = 0; i < aIds.length; i++) { >+ el = doc.getElementById(aIds[i]); >+ if (el) { >+ fn = this["write_"+el.localName]; >+ if (fn) >+ fn(el, aMap[aIds[i]]); >+ } >+ } >+ }, >+ >+ persistIf: function(aDoc, aEl) >+ { >+ if (aEl.getAttribute("persist") == "true" && aEl.hasAttribute("id")) { >+ aEl.setAttribute("value", aEl.value); >+ aDoc.persist(aEl.getAttribute("id"), "value"); >+ } >+ }, >+ >+ read_textbox: function(aEl) >+ { >+ return aEl.value; >+ }, >+ >+ read_menulist: function(aEl) >+ { >+ return aEl.getAttribute("value"); >+ }, >+ >+ read_checkbox: function(aEl) >+ { >+ return aEl.getAttribute("checked") == "true"; >+ }, >+ >+ read_radiogroup: function(aEl) >+ { >+ return aEl.getAttribute("value"); >+ }, >+ >+ read_colorpicker: function(aEl) >+ { >+ return aEl.getAttribute("color"); >+ }, >+ >+ write_textbox: function(aEl, aValue) >+ { >+ aEl.setAttribute("value", aValue); >+ }, >+ >+ write_menulist: function(aEl, aValue) >+ { >+ aEl.setAttribute("value", aValue); >+ }, >+ >+ write_checkbox: function(aEl, aValue) >+ { >+ aEl.setAttribute("checked", aValue); >+ }, >+ >+ write_radiogroup: function(aEl, aValue) >+ { >+ aEl.setAttribute("value", aValue); >+ }, >+ >+ write_colorpicker: function(aEl, aValue) >+ { >+ aEl.color = aValue; >+ } >+}; >+ >diff --git a/suite/extensions/inspector/resources/content/jsutil/xul/inTreeBuilder.js b/suite/extensions/inspector/resources/content/jsutil/xul/inTreeBuilder.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/jsutil/xul/inTreeBuilder.js >@@ -0,0 +1,636 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* inTreeBuilder ------------------------------------------------- >+* Automatically builds up an tree so that it will display a tabular >+* set of data with titled columns and optionally an icon for each row. >+* The tree that is supplied must have an treechildren with an >+* empty template inside of it. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xul/DNDUtils.js >+****************************************************************/ >+ >+//////////// global variables ///////////////////// >+ >+var inTreeBuilderPartCount = 0; >+ >+//////////// global constants //////////////////// >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class inTreeBuilder >+ >+function inTreeBuilder(aTree, aNameSpace, aArcName) >+{ >+ this.tree = aTree; >+ this.nameSpace = aNameSpace; >+ this.arcName = aArcName; >+ >+ this.mColumns = []; >+ this.mExtras = []; >+} >+ >+inTreeBuilder.prototype = >+{ >+ mTree: null, >+ mTreeBody: null, >+ // datasource stuff >+ mNameSpace: null, >+ mArcName: null, >+ mIsRefContainer: false, >+ mIsContainer: true, >+ >+ // table structure stuff >+ mIsIconic: false, >+ mColumns: null, >+ mSplitters: true, >+ mRowFields: null, >+ mRowAttrs: null, >+ mAllowDND: false, >+ mLastDragCol: null, >+ mLastDragColWhere: null, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// properties >+ >+ // the xul tree node we will construct >+ get tree() { return this.mTree }, >+ set tree(aVal) >+ { >+ this.mTree = aVal; >+ if (aVal) >+ this.mTreeBody = aVal.getElementsByTagName("treechildren")[0]; >+ aVal._treeBuilder = this >+ }, >+ >+ // the namespace to use for all fields >+ get nameSpace() { return this.mNameSpace }, >+ set nameSpace(aVal) { this.mNameSpace = aVal }, >+ >+ // the name of the arc to the container >+ get arcName() { return this.mArcName }, >+ set arcName(aVal) { this.mArcName = aVal }, >+ >+ // is the datasource ref an arc to a container, or a container itself >+ get isRefContainer() { return this.mIsRefContainer }, >+ set isRefContainer(aVal) { this.mIsRefContainer = aVal }, >+ >+ // is each row a potential container? >+ get isContainer() { return this.mIsContainer }, >+ set isContainer(aVal) { this.mIsContainer = aVal }, >+ >+ // place an icon before the first column of each row >+ get isIconic() { return this.mIsIconic }, >+ set isIconic(aVal) { this.mIsIconic = aVal }, >+ >+ // put splitters between the columns? >+ get useSplitters() { return this.mSplitters }, >+ set useSplitters(aVal) { this.mSplitters = aVal }, >+ >+ // extra attributes to set on the treeitem >+ get rowAttributes() { return this.mRowAttrs }, >+ set rowAttributes(aVal) { this.mRowAttrs = aVal }, >+ >+ // extra data fields to set on the treeitem >+ get rowFields() { return this.mRowFields }, >+ set rowFields(aVal) { this.mRowFields = aVal }, >+ >+ // extra data fields to set on the treeitem >+ get allowDragColumns() { return this.mAllowDND }, >+ set allowDragColumns(aVal) { this.mAllowDND = aVal }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// event handlers >+ >+ get onColumnAdd() { return this.mOnColumnAdd }, >+ set onColumnAdd(aFn) { this.mOnColumnAdd = aFn }, >+ >+ get onColumnRemove() { return this.mOnColumnRemove }, >+ set onColumnRemove(aFn) { this.mOnColumnRemove = aFn }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// initialization >+ >+ initialize: function() >+ { >+ this.initColumns(); >+ this.initTemplate(); >+ }, >+ >+ initColumns: function() >+ { >+ this.initDND(); >+ }, >+ >+ initTemplate: function() >+ { >+ var template = this.mTree.getElementsByTagNameNS(kXULNSURI, "template")[0]; >+ this.mTemplate = template; >+ this.clearChildren(template); >+ >+ var rule = document.createElementNS(kXULNSURI, "rule"); >+ template.appendChild(rule); >+ this.mRule = rule; >+ >+ this.createDefaultConditions(); >+ >+ var bindings = document.createElementNS(kXULNSURI, "bindings"); >+ rule.appendChild(bindings); >+ this.mBindings = bindings; >+ >+ this.createDefaultAction(); >+ }, >+ >+ createDefaultConditions: function() >+ { >+ var conditions = document.createElementNS(kXULNSURI, "conditions"); >+ this.mRule.appendChild(conditions); >+ >+ var content = document.createElementNS(kXULNSURI, "treerow"); >+ content.setAttribute("uri", "?uri"); >+ conditions.appendChild(content); >+ >+ var triple = this.createTriple("?uri", this.mNameSpace+this.mArcName, >+ this.mIsRefContainer ? "?table" : "?row"); >+ conditions.appendChild(triple); >+ >+ if (this.mIsRefContainer) { >+ var member = this.createMember("?table", "?row"); >+ conditions.appendChild(member); >+ } >+ }, >+ >+ createDefaultAction: function() >+ { >+ var action = document.createElementNS(kXULNSURI, "action"); >+ this.mRule.appendChild(action); >+ >+ var orow = this.createTemplatePart("treerow"); >+ orow.setAttribute("uri", "?row"); >+ action.appendChild(orow); >+ this.mTreeRow = orow; >+ >+ // assign the item attributes >+ if (this.mRowAttrs) >+ for (key in this.mRowAttrs) >+ orow.setAttribute(key, this.mRowAttrs[key]); >+ }, >+ >+ createDefaultBindings: function() >+ { >+ // assign the item fields >+ var binding; >+ if (this.mRowFields) { >+ var props = ""; >+ for (key in this.mRowFields) { >+ binding = this.createBinding(this.mRowFields[key]); >+ this.mBindings.appendChild(binding); >+ props += key+"-?"+this.mRowFields[key]+" "; >+ } >+ this.mTreeRow.setAttribute("properties", props); >+ } >+ }, >+ >+ createTriple: function(aSubject, aPredicate, aObject) >+ { >+ var triple = document.createElementNS(kXULNSURI, "triple"); >+ triple.setAttribute("subject", aSubject); >+ triple.setAttribute("predicate", aPredicate); >+ triple.setAttribute("object", aObject); >+ >+ return triple; >+ }, >+ >+ createMember: function(aContainer, aChild) >+ { >+ var member = document.createElementNS(kXULNSURI, "member"); >+ member.setAttribute("container", aContainer); >+ member.setAttribute("child", aChild); >+ >+ return member; >+ }, >+ >+ reset: function() >+ { >+ this.mColumns = []; >+ this.mIsIconic = false; >+ >+ this.resetTree(); >+ }, >+ >+ resetTree: function() >+ { >+ var kids = this.mTree.childNodes; >+ for (var i = kids.length - 1; i >= 0; --i) >+ if (kids[i].localName != "treechildren") >+ this.mTree.removeChild(kids[i]); >+ >+ this.clearChildren(this.mBindings); >+ this.clearChildren(this.mTreeRow); >+ this.createDefaultBindings(); >+ }, >+ >+ clearChildren: function(aEl) >+ { >+ while (aEl.hasChildNodes()) >+ aEl.removeChild(aEl.lastChild); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// column drag and drop >+ >+ initDND: function() >+ { >+ if (this.mAllowDND) { >+ // addEventListener doesn't work for dnd events, apparently... so we use the attributes >+ this.addDNDListener(this.mTree, "ondragenter"); >+ this.addDNDListener(this.mTree, "ondragover"); >+ this.addDNDListener(this.mTree, "ondragexit"); >+ this.addDNDListener(this.mTree, "ondragstart"); >+ this.addDNDListener(this.mTree, "ondrop"); >+ } >+ }, >+ >+ onDragEnter: function(aEvent) >+ { >+ }, >+ >+ onDragOver: function(aEvent) >+ { >+ if (!DNDUtils.checkCanDrop("TreeBuilder/column-add")) >+ return; >+ >+ var idx = this.getColumnIndexFromX(aEvent.clientX, 0.5); >+ this.mColumnInsertIndex = idx; >+ var col = this.getColumnAt(idx); >+ >+ if (idx == -1) >+ this.markColumnInsert(col, "after"); >+ else >+ this.markColumnInsert(col, "before"); >+ }, >+ >+ onDragExit: function(aEvent) >+ { >+ }, >+ >+ onDrop: function(aEvent) >+ { >+ this.markColumnInsert(null); >+ var dragService = XPCU.getService("@mozilla.org/widget/dragservice;1", "nsIDragService"); >+ var dragSession = dragService.getCurrentSession(); >+ >+ if (!dragSession.isDataFlavorSupported("TreeBuilder/column-add")) >+ return false; >+ >+ var trans = XPCU.createInstance("@mozilla.org/widget/transferable;1", "nsITransferable"); >+ trans.addDataFlavor("TreeBuilder/column-add"); >+ >+ dragSession.getData(trans, 0); >+ var data = {}; >+ trans.getAnyTransferData ({}, data, {}); >+ >+ var string = XPCU.QI(data.value, "nsISupportsString"); >+ >+ this.insertColumn(this.mColumnInsertIndex, >+ { >+ name: string.data, >+ title: string.data, >+ flex: 1 >+ }); >+ >+ >+ // if we rebuildContent during this thread, it will crash in the dnd service >+ setTimeout(function(me) { me.build(); me.buildContent() }, 1, this); >+ >+ // bug 56270 - dragSession.sourceDocument is null -- >+ // causes me to code this very temporary, very nasty hack >+ // to tell columnsDialog.js about the drop >+ if (this.mTree.onClientDrop) { >+ this.mTree.onClientDrop(); >+ } >+ }, >+ >+ markColumnInsert: function (aColumn, aWhere) >+ { >+ var col = this.mLastDragCol; >+ var lastWhere = this.mLastDragColWhere; >+ if (col) >+ col.setAttribute("properties", ""); >+ >+ if (aWhere != "before" && aWhere != "after") { >+ this.mLastDragCol = null; >+ this.mLastDragColWhere = null; >+ return; >+ } >+ >+ col = aColumn; >+ if (col) { >+ this.mLastDragCol = col; >+ this.mLastDragColWhere = aWhere; >+ col.setAttribute("properties", "dnd-insert-"+aWhere); >+ } >+ >+ var bx = this.mTree.boxObject.QueryInterface(Components.interfaces.nsITreeBoxObject); >+ bx.invalidate(); >+ }, >+ >+ getColumnIndexFromX: function(aX, aThresh) >+ { >+ var width = 0; >+ var col, cw; >+ for (var i = 0; i < this.columnCount; ++i) { >+ col = this.getColumnAt(i); >+ cw = col.boxObject.width; >+ width += cw; >+ if (width-(cw*aThresh) > aX) >+ return i; >+ } >+ >+ return -1; >+ }, >+ >+ getColumnIndexFromHeader: function(aHeader) >+ { >+ var headers = this.mTree.getElementsByTagName("treecol"); >+ for (var i = 0; i < headers.length; ++i) { >+ if (headers[i] == aHeader) >+ return i; >+ } >+ return -1; >+ }, >+ >+ //// for drag-n-drop removal/arrangement of columns >+ >+ onDragStart: function(aEvent) >+ { >+ var target = aEvent.target; >+ if (target.parentNode == this.mTree) { >+ var column = target.getAttribute("label"); >+ >+ var idx = this.getColumnIndexFromHeader(target); >+ if (idx == -1) return; >+ this.mColumnDragging = idx; >+ >+ DNDUtils.invokeSession(target, ["TreeBuilder/column-remove"], [column]); >+ } >+ }, >+ >+ addColumnDropTarget: function(aBox) >+ { >+ aBox._treeBuilderDropTarget = this; >+ this.addDNDListener(aBox, "ondragover", "Target"); >+ this.addDNDListener(aBox, "ondrop", "Target"); >+ }, >+ >+ removeColumnDropTarget: function(aBox) >+ { >+ aBox._treeBuilderDropTarget = this; >+ this.removeDNDListener(aBox, "ondragover", "Target"); >+ this.removeDNDListener(aBox, "ondrop", "Target"); >+ }, >+ >+ onDragOverTarget: function(aBox, aEvent) >+ { >+ DNDUtils.checkCanDrop("TreeBuilder/column-remove"); >+ }, >+ >+ onDropTarget: function(aBox, aEvent) >+ { >+ this.removeColumn(this.mColumnDragging); >+ this.build(); >+ // if we rebuildContent during this thread, it will crash in the dnd service >+ setTimeout(function(aTreeBuilder) { aTreeBuilder.buildContent() }, 1, this); >+ }, >+ >+ // these are horrible hacks to compensate for the lack of true multiple >+ // listener support for the DND events >+ >+ addDNDListener: function(aBox, aType, aModifier) >+ { >+ var js = "inTreeBuilder_"+aType+(aModifier?"_"+aModifier:"")+"(this, event);"; >+ >+ var attr = aBox.getAttribute(aType); >+ attr = attr ? attr : ""; >+ aBox.setAttribute(aType, attr + js); >+ }, >+ >+ removeDNDListener: function(aBox, aType, aModifier) >+ { >+ var js = "inTreeBuilder_"+aType+(aModifier?"_"+aModifier:"")+"(this, event);"; >+ >+ var attr = aBox.getAttribute(aType); >+ var idx = attr.indexOf(js); >+ if (idx != -1) >+ attr = attr.substr(0,idx) + attr.substr(idx+1); >+ aBox.setAttribute(aType, attr); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// column properties >+ >+ addColumn: function(aData) >+ { >+ this.mColumns.push(aData); >+ >+ if (this.mOnColumnAdd) >+ this.mOnColumnAdd(this.mColumns.length-1) >+ }, >+ >+ insertColumn: function(aIndex, aData) >+ { >+ var idx; >+ if (aIndex == -1) { >+ this.mColumns.push(aData); >+ idx = this.mColumns.length-1; >+ } else { >+ this.mColumns.splice(aIndex, 0, aData); >+ idx = aIndex; >+ } >+ >+ if (this.mOnColumnAdd) >+ this.mOnColumnAdd(idx); >+ }, >+ >+ removeColumn: function(aIndex) >+ { >+ this.mColumns.splice(aIndex, 1); >+ >+ if (this.mOnColumnRemove) >+ this.mOnColumnRemove(aIndex); >+ }, >+ >+ getColumnAt: function(aIndex) >+ { >+ var kids = this.mTree.getElementsByTagName("treecol"); >+ return aIndex < 0 || aIndex >= kids.length ? kids[kids.length-1] : kids[aIndex]; >+ }, >+ >+ get columnCount() { return this.mColumns.length }, >+ >+ getColumnName: function(aIndex) { return this.mColumns[aIndex].name }, >+ setColumnName: function(aIndex, aValue) { this.mColumns[aIndex].name = aValue }, >+ >+ getColumnTitle: function(aIndex) { return this.mColumns[aIndex].title }, >+ setColumnTitle: function(aIndex, aValue) { this.mColumns[aIndex].title = aValue }, >+ >+ getColumnClassName: function(aIndex) { return this.mColumns[aIndex].className }, >+ setColumnClassName: function(aIndex, aValue) { this.mColumns[aIndex].className = aValue }, >+ >+ getColumnFlex: function(aIndex) { return this.mColumns[aIndex].flex }, >+ setColumnFlex: function(aIndex, aValue) { this.mColumns[aIndex].flex = aValue }, >+ >+ getExtras: function(aIndex) { return this.mColumns[aIndex].extras }, >+ setExtras: function(aIndex, aValue) { this.mColumns[aIndex].extras = aExtras }, >+ >+ getAttrs: function(aIndex) { return this.mColumns[aIndex].attrs }, >+ setAttrs: function(aIndex, aValue) { this.mColumns[aIndex].attrs = aExtras }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// template building >+ >+ build: function(aBuildContent) >+ { >+ try { >+ this.resetTree(); >+ this.buildColumns(); >+ this.buildTemplate(); >+ if (aBuildContent) >+ this.buildContent(); >+ } catch (ex) { >+ debug("### ERROR - inTreeBuilder::build failed.\n" + ex); >+ } >+ >+ //dumpDOM2(this.mTree); >+ >+ }, >+ >+ buildContent: function() >+ { >+ this.mTreeBody.builder.rebuild(); >+ }, >+ >+ buildColumns: function() >+ { >+ var cols = document.createElementNS(kXULNSURI, "treecols"); >+ var col, val, split; >+ for (var i = 0; i < this.mColumns.length; i++) { >+ col = document.createElementNS(kXULNSURI, "treecol"); >+ col.setAttribute("id", "treecol-"+this.mColumns[i].name); >+ col.setAttribute("persist", "width"); >+ col.setAttribute("label", this.mColumns[i].title); >+ >+ // mark first node as primary, if necessary >+ if (i == 0 && this.mIsContainer) >+ col.setAttribute("primary", "true"); >+ >+ val = cols[i].className; >+ if (val) >+ col.setAttribute("class", val); >+ val = cols[i].flex; >+ if (val) >+ col.setAttribute("flex", val); >+ >+ cols.appendChild(col); >+ >+ if (this.mSplitters && i < this.mColumns.length-1) { >+ split = document.createElementNS(kXULNSURI, "splitter"); >+ split.setAttribute("class", "tree-splitter"); >+ cols.appendChild(split); >+ } >+ } >+ this.mTree.appendChild(cols); >+ }, >+ >+ buildTemplate: function() >+ { >+ var cols = this.mColumns; >+ var bindings = this.mBindings; >+ var row = this.mTreeRow; >+ var cell, binding, val, extras, attrs, key, className; >+ >+ if (this.mIsIconic) { >+ binding = this.createBinding("_icon"); >+ bindings.appendChild(binding); >+ } >+ >+ for (var i = 0; i < cols.length; ++i) { >+ val = cols[i].name; >+ if (!val) >+ throw "Column data is incomplete - missing name at index " + i + "."; >+ >+ cell = this.createTemplatePart("treecell"); >+ className = ""; >+ >+ // build the default value data field >+ binding = this.createBinding(val); >+ bindings.appendChild(binding); >+ >+ cell.setAttribute("label", "?" + val); >+ cell.setAttribute("ref", "treecol-"+cols[i].name); >+ cell.setAttribute("class", className); >+ >+ var props = ""; >+ for (key in this.mRowFields) >+ props += key+"-?"+this.mRowFields[key]+" "; >+ cell.setAttribute("properties", props); >+ >+ row.appendChild(cell); >+ } >+ }, >+ >+ createBinding: function(aName) >+ { >+ var binding = document.createElementNS(kXULNSURI, "binding"); >+ binding.setAttribute("subject", "?row"); >+ binding.setAttribute("predicate", this.mNameSpace+aName); >+ binding.setAttribute("object", "?" + aName); >+ return binding; >+ }, >+ >+ createTemplatePart: function(aTagName) >+ { >+ var el = document.createElementNS(kXULNSURI, aTagName); >+ el.setAttribute("id", "templatePart"+inTreeBuilderPartCount); >+ inTreeBuilderPartCount++; >+ return el; >+ } >+ >+}; >+ >+function inTreeBuilder_ondragstart(aTree, aEvent) >+{ >+ return aTree._treeBuilder.onDragStart(aEvent); >+} >+ >+function inTreeBuilder_ondragenter(aTree, aEvent) >+{ >+ return aTree._treeBuilder.onDragEnter(aEvent); >+} >+ >+function inTreeBuilder_ondragover(aTree, aEvent) >+{ >+ return aTree._treeBuilder.onDragOver(aEvent); >+} >+ >+function inTreeBuilder_ondragexit(aTree, aEvent) >+{ >+ return aTree._treeBuilder.onDragExit(aEvent); >+} >+ >+function inTreeBuilder_ondrop(aTree, aEvent) >+{ >+ return aTree._treeBuilder.onDrop(aEvent); >+} >+ >+function inTreeBuilder_ondragover_Target(aBox, aEvent) >+{ >+ return aBox._treeBuilderDropTarget.onDragOverTarget(aBox, aEvent); >+} >+ >+function inTreeBuilder_ondrop_Target(aBox, aEvent) >+{ >+ return aBox._treeBuilderDropTarget.onDropTarget(aBox, aEvent); >+} >diff --git a/suite/extensions/inspector/resources/content/keysetOverlay.xul b/suite/extensions/inspector/resources/content/keysetOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/keysetOverlay.xul >@@ -0,0 +1,21 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+]> >+ >+<overlay id="ovKeyset" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <keyset id="ksGlobalKeyset"> >+ <key id="keyEnterLocation" command="cmdEnterLocation" >+ key="&cmdEnterLocation.key;" modifiers="accel"/> >+ <key id="keyEnterLocation2" command="cmdEnterLocation" >+ key="&cmdEnterLocation.key2;" modifiers="alt"/> >+ </keyset> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/object.js b/suite/extensions/inspector/resources/content/object.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/object.js >@@ -0,0 +1,91 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* ObjectApp ------------------------------------------------- >+* The primary object that controls the Inspector compact app. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+ >+//////////// global variables ///////////////////// >+ >+var inspector; >+ >+//////////// global constants //////////////////// >+ >+////////////////////////////////////////////////// >+ >+window.addEventListener("load", ObjectApp_initialize, false); >+window.addEventListener("unload", ObjectApp_destroy, false); >+ >+function ObjectApp_initialize() >+{ >+ inspector = new ObjectApp(); >+ inspector.initialize(); >+} >+ >+function ObjectApp_destroy() >+{ >+ inspector.destroy(); >+} >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class ObjectApp >+ >+function ObjectApp() >+{ >+} >+ >+ObjectApp.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ initialize: function() >+ { >+ this.mInitTarget = window.arguments && window.arguments.length > 0 ? window.arguments[0] : null; >+ >+ this.mPanelSet = document.getElementById("bxPanelSet"); >+ this.mPanelSet.addObserver("panelsetready", this, false); >+ this.mPanelSet.initialize(); >+ }, >+ >+ destroy: function() >+ { >+ }, >+ >+ doViewerCommand: function(aCommand) >+ { >+ this.mPanelSet.execCommand(aCommand); >+ }, >+ >+ getViewer: function(aUID) >+ { >+ return this.mPanelSet.registry.getViewerByUID(aUID); >+ }, >+ >+ onEvent: function(aEvent) >+ { >+ switch (aEvent.type) { >+ case "panelsetready": >+ this.initViewerPanels(); >+ } >+ }, >+ >+ initViewerPanels: function() >+ { >+ if (this.mInitTarget) >+ this.target = this.mInitTarget; >+ }, >+ >+ set target(aObj) >+ { >+ this.mPanelSet.getPanel(0).subject = aObj; >+ } >+}; >+ >+//////////////////////////////////////////////////////////////////////////// >+//// event listeners >+ >diff --git a/suite/extensions/inspector/resources/content/object.xul b/suite/extensions/inspector/resources/content/object.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/object.xul >@@ -0,0 +1,44 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE window [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+]> >+ >+<?xul-overlay href="chrome://inspector/content/commandOverlay.xul"?> >+<?xul-overlay href="chrome://inspector/content/keysetOverlay.xul"?> >+<?xul-overlay href="chrome://inspector/content/popupOverlay.xul"?> >+ >+<?xml-stylesheet href="chrome://inspector/skin/"?> >+ >+<window id="winInspectorMain" class="color-dialog" >+ title="&Inspector.title;" >+ width="400" height="700" >+ persist="screenX screenY width height sizemode" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" src="chrome://inspector/content/object.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/Flasher.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/ViewerRegistry.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/rdf/RDFU.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/rdf/RDFArray.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/system/PrefUtils.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/xul/FrameExchange.js"/> >+ >+ <commandset id="cmdsGlobalCommands"/> >+ <keyset id="ksGlobalKeyset"/> >+ <popupset id="ppsViewerPopupset"/> >+ >+ <domi-panelset id="bxPanelSet" flex="1" viewercommandset="cmdsGlobalCommands"> >+ <domi-panel title="&bxObjectPanel.title;" flex="1"/> >+ </domi-panelset> >+ >+</window> >+ >+ >diff --git a/suite/extensions/inspector/resources/content/popupOverlay.xul b/suite/extensions/inspector/resources/content/popupOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/popupOverlay.xul >@@ -0,0 +1,102 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+]> >+ >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<overlay id="ovPopupsMain" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <popupset id="aTooltipSet"> >+ <tooltip id="docItemsTooltip" >+ noautohide="true" >+ onpopupshowing="return inspector.fillInTooltip(document.tooltipNode);"> >+ <vbox> >+ <label id="docItemsTitle" class="tooltip-label"/> >+ <label id="docItemsURI" class="tooltip-label"/> >+ </vbox> >+ </tooltip> >+ </popupset> >+ >+ <menupopup id="menu_FilePopup"> >+ <menu oncommand="inspector.setTargetDocument(event.target.doc);" >+ id="mnInspectContentDocumentFile" >+ label="&mnInspectContentDocument.label;" >+ accesskey="&mnInspectContentDocument.accesskey;"> >+ <menupopup id="list-content-documents-popup" >+ tooltip="docItemsTooltip" >+ onpopupshowing="inspector.showInspectDocumentList(event, false);"/> >+ </menu> >+ <menu oncommand="inspector.setTargetDocument(event.target.doc);" >+ id="mnInspectChromeDocumentFile" >+ label="&mnInspectChromeDocument.label;" >+ accesskey="&mnInspectChromeDocument.accesskey;"> >+ <menupopup id="list-chrome-documents-popup" >+ tooltip="docItemsTooltip" >+ onpopupshowing="inspector.showInspectDocumentList(event, true);"/> >+ </menu> >+ <menuitem oncommand="inspector.setTargetApplicationAccessible();" >+ id="mnInspectApplicationAccessible" >+ label="&mnInspectApplicationAccessible.label;" >+ accesskey="&mnInspectApplicationAccessible.accesskey;"/> >+ <menuitem label="&cmdEnterLocation.label;" >+ accesskey="&cmdEnterLocation.accesskey;" >+ id="mnEnterLocation" observes="cmdEnterLocation"/> >+ <menuitem label="&cmdClose.label;" accesskey="&cmdClose.accesskey;" >+ id="mnClose" observes="cmdClose" key="key_closeInspector"/> >+ <menuseparator/> >+ <menuitem label="&cmdSave.label;" accesskey="&cmdSave.accesskey;" >+ observes="cmdSave" key="key_saveInspector" id="mi-save"/> >+ </menupopup> >+ >+ <menupopup id="mppEdit"> >+ <menuitem id="mnEditUndo"/> >+ <menuitem id="mnEditRedo"/> >+ <menuseparator/> >+ <menuitem id="mnEditCut"/> >+ <menuitem id="mnEditCopy"/> >+ <menuitem id="mnEditPaste"/> >+ <menuitem id="mnEditDelete"/> >+ <menuitem id="mnEditInsert"/> >+ <menuseparator/> >+ <menuitem id="mnEditInspectInNewWindow"/> >+ </menupopup> >+ >+ <menupopup id="mppView"> >+ <menu id="mnDocViewerList" >+ label="&mnDocViewerList.label;" >+ accesskey="&mnDocViewerList.accesskey;" >+ oncommand="inspector.onViewerListCommand(event.target);" >+ disabled="true"> >+ <menupopup id="mppDocViewerList"/> >+ </menu> >+ <menu id="mnObjectViewerList" >+ label="&mnObjectViewerList.label;" >+ accesskey="&mnObjectViewerList.accesskey;" >+ oncommand="inspector.onViewerListCommand(event.target);" >+ disabled="true"> >+ <menupopup id="mppObjectViewerList"/> >+ </menu> >+ <menuitem class="menuitem-iconic" type="checkbox" >+ id="item:toggleDocument" >+ label="&cmdToggleDocument.label;" >+ accesskey="&cmdToggleDocument.accesskey;" >+ observes="cmdToggleDocument" disabled="true"/> >+ <menuseparator/> >+ <menuitem id="item:flashOnSelect" >+ class="menuitem-iconic" >+ type="checkbox" >+ label="&cmdFlashOnSelect.label;" >+ accesskey="&cmdFlashOnSelect.accesskey;" >+ observes="cmdFlashOnSelect"/> >+ </menupopup> >+ >+ <popupset id="ppsViewerPopupset"/> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/prefs/inspector.js b/suite/extensions/inspector/resources/content/prefs/inspector.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/prefs/inspector.js >@@ -0,0 +1,14 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+pref("inspector.blink.border-color", "#CC0000"); >+pref("inspector.blink.border-width", 2); >+pref("inspector.blink.duration", 1200); >+pref("inspector.blink.on", true); >+pref("inspector.blink.speed", 100); >+pref("inspector.blink.invert", false); >+pref("inspector.dom.showAnon", true); >+pref("inspector.dom.showWhitespaceNodes", true); >+pref("inspector.dom.showAccessibleNodes", false); >+pref("inspector.dom.showProcessingInstructions", true); >diff --git a/suite/extensions/inspector/resources/content/prefs/pref-inspector.js b/suite/extensions/inspector/resources/content/prefs/pref-inspector.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/prefs/pref-inspector.js >@@ -0,0 +1,49 @@ >+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- >+ * vim: ts=2 sw=2 sts=2 >+ * This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+function Startup() >+{ >+ SidebarPrefs_initialize(); >+ enableBlinkPrefs(document.getElementById("inspector.blink.on").value); >+} >+ >+function enableBlinkPrefs(aTruth) >+{ >+ /* >+ * define the pair of label and control used in the prefpane to allow >+ * disabling of both elements, if a pref is locked. >+ */ >+ let els = { >+ lbElBorderColor: "cprElBorderColor", >+ lbElBorderWidth: "txfElBorderWidth", >+ lbElDuration: "txfElDuration", >+ lbElSpeed: "txfElSpeed", >+ "": "cbElInvert" >+ }; >+ >+ for (let [label, control] in Iterator(els)) { >+ let controlElem = document.getElementById(control); >+ >+ // only remove disabled attribute, if pref isn't locked >+ if (aTruth && !isPrefLocked(controlElem)) { >+ controlElem.removeAttribute("disabled"); >+ if (label) >+ document.getElementById(label).removeAttribute("disabled"); >+ } else { >+ controlElem.setAttribute("disabled", true); >+ if (label) >+ document.getElementById(label).setAttribute("disabled", true); >+ } >+ } >+} >+ >+function isPrefLocked(elem) >+{ >+ if (!elem.hasAttribute("preference")) >+ return false; >+ >+ return document.getElementById(elem.getAttribute("preference")).locked; >+} >diff --git a/suite/extensions/inspector/resources/content/prefs/pref-inspector.xul b/suite/extensions/inspector/resources/content/prefs/pref-inspector.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/prefs/pref-inspector.xul >@@ -0,0 +1,131 @@ >+<?xml version="1.0"?> >+ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/prefs.dtd"> >+ >+<?xml-stylesheet href="chrome://inspector/skin/"?> >+ >+<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ <prefpane id="inspector_pane" >+ label="&Inspector.label;" >+ script="chrome://inspector/content/extensions/wsm-colorpicker.js >+ chrome://inspector/content/prefs/pref-inspector.js >+ chrome://inspector/content/prefs/pref-sidebar.js >+ chrome://inspector/content/jsutil/xpcom/XPCU.js >+ chrome://inspector/content/jsutil/rdf/RDFU.js"> >+ >+ <stringbundle id="inspector-bundle" src="chrome://inspector/locale/inspector.properties"/> >+ >+ <preferences id="inspector_preferences"> >+ <preference id="inspector.blink.on" >+ name="inspector.blink.on" >+ type="bool" >+ onchange="enableBlinkPrefs(this.value);"/> >+ <preference id="inspector.blink.border-color" >+ name="inspector.blink.border-color" >+ type="string"/> >+ <preference id="inspector.blink.border-width" >+ name="inspector.blink.border-width" >+ type="int"/> >+ <preference id="inspector.blink.duration" >+ name="inspector.blink.duration" >+ type="int"/> >+ <preference id="inspector.blink.speed" >+ name="inspector.blink.speed" >+ type="int"/> >+ <preference id="inspector.blink.invert" >+ name="inspector.blink.invert" >+ type="bool"/> >+ <!-- preference id="inspector.hooks.navigator" >+ name="inspector.hooks.navigator" >+ type="bool"/ --> >+ </preferences> >+ >+ <groupbox id="tbxBlink"> >+ <caption label="&elementBlinking.label;"/> >+ <vbox> >+ <checkbox id="cbElOn" label="&blinkSelectedElement.label;" >+ preference="inspector.blink.on" >+ accesskey="&blinkSelectedElement.accesskey;"/> >+ <grid> >+ <columns> >+ <column/> >+ <column flex="1"/> >+ </columns> >+ <rows> >+ <row align="center"> >+ <label id="lbElBorderColor" control="cprElBorderColor" >+ value="&borderColor.label;" >+ accesskey="&borderColor.accesskey;"/> >+ <hbox align="center"> >+ <colorpicker id="cprElBorderColor" type="button" >+ preference="inspector.blink.border-color"/> >+ </hbox> >+ </row> >+ <row align="center"> >+ <label id="lbElBorderWidth" control="txfElBorderWidth" >+ value="&borderWidth.label;" >+ accesskey="&borderWidth.accesskey;"/> >+ <hbox align="center"> >+ <textbox id="txfElBorderWidth" style="width: 4em" >+ preference="inspector.blink.border-width"/> >+ <label value="&px.label;"/> >+ </hbox> >+ </row> >+ <row align="center"> >+ <label id="lbElDuration" control="txfElDuration" >+ value="&blinkDuration.label;" >+ accesskey="&blinkDuration.accesskey;"/> >+ <hbox align="center"> >+ <textbox id="txfElDuration" style="width: 4em" >+ preference="inspector.blink.duration"/> >+ <label value="&ms.label;"/> >+ </hbox> >+ </row> >+ <row align="center"> >+ <label id="lbElSpeed" control="txfElSpeed" >+ value="&blinkSpeed.label;" >+ accesskey="&blinkSpeed.accesskey;"/> >+ <hbox align="center"> >+ <textbox id="txfElSpeed" style="width: 4em" >+ preference="inspector.blink.speed"/> >+ <label value="&ms.label;"/> >+ </hbox> >+ </row> >+ </rows> >+ </grid> >+ <vbox align="start"> >+ <checkbox id="cbElInvert" label="&invertColors.label;" >+ preference="inspector.blink.invert" >+ accesskey="&invertColors.accesskey;"/> >+ </vbox> >+ </vbox> >+ </groupbox> >+ >+ <groupbox id="tbxSidebar"> >+ <caption label="&Sidebar.label;"/> >+ <vbox flex="1"> >+ <vbox id="bxSidebarInstall" flex="1"> >+ <hbox> >+ <description id="txSidebarMsg" flex="1">&installHowTo.label;</description> >+ </hbox> >+ <button id="btnSidebarInstall" label="&install.label;" >+ oncommand="sidebarPref.installSidebar()" >+ accesskey="&install.accesskey;"/> >+ </vbox> >+ </vbox> >+ </groupbox> >+ >+ <!-- >+ <vbox> >+ <checkbox id="cbxNavIntegration" label="&addNavigatorHooks.label;" >+ preference="inspector.hooks.navigator" >+ accesskey="&addNavigatorHooks.accesskey;"/> >+ </vbox> >+ --> >+ >+ </prefpane> >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/prefs/pref-sidebar.js b/suite/extensions/inspector/resources/content/prefs/pref-sidebar.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/prefs/pref-sidebar.js >@@ -0,0 +1,136 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* SidebarPrefs ------------------------------------------------- >+* The controller for the lovely sidebar prefs panel. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/jsutil/rdf/RDFU.js >+****************************************************************/ >+ >+//////////// global variables ///////////////////// >+ >+var sidebarPref; >+ >+//////////// global constants //////////////////// >+ >+const kDirServiceCID = "@mozilla.org/file/directory_service;1" >+const kNCURI = "http://home.netscape.com/NC-rdf#"; >+const kSidebarPanelId = "UPnls"; // directory services property to find panels.rdf >+const kSidebarURNPanelList = "urn:sidebar:current-panel-list"; >+const kSidebarURN3rdParty = "urn:sidebar:3rdparty-panel"; >+const kSidebarURL = "chrome://inspector/content/sidebar.xul"; >+ >+////////////////////////////////////////////////// >+ >+function SidebarPrefs_initialize() >+{ >+ sidebarPref = new SidebarPrefs(); >+ sidebarPref.initSidebarData(); >+} >+ >+///// class SidebarPrefs ///////////////////////// >+ >+function SidebarPrefs() >+{ >+} >+ >+SidebarPrefs.prototype = >+{ >+ >+ /////////////////////////////////////////////////////////////////////////// >+ // Because nsSidebar has been so mean to me, I'm going to re-write it's >+ // addPanel code right here so I don't have to fight with it. Pbbbbt! >+ /////////////////////////////////////////////////////////////////////////// >+ >+ initSidebarData: function() >+ { >+ var file = this.getDirectoryFile(kSidebarPanelId); >+ if (file) >+ RDFU.loadDataSource(file, gSidebarLoadListener); >+ }, >+ >+ initSidebarData2: function(aDS) >+ { >+ var res = aDS.GetTarget(gRDF.GetResource(kSidebarURNPanelList), gRDF.GetResource(kNCURI + "panel-list"), true); >+ this.mDS = aDS; >+ this.mPanelSeq = RDFU.makeSeq(aDS, res); >+ this.mPanelRes = gRDF.GetResource(kSidebarURN3rdParty + ":" + kSidebarURL); >+ >+ if (this.isSidebarInstalled()) { >+ document.getElementById("tbxSidebar").setAttribute("hidden", "true"); >+ } >+ }, >+ >+ isSidebarInstalled: function() >+ { >+ return this.mPanelSeq.IndexOf(this.mPanelRes) != -1; >+ }, >+ >+ installSidebar: function() >+ { >+ if (this.isSidebarInstalled()) { >+ return false; >+ } >+ >+ var bundle = document.getElementById("inspector-bundle"); >+ var kSidebarTitle = bundle.getString("sidebar.title"); >+ >+ this.mDS.Assert(this.mPanelRes, gRDF.GetResource(kNCURI + "title"), gRDF.GetLiteral(kSidebarTitle), true); >+ this.mDS.Assert(this.mPanelRes, gRDF.GetResource(kNCURI + "content"), gRDF.GetLiteral(kSidebarURL), true); >+ this.mPanelSeq.AppendElement(this.mPanelRes); >+ this.forceSidebarRefresh(); >+ >+ var msg = document.getElementById("txSidebarMsg"); >+ msg.removeChild(msg.firstChild); >+ >+ msg.appendChild(document.createTextNode(bundle.getString("sidebarInstalled"))); >+ var btn = document.getElementById("btnSidebarInstall"); >+ btn.setAttribute("disabled", "true"); >+ >+ return true; >+ }, >+ >+ forceSidebarRefresh: function() >+ { >+ var listRes = gRDF.GetResource(kSidebarURNPanelList); >+ var refreshRes = gRDF.GetResource(kNCURI + "refresh"); >+ var trueRes = gRDF.GetLiteral("true"); >+ this.mDS.Assert(listRes, refreshRes, trueRes, true); >+ this.mDS.Unassert(listRes, refreshRes, trueRes); >+ }, >+ >+ getDirectoryFile: function(aFileId) >+ { >+ try { >+ var dirService = XPCU.getService(kDirServiceCID, "nsIProperties"); >+ var file = dirService.get(aFileId, Components.interfaces.nsIFile); >+ if (!file.exists()) >+ return null; >+ >+ var ioService = XPCU.getService("@mozilla.org/network/io-service;1", "nsIIOService"); >+ var fileHandler = XPCU.QI(ioService.getProtocolHandler("file"), "nsIFileProtocolHandler"); >+ >+ return fileHandler.getURLSpecFromFile(file); >+ >+ } catch (ex) { >+ return null; >+ } >+ } >+ >+}; >+ >+var gSidebarLoadListener = { >+ onDataSourceReady: function(aDS) >+ { >+ sidebarPref.initSidebarData2(aDS); >+ }, >+ >+ onError: function() >+ { >+ } >+}; >+ >diff --git a/suite/extensions/inspector/resources/content/prefs/prefsOverlay.xul b/suite/extensions/inspector/resources/content/prefs/prefsOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/prefs/prefsOverlay.xul >@@ -0,0 +1,17 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/prefs.dtd"> >+ >+<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <treechildren id="advancedChildren"> >+ <treeitem id="inspectorItem" label="&Inspector.label;" >+ prefpane="inspector_pane" helpTopic="advanced_pref_dom_inspector" >+ url="chrome://inspector/content/prefs/pref-inspector.xul"/> >+ </treechildren> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/res/Linux/winInspectorMain.xpm b/suite/extensions/inspector/resources/content/res/Linux/winInspectorMain.xpm >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/res/Linux/winInspectorMain.xpm >@@ -0,0 +1,45 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/* XPM */ >+static char * winInspectorMain_xpm[] = { >+"32 32 6 1", >+" c None", >+". c #000000", >+"+ c #FFB300", >+"@ c #FF7500", >+"# c #FF8C00", >+"$ c #FF0000", >+"................................", >+"................................", >+"..++++++++++++++++++++++++++++..", >+"..++++++++++++++++++++++++++++..", >+"..++++++++++........++++++++++..", >+"..++++++++++........++++++++++..", >+"..++++++....@@@@@@@@....++++++..", >+"..++++++....@@@@@@@@....++++++..", >+"..++++++..@@@@@@@@@@@@..++++++..", >+"..++++++..@@@@@@@@@@@@..++++++..", >+"..++++..@@@@@@@@@@@@@@@@..++++..", >+"..++++..@@@@@@@@@@@@@@@@..++++..", >+"..++++..@@@@@@@@@@@@@@@@..++++..", >+"..++++..@@@@@@@@@@@@@@@@..++++..", >+"..++++..@@@@@@@@@@@@##@@..++++..", >+"..++++..@@@@@@@@@@@@##@@..++++..", >+"..++++..@@@@@@@@@@@@##@@..++++..", >+"..++++..@@@@@@@@@@@@##@@..++++..", >+"..++++++..@@@@@@####$$..++++++..", >+"..++++++..@@@@@@####$$..++++++..", >+"..++++++....@@@@@@@@......++++..", >+"..++++++....@@@@@@@@......++++..", >+"..++++++++++........++......++..", >+"..++++++++++........++......++..", >+"..++++++++++++++++++++++........", >+"..++++++++++++++++++++++........", >+"..++++++++++++++++++++++++......", >+"..++++++++++++++++++++++++......", >+"..++++++++++++++++++++++++++....", >+"..++++++++++++++++++++++++++....", >+"................................", >+"................................"}; >diff --git a/suite/extensions/inspector/resources/content/res/Linux/winInspectorMain16.xpm b/suite/extensions/inspector/resources/content/res/Linux/winInspectorMain16.xpm >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/res/Linux/winInspectorMain16.xpm >@@ -0,0 +1,29 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/* XPM */ >+static char * winInspectorMain16_xpm[] = { >+"16 16 6 1", >+" c None", >+". c #000000", >+"+ c #FFAD00", >+"@ c #FF6D00", >+"# c #FF8500", >+"$ c #FF0000", >+"................", >+".++++++++++++++.", >+".+++++....+++++.", >+".+++..@@@@..+++.", >+".+++.@@@@@@.+++.", >+".++.@@@@@@@@.++.", >+".++.@@@@@@@@.++.", >+".++.@@@@@@#@.++.", >+".++.@@@@@@#@.++.", >+".+++.@@@##$.+++.", >+".+++..@@@@...++.", >+".+++++....+...+.", >+".+++++++++++....", >+".++++++++++++...", >+".+++++++++++++..", >+"................"}; >diff --git a/suite/extensions/inspector/resources/content/res/WINNT/winInspectorMain.ico b/suite/extensions/inspector/resources/content/res/WINNT/winInspectorMain.ico >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..78efb3acf8b4d277c01999e3d611c354b1f20227 >GIT binary patch >literal 3638 >zc%1E(Jr2S!427L0l{)qaoe;<9aab7HS=bQgU}55b!HyO318Gx%KnOp{YTo<O^j8jm >zf(H5?oHi}M3Xj9U{@ekaFk9o8rckV)b8J))6pgL502izS*49$OnMfr1FEz0;pYbr? >z4Y-^$D96~N)4FBEmJ$P#-juu#{CfB6c^}<q_B_qoUl;Y+0c(WNXZNNs`HDSthjo-5 >zD-wy8NEP)OpId*L&)wfM9+LQ2$7z%{bD!37W*S9%MmVd6r`w6vbdB$Ee#TGod`9{G >Vm3jJomh$xfh?9E$s2cv;x&h!>9W?*| > >diff --git a/suite/extensions/inspector/resources/content/res/search-registry.rdf b/suite/extensions/inspector/resources/content/res/search-registry.rdf >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/res/search-registry.rdf >@@ -0,0 +1,18 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >+ xmlns:ins="http://www.mozilla.org/inspector#"> >+ >+ <rdf:Seq about="inspector:search"> >+ <rdf:li><rdf:Description >+ ins:uid="findOrphanImages" >+ ins:description="Find Orphan Images" >+ ins:factory="SearchModule_findOrphanImages"/></rdf:li> >+ >+ </rdf:Seq> >+ >+</rdf:RDF> >\ No newline at end of file >diff --git a/suite/extensions/inspector/resources/content/res/viewer-registry.rdf b/suite/extensions/inspector/resources/content/res/viewer-registry.rdf >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/res/viewer-registry.rdf >@@ -0,0 +1,336 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE RDF SYSTEM "chrome://inspector/locale/viewer-registry.dtd"> >+ >+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >+ xmlns:ins="http://www.mozilla.org/inspector#"> >+ >+<!-- Inspector-specific RDF attributes >+ xmlns:ins Sets the ins: prefix to an Inspector-specific namespace URI. >+ >+ ins:uid Sets the basic viewer filename Inspector uses to find the viewer XUL file. >+ For example, ins:uid="dom" leads to chrome://inspector/content/viewers/dom/dom.xul >+ (ViewerRegistry.js#getEntryURL()) >+ >+ ins:panels This determines which DOM Inspector panels, by id, the viewer referenced is valid for. >+ For example, ins:panels="bxObjectPanel bxObjPanel" means the panel id must be >+ bxObjectPanel or bxObjPanel. >+ >+ ins:description >+ This sets a title for the viewer. >+ >+ ins:icon This sets an icon for the viewer. Currently unused. >+ >+ ins:filter This determines which nodes (or in the case of JavaScript Object >+ viewer, values), the viewer referenced is valid for. >+ >+ @param object - nsIDOMNode object (or in the case of JavaScript >+ Object viewer, JavaScript object). >+ @param linkedViewer - linked viewer object. >+ >+ For example, ins:filter= >+ "return object instanceof Components.interfaces.nsIDOMDocument;" >+ is a JavaScript fragment ViewerRegistry.js uses to define a >+ filter function if the panel's subject node is an instance of >+ nsIDOMDocument. >+--> >+ >+ <rdf:Seq about="inspector:viewers"> >+ <rdf:li><rdf:Description >+ ins:uid="dom" >+ ins:panels="bxDocPanel" >+ ins:description="&dom.label;" >+ ins:icon="chrome://inspector/content/viewers/dom/dom-icon.gif" >+ ins:filter="return object instanceof Components.interfaces.nsIDOMDocument;"/> >+ </rdf:li> >+ >+ <rdf:li><rdf:Description >+ ins:uid="stylesheets" >+ ins:panels="bxDocPanel" >+ ins:description="&stylesheets.label;" >+ ins:filter="return object instanceof Components.interfaces.nsIDOMDocument;"/> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description >+ ins:uid="domNode" >+ ins:panels="bxObjectPanel bxObjPanel" >+ ins:description="&domNode.label;"> >+ <ins:filter><![CDATA[ >+ return object instanceof Components.interfaces.nsIDOMNode || >+ "@mozilla.org/accessibleRetrieval;1" in Components.classes && >+ object instanceof Components.interfaces.nsIAccessible; >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description >+ ins:uid="boxModel" >+ ins:panels="bxObjectPanel bxObjPanel" >+ ins:description="&boxModel.label;"> >+ <ins:filter><![CDATA[ >+ return object instanceof Components.interfaces.nsIDOMElement || >+ "@mozilla.org/accessibleRetrieval;1" in Components.classes && >+ object instanceof Components.interfaces.nsIAccessible && >+ object.DOMNode instanceof Components.interfaces.nsIDOMElement; >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description >+ ins:uid="xblBindings" >+ ins:panels="bxObjectPanel bxObjPanel" >+ ins:description="&xblBindings.label;"> >+ <ins:filter><![CDATA[ >+ var node = >+ "@mozilla.org/accessibleRetrieval;1" in Components.classes && >+ object instanceof Components.interfaces.nsIAccessible ? >+ object.DOMNode : object; >+ >+ if (node instanceof Components.interfaces.nsIDOMElement) { >+ try { >+ var urls = >+ Components.classes["@mozilla.org/inspector/dom-utils;1"]. >+ getService(Components.interfaces["inIDOMUtils"]). >+ getBindingURLs(node); >+ return urls && urls.length; >+ } >+ catch (e) { } >+ } >+ return false; >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description >+ ins:uid="styleRules" >+ ins:panels="bxObjectPanel bxObjPanel" >+ ins:description="&styleRules.label;"> >+ <ins:filter><![CDATA[ >+ return object instanceof Components.interfaces.nsIDOMElement || >+ object instanceof Components.interfaces.nsIDOMCSSStyleSheet || >+ "@mozilla.org/accessibleRetrieval;1" in Components.classes && >+ object instanceof Components.interfaces.nsIAccessible && >+ object.DOMNode instanceof Components.interfaces.nsIDOMElement; >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description >+ ins:uid="computedStyle" >+ ins:panels="bxObjectPanel bxObjPanel" >+ ins:description="&computedStyle.label;"> >+ <ins:filter><![CDATA[ >+ return object instanceof Components.interfaces.nsIDOMElement || >+ "@mozilla.org/accessibleRetrieval;1" in Components.classes && >+ object instanceof Components.interfaces.nsIAccessible && >+ object.DOMNode instanceof Components.interfaces.nsIDOMElement; >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li><rdf:Description >+ ins:uid="usedFontFaces" >+ ins:panels="bxObjectPanel bxObjPanel" >+ ins:description="&usedFontFaces.label;"> >+ <ins:filter><![CDATA[ >+ // XXX getUsedFontFaces really works on a Range, >+ // but to avoid bug 166749 we permit any Node. >+ return (object instanceof Components.interfaces.nsIDOMNode || >+ "@mozilla.org/accessibleRetrieval;1" in Components.classes && >+ object instanceof Components.interfaces.nsIAccessible) && >+ "getUsedFontFaces" in XPCU.getService("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils"); >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li><rdf:Description >+ ins:uid="jsObject" >+ ins:panels="bxDocPanel bxObjectPanel bxObjPanel" >+ ins:description="&jsObject.label;" >+ ins:filter="return true;"/> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description ins:uid="accessibleEvent" >+ ins:panels="bxObjectPanel bxObjPanel" >+ ins:description="&accessibleEvent.label;"> >+ <ins:filter><![CDATA[ >+ if (!linkedViewer || linkedViewer.uid != "accessibleEvents") { >+ return false; >+ } >+ >+ const Ci = Components.interfaces; >+ if (object instanceof Ci.nsIDOMNode || >+ ("@mozilla.org/accessibleRetrieval;1" in Components.classes && >+ object instanceof Ci.nsIAccessible)) { >+ return object; >+ } >+ >+ return false; >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description ins:uid="accessibleObject" >+ ins:panels="bxObjectPanel bxObjPanel" >+ ins:description="&accessibleObject.label;"> >+ <ins:filter><![CDATA[ >+ if (("@mozilla.org/accessibleRetrieval;1" in Components.classes) && >+ object instanceof Components.interfaces.nsIAccessible) { >+ return true; >+ } >+ >+ if (!linkedViewer || >+ !(object instanceof Components.interfaces.nsIDOMNode)) >+ return false; >+ >+ if (linkedViewer.uid != "accessibleEvents" && >+ linkedViewer.uid != "accessibleTree" && >+ (linkedViewer.uid != "dom" || !linkedViewer.getAccessibleNodes())) >+ return false; >+ >+ try { >+ var accService = >+ Components.classes["@mozilla.org/accessibleRetrieval;1"] >+ .getService(Components.interfaces.nsIAccessibleRetrieval); >+ >+ if ("getAttachedAccessibleFor" in accService) >+ return accService.getAttachedAccessibleFor(object); >+ return accService.getAccessibleFor(object); >+ } catch(e) { >+ return false; >+ } >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description ins:uid="accessibleProps" >+ ins:panels="bxObjectPanel bxObjPanel" >+ ins:description="&accessibleProps.label;"> >+ <ins:filter><![CDATA[ >+ if (("@mozilla.org/accessibleRetrieval;1" in Components.classes) && >+ object instanceof Components.interfaces.nsIAccessible) { >+ return true; >+ } >+ >+ if (!linkedViewer || >+ !(object instanceof Components.interfaces.nsIDOMNode)) >+ return false; >+ >+ if (linkedViewer.uid != "accessibleEvents" && >+ linkedViewer.uid != "accessibleTree" && >+ (linkedViewer.uid != "dom" || !linkedViewer.getAccessibleNodes())) >+ return false; >+ >+ try { >+ var accService = >+ Components.classes["@mozilla.org/accessibleRetrieval;1"] >+ .getService(Components.interfaces.nsIAccessibleRetrieval); >+ >+ if ("getAttachedAccessibleFor" in accService) >+ return accService.getAttachedAccessibleFor(object); >+ return accService.getAccessibleFor(object); >+ } catch(e) { >+ return false; >+ } >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description ins:uid="accessibleRelations" >+ ins:panels="bxObjectPanel bxObjPanel" >+ ins:description="&accessibleRelations.label;"> >+ <ins:filter><![CDATA[ >+ if (("@mozilla.org/accessibleRetrieval;1" in Components.classes) && >+ object instanceof Components.interfaces.nsIAccessible) { >+ return true; >+ } >+ >+ if (!linkedViewer || >+ !(object instanceof Components.interfaces.nsIDOMNode)) >+ return false; >+ >+ if (linkedViewer.uid != "accessibleEvents" && >+ linkedViewer.uid != "accessibleTree" && >+ (linkedViewer.uid != "dom" || !linkedViewer.getAccessibleNodes())) >+ return false; >+ >+ try { >+ var accService = >+ Components.classes["@mozilla.org/accessibleRetrieval;1"] >+ .getService(Components.interfaces.nsIAccessibleRetrieval); >+ >+ if ("getAttachedAccessibleFor" in accService) >+ return accService.getAttachedAccessibleFor(object); >+ return accService.getAccessibleFor(object); >+ } catch(e) { >+ return false; >+ } >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description ins:uid="accessibleEvents" >+ ins:panels="bxDocPanel" >+ ins:description="&accessibleEvents.label;"> >+ <ins:filter><![CDATA[ >+ if (!("@mozilla.org/accessibleRetrieval;1" in Components.classes)) { >+ return false; >+ } >+ >+ // Allow for DOM document and application accessible (compatible >+ // with Gecko 2.0 and 1.9.2). >+ const Ci = Components.interfaces; >+ if (object instanceof Ci.nsIDOMDocument) { >+ return true; >+ } >+ >+ if ("nsIAccessibleApplication" in Ci) { >+ return object instanceof Ci.nsIAccessibleApplication; >+ } >+ >+ return object instanceof Ci.nsIAccessible && !object.parent; >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ >+ <rdf:li> >+ <rdf:Description ins:uid="accessibleTree" >+ ins:panels="bxDocPanel" >+ ins:description="&accessibleTree.label;"> >+ <ins:filter><![CDATA[ >+ if (!("@mozilla.org/accessibleRetrieval;1" in Components.classes)) { >+ return false; >+ } >+ >+ // Allow for DOM document and application accessible (compatible >+ // with Gecko 2.0 and 1.9.2). >+ const Ci = Components.interfaces; >+ if (object instanceof Ci.nsIDOMDocument) { >+ return true; >+ } >+ >+ if ("nsIAccessibleApplication" in Ci) { >+ return object instanceof Ci.nsIAccessibleApplication; >+ } >+ >+ return object instanceof Ci.nsIAccessible && !object.parent; >+ ]]></ins:filter> >+ </rdf:Description> >+ </rdf:li> >+ </rdf:Seq> >+ >+</rdf:RDF> >diff --git a/suite/extensions/inspector/resources/content/sidebar.js b/suite/extensions/inspector/resources/content/sidebar.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/sidebar.js >@@ -0,0 +1,117 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* InspectorSidebar ----------------------------------------------------------- >+* The primary object that controls the Inspector sidebar. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var inspector; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kObserverServiceContractID = "@mozilla.org/observer-service;1"; >+ >+const gNavigator = window.content; >+ >+////////////////////////////////////////////////////////////////////////////// >+ >+function InspectorSidebar_initialize() >+{ >+ inspector = new InspectorSidebar(); >+ inspector.initialize(); >+} >+ >+window.addEventListener("load", InspectorSidebar_initialize, false); >+ >+////////////////////////////////////////////////////////////////////////////// >+//// class InspectorSidebar >+ >+function InspectorSidebar() >+{ >+} >+ >+InspectorSidebar.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ get document() >+ { >+ return this.mDocPanel.viewer.subject; >+ }, >+ >+ initialize: function IS_Initialize() >+ { >+ this.installNavObserver(); >+ >+ this.mPanelSet = document.getElementById("bxPanelSet"); >+ this.mPanelSet.addObserver("panelsetready", this, false); >+ this.mPanelSet.initialize(); >+ }, >+ >+ destroy: function IS_Destroy() >+ { >+ }, >+ >+ doViewerCommand: function IS_DoViewerCommand(aCommand) >+ { >+ this.mPanelSet.execCommand(aCommand); >+ }, >+ >+ getViewer: function IS_GetViewer(aUID) >+ { >+ return this.mPanelSet.registry.getViewerByUID(aUID); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Viewer Panels >+ >+ initViewerPanels: function IS_InitViewerPanels() >+ { >+ this.mDocPanel = this.mPanelSet.getPanel(0); >+ this.mDocPanel.addObserver("subjectChange", this, false); >+ this.mObjectPanel = this.mPanelSet.getPanel(1); >+ }, >+ >+ onEvent: function IS_OnEvent(aEvent) >+ { >+ if (aEvent.type == "panelsetready") { >+ this.initViewerPanels(); >+ } >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Navigation >+ >+ setTargetWindow: function IS_SetTargetWindow(aWindow) >+ { >+ this.setTargetDocument(aWindow.document); >+ }, >+ >+ setTargetDocument: function IS_SetTargetDocument(aDoc) >+ { >+ this.mPanelSet.getPanel(0).subject = aDoc; >+ }, >+ >+ installNavObserver: function IS_InstallNavObserver() >+ { >+ var observerService = XPCU.getService(kObserverServiceContractID, >+ "nsIObserverService"); >+ observerService.addObserver(NavLoadObserver, "EndDocumentLoad", false); >+ } >+}; >+ >+var NavLoadObserver = { >+ observe: function NLO_Observe(aWindow) >+ { >+ inspector.setTargetWindow(aWindow); >+ } >+}; >diff --git a/suite/extensions/inspector/resources/content/sidebar.xul b/suite/extensions/inspector/resources/content/sidebar.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/sidebar.xul >@@ -0,0 +1,61 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE window [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+]> >+ >+<?xul-overlay href="chrome://inspector/content/commandOverlay.xul"?> >+<?xul-overlay href="chrome://inspector/content/keysetOverlay.xul"?> >+<?xul-overlay href="chrome://inspector/content/popupOverlay.xul"?> >+ >+<?xml-stylesheet href="chrome://inspector/skin/sidebar.css"?> >+ >+<window id="winInspectorMain" class="color-dialog" >+ title="&Inspector.title;" >+ width="400" height="700" >+ persist="screenX screenY width height sizemode" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/sidebar.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/Flasher.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/ViewerRegistry.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/rdf/RDFU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/rdf/RDFArray.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/system/PrefUtils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/FrameExchange.js"/> >+ >+ <commandset id="cmdsGlobalCommands"/> >+ <keyset id="ksGlobalKeyset"/> >+ <popupset id="ppsViewerPopupset"/> >+ >+ <domi-panelset id="bxPanelSet" flex="1" viewercommandset="cmdsGlobalCommands"> >+ <tabbox flex="1" orient="vertical"> >+ <tabs> >+ <tab label="&bxDocPanel.title;"/> >+ <tab label="&bxObjectPanel.title;"/> >+ </tabs> >+ <tabpanels flex="1"> >+ <domi-panel id="bxDocPanel" title="&bxDocPanel.title;"/> >+ <domi-panel id="bxObjPanel" title="&bxObjectPanel.title;" >+ linkedpanel="bxDocPanel"/> >+ </tabpanels> >+ </tabbox> >+ </domi-panelset> >+</window> >diff --git a/suite/extensions/inspector/resources/content/statusbarOverlay.xul b/suite/extensions/inspector/resources/content/statusbarOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/statusbarOverlay.xul >@@ -0,0 +1,17 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<overlay id="ovStatusbar" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <statusbar id="status-bar"> >+ <statusbarpanel id="txStatusPanel" flex="1"/> >+ <statusbarpanel class="statusbarpanel-progress"> >+ <progressmeter id="pmStatus" mode="normal" value="0" class="progressmeter-statusbar"/> >+ </statusbarpanel> >+ </statusbar> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/tasksOverlay-cz.xul b/suite/extensions/inspector/resources/content/tasksOverlay-cz.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/tasksOverlay-cz.xul >@@ -0,0 +1,55 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/tasksOverlay.dtd" > >+ >+<overlay id="eInspectorTasksOverlay" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ <overlaytarget id="scripts-overlay-target"> >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ <script type="application/javascript"><![CDATA[ >+ function inspectorWindowLoad() >+ { >+ setTimeout(initWindowMediator, 0); >+ >+ // ChatZilla currently fails to id its mainmenu popup, so we can't >+ // just do this the clean way. We need to move the menu_inspector >+ // menuitem from the script overlaytarget to the popup. >+ var domiItem = document.getElementById(":inspector"); >+ var jsc = document.getElementById(":jsconsole"); >+ jsc.parentNode.insertBefore(domiItem, jsc.nextSibling); >+ } >+ >+ function initWindowMediator() >+ { >+ var Cc = Components.classes; >+ var Ci = Components.interfaces; >+ // Load the Window DataSource so that browser windows opened subsequent >+ // to DOM Inspector show up in the DOM Inspector's window list. >+ var windowDS = Cc["@mozilla.org/rdf/datasource;1?name=window-mediator"] >+ .getService(Ci.nsIWindowDataSource); >+ } >+ >+ window.addEventListener("load", inspectorWindowLoad, false); >+ ]]></script> >+ >+ <menuitem id=":inspector" command="cmd_inspector" >+ key="key_inspectPage" label="&inspectorTaskCmd.label;" >+ accesskey="&inspectorTaskCmd.accesskey;"/> >+ </overlaytarget> >+ >+ <commandset id="tasksCommands"> >+ <command id="cmd_inspector" >+ oncommand="inspectDOMDocument(document);"/> >+ </commandset> >+ >+ <keyset id="tasksKeys"> >+ <key id="key_inspectApp" key="&inspectorTaskCmd.commandkey;" >+ modifiers="accel,shift" command="cmd_inspector"/> >+ </keyset> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/tasksOverlay-ff.xul b/suite/extensions/inspector/resources/content/tasksOverlay-ff.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/tasksOverlay-ff.xul >@@ -0,0 +1,76 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/tasksOverlay.dtd" > >+ >+<overlay id="eInspectorTasksOverlay" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ <script type="application/javascript"> >+ <![CDATA[ >+ function inspectorWindowLoad() >+ { >+ setTimeout(initWindowMediator, 0); >+ >+ // Hide the menuitem in the Tools menupopup, leaving only the item in >+ // the Web Developer popup. XXX For compatibility with versions <6. >+ var legacyMenuItem = document.getElementById("menu_inspector"); >+ if (legacyMenuItem && document.getElementById("menu_domInspector")) { >+ legacyMenuItem.parentNode.removeChild(legacyMenuItem); >+ } >+ } >+ >+ function initWindowMediator() >+ { >+ // Load the Window DataSource so that browser windows opened subsequent >+ // to DOM Inspector show up in the DOM Inspector's window list. >+ var windowDS = >+ Components.classes["@mozilla.org/rdf/datasource;1?name=window-mediator"] >+ .getService(Components.interfaces.nsIWindowDataSource); >+ } >+ >+ window.addEventListener("load", inspectorWindowLoad, false); >+ ]]> >+ </script> >+ >+ <commandset id="mainCommandSet"> >+ <command id="Tasks:Inspector" oncommand="inspectDOMDocument();"/> >+ <command id="Tasks:InspectPage" >+ oncommand="inspectDOMDocument(content.document);"/> >+ </commandset> >+ >+ <keyset id="mainKeyset"> >+ <key id="key_inspectPage" key="&inspectorTaskCmd.commandkey;" >+ modifiers="accel,shift" command="Tasks:InspectPage"/> >+ </keyset> >+ >+ <!-- Remove the conflicting built-in Inspect key. XXX For compatibility >+ with version 4 only. --> >+ <key id="key_inspect" removeelement="true"/> >+ >+ <!-- XXX For compatibility with the versions <6. --> >+ <menupopup id="menu_ToolsPopup"> >+ <menuitem id="menu_inspector" label="&inspectorTaskCmd.label;" >+ insertafter="javascriptConsole" key="key_inspectPage" >+ accesskey="&inspectorTaskCmd.accesskey.ff;" >+ command="Tasks:InspectPage"/> >+ </menupopup> >+ >+ <menupopup id="menuWebDeveloperPopup"> >+ <menuitem id="menu_domInspector" label="&inspectorTaskCmd.label;" >+ insertafter="javascriptConsole" key="key_inspectPage" >+ accesskey="&inspectorTaskCmd.accesskey.ff;" >+ command="Tasks:InspectPage"/> >+ </menupopup> >+ >+ <menupopup id="appmenu_webDeveloper_popup"> >+ <menuitem id="appmenu_inspector" label="&inspectorTaskCmd.label;" >+ insertbefore="appmenu_pageInspect" command="Tasks:InspectPage"/> >+ </menupopup> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/tasksOverlay-mobile.xul b/suite/extensions/inspector/resources/content/tasksOverlay-mobile.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/tasksOverlay-mobile.xul >@@ -0,0 +1,45 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/tasksOverlay.dtd" > >+ >+<overlay id="eInspectorTasksOverlay" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" src="chrome://inspector/content/hooks.js"/> >+ <script type="application/javascript"> >+ <![CDATA[ >+ function inspectorWindowLoad() >+ { >+ setTimeout(initWindowMediator, 0); >+ } >+ >+ function initWindowMediator() >+ { >+ // Load the Window DataSource so that browser windows opened subsequent to DOM >+ // Inspector show up in the DOM Inspector's window list. >+ var windowDS = Components.classes["@mozilla.org/rdf/datasource;1?name=window-mediator"] >+ .getService(Components.interfaces.nsIWindowDataSource); >+ } >+ >+ window.addEventListener("load", inspectorWindowLoad, false); >+ ]]> >+ </script> >+ >+ <!-- this fragment can be removed when support for Fennec alphas is no longer needed --> >+ <commandset id="cmdset_main"> >+ <command id="Tasks:InspectPage" oncommand="inspectDOMDocument(content.document);"/> >+ </commandset> >+ >+ <commandset id="mainCommandSet"> >+ <command id="Tasks:InspectPage" oncommand="inspectDOMDocument(content.document);"/> >+ </commandset> >+ >+ <keyset id="mainKeyset"> >+ <key id="key_inspectPage" key="&inspectorTaskCmd.commandkey;" modifiers="accel,shift" command="Tasks:InspectPage"/> >+ </keyset> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/tasksOverlay-sb.xul b/suite/extensions/inspector/resources/content/tasksOverlay-sb.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/tasksOverlay-sb.xul >@@ -0,0 +1,48 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/tasksOverlay.dtd" > >+ >+<overlay id="eInspectorTasksOverlay" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" src="chrome://inspector/content/hooks.js"/> >+ >+ <script type="application/javascript"> >+ <![CDATA[ >+ function inspectorWindowLoad() >+ { >+ setTimeout(initWindowMediator, 0); >+ } >+ >+ function initWindowMediator() >+ { >+ // Load the Window DataSource so that browser windows opened subsequent to DOM >+ // Inspector show up in the DOM Inspector's window list. >+ var windowDS = Components.classes["@mozilla.org/rdf/datasource;1?name=window-mediator"] >+ .getService(Components.interfaces.nsIWindowDataSource); >+ } >+ >+ window.addEventListener("load", inspectorWindowLoad, false); >+ ]]> >+ </script> >+ >+ <commandset id="calendar_commands"> >+ <command id="Tasks:Inspector" oncommand="inspectDOMDocument();"/> >+ <command id="Tasks:InspectPage" oncommand="inspectDOMDocument(window.document);"/> >+ </commandset> >+ >+ <keyset id="tasksKeys"> >+ <key id="key_inspectPage" key="&inspectorTaskCmd.commandkey;" modifiers="accel,shift" command="Tasks:InspectPage"/> >+ </keyset> >+ >+ <menupopup id="menu_ToolsPopup"> >+ <menuitem id="menu_inspector" label="&inspectorTaskCmd.label;" >+ insertafter="javascriptConsole" key="key_inspectPage" >+ accesskey="&inspectorTaskCmd.accesskey;" command="Tasks:InspectPage"/> >+ </menupopup> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/tasksOverlay-tb.xul b/suite/extensions/inspector/resources/content/tasksOverlay-tb.xul >new file mode 100755 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/tasksOverlay-tb.xul >@@ -0,0 +1,57 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/tasksOverlay.dtd" > >+ >+<overlay id="eInspectorTasksOverlay" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ >+ <script type="application/javascript"><![CDATA[ >+ function inspectorWindowLoad() >+ { >+ setTimeout("initWindowMediator()", 0); >+ } >+ >+ function initWindowMediator() >+ { >+ // Load the Window DataSource so that browser windows opened subsequent >+ // to DOM Inspector show up in the DOM Inspector's window list. >+ var windowDS = >+ Components.classes["@mozilla.org/rdf/datasource;1?name=window-mediator"] >+ .getService(Components.interfaces.nsIWindowDataSource); >+ } >+ >+ window.addEventListener("load", inspectorWindowLoad, false); >+ ]]></script> >+ >+ <commandset id="tasksCommands"> >+ <command id="Tasks:Inspector" oncommand="inspectDOMDocument();"/> >+ <command id="Tasks:InspectPage" >+ oncommand="inspectDOMDocument(content ? content.document : document);"/> >+ </commandset> >+ >+ <keyset id="tasksKeys"> >+ <key id="key_inspectPage" key="&inspectorTaskCmd.commandkey;" >+ modifiers="accel,shift" command="Tasks:InspectPage"/> >+ </keyset> >+ >+ <menupopup id="taskPopup"> >+ <menuitem id="menu_inspector" label="&inspectorTaskCmd.label;" >+ insertafter="javascriptConsole,javaScriptConsole" >+ key="key_inspectPage" accesskey="&inspectorTaskCmd.accesskey;" >+ command="Tasks:Inspector"/> >+ </menupopup> >+ >+ <menupopup id="appmenu_taskPopup"> >+ <menuitem id="appmenu_inspector" label="&inspectorTaskCmd.label;" >+ insertafter="appmenu_javascriptConsole" >+ command="Tasks:Inspector"/> >+ </menupopup> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/tasksOverlay.xul b/suite/extensions/inspector/resources/content/tasksOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/tasksOverlay.xul >@@ -0,0 +1,32 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/tasksOverlay.dtd" > >+ >+<overlay id="eInspectorTasksOverlay" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ >+ <commandset id="tasksCommands"> >+ <command id="Tasks:Inspector" oncommand="inspectDOMDocument();"/> >+ <command id="Tasks:InspectPage" >+ oncommand="inspectDOMDocument(content ? content.document : document);"/> >+ </commandset> >+ >+ <keyset id="tasksKeys"> >+ <key id="key_inspectPage" key="i" modifiers="accel,shift" >+ command="Tasks:InspectPage"/> >+ </keyset> >+ >+ <menupopup id="toolsPopup"> >+ <menuitem id="menu_inspector" label="&inspectorTaskCmd.label;" >+ key="key_inspectPage" accesskey="&inspectorTaskCmd.accesskey;" >+ command="Tasks:Inspector"/> >+ </menupopup> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/tests/allskin.xul b/suite/extensions/inspector/resources/content/tests/allskin.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/tests/allskin.xul >@@ -0,0 +1,77 @@ >+<?xml version="1.0"?> >+ >+<?xml-stylesheet href="chrome://communicator/skin/box.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/brand.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/button.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/communicator.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/menubutton.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/prefpanels.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/securityOverlay.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/splitter.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/tasksOverlay.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/toolbar.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/bookmarks/bookmarks.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/directory/directory.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/profile/profile.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/profile/profileManager.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/regviewer/regviewer.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/related/related.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/search/findresults.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/search/icons.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/search/internet.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/search/internetresults.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/search/search-editor.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/search/search.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/sidebar/customize.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/sidebar/preview.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/sidebar/sidebar.css"?> >+<?xml-stylesheet href="chrome://communicator/skin/xpinstall/xpinstall.css"?> >+<?xml-stylesheet href="chrome://editor/skin/EdImageMap.css"?> >+<?xml-stylesheet href="chrome://editor/skin/EdImageMapPage.css"?> >+<?xml-stylesheet href="chrome://editor/skin/editor.css"?> >+<?xml-stylesheet href="chrome://editor/skin/EditorDialog.css"?> >+<?xml-stylesheet href="chrome://editor/skin/EditorToolbars.css"?> >+<?xml-stylesheet href="chrome://global/skin/box.css"?> >+<?xml-stylesheet href="chrome://global/skin/button.css"?> >+<?xml-stylesheet href="chrome://global/skin/checkbox.css"?> >+<?xml-stylesheet href="chrome://global/skin/colorpicker.css"?> >+<?xml-stylesheet href="chrome://global/skin/commonDialog.css"?> >+<?xml-stylesheet href="chrome://global/skin/console.css"?> >+<?xml-stylesheet href="chrome://global/skin/filepicker.css"?> >+<?xml-stylesheet href="chrome://global/skin/formatting.css"?> >+<?xml-stylesheet href="chrome://global/skin/global.css"?> >+<?xml-stylesheet href="chrome://global/skin/menu.css"?> >+<?xml-stylesheet href="chrome://global/skin/menubutton.css"?> >+<?xml-stylesheet href="chrome://global/skin/menulist.css"?> >+<?xml-stylesheet href="chrome://global/skin/radio.css"?> >+<?xml-stylesheet href="chrome://global/skin/scrollbars.css"?> >+<?xml-stylesheet href="chrome://global/skin/splitter.css"?> >+<?xml-stylesheet href="chrome://global/skin/tabcontrol.css"?> >+<?xml-stylesheet href="chrome://global/skin/tasksOverlay.css"?> >+<?xml-stylesheet href="chrome://global/skin/textfield.css"?> >+<?xml-stylesheet href="chrome://global/skin/toolbar.css"?> >+<?xml-stylesheet href="chrome://global/skin/tree.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/AccountManager.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/fieldMapImport.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/folderPane.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/importDialog.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/mailheader.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/messenger.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/msgHdrViewOverlay.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/pref-mailnews.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/subscribe.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/threadPane.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/wizard.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/addressbook/addressbook.css"?> >+<?xml-stylesheet href="chrome://messenger/skin/messengercompose/messengercompose.css"?> >+<?xml-stylesheet href="chrome://navigator/skin/navigator.css"?> >+<?xml-stylesheet href="chrome://navigator/skin/NavSecurityOverlay.css"?> >+ >+<window orient="vertical" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <label value="All skin css files are now loaded."/> >+ >+</window> >+ >+ >diff --git a/suite/extensions/inspector/resources/content/toolboxOverlay.xul b/suite/extensions/inspector/resources/content/toolboxOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/toolboxOverlay.xul >@@ -0,0 +1,68 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+]> >+ >+<overlay id="ovToolbox" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <popupset id="ppsGlobalPopupset"/> >+ >+ <menubar id="mbrInspectorMain"> >+ >+ <menu id="mnFile" label="&mnFile.label;" accesskey="&mnFile.accesskey;"> >+ <menupopup id="menu_FilePopup"/> >+ </menu> >+ >+ <menu id="mnEdit" label="&mnEdit.label;" accesskey="&mnEdit.accesskey;"> >+ <menupopup id="mppEdit"/> >+ </menu> >+ >+ <menu id="mnView" label="&mnView.label;" accesskey="&mnView.accesskey;"> >+ <menupopup id="mppView"/> >+ </menu> >+ >+ <menu id="tasksMenu"/> <!-- SeaMonkey --> >+ <menu id="windowMenu"/> <!-- Firefox-mac, SeaMonkey --> >+ <menupopup id="menu_ToolsPopup"/> <!-- Mac magic --> >+ <menu id="menu_Help"/> <!-- SeaMonkey --> >+ <menu id="helpMenu"/> <!-- Firefox --> >+ >+ </menubar> >+ >+ <toolbar id="tbInspectorPrimary" class="chromeclass-toolbar"> >+ >+ <hbox id="bxURLBar" flex="1"> >+ <toolbarbutton id="btnSelecting" type="checkbox" >+ observes="cmd:selectByClick" >+ tooltiptext="&btnSelecting.tooltip;"/> >+ >+ <toolbarbutton id="btnFind" observes="cmd:find" >+ tooltiptext="&btnFind.tooltip;"/> >+ >+ <hbox id="bxURLBarContainer" flex="1"> >+ <hbox align="center" flex="1"> >+ <!-- request both autocomplete implementations for compatibility --> >+ <textbox id="tfURLBar" type="autocomplete" flex="1" >+ searchSessions="history" timeout="50" maxrows="6" class="padded" >+ placeholder="&cmdEnterLocation.label;" >+ autocompletesearch="history file" observes="cmdGotoURL"> >+ <image id="imgURLBarIcon" class="bookmark-item"/> >+ </textbox> >+ </hbox> >+ >+ </hbox> >+ >+ <toolbarbutton label="&btnInspect.label;" >+ accesskey="&btnInspect.accesskey;" >+ observes="cmdGotoURL"/> >+ </hbox> >+ >+ </toolbar> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/utils.js b/suite/extensions/inspector/resources/content/utils.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/utils.js >@@ -0,0 +1,194 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* Inspector Utils ------------------------------------------------------------ >+* Common functions and constants used across the app. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/jsutil/rdf/RDFU.js >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kInspectorNSURI = "http://www.mozilla.org/inspector#"; >+const kXULNSURI = "http://www.mozilla.org/keymaster/gatekeeper/" + >+ "there.is.only.xul"; >+const kHTMLNSURI = "http://www.w3.org/1999/xhtml"; >+const kCharTable = { >+ '&': "&", >+ '<': "<", >+ '>': ">", >+ '"': """ >+}; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var gEntityConverter; >+ >+var InsUtil = { >+ /*************************************************************************** >+ * Convenience function for calling nsIChromeRegistry::convertChromeURL >+ ***************************************************************************/ >+ convertChromeURL: function IU_ConvertChromeURL(aURL) >+ { >+ var uri = >+ XPCU.getService("@mozilla.org/network/io-service;1", "nsIIOService") >+ .newURI(aURL, null, null); >+ var reg = XPCU.getService("@mozilla.org/chrome/chrome-registry;1", >+ "nsIChromeRegistry"); >+ >+ return reg.convertChromeURL(uri); >+ }, >+ >+ /*************************************************************************** >+ * Convenience function for getting a literal value from >+ * nsIRDFDataSource::GetTarget >+ * @param aDS >+ * nsISupports >+ * @param aId >+ * string >+ * @param aPropName >+ * string >+ ***************************************************************************/ >+ getDSProperty: function IU_GetDSProperty(aDS, aId, aPropName) >+ { >+ var ruleRes = gRDF.GetResource(aId); >+ var ds = XPCU.QI(aDS, "nsIRDFDataSource"); // just to be sure >+ var propRes = ds.GetTarget(ruleRes, >+ gRDF.GetResource(kInspectorNSURI + aPropName), >+ true); >+ propRes = XPCU.QI(propRes, "nsIRDFLiteral"); >+ >+ return propRes.Value; >+ }, >+ >+ /*************************************************************************** >+ * Convenience function for persisting an element's persisted attributes. >+ ***************************************************************************/ >+ persistAll: function IU_PersistAll(aId) >+ { >+ var el = document.getElementById(aId); >+ if (el) { >+ var attrs = el.getAttribute("persist").split(" "); >+ for (var i = 0; i < attrs.length; ++i) { >+ document.persist(aId, attrs[i]); >+ } >+ } >+ }, >+ >+ /*************************************************************************** >+ * Convenience function for escaping HTML strings. >+ ***************************************************************************/ >+ unicodeToEntity: function IU_UnicodeToEntity(text) >+ { >+ const entityVersion = Components.interfaces.nsIEntityConverter.entityW3C; >+ >+ function charTableLookup(letter) >+ { >+ return kCharTable[letter]; >+ } >+ >+ function convertEntity(letter) >+ { >+ try { >+ return gEntityConverter.ConvertToEntity(letter, entityVersion); >+ } >+ catch (ex) { >+ return letter; >+ } >+ } >+ >+ if (!gEntityConverter) { >+ try { >+ gEntityConverter = >+ XPCU.createInstance("@mozilla.org/intl/entityconverter;1", >+ "nsIEntityConverter"); >+ } >+ catch (ex) { } >+ } >+ >+ // replace chars in our charTable >+ text = text.replace(/[<>&"]/g, charTableLookup); >+ >+ // replace chars > 0x7f via nsIEntityConverter >+ text = text.replace(/[^\0-\u007f]/g, convertEntity); >+ >+ return text; >+ }, >+ >+ /** >+ * Determine which from a list of indexes is nearest to the given index. >+ * @param aIndex >+ * The index to search for. >+ * @param aIndexList >+ * A sorted list of indexes to be searched. >+ * @return The index in the list closest to aIndex. This will be aIndex >+ * itself if it appears in the list, or -1 if the list is empty. >+ * @note >+ */ >+ getNearestIndex: function IU_GetNearestIndex(aIndex, aIndexList) >+ { >+ // Four easy cases: >+ // - empty list >+ // - single element list >+ // - given index comes before the first element >+ // - given index comes after the last element >+ if (aIndexList.length == 0) { >+ return -1; >+ } >+ var first = aIndexList[0]; >+ if (aIndexList.length == 1 || aIndex <= first) { >+ return first; >+ } >+ var high = aIndexList.length - 1; >+ var last = aIndexList[high]; >+ if (aIndex >= last) { >+ return last; >+ } >+ >+ var mid, low = 0; >+ while (low <= high) { >+ mid = low + Math.floor((high - low) / 2); >+ let current = aIndexList[mid]; >+ if (aIndex > current) { >+ low = mid + 1; >+ } >+ else if (aIndex < current) { >+ high = mid - 1; >+ } >+ else { >+ return aIndex; >+ } >+ } >+ >+ // By handling the four easy cases above, we eliminated the possibility >+ // that low or high will be out of bounds at this point. If aIndex had >+ // been present, it would have been sandwiched between these two values: >+ var previous = aIndexList[high]; >+ var next = aIndexList[low]; >+ >+ if ((aIndex - previous) < (next - aIndex)) { >+ return previous; >+ } >+ // Even if previous and next are equidistant to aIndex's position, we'll >+ // go with the one that's greater. >+ return next; >+ } >+}; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Debugging Utilities >+ >+// dump text to the Error Console >+function debug(aText) >+{ >+ // XX comment out to reduce noise >+ var cs = >+ XPCU.getService("@mozilla.org/consoleservice;1", "nsIConsoleService"); >+ cs.logStringMessage(aText); >+} >diff --git a/suite/extensions/inspector/resources/content/venkmanOverlay.xul b/suite/extensions/inspector/resources/content/venkmanOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/venkmanOverlay.xul >@@ -0,0 +1,38 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<overlay id="ovVenkman" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+<script type="application/javascript" src="chrome://inspector/content/hooks.js"/> >+ >+<script type="application/javascript"><![CDATA[ >+ >+window.addEventListener("load", InspectorVenkmanOnLoad, false); >+ >+function InspectorVenkmanOnLoad() >+{ >+ console._commands.add("inspect", "onInputInspect", "<object>", "Inspect somethin', yo."); >+} >+ >+console.onInputInspect = function (e) >+{ >+ var v = evalInTargetScope (e.inputData); >+ >+ if (!(v instanceof jsdIValue) || v.jsType != jsdIValue.TYPE_OBJECT) >+ { >+ var str = (v instanceof jsdIValue) ? formatValue(v) : String(v) >+ display (getMsg(MSN_ERR_INVALID_PARAM, [MSG_VAL_EXPR, str]), >+ MT_ERROR); >+ return false; >+ } >+ >+ inspectObject(v); >+} >+ >+]]></script> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleEvent/accessibleEvent.js b/suite/extensions/inspector/resources/content/viewers/accessibleEvent/accessibleEvent.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleEvent/accessibleEvent.js >@@ -0,0 +1,255 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kAccessibleRetrievalCID = "@mozilla.org/accessibleRetrieval;1"; >+ >+const nsIAccessibleRetrieval = Components.interfaces.nsIAccessibleRetrieval; >+ >+const nsIAccessibleEvent = Components.interfaces.nsIAccessibleEvent; >+const nsIAccessibleStateChangeEvent = >+ Components.interfaces.nsIAccessibleStateChangeEvent; >+const nsIAccessibleTextChangeEvent = >+ Components.interfaces.nsIAccessibleTextChangeEvent; >+const nsIAccessibleCaretMoveEvent = >+ Components.interfaces.nsIAccessibleCaretMoveEvent; >+ >+const nsIDOMNode = Components.interfaces.nsIDOMNode; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Initialization/Destruction >+ >+window.addEventListener("load", AccessibleEventViewer_initialize, false); >+ >+function AccessibleEventViewer_initialize() >+{ >+ viewer = new AccessibleEventViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// class AccessibleEventViewer >+function AccessibleEventViewer() >+{ >+ this.mURL = window.location; >+ this.mObsMan = new ObserverManager(this); >+ this.mAccService = XPCU.getService(kAccessibleRetrievalCID, >+ nsIAccessibleRetrieval); >+} >+ >+AccessibleEventViewer.prototype = >+{ >+ mSubject: null, >+ mPane: null, >+ mAccEventSubject: null, >+ mAccService: null, >+ >+ get uid() { return "accessibleEvent"; }, >+ get pane() { return this.mPane; }, >+ >+ get subject() { return this.mSubject; }, >+ set subject(aObject) >+ { >+ this.mSubject = aObject; >+ this.updateView(); >+ this.mObsMan.dispatchEvent("subjectChange", { subject: aObject }); >+ }, >+ >+ initialize: function initialize(aPane) >+ { >+ this.mPane = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ isCommandEnabled: function isCommandEnabled(aCommand) >+ { >+ return false; >+ }, >+ >+ getCommand: function getCommand(aCommand) >+ { >+ return null; >+ }, >+ >+ destroy: function destroy() {}, >+ >+ // event dispatching >+ >+ addObserver: function addObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ removeObserver: function removeObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ // private >+ updateView: function updateView() >+ { >+ this.clearView(); >+ >+ if (!this.pane.params) { >+ return; >+ } >+ >+ this.mAccEventSubject = this.pane.params.accessibleEvent; >+ if (!this.mAccEventSubject) >+ return; >+ >+ XPCU.QI(this.mAccEventSubject, nsIAccessibleEvent); >+ >+ // Update accessible event properties. >+ var shownPropsId = ""; >+ if (this.mAccEventSubject instanceof nsIAccessibleStateChangeEvent) >+ shownPropsId = "stateChangeEvent"; >+ else if (this.mAccEventSubject instanceof nsIAccessibleTextChangeEvent) >+ shownPropsId = "textChangeEvent"; >+ else if (this.mAccEventSubject instanceof nsIAccessibleCaretMoveEvent) >+ shownPropsId = "caretMoveEvent"; >+ >+ var props = document.getElementsByAttribute("prop", "*"); >+ for (var i = 0; i < props.length; i++) { >+ var propElm = props[i]; >+ var isActive = !propElm.hasAttribute("class") || >+ (propElm.getAttribute("class") == shownPropsId); >+ >+ if (isActive) { >+ var prop = propElm.getAttribute("prop"); >+ propElm.textContent = this[prop]; >+ propElm.parentNode.removeAttribute("hidden"); >+ } else { >+ propElm.parentNode.setAttribute("hidden", "true"); >+ } >+ } >+ >+ // Update handler output. >+ var outputElm = document.getElementById("handlerOutput"); >+ var outputList = this.pane.params.accessibleEventHandlerOutput; >+ if (outputList) { >+ while (outputElm.firstChild) { >+ outputElm.removeChild(outputElm.lastChild); >+ } >+ >+ for (let i = 0; i < outputList.length; i++) { >+ var output = outputList[i]; >+ >+ // Generate a tree. >+ if (typeof output == "object" && "cols" in output && "view" in output) { >+ var tree = document.createElement("tree"); >+ tree.setAttribute("flex", "1"); >+ tree.setAttribute("treelines", "true"); >+ >+ var treecols = document.createElement("treecols"); >+ for (let col in output.cols) { >+ var treecol = document.createElement("treecol"); >+ treecol.setAttribute("id", col); >+ treecol.setAttribute("label", output.cols[col].name); >+ treecol.setAttribute("flex", output.cols[col].flex); >+ if (output.cols[col].isPrimary) { >+ treecol.setAttribute("primary", "true"); >+ } >+ treecol.setAttribute("persist", "width,hidden,ordinal"); >+ treecols.appendChild(treecol); >+ >+ var splitter = document.createElement("splitter"); >+ splitter.setAttribute("class", "tree-splitter"); >+ treecols.appendChild(splitter); >+ } >+ tree.appendChild(treecols); >+ >+ var treechildren = document.createElement("treechildren"); >+ tree.appendChild(treechildren); >+ outputElm.appendChild(tree); >+ tree.treeBoxObject.view = output.view; >+ >+ } >+ else { >+ // Output text. >+ var node = document.createElement("description"); >+ node.textContent = output; >+ outputElm.appendChild(node); >+ } >+ } >+ >+ outputElm.parentNode.removeAttribute("hidden"); >+ } >+ else { >+ outputElm.parentNode.setAttribute("hidden", "true"); >+ } >+ }, >+ >+ clearView: function clearView() >+ { >+ var containers = document.getElementsByAttribute("prop", "*"); >+ for (var i = 0; i < containers.length; ++i) >+ containers[i].textContent = ""; >+ }, >+ >+ get isFromUserInput() >+ { >+ return this.mAccEventSubject.isFromUserInput; >+ }, >+ >+ get state() >+ { >+ var state = 0, extraState = 0; >+ var isExtraState = typeof this.mAccEventSubject.isExtraState == "function" ? >+ this.mAccEventSubject.isExtraState() : this.mAccEventSubject.isExtraState; >+ if (isExtraState) { >+ extraState = this.mAccEventSubject.state; >+ } >+ else { >+ state = this.mAccEventSubject.state; >+ } >+ >+ var states = this.mAccService.getStringStates(state, extraState); >+ >+ var list = []; >+ for (var i = 0; i < states.length; i++) >+ list.push(states.item(i)); >+ return list.join(); >+ }, >+ >+ get isEnabled() >+ { >+ return typeof this.mAccEventSubject.isEnabled == "function" ? >+ this.mAccEventSubject.isEnabled() : this.mAccEventSubject.isEnabled; >+ }, >+ >+ get startOffset() >+ { >+ return this.mAccEventSubject.start; >+ }, >+ >+ get length() >+ { >+ return this.mAccEventSubject.length; >+ }, >+ >+ get isInserted() >+ { >+ return typeof this.mAccEventSubject.isInserted == "function" ? >+ this.mAccEventSubject.isInserted() : this.mAccEventSubject.isInserted; >+ }, >+ >+ get modifiedText() >+ { >+ return this.mAccEventSubject.modifiedText; >+ }, >+ >+ get caretOffset() >+ { >+ return this.mAccEventSubject.caretOffset; >+ } >+}; >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleEvent/accessibleEvent.xul b/suite/extensions/inspector/resources/content/viewers/accessibleEvent/accessibleEvent.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleEvent/accessibleEvent.xul >@@ -0,0 +1,70 @@ >+<?xml version="1.0"?> >+ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/accessibleEvent.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet >+ href="chrome://inspector/skin/viewers/accessibleEvent/accessibleEvent.css"?> >+ >+<page id="winAccessibleEvent" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/accessibleEvent/accessibleEvent.js"/> >+ >+ <grid> >+ <columns> >+ <column/> >+ <column flex="1"/> >+ </columns> >+ <rows> >+ <row> >+ <description>&descIsFromUserInput.label;</description> >+ <description prop="isFromUserInput"/> >+ </row> >+ <row> >+ <description>&descState.label;</description> >+ <description prop="state" class="stateChangeEvent"/> >+ </row> >+ <row> >+ <description>&descIsEnabled.label;</description> >+ <description prop="isEnabled" class="stateChangeEvent"/> >+ </row> >+ <row> >+ <description>&descStartOffset.label;</description> >+ <description prop="startOffset" class="textChangeEvent"/> >+ </row> >+ <row> >+ <description>&descLength.label;</description> >+ <description prop="length" class="textChangeEvent"/> >+ </row> >+ <row> >+ <description>&descIsInserted.label;</description> >+ <description prop="isInserted" class="textChangeEvent"/> >+ </row> >+ <row> >+ <description>&descModifiedText.label;</description> >+ <description prop="modifiedText" class="textChangeEvent"/> >+ </row> >+ <row> >+ <description>&descCaretOffset.label;</description> >+ <description prop="caretOffset" class="caretMoveEvent"/> >+ </row> >+ </rows> >+ </grid> >+ <vbox flex="1"> >+ <description>&descrHandlerOutput.label;</description> >+ <vbox id="handlerOutput" flex="1"/> >+ </vbox> >+</page> >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleEvents/accessibleEvents.js b/suite/extensions/inspector/resources/content/viewers/accessibleEvents/accessibleEvents.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleEvents/accessibleEvents.js >@@ -0,0 +1,1200 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* AccessibleEventsViewer -------------------------------------------- >+* The viewer for the accessible events occured on a document accessible. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+****************************************************************/ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+var gBundle; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kObserverServiceCID = "@mozilla.org/observer-service;1"; >+const kAccessibleRetrievalCID = "@mozilla.org/accessibleRetrieval;1"; >+ >+const Ci = Components.interfaces; >+const nsIObserverService = Ci.nsIObserverService; >+const nsIAccessibleRetrieval = Ci.nsIAccessibleRetrieval; >+const nsIAccessibleEvent = Ci.nsIAccessibleEvent; >+const nsIAccessible = Ci.nsIAccessible; >+const nsIPropertyElement = Ci.nsIPropertyElement; >+ >+const gAccInterfaces = >+[ >+ Ci.nsIAccessible, >+ Ci.nsIAccessibleDocument, >+ Ci.nsIAccessibleEditableText, >+ Ci.nsIAccessibleHyperLink, >+ Ci.nsIAccessibleHyperText, >+ Ci.nsIAccessibleImage, >+ Ci.nsIAccessibleSelectable, >+ Ci.nsIAccessibleTable, >+ Ci.nsIAccessibleTableCell, >+ Ci.nsIAccessibleText, >+ Ci.nsIAccessibleValue >+]; >+ >+if ("nsIAccessNode" in Ci) >+ gAccInterfaces.push(Ci.nsIAccessNode); >+ >+/** >+ * QI nsIAccessNode interface if any, used for compatibility with Gecko versions >+ * prior to Gecko13. >+ */ >+function QIAccessNode(aAccessible) >+{ >+ return "nsIAccessNode" in Ci ? >+ XPCU.QI(aAccessible, Ci.nsIAccessNode) : aAccessible; >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Initialization >+ >+window.addEventListener("load", AccessibleEventsViewer_initialize, false); >+ >+function AccessibleEventsViewer_initialize() >+{ >+ gBundle = document.getElementById("accessiblePropsBundle"); >+ >+ viewer = new AccessibleEventsViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// class AccessibleEventsViewer >+ >+function AccessibleEventsViewer() >+{ >+ this.mURL = window.location; >+ this.mObsMan = new ObserverManager(this); >+ >+ this.mTree = document.getElementById("olAccessibleEvents"); >+ this.mOlBox = this.mTree.treeBoxObject; >+ >+ this.mWatchTree = document.getElementById("watchEventList"); >+ this.mWatchBox = this.mWatchTree.treeBoxObject; >+} >+ >+AccessibleEventsViewer.prototype = >+{ >+ // initialization >+ >+ mSubject: null, >+ mPane: null, >+ mView: null, >+ >+ // interface inIViewer >+ >+ get uid() { return "accessibleEvents"; }, >+ get pane() { return this.mPane; }, >+ get selection() { return this.mSelection; }, >+ >+ get subject() { return this.mSubject; }, >+ set subject(aObject) >+ { >+ this.mWatchView = new WatchAccessibleEventsListView(); >+ >+ if (this.mView) { >+ this.mView.destroy(); >+ } >+ this.mView = new AccessibleEventsView(aObject, this.mWatchView); >+ >+ this.mOlBox.view = this.mView; >+ this.mWatchBox.view = this.mWatchView; >+ >+ this.mObsMan.dispatchEvent("subjectChange", { subject: aObject }); >+ }, >+ >+ initialize: function initialize(aPane) >+ { >+ this.mPane = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function destroy() >+ { >+ this.mView.destroy(); >+ this.mOlBox.view = null; >+ this.mWatchBox.view = null; >+ }, >+ >+ isCommandEnabled: function isCommandEnabled(aCommand) >+ { >+ return false; >+ }, >+ >+ getCommand: function getCommand(aCommand) >+ { >+ return null; >+ }, >+ >+ // event dispatching >+ >+ addObserver: function addObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ removeObserver: function removeObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ // utils >+ >+ onItemSelected: function onItemSelected() >+ { >+ var idx = this.mTree.currentIndex; >+ var object = this.mView.getObject(idx); >+ >+ // Set subject for right panel view. >+ this.mSelection = object.accessnode; >+ >+ // Set parameters for right panel view. >+ if (this.pane.panelset.panelCount > 1) { >+ this.pane.panelset.getPanel(1).params = { >+ accessibleEvent: object.event, >+ accessibleEventHandlerOutput: object.eventHandlerOutput >+ }; >+ } >+ >+ this.mObsMan.dispatchEvent("selectionChange", >+ { selection: this.mSelection } ); >+ }, >+ >+ onWatchViewItemSelected: function onWatchViewItemSelected() >+ { >+ this.mWatchView.updateHandlerEditor(); >+ this.mWatchView.updateHandlerState(); >+ }, >+ >+ onWatchViewHandlerStateChanged: >+ function onWatchViewHandlerStateChanged(aState) >+ { >+ this.mWatchView.updateHandlerState(aState); >+ }, >+ >+ onWatchViewKeyPressed: function onWatchViewKeyPressed(aEvent) >+ { >+ // SPACE key was pressed. Toggle the row's Watched column tick. >+ if (aEvent.charCode == KeyEvent.DOM_VK_SPACE) >+ this.mWatchView.toggleEventWatched(); >+ }, >+ >+ /** >+ * Clear the list of handled events. >+ */ >+ clearEventsList: function clearEventsList() >+ { >+ this.mView.clear(); >+ }, >+ >+ /** >+ * Start or stop to watch all events. >+ * >+ * @param aDoWatch [in] indicates whether to start or stop events watching. >+ */ >+ watchAllEvents: function watchAllEvents(aDoWatch) >+ { >+ this.mWatchView.watchAllEvents(aDoWatch); >+ }, >+ >+ /** >+ * Shows context help for event handler editor. >+ */ >+ showWatchViewHandlerHelp: function showWatchViewHandlerHelp() >+ { >+ openDialog("chrome://inspector/content/viewers/accessibleEvents/handlerHelpDialog.xul", >+ "_blank", "chrome,modal,centerscreen"); >+ }, >+ >+ /** >+ * Open/hide handler editor. >+ */ >+ toggleHandlerEditor: function toggleHandlerEditor(aSplitter) >+ { >+ var state = aSplitter.getAttribute("state"); >+ if (state == "collapsed") { >+ aSplitter.setAttribute("state", "open"); >+ } >+ else { >+ aSplitter.setAttribute("state", "collapsed"); >+ } >+ } >+}; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// AccessibleEventsView >+ >+function AccessibleEventsView(aObject, aWatchView) >+{ >+ this.mWatchView = aWatchView; >+ this.mEvents = []; >+ this.mRowCount = 0; >+ >+ this.mAccService = XPCU.getService(kAccessibleRetrievalCID, >+ nsIAccessibleRetrieval); >+ >+ this.mAccessible = aObject instanceof nsIAccessible ? >+ aObject : this.mAccService.getAccessibleFor(aObject); >+ >+ this.canSkipTreeTraversal = false; >+ this.mDOMIRootDocumentAccessible = null; >+ var acc = QIAccessNode(this.mAccService.getAccessibleFor(document)); >+ if ("rootDocument" in acc) { >+ this.mDOMIRootDocumentAccessible = acc.rootDocument; >+ this.mApplicationAccessible = this.mDOMIRootDocumentAccessible.parent; >+ >+ // We can skip accessible tree traversal for perf on Gecko 2.0 if the >+ // inspected accessible is application accessible. >+ this.canSkipTreeTraversal = >+ (this.mAccessible == this.mApplicationAccessible); >+ } >+ else { >+ // Gecko 1.9.2 compatibility. >+ while (acc.parent) { >+ this.mDOMIRootDocumentAccessible = acc; >+ acc = acc.parent; >+ } >+ this.mApplicationAccessible = acc; >+ } >+ >+ this.mObserverService = XPCU.getService(kObserverServiceCID, >+ nsIObserverService); >+ >+ this.mObserverService.addObserver(this, "accessible-event", false); >+} >+ >+AccessibleEventsView.prototype = new inBaseTreeView(); >+ >+/** >+ * Global variables used to store event object and user's event handler output >+ * from helper functions. >+ */ >+var gEvent = null; >+var gEventHandlerOutput = [ ]; >+ >+AccessibleEventsView.prototype.observe = >+function observe(aSubject, aTopic, aData) >+{ >+ var event = XPCU.QI(aSubject, nsIAccessibleEvent); >+ var accessible = event.accessible; >+ if (!accessible) >+ return; >+ >+ var accessnode = QIAccessNode(accessible); >+ >+ // Ignore events on this DOM Inspector to avoid a mess (Gecko 2.0). >+ if (accessnode.rootDocument && >+ accessnode.rootDocument == this.mDOMIRootDocumentAccessible) { >+ return; >+ } >+ >+ // Ignore events having target not in subtree of currently inspected >+ // document accessible. >+ if (!this.canSkipTreeTraversal) { >+ var parentDocAccessible = accessible.document; >+ while (true) { >+ // The target accessible is inspected document accessible or its child. >+ if (parentDocAccessible == this.mAccessible) { >+ break; >+ } >+ >+ // Ignore events on this DOM inspector to avoid a mess. >+ if (parentDocAccessible == this.mDOMIRootDocumentAccessible) { >+ return; >+ } >+ >+ // Ignore events that aren't in subtree of inspected accessible. >+ if (!parentDocAccessible.parent || !parentDocAccessible.parent.document) { >+ return; >+ } >+ >+ parentDocAccessible = parentDocAccessible.parent.document; >+ } >+ } >+ >+ // Ignore unwatched events. >+ var type = event.eventType; >+ if (!this.mWatchView.isEventWatched(type)) >+ return; >+ >+ // Execute user handlers. >+ gEvent = event; >+ gEventHandlerOutput = [ ]; >+ var expr = this.mWatchView.getHandlerExpr(type); >+ if (expr) { >+ for (let idx = 0; idx < gAccInterfaces.length; idx++) { >+ // Accessibility interfaces implicit query. >+ accessible instanceof gAccInterfaces[idx]; >+ } >+ >+ try { >+ var f = Function("event", "target", expr); >+ f(event, accessible); >+ } >+ catch (ex) { >+ output(ex); >+ } >+ } >+ >+ // Put event into list. >+ var date = new Date(); >+ var node = accessnode.DOMNode; >+ var role = "", name = ""; >+ try { >+ // may fail prior Gecko 2.0 >+ role = this.mAccService.getStringRole(accessible.role); >+ name = accessible.name; >+ } catch(e) { >+ } >+ >+ var eventObj = { >+ event: event, >+ eventHandlerOutput: gEventHandlerOutput, >+ accessnode: accessnode, >+ node: node, >+ id: node.id || "", >+ nodename: node ? node.nodeName : "", >+ name: name, >+ role: role, >+ type: this.mAccService.getStringEventType(type), >+ time: date.toLocaleTimeString() >+ }; >+ >+ this.mEvents.unshift(eventObj); >+ ++this.mRowCount; >+ this.mTree.rowCountChanged(0, 1); >+} >+ >+AccessibleEventsView.prototype.destroy = >+function destroy() >+{ >+ this.mObserverService.removeObserver(this, "accessible-event"); >+} >+ >+AccessibleEventsView.prototype.clear = >+function clear() >+{ >+ var count = this.mRowCount; >+ this.mRowCount = 0; >+ this.mEvents = []; >+ this.mTree.rowCountChanged(0, -count); >+} >+ >+/** >+ * Return object to be used as a subject for the right panel. It could be either >+ * DOM node or accessible object depending on whether accessible has a DOM node. >+ * Also the returned object has properties that can used by accessibleEvent >+ * view to represent information about accessible event and output from user >+ * defined accessible event handlers. >+ */ >+AccessibleEventsView.prototype.getObject = >+function getObject(aRow) >+{ >+ return aRow < 0 ? null : this.mEvents[aRow]; >+} >+ >+AccessibleEventsView.prototype.getCellText = >+function getCellText(aRow, aCol) >+{ >+ if (aCol.id == "olcEventType") >+ return this.mEvents[aRow].type; >+ if (aCol.id == "olcEventTime") >+ return this.mEvents[aRow].time; >+ if (aCol.id == "olcEventTargetNodeName") >+ return this.mEvents[aRow].nodename; >+ if (aCol.id == "olcEventTargetNodeID") >+ return this.mEvents[aRow].id; >+ if (aCol.id == "olcEventTargetRole") >+ return this.mEvents[aRow].role; >+ if (aCol.id == "olcEventTargetName") >+ return this.mEvents[aRow].name; >+ return ""; >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// WatchAccessibleEventsListView >+ >+const kIgnoredEvents = -1; >+const kMutationEvents = 0; >+const kChangeEvents = 1; >+const kNotificationEvents = 2; >+const kSelectionEvents = 3; >+const kMenuEvents = 4; >+const kDocumentEvents = 5; >+const kTextEvents = 6; >+const kTableEvents = 7; >+const kWindowEvents = 8; >+const kHyperLinkEvents = 9; >+const kHyperTextEvents = 10; >+ >+function WatchAccessibleEventsListView() >+{ >+ // nsITreeView >+ this.__proto__ = new inBaseTreeView(); >+ >+ this.__defineGetter__( >+ "rowCount", >+ function watchview_getRowCount() >+ { >+ var rowCount = 0; >+ >+ for (var idx = 0; idx < this.mChildren.length; idx++) { >+ rowCount++; >+ >+ if (this.mChildren[idx].open) >+ rowCount += this.mChildren[idx].children.length; >+ } >+ >+ return rowCount; >+ } >+ ); >+ >+ this.getCellText = function watchview_getCellText(aRowIndex, aCol) >+ { >+ if (aCol.id == "welEventType") { >+ var data = this.getData(aRowIndex); >+ return data.text; >+ } >+ >+ return "??"; >+ }; >+ >+ this.getCellValue = function watchview_getCellValue(aRowIndex, aCol) >+ { >+ if (aCol.id == "welIsWatched") { >+ var data = this.getData(aRowIndex); >+ return data.value; >+ } >+ else if (aCol.id == "welIsHandlerEnabled") { >+ var data = this.getData(aRowIndex); >+ return data.isHandlerEnabled; >+ } >+ >+ return false; >+ }; >+ >+ this.getParentIndex = function watchview_getParentIndex(aRowIndex) >+ { >+ var info = this.getInfo(aRowIndex); >+ return info.parentIndex; >+ }; >+ >+ this.hasNextSibling = function(aRowIndex, aAfterIndex) >+ { >+ var info = this.getInfo(aRowIndex); >+ var siblings = info.parentData.children; >+ return siblings[siblings.length - 1] != info.data; >+ }; >+ >+ this.getLevel = function watchview_getLevel(aRowIndex) >+ { >+ var info = this.getInfo(aRowIndex); >+ return info.level; >+ }; >+ >+ this.isContainer = function watchview_isContainer(aRowIndex) >+ { >+ var info = this.getInfo(aRowIndex); >+ return info.level == 0; >+ }; >+ >+ this.isContainerOpen = function watchview_isContainerOpen(aRowIndex) >+ { >+ var data = this.getData(aRowIndex); >+ return data.open; >+ }; >+ >+ this.isContainerEmpty = function watchview_isContainerEmpty(aRowIndex) >+ { >+ return false; >+ }; >+ >+ this.toggleOpenState = function watchview_toogleOpenState(aRowIndex) >+ { >+ var data = this.getData(aRowIndex); >+ >+ data.open = !data.open; >+ var rowCount = data.children.length; >+ >+ if (data.open) >+ this.mTree.rowCountChanged(aRowIndex + 1, rowCount); >+ else >+ this.mTree.rowCountChanged(aRowIndex + 1, -rowCount); >+ >+ this.mTree.invalidateRow(aRowIndex); >+ }; >+ >+ this.isEditable = function watchview_isEditable(aRowIndex, aCol) >+ { >+ if (aCol.id == "welIsWatched" || >+ (aCol.id == "welIsHandlerEnabled" && !this.isContainer(aRowIndex))) { >+ return true; >+ } >+ return false; >+ }; >+ >+ this.setCellValue = function watchview_setCellValue(aRowIndex, aCol, aValue) >+ { >+ if (aCol.id == "welIsWatched") { >+ var newValue = aValue == "true"; >+ >+ var info = this.getInfo(aRowIndex); >+ var data = info.data; >+ >+ data.value = newValue; >+ >+ if (this.isContainer(aRowIndex)) { >+ var children = data.children; >+ for (var idx = 0; idx < children.length; idx++) >+ children[idx].value = newValue; >+ >+ this.mTree.invalidateColumnRange(aRowIndex, aRowIndex + children.length, >+ aCol); >+ return; >+ } >+ >+ this.mTree.invalidateCell(aRowIndex, aCol); >+ >+ var parentData = info.parentData; >+ if (parentData.value && !newValue) { >+ parentData.value = false; >+ this.mTree.invalidateCell(info.parentIndex, aCol); >+ } >+ } >+ else if (aCol.id == "welIsHandlerEnabled") { >+ var newValue = aValue == "true"; >+ this.updateHandlerState(newValue, aRowIndex); >+ } >+ }; >+ >+ ////////////////////////////////////////////////////////////////////////////// >+ ///// Public >+ >+ /** >+ * Return true if the given event type is watched. >+ */ >+ this.isEventWatched = function watchview_isEventWatched(aType) >+ { >+ return this.mReverseData[aType].value; >+ }; >+ >+ /** >+ * Start or stop to watch all events. >+ */ >+ this.watchAllEvents = function watchview_watchAllEvents(aAll) >+ { >+ for (var idx = 0; idx < this.mChildren.length; idx++) { >+ var data = this.mChildren[idx]; >+ data.value = aAll; >+ for (var jdx = 0; jdx < data.children.length; jdx++) { >+ var subdata = data.children[jdx]; >+ subdata.value = aAll; >+ } >+ } >+ >+ this.mTree.invalidate(); >+ }; >+ >+ this.getHandlerExpr = function watchview_getHandlerExpr(aType) >+ { >+ var data = this.mReverseData[aType]; >+ if (data.isHandlerEnabled) { >+ return data.handlerSource; >+ } >+ >+ return ""; >+ } >+ >+ this.toggleEventWatched = function watchview_toggleEventWatched() >+ { >+ var idx = this.selection.currentIndex; >+ var colWatched = this.mTree.columns.welIsWatched; >+ var newValue = !this.getCellValue(idx, colWatched); >+ >+ // setCellValue() needs the new value to be passed as a string. >+ this.setCellValue(idx, colWatched, newValue.toString()); >+ } >+ >+ /** >+ * Updates state and value of handler source editor. >+ */ >+ this.updateHandlerEditor = function watchview_updateHandlerEditor() >+ { >+ var idx = this.selection.currentIndex; >+ >+ if (idx == -1 || this.isContainer(idx)) { >+ this.mHandlerState.hidden = true; >+ this.mHandlerEditor.disabled = true; >+ this.mHandlerEditor.value = ""; >+ this.mHandlerEditorLabel.hidden = false; >+ return; >+ } >+ >+ this.mHandlerState.hidden = false; >+ this.mHandlerEditorLabel.hidden = true; >+ this.mHandlerEditor.disabled = false; >+ >+ var data = this.getData(idx); >+ >+ var label = gBundle.getFormattedString("handlerEditorLabel", [data.text]); >+ this.mHandlerState.label = label; >+ this.mHandlerEditor.value = data.handlerSource; >+ } >+ >+ /** >+ * Updates state of handler (enabled or disabled) and UI displaying the state. >+ * @param aValue [optional] >+ * New value of handler state column at the given row index, if >+ * undefined then data wasn't changed, needs to update UI >+ * @param aRowIdx [optional] >+ * The given row index, if missed then current row index is used >+ */ >+ this.updateHandlerState = >+ function watchview_updateHandlerState(aValue, aRowIdx) >+ { >+ var updateData = aValue != undefined; >+ var updateCheckbox = !updateData || aRowIdx == this.selection.currentIndex; >+ >+ var rowIdx = aRowIdx == undefined ? this.selection.currentIndex : aRowIdx; >+ >+ var data = this.getData(rowIdx); >+ >+ if (updateData) { >+ data.isHandlerEnabled = aValue; >+ var col = this.mTree.columns.getNamedColumn("welIsHandlerEnabled"); >+ this.mTree.invalidateCell(rowIdx, col); >+ } >+ >+ if (updateCheckbox) { >+ this.mHandlerState.checked = data.isHandlerEnabled; >+ } >+ } >+ >+ ////////////////////////////////////////////////////////////////////////////// >+ ///// Private >+ >+ /** >+ * Return the data of the tree item at the given row index. >+ */ >+ this.getData = function watchview_getData(aRowIndex) >+ { >+ return this.getInfo(aRowIndex).data; >+ }; >+ >+ /** >+ * Return an object describing the tree item at the given row index: >+ * >+ * { >+ * data: null, // the data of tree item >+ * parentIndex: -1, // index of parent row >+ * parentData: null, // the data of parent tree item >+ * level: 0 // the level of the tree item >+ * }; >+ */ >+ this.getInfo = function watchview_getInfo(aRowIndex) >+ { >+ var info = { >+ data: null, >+ parentIndex: -1, >+ parentData: null, >+ level: 0 >+ }; >+ >+ var groupIdx = 0; >+ var rowIdx = aRowIndex; >+ >+ for (var idx = 0; idx < this.mChildren.length; idx++) { >+ var groupItem = this.mChildren[idx]; >+ >+ if (rowIdx == 0) { >+ info.data = groupItem; >+ return info; >+ } >+ >+ rowIdx--; >+ if (groupItem.open) { >+ var typeItemLen = groupItem.children.length; >+ if (rowIdx < typeItemLen) { >+ info.data = groupItem.children[rowIdx]; >+ info.parentIndex = idx; >+ info.parentData = groupItem; >+ info.level = 1; >+ return info; >+ } >+ >+ rowIdx -= typeItemLen; >+ } >+ } >+ >+ return info; >+ }; >+ >+ /** >+ * Initialize the tree view. >+ */ >+ this.init = function watchview_init() >+ { >+ // Register event groups. >+ for (var idx = 0; idx < gEventGroupMap.length; idx++) >+ this.registerEventGroup(idx, gBundle.getString(gEventGroupMap[idx])); >+ >+ // Register event types. >+ for (var idx = 1; idx < gEventTypesMap.length; idx++) { >+ var props = gEventTypesMap[idx]; >+ this.registerEventType(props.group, idx, props.isIgnored); >+ } >+ >+ // Prepare handler source editor. >+ this.mHandlerState = document.getElementById("welHandlerState"); >+ this.mHandlerEditor = document.getElementById("welHandlerEditor"); >+ this.mHandlerEditorLabel = document.getElementById("welHandlerEditorLabel"); >+ this.mHandlerEditor.addEventListener("input", this, false); >+ this.mHandlerEditor.disabled = true; >+ }; >+ >+ /** >+ * Add tree item for the group. >+ */ >+ this.registerEventGroup = function watchview_registerEventGroup(aType, aName) >+ { >+ var item = { >+ text: aName, >+ value: true, >+ handlerSource: "", >+ open: false, >+ children: [] >+ }; >+ >+ this.mChildren[aType] = item; >+ }; >+ >+ /** >+ * Add tree item for the event type. >+ */ >+ this.registerEventType = function watchview_registerEventType(aGroup, aType, >+ aIgnored) >+ { >+ if (aGroup == kIgnoredEvents) >+ return; >+ >+ var item = { >+ text: this.mAccService.getStringEventType(aType), >+ value: !aIgnored, >+ isHandlerEnabled: false, >+ handlerSource: "" >+ }; >+ >+ var groupItem = this.mChildren[aGroup]; >+ if (aIgnored) >+ groupItem.value = false; >+ >+ var children = groupItem.children; >+ children.push(item); >+ >+ this.mReverseData[aType] = item; >+ }; >+ >+ /** >+ * Listen for 'input' event from handler source textbox to record the handler. >+ */ >+ this.handleEvent = function watchview_handleEvent(aEvent) >+ { >+ if (aEvent.target != this.mHandlerEditor) { >+ return; >+ } >+ >+ switch (aEvent.type) { >+ case "input": >+ var idx = this.selection.currentIndex; >+ >+ // Enable/disable event handler automatically. >+ var isEnabled = this.mHandlerEditor.value != ""; >+ this.updateHandlerState(isEnabled, idx); >+ >+ // Update event handler code. >+ var data = this.getData(idx); >+ data.handlerSource = this.mHandlerEditor.value; >+ break; >+ } >+ } >+ >+ this.mAccService = XPCU.getService(kAccessibleRetrievalCID, >+ nsIAccessibleRetrieval); >+ >+ this.mChildren = []; >+ this.mReverseData = []; >+ this.mHandlers = {}; >+ >+ this.mHandlerState = null; >+ this.mHandlerEditor = null; >+ this.mHandlerEditorLabel = null; >+ >+ this.init(); >+} >+ >+function eventProps(aGroup, aValue) >+{ >+ this.group = aGroup; >+ this.isIgnored = aValue; >+} >+ >+/** >+ * The map of event groups. >+ */ >+var gEventGroupMap = >+[ >+ "mutationEvents", // kMutationEvents >+ "changeEvents", // kChangeEvents, >+ "notificationEvents", // kNotificationEvents, >+ "selectionEvents", // kSelectionEvents >+ "menuEvents", // kMenuEvents, >+ "documentEvents", // kDocumentEvents, >+ "textEvents", // kTextEvents, >+ "tableEvents", // kTableEvents, >+ "windowEvents", // kWindowEvents, >+ "hyperLinkEvents", // kHyperLinkEvents >+ "hyperTextEvents", // kHyperTextEvents >+]; >+ >+/** >+ * The map of event types. Events are listed in the order of nsIAccessibleEvent. >+ */ >+var gEventTypesMap = >+[ >+ new eventProps(kIgnoredEvents), // No event >+ >+ new eventProps(kMutationEvents), // EVENT_SHOW >+ new eventProps(kMutationEvents), // EVENT_HIDE >+ new eventProps(kMutationEvents), // EVENT_REORDER >+ >+ new eventProps(kChangeEvents), // EVENT_ACTIVE_DECENDENT_CHANGED >+ >+ new eventProps(kNotificationEvents), // EVENT_FOCUS >+ >+ new eventProps(kChangeEvents), // EVENT_STATE_CHANGE >+ new eventProps(kChangeEvents), // EVENT_LOCATION_CHANGE >+ new eventProps(kChangeEvents), // EVENT_NAME_CHANGE >+ new eventProps(kChangeEvents), // EVENT_DESCRIPTION_CHANGE >+ new eventProps(kChangeEvents), // EVENT_VALUE_CHANGE >+ new eventProps(kChangeEvents), // EVENT_HELP_CHANGE >+ new eventProps(kChangeEvents), // EVENT_DEFACTION_CHANGE >+ new eventProps(kChangeEvents), // EVENT_ACTION_CHANGE >+ new eventProps(kChangeEvents), // EVENT_ACCELERATOR_CHANGE >+ >+ new eventProps(kSelectionEvents), // EVENT_SELECTION >+ new eventProps(kSelectionEvents), // EVENT_SELECTION_ADD >+ new eventProps(kSelectionEvents), // EVENT_SELECTION_REMOVE >+ new eventProps(kSelectionEvents), // EVENT_SELECTION_WITHIN >+ >+ new eventProps(kNotificationEvents), // EVENT_ALERT >+ new eventProps(kNotificationEvents), // EVENT_FOREGROUND >+ >+ new eventProps(kMenuEvents), // EVENT_MENU_START >+ new eventProps(kMenuEvents), // EVENT_MENU_END >+ new eventProps(kMenuEvents), // EVENT_MENUPOPUP_START >+ new eventProps(kMenuEvents), // EVENT_MENUPOPUP_END >+ >+ new eventProps(kNotificationEvents), // EVENT_CAPTURE_START >+ new eventProps(kNotificationEvents), // EVENT_CAPTURE_END >+ new eventProps(kNotificationEvents), // EVENT_MOVESIZE_START >+ new eventProps(kNotificationEvents), // EVENT_MOVESIZE_END >+ new eventProps(kNotificationEvents), // EVENT_CONTEXTHELP_START >+ new eventProps(kNotificationEvents), // EVENT_CONTEXTHELP_END >+ new eventProps(kNotificationEvents, true), // EVENT_DRAGDROP_START >+ new eventProps(kNotificationEvents, true), // EVENT_DRAGDROP_END >+ new eventProps(kNotificationEvents), // EVENT_DIALOG_START >+ new eventProps(kNotificationEvents), // EVENT_DIALOG_END >+ new eventProps(kNotificationEvents), // EVENT_SCROLLING_START >+ new eventProps(kNotificationEvents), // EVENT_SCROLLING_END >+ new eventProps(kNotificationEvents), // EVENT_MINIMIZE_START >+ new eventProps(kNotificationEvents), // EVENT_MINIMIZE_END >+ >+ new eventProps(kDocumentEvents), // EVENT_DOCUMENT_LOAD_START >+ new eventProps(kDocumentEvents), // EVENT_DOCUMENT_LOAD_COMPLETE >+ new eventProps(kDocumentEvents), // EVENT_DOCUMENT_RELOAD >+ new eventProps(kDocumentEvents), // EVENT_DOCUMENT_LOAD_STOPPED >+ new eventProps(kDocumentEvents), // EVENT_DOCUMENT_ATTRIBUTES_CHANGED >+ new eventProps(kDocumentEvents), // EVENT_DOCUMENT_CONTENT_CHANGED >+ >+ new eventProps(kChangeEvents), // EVENT_PROPERTY_CHANGED >+ >+ new eventProps(kSelectionEvents), // EVENT_SELECTION_CHANGED >+ >+ new eventProps(kChangeEvents), // EVENT_TEXT_ATTRIBUTE_CHANGED >+ >+ new eventProps(kTextEvents), // EVENT_TEXT_CARET_MOVED >+ new eventProps(kTextEvents), // EVENT_TEXT_CHANGED >+ new eventProps(kTextEvents), // EVENT_TEXT_INSERTED >+ new eventProps(kTextEvents), // EVENT_TEXT_REMOVED >+ new eventProps(kTextEvents), // EVENT_TEXT_UPDATED >+ new eventProps(kTextEvents), // EVENT_TEXT_SELECTION_CHANGED >+ >+ new eventProps(kNotificationEvents), // EVENT_VISIBLE_DATA_CHANGED >+ new eventProps(kNotificationEvents), // EVENT_TEXT_COLUMN_CHANGED >+ new eventProps(kNotificationEvents), // EVENT_SECTION_CHANGED >+ >+ new eventProps(kTableEvents), // EVENT_TABLE_CAPTION_CHANGED >+ new eventProps(kTableEvents), // EVENT_TABLE_MODEL_CHANGED >+ new eventProps(kTableEvents), // EVENT_TABLE_SUMMARY_CHANGED >+ new eventProps(kTableEvents), // EVENT_TABLE_ROW_DESCRIPTION_CHANGED >+ new eventProps(kTableEvents), // EVENT_TABLE_ROW_HEADER_CHANGED >+ new eventProps(kTableEvents), // EVENT_TABLE_ROW_INSERT >+ new eventProps(kTableEvents), // EVENT_TABLE_ROW_DELETE >+ new eventProps(kTableEvents), // EVENT_TABLE_ROW_REORDER >+ new eventProps(kTableEvents), // EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED >+ new eventProps(kTableEvents), // EVENT_TABLE_COLUMN_HEADER_CHANGED >+ new eventProps(kTableEvents), // EVENT_TABLE_COLUMN_INSERT >+ new eventProps(kTableEvents), // EVENT_TABLE_COLUMN_DELETE >+ new eventProps(kTableEvents), // EVENT_TABLE_COLUMN_REORDER >+ >+ new eventProps(kWindowEvents), // EVENT_WINDOW_ACTIVATE >+ new eventProps(kWindowEvents), // EVENT_WINDOW_CREATE >+ new eventProps(kWindowEvents), // EVENT_WINDOW_DEACTIVATE >+ new eventProps(kWindowEvents), // EVENT_WINDOW_DESTROY >+ new eventProps(kWindowEvents), // EVENT_WINDOW_MAXIMIZE >+ new eventProps(kWindowEvents), // EVENT_WINDOW_MINIMIZE >+ new eventProps(kWindowEvents), // EVENT_WINDOW_RESIZE >+ new eventProps(kWindowEvents), // EVENT_WINDOW_RESTORE >+ >+ new eventProps(kHyperLinkEvents), // EVENT_HYPERLINK_END_INDEX_CHANGED >+ new eventProps(kHyperLinkEvents), // EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED >+ new eventProps(kHyperLinkEvents), // EVENT_HYPERLINK_SELECTED_LINK_CHANGED >+ >+ new eventProps(kHyperTextEvents), // EVENT_HYPERTEXT_LINK_ACTIVATED >+ new eventProps(kHyperTextEvents), // EVENT_HYPERTEXT_LINK_SELECTED >+ >+ new eventProps(kHyperLinkEvents), // EVENT_HYPERLINK_START_INDEX_CHANGED >+ >+ new eventProps(kHyperTextEvents), // EVENT_HYPERTEXT_CHANGED >+ new eventProps(kHyperTextEvents), // EVENT_HYPERTEXT_NLINKS_CHANGED >+ >+ new eventProps(kChangeEvents), // EVENT_OBJECT_ATTRIBUTE_CHANGED >+ new eventProps(kChangeEvents), // EVENT_PAGE_CHANGED >+ >+ new eventProps(kDocumentEvents) // EVENT_INTERNAL_LOAD >+]; >+ >+//////////////////////////////////////////////////////////////////////////////// >+//// Functions and objects for usage in event handler editor. >+ >+var accRetrieval = XPCU.getService(kAccessibleRetrievalCID, >+ nsIAccessibleRetrieval); >+ >+function output(aValue) >+{ >+ gEventHandlerOutput.push(aValue); >+} >+ >+function outputRole(aAccessible) >+{ >+ output(accRetrieval.getStringRole(aAccessible.role)); >+} >+ >+function outputStates(aAccessible) >+{ >+ var stateObj = {}, extraStateObj = {}; >+ aAccessible.getState(stateObj, extraStateObj); >+ var states = accRetrieval.getStringStates(stateObj.value, >+ extraStateObj.value); >+ >+ var list = []; >+ for (let i = 0; i < states.length; i++) { >+ list.push(states.item(i)); >+ } >+ >+ output(list.join()); >+} >+ >+function outputAttrs(aAccessible) >+{ >+ var str = ""; >+ var attrs = aAccessible.attributes; >+ if (attrs) { >+ var enumerate = attrs.enumerate(); >+ while (enumerate.hasMoreElements()) { >+ var prop = XPCU.QI(enumerate.getNext(), nsIPropertyElement); >+ str += prop.key + ": " + prop.value + "; "; >+ } >+ >+ if (str) >+ output(str); >+ } >+} >+ >+function outputTree(aAccessible, aHighlightList) >+{ >+ var treeObj = { >+ cols: { >+ outputtreeRole: { >+ name: gBundle.getString("role"), >+ flex: 2, >+ isPrimary: true >+ }, >+ outputtreeName: { >+ name: gBundle.getString("name"), >+ flex: 2 >+ }, >+ outputtreeNodename: { >+ name: gBundle.getString("nodeName"), >+ flex: 1 >+ }, >+ outputtreeId:{ >+ name: gBundle.getString("id"), >+ flex: 1 >+ } >+ }, >+ view: new inAccTreeView(aAccessible, aHighlightList) >+ }; >+ >+ output(treeObj); >+} >+ >+function outputDOMAttrs(aAccessible) >+{ >+ var DOMNode = QIAccessNode(aAccessible).DOMNode; >+ var DOMAttributes = DOMNode.attributes; >+ for (let i = 0; i < DOMAttributes.length; i++) { >+ var DOMAttribute = DOMAttributes.item(i); >+ output(DOMAttribute.name + ": " + DOMAttribute.value); >+ } >+} >+ >+//////////////////////////////////////////////////////////////////////////////// >+//// Private functions. >+ >+function inAccTreeView(aAccessible, aHighlightList) >+{ >+ inDataTreeView.call(this); >+ >+ var list = this.generateChildren(aAccessible, aHighlightList); >+ if (list) { >+ this.expandNodes(list); >+ } >+} >+ >+inAccTreeView.prototype = new inDataTreeView(); >+ >+// nsITreeView >+inAccTreeView.prototype.getRowProperties = >+ function inAccTreeView_getRowProperties(aRowIdx, aProperties) >+{ >+ var data = this.getDataAt(aRowIdx); >+ if (data && data.properties) { >+ if (!aProperties) >+ return data.properties.join(" "); >+ >+ for (let i = 0; i < data.properties.length; i++) { >+ var atom = this.createAtom(data.properties[i]); >+ aProperties.AppendElement(atom); >+ } >+ } >+ >+ return ""; >+}; >+ >+inAccTreeView.prototype.getCellProperties = >+ function inAccTreeView_getCellProperties(aRowIdx, aCol, aProperties) >+{ >+ return this.getRowProperties(aRowIdx, aProperties); >+}; >+ >+// Initialization >+inAccTreeView.prototype.generateChildren = >+ function inAccTreeView_generateChildren(aAccessible, aHighlightList, aParent, >+ aIsUnattached) >+{ >+ var data = { >+ properties: [] >+ }; >+ >+ var accessible = QIAccessNode(aAccessible); >+ >+ // Highlight the row for accessible from the list. >+ var isHighlighted = >+ aHighlightList && aHighlightList.indexOf(aAccessible) != -1; >+ if (isHighlighted) { >+ data.properties.push("highlight"); >+ } >+ >+ // Gray out the row for accessible unattached from the tree. >+ if (aIsUnattached) { >+ data.properties.push("grayout"); >+ } >+ >+ // Add cells data. >+ data["outputtreeRole"] = accRetrieval.getStringRole(aAccessible.role); >+ data["outputtreeName"] = aAccessible.name; >+ data["outputtreeNodename"] = accessible.DOMNode.nodeName; >+ data["outputtreeId"] = >+ ("id" in accessible.DOMNode ? accessible.DOMNode.id : ""); >+ >+ var parent = this.appendChild(aParent, data); >+ var nodesToExpand = null; >+ >+ // Insert highlighted row for target of handled hide event if it's specified >+ // in the list (works for Gecko versions higher 13). >+ var containsUnattached = false; >+ var accBeforeUnattached = null; >+ if ("nsIAccessibleHideEvent" in Ci && >+ gEvent instanceof Ci.nsIAccessibleHideEvent && >+ gEvent.targetParent == aAccessible) { >+ containsUnattached = true; >+ try { >+ if (gEvent.targetNextSibling.parent == aAccessible) { >+ accBeforeUnattached = gEvent.targetNextSibling; >+ } >+ } catch (e) { >+ } >+ try { >+ if (!accBeforeUnattached && >+ gEvent.targetPrevSibling.parent == aAccessible) { >+ accBeforeUnattached = gEvent.targetPrevSibling.nextSibling; >+ } >+ } catch (e) { >+ } >+ } >+ >+ // Add children. >+ var childCount = aAccessible.childCount; >+ for (let i = 0; i < childCount; i++) { >+ var child = aAccessible.getChildAt(i); >+ >+ // Add unattached child before current child. >+ if (accBeforeUnattached == child) { >+ var list = >+ this.generateChildren(gEvent.accessible, aHighlightList, parent, true); >+ if (list) { >+ nodesToExpand = list.concat(nodesToExpand || []); >+ } >+ } >+ >+ var list = >+ this.generateChildren(child, aHighlightList, parent); >+ if (list) { >+ nodesToExpand = list.concat(nodesToExpand || []); >+ } >+ } >+ >+ // Put unattached child as last child of the parent, we don't have good guess >+ // about its hierarchy position. >+ if (containsUnattached && !accBeforeUnattached) { >+ var list = >+ this.generateChildren(gEvent.accessible, aHighlightList, parent, true); >+ if (list) { >+ nodesToExpand = list.concat(nodesToExpand || []); >+ } >+ } >+ >+ return nodesToExpand ? nodesToExpand.concat(parent) : isHighlighted && []; >+}; >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleEvents/accessibleEvents.xul b/suite/extensions/inspector/resources/content/viewers/accessibleEvents/accessibleEvents.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleEvents/accessibleEvents.xul >@@ -0,0 +1,150 @@ >+<?xml version="1.0"?> >+ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/accessibleEvents.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin/viewers/accessibleEvents/accessibleEvents.css"?> >+ >+<page id="winAccessibleEvents" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inBaseTreeView.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inDataTreeView.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/accessibleEvents/accessibleEvents.js"/> >+ >+ <stringbundle id="accessiblePropsBundle" >+ src="chrome://inspector/locale/viewers/accessibleEvents.properties"/> >+ >+ <tabbox flex="1"> >+ <tabs> >+ <tab label="&eventList.label;"/> >+ <tab label="&watchedEvents.label;"/> >+ </tabs> >+ <tabpanels flex="1"> >+ >+ <!-- Event list --> >+ <vbox> >+ <label value="&handledEvents.label;" control="olAccessibleEvents"/> >+ <tree id="olAccessibleEvents" >+ flex="1" >+ onselect="viewer.onItemSelected()"> >+ >+ <treecols> >+ <treecol id="olcEventType" >+ label="&eventType.label;" >+ primary="true" >+ persist="width,hidden,ordinal" >+ flex="2"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcEventTargetRole" >+ label="&eventTargetRole.label;" >+ hidden="true" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcEventTargetName" >+ label="&eventTargetName.label;" >+ hidden="true" >+ persist="width,hidden,ordinal" >+ flex="2"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcEventTargetNodeName" >+ label="&eventTargetNodeName.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcEventTargetNodeID" >+ label="&eventTargetNodeID.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcEventTime" >+ label="&eventTime.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ </treecols> >+ <treechildren id="olbAccessibleEvents" >+ alternatingbackground="true"/> >+ </tree> >+ <hbox align="end"> >+ <button label="&clearEventList.label;" >+ oncommand="viewer.clearEventsList();"/> >+ </hbox> >+ </vbox> >+ >+ <!-- Watched events --> >+ <vbox> >+ <vbox flex="1"> >+ <label value="&chooseEventsToWatch.label;" control="watchEventList"/> >+ <tree id="watchEventList" >+ flex="1" >+ editable="true" >+ onselect="viewer.onWatchViewItemSelected();" >+ onkeypress="viewer.onWatchViewKeyPressed(event);" >+ seltype="single"> >+ <treecols> >+ <treecol id="welEventType" >+ label="&eventType.label;" >+ primary="true" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="welIsWatched" >+ label="&isWatched.label;" >+ type="checkbox" >+ editable="true" >+ persist="width,hidden,ordinal"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="welIsHandlerEnabled" >+ label="&isHandlerEnabled.label;" >+ type="checkbox" >+ editable="true" >+ persist="width,hidden,ordinal" >+ hidden="true"/> >+ </treecols> >+ <treechildren/> >+ </tree> >+ </vbox> >+ <hbox align="right"> >+ <button label="&watchAll.label;" >+ oncommand="viewer.watchAllEvents(true);"/> >+ <button label="&watchNone.label;" >+ oncommand="viewer.watchAllEvents(false);"/> >+ </hbox> >+ <splitter state="collapsed" collapse="after" persist="state" >+ resizebefore="farthest" id="welSplitter"> >+ <toolbarbutton label="&editHandler.label;" id="welGrippyButton" >+ oncommand="viewer.toggleHandlerEditor(this.parentNode);"/> >+ </splitter> >+ <vbox> >+ <hbox align="baseline"> >+ <label control="welHandlerEditor" >+ id="welHandlerEditorLabel" >+ flex="1">&handlerEditorNoEvent.label;</label> >+ <checkbox id="welHandlerState" hidden="true" >+ oncommand="viewer.onWatchViewHandlerStateChanged(this.checked);" >+ flex="1"/> >+ <toolbarbutton label="&contextHelp.label;" >+ oncommand="viewer.showWatchViewHandlerHelp();"/> >+ </hbox> >+ <textbox id="welHandlerEditor" multiline="true" rows="8" flex="1"/> >+ </vbox> >+ </vbox> >+ </tabpanels> >+ </tabbox> >+ >+</page> >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleEvents/handlerHelpDialog.xul b/suite/extensions/inspector/resources/content/viewers/accessibleEvents/handlerHelpDialog.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleEvents/handlerHelpDialog.xul >@@ -0,0 +1,69 @@ >+<?xml version="1.0"?> >+ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE dialog [ >+ <!ENTITY % dtd1 SYSTEM >+ "chrome://inspector/locale/viewers/accessibleEventsHandlerHelpDialog.dtd"> >+ %dtd1; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin"?> >+ >+<dialog id="winEvalJS" >+ title="&helpDialog.title;" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >+ buttons="accept" >+ style="width: 30em;"> >+ >+ <description>&general.descr;</description> >+ <description>&helpers.descr;</description> >+ <grid> >+ <columns> >+ <column/> >+ <column flex="1"/> >+ </columns> >+ <rows> >+ <row> >+ <description value="event"/> >+ <description>&event.descr;</description> >+ </row> >+ <row> >+ <description value="target"/> >+ <description>&target.descr;</description> >+ </row> >+ <row> >+ <description value="accRetrieval"/> >+ <description>&accRetrieval.descr;</description> >+ </row> >+ <row> >+ <description value="output(string)"/> >+ <description>&output.descr;</description> >+ </row> >+ <row> >+ <description value="outputAttrs(accessible)"/> >+ <description>&outputAttrs.descr;</description> >+ </row> >+ <row> >+ <description value="outputRole(accessible)"/> >+ <description>&outputRole.descr;</description> >+ </row> >+ <row> >+ <description value="outputStates(accessible)"/> >+ <description>&outputStates.descr;</description> >+ </row> >+ <row> >+ <description value="outputTree(accessible, hightlightList)"/> >+ <description>&outputTree.descr;</description> >+ </row> >+ <row> >+ <description value="outputDOMAttrs(accessible)"/> >+ <description>&outputDOMAttrs.descr;</description> >+ </row> >+ </rows> >+ </grid> >+ >+</dialog> >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleObject/accessibleObject.js b/suite/extensions/inspector/resources/content/viewers/accessibleObject/accessibleObject.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleObject/accessibleObject.js >@@ -0,0 +1,59 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* AccessibleObjectViewer -------------------------------------------- >+* The viewer for the accessible object. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/events/ObserverManager.js >+****************************************************************/ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+var bundle; >+var accService; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kAccessibleRetrievalCID = "@mozilla.org/accessibleRetrieval;1"; >+ >+const nsIAccessibleRetrieval = Components.interfaces.nsIAccessibleRetrieval; >+const nsIAccessible = Components.interfaces.nsIAccessible; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Initialization/Destruction >+ >+window.addEventListener("load", AccessibleObjectViewer_initialize, false); >+ >+function AccessibleObjectViewer_initialize() >+{ >+ bundle = document.getElementById("inspector-bundle"); >+ accService = XPCU.getService(kAccessibleRetrievalCID, nsIAccessibleRetrieval); >+ >+ viewer = new JSObjectViewer(); >+ >+ viewer.__defineGetter__( >+ "uid", >+ function uidGetter() >+ { >+ return "accessibleObject"; >+ } >+ ); >+ >+ viewer.__defineSetter__( >+ "subject", >+ function subjectSetter(aObject) >+ { >+ var accObject = aObject instanceof nsIAccessible ? >+ aObject : accService.getAccessibleFor(aObject); >+ this.setSubject(accObject); >+ } >+ ); >+ >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleObject/accessibleObject.xul b/suite/extensions/inspector/resources/content/viewers/accessibleObject/accessibleObject.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleObject/accessibleObject.xul >@@ -0,0 +1,22 @@ >+<?xml version="1.0"?> >+ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<?xul-overlay href="chrome://inspector/content/viewers/jsObject/jsObjectViewer.xul"?> >+ >+<page id="winAccessibleObject" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/accessibleObject/accessibleObject.js"/> >+ >+ <stringbundle id="inspector-bundle"/> >+ <commandset id="cmdsJSObjectViewer"/> >+ >+ <popupset> >+ <menupopup id="popupContext"/> >+ </popupset> >+ <tree id="treeJSObject" treelines="true" class="plain"/> >+</page> >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleProps/accessiblePropViewerMgr.js b/suite/extensions/inspector/resources/content/viewers/accessibleProps/accessiblePropViewerMgr.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleProps/accessiblePropViewerMgr.js >@@ -0,0 +1,619 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+//////////////////////////////////////////////////////////////////////////////// >+//// Global >+ >+const nsIAccessibleText = Components.interfaces.nsIAccessibleText; >+const nsIAccessibleTableCell = Components.interfaces.nsIAccessibleTableCell; >+ >+ >+//////////////////////////////////////////////////////////////////////////////// >+//// Accessible property viewer manager >+ >+/** >+ * Used to show additional properties of the accessible in tabbox. >+ * >+ * @param aPaneElm >+ * A pane element where the view is hosted. >+ */ >+function accessiblePropViewerMgr(aPaneElm) >+{ >+ /** >+ * Updates all property views for the given accessible. >+ * >+ * @param aAccessible >+ * The given accessible >+ */ >+ this.updateViews = function accessiblePropViewerMgr_updateViews(aAccessible) >+ { >+ for (var id in this.viewers) >+ { >+ var tab = document.getElementById("tab_" + id); >+ tab.hidden = !this.viewers[id].update(aAccessible); >+ } >+ >+ this.tabboxElm.selectedIndex = this.getCurrentViewerIdx(); >+ } >+ >+ /** >+ * Clear the data of property views. >+ */ >+ this.clearViews = function accessiblePropViewerMgr_clearViews() >+ { >+ for (var id in this.viewers) >+ { >+ this.viewers[id].clear(); >+ >+ var tab = document.getElementById("tab_" + id); >+ tab.hidden = true; >+ } >+ } >+ >+ this.isCommandEnabled = >+ function accessiblePropViewerMgr_isCommandEnabled(aCommand) >+ { >+ var tab = this.tabboxElm.selectedTab; >+ var viewerid = tab.id.replace("tab_", ""); >+ var viewer = this.viewers[viewerid]; >+ if ("isCommandEnabled" in viewer) { >+ return viewer.isCommandEnabled(aCommand); >+ } >+ return false; >+ }, >+ >+ /** >+ * Process 'inspectInNewView' command for selected property view. >+ */ >+ this.inspectInNewView = function accessiblePropViewerMgr_inspectInNewView() >+ { >+ var tab = this.tabboxElm.selectedTab; >+ var viewerid = tab.id.replace("tab_", ""); >+ var viewer = this.viewers[viewerid]; >+ if ("inspectInNewView" in viewer) >+ viewer.inspectInNewView(); >+ } >+ >+ this.doCommand = function accessiblePropViewerMgr_doCommand(aCommandId) >+ { >+ var tab = this.tabboxElm.selectedTab; >+ var viewerid = tab.id.replace("tab_", ""); >+ var viewer = this.viewers[viewerid]; >+ if ("doCommand" in viewer) >+ viewer.doCommand(aCommandId); >+ } >+ >+ ////////////////////////////////////////////////////////////////////////////// >+ //// private >+ >+ this.handleEvent = function accessiblePropViewerMgr_handleEvent(aEvent) >+ { >+ this.setCurrentViewerIdx(this.tabboxElm.selectedIndex); >+ viewer.pane.panelset.updateAllCommands(); >+ } >+ >+ this.setCurrentViewerIdx = function accessiblePropViewerMgr_setCurrentViewerIdx(aIdx) >+ { >+ this.paneElm.accessiblePropsCurrentViewerIdx = aIdx; >+ } >+ >+ this.getCurrentViewerIdx = function accessiblePropViewerMgr_getCurrentViewerIdx() >+ { >+ var idx = this.paneElm.accessiblePropsCurrentViewerIdx; >+ >+ idx = idx ? idx : 0; >+ var tab = this.tabsElm.children[idx]; >+ if (tab.hidden) >+ return 0; >+ >+ return idx; >+ } >+ >+ this.viewers = { >+ "attributes": new attributesViewer(), >+ "actions": new actionViewer(), >+ "textattrs": new textAttrsViewer(), >+ "tablecell": new tableCellViewer() >+ }; >+ >+ this.tabboxElm = document.getElementById("tabviewers"); >+ this.tabsElm = this.tabboxElm.tabs; >+ this.tabsElm.addEventListener("select", this, false); >+ this.paneElm = aPaneElm; >+} >+ >+ >+//////////////////////////////////////////////////////////////////////////////// >+//// Accessible property viewers >+ >+/** >+ * Object attribute property view. Used to display accessible attributes. >+ */ >+function attributesViewer() >+{ >+ /** >+ * Updates the view for the given accessible. >+ * >+ * @param aAccessible >+ * The given accessible >+ */ >+ this.update = function attributesViewer_update(aAccessible) >+ { >+ var attrs = aAccessible.attributes; >+ if (attrs) { >+ var enumerate = attrs.enumerate(); >+ while (enumerate.hasMoreElements()) >+ this.addAttribute(enumerate.getNext()); >+ } >+ >+ return true; >+ } >+ >+ /** >+ * Clear the view's data. >+ */ >+ this.clear = function attributesViewer_clear() >+ { >+ var trAttrBody = document.getElementById("trAttrBody"); >+ while (trAttrBody.hasChildNodes()) >+ trAttrBody.removeChild(trAttrBody.lastChild) >+ } >+ >+ ////////////////////////////////////////////////////////////////////////////// >+ //// private >+ >+ this.addAttribute = function attrbiutesViewer_addAttribute(aElement) >+ { >+ var prop = XPCU.QI(aElement, nsIPropertyElement); >+ >+ var trAttrBody = document.getElementById("trAttrBody"); >+ >+ var ti = document.createElement("treeitem"); >+ var tr = document.createElement("treerow"); >+ >+ var tc = document.createElement("treecell"); >+ tc.setAttribute("label", prop.key); >+ tr.appendChild(tc); >+ >+ tc = document.createElement("treecell"); >+ tc.setAttribute("label", prop.value); >+ tr.appendChild(tc); >+ >+ ti.appendChild(tr); >+ >+ trAttrBody.appendChild(ti); >+ } >+} >+ >+ >+/** >+ * Action property view. >+ */ >+function actionViewer() >+{ >+ /** >+ * Updates the view for the given accessible. >+ * >+ * @param aAccessible >+ * The given accessible >+ */ >+ this.update = function actionViewer_update(aAccessible) >+ { >+ this.mAccessible = aAccessible; >+ >+ // nsIAccessible::numActions was renamed to actionCount in Mozilla 15. >+ let count = ("actionCount" in aAccessible) ? >+ aAccessible.actionCount : aAccessible.numActions; >+ if (!count) >+ return false; >+ >+ this.updateActionItem(this.mDefaultActionItem, 0); >+ >+ for (let idx = 1; idx < count; idx++) { >+ let actionItem = this.mDefaultActionItem.cloneNode(true); >+ this.updateActionItem(actionItem, idx); >+ this.mActionItemContainer.appendChild(actionItem); >+ } >+ >+ return true; >+ } >+ >+ /** >+ * Clear the view's data. >+ */ >+ this.clear = function actionViewer_clear() >+ { >+ this.mAccessible = null; >+ >+ let cntr = this.mActionItemContainer; >+ while (cntr.firstChild != cntr.lastChild) >+ cntr.removeChild(cntr.lastChild); >+ >+ this.setValues(this.mDefaultActionItem, "", "", "", "", ""); >+ } >+ >+ /** >+ * Performes a command. >+ */ >+ this.doCommand = function actionViewer_doCommand(aCommandId) >+ { >+ this.mAccessible.doAction(aCommandId); >+ } >+ >+ ////////////////////////////////////////////////////////////////////////////// >+ //// private >+ >+ this.updateActionItem = function actionViewer_updateActionItem(aActionItem, >+ aActionIndex) >+ { >+ var index = (aActionIndex + 1) + "."; >+ var name = this.mAccessible.getActionName(aActionIndex); >+ var description = this.mAccessible.getActionDescription(aActionIndex); >+ >+ var keysStr = ""; >+ try { >+ let keys = this.mAccessible.getKeyBindings(aActionIndex); >+ for (let idx = 0; idx < keys.length; idx++) >+ keysStr += keys.item(idx); >+ >+ } catch (e) { } >+ >+ let jsCommand = "viewer.doCommand(" + aActionIndex + ");"; >+ >+ this.setValues(aActionItem, index, name, description, keysStr, jsCommand); >+ } >+ >+ this.setValues = function actionViewer_setValues(aActionItem, >+ aIndex, aName, aDescription, >+ aKeyBindings, aJSCommand) >+ { >+ let elm = aActionItem.getElementsByAttribute("prop", "actionIndex")[0]; >+ elm.textContent = aIndex; >+ >+ elm = aActionItem.getElementsByAttribute("prop", "actionName")[0]; >+ elm.textContent = aName; >+ >+ elm = aActionItem.getElementsByAttribute("prop", "actionDescription")[0]; >+ elm.textContent = aDescription; >+ >+ elm = aActionItem.getElementsByAttribute("prop", "actionKeyBindings")[0]; >+ elm.textContent = aKeyBindings; >+ >+ elm = aActionItem.getElementsByAttribute("prop", "invokeAction")[0]; >+ if (aJSCommand) >+ elm.setAttribute("oncommand", aJSCommand) >+ else >+ elm.removeAttribute("oncommand"); >+ } >+ >+ this.mAccessible = null; >+ >+ this.mActionItemContainer = document.getElementById("actionItemContainer"); >+ this.mDefaultActionItem = document.getElementById("actionItem"); >+} >+ >+ >+/** >+ * Text attributes property view. >+ */ >+function textAttrsViewer() >+{ >+ /** >+ * Updates the view for the given accessible. >+ */ >+ this.update = function textAttrsViewer_update(aAccessible) >+ { >+ if (!(aAccessible instanceof nsIAccessibleText)) >+ return false; >+ >+ // Default text attributes. >+ this.addAttributes(aAccessible.defaultTextAttributes, >+ "textAttrs:default:treeBody"); >+ >+ // Generate text ranges. >+ var length = aAccessible.characterCount; >+ var offset = 0; >+ while (offset < length) { >+ const kHTMLNS = "http://www.w3.org/1999/xhtml"; >+ var textRangeElm = document.createElementNS(kHTMLNS, "span"); >+ textRangeElm.setAttribute("class", "textAttrsTextRange"); >+ >+ var endOffset = { }; >+ >+ textRangeElm.textAttrs = >+ aAccessible.getTextAttributes(false, offset, { }, endOffset); >+ textRangeElm.startOffset = offset; >+ textRangeElm.endOffset = endOffset.value; >+ >+ var text = aAccessible.getText(offset, endOffset.value); >+ textRangeElm.textContent = text; >+ >+ textRangeElm.addEventListener("focus", this, false); >+ textRangeElm.setAttribute("tabindex", 0); >+ >+ document.getElementById("textAttrs:content").appendChild(textRangeElm); >+ >+ offset = endOffset.value; >+ } >+ >+ return true; >+ } >+ >+ /** >+ * Clear the view's data. >+ */ >+ this.clear = function textAttrsViewer_clear() >+ { >+ var content = document.getElementById("textAttrs:content"); >+ while (content.hasChildNodes()) { >+ content.removeChild(content.lastChild); >+ } >+ >+ var treeBody = document.getElementById("textAttrs:default:treeBody"); >+ while (treeBody.hasChildNodes()) { >+ treeBody.removeChild(treeBody.lastChild); >+ } >+ >+ document.getElementById("textAttrs:startOffset").textContent = ""; >+ document.getElementById("textAttrs:endOffset").textContent = ""; >+ >+ treeBody = document.getElementById("textAttrs:treeBody"); >+ while (treeBody.hasChildNodes()) { >+ treeBody.removeChild(treeBody.lastChild); >+ } >+ } >+ >+ this.handleEvent = function textAttrsViewer_handleEvent(aEvent) >+ { >+ var treeBody = document.getElementById("textAttrs:treeBody"); >+ while (treeBody.hasChildNodes()) { >+ treeBody.removeChild(treeBody.lastChild); >+ } >+ >+ if (this.mLastElm) { >+ this.mLastElm.removeAttribute("selected"); >+ } >+ >+ this.mLastElm = aEvent.target; >+ this.mLastElm.setAttribute("selected", "true"); >+ >+ document.getElementById("textAttrs:startOffset").textContent = >+ this.mLastElm.startOffset; >+ document.getElementById("textAttrs:endOffset").textContent = >+ this.mLastElm.endOffset; >+ >+ this.addAttributes(this.mLastElm.textAttrs, "textAttrs:treeBody"); >+ } >+ >+ this.addAttributes = function textAttrsViewer_addAttributes(aTextAttrs, >+ aTreeID) >+ { >+ var enumerate = aTextAttrs.enumerate(); >+ while (enumerate.hasMoreElements()) { >+ var prop = XPCU.QI(enumerate.getNext(), nsIPropertyElement); >+ >+ var treeBody = document.getElementById(aTreeID); >+ >+ var ti = document.createElement("treeitem"); >+ var tr = document.createElement("treerow"); >+ >+ var tc = document.createElement("treecell"); >+ tc.setAttribute("label", prop.key); >+ tr.appendChild(tc); >+ >+ tc = document.createElement("treecell"); >+ tc.setAttribute("label", prop.value); >+ tr.appendChild(tc); >+ >+ ti.appendChild(tr); >+ >+ treeBody.appendChild(ti); >+ } >+ } >+ >+ this.mLastElm = null; >+} >+ >+ >+/** >+ * Table cell property view. Used to display table cell properties of the >+ * accessible implementing nsIAccessibleTableCell. >+ */ >+function tableCellViewer() >+{ >+ /** >+ * Updates the view for the given accessible. >+ * >+ * @param aAccessible >+ * The given accessible >+ */ >+ this.update = function tableCellViewer_update(aAccessible) >+ { >+ if (!(aAccessible instanceof nsIAccessibleTableCell)) >+ return false; >+ >+ // columnIndex >+ var columnIndex = aAccessible.columnIndex; >+ this.columnIndexElm.textContent = columnIndex; >+ >+ // rowIndex >+ var rowIndex = aAccessible.rowIndex; >+ this.rowIndexElm.textContent = rowIndex; >+ >+ // columnExtent >+ var columnExtent = aAccessible.columnExtent; >+ this.columnExtentElm.textContent = columnExtent; >+ >+ // rowIndex >+ var rowExtent = aAccessible.rowExtent; >+ this.rowExtentElm.textContent = rowExtent; >+ >+ // isSelected >+ var isSelected = aAccessible.isSelected(); >+ this.isSelectedElm.textContent = isSelected; >+ >+ // table, columnHeaderCells, rowHeaderCells >+ this.addRelated(aAccessible); >+ >+ return true; >+ } >+ >+ /** >+ * Clear the view's data. >+ */ >+ this.clear = function tableCellViewer_clear() >+ { >+ this.mTreeBox.view = null; >+ >+ this.columnIndexElm.textContent = ""; >+ this.rowIndexElm.textContent = ""; >+ this.columnExtentElm.textContent = ""; >+ this.rowExtentElm.textContent = ""; >+ this.isSelectedElm.textContent = ""; >+ } >+ >+ this.isCommandEnabled = function tableCellViewer_isCommandEnable(aCommand) >+ { >+ if (aCommand == "cmdEditInspectInNewWindow") { >+ return this.mTreeView.selection.count == 1; >+ } >+ return false; >+ }, >+ >+ /** >+ * Prepares 'inspectInNewView' command. >+ */ >+ this.inspectInNewView = function tableCellViewer_inspectInNewView() >+ { >+ if (this.mTreeView.selection.count == 1) { >+ var minAndMax = {}; >+ this.mTreeView.selection.getRangeAt(0, minAndMax, minAndMax); >+ var node = this.mTreeView.getDOMNode(minAndMax.value); >+ if (node) { >+ inspectObject(node); >+ } >+ } >+ } >+ >+ ////////////////////////////////////////////////////////////////////////////// >+ //// private >+ >+ this.addRelated = function tableCellViewer_addRelated(aAccessible) >+ { >+ this.mTreeView = new TableCellTreeView(aAccessible); >+ this.mTreeBox.view = this.mTreeView; >+ } >+ >+ this.mTree = document.getElementById("tableCell:accObjects"); >+ this.mTreeBox = this.mTree.treeBoxObject; >+ >+ this.columnIndexElm = document.getElementById("tableCell:columnIndex"); >+ this.rowIndexElm = document.getElementById("tableCell:rowIndex"); >+ this.columnExtentElm = document.getElementById("tableCell:columnExtent"); >+ this.rowExtentElm = document.getElementById("tableCell:rowExtent"); >+ this.isSelectedElm = document.getElementById("tableCell:isSelected"); >+} >+ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// TableCellTreeView. nsITreeView >+ >+function TableCellTreeView(aTableCell) >+{ >+ this.tableCell = aTableCell; >+ this.mRowCount = this.getRowCount(); >+} >+ >+TableCellTreeView.prototype = new inBaseTreeView(); >+ >+TableCellTreeView.prototype.getRowCount = >+ function TableCellTreeView_rowCount() >+{ >+ this.columnHeaderCells = this.tableCell.columnHeaderCells; >+ this.columnHeaderCellsLen = (this.columnHeaderCells ? >+ this.columnHeaderCells.length : 0); >+ >+ this.rowHeaderCells = this.tableCell.rowHeaderCells; >+ this.rowHeaderCellsLen = (this.rowHeaderCells ? >+ this.rowHeaderCells.length : 0); >+ >+ return 1 + this.columnHeaderCellsLen + this.rowHeaderCellsLen; >+} >+ >+TableCellTreeView.prototype.getCellText = >+ function TableCellTreeView_getCellText(aRow, aCol) >+{ >+ var accessible = this.getAccessible(aRow); >+ if (!accessible) >+ return ""; >+ >+ if (aCol.id == "tableCell:property") { >+ return this.getPropertyName(aRow); >+ >+ } else if (aCol.id == "tableCell:role") { >+ return gAccService.getStringRole(accessible.role); >+ >+ } else if (aCol.id == "tableCell:name") { >+ return accessible.name; >+ >+ } else if (aCol.id == "tableCell:nodeName") { >+ var node = this.getDOMNode(aRow); >+ if (node) >+ return node.nodeName; >+ } >+ >+ return ""; >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// TableCellTreeView. Utils >+ >+/** >+ * Return an accessible for the given row index. >+ * >+ * @param aRow >+ * Row index >+ */ >+TableCellTreeView.prototype.getAccessible = >+ function TableCellTreeView_getAccessible(aRow) >+{ >+ if (aRow == 0) >+ return this.tableCell.table; >+ >+ if (aRow <= this.columnHeaderCellsLen) >+ return this.columnHeaderCells.queryElementAt(aRow - 1, nsIAccessible); >+ >+ return this.rowHeaderCells.queryElementAt(aRow - 1 - this.columnHeaderCellsLen, nsIAccessible); >+} >+ >+/** >+ * Retrun interface attribute name (property) used at the given row index. >+ * >+ * @param aRow >+ * Row index >+ */ >+TableCellTreeView.prototype.getPropertyName = >+ function TableCellTreeView_getPropertyName(aRow) >+{ >+ if (aRow == 0) >+ return "table"; >+ >+ if (aRow <= this.columnHeaderCellsLen) >+ return "column header cell"; >+ >+ return "row header cell"; >+} >+ >+/** >+ * Return DOM node at the given row index. >+ * >+ * @param aRow >+ * Row index >+ */ >+TableCellTreeView.prototype.getDOMNode = >+ function TableCellTreeView_getDOMNode(aRow) >+{ >+ var accessNode = QIAccessNode(this.getAccessible(aRow)); >+ return accessNode && accessNode.DOMNode; >+} >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleProps/accessibleProps.js b/suite/extensions/inspector/resources/content/viewers/accessibleProps/accessibleProps.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleProps/accessibleProps.js >@@ -0,0 +1,241 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* AccessiblePropsViewer ------------------------------------------------------ >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/utils.js >+* chrome://inspector/content/jsutil/events/ObserverManager.js >+* chrome://inspector/content/jsutil/system/PrefUtils.js >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/jsutil/xul/FrameExchange.js >+*****************************************************************************/ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+var gBundle; >+var gAccService = null; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kAccessibleRetrievalCID = "@mozilla.org/accessibleRetrieval;1"; >+ >+const nsIAccessibleRetrieval = Components.interfaces.nsIAccessibleRetrieval; >+const nsIAccessible = Components.interfaces.nsIAccessible; >+ >+const nsIPropertyElement = Components.interfaces.nsIPropertyElement; >+ >+/** >+ * QI nsIAccessNode interface if any, used for compatibility with Gecko versions >+ * prior to Gecko13. >+ */ >+function QIAccessNode(aAccessible) >+{ >+ return "nsIAccessNode" in Components.interfaces ? >+ XPCU.QI(aAccessible, Components.interfaces.nsIAccessNode) : aAccessible; >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Initialization/Destruction >+ >+window.addEventListener("load", AccessiblePropsViewer_initialize, false); >+ >+function AccessiblePropsViewer_initialize() >+{ >+ gBundle = document.getElementById("accessiblePropsBundle"); >+ >+ viewer = new AccessiblePropsViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// class AccessiblePropsViewer >+function AccessiblePropsViewer() >+{ >+ this.mURL = window.location; >+ this.mObsMan = new ObserverManager(this); >+ >+ gAccService = XPCU.getService(kAccessibleRetrievalCID, >+ nsIAccessibleRetrieval); >+} >+ >+AccessiblePropsViewer.prototype = >+{ >+ mSubject: null, >+ mPane: null, >+ mAccSubject: null, >+ mAccService: null, >+ mPropViewerMgr: null, >+ >+ get uid() { return "accessibleProps" }, >+ get pane() { return this.mPane }, >+ >+ get subject() { return this.mSubject }, >+ set subject(aObject) >+ { >+ this.mSubject = aObject; >+ this.updateView(); >+ this.mObsMan.dispatchEvent("subjectChange", { subject: aObject }); >+ }, >+ >+ initialize: function initialize(aPane) >+ { >+ this.mPropViewerMgr = new accessiblePropViewerMgr(aPane); >+ >+ this.mPane = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ isCommandEnabled: function isCommandEnabled(aCommand) >+ { >+ return this.mPropViewerMgr.isCommandEnabled(aCommand); >+ }, >+ >+ getCommand: function getCommand(aCommand) >+ { >+ switch (aCommand) { >+ case "cmdEditInspectInNewWindow": >+ return new cmdEditInspectInNewWindow(this.mPropViewerMgr); >+ } >+ return null; >+ }, >+ >+ destroy: function destroy() {}, >+ >+ ///////////////////////// >+ //// event dispatching >+ >+ addObserver: function addObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ removeObserver: function removeObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ ///////////////////////// >+ //// utils >+ >+ doCommand: function doCommand(aCommandId) >+ { >+ this.mPropViewerMgr.doCommand(aCommandId); >+ }, >+ >+ // private >+ updateView: function updateView() >+ { >+ this.clearView(); >+ >+ this.mAccSubject = this.mSubject instanceof nsIAccessible ? >+ this.mSubject : gAccService.getAccessibleFor(this.mSubject); >+ >+ // accessible properties. >+ var propContainer = document.getElementById("mainPropContainer"); >+ var containers = propContainer.getElementsByAttribute("prop", "*"); >+ >+ for (var i = 0; i < containers.length; ++i) { >+ var value = ""; >+ try { >+ var prop = containers[i].getAttribute("prop"); >+ value = this[prop]; >+ } catch (e) { >+ dump("Accessibility " + prop + " property is not available.\n"); >+ } >+ >+ if (value instanceof Array) >+ containers[i].value = value.join(", "); >+ else >+ containers[i].value = value; >+ } >+ >+ this.mPropViewerMgr.updateViews(this.mAccSubject); >+ }, >+ >+ clearView: function clearView() >+ { >+ var containers = document.getElementsByAttribute("prop", "*"); >+ for (var i = 0; i < containers.length; ++i) >+ containers[i].textContent = ""; >+ >+ this.mPropViewerMgr.clearViews(); >+ }, >+ >+ get role() >+ { >+ // 'finalRole' is replaced by 'role' property in Gecko 1.9.2. >+ var role = "finalRole" in this.mAccSubject ? >+ this.mAccSubject.finalRole : this.mAccSubject.role; >+ return gAccService.getStringRole(role); >+ }, >+ >+ get name() >+ { >+ return this.mAccSubject.name; >+ }, >+ >+ get description() >+ { >+ return this.mAccSubject.description; >+ }, >+ >+ get value() >+ { >+ return this.mAccSubject.value; >+ }, >+ >+ get state() >+ { >+ var stateObj = {value: null}; >+ var extStateObj = {value: null}; >+ >+ // Since Firefox 3.1 nsIAccessible::getFinalState has been renamed to >+ // nsIAccessible::getState. >+ if ("getState" in this.mAccSubject) >+ this.mAccSubject.getState(stateObj, extStateObj); >+ else >+ this.mAccSubject.getFinalState(stateObj, extStateObj); >+ >+ var list = []; >+ >+ var states = gAccService.getStringStates(stateObj.value, >+ extStateObj.value); >+ >+ for (var i = 0; i < states.length; i++) >+ list.push(states.item(i)); >+ return list; >+ }, >+ >+ get bounds() >+ { >+ var x = { value: 0 }; >+ var y = { value: 0 }; >+ var width = { value: 0 }; >+ var height = { value: 0 }; >+ this.mAccSubject.getBounds(x, y, width, height); >+ >+ return gBundle.getFormattedString("accBounds", >+ [x.value, y.value, >+ width.value, height.value]); >+ } >+}; >+ >+function cmdEditInspectInNewWindow(aMgr) >+{ >+ this.mPropViewerMgr = aMgr; >+} >+ >+cmdEditInspectInNewWindow.prototype = new inBaseCommand(); >+ >+cmdEditInspectInNewWindow.prototype.doTransaction = >+ function InspectInNewWindow_DoTransaction() >+{ >+ if (this.mPropViewerMgr) { >+ this.mPropViewerMgr.inspectInNewView(); >+ } >+}; >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleProps/accessibleProps.xul b/suite/extensions/inspector/resources/content/viewers/accessibleProps/accessibleProps.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleProps/accessibleProps.xul >@@ -0,0 +1,226 @@ >+<?xml version="1.0"?> >+ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/accessibleProps.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin/viewers/accessibleProps/accessibleProps.css"?> >+ >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<page id="winAccessibleProps" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inBaseTreeView.js"/> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/accessibleProps/accessibleProps.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/accessibleProps/accessiblePropViewerMgr.js"/> >+ >+ <stringbundle id="accessiblePropsBundle" >+ src="chrome://inspector/locale/viewers/accessibleProps.properties"/> >+ >+ <commandset id="cmdsEditingExtras"/> >+ >+ <popupset> >+ <menupopup id="popupContext"> >+ <menuitem id="mnEditInspectInNewWindow"/> >+ </menupopup> >+ </popupset> >+ >+ <grid id="mainPropContainer"> >+ <columns> >+ <column/> >+ <column flex="1"/> >+ </columns> >+ <rows> >+ <row> >+ <description>&descRole.label;</description> >+ <textbox prop="role" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <description>&descName.label;</description> >+ <textbox prop="name" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <description>&descDescription.label;</description> >+ <textbox prop="description" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <description>&descValue.label;</description> >+ <textbox prop="value" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <description>&descState.label;</description> >+ <textbox prop="state" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <description>&descBounds.label;</description> >+ <textbox prop="bounds" readonly="true" class="plain"/> >+ </row> >+ </rows> >+ </grid> >+ >+ <tabbox id="tabviewers" flex="1"> >+ <tabs> >+ <tab id="tab_attributes" label="&tabAttrs.label;"/> >+ <tab id="tab_actions" label="&tabActions.label;"/> >+ <tab id="tab_textattrs" label="&tabTextAttrs.label;"/> >+ <tab id="tab_tablecell" label="&tabTableCell.label;"/> >+ </tabs> >+ <tabpanels flex="1"> >+ >+ <!-- Object attributes tab panel --> >+ <tree> >+ <treecols> >+ <treecol label="&colAttrName.label;" flex="1"/> >+ <treecol label="&colAttrValue.label;" flex="2"/> >+ </treecols> >+ <treechildren id="trAttrBody"/> >+ </tree> >+ >+ <!-- Action properties tab panel --> >+ <vbox id="actionTabPanel"> >+ <grid> >+ <columns> >+ <column/> >+ <column flex="1"/> >+ </columns> >+ <rows id="actionItemContainer"> >+ <row id="actionItem"> >+ <description prop="actionIndex"/> >+ <vbox> >+ <hbox> >+ <label value="&descName.label;"/> >+ <description prop="actionName"/> >+ </hbox> >+ <hbox> >+ <label value="&descDescription.label;"/> >+ <description prop="actionDescription"/> >+ </hbox> >+ <hbox> >+ <label value="&descKeyBindings.label;"/> >+ <description prop="actionKeyBindings"/> >+ </hbox> >+ <button label="&descInvoke.label;" >+ prop="invokeAction"/> >+ </vbox> >+ </row> >+ </rows> >+ </grid> >+ </vbox> >+ >+ <!-- Text attributes --> >+ <vbox id="textAttrsTabPanel"> >+ <label control="textAttrs:default:tree" >+ value="&descDefaultAttrs.label;"/> >+ <tree flex="1" id="textAttrs:default:tree"> >+ <treecols> >+ <treecol label="&colAttrName.label;" flex="2"/> >+ <splitter class="tree-splitter"/> >+ <treecol label="&colAttrValue.label;" flex="4"/> >+ </treecols> >+ <treechildren id="textAttrs:default:treeBody"/> >+ </tree> >+ >+ <description id="textAttrs:content"/> >+ >+ <hbox> >+ <description>&descStartOffset.label;</description> >+ <description id="textAttrs:startOffset"/> >+ <description>&descEndOffset.label;</description> >+ <description id="textAttrs:endOffset"/> >+ </hbox> >+ >+ <tree flex="1" id="textAttrs:tree"> >+ <treecols> >+ <treecol label="&colAttrName.label;" flex="2"/> >+ <splitter class="tree-splitter"/> >+ <treecol label="&colAttrValue.label;" flex="4"/> >+ </treecols> >+ <treechildren id="textAttrs:treeBody"/> >+ </tree> >+ </vbox> >+ >+ <!-- Table cell properties tab panel --> >+ <vbox> >+ <grid> >+ <columns> >+ <column/> >+ <column flex="1"/> >+ <column/> >+ <column flex="1"/> >+ </columns> >+ <rows> >+ <row> >+ <description>&descColumnIdx.label;</description> >+ <description id="tableCell:columnIndex"/> >+ >+ <description>&descRowIdx.label;</description> >+ <description id="tableCell:rowIndex"/> >+ </row> >+ <row> >+ <description>&descColumnExtent.label;</description> >+ <description id="tableCell:columnExtent"/> >+ >+ <description>&descRowExtent.label;</description> >+ <description id="tableCell:rowExtent"/> >+ </row> >+ <row> >+ <description>&descIsSelected.label;</description> >+ <description id="tableCell:isSelected"/> >+ </row> >+ </rows> >+ </grid> >+ >+ <tree id="tableCell:accObjects" >+ flex="1" >+ context="popupContext" >+ onselect="viewer.pane.panelset.updateAllCommands();"> >+ >+ <treecols> >+ <treecol id="tableCell:property" >+ primary="true" >+ label="&colProp.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="tableCell:role" >+ label="&colRole.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="tableCell:name" >+ label="&colName.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="tableCell:nodeName" >+ label="&colNodeName.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ </treecols> >+ <treechildren/> >+ </tree> >+ </vbox> >+ </tabpanels> >+ </tabbox> >+</page> >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleRelations/accessibleRelations.js b/suite/extensions/inspector/resources/content/viewers/accessibleRelations/accessibleRelations.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleRelations/accessibleRelations.js >@@ -0,0 +1,256 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* AccessibleRelationsViewer -------------------------------------------- >+* The viewer for the accessible relations for the inspected accessible. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+****************************************************************/ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+var gAccService = null; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kAccessibleRetrievalCID = "@mozilla.org/accessibleRetrieval;1"; >+ >+const nsIAccessibleRetrieval = Components.interfaces.nsIAccessibleRetrieval; >+const nsIAccessibleRelation = Components.interfaces.nsIAccessibleRelation; >+const nsIAccessible = Components.interfaces.nsIAccessible; >+ >+/** >+ * Used for compatibility with Gecko versions prior to Gecko13. >+ */ >+const nsIAccessNode = Components.interfaces.nsIAccessNode || nsIAccessible; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Initialization >+ >+window.addEventListener("load", AccessibleRelationsViewer_initialize, false); >+ >+function AccessibleRelationsViewer_initialize() >+{ >+ gAccService = XPCU.getService(kAccessibleRetrievalCID, >+ nsIAccessibleRetrieval); >+ >+ viewer = new AccessibleRelationsViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// class AccessibleRelationsViewer >+ >+function AccessibleRelationsViewer() >+{ >+ this.mURL = window.location; >+ this.mObsMan = new ObserverManager(this); >+ >+ this.mTree = document.getElementById("olAccessibleRelations"); >+ this.mTreeBox = this.mTree.treeBoxObject; >+ >+ this.mTargetsTree = document.getElementById("olAccessibleTargets"); >+ this.mTargetsTreeBox = this.mTargetsTree.treeBoxObject; >+} >+ >+AccessibleRelationsViewer.prototype = >+{ >+ ///////////////////////// >+ //// initialization >+ >+ mSubject: null, >+ mPane: null, >+ mView: null, >+ mTargetsView: null, >+ >+ ///////////////////////// >+ //// interface inIViewer >+ >+ get uid() { return "accessibleRelations"; }, >+ get pane() { return this.mPane; }, >+ get selection() { return this.mSelection; }, >+ >+ get subject() { return this.mSubject; }, >+ set subject(aObject) >+ { >+ this.mView = new AccessibleRelationsView(aObject); >+ this.mTreeBox.view = this.mView; >+ this.mObsMan.dispatchEvent("subjectChange", { subject: aObject }); >+ }, >+ >+ initialize: function initialize(aPane) >+ { >+ this.mPane = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function destroy() >+ { >+ this.mTreeBox.view = null; >+ this.mTargetsTreeBox.view = null; >+ }, >+ >+ isCommandEnabled: function isCommandEnabled(aCommand) >+ { >+ switch (aCommand) { >+ case "cmdEditInspectInNewWindow": >+ return !!this.getSelectedTargetDOMNode(); >+ } >+ return false; >+ }, >+ >+ getCommand: function getCommand(aCommand) >+ { >+ if (aCommand in window) { >+ return new window[aCommand](); >+ } >+ return null; >+ }, >+ >+ ///////////////////////// >+ //// event dispatching >+ >+ addObserver: function addObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ removeObserver: function removeObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ ///////////////////////// >+ //// utils >+ >+ onItemSelected: function onItemSelected() >+ { >+ var idx = this.mTree.currentIndex; >+ var relation = this.mView.getRelationObject(idx); >+ this.mTargetsView = new AccessibleTargetsView(relation); >+ this.mTargetsTreeBox.view = this.mTargetsView; >+ }, >+ >+ getSelectedTargetDOMNode: function getSelectedTargetDOMNode() >+ { >+ return this.mTargetsView.getSelectedDOMNode(); >+ } >+}; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// AccessibleRelationsView >+ >+function AccessibleRelationsView(aObject) >+{ >+ this.mAccessible = aObject instanceof nsIAccessible ? >+ aObject : gAccService.getAccessibleFor(aObject); >+ >+ this.mRelations = this.mAccessible.getRelations(); >+} >+ >+AccessibleRelationsView.prototype = new inBaseTreeView(); >+ >+AccessibleRelationsView.prototype.__defineGetter__("rowCount", >+function rowCount() >+{ >+ return this.mRelations.length; >+}); >+ >+AccessibleRelationsView.prototype.getRelationObject = >+function getRelationObject(aRow) >+{ >+ return this.mRelations.queryElementAt(aRow, nsIAccessibleRelation); >+} >+ >+AccessibleRelationsView.prototype.getCellText = >+function getCellText(aRow, aCol) >+{ >+ if (aCol.id == "olcRelationType") { >+ var relation = this.getRelationObject(aRow); >+ if (relation) >+ return gAccService.getStringRelationType(relation.relationType); >+ } >+ >+ return ""; >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// AccessibleTargetsView >+ >+function AccessibleTargetsView(aRelation) >+{ >+ this.mRelation = aRelation; >+ this.mTargets = this.mRelation.getTargets(); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// AccessibleTargetsView. nsITreeView >+ >+AccessibleTargetsView.prototype = new inBaseTreeView(); >+ >+AccessibleTargetsView.prototype.__defineGetter__("rowCount", >+function rowCount() >+{ >+ return this.mTargets.length; >+}); >+ >+AccessibleTargetsView.prototype.getCellText = >+function getCellText(aRow, aCol) >+{ >+ if (aCol.id == "olcRole") { >+ var accessible = this.getAccessible(aRow); >+ if (accessible) { >+ // 'finalRole' is replaced by 'role' property in Gecko 1.9.2. >+ var role = "finalRole" in accessible ? >+ accessible.finalRole : accessible.role; >+ return gAccService.getStringRole(role); >+ } >+ } else if (aCol.id == "olcNodeName") { >+ var node = this.getDOMNode(aRow); >+ if (node) >+ return node.nodeName; >+ } >+ >+ return ""; >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// AccessibleTargetsView. Utils >+ >+AccessibleTargetsView.prototype.getAccessible = >+function getAccessible(aRow) >+{ >+ return this.mTargets.queryElementAt(aRow, nsIAccessible); >+} >+ >+AccessibleTargetsView.prototype.getDOMNode = >+function getDOMNode(aRow) >+{ >+ var accessNode = this.mTargets.queryElementAt(aRow, nsIAccessNode); >+ return accessNode && accessNode.DOMNode; >+} >+ >+AccessibleTargetsView.prototype.getSelectedDOMNode = >+ function getSelectedDOMNode() >+{ >+ if (this.selection.count == 1) { >+ var rangeMinAndMax = {}; >+ this.selection.getRangeAt(0, rangeMinAndMax, rangeMinAndMax); >+ return this.getDOMNode(rangeMinAndMax.value); >+ } >+ return null; >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+// Transactions >+ >+function cmdEditInspectInNewWindow() { >+ this.mObject = viewer.getSelectedTargetDOMNode(); >+} >+ >+cmdEditInspectInNewWindow.prototype = new cmdEditInspectInNewWindowBase(); >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleRelations/accessibleRelations.xul b/suite/extensions/inspector/resources/content/viewers/accessibleRelations/accessibleRelations.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleRelations/accessibleRelations.xul >@@ -0,0 +1,86 @@ >+<?xml version="1.0"?> >+ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/accessibleRelations.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin/"?> >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<page id="winAccessibleEvents" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inBaseTreeView.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/accessibleRelations/accessibleRelations.js"/> >+ >+ <commandset id="cmdsEditingExtras"/> >+ >+ <popupset> >+ <menupopup id="popupContext"> >+ <menuitem id="mnEditInspectInNewWindow"/> >+ </menupopup> >+ </popupset> >+ >+ <label control="olAccessibleRelations" >+ value="&relations.label;"/> >+ >+ <tree id="olAccessibleRelations" >+ class="plain" >+ flex="1" >+ onselect="viewer.onItemSelected()"> >+ >+ <treecols> >+ <treecol id="olcRelationType" >+ label="&relationType.label;" >+ primary="true" >+ flex="1" >+ persist="width,hidden,ordinal"/> >+ </treecols> >+ <treechildren id="olbAccessibleRelations" >+ alternatingbackground="true"/> >+ </tree> >+ >+ <label control="olAccessibleTargets" >+ value="&relationTargets.label;"/> >+ >+ <tree id="olAccessibleTargets" >+ class="plain" >+ flex="1" >+ context="popupContext" >+ onselect="viewer.pane.panelset.updateAllCommands();"> >+ >+ <treecols> >+ <treecol id="olcRole" >+ primary="true" >+ label="&role.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcNodeName" >+ label="&nodeName.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ </treecols> >+ <treechildren id="olbAccessibleTargets" >+ alternatingbackground="true"/> >+ </tree> >+ >+</page> >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleTree/accessibleTree.js b/suite/extensions/inspector/resources/content/viewers/accessibleTree/accessibleTree.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleTree/accessibleTree.js >@@ -0,0 +1,599 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* AccessibleEventsViewer -------------------------------------------- >+* The viewer for the accessible tree of a document. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/hooks.js >+* chrome://inspector/content/utils.js >+* chrome://inspector/content/jsutil/events/ObserverManager.js >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/jsutil/xul/FrameExchange.js >+****************************************************************/ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kObserverServiceCID = "@mozilla.org/observer-service;1"; >+const kAccessibleRetrievalCID = "@mozilla.org/accessibleRetrieval;1"; >+ >+const nsIObserverService = Components.interfaces.nsIObserverService; >+ >+const nsIAccessibleRetrieval = Components.interfaces.nsIAccessibleRetrieval; >+const nsIAccessibleEvent = Components.interfaces.nsIAccessibleEvent; >+const nsIAccessible = Components.interfaces.nsIAccessible; >+ >+const nsIDOMNode = Components.interfaces.nsIDOMNode; >+ >+/** >+ * QI nsIAccessNode interface if any, used for compatibility with Gecko versions >+ * prior to Gecko13. >+ */ >+function QIAccessNode(aAccessible) >+{ >+ return "nsIAccessNode" in Components.interfaces ? >+ XPCU.QI(aAccessible, Components.interfaces.nsIAccessNode) : aAccessible; >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Initialization >+ >+window.addEventListener("load", AccessibleTreeViewer_initialize, false); >+ >+function AccessibleTreeViewer_initialize() >+{ >+ viewer = new AccessibleTreeViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// AccessibleEventsViewer >+ >+function AccessibleTreeViewer() >+{ >+ this.mURL = window.location; >+ this.mObsMan = new ObserverManager(this); >+ >+ this.mTree = document.getElementById("olAccessibleTree"); >+ this.mOlBox = this.mTree.treeBoxObject; >+} >+ >+AccessibleTreeViewer.prototype = >+{ >+ //Initialization >+ >+ mSubject: null, >+ mPane: null, >+ mView: null, >+ >+ // interface inIViewer >+ >+ get uid() { return "accessibleTree"; }, >+ get pane() { return this.mPane; }, >+ get selection() { return this.mSelection; }, >+ >+ get subject() { return this.mSubject; }, >+ set subject(aObject) >+ { >+ this.mView = new inAccTreeView(aObject); >+ this.mOlBox.view = this.mView; >+ this.mObsMan.dispatchEvent("subjectChange", { subject: aObject }); >+ this.mView.selection.select(0); >+ }, >+ >+ initialize: function initialize(aPane) >+ { >+ this.mPane = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function destroy() >+ { >+ this.mView.destroy(); >+ this.mOlBox.view = null; >+ }, >+ >+ isCommandEnabled: function isCommandEnabled(aCommand) >+ { >+ switch (aCommand) { >+ case "cmdEditInspectInNewWindow": >+ return this.mTree.view.selection.count == 1; >+ } >+ return false; >+ }, >+ >+ getCommand: function getCommand(aCommand) >+ { >+ if (aCommand in window) { >+ return new window[aCommand](); >+ } >+ return null; >+ }, >+ >+ // event dispatching >+ >+ addObserver: function addObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ removeObserver: function removeObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ // UI commands >+ cmdEvalJS: function cmdEvalJS() >+ { >+ var sel = this.getSelectedAccessible(); >+ if (sel) { >+ var win = openDialog("chrome://inspector/content/viewers/accessibleTree/evalJSDialog.xul", >+ "_blank", "chrome,resizable=yes", sel, this.mView); >+ } >+ }, >+ >+ // stuff >+ >+ onItemSelected: function onItemSelected() >+ { >+ var idx = this.mTree.currentIndex; >+ this.mSelection = this.mView.getObject(idx); >+ this.mObsMan.dispatchEvent("selectionChange", >+ { selection: this.mSelection } ); >+ >+ if (this.mSelection) { >+ var node = this.mSelection.DOMNode; >+ if (node.nodeType == nsIDOMNode.ELEMENT_NODE) { >+ var flasher = this.mPane.panelset.flasher; >+ flasher.flashElementOnSelect(node); >+ } >+ } >+ >+ viewer.pane.panelset.updateAllCommands(); >+ }, >+ >+ getSelectedAccessible: function getSelectedAccessible() >+ { >+ if (this.mTree.view.selection.count == 1) { >+ var rangeMinAndMax = {}; >+ this.mTree.view.selection.getRangeAt(0, rangeMinAndMax, rangeMinAndMax); >+ return this.mView.getAccessible(rangeMinAndMax.value); >+ } >+ return null; >+ } >+}; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inAccTreeView >+ >+function inAccTreeView(aObject) >+{ >+ this.mNodes = []; >+ >+ this.mAccService = XPCU.getService(kAccessibleRetrievalCID, >+ nsIAccessibleRetrieval); >+ >+ this.mAccessible = aObject instanceof nsIAccessible ? >+ aObject : this.mAccService.getAccessibleFor(aObject); >+ >+ this.mObserverService = XPCU.getService(kObserverServiceCID, >+ nsIObserverService); >+ >+ this.mObserverService.addObserver(this, "accessible-event", false); >+ >+ var node = this.createNode(this.mAccessible); >+ this.mNodes.push(node); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inAccTreeView. nsITreeView interface >+ >+inAccTreeView.prototype = new inBaseTreeView(); >+ >+inAccTreeView.prototype.__defineGetter__("rowCount", >+function rowCount() >+{ >+ return this.mNodes.length; >+}); >+ >+inAccTreeView.prototype.getCellText = >+function getCellText(aRow, aCol) >+{ >+ var node = this.rowToNode(aRow); >+ if (!node) >+ return ""; >+ >+ var accessible = node.accessible; >+ >+ if (aCol.id == "olcRole") { >+ // 'finalRole' is replaced by 'role' property in Gecko 1.9.2. >+ var role = "finalRole" in accessible ? >+ accessible.finalRole : accessible.role; >+ return this.mAccService.getStringRole(role); >+ } >+ >+ if (aCol.id == "olcName") >+ return accessible.name; >+ >+ if (aCol.id == "olcNodeName") { >+ var node = QIAccessNode(accessible).DOMNode; >+ return node ? node.nodeName : ""; >+ } >+ >+ return ""; >+} >+ >+inAccTreeView.prototype.isContainer = >+function isContainer(aRow) >+{ >+ var node = this.rowToNode(aRow); >+ return node ? node.isContainer : false; >+} >+ >+inAccTreeView.prototype.isContainerOpen = >+function isContainerOpen(aRow) >+{ >+ var node = this.rowToNode(aRow); >+ return node ? node.isOpen : false; >+} >+ >+inAccTreeView.prototype.isContainerEmpty = >+function isContainerEmpty(aRow) >+{ >+ return !this.isContainer(aRow); >+} >+ >+inAccTreeView.prototype.getLevel = >+function getLevel(aRow) >+{ >+ var node = this.rowToNode(aRow); >+ return node ? node.level : 0; >+} >+ >+inAccTreeView.prototype.getParentIndex = >+function getParentIndex(aRow) >+{ >+ var node = this.rowToNode(aRow); >+ if (!node) >+ return -1; >+ >+ var checkNode = null; >+ var i = aRow - 1; >+ do { >+ checkNode = this.rowToNode(i); >+ if (!checkNode) >+ return -1; >+ >+ if (checkNode == node.parent) >+ return i; >+ --i; >+ } while (checkNode); >+ >+ return -1; >+} >+ >+inAccTreeView.prototype.hasNextSibling = >+function hasNextSibling(aRow, aAfterRow) >+{ >+ var node = this.rowToNode(aRow); >+ return node && (node.next != null); >+} >+ >+inAccTreeView.prototype.toggleOpenState = >+function toggleOpenState(aRow) >+{ >+ var node = this.rowToNode(aRow); >+ if (!node) >+ return; >+ >+ var oldCount = this.rowCount; >+ if (node.isOpen) >+ this.collapseNode(aRow); >+ else >+ this.expandNode(aRow); >+ >+ this.mTree.invalidateRow(aRow); >+ this.mTree.rowCountChanged(aRow + 1, this.rowCount - oldCount); >+} >+ >+inAccTreeView.prototype.getRowProperties = >+function getRowProperties(aRowIdx, aProperties) >+{ >+ var node = this.rowToNode(aRowIdx); >+ if (node && node.highlighted) { >+ if (!aProperties) >+ return "highlight"; >+ >+ let atom = this.createAtom("highlight"); >+ aProperties.AppendElement(atom); >+ } >+ >+ return ""; >+} >+ >+inAccTreeView.prototype.getCellProperties = >+function getCellProperties(aRowIdx, aCol, aProperties) >+{ >+ return this.getRowProperties(aRowIdx, aProperties); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inAccTreeView. Public. >+ >+/** >+ * Destroy the view. >+ */ >+inAccTreeView.prototype.destroy = >+function inAccTreeView_destroy() >+{ >+ this.mObserverService.removeObserver(this, "accessible-event"); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inAccTreeView. Tree utils. >+ >+/** >+ * Expands a tree node on the given row. >+ * >+ * @param aRow - row index. >+ */ >+inAccTreeView.prototype.expandNode = >+function expandNode(aRow) >+{ >+ var node = this.rowToNode(aRow); >+ if (!node) >+ return; >+ >+ var kids = node.accessible.children; >+ var kidCount = kids.length; >+ >+ var newNode = null; >+ var prevNode = null; >+ >+ for (var i = 0; i < kidCount; ++i) { >+ var accessible = kids.queryElementAt(i, nsIAccessible); >+ newNode = this.createNode(accessible, node); >+ this.mNodes.splice(aRow + i + 1, 0, newNode); >+ >+ if (prevNode) >+ prevNode.next = newNode; >+ newNode.previous = prevNode; >+ prevNode = newNode; >+ } >+ >+ node.isOpen = true; >+} >+ >+/** >+ * Collapse a tree node on the given row. >+ * >+ * @param aRow - row index. >+ */ >+inAccTreeView.prototype.collapseNode = >+function collapseNode(aRow) >+{ >+ var node = this.rowToNode(aRow); >+ if (!node) >+ return; >+ >+ var row = this.getLastDescendantOf(node, aRow); >+ this.mNodes.splice(aRow + 1, row - aRow); >+ >+ node.isOpen = false; >+} >+ >+/** >+ * Expand the tree and highlight accessibles in the given subtree that comply >+ * to filter function. >+ * >+ * @param aRoot - the root accessible of subtree to search in >+ * @param aFilterFunc - a function that returns true if the passed accessible >+ complies to search criteria. >+ */ >+inAccTreeView.prototype.search = >+function search(aRoot, aFilterFunc) >+{ >+ QIAccessNode(aRoot); >+ if (aFilterFunc(aRoot)) { >+ let chain = []; >+ let parent = aRoot; >+ do { >+ chain.push(parent); >+ if (parent == aRoot.document) >+ break; >+ >+ parent = parent.parent; >+ } while (parent); >+ >+ let current = chain.pop(); >+ for (let idx = 0; idx < this.mNodes.length; idx++) { >+ let node = this.mNodes[idx]; >+ if (node.accessible == current) { >+ if (chain.length == 0) { >+ node.highlighted = true; >+ this.mTree.invalidateRow(idx); >+ } else { >+ if (!node.isOpen) >+ this.toggleOpenState(idx); >+ >+ current = chain.pop(); >+ } >+ } >+ } >+ } >+ >+ var count = aRoot.childCount; >+ for (let idx = 0; idx < count; idx++) { >+ let child = aRoot.getChildAt(idx); >+ this.search(child, aFilterFunc); >+ } >+} >+ >+/** >+ * Clear search results. >+ */ >+inAccTreeView.prototype.clearSearch = >+function clearSearch() >+{ >+ for (let idx = 0; idx < this.mNodes.length; idx++) { >+ if (this.mNodes[idx].highlighted) { >+ this.mNodes[idx].highlighted = false; >+ this.mTree.invalidateRow(idx); >+ } >+ } >+} >+ >+ >+/** >+ * Create a tree node. >+ * >+ * @param aAccessible - an accessible object associated with created tree node. >+ * @param aParent - parent tree node for the created tree node. >+ * @retrurn - tree node object for the given accesible. >+ */ >+inAccTreeView.prototype.createNode = >+function createNode(aAccessible, aParent) >+{ >+ var node = new inAccTreeViewNode(aAccessible); >+ node.level = aParent ? aParent.level + 1 : 0; >+ node.parent = aParent; >+ node.isContainer = aAccessible.children.length > 0; >+ >+ return node; >+} >+ >+/** >+ * Return row index of the last node that is a descendant of the given node. >+ * If there is no required node then return the given row. >+ * >+ * @param aNode - tree node for that last descedant is searched. >+ * @param aRow - row index of the given tree node. >+ */ >+inAccTreeView.prototype.getLastDescendantOf = >+function getLastDescendantOf(aNode, aRow) >+{ >+ var rowCount = this.rowCount; >+ >+ var row = aRow + 1; >+ for (; row < rowCount; ++row) { >+ if (this.mNodes[row].level <= aNode.level) >+ return row - 1; >+ } >+ >+ return rowCount - 1; >+} >+ >+/** >+ * Return a tree node by the given row. >+ * >+ * @param aRow - row index. >+ */ >+inAccTreeView.prototype.rowToNode = >+function rowToNode(aRow) >+{ >+ if (aRow < 0 || aRow >= this.rowCount) >+ return null; >+ >+ return this.mNodes[aRow]; >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inAccTreeView. Accessibility utils. >+ >+/** >+ * Return DOM node for an accessible or accessible if there is no associated >+ * DOM node by the tree node pointed by the given row index. >+ * >+ * @param aRow - row index. >+ */ >+inAccTreeView.prototype.getObject = >+function getObject(aRow) >+{ >+ var node = this.mNodes[aRow]; >+ return node && QIAccessNode(node.accessible); >+} >+ >+/** >+ * Return accessible of the tree node pointed by the given >+ * row index. >+ * >+ * @param aRow - the row index to get the accessible from. >+ * @returns the accessible for the given index. >+ */ >+inAccTreeView.prototype.getAccessible = >+function getAccessible(aRow) >+{ >+ var node = this.mNodes[aRow]; >+ if (!node) >+ return null; >+ >+ return node.accessible; >+} >+ >+inAccTreeView.prototype.observe = >+function inAccTreeView_observe(aSubject, aTopic, aData) >+{ >+ let event = XPCU.QI(aSubject, nsIAccessibleEvent); >+ >+ // Update the children if they were changed. >+ if (event.eventType != nsIAccessibleEvent.EVENT_REORDER) >+ return; >+ >+ var accessible = event.accessible; >+ if (!accessible) >+ return; >+ >+ // Ignore the event if its target is from anther document. >+ var parentAccessible = accessible; >+ while (parentAccessible != this.mAccessible) { >+ parentAccessible = parentAccessible.parent; >+ if (!parentAccessible) { >+ return; >+ } >+ } >+ >+ for (let idx = 0; idx < this.mNodes.length; idx++) { >+ let node = this.mNodes[idx]; >+ if (node.accessible == accessible) { >+ if (node.isOpen) { >+ // Toggle open state twice to update the children. >+ this.toggleOpenState(idx); >+ this.toggleOpenState(idx); >+ } >+ break; >+ } >+ } >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// inAccTreeViewNode >+ >+function inAccTreeViewNode(aAccessible) >+{ >+ this.accessible = aAccessible; >+ >+ this.parent = null; >+ this.next = null; >+ this.previous = null; >+ >+ this.level = 0; >+ this.isOpen = false; >+ this.isContainer = false; >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Transactions >+ >+function cmdEditInspectInNewWindow() >+{ >+ this.mObject = viewer.getSelectedAccessible(); >+} >+ >+cmdEditInspectInNewWindow.prototype = new cmdEditInspectInNewWindowBase(); >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleTree/accessibleTree.xul b/suite/extensions/inspector/resources/content/viewers/accessibleTree/accessibleTree.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleTree/accessibleTree.xul >@@ -0,0 +1,72 @@ >+<?xml version="1.0"?> >+ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/accessibleTree.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin/viewers/accessibleTree/accessibleTree.css"?> >+ >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<page id="winAccessibleTree" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inBaseTreeView.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/accessibleTree/accessibleTree.js"/> >+ >+ <commandset id="cmdsAccTreeViewer"> >+ <command id="cmdEvalJS" oncommand="viewer.cmdEvalJS();"/> >+ </commandset> >+ <commandset id="cmdsEditingExtras"/> >+ >+ <popupset> >+ <menupopup id="popupContext"> >+ <menuitem id="mnEditInspectInNewWindow"/> >+ <menuseparator/> >+ <menuitem label="&evaluateJS.label;" observes="cmdEvalJS"/> >+ </menupopup> >+ </popupset> >+ >+ <tree id="olAccessibleTree" class="plain" treelines="true" flex="1" >+ onselect="viewer.onItemSelected()" >+ context="popupContext"> >+ <treecols> >+ <treecol id="olcRole" >+ label="&role.label;" >+ persist="width,hidden,ordinal" >+ primary="true" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcName" >+ label="&name.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcNodeName" >+ label="&nodeName.label;" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ </treecols> >+ <treechildren id="olbAccessibleTree" >+ alternatingbackground="true"/> >+ </tree> >+ >+</page> >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleTree/evalJSDialog.js b/suite/extensions/inspector/resources/content/viewers/accessibleTree/evalJSDialog.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleTree/evalJSDialog.js >@@ -0,0 +1,89 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+var gAcc = window.arguments[0]; >+var gTreeView = window.arguments[1]; >+ >+var gInputArea = null; >+var gOutputArea = null; >+ >+var Cc = Components.classes; >+var Ci = Components.interfaces; >+ >+function load() >+{ >+ gInputArea = document.getElementById("JSInputArea"); >+ gOutputArea = document.getElementById("JSOutputArea"); >+} >+ >+function closeDialog() >+{ >+ gTreeView.clearSearch(); >+} >+ >+function execute() >+{ >+ if (!gAcc) >+ return; >+ >+ for (var idx = 0; idx < gAccInterfaces.length; idx++) { >+ if (gAcc instanceof gAccInterfaces[idx]) >+ gAcc.QueryInterface(gAccInterfaces[idx]); >+ } >+ >+ gOutputArea.value = ""; >+ >+ var expr = gInputArea.value; >+ try { >+ var f = Function("accessible", "tree", expr); >+ var result = f(gAcc, gTreeView); >+ } catch (ex) { >+ output(ex); >+ } >+} >+ >+var gAccInterfaces = >+[ >+ Ci.nsIAccessible, >+ Ci.nsIAccessibleDocument, >+ Ci.nsIAccessibleEditableText, >+ Ci.nsIAccessibleHyperLink, >+ Ci.nsIAccessibleHyperText, >+ Ci.nsIAccessibleImage, >+ Ci.nsIAccessibleSelectable, >+ Ci.nsIAccessibleTable, >+ Ci.nsIAccessibleTableCell, >+ Ci.nsIAccessibleText, >+ Ci.nsIAccessibleValue >+]; >+ >+// Used for compatibility with Gecko versions prior to Gecko13. >+if ("nsIAccessNode" in Ci) >+ gAccInterfaces.push(Ci.nsIAccessNode); >+ >+function output(aValue) >+{ >+ gOutputArea.value += aValue; >+} >+ >+function outputTextAttrs(aAccessible, aOffset) >+{ >+ if (aAccessible instanceof Ci.nsIAccessibleText) { >+ var startOffsetObj = {}, endOffsetObj = {}; >+ var attrs = aAccessible.getTextAttributes(false, aOffset, >+ startOffsetObj, endOffsetObj); >+ if (attrs) { >+ var str = "Start offset: " + startOffsetObj.value; >+ str += ", end offset: " + endOffsetObj.value + "\nText attributes:\n"; >+ >+ var enumerator = attrs.enumerate(); >+ while (enumerator.hasMoreElements()) { >+ var prop = enumerator.getNext().QueryInterface(Ci.nsIPropertyElement); >+ str += "\t" + prop.key + ": " + prop.value + ";\n"; >+ } >+ >+ output(str); >+ } >+ } >+} >diff --git a/suite/extensions/inspector/resources/content/viewers/accessibleTree/evalJSDialog.xul b/suite/extensions/inspector/resources/content/viewers/accessibleTree/evalJSDialog.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/accessibleTree/evalJSDialog.xul >@@ -0,0 +1,43 @@ >+<?xml version="1.0"?> >+ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE dialog [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/viewers/accessibleTreeEvalJSDialog.dtd"> %dtd1; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin"?> >+ >+<dialog id="winEvalJS" >+ title="&evaluateDialog.title;" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >+ buttons="accept, extra1" >+ buttonlabelextra1="&btnEvaluateJS.label;" >+ buttonaccesskeyextra1="&btnEvaluateJS.accesskey;" >+ ondialogextra1="return execute();" >+ style="width: 30em;" >+ onload="load();" >+ ondialogaccept="closeDialog();"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/accessibleTree/evalJSDialog.js"/> >+ >+ <label control="JSInputArea" >+ accesskey="&txtInputArea.accesskey;">&txtInputArea.label;</label> >+ <textbox id="JSInputArea" >+ flex="1" >+ multiline="true" >+ rows="10"/> >+ >+ <label control="JSOutputArea" >+ value="&txtOutputArea.label;" >+ accesskey="&txtOutputArea.accesskey;"/> >+ <textbox id="JSOutputArea" >+ flex="1" >+ multiline="true" >+ readonly="true" >+ rows="8"/> >+ >+</dialog> >diff --git a/suite/extensions/inspector/resources/content/viewers/boxModel/boxModel.js b/suite/extensions/inspector/resources/content/viewers/boxModel/boxModel.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/boxModel/boxModel.js >@@ -0,0 +1,244 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* BoxModelViewer -------------------------------------------- >+* The viewer for the boxModel and visual appearance of an element. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+****************************************************************/ >+ >+//////////// global variables ///////////////////// >+ >+var viewer; >+ >+//////////// global constants //////////////////// >+ >+const kIMPORT_RULE = Components.interfaces.nsIDOMCSSRule.IMPORT_RULE; >+ >+////////////////////////////////////////////////// >+ >+window.addEventListener("load", BoxModelViewer_initialize, false); >+ >+function BoxModelViewer_initialize() >+{ >+ viewer = new BoxModelViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class BoxModelViewer >+ >+function BoxModelViewer() >+{ >+ this.mURL = window.location; >+ this.mObsMan = new ObserverManager(this); >+} >+ >+BoxModelViewer.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mSubject: null, >+ mPane: null, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// interface inIViewer >+ >+ get uid() { return "boxModel" }, >+ get pane() { return this.mPane }, >+ >+ get subject() { return this.mSubject }, >+ set subject(aObject) >+ { >+ this.mSubject = aObject instanceof Components.interfaces.nsIDOMNode ? >+ aObject : aObject.DOMNode; >+ this.showStats(); >+ this.mObsMan.dispatchEvent("subjectChange", { subject: this.mSubject }); >+ }, >+ >+ initialize: function(aPane) >+ { >+ this.initGroups(); >+ >+ this.mPane = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ groupPosition: {}, >+ groupDimension: {}, >+ groupMargin: {}, >+ groupBorder: {}, >+ groupPadding: {}, >+ >+ initGroups: function() >+ { >+ this.groupPosition.x = document.getElementById("positionXValue"); >+ this.groupPosition.y = document.getElementById("positionYValue"); >+ this.groupPosition.screenX = >+ document.getElementById("positionScreenXValue"); >+ this.groupPosition.screenY = >+ document.getElementById("positionScreenYValue"); >+ >+ this.groupDimension.width = >+ document.getElementById("dimensionWidthValue"); >+ this.groupDimension.height = >+ document.getElementById("dimensionHeightValue"); >+ >+ this.groupMargin.top = document.getElementById("marginTopValue"); >+ this.groupMargin.right = document.getElementById("marginRightValue"); >+ this.groupMargin.bottom = document.getElementById("marginBottomValue"); >+ this.groupMargin.left = document.getElementById("marginLeftValue"); >+ >+ this.groupBorder.top = document.getElementById("borderTopValue"); >+ this.groupBorder.right = document.getElementById("borderRightValue"); >+ this.groupBorder.bottom = document.getElementById("borderBottomValue"); >+ this.groupBorder.left = document.getElementById("borderLeftValue"); >+ >+ this.groupPadding.top = document.getElementById("paddingTopValue"); >+ this.groupPadding.right = document.getElementById("paddingRightValue"); >+ this.groupPadding.bottom = document.getElementById("paddingBottomValue"); >+ this.groupPadding.left = document.getElementById("paddingLeftValue"); >+ }, >+ >+ destroy: function() >+ { >+ }, >+ >+ isCommandEnabled: function(aCommand) >+ { >+ return false; >+ }, >+ >+ getCommand: function(aCommand) >+ { >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// event dispatching >+ >+ addObserver: function(aEvent, aObserver) { this.mObsMan.addObserver(aEvent, aObserver); }, >+ removeObserver: function(aEvent, aObserver) { this.mObsMan.removeObserver(aEvent, aObserver); }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// statistical updates >+ >+ showStats: function() >+ { >+ this.showPositionStats(); >+ this.showDimensionStats(); >+ this.showMarginStats(); >+ this.showBorderStats(); >+ this.showPaddingStats(); >+ }, >+ >+ showStatistic: function(aElement, aSize) >+ { >+ if (aSize == null) { >+ aSize = ""; >+ } >+ var str = aSize.toString(); >+ aElement.setAttribute("value", str); >+ >+ var nonzero = aSize != 0 && str.indexOf("0px"); >+ aElement.setAttribute("class", nonzero ? "plain nonzero" : "plain"); >+ >+ aElement.setAttribute("size", str.length + 1); >+ }, >+ >+ showPositionStats: function() >+ { >+ var group = this.groupPosition; >+ if ("boxObject" in this.mSubject) { // xul elements >+ var bx = this.mSubject.boxObject; >+ this.showStatistic(group.x, bx.x); >+ this.showStatistic(group.y, bx.y); >+ this.showStatistic(group.screenX, bx.screenX); >+ this.showStatistic(group.screenY, bx.screenY); >+ group.screenX.parentNode.hidden = false; >+ group.screenY.parentNode.hidden = false; >+ } else { // html elements >+ this.showStatistic(group.x, this.mSubject.offsetLeft); >+ this.showStatistic(group.y, this.mSubject.offsetTop); >+ group.screenX.parentNode.hidden = true; >+ group.screenY.parentNode.hidden = true; >+ } >+ }, >+ >+ showDimensionStats: function() >+ { >+ var group = this.groupDimension; >+ if ("boxObject" in this.mSubject) { // xul elements >+ var bx = this.mSubject.boxObject; >+ this.showStatistic(group.width, bx.width); >+ this.showStatistic(group.height, bx.height); >+ } else { // html elements >+ this.showStatistic(group.width, this.mSubject.offsetWidth); >+ this.showStatistic(group.height, this.mSubject.offsetHeight); >+ } >+ }, >+ >+ getSubjectComputedStyle: function() >+ { >+ var view = this.mSubject.ownerDocument.defaultView; >+ return view.getComputedStyle(this.mSubject, ""); >+ }, >+ >+ showMarginStats: function() >+ { >+ var style = this.getSubjectComputedStyle(); >+ var data = [this.readMarginStyle(style, "top"), this.readMarginStyle(style, "right"), >+ this.readMarginStyle(style, "bottom"), this.readMarginStyle(style, "left")]; >+ this.showSideStats(this.groupMargin, data); >+ }, >+ >+ showBorderStats: function() >+ { >+ var style = this.getSubjectComputedStyle(); >+ var data = [this.readBorderStyle(style, "top"), this.readBorderStyle(style, "right"), >+ this.readBorderStyle(style, "bottom"), this.readBorderStyle(style, "left")]; >+ this.showSideStats(this.groupBorder, data); >+ }, >+ >+ showPaddingStats: function() >+ { >+ var style = this.getSubjectComputedStyle(); >+ var data = [this.readPaddingStyle(style, "top"), this.readPaddingStyle(style, "right"), >+ this.readPaddingStyle(style, "bottom"), this.readPaddingStyle(style, "left")]; >+ this.showSideStats(this.groupPadding, data); >+ }, >+ >+ showSideStats: function(aGroup, aData) >+ { >+ this.showStatistic(aGroup.top, aData[0]); >+ this.showStatistic(aGroup.right, aData[1]); >+ this.showStatistic(aGroup.bottom, aData[2]); >+ this.showStatistic(aGroup.left, aData[3]); >+ }, >+ >+ readMarginStyle: function(aStyle, aSide) >+ { >+ return aStyle.getPropertyCSSValue("margin-"+aSide).cssText; >+ }, >+ >+ readPaddingStyle: function(aStyle, aSide) >+ { >+ return aStyle.getPropertyCSSValue("padding-"+aSide).cssText; >+ }, >+ >+ readBorderStyle: function(aStyle, aSide) >+ { >+ var style = aStyle.getPropertyCSSValue("border-"+aSide+"-style").cssText; >+ if (!style || !style.length) { >+ return "none"; >+ } else { >+ return aStyle.getPropertyCSSValue("border-"+aSide+"-width").cssText + " " + >+ style + " " + >+ aStyle.getPropertyCSSValue("border-"+aSide+"-color").cssText; >+ } >+ } >+}; >diff --git a/suite/extensions/inspector/resources/content/viewers/boxModel/boxModel.xul b/suite/extensions/inspector/resources/content/viewers/boxModel/boxModel.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/boxModel/boxModel.xul >@@ -0,0 +1,176 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/boxModel.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin/viewers/boxModel/boxModel.css"?> >+<?xul-overlay href="chrome://global/content/globalOverlay.xul"?> >+ >+<page id="winBoxModel" >+ orient="vertical" >+ xmlns:html="http://www.w3.org/1999/xhtml" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" src="chrome://inspector/content/viewers/boxModel/boxModel.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ >+ <vbox id="enclosingBox" flex="1"> >+ <vbox> >+ >+ <groupbox id="boxPosition"> >+ <caption><label>&boxPosition.label;</label> >+ </caption> >+ <grid flex="1"> >+ <columns> >+ <column/> >+ <column class="value-column"/> >+ </columns> >+ <rows> >+ <row> >+ <label id="positionXLabel" value="&xCoord.label;" class="title"/> >+ <textbox id="positionXValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="positionYLabel" value="&yCoord.label;" class="title"/> >+ <textbox id="positionYValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="positionScreenXLabel" value="&screenXCoord.label;" >+ class="title"/> >+ <textbox id="positionScreenXValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="positionScreenYLabel" value="&screenYCoord.label;" >+ class="title"/> >+ <textbox id="positionScreenYValue" readonly="true" class="plain"/> >+ </row> >+ </rows> >+ </grid> >+ </groupbox> >+ >+ <groupbox id="boxDimension"> >+ <caption><label>&boxDimension.label;</label> >+ </caption> >+ <grid flex="1"> >+ <columns> >+ <column/> >+ <column class="value-column"/> >+ </columns> >+ <rows> >+ <row> >+ <label id="dimensionWidthLabel" value="&dimensionWidth.label;" >+ class="title"/> >+ <textbox id="dimensionWidthValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="dimensionHeightLabel" value="&dimensionHeight.label;" >+ class="title"/> >+ <textbox id="dimensionHeightValue" readonly="true" class="plain"/> >+ </row> >+ </rows> >+ </grid> >+ </groupbox> >+ >+ <groupbox id="boxMargin"> >+ <caption><label>&boxMargin.label;</label> >+ </caption> >+ <grid flex="1"> >+ <columns> >+ <column/> >+ <column class="value-column"/> >+ </columns> >+ <rows> >+ <row> >+ <label id="marginTopLabel" value="margin-top" class="title"/> >+ <textbox id="marginTopValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="marginRightLabel" value="margin-right" class="title"/> >+ <textbox id="marginRightValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="marginBottomLabel" value="margin-bottom" >+ class="title"/> >+ <textbox id="marginBottomValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="marginLeftLabel" value="margin-left" class="title"/> >+ <textbox id="marginLeftValue" readonly="true" class="plain"/> >+ </row> >+ </rows> >+ </grid> >+ </groupbox> >+ >+ <groupbox id="boxBorder"> >+ <caption><label>&boxBorder.label;</label> >+ </caption> >+ <grid flex="1"> >+ <columns> >+ <column/> >+ <column class="value-column" flex="1"/> >+ </columns> >+ <rows> >+ <row> >+ <label id="borderTopLabel" value="border-top" class="title"/> >+ <textbox id="borderTopValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="borderRightLabel" value="border-right" class="title"/> >+ <textbox id="borderRightValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="borderBottomLabel" value="border-bottom" >+ class="title"/> >+ <textbox id="borderBottomValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="borderLeftLabel" value="border-left" class="title"/> >+ <textbox id="borderLeftValue" readonly="true" class="plain"/> >+ </row> >+ </rows> >+ </grid> >+ </groupbox> >+ >+ <groupbox id="boxPadding"> >+ <caption><label>&boxPadding.label;</label> >+ </caption> >+ <grid flex="1"> >+ <columns> >+ <column/> >+ <column class="value-column"/> >+ </columns> >+ <rows> >+ <row> >+ <label id="paddingTopLabel" value="padding-top" class="title"/> >+ <textbox id="paddingTopValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="paddingRightLabel" value="padding-right" >+ class="title"/> >+ <textbox id="paddingRightValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="paddingBottomLabel" value="padding-bottom" >+ class="title"/> >+ <textbox id="paddingBottomValue" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label id="paddingLeftLabel" value="padding-left" class="title"/> >+ <textbox id="paddingLeftValue" readonly="true" class="plain"/> >+ </row> >+ </rows> >+ </grid> >+ </groupbox> >+ >+ </vbox> >+ </vbox> >+ >+</page> >diff --git a/suite/extensions/inspector/resources/content/viewers/computedStyle/computedStyle.js b/suite/extensions/inspector/resources/content/viewers/computedStyle/computedStyle.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/computedStyle/computedStyle.js >@@ -0,0 +1,197 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* ComputedStyleViewer -------------------------------------------------------- >+* The viewer for the computed CSS styles on a DOM element. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/events/ObserverManager.js >+* chrome://inspector/content/commands/baseCommands.js >+* chrome://inspector/content/system/clipboardFlavors.js >+* chrome://inspector/content/xul/inBaseTreeView.js >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+ >+////////////////////////////////////////////////////////////////////////////// >+ >+window.addEventListener("load", ComputedStyleViewer_initialize, false); >+ >+function ComputedStyleViewer_initialize() >+{ >+ viewer = new ComputedStyleViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// class ComputedStyleViewer >+ >+function ComputedStyleViewer() >+{ >+ this.mObsMan = new ObserverManager(this); >+ this.mURL = window.location; >+ >+ this.mTree = document.getElementById("olStyles"); >+} >+ >+//XXX Don't use anonymous functions >+ComputedStyleViewer.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mSubject: null, >+ mPane: null, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// interface inIViewer >+ >+ get uid() >+ { >+ return "computedStyle"; >+ }, >+ >+ get pane() >+ { >+ return this.mPane; >+ }, >+ >+ get subject() >+ { >+ return this.mSubject; >+ }, >+ >+ set subject(aObject) >+ { >+ this.mSubject = aObject instanceof Components.interfaces.nsIDOMNode ? >+ aObject : aObject.DOMNode; >+ >+ var bo = this.mTree.treeBoxObject; >+ var firstVisibleRow = -1; >+ var selectedIndices; >+ var currentIndex; >+ if (this.mTreeView) { >+ firstVisibleRow = bo.getFirstVisibleRow(); >+ selectedIndices = this.mTreeView.getSelectedIndices(); >+ currentIndex = this.mTreeView.selection.currentIndex; >+ } >+ >+ this.mTreeView = new ComputedStyleView(this.mSubject); >+ this.mTree.view = this.mTreeView; >+ >+ if (firstVisibleRow >= 0) { >+ bo.beginUpdateBatch(); >+ try { >+ bo.scrollToRow(firstVisibleRow); >+ let selection = this.mTreeView.selection; >+ for (let i = 0, n = selectedIndices.length; i < n; ++i) { >+ selection.toggleSelect(selectedIndices[i]); >+ } >+ selection.currentIndex = currentIndex; >+ } >+ catch (ex) { >+ Components.utils.reportError(ex); >+ } >+ bo.endUpdateBatch(); >+ } >+ >+ this.mObsMan.dispatchEvent("subjectChange", { subject: this.mSubject }); >+ }, >+ >+ initialize: function CSVr_Initialize(aPane) >+ { >+ this.mPane = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function CSVr_Destroy() >+ { >+ // We need to remove the view at this time or else it will attempt to >+ // re-paint while the document is being deconstructed, resulting in some >+ // nasty XPConnect assertions >+ this.mTree.view = null; >+ }, >+ >+ isCommandEnabled: function CSVr_IsCommandEnabled(aCommand) >+ { >+ if (aCommand == "cmdEditCopy") { >+ return this.mTree.view.selection.count > 0; >+ } >+ return false; >+ }, >+ >+ getCommand: function CSVr_GetCommand(aCommand) >+ { >+ if (aCommand == "cmdEditCopy") { >+ return new cmdEditCopy(this.mTreeView.getSelectedRowObjects()); >+ } >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// event dispatching >+ >+ addObserver: function CSVr_AddObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ >+ removeObserver: function CSVr_RemoveObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Miscellaneous >+ >+ onItemSelected: function CSVr_OnItemSelected() >+ { >+ // This will (eventually) call isCommandEnabled on Copy >+ viewer.pane.panelset.updateAllCommands(); >+ } >+}; >+ >+//////////////////////////////////////////////////////////////////////////// >+//// ComputedStyleView >+ >+function ComputedStyleView(aObject) >+{ >+ var view = aObject.ownerDocument.defaultView; >+ this.mStyleList = view.getComputedStyle(aObject, ""); >+ this.mRowCount = this.mStyleList.length; >+} >+ >+ComputedStyleView.prototype = new inBaseTreeView(); >+ >+ComputedStyleView.prototype.getCellText = function CSV_GetCellText(aRow, aCol) >+{ >+ var prop = this.mStyleList.item(aRow); >+ if (aCol.id == "olcStyleName") { >+ return prop; >+ } >+ else if (aCol.id == "olcStyleValue") { >+ return this.mStyleList.getPropertyValue(prop); >+ } >+ >+ return null; >+} >+ >+/** >+ * Returns a CSSProperty for the row in the tree corresponding to the passed >+ * index. >+ * @param aIndex >+ * index of the row in the tree >+ * @return a CSSProperty >+ */ >+ComputedStyleView.prototype.getRowObjectFromIndex = >+ function CSV_GetRowObjectFromIndex(aIndex) >+{ >+ var prop = this.mStyleList.item(aIndex); >+ return new CSSProperty(prop, this.mStyleList.getPropertyValue(prop)); >+} >diff --git a/suite/extensions/inspector/resources/content/viewers/computedStyle/computedStyle.xul b/suite/extensions/inspector/resources/content/viewers/computedStyle/computedStyle.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/computedStyle/computedStyle.xul >@@ -0,0 +1,51 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/computedStyle.dtd"> %dtd2; >+]> >+ >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<?xml-stylesheet href="chrome://inspector/skin/"?> >+ >+<page id="winComputedStyle" >+ orient="vertical" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inBaseTreeView.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/computedStyle/computedStyle.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/system/clipboardFlavors.js"/> >+ >+ <commandset id="cmdsEditing"/> >+ >+ <popupset id="psPopups"> >+ <menupopup id="ppComputedStyleContext"> >+ <menuitem id="mnEditCopy"/> >+ </menupopup> >+ </popupset> >+ >+ <tree id="olStyles" flex="1" onselect="viewer.onItemSelected()" >+ class="plain" contextmenu="ppComputedStyleContext"> >+ <treecols> >+ <treecol id="olcStyleName" label="&propertyName.label;" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcStyleValue" label="&propertyValue.label;" flex="1"/> >+ </treecols> >+ <treechildren id="olbStyles" alternatingbackground="true"/> >+ </tree> >+</page> >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/FindDialog.js b/suite/extensions/inspector/resources/content/viewers/dom/FindDialog.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/FindDialog.js >@@ -0,0 +1,144 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* FindDialog --------------------------------------------------- >+* Controls the dialog box used for searching the DOM. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/jsutil/rdf/RDFU.js >+****************************************************************/ >+ >+//////////// global variables ///////////////////// >+ >+var dialog; >+ >+//////////// global constants //////////////////// >+ >+////////////////////////////////////////////////// >+ >+window.addEventListener("load", FindDialog_initialize, false); >+ >+function FindDialog_initialize() >+{ >+ dialog = new FindDialog(); >+} >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class FindDialog >+ >+function FindDialog() >+{ >+ this.setDirection(window.arguments[1] ? window.arguments[1] : "down"); >+ if (window.arguments[2]) { >+ this.setValue(window.arguments[2][0], window.arguments[2][1]) >+ } >+ this.toggleType(window.arguments[0] ? window.arguments[0] : "id"); >+ this.mOpener = window.opener.viewer; >+ >+ var txf = document.getElementById("tfText1"); >+ txf.select(); >+ txf.focus(); >+} >+ >+FindDialog.prototype = >+{ >+ mType: null, >+ >+ ////////// Properties >+ >+ >+ ////////// Methods >+ >+ doFind: function() >+ { >+ var el = document.getElementById("tfText1"); >+ var dir = document.getElementById("rgDirection").value; >+ if (this.mType == "id") { >+ this.mOpener.startFind("id", dir, el.value); >+ } else if (this.mType == "tag") { >+ this.mOpener.startFind("tag", dir, el.value); >+ } else if (this.mType == "attr") { >+ var el2 = document.getElementById("tfText2"); >+ this.mOpener.startFind("attr", dir, el.value, el2.value); >+ } >+ }, >+ >+ toggleType: function(aType) >+ { >+ this.mType = aType; >+ >+ if (aType == "id") { >+ this.showDirection(false); >+ this.setLabel1(0); >+ this.showRow2(false); >+ } else if (aType == "tag") { >+ this.showDirection(true); >+ this.setLabel1(1); >+ this.showRow2(false); >+ } else if (aType == "attr") { >+ this.showDirection(true); >+ this.setLabel1(2); >+ this.showRow2(true); >+ } >+ >+ var rd = document.getElementById("rdType_"+aType.toLowerCase()); >+ if (rd) { >+ var rg = document.getElementById("rgType"); >+ rg.selectedItem = rd; >+ } >+ >+ }, >+ >+ setLabel1: function(aIndex) >+ { >+ var deck = document.getElementById("rwRow1Text"); >+ >+ // We want to add a control attribute to the selected label so that >+ // accessibility aids can get the textbox's label. >+ // Remove the control attribute from the old panel. >+ deck.selectedPanel.removeAttribute("control"); >+ >+ deck.selectedIndex = aIndex; >+ // Add the control attribute to the new panel. >+ deck.selectedPanel.control = "tfText1"; >+ }, >+ >+ showRow2: function(aTruth) >+ { >+ var row = document.getElementById("rwRow2"); >+ row.setAttribute("hide", !aTruth); >+ }, >+ >+ setDirection: function(aMode) >+ { >+ var rd = document.getElementById("rdDir_"+aMode.toLowerCase()); >+ if (rd) { >+ var rg = document.getElementById("rgDirection"); >+ rg.selectedItem = rd; >+ } >+ }, >+ >+ setValue: function(aValue1, aValue2) >+ { >+ var txf; >+ if (aValue1) { >+ txf = document.getElementById("tfText1"); >+ txf.value = aValue1; >+ } >+ if (aValue2) { >+ txf = document.getElementById("tfText2"); >+ txf.value = aValue2; >+ } >+ }, >+ >+ showDirection: function(aTruth) >+ { >+ document.getElementById("rdDir_up").disabled = !aTruth; >+ document.getElementById("rdDir_down").disabled = !aTruth; >+ } >+ >+}; >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/columnsDialog.js b/suite/extensions/inspector/resources/content/viewers/dom/columnsDialog.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/columnsDialog.js >@@ -0,0 +1,219 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* ColumnsDialog -------------------------------------------- >+* Dialog box for editing the columns in the DOM Viewer tree. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+ >+//////////// global variables ///////////////////// >+ >+var dialog; >+ >+var gColumnTitles = [ >+ "nodeName", >+ "nodeValue", >+ "nodeType", >+ "prefix", >+ "localName", >+ "namespaceURI" >+]; >+ >+//////////// global constants //////////////////// >+ >+////////////////////////////////////////////////// >+ >+window.addEventListener("load", ColumnsDialog_initialize, false); >+window.addEventListener("unload", ColumnsDialog_destroy, false); >+ >+function ColumnsDialog_initialize() >+{ >+ dialog = new ColumnsDialog(); >+ dialog.initialize(); >+} >+ >+function ColumnsDialog_destroy() >+{ >+ dialog.destroy(); >+} >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class ColumnsDialog >+ >+function ColumnsDialog() >+{ >+ this.mViewer = window.arguments[0]; >+ this.mColBoxHash = {}; >+} >+ >+ColumnsDialog.prototype = >+{ >+ mBox: null, >+ mDraggingBox: null, >+ >+ get box() { return this.mBox }, >+ >+ initialize: function() >+ { >+ // bug 56270 - dragSession.sourceDocument is null -- >+ // causes me to code this very temporary, very nasty hack >+ // to make sure I get notified when a column is dropped >+ opener.viewer.mDOMTree.onClientDrop = ColumnsDialogDropOut; >+ >+ this.buildContents(); >+ >+ // notify the dom viewer that we've opened >+ this.mViewer.onColumnsDialogReady(this); >+ }, >+ >+ destroy: function() >+ { >+ // notify the dom viewer that we're going away >+ this.mViewer.onColumnsDialogClose(this); >+ }, >+ >+ buildContents: function() >+ { >+ var box = document.getElementById("bxColumns"); >+ this.mBox = box; >+ >+ // create the special attribute box >+ var item = this.createAttrItem(); >+ box.appendChild(item); >+ >+ // add all boxes except those that are already >+ // in the viewer >+ for (var i = 0; i < gColumnTitles.length; ++i) >+ if (!this.mViewer.hasColumn(gColumnTitles[i])) { >+ this.addItem(gColumnTitles[i]); >+ } >+ }, >+ >+ addItem: function(aValue) >+ { >+ if (!aValue || aValue.charAt(0) == "@") >+ return null; >+ >+ item = this.createItem(aValue); >+ this.mColBoxHash[aValue] = item; >+ if (item) { >+ this.mBox.appendChild(item); >+ window.sizeToContent(); >+ } >+ }, >+ >+ removeItem: function(aValue) >+ { >+ if (!aValue || aValue.charAt(0) == "@") >+ return null; >+ >+ var colBox = this.mColBoxHash[aValue]; >+ if (!colBox._isAttrCol) { >+ this.mBox.removeChild(colBox); >+ window.sizeToContent(); >+ } >+ }, >+ >+ createItem: function(aValue) >+ { >+ var text = document.createElementNS(kXULNSURI, "text"); >+ text._ColValue = aValue; >+ text._isColBox = true; >+ text._isAttrCol = false; >+ text.setAttribute("class", "column-selector"); >+ text.setAttribute("value", aValue); >+ >+ return text; >+ }, >+ >+ createAttrItem: function(aValue) >+ { >+ var box = document.createElementNS(kXULNSURI, "box"); >+ box._isColBox = true; >+ box._isAttrCol = true; >+ box.setAttribute("class", "column-selector"); >+ box.setAttribute("align", "center"); >+ >+ var text = document.createElementNS(kXULNSURI, "text"); >+ text.setAttribute("value", "Attr"); >+ box.appendChild(text); >+ >+ var txf = document.createElementNS(kXULNSURI, "textbox"); >+ txf.setAttribute("class", "attr-column-selector"); >+ txf.setAttribute("flex", 1); >+ box.appendChild(txf); >+ >+ return box; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Drag and Drop >+ >+ onDragStart: function(aEvent) >+ { >+ var box = this.getBoxTarget(aEvent.target); >+ this.setDraggingBox(box); >+ if (!box) return false; >+ >+ var column = this.getColumnValue(box); >+ if (!column) return false; >+ >+ DNDUtils.invokeSession(aEvent.target, ["TreeBuilder/column-add"], [column]); >+ >+ return false; >+ }, >+ >+ onDropOut: function() >+ { >+ var box = document.getElementById("bxColumns"); >+ var value = this.mDraggingBox._ColValue; >+ this.setDraggingBox(null); >+ this.removeItem(value); >+ }, >+ >+ onDropIn: function(aEvent) >+ { >+ var data = DNDUtils.getData("TreeBuilder/column-remove", 0); >+ var string = XPCU.QI(data, "nsISupportsString"); >+ this.addItem(string.data); >+ }, >+ >+ setDraggingBox: function(aBox) >+ { >+ if (this.mDraggingBox) { >+ this.mDraggingBox.removeAttribute("col-dragging"); >+ } >+ >+ this.mDraggingBox = aBox; >+ >+ if (aBox) >+ aBox.setAttribute("col-dragging", "true"); >+ }, >+ >+ getBoxTarget: function(aNode) >+ { >+ var node = aNode; >+ while (node && !node._isColBox) >+ node = node.parentNode; >+ return node; >+ }, >+ >+ getColumnValue: function(aColBox) >+ { >+ if (aColBox._isAttrCol) { >+ var txf = aColBox.getElementsByTagName("textbox")[0]; >+ return "@" + txf.value; >+ } else { >+ return aColBox._ColValue; >+ } >+ } >+ >+}; >+ >+function ColumnsDialogDropOut() >+{ >+ dialog.onDropOut(); >+} >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/columnsDialog.xul b/suite/extensions/inspector/resources/content/viewers/dom/columnsDialog.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/columnsDialog.xul >@@ -0,0 +1,26 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE window SYSTEM "chrome://inspector/locale/viewers/dom.dtd"> >+ >+<?xml-stylesheet href="chrome://inspector/skin/viewers/dom/columnsDialog.css" type="text/css"?> >+ >+<window id="winEditCols" class="color-dialog" >+ title="&ColumnsDialog.title;" >+ persist="screenX screenY" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" src="chrome://inspector/content/viewers/dom/columnsDialog.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/rdf/RDFU.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/xul/inTreeBuilder.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/xul/DNDUtils.js"/> >+ >+ <vbox id="bxColumns" flex="1" >+ ondrop="dialog.onDropIn(event);" >+ ondragstart="dialog.onDragStart(event);"/> >+</window> >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/commandOverlay.xul b/suite/extensions/inspector/resources/content/viewers/dom/commandOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/commandOverlay.xul >@@ -0,0 +1,44 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/viewers/dom.dtd"> %dtd1; >+]> >+ >+<overlay id="ovDOMViewerCommands" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <commandset id="cmdsGlobalCommands"> >+ <command id="cmd:selectByClick" viewer="dom" >+ oncommand="inspector.getViewer('dom').selectByClick()"/> >+ >+ <command id="cmd:find" viewer="dom" >+ oncommand="inspector.getViewer('dom').showFindDialog()"/> >+ >+ <command id="cmd:findAgain" viewer="dom" >+ oncommand="inspector.getViewer('dom').findNext()"/> >+ >+ <command id="cmd:toggleAnon" viewer="dom" >+ oncommand="inspector.getViewer('dom').toggleAnonContent()"/> >+ >+ <command id="cmd:toggleSubDocs" viewer="dom" >+ oncommand="inspector.getViewer('dom').toggleSubDocs()"/> >+ >+ <command id="cmd:toggleAccessibleNodes" viewer="dom" >+ oncommand="inspector.getViewer('dom').toggleAccessibleNodes();"/> >+ >+ <command id="cmd:toggleWhitespaceNodes" viewer="dom" >+ oncommand="inspector.getViewer('dom').toggleWhitespaceNodes()"/> >+ >+ <command id="cmd:toggleProcessingInstructions" viewer="dom" >+ oncommand="inspector.getViewer('dom').toggleProcessingInstructions()"/> >+ >+ <command id="cmd:toggleAttributes" viewer="dom" >+ oncommand="inspector.getViewer('dom').toggleAttributes()"/> >+ </commandset> >+ >+</overlay> >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/dom.js b/suite/extensions/inspector/resources/content/viewers/dom/dom.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/dom.js >@@ -0,0 +1,2272 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* DOMViewer ------------------------------------------------------------------ >+* Views all nodes within a document. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://global/content/XPCNativeWrapper.js >+* chrome://inspector/content/hooks.js >+* chrome://inspector/content/utils.js >+* chrome://inspector/content/jsutil/events/ObserverManager.js >+* chrome://inspector/content/jsutil/system/PrefUtils.js >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/jsutil/xul/FrameExchange.js >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kDOMViewClassID = "@mozilla.org/inspector/dom-view;1"; >+const kPromptServiceClassID = "@mozilla.org/embedcomp/prompt-service;1"; >+const kAccessibleRetrievalClassID = "@mozilla.org/accessibleRetrieval;1"; >+const kDOMUtilsClassID = "@mozilla.org/inspector/dom-utils;1"; >+const kDeepTreeWalkerClassID = "@mozilla.org/inspector/deep-tree-walker;1"; >+const nsIDOMNode = Components.interfaces.nsIDOMNode; >+const nsIDOMElement = Components.interfaces.nsIDOMElement; >+const nsIDOMDocument = Components.interfaces.nsIDOMDocument; >+const nsIDOMCharacterData = Components.interfaces.nsIDOMCharacterData; >+ >+////////////////////////////////////////////////////////////////////////////// >+ >+window.addEventListener("load", DOMViewer_initialize, false); >+window.addEventListener("unload", DOMViewer_destroy, false); >+ >+function DOMViewer_initialize() >+{ >+ viewer = new DOMViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+function DOMViewer_destroy() >+{ >+ PrefUtils.removeObserver("inspector", PrefChangeObserver); >+ viewer.removeClickListeners(); >+ viewer = null; >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// class DOMViewer >+ >+function DOMViewer() // implements inIViewer >+{ >+ this.mObsMan = new ObserverManager(this); >+ >+ this.mDOMUtils = XPCU.getService(kDOMUtilsClassID, "inIDOMUtils"); >+ >+ this.mDOMTree = document.getElementById("trDOMTree"); >+ this.mDOMTreeBody = document.getElementById("trDOMTreeBody"); >+ >+ // prepare and attach the DOM DataSource >+ this.mDOMView = XPCU.createInstance(kDOMViewClassID, "inIDOMView"); >+ this.mDOMView.showSubDocuments = true; >+ // hide attribute nodes >+ this.mDOMView.whatToShow &= ~(NodeFilter.SHOW_ATTRIBUTE); >+ this.mDOMTree.treeBoxObject.view = this.mDOMView; >+ >+ PrefUtils.addObserver("inspector", PrefChangeObserver); >+} >+ >+DOMViewer.prototype = >+{ >+ mSubject: null, >+ mDOMView: null, >+ // searching stuff >+ mFindResult: null, >+ mColumns: null, >+ mFindDir: null, >+ mFindParams: null, >+ mFindType: null, >+ mFindWalker: null, >+ mSelecting: false, >+ >+ mSelectionBatchNest: 0, >+ mPendingSelection: null, >+ >+ /** >+ * Prevent the viewer from dispatching selectionChange events while batches >+ * are underway. The last change in selection while disabled is remembered, >+ * however, and when all batches have ended, an event is dispatched for it. >+ * To prevent this pending selectionChange from being dispatched, set >+ * mPendingSelection to null before calling endSelectionBatch. >+ * >+ * Nested batches are permitted. >+ */ >+ beginSelectionBatch: function DVr_BeginSelectionBatch() >+ { >+ ++this.mSelectionBatchNest; >+ }, >+ >+ endSelectionBatch: function DVr_EndSelectionBatch() >+ { >+ --this.mSelectionBatchNest; >+ if (this.mSelectionBatchNest < 0) { >+ Components.utils.reportError("Attempted to end a selection batch " + >+ "that doesn't exist"); >+ } >+ else if (!this.mSelectionBatchNest && this.mPendingSelection) { >+ this.changeSelection(this.mPendingSelection); >+ this.mPendingSelection = null; >+ } >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// interface inIViewer >+ >+ //// attributes >+ >+ get uid() { >+ return "dom" >+ }, >+ >+ get pane() { >+ return this.mPanel >+ }, >+ >+ get editable() { >+ return true; >+ }, >+ >+ get selection() { >+ return this.mSelection >+ }, >+ >+ get subject() { >+ return this.mSubject >+ }, >+ >+ set subject(aObject) { >+ this.mSubject = aObject; >+ this.mDOMView.rootNode = aObject; >+ this.mObsMan.dispatchEvent("subjectChange", { subject: aObject }); >+ this.setInitialSelection(aObject); >+ }, >+ >+ //// methods >+ >+ /** >+ * Properly sets up the DOM Viewer >+ * >+ * @param aPane >+ * The panel this references. >+ */ >+ initialize: function DVr_initialize(aPane) >+ { >+ this.mPanel = aPane; >+ >+ this.setAnonContent(PrefUtils.getPref("inspector.dom.showAnon")); >+ this.setProcessingInstructions( >+ PrefUtils.getPref("inspector.dom.showProcessingInstructions") >+ ); >+ this.setAccessibleNodes( >+ PrefUtils.getPref("inspector.dom.showAccessibleNodes") >+ ); >+ this.setWhitespaceNodes( >+ PrefUtils.getPref("inspector.dom.showWhitespaceNodes") >+ ); >+ >+ this.pane.panelset.addTransactionListener(this); >+ >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function DVr_Destroy() >+ { >+ this.mDOMTree.treeBoxObject.view = null; >+ this.pane.panelset.removeTransactionListener(this); >+ }, >+ >+ isCommandEnabled: function DVr_IsCommandEnabled(aCommand) >+ { >+ // NB: Don't confuse selected nodes and currentNode. currentNode derives >+ // from currentIndex. Think of currentIndex like the position of the >+ // cursor in a textbox. Commands like Copy need text to be selected, >+ // while Paste and Insert need no selection, only that the cursor be in >+ // the area we're interested in. >+ // XXX Bring all commands around to handling multiple selection. >+ var clipboardNode = null; >+ var currentNode = null; >+ var parentNode = null; >+ var selectedNode = this.selectedNode; >+ if (/^cmdEditPaste/.test(aCommand)) { >+ if (this.mPanel.panelset.clipboardFlavor != "inspector/dom-node") { >+ return false; >+ } >+ clipboardNode = this.mPanel.panelset.getClipboardData(); >+ } >+ if (/^cmdEdit(Paste|Insert)/.test(aCommand)) { >+ currentNode = >+ viewer.currentNode && new XPCNativeWrapper(viewer.currentNode); >+ parentNode = currentNode && currentNode.parentNode; >+ } >+ switch (aCommand) { >+ case "cmdEditPaste": >+ case "cmdEditPasteBefore": >+ // Paste before and after, like Insert, don't operate on a selection, >+ // but the other paste commands do. >+ return this.isValidChild(parentNode, clipboardNode); >+ case "cmdEditPasteReplace": >+ return !!selectedNode && >+ this.isValidChild(parentNode, clipboardNode, selectedNode); >+ case "cmdEditPasteFirstChild": >+ case "cmdEditPasteLastChild": >+ return this.isValidChild(selectedNode, clipboardNode); >+ case "cmdEditPasteAsParent": >+ return !!selectedNode && >+ this.isValidChild(clipboardNode, selectedNode) && >+ this.isValidChild(parentNode, clipboardNode, selectedNode); >+ case "cmdEditInsertAfter": >+ case "cmdEditInsertBefore": >+ return parentNode instanceof nsIDOMElement; >+ case "cmdEditInsertFirstChild": >+ case "cmdEditInsertLastChild": >+ return selectedNode instanceof nsIDOMElement; >+ case "cmdEditCut": >+ case "cmdEditCopy": >+ return !!selectedNode; >+ case "cmdEditDelete": >+ // If at least one of the selected nodes can be deleted, allow it. >+ let selectedNodes = this.getSelectedNodes(); >+ for (let i = 0, n = selectedNodes.length; i < n; ++i) { >+ if (cmdEditDelete.isDeletable(selectedNodes[i])) { >+ return true; >+ } >+ } >+ return false; >+ case "cmdInspectBrowser": >+ if (!(selectedNode instanceof nsIDOMElement)) { >+ return false; >+ } >+ let n = selectedNode.localName.toLowerCase(); >+ return n == "tabbrowser" || n == "browser" || n == "iframe" || >+ n == "frame" || n == "editor"; >+ case "cmdBlink": >+ return selectedNode instanceof nsIDOMElement; >+ case "cmdCopyXML": >+ case "cmdShowPseudoClasses": >+ return true; >+ case "cmdEditInspectInNewWindow": >+ return this.mDOMTree.view.selection.count == 1; >+ } >+ return false; >+ }, >+ >+ /** >+ * Determines whether the passed parent/child combination is valid. >+ * @param parent >+ * @param child >+ * @param replaced >+ * the node the child is replacing (optional) >+ * @return whether the passed parent can have the passed child as a child, >+ */ >+ isValidChild: function DVr_IsValidChild(parent, child, replaced) >+ { >+ // the document (fragment) node must be an only child and can't be >+ // replaced >+ if (parent == null) { >+ return false; >+ } >+ // the only types that can ever have children >+ if (parent.nodeType != nsIDOMNode.ELEMENT_NODE && >+ parent.nodeType != nsIDOMNode.DOCUMENT_NODE && >+ parent.nodeType != nsIDOMNode.DOCUMENT_FRAGMENT_NODE) { >+ >+ return false; >+ } >+ // the only types that can't ever be children >+ if (child.nodeType == nsIDOMNode.DOCUMENT_NODE || >+ child.nodeType == nsIDOMNode.DOCUMENT_FRAGMENT_NODE || >+ child.nodeType == nsIDOMNode.ATTRIBUTE_NODE) { >+ >+ return false; >+ } >+ // doctypes can only be the children of documents >+ if (child.nodeType == nsIDOMNode.DOCUMENT_TYPE_NODE && >+ parent.nodeType != nsIDOMNode.DOCUMENT_NODE) { >+ >+ return false; >+ } >+ // only elements and fragments can have text, cdata, and entities as >+ // children >+ if (parent.nodeType != nsIDOMNode.ELEMENT_NODE && >+ parent.nodeType != nsIDOMNode.DOCUMENT_FRAGMENT_NODE && >+ (child.nodeType == nsIDOMNode.TEXT_NODE || >+ child.nodeType == nsIDOMNode.CDATA_NODE || >+ child.nodeType == nsIDOMNode.ENTITY_NODE)) { >+ >+ return false; >+ } >+ // documents can only have one document element or doctype >+ if (parent.nodeType == nsIDOMNode.DOCUMENT_NODE && >+ (child.nodeType == nsIDOMNode.ELEMENT_NODE || >+ child.nodeType == nsIDOMNode.DOCUMENT_TYPE_NODE) && >+ (!replaced || child.nodeType != replaced.nodeType)) { >+ >+ for (var i = 0; i < parent.childNodes.length; i++) { >+ if (parent.childNodes[i].nodeType == child.nodeType) { >+ return false; >+ } >+ } >+ } >+ return true; >+ }, >+ >+ getCommand: function DVr_GetCommand(aCommand) >+ { >+ if (aCommand in window) { >+ try { >+ return new window[aCommand](); >+ } >+ catch (ex) { >+ // User canceled the transaction. >+ } >+ } >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// nsITransactionListener implementation >+ >+ willDo: function DVr_WillDo(aManager, aTransaction) >+ { >+ var command = aTransaction.wrappedJSObject; >+ if (command instanceof cmdEditDelete) { >+ let nodes = command.nodes; >+ let deletables = []; >+ for (let i = 0, n = nodes.length; i < n; ++i) { >+ let node = nodes[i]; >+ if (cmdEditDelete.isDeletable(node)) { >+ deletables.push(node); >+ } >+ } >+ >+ // Save the currentNode and the linked pane's current subject, but >+ // don't overwrite them on redo. >+ if (!("oldCurrentNode" in command)) { >+ command.oldCurrentNode = this.currentNode; >+ command.oldLinkedSubject = this.mSelection; >+ } >+ >+ if (cmdEditDelete.isDeletable(this.mSelection)) { >+ command.newLinkedSubject = >+ this.getNextInNextBestChain(this.mSelection, undefined, >+ function DVr_WillDo_Filter(aNode) >+ { >+ return deletables.indexOf(aNode) >= 0; >+ }); >+ } >+ } >+ }, >+ >+ didDo: function DVr_DidDo(aManager, aTransaction, aResult) >+ { >+ var command = aTransaction.wrappedJSObject; >+ if (command instanceof cmdEditDelete) { >+ if (!("newLinkedSubject" in command)) { >+ // The linked panel's old subject wasn't deletable, but the >+ // transaction went through because other selected nodes were. Leave >+ // things alone and let the linked subject and any other non-deletable >+ // nodes remain selected. >+ return; >+ } >+ let newLinkedSubject = command.newLinkedSubject; >+ let selection = this.mDOMTree.view.selection; >+ if (selection.count > 0) { >+ // There are still some nodes selected (because they weren't >+ // deletable). newLinkedSubject should be one of them. >+ let idx = this.getRowIndexFromNode(newLinkedSubject); >+ if (!selection.isSelected(idx)) { >+ debug("node chosen for new linked subject was apparently deletable"); >+ return; >+ } >+ this.changeSelection(newLinkedSubject); >+ } >+ else { >+ this.showNodeInTree(newLinkedSubject); >+ } >+ } >+ }, >+ >+ willUndo: stubImpl, >+ >+ didUndo: function DVr_DidUndo(aManager, aTransaction, aResult) >+ { >+ var command = aTransaction.wrappedJSObject; >+ if (command instanceof cmdEditDelete) { >+ // Find all "deleted" rows and select them, even any that weren't >+ // deletable. We also want currentNode and mSelection to reflect the >+ // values they had before this transaction. >+ let nodes = command.nodes; >+ if (!nodes.length) { >+ return; >+ } >+ >+ // Disable selectionChange events, because otherwise the linked pane's >+ // viewers will be flipping around, which is also computational overhead >+ // that we just don't need. >+ this.mDOMTree.treeBoxObject.beginUpdateBatch(); >+ this.beginSelectionBatch(); >+ >+ this.mDOMTree.view.selection.clearSelection(); >+ for (let i = nodes.length - 1; i >= 0; --i) { >+ this.showNodeInTree(nodes[i], true); >+ } >+ this.changeSelection(command.oldLinkedSubject); >+ this.mDOMTree.currentIndex = >+ this.getRowIndexFromNode(command.oldCurrentNode); >+ >+ this.endSelectionBatch(); >+ this.mDOMTree.treeBoxObject.endUpdateBatch(); >+ } >+ }, >+ >+ willRedo: function DVr_WillRedo(aManager, aTransaction) >+ { >+ var command = aTransaction.wrappedJSObject; >+ if (command instanceof cmdEditDelete) { >+ this.willDo(aManager, aTransaction); >+ } >+ }, >+ >+ didRedo: function DVr_DidRedo(aManager, aTransaction, aResult) >+ { >+ var command = aTransaction.wrappedJSObject; >+ if (command instanceof cmdEditDelete) { >+ this.didDo(aManager, aTransaction, aResult); >+ } >+ }, >+ >+ willBeginBatch: stubImpl, >+ >+ didBeginBatch: stubImpl, >+ >+ willEndBatch: stubImpl, >+ >+ didEndBatch: stubImpl, >+ >+ willMerge: stubImpl, >+ >+ didMerge: stubImpl, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Event Dispatching >+ >+ addObserver: function DVr_AddObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ >+ removeObserver: function DVr_RemoveObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// UI Commands >+ >+ showFindDialog: function DVr_ShowFindDialog() >+ { >+ var win = >+ openDialog("chrome://inspector/content/viewers/dom/findDialog.xul", >+ "_blank", "chrome,dependent", this.mFindType, this.mFindDir, >+ this.mFindParams); >+ }, >+ >+ /** >+ * Toggles the setting for displaying anonymous content. >+ */ >+ toggleAnonContent: function DVr_ToggleAnonContent() >+ { >+ var value = PrefUtils.getPref("inspector.dom.showAnon"); >+ PrefUtils.setPref("inspector.dom.showAnon", !value); >+ }, >+ >+ /** >+ * Sets the UI and filters for anonymous content. >+ * >+ * @param aValue >+ * The value that we should be setting things to. >+ */ >+ setAnonContent: function DVr_SetAnonContent(aValue) >+ { >+ this.mDOMView.showAnonymousContent = aValue; >+ this.mPanel.panelset.setCommandAttribute("cmd:toggleAnon", "checked", >+ aValue); >+ }, >+ >+ toggleSubDocs: function DVr_ToggleSubDocs() >+ { >+ var val = !this.mDOMView.showSubDocuments; >+ this.mDOMView.showSubDocuments = val; >+ this.mPanel.panelset.setCommandAttribute("cmd:toggleSubDocs", "checked", >+ val); >+ }, >+ >+ /** >+ * Toggles the visibility of Processing Instructions. >+ */ >+ toggleProcessingInstructions: function DVr_ToggleProcessingInstructions() >+ { >+ var value = PrefUtils.getPref("inspector.dom.showProcessingInstructions"); >+ PrefUtils.setPref("inspector.dom.showProcessingInstructions", !value); >+ }, >+ >+ /** >+ * Sets the visibility of Processing Instructions. >+ * >+ * @param aValue >+ * The visibility of the instructions. >+ */ >+ setProcessingInstructions: function DVr_SetProcessingInstructions(aValue) >+ { >+ this.mPanel.panelset >+ .setCommandAttribute("cmd:toggleProcessingInstructions", "checked", >+ aValue); >+ if (aValue) { >+ this.mDOMView.whatToShow |= NodeFilter.SHOW_PROCESSING_INSTRUCTION; >+ } >+ else { >+ this.mDOMView.whatToShow &= ~NodeFilter.SHOW_PROCESSING_INSTRUCTION; >+ } >+ }, >+ >+ /** >+ * Toggle state of 'Show Accessible Nodes' option. >+ */ >+ toggleAccessibleNodes: function DVr_ToggleAccessibleNodes() >+ { >+ var value = PrefUtils.getPref("inspector.dom.showAccessibleNodes"); >+ PrefUtils.setPref("inspector.dom.showAccessibleNodes", !value); >+ }, >+ >+ /** >+ * Set state of 'Show Accessible Nodes' option. >+ * >+ * @param aValue >+ * if true then accessible nodes will be shown >+ */ >+ setAccessibleNodes: function DVr_SetAccessibleNodes(aValue) >+ { >+ if (!(kAccessibleRetrievalClassID in Components.classes)) { >+ aValue = false; >+ } >+ >+ this.mDOMView.showAccessibleNodes = aValue; >+ this.mPanel.panelset.setCommandAttribute("cmd:toggleAccessibleNodes", >+ "checked", aValue); >+ }, >+ >+ /** >+ * Return state of 'Show Accessible Nodes' option. >+ */ >+ getAccessibleNodes: function DVr_GetAccessibleNodes() >+ { >+ return this.mDOMView.showAccessibleNodes; >+ }, >+ >+ /** >+ * Toggles the value for whitespace nodes. >+ */ >+ toggleWhitespaceNodes: function DVr_ToggleWhitespaceNodes() >+ { >+ var value = PrefUtils.getPref("inspector.dom.showWhitespaceNodes"); >+ PrefUtils.setPref("inspector.dom.showWhitespaceNodes", !value); >+ }, >+ >+ /** >+ * Sets the UI for displaying whitespace nodes. >+ * >+ * @param aValue >+ * true if whitespace nodes should be shown >+ */ >+ setWhitespaceNodes: function DVr_SetWhitespaceNodes(aValue) >+ { >+ this.mPanel.panelset.setCommandAttribute("cmd:toggleWhitespaceNodes", >+ "checked", aValue); >+ this.mDOMView.showWhitespaceNodes = aValue; >+ }, >+ >+ showColumnsDialog: function DVr_ShowColumnsDialog() >+ { >+ var win = >+ openDialog("chrome://inspector/content/viewers/dom/columnsDialog.xul", >+ "_blank", "chrome,dependent", this); >+ }, >+ >+ cmdShowPseudoClasses: function DVr_CmdShowPseudoClasses() >+ { >+ var node = this.selectedNode; >+ >+ if (node) { >+ openDialog("chrome://inspector/content/viewers/dom/" + >+ "pseudoClassDialog.xul", >+ "_blank", "chrome", node); >+ } >+ }, >+ >+ cmdBlink: function DVr_CmdBlink() >+ { >+ this.flashElement(this.selectedNode); >+ }, >+ >+ onTreeSelectionChange: function DVr_OnTreeSelectionChange() >+ { >+ // NB: We're called on deselection, too. >+ var currentIndex = this.mDOMTree.currentIndex; >+ var currentNode = this.currentNode; >+ >+ if (this.mDOMTree.view.selection.isSelected(currentIndex)) { >+ this.changeSelection(currentNode); >+ } >+ // Otherwise, we were deselected. We only care, though, if we're the >+ // object viewer's subject, and there are other nodes selected. (If no >+ // nodes are selected, we'll leave mSelection alone and won't fire any >+ // events, because nobody wants to inspect null.) >+ else if (this.mSelection == currentNode && >+ this.mDOMTree.view.selection.count) { >+ // Find closest nearby selected node and use that. >+ var nearestSelectedIndex = >+ InsUtil.getNearestIndex(currentIndex, this.getSelectedIndexes()); >+ this.changeSelection(this.getNodeFromRowIndex(nearestSelectedIndex)); >+ } >+ >+ viewer.pane.panelset.updateAllCommands(); >+ }, >+ >+ /** >+ * Change the viewer selection. Note that "selection" here refers to the >+ * (not formalized) inIViewer::selection, *not* the tree selection. See >+ * bug 570879. >+ * @param aNode >+ * The new viewer selection. If there is an object panel linked to >+ * ours, this will be used for its subject. >+ */ >+ changeSelection: function DVr_ChangeSelection(aNode) >+ { >+ if (this.mSelectionBatchNest) { >+ this.mPendingSelection = aNode; >+ } >+ else { >+ this.mSelection = aNode; >+ this.mObsMan.dispatchEvent("selectionChange", { selection: aNode } ); >+ if (this.mSelection) { >+ this.flashElement(this.mSelection, true); >+ } >+ } >+ }, >+ >+ setInitialSelection: function DVr_SetInitialSelection(aObject) >+ { >+ var fireSelected = this.mDOMTree.currentIndex == 0; >+ >+ if (this.mPanel.params) { >+ this.showNodeInTree(this.mPanel.params); >+ } >+ else { >+ this.showNodeInTree(aObject, false, true); >+ } >+ >+ if (fireSelected) { >+ this.onTreeSelectionChange(); >+ } >+ }, >+ >+ onPopupShowing: function DVr_OnPopupShowing(aPopup) >+ { >+ if (aPopup.id != "ppDOMContext") { >+ // This is a nested menupopup, and it should have been already taken >+ // care of. >+ return; >+ } >+ this.checkMenu(aPopup); >+ }, >+ >+ /** >+ * Recursively enable/disable descendants of a given popup, based on whether >+ * their commands are enabled or disabled. If the descendant has a >+ * checkvalid attribute, the descendant will be hidden as well as disabled. >+ * Recursively checked menus will be enabled or disabled depending on >+ * whether there are one or more enabled children in their respective >+ * menupopups. >+ * @param aPopup >+ * The menupopup at which to start checking. >+ * @return true if the popup contains any enabled items >+ */ >+ checkMenu: function DVr_CheckMenu(aPopup) { >+ // We can't use XBL getters/setters here, because we're using recursion, >+ // and items in nested menus won't have CSS frames since they're not >+ // visible. >+ var hasEnabledItems = false; >+ for (let i = 0; i < aPopup.childNodes.length; ++i) { >+ let el = aPopup.childNodes[i]; >+ if (el.localName == "menuseparator") { >+ continue; >+ } >+ let subject = el; >+ let isEnabled = false; >+ let checkValid = false; >+ if (el.hasAttribute("command")) { >+ let cmd = document.getElementById(el.getAttribute("command")); >+ if (cmd) { >+ checkValid = el.hasAttribute("checkvalid"); >+ isEnabled = this.isCommandEnabled(cmd.id); >+ subject = cmd; >+ } >+ } >+ else if (el.localName == "menu") { >+ let kid = el.firstChild; >+ while (kid) { >+ if (kid.localName == "menupopup") { >+ // Disable this menu if none of the descendants are enabled. >+ isEnabled = this.checkMenu(kid); >+ break; >+ } >+ kid = kid.nextSibling; >+ } >+ } >+ else if (el.getAttribute("disabled") != "true") { >+ // There is no command here. (Maybe we're being extended?) We'll >+ // leave it up to third parties to manage enabling/disabling their own >+ // menuitems, and assume that they already reflect the correct state >+ // by the time we're called. >+ isEnabled = true; >+ } >+ >+ if (isEnabled) { >+ hasEnabledItems = true; >+ subject.removeAttribute("disabled"); >+ } >+ else { >+ subject.setAttribute("disabled", "true"); >+ } >+ >+ if (checkValid) { >+ el.hidden = !isEnabled; >+ } >+ } >+ >+ return hasEnabledItems; >+ }, >+ >+ cmdInspectBrowser: function DVr_CmdInspectBrowser() >+ { >+ var node = this.selectedNode; >+ var n = node && node.localName.toLowerCase(); >+ if (n == "iframe" || n == "frame" || >+ (node.namespaceURI == kXULNSURI && (n == "browser" || >+ n == "tabbrowser" || >+ n == "editor"))) { >+ this.pane.subject = node.contentDocument; >+ } >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// XML Serialization >+ >+ cmdCopySelectedXML: function DVr_CmdCopySelectedXML() >+ { >+ var node = this.selectedNode; >+ if (node) { >+ var xml = this.toXML(node); >+ >+ var helper = XPCU.getService(kClipboardHelperClassID, >+ "nsIClipboardHelper"); >+ helper.copyString(xml); >+ } >+ }, >+ >+ toXML: function DVr_ToXML(aNode) >+ { >+ return (new XMLSerializer()).serializeToString(aNode); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Click Selection >+ >+ selectByClick: function DVr_SelectByClick() >+ { >+ if (this.mSelecting) { >+ this.stopSelectByClick(); >+ this.removeClickListeners(); >+ } >+ else { >+ // wait until after user releases the mouse after selecting this command >+ // from a UI element >+ window.setTimeout("viewer.startSelectByClick()", 10); >+ } >+ }, >+ >+ startSelectByClick: function DVr_StartSelectByClick() >+ { >+ this.mSelecting = true; >+ this.mSelectDocs = this.getAllDocuments(); >+ >+ for (var i = 0; i < this.mSelectDocs.length; ++i) { >+ var doc = this.mSelectDocs[i]; >+ doc.addEventListener("mousedown", MouseDownListener, true); >+ doc.addEventListener("mouseup", EventCanceller, true); >+ doc.addEventListener("click", ListenerRemover, true); >+ // If user moves the mouse out of the original target area, there >+ // will be no onclick event fired.... so we have to deal with >+ // that. >+ doc.addEventListener("mouseout", ListenerRemover, true); >+ } >+ this.mPanel.panelset.setCommandAttribute("cmd:selectByClick", "checked", >+ "true"); >+ }, >+ >+ doSelectByClick: function DVr_DoSelectByClick(aTarget) >+ { >+ if (aTarget.nodeType == nsIDOMNode.TEXT_NODE) { >+ aTarget = aTarget.parentNode; >+ } >+ >+ this.stopSelectByClick(); >+ this.showNodeInTree(aTarget); >+ }, >+ >+ stopSelectByClick: function DVr_StopSelectByClick() >+ { >+ this.mSelecting = false; >+ >+ this.mPanel.panelset.setCommandAttribute("cmd:selectByClick", "checked", >+ null); >+ }, >+ >+ removeClickListeners: function DVr_RemoveClickListeners() >+ { >+ if (!this.mSelectDocs) { // we didn't select an element by click >+ return; >+ } >+ >+ for (var i = 0; i < this.mSelectDocs.length; ++i) { >+ var doc = this.mSelectDocs[i]; >+ doc.removeEventListener("mousedown", MouseDownListener, true); >+ doc.removeEventListener("mouseup", EventCanceller, true); >+ doc.removeEventListener("click", ListenerRemover, true); >+ doc.removeEventListener("mouseout", ListenerRemover, true); >+ } >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Find Methods >+ >+ startFind: function DVr_StartFind(aType, aDir) >+ { >+ this.mFindResult = null; >+ this.mFindType = aType; >+ this.mFindDir = aDir; >+ this.mFindParams = []; >+ for (var i = 2; i < arguments.length; ++i) { >+ this.mFindParams[i-2] = arguments[i]; >+ } >+ >+ var fn = null; >+ switch (aType) { >+ case "id": >+ fn = "doFindElementById"; >+ break; >+ case "tag": >+ fn = "doFindElementsByTagName"; >+ break; >+ case "attr": >+ fn = "doFindElementsByAttr"; >+ break; >+ }; >+ >+ this.mFindFn = fn; >+ this.mFindWalker = this.createDOMWalker(this.mDOMView.rootNode); >+ this.findNext(); >+ }, >+ >+ findNext: function DVr_FindNext() >+ { >+ var walker = this.mFindWalker; >+ if (!walker) { >+ Components.utils.reportError("deep tree walker unavailable"); >+ return; >+ } >+ var result = null; >+ var currentNode = walker.currentNode; >+ while (currentNode) { >+ if (this[this.mFindFn](walker)) { >+ result = walker.currentNode; >+ walker.nextNode(); >+ break; >+ } >+ currentNode = walker.nextNode(); >+ } >+ >+ if (result && result != this.mFindResult) { >+ this.showNodeInTree(result); >+ this.mFindResult = result; >+ this.mDOMTree.focus(); >+ } >+ else { >+ var bundle = this.mPanel.panelset.stringBundle; >+ var msg = bundle.getString("findNodesDocumentEnd.message"); >+ var title = bundle.getString("findNodesDocumentEnd.title"); >+ >+ var promptService = XPCU.getService(kPromptServiceClassID, >+ "nsIPromptService"); >+ promptService.alert(window, title, msg); >+ } >+ }, >+ >+ doFindElementById: function DVr_DoFindElementById(aWalker) >+ { >+ var re = new RegExp(this.mFindParams[0], "i"); >+ >+ // NB: In HTML getAttribute can return null, so we have to check that it's >+ // actually set; if we don't and the search string is "null", implicit >+ // toString conversion means that we'll match on every element without an >+ // ID. Additionally, for elements without an ID, getAttribute returns an >+ // empty string in XUL (bug 232598), so our check must handle that... >+ return aWalker.currentNode && >+ aWalker.currentNode.nodeType == nsIDOMNode.ELEMENT_NODE && >+ aWalker.currentNode.hasAttribute("id") && >+ re.test(aWalker.currentNode.getAttribute("id")); >+ }, >+ >+ doFindElementsByTagName: function DVr_DoFindElementsByTagName(aWalker) >+ { >+ var re = new RegExp(this.mFindParams[0], "i"); >+ >+ return aWalker.currentNode && >+ aWalker.currentNode.nodeType == nsIDOMNode.ELEMENT_NODE && >+ re.test(aWalker.currentNode.localName); >+ }, >+ >+ doFindElementsByAttr: function DVr_DoFindElementsByAttr(aWalker) >+ { >+ var re = new RegExp(this.mFindParams[1], "i"); >+ >+ return aWalker.currentNode && >+ aWalker.currentNode.nodeType == nsIDOMNode.ELEMENT_NODE && >+ aWalker.currentNode.hasAttribute(this.mFindParams[0]) && >+ re.test(aWalker.currentNode.getAttribute(this.mFindParams[0])); >+ }, >+ >+ /** >+ * Makes sure each ancestor in the given node's ancestor chain is open, so >+ * so that there exists a row in the tree that represents the node. That >+ * row will be selected and scrolled into view. If that node doesn't have a >+ * row in the tree, the nearest ancestor is used as a fallback. Further >+ * parameters allow finer control over what it means to "show" a node, >+ * including overriding the default behavior. >+ * >+ * @param aNode >+ * Node to show. >+ * @param aAugment [optional] >+ * true if selection should add to the current selection, false if it >+ * should clear it and be the only row selected. This has no effect >+ * if aNoSelect is true. >+ * @param aExpand [optional] >+ * true if the node's open state should be changed to open. >+ * @param aNoVisible [optional] >+ * true if you don't care whether the given node is scrolled into >+ * sight. >+ * @param aNoSelect [optional] >+ * true if you don't want the given element to be selected. >+ * @return The current index of the given node in the tree. >+ */ >+ showNodeInTree: >+ function DVr_ShowNodeInTree(aNode, aAugment, aExpand, aNoVisible, >+ aNoSelect) >+ { >+ var bx = this.mDOMTree.treeBoxObject; >+ >+ if (!aNode) { >+ if (!aAugment && !aNoSelect) { >+ bx.view.selection.select(-1); >+ } >+ return -1; >+ } >+ >+ // Keep searching until a pre-created ancestor is found, and then open >+ // each ancestor until the row for the given node is created. >+ var line = []; >+ var parent = aNode; >+ var index = null; >+ while (parent) { >+ index = this.getRowIndexFromNode(parent); >+ line.push(parent); >+ if (index < 0) { >+ // The row for this node hasn't been created yet. >+ parent = >+ this.mDOMUtils.getParentForNode(parent, >+ this.mDOMView.showAnonymousContent); >+ } >+ else { >+ // The ancestor chain is already open above this point. >+ break; >+ } >+ } >+ >+ // We've got all the ancestors, now open them one-by-one from the top >+ // down. >+ var view = bx.view; >+ var lastIndex; >+ for (let i = line.length - 1; i >= 0; --i) { >+ index = this.getRowIndexFromNode(line[i]); >+ if (index < 0) { >+ index = -1; >+ break; // We can't find the row, so stop trying to descend. >+ } >+ if ((aExpand || i > 0) && !view.isContainerOpen(index)) { >+ view.toggleOpenState(index); >+ } >+ lastIndex = index; >+ } >+ >+ if (lastIndex >= 0) { >+ if (!aNoVisible) { >+ bx.ensureRowIsVisible(lastIndex); >+ } >+ if (!aNoSelect) { >+ view.selection.rangedSelect(lastIndex, lastIndex, aAugment); >+ } >+ } >+ >+ return index; >+ }, >+ >+ /** >+ * Rebuild the tree by re-opening previously opened rows, re-selecting >+ * previously selected rows, and restoring the viewer selection and the >+ * node previously at currentNode, if possible. >+ * @param aIncludeAnons [optional] >+ * If a rebuild was triggered in response to a pref change for >+ * showing anonymous content, this must be former pref value. >+ */ >+ rebuild: function DVr_Rebuild(aIncludeAnons) >+ { >+ var selection = this.mDOMTree.view.selection; >+ >+ // Remember all non-ignorable nodes of open rows. Re-opening them will be >+ // the first step to recreating the tree's state. >+ var opened = []; >+ for (let i = 0, n = this.mDOMTree.view.rowCount; i < n; ++i) { >+ if (this.mDOMTree.view.isContainerOpen(i)) { >+ let node = this.getNodeFromRowIndex(i); >+ if (!this.isIgnorableNode(node)) { >+ opened.push(node); >+ } >+ } >+ } >+ >+ // Remember all nodes of selected rows. Also save the indexes of rows of >+ // non-ignorable nodes so we can determine the best viewer selection >+ // candidate below. >+ var ignorableSelectedNodes = []; >+ var nonIgnorableSelectedNodes = []; >+ var nonIgnorableSelectedIndexes = []; >+ let selectedIndexes = this.getSelectedIndexes(); >+ for (let i = 0, n = selectedIndexes.length; i < n; ++i) { >+ let idx = selectedIndexes[i]; >+ let node = this.getNodeFromRowIndex(idx); >+ if (this.isIgnorableNode(node)) { >+ ignorableSelectedNodes.push(node); >+ } >+ else { >+ nonIgnorableSelectedNodes.push(node); >+ nonIgnorableSelectedIndexes.push(idx); >+ } >+ } >+ >+ // Remember the node showing in the object pane. If the current node >+ // there is going to be filtered out, pick another one by using the same >+ // algorithm used when a row is deselected. >+ var viewerSelection = this.selection; >+ if (this.isIgnorableNode(viewerSelection)) { >+ let idx = this.getRowIndexFromNode(viewerSelection); >+ let nearestNonIgnorableSelectedIndex = >+ InsUtil.getNearestIndex(idx, nonIgnorableSelectedIndexes); >+ viewerSelection = >+ this.getNodeFromRowIndex(nearestNonIgnorableSelectedIndex); >+ } >+ if (!viewerSelection) { >+ // There was no nearest non-ignorable selected node (ostensibly, because >+ // there are no non-ignorable selected nodes), so find a fallback from >+ // the next-best chain. >+ if (nonIgnorableSelectedNodes.length) { >+ debug("some nodes are non-ignorable, but no suitable viewer " + >+ "selection was found"); >+ } >+ viewerSelection = >+ this.getNextInNextBestChain(this.selection, aIncludeAnons); >+ } >+ >+ // Remember currentNode. >+ var currentNode = this.currentNode; >+ if (this.isIgnorableNode(currentNode)) { >+ currentNode = this.getNextInNextBestChain(currentNode, aIncludeAnons); >+ } >+ >+ selection.clearSelection(); >+ this.mDOMView.rebuild(); >+ >+ // We're now operating under the new inIDOMView parameters. Restore the >+ // previously opened rows. This won't, however, ensure that all non- >+ // ignorable nodes which were previously exposed will be re-exposed. >+ // Consider the case of going from not showing anons to showing them, and >+ // where the ancestor of a previously exposed, non-ignorable node (or the >+ // node itself) is inserted as a "child" of an anonymous node. See the >+ // comments below about re-selecting nodes for how we deal with this. >+ this.mDOMTree.treeBoxObject.beginUpdateBatch(); >+ for (let i = 0, n = opened.length; i < n; ++i) { >+ let idx = >+ this.showNodeInTree(opened[i], false, // Don't augment the selection. >+ true, // Expand to show children. >+ true, // The node need not be visible. >+ true); // Don't select it. >+ if (idx < 0) { >+ debug("previously opened node expected to be in tree but isn't"); >+ } >+ } >+ >+ // Re-select all rows for non-ignorable nodes which had been previously >+ // selected. >+ this.beginSelectionBatch(); >+ for (let i = 0, n = nonIgnorableSelectedNodes.length; i < n; ++i) { >+ let idx = this.showNodeInTree(nonIgnorableSelectedNodes[i], true); >+ if (idx < 0) { >+ debug("previously selected node expected to have row in tree but " + >+ "doesn't"); >+ } >+ } >+ >+ // For rows of previously selected nodes which are ignorable, we call >+ // showNodeInTree on them without selecting them, in order to make sure as >+ // much of their ancestor chain is exposed as possible. This two-phase >+ // system is necessary because it's not guaranteed that all non-ignorable >+ // rows which were exposed before are now exposed again. See the above >+ // comments about re-opening nodes for why this is true. >+ for (let i = 0, n = ignorableSelectedNodes.length; i < n; ++i) { >+ let idx = this.showNodeInTree(ignorableSelectedNodes[i], false, false, >+ true, true); >+ if (idx >= 0) { >+ debug("previously selected node expected to be ignorable but still " + >+ "has a row in the tree"); >+ // Well, I guess we'll go ahead and select it then... >+ selection.toggleSelect(idx); >+ } >+ } >+ >+ // Restore the viewer selection. >+ if (!selection.count) { >+ // All previously selected nodes have been filtered out. Select the >+ // fallback we found from the next-best chain. >+ this.showNodeInTree(viewerSelection); >+ } >+ else if (this.mPendingSelection != viewerSelection) { >+ // The previous viewer selection should now be one of the selected >+ // nodes, but it's not the one that was selected last. >+ if (this.getRowIndexFromNode(viewerSelection) >= 0) { >+ this.changeSelection(viewerSelection); >+ } >+ else { >+ debug("new viewer selection expected to have row in tree but " + >+ "doesn't"); >+ } >+ } >+ >+ // Attempt to restore currentIndex to the previous currentNode. >+ var currentIndex = this.showNodeInTree(currentNode, false, false, true, >+ true); >+ if (currentIndex >= 0) { >+ this.mDOMTree.currentIndex = currentIndex; >+ } >+ else if (currentNode) { >+ debug("currentNode expected to have row in tree but doesn't"); >+ } >+ >+ this.mDOMTree.treeBoxObject.endUpdateBatch(); >+ this.endSelectionBatch(); >+ }, >+ >+ /** >+ * Determine whether the given node will be displayed in the tree, based on >+ * the tree's current show parameters and node filters. >+ * @param aNode >+ * A node contained within the subtree of the tree's root (including >+ * any subdocuments and their children). >+ * @return A boolean indicating whether the node is ignorable >+ */ >+ isIgnorableNode: function DVr_IsIgnorableNode(aNode) >+ { >+ if (!(aNode instanceof nsIDOMNode)) { >+ return true; >+ } >+ >+ // The node filter doesn't actually get checked for documents in >+ // inDOMView. >+ if (!(aNode instanceof nsIDOMDocument)) { >+ let nodeTypeFilter = 1 << (aNode.nodeType - 1); >+ if (!(this.mDOMView.whatToShow & nodeTypeFilter)) { >+ return true; >+ } >+ } >+ >+ if (aNode instanceof nsIDOMCharacterData && >+ this.mDOMUtils.isIgnorableWhitespace(aNode) && >+ !this.mDOMView.showWhitespaceNodes) { >+ return true; >+ } >+ >+ if (aNode != this.mDOMView.rootNode) { >+ if (!this.mDOMView.showSubDocuments && >+ aNode.ownerDocument != this.mDOMView.rootNode) { >+ return true; >+ } >+ >+ if (!this.mDOMView.showAnonymousContent) { >+ // Anonymous nodes are obviously ignorable, but so are non-anonymous >+ // nodes in the contentDocument of an anonymous element (as is the >+ // contentDocument itself). >+ let current = aNode; >+ if (current instanceof nsIDOMDocument) { >+ current = this.mDOMUtils.getParentForNode(current, true); >+ } >+ while (current && current.ownerDocument) { >+ if (current.ownerDocument.getBindingParent(current)) { >+ return true; >+ } >+ if (current.ownerDocument == this.mDOMView.rootNode) { >+ break; >+ } >+ current = this.mDOMUtils.getParentForNode(current.ownerDocument, >+ true); >+ } >+ } >+ } >+ >+ return false; >+ }, >+ >+ /** >+ * The next-best chain extending from a given node is defined as the next >+ * non-ignorable siblings in document order, followed the preceding non- >+ * ignorable siblings in reverse document order, followed by the parent node >+ * (if it's non-ignorable) and its non-ignorable siblings ordered similarly, >+ * continuing all the way up the ancestor chain. >+ * @param aNode >+ * The node for which we'll traverse its next-best chain. >+ * @param aIncludeAnons [optional] >+ * Whether to consider the effects of anonymous content on the chain >+ * structure. Note that this is not necessarily the same as the DOM >+ * view's showAnonymousContent attribute, and even if true, won't >+ * affect whether anonymous nodes can be returned. However, the >+ * default is whatever the showAnonymousContent attribute's value is. >+ * @param aFilterFn [optional] >+ * If specified, when a node is considered, aFilterFn will be called >+ * with that node as its only parameter. A truthy return value will >+ * disqualify the node's eligibility to be returned as the next in >+ * the next-best chain. NB: A falsy return value won't guarantee >+ * that the node will positively appear in the chain; all nodes still >+ * need to pass the isIgnorableNode check. >+ * @return The next node in the next-best chain. >+ */ >+ getNextInNextBestChain: >+ function DVr_GetNextInNextBestChain(aNode, aIncludeAnons, aFilterFn) >+ { >+ if (!aNode) { >+ return null; >+ } >+ >+ var withoutFilter = function DVr_GetNextInNextBestChain_IsIgnorable(aNode) >+ { >+ return viewer.isIgnorableNode(aNode); >+ }; >+ var withFilter = >+ function DVr_GetNextInNextBestChain_FilteredIsIgnorable(aNode) >+ { >+ return viewer.isIgnorableNode(aNode) || aFilterFn(aNode); >+ }; >+ >+ var isIgnorable = aFilterFn ? withFilter : withoutFilter; >+ >+ >+ // The approach is broken down as follows: >+ // 1. Locating the topmost ignorable node in the ancestor chain (including >+ // the given node). >+ // 2. Locating the next non-ignorable sibling of that ancestor, beginning >+ // by searching forward in the sibling group starting at that node then >+ // backwards if we exhaust the list of all siblings that follow. >+ var showAnons = this.mDOMView.showAnonymousContent; >+ var ancestorChain = []; >+ var ancestor = aNode; >+ while (ancestor != this.mDOMView.rootNode) { >+ ancestor = this.mDOMUtils.getParentForNode(ancestor, showAnons); >+ if (!ancestor) { >+ break; >+ } >+ ancestorChain.push(ancestor); >+ } >+ var topmost = aNode; >+ for (let i = ancestorChain.length - 1; i >= 0; --i) { >+ // XXX This is O(h*d), where h is the node depth from the root, and d is >+ // the document nesting level of aNode's ownerDocument. If the document >+ // consists entirely of nested iframes/browsers/what-have-you, that >+ // means it will technically be O(h^2). There's room for optimization >+ // here, but d is expected to be much smaller than h in practice, i.e., >+ // anywhere between 1 and something like 3, and I can't think of a good >+ // way to get around this right now without creating API awkwardness. >+ if (isIgnorable(ancestorChain[i])) { >+ topmost = ancestorChain[i]; >+ break; >+ } >+ } >+ // Short circuit for rootNode; it won't have any siblings. >+ if (topmost == this.mDOMView.rootNode) { >+ // Just in case for some crazy reason the root node is ignorable... >+ return isIgnorable(topmost) ? null : topmost; >+ } >+ >+ // Follow through on step 2. >+ >+ // The nature of anonymous content means that the nodes around aNode can >+ // get completely rearranged, depending on whether we're showing anonymous >+ // content or not. If we're getting called from a rebuild due to a pref >+ // change for showing anonymous content, showAnons is going to reflect the >+ // new value. If that's why we are getting called, we want to select from >+ // the next-best chain based on the order nodes were visually presented >+ // when the user toggled the pref, which is is why we need the >+ // aIncludeAnons override, since showAnons is untrustworthy here. >+ var includeAnons = >+ aIncludeAnons === undefined ? showAnons : aIncludeAnons; >+ // NB: By allowing includeAnons to deviate from showAnons above, we can't >+ // guarantee that ancestor will be non-ignorable (it might be anonymous, >+ // and we're not showing anons), so we'll need to check for it later. >+ ancestor = this.mDOMUtils.getParentForNode(topmost, includeAnons); >+ // As a side-effect of special-casing the rootNode-as-topmost check >+ // earlier, we're guaranteed ancestor is non-null here. >+ var walker = this.createDOMWalker(ancestor, includeAnons); >+ var current = walker.firstChild(); >+ >+ // We have to relocate the walker over topmost by iterating over nodes >+ // until we get there. We'll save the ones we pass up along the way so we >+ // can immediately begin looking at those preceding nodes in reverse order >+ // if we find that we've exhausted all of the nodes that follow. >+ var preceding = []; >+ while (current != topmost) { >+ preceding.push(current); >+ current = walker.nextSibling(); >+ if (!current) { >+ debug("unexpected end of nodes"); >+ return null; >+ } >+ } >+ >+ // Look for the next non-ignorable in the nodes that follow topmost. >+ do { >+ current = walker.nextSibling(); >+ if (!isIgnorable(current)) { >+ return current; >+ } >+ } while (current); >+ >+ // Look for the next non-ignorable in the nodes that precede topmost. >+ for (let i = preceding.length - 1; i >= 0; --i) { >+ current = preceding[i]; >+ if (!isIgnorable(current)) { >+ return current; >+ } >+ } >+ >+ // All of the adjacent nodes are ignorable, too. Use topmost's parent, >+ // which we know to be non-ignorable (by virtue of it being an ancestor of >+ // topmost). Recall from before that we can't be sure that the ancestor >+ // we've got in |ancestor| is non-ignorable, though... >+ if (includeAnons != showAnons) { >+ ancestor = this.mDOMUtils.getParentForNode(topmost, showAnons); >+ } >+ >+ return ancestor; >+ }, >+ >+ /** >+ * Convenience method for instantiating a deep tree walker, using much of >+ * the same preferences as the DOM view. >+ * @param aRoot >+ * The root node to begin traversal. See the W3 Traversal spec for >+ * more information. >+ * @param aShowAnons [optional] >+ * Whether to include anonymous content in the walk. This is the >+ * same as setting showAnonymousContent on an instantiated deep tree >+ * walker. The default is the value of the showAnonymousContent >+ * attribute on the DOM view. >+ */ >+ createDOMWalker: >+ function DVr_CreateDOMWalker(aRoot, aShowAnons) >+ { >+ var walker = XPCU.createInstance(kDeepTreeWalkerClassID, >+ "inIDeepTreeWalker"); >+ walker.showAnonymousContent = aShowAnons === undefined ? >+ this.mDOMView.showAnonymousContent : >+ aShowAnons; >+ walker.showSubDocuments = this.mDOMView.showSubDocuments; >+ walker.init(aRoot, this.mDOMView.whatToShow); >+ return walker; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Columns >+ >+ // XXX re-implement custom columns code someday >+ >+ initColumns: function DVr_InitColumns() >+ { >+ var colPref = PrefUtils.getPref("inspector.dom.columns"); >+ var cols = colPref.split(",") >+ this.mColumns = cols; >+ this.mColumnHash = {}; >+ }, >+ >+ saveColumns: function DVr_SaveColumns() >+ { >+ var cols = this.mColumns.join(","); >+ PrefUtils.setPref("inspector.dom.columns", cols); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Flashing >+ >+ flashElement: function DVr_FlashElement(aElement, aIsOnSelect) >+ { >+ // make sure we only try to flash element nodes, and don't >+ // flash the documentElement (it's too darn big!) >+ if (aElement.nodeType == nsIDOMNode.ELEMENT_NODE && >+ aElement != aElement.ownerDocument.documentElement) { >+ >+ var flasher = this.mPanel.panelset.flasher; >+ if (aIsOnSelect) { >+ flasher.flashElementOnSelect(aElement); >+ } >+ else { >+ flasher.flashElement(aElement); >+ } >+ } >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Prefs >+ >+ /** >+ * Called by PrefChangeObserver. >+ * >+ * @param aName >+ * The name of the preference that has been changed. >+ */ >+ onPrefChanged: function DVr_OnPrefChanged(aName) >+ { >+ var value = PrefUtils.getPref(aName); >+ var includeAnons = undefined; >+ >+ switch (aName) { >+ case "inspector.dom.showAnon": >+ includeAnons = this.mDOMView.showAnonymousContent; >+ this.setAnonContent(value); >+ break; >+ >+ case "inspector.dom.showProcessingInstructions": >+ this.setProcessingInstructions(value); >+ break; >+ >+ case "inspector.dom.showAccessibleNodes": >+ this.setAccessibleNodes(value); >+ break; >+ >+ case "inspector.dom.showWhitespaceNodes": >+ this.setWhitespaceNodes(value); >+ break; >+ >+ default: >+ return; >+ } >+ >+ this.rebuild(includeAnons); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Uncategorized >+ >+ getAllDocuments: function DVr_GetAllDocuments() >+ { >+ var doc = this.mDOMView.rootNode; >+ var results = [doc]; >+ this.findDocuments(doc, results); >+ return results; >+ }, >+ >+ findDocuments: function DVr_FindDocuments(aDoc, aArray) >+ { >+ this.addKidsToArray(aDoc.getElementsByTagName("frame"), aArray); >+ this.addKidsToArray(aDoc.getElementsByTagName("iframe"), aArray); >+ this.addKidsToArray(aDoc.getElementsByTagNameNS(kXULNSURI, "browser"), >+ aArray); >+ this.addKidsToArray(aDoc.getElementsByTagNameNS(kXULNSURI, "tabbrowser"), >+ aArray); >+ this.addKidsToArray(aDoc.getElementsByTagNameNS(kXULNSURI, "editor"), >+ aArray); >+ }, >+ >+ addKidsToArray: function DVr_AddKidsToArray(aKids, aArray) >+ { >+ for (var i = 0; i < aKids.length; ++i) { >+ try { >+ if (!aKids[i].contentDocument) >+ continue; >+ aArray.push(aKids[i].contentDocument); >+ // Now recurse down into the kid and look for documents there >+ this.findDocuments(aKids[i].contentDocument, aArray); >+ } >+ catch (ex) { >+ // if we can't access the content document, skip it >+ } >+ } >+ }, >+ >+ /** >+ * Get the node corresponding to the tree's currentIndex (the row with the >+ * focus rect). NB: This is *not* a method to get the tree's selection. >+ * Use selectedNode or getSelectedNodes for that. >+ * @return the node corresponding to the tree's currentIndex, which may or >+ * may not be a part of the tree's selection >+ */ >+ get currentNode() >+ { >+ var index = this.mDOMTree.currentIndex; >+ return this.getNodeFromRowIndex(index); >+ }, >+ >+ /** >+ * Get the node represented by the tree's selection. >+ * @return The currently selected node, or null if zero or two or more nodes >+ * are selected. >+ */ >+ get selectedNode() >+ { >+ if (this.mDOMTree.view.selection.count == 1) { >+ var minAndMax = {}; >+ this.mDOMTree.view.selection.getRangeAt(0, minAndMax, minAndMax); >+ return this.getNodeFromRowIndex(minAndMax.value); >+ } >+ return null; >+ }, >+ >+ /** >+ * Get the nodes corresponding to the tree's selected rows. >+ * @return An array of nodes. >+ */ >+ getSelectedNodes: function DVr_GetSelectedNodes() >+ { >+ var nodes = []; >+ var indexes = this.getSelectedIndexes(); >+ for (let i = 0, n = indexes.length; i < n; ++i) { >+ nodes.push(this.getNodeFromRowIndex(indexes[i])); >+ } >+ return nodes; >+ }, >+ >+ /** >+ * Determine the tree's selected rows. >+ * @return An array of row indexes. >+ */ >+ getSelectedIndexes: function DVr_GetSelectedIndexes() >+ { >+ var indexes = []; >+ var selection = this.mDOMTree.view.selection; >+ for (let i = 0, n = selection.getRangeCount(); i < n; ++i) { >+ var min = {}; >+ var max = {}; >+ selection.getRangeAt(i, min, max); >+ for (let j = min.value; j <= max.value; ++j) { >+ indexes.push(j); >+ } >+ } >+ return indexes; >+ }, >+ >+ getNodeFromRowIndex: function DVr_GetNodeFromRowIndex(aIndex) >+ { >+ try { >+ return this.mDOMView.getNodeFromRowIndex(aIndex); >+ } >+ catch (ex) { >+ return null; >+ } >+ }, >+ >+ getRowIndexFromNode: function DVr_GetRowIndexFromNode(aNode) >+ { >+ try { >+ return this.mDOMView.getRowIndexFromNode(aNode); >+ } >+ catch (ex) { >+ return -1; >+ } >+ } >+}; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Command Objects >+ >+/** >+ * Deletes one or more nodes from the tree. >+ */ >+function cmdEditDelete() >+{ >+ // Approach: >+ // 1. Order the nodes with the primary criterion being the node depth, with >+ // the nodes of greatest depth appearing near the beginning of the list. >+ // The secondary (tiebreaker) criterion is applied only to nodes which >+ // are siblings, and is the node order, corresponding to the nodes' >+ // indexing in their parents' childNodes NodeLists. >+ // 2. Iterate over the list, storing the current node's parent and its next >+ // sibling (or null if it's the last of its parent's children). >+ // >+ // Observe that after the nodes are deleted, this allows us to cleanly undo >+ // this transaction by working backwards and reinserting nodes. >+ var nodes = viewer.getSelectedNodes().sort(cmdEditDelete.sortComparator); >+ >+ this.nodes = []; >+ this.mParents = []; >+ this.mSiblings = []; >+ >+ var didPrompt = false; >+ for (let i = 0, n = nodes.length; i < n; ++i) { >+ let node = nodes[i]; >+ >+ // If we delete a descendant of an anonymous node and that anonymous >+ // node's binding parent, the nodes array and the mParents array (and >+ // potentially the mSiblings array) would continue to needlessly reference >+ // nodes from that anonymous subtree. Even if the binding parent gets >+ // restored via undo, a new anonymous content tree will be created for it, >+ // so we can eliminate the references to the nodes in the old subtree. >+ let bindingParent = node.ownerDocument.getBindingParent(node); >+ if (bindingParent && cmdEditDelete.isDeletable(bindingParent) && >+ nodes.indexOf(bindingParent, i) >= 0) { // XXX O(1/2 * n^2) >+ // Notify about the issue described above, and ask if it's okay to >+ // continue. >+ if (!didPrompt) { >+ let bundle = viewer.pane.panelset.stringBundle; >+ let msg = bundle.getString("irrecoverableSubtree.message"); >+ let title = bundle.getString("irrecoverableSubtree.title"); >+ >+ let promptService = XPCU.getService(kPromptServiceClassID, >+ "nsIPromptService"); >+ let confirmation = promptService.confirm(window, title, msg); >+ >+ if (!confirmation) { >+ throw new Error("User canceled transaction"); >+ } >+ >+ didPrompt = true; >+ } >+ } >+ else { >+ this.nodes.push(node); >+ this.mParents.push(node.parentNode); >+ this.mSiblings.push(node.nextSibling); >+ } >+ } >+ >+ this.wrappedJSObject = this; >+} >+ >+cmdEditDelete.sortComparator = function Delete_SortComparator(a, b) >+{ >+ // Sibling nodes get arranged by natural order. >+ if (a.parentNode && a.parentNode == b.parentNode) { >+ let kids = a.parentNode.childNodes; >+ for (let i = 0, n = kids.length; i < n; ++i) { >+ if (kids[i] == a) { >+ return -1; >+ } >+ if (kids[i] == b) { >+ break; >+ } >+ } >+ return 1; >+ } >+ >+ // Otherwise, nodes at greatest depth appear first. >+ var rootNode = viewer.mDOMView.rootNode; >+ var showAnons = viewer.mDOMView.showAnonymousContent; >+ var aAncestor = viewer.mDOMUtils.getParentForNode(a, showAnons); >+ var bAncestor = viewer.mDOMUtils.getParentForNode(b, showAnons); >+ >+ // Check for equivalence to the root node, too, because getParentForNode >+ // will walk all the way up the tree (e.g., out of a content document to a >+ // browser containing it). >+ while (aAncestor != bAncestor && aAncestor && bAncestor && >+ aAncestor != rootNode && bAncestor != rootNode) { >+ aAncestor = viewer.mDOMUtils.getParentForNode(aAncestor, showAnons); >+ bAncestor = viewer.mDOMUtils.getParentForNode(bAncestor, showAnons); >+ } >+ if (!aAncestor || aAncestor == rootNode) { >+ return 1; >+ } >+ return -1; >+}; >+ >+/** >+ * Determine if a node is deletable by our deletion methods. >+ * @param aNode >+ * The node to check. >+ * @param aFailure [optional] >+ * Outparam whose value will correspond to a cmdEditDelete error >+ * constant. If the node is found to be deletable, aFailure will be >+ * not be altered. >+ * @return Boolean indicating deletability. >+ */ >+cmdEditDelete.isDeletable = function Delete_IsDeletable(aNode, aFailure) >+{ >+ var failure = aFailure || { }; >+ if (!aNode) { >+ failure.value = this.NODE_NULL; >+ return false; >+ } >+ var parent = aNode.parentNode; >+ if (!parent) { >+ failure.value = this.NO_PARENT; >+ return false; >+ } >+ if (Array.indexOf(parent.childNodes, aNode) < 0) { >+ failure.value = this.NOT_EXPLICIT_CHILD; >+ return false; >+ } >+ return true; >+}; >+ >+cmdEditDelete.NODE_NULL = 1; >+cmdEditDelete.NO_PARENT = 2; >+cmdEditDelete.NOT_EXPLICIT_CHILD = 3; >+ >+cmdEditDelete.prototype = new inBaseCommand(false); >+cmdEditDelete.prototype.constructor = cmdEditDelete; >+ >+cmdEditDelete.prototype.nodes = null; >+ >+cmdEditDelete.prototype.doTransaction = function Delete_DoTransaction() >+{ >+ // Note that the "indexes" here refer to the given nodes' indexes in this >+ // instance's |nodes| array, not the row indexes of the view. >+ this.mDeletedIndexes = []; >+ for (let i = 0, n = this.nodes.length; i < n; ++i) { >+ let node = this.nodes[i]; >+ let failure = {}; >+ if (cmdEditDelete.isDeletable(node, failure)) { >+ try { >+ this.mParents[i].removeChild(node); >+ this.mDeletedIndexes.push(i); >+ } >+ catch (ex) { >+ Components.utils.reportError(node + " was expected to be deletable but isn't"); >+ } >+ } >+ else { >+ let consoleMsg = node.toString(); >+ switch (failure.value) { >+ case cmdEditDelete.NO_PARENT: >+ consoleMsg += " has no parent node and cannot be deleted."; >+ break; >+ case cmdEditDelete.NOT_EXPLICIT_CHILD: >+ consoleMsg += " is anonymous to its parent node and cannot be deleted."; >+ break; >+ } >+ this.logString(consoleMsg); >+ } >+ } >+}; >+ >+cmdEditDelete.prototype.logString = function Delete_LogString(aMessage) >+{ >+ if (("mConsoleService" in this)) { >+ // This is not the first call. >+ if (this.mConsoleService) { >+ this.mConsoleService.logStringMessage(aMessage); >+ } >+ else { >+ dump(aMessage); >+ } >+ } >+ else { >+ try { >+ this.mConsoleService = XPCU.getService("@mozilla.org/consoleservice;1", >+ "nsIConsoleService"); >+ } >+ catch (ex) { >+ // Null it out for the next call, so we can use our fallback. >+ this.mConsoleService = null; >+ } >+ this.logString(aMessage); >+ } >+}; >+ >+cmdEditDelete.prototype.undoTransaction = function Delete_UndoTransaction() >+{ >+ // Recall that since not all nodes in this.nodes are necessarily deletable, >+ // this.mDeletedIndexes is a list of indexes into this.nodes where the node >+ // at each index is one which was found to be deletable and was successfully >+ // removed. >+ for (let i = this.mDeletedIndexes.length - 1; i >= 0; --i) { >+ let idx = this.mDeletedIndexes[i]; >+ try { >+ this.mParents[idx].insertBefore(this.nodes[idx], this.mSiblings[idx]); >+ } >+ catch (ex) { >+ // XXX allow recovery from external manipulation >+ Components.utils.reportError("Couldn't undo deletion for node " + >+ this.nodes[idx]); >+ } >+ } >+}; >+ >+function cmdEditCut() {} >+ >+cmdEditCut.prototype = new inBaseCommand(false); >+ >+cmdEditCut.prototype.cmdCopy = null; >+cmdEditCut.prototype.cmdDelete = null; >+ >+cmdEditCut.prototype.doTransaction = function Cut_DoTransaction() >+{ >+ if (!this.cmdCopy) { >+ this.cmdDelete = new cmdEditDelete(); >+ this.cmdCopy = new cmdEditCopy(); >+ } >+ this.cmdCopy.doTransaction(); >+ this.cmdDelete.doTransaction(); >+}; >+ >+cmdEditCut.prototype.undoTransaction = function Cut_UndoTransaction() >+{ >+ this.cmdDelete.undoTransaction(); >+}; >+ >+function cmdEditCopy() { >+ this.mNode = viewer.selectedNode; >+} >+ >+cmdEditCopy.prototype = new inBaseCommand(); >+ >+cmdEditCopy.prototype.mNode = null; >+ >+cmdEditCopy.prototype.doTransaction = function Copy_DoTransaction() >+{ >+ if (this.mNode) { >+ viewer.pane.panelset.setClipboardData(this.mNode.cloneNode(true), >+ "inspector/dom-node", null); >+ } >+}; >+ >+/** >+ * Pastes the node on the clipboard as the next sibling of the selected node. >+ */ >+function cmdEditPaste() {} >+ >+cmdEditPaste.prototype = new inBaseCommand(false); >+ >+cmdEditPaste.prototype.pastedNode = null; >+cmdEditPaste.prototype.pastedBefore = null; >+ >+cmdEditPaste.prototype.doTransaction = function Paste_DoTransaction() >+{ >+ var node = this.pastedNode || viewer.pane.panelset.getClipboardData(); >+ var ref = this.pastedBefore || viewer.currentNode; >+ if (ref) { >+ this.pastedNode = node.cloneNode(true); >+ this.pastedBefore = ref; >+ ref.parentNode.insertBefore(this.pastedNode, ref.nextSibling); >+ return false; >+ } >+ return true; >+}; >+ >+cmdEditPaste.prototype.undoTransaction = function Paste_UndoTransaction() >+{ >+ if (this.pastedNode) { >+ this.pastedNode.parentNode.removeChild(this.pastedNode); >+ } >+}; >+ >+/** >+ * Pastes the node on the clipboard as the previous sibling of the selected >+ * node. >+ */ >+function cmdEditPasteBefore() {} >+ >+cmdEditPasteBefore.prototype = new inBaseCommand(false); >+ >+cmdEditPasteBefore.prototype.pastedNode = null; >+cmdEditPasteBefore.prototype.pastedBefore = null; >+ >+cmdEditPasteBefore.prototype.doTransaction = >+ function PasteBefore_DoTransaction() >+{ >+ var node = this.pastedNode || viewer.pane.panelset.getClipboardData(); >+ var ref = this.pastedBefore || viewer.currentNode; >+ if (ref) { >+ this.pastedNode = node.cloneNode(true); >+ this.pastedBefore = ref; >+ ref.parentNode.insertBefore(this.pastedNode, ref); >+ return false; >+ } >+ return true; >+}; >+ >+cmdEditPasteBefore.prototype.undoTransaction = >+ function PasteBefore_UndoTransaction() >+{ >+ if (this.pastedNode) { >+ this.pastedNode.parentNode.removeChild(this.pastedNode); >+ } >+}; >+ >+/** >+ * Pastes the node on the clipboard in the place of the selected node, >+ * overwriting it. >+ */ >+function cmdEditPasteReplace() {} >+ >+cmdEditPasteReplace.prototype = new inBaseCommand(false); >+ >+cmdEditPasteReplace.prototype.pastedNode = null; >+cmdEditPasteReplace.prototype.originalNode = null; >+ >+cmdEditPasteReplace.prototype.doTransaction = >+ function PasteReplace_DoTransaction() >+{ >+ var node = this.pastedNode || viewer.pane.panelset.getClipboardData(); >+ var selected = this.originalNode || viewer.selectedNode; >+ if (selected) { >+ this.pastedNode = node.cloneNode(true); >+ this.originalNode = selected; >+ selected.parentNode.replaceChild(this.pastedNode, selected); >+ return false; >+ } >+ return true; >+}; >+ >+cmdEditPasteReplace.prototype.undoTransaction = >+ function PasteReplace_UndoTransaction() >+{ >+ if (this.pastedNode) { >+ this.pastedNode.parentNode.replaceChild(this.originalNode, >+ this.pastedNode); >+ } >+}; >+ >+/** >+ * Pastes the node on the clipboard as the first child of the selected node. >+ */ >+function cmdEditPasteFirstChild() {} >+ >+cmdEditPasteFirstChild.prototype = new inBaseCommand(false); >+ >+cmdEditPasteFirstChild.prototype.pastedNode = null; >+cmdEditPasteFirstChild.prototype.pastedBefore = null; >+ >+cmdEditPasteFirstChild.prototype.doTransaction = >+ function PasteFirstChild_DoTransaction() >+{ >+ var node = this.pastedNode || viewer.pane.panelset.getClipboardData(); >+ var selected = this.pastedBefore || viewer.selectedNode; >+ if (selected) { >+ this.pastedNode = node.cloneNode(true); >+ this.pastedBefore = selected.firstChild; >+ selected.insertBefore(this.pastedNode, this.pastedBefore); >+ return false; >+ } >+ return true; >+}; >+ >+cmdEditPasteFirstChild.prototype.undoTransaction = >+ function PasteFirstChild_UndoTransaction() >+{ >+ if (this.pastedNode) { >+ this.pastedNode.parentNode.removeChild(this.pastedNode); >+ } >+}; >+ >+/** >+ * Pastes the node on the clipboard as the last child of the selected node. >+ */ >+function cmdEditPasteLastChild() {} >+ >+cmdEditPasteLastChild.prototype = new inBaseCommand(false); >+ >+cmdEditPasteLastChild.prototype.pastedNode = null; >+cmdEditPasteLastChild.prototype.selectedNode = null; >+ >+cmdEditPasteLastChild.prototype.doTransaction = >+ function PasteLastChild_DoTransaction() >+{ >+ var node = this.pastedNode || viewer.pane.panelset.getClipboardData(); >+ var selected = this.selectedNode || viewer.selectedNode; >+ if (selected) { >+ this.pastedNode = node.cloneNode(true); >+ this.selectedNode = selected; >+ selected.appendChild(this.pastedNode); >+ return false; >+ } >+ return true; >+}; >+ >+cmdEditPasteLastChild.prototype.undoTransaction = >+ function PasteLastChild_UndoTransaction() >+{ >+ if (this.selectedNode) { >+ this.selectedNode.removeChild(this.pastedNode); >+ } >+}; >+ >+/** >+ * Pastes the node on the clipboard in the place of the selected node, making >+ * the selected node its child. >+ */ >+function cmdEditPasteAsParent() {} >+ >+cmdEditPasteAsParent.prototype = new inBaseCommand(false); >+ >+cmdEditPasteAsParent.prototype.pastedNode = null; >+cmdEditPasteAsParent.prototype.originalNode = null; >+cmdEditPasteAsParent.prototype.originalParentNode = null; >+ >+cmdEditPasteAsParent.prototype.doTransaction = >+ function PasteAsParent_DoTransaction() >+{ >+ var node = this.pastedNode || viewer.pane.panelset.getClipboardData(); >+ var selected = this.originalNode || viewer.selectedNode; >+ var parent = this.originalParentNode || selected.parentNode; >+ if (selected) { >+ this.pastedNode = node.cloneNode(true); >+ this.originalNode = selected; >+ this.originalParentNode = parent; >+ parent.replaceChild(this.pastedNode, selected); >+ this.pastedNode.appendChild(selected); >+ return false; >+ } >+ return true; >+}; >+ >+cmdEditPasteAsParent.prototype.undoTransaction = >+ function PasteAsParent_UndoTransaction() >+{ >+ if (this.pastedNode) { >+ this.originalParentNode.replaceChild(this.originalNode, >+ this.pastedNode); >+ } >+}; >+ >+/** >+ * Generic prototype for inserting a new node somewhere >+ */ >+function InsertNode() {} >+ >+InsertNode.prototype = new inBaseCommand(false); >+ >+InsertNode.prototype.insertedNode = null; >+InsertNode.prototype.originalNode = null; >+InsertNode.prototype.attr = null; >+ >+InsertNode.prototype.insertNode = function Insert_InsertNode() >+{ >+}; >+ >+InsertNode.prototype.createNode = function Insert_CreateNode() >+{ >+ var doc = this.originalNode.ownerDocument; >+ if (!this.attr) { >+ this.attr = { type: null, value: null, >+ namespaceURI: this.originalNode.namespaceURI, >+ accepted: false, >+ enableNamespaces: doc.contentType != "text/html" }; >+ >+ window.openDialog("chrome://inspector/content/viewers/dom/" + >+ "insertDialog.xul", >+ "insert", "chrome,modal,centerscreen", doc, >+ this.attr); >+ } >+ >+ if (this.attr.accepted) { >+ switch (this.attr.type) { >+ case nsIDOMNode.ELEMENT_NODE: >+ if (this.attr.enableNamespaces) { >+ this.insertedNode = doc.createElementNS(this.attr.namespaceURI, >+ this.attr.value); >+ } >+ else { >+ this.insertedNode = doc.createElement(this.attr.value); >+ } >+ break; >+ case nsIDOMNode.TEXT_NODE: >+ this.insertedNode = doc.createTextNode(this.attr.value); >+ break; >+ } >+ return true; >+ } >+ return false; >+}; >+ >+InsertNode.prototype.doTransaction = function Insert_DoTransaction() >+{ >+ if (this.originalNode) { >+ if (this.createNode()) { >+ this.insertNode(); >+ return false; >+ } >+ } >+ return true; >+}; >+ >+InsertNode.prototype.undoTransaction = function Insert_UndoTransaction() >+{ >+ if (this.insertedNode) { >+ this.insertedNode.parentNode.removeChild(this.insertedNode); >+ } >+}; >+ >+/** >+ * Inserts a node after the selected node. >+ */ >+function cmdEditInsertAfter() >+{ >+ this.originalNode = viewer.currentNode; >+} >+ >+cmdEditInsertAfter.prototype = new InsertNode(); >+ >+cmdEditInsertAfter.prototype.insertNode = function InsertAfter_InsertNode() >+{ >+ this.originalNode.parentNode.insertBefore(this.insertedNode, >+ this.originalNode.nextSibling); >+}; >+ >+/** >+ * Inserts a node before the selected node. >+ */ >+function cmdEditInsertBefore() >+{ >+ this.originalNode = viewer.currentNode; >+} >+ >+cmdEditInsertBefore.prototype = new InsertNode(); >+ >+cmdEditInsertBefore.prototype.insertNode = function InsertBefore_InsertNode() >+{ >+ this.originalNode.parentNode.insertBefore(this.insertedNode, >+ this.originalNode); >+}; >+ >+/** >+ * Inserts a node as the first child of the selected node. >+ */ >+function cmdEditInsertFirstChild() >+{ >+ this.originalNode = viewer.selectedNode; >+} >+ >+cmdEditInsertFirstChild.prototype = new InsertNode(); >+ >+cmdEditInsertFirstChild.prototype.insertNode = >+ function InsertFirstChild_InsertNode() >+{ >+ this.originalNode.insertBefore(this.insertedNode, >+ this.originalNode.firstChild); >+}; >+ >+/** >+ * Inserts a node as the last child of the selected node. >+ */ >+function cmdEditInsertLastChild() >+{ >+ this.originalNode = viewer.selectedNode; >+} >+ >+cmdEditInsertLastChild.prototype = new InsertNode(); >+ >+cmdEditInsertLastChild.prototype.insertNode = >+ function InsertLastChild_InsertNode() >+{ >+ this.originalNode.appendChild(this.insertedNode); >+}; >+ >+function cmdEditInspectInNewWindow() >+{ >+ this.mObject = viewer.selectedNode; >+} >+ >+cmdEditInspectInNewWindow.prototype = new cmdEditInspectInNewWindowBase(); >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Listener Objects >+ >+var MouseDownListener = { >+ handleEvent: function MDL_HandleEvent(aEvent) >+ { >+ aEvent.stopPropagation(); >+ aEvent.preventDefault(); >+ >+ var target = viewer.mDOMView.showAnonymousContent ? >+ aEvent.originalTarget : >+ aEvent.target; >+ viewer.doSelectByClick(target); >+ } >+}; >+ >+var EventCanceller = { >+ handleEvent: function EC_HandleEvent(aEvent) >+ { >+ aEvent.stopPropagation(); >+ aEvent.preventDefault(); >+ } >+}; >+ >+var ListenerRemover = { >+ handleEvent: function LR_HandleEvent(aEvent) >+ { >+ if (!viewer.mSelecting) { >+ if (aEvent.type == "click") { >+ aEvent.stopPropagation(); >+ aEvent.preventDefault(); >+ } >+ viewer.removeClickListeners(); >+ } >+ } >+}; >+ >+var PrefChangeObserver = { >+ observe: function PCO_Observe(aSubject, aTopic, aData) >+ { >+ viewer.onPrefChanged(aData); >+ } >+}; >+ >+function gColumnAddListener(aIndex) >+{ >+ viewer.onColumnAdd(aIndex); >+} >+ >+function gColumnRemoveListener(aIndex) >+{ >+ viewer.onColumnRemove(aIndex); >+} >+ >+function dumpDOM2(aNode) >+{ >+ dump(DOMViewer.prototype.toXML(aNode)); >+} >+ >+function stubImpl(aNode) >+{ >+} >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/dom.xul b/suite/extensions/inspector/resources/content/viewers/dom/dom.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/dom.xul >@@ -0,0 +1,198 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/dom.dtd"> %dtd2; >+]> >+ >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<?xml-stylesheet href="chrome://inspector/skin/viewers/dom/dom.css"?> >+ >+<page id="winDOMViewer" >+ orient="vertical" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/system/PrefUtils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/dom/dom.js"/> >+ >+ <!-- ============================ COMMANDS ============================= --> >+ >+ <commandset id="cmdsEditing"/> >+ <commandset id="cmdsEditingExtras"/> >+ >+ <commandset> >+ <command id="cmdInspectBrowser" >+ oncommand="viewer.cmdInspectBrowser()"/> >+ >+ <command id="cmdCopyXML" >+ oncommand="viewer.cmdCopySelectedXML()"/> >+ >+ <command id="cmdBlink" >+ oncommand="viewer.cmdBlink()"/> >+ >+ <command id="cmdShowPseudoClasses" >+ oncommand="viewer.cmdShowPseudoClasses()"/> >+ >+ <command id="cmdEditPasteBefore" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditPasteBefore');"/> >+ <command id="cmdEditPasteReplace" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditPasteReplace');"/> >+ <command id="cmdEditPasteFirstChild" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditPasteFirstChild');"/> >+ <command id="cmdEditPasteLastChild" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditPasteLastChild');"/> >+ <command id="cmdEditPasteAsParent" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditPasteAsParent');"/> >+ >+ <command id="cmdEditInsertAfter" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditInsertAfter');"/> >+ <command id="cmdEditInsertBefore" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditInsertBefore');"/> >+ <command id="cmdEditInsertFirstChild" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditInsertFirstChild');"/> >+ <command id="cmdEditInsertLastChild" >+ oncommand="viewer.pane.panelset.execCommand('cmdEditInsertLastChild');"/> >+ >+ </commandset> >+ >+ <!--============================= POPUPS ============================== --> >+ >+ <popupset id="psPopups"> >+ <menupopup id="ppDOMContext" >+ onpopupshowing="viewer.onPopupShowing(event.target)"> >+ <menuitem id="mnEditInspectInNewWindow"/> >+ <menuitem id="mnInspectBrowser" >+ label="&cmdInspectBrowser.label;" >+ accesskey="&cmdInspectBrowser.accesskey;" >+ checkvalid="true" >+ command="cmdInspectBrowser"/> >+ <menuseparator/> >+ <menuitem id="mnEditCut"/> >+ <menuitem id="mnEditCopy"/> >+ <menu id="mnEditPasteMenu" >+ label="&mnEditPasteMenu.label;" >+ accesskey="&mnEditPasteMenu.accesskey;"> >+ <menupopup> >+ <!-- keep older functionality of paste command for paste menu in DOM >+ Nodes viewer --> >+ <menuitem id="mnEditPasteAfter" >+ label="&mnEditPasteAfter.label;" >+ accesskey="&mnEditPasteAfter.accesskey;" >+ command="cmdEditPaste" >+ key="keyEditPaste"/> >+ <!-- other paste commands --> >+ <menuitem id="mnEditPasteBefore" >+ label="&mnEditPasteBefore.label;" >+ accesskey="&mnEditPasteBefore.accesskey;" >+ command="cmdEditPasteBefore"/> >+ <menuitem id="mnEditPasteReplace" >+ label="&mnEditPasteReplace.label;" >+ accesskey="&mnEditPasteReplace.accesskey;" >+ command="cmdEditPasteReplace"/> >+ <menuitem id="mnEditPasteFirstChild" >+ label="&mnEditPasteFirstChild.label;" >+ accesskey="&mnEditPasteFirstChild.accesskey;" >+ command="cmdEditPasteFirstChild"/> >+ <menuitem id="mnEditPasteLastChild" >+ label="&mnEditPasteLastChild.label;" >+ accesskey="&mnEditPasteLastChild.accesskey;" >+ command="cmdEditPasteLastChild"/> >+ <menuitem id="mnEditPasteAsParent" >+ label="&mnEditPasteAsParent.label;" >+ accesskey="&mnEditPasteAsParent.accesskey;" >+ command="cmdEditPasteAsParent"/> >+ </menupopup> >+ </menu> >+ <menuseparator/> >+ <menu id="mnEditInsertMenu" >+ label="&mnEditInsertMenu.label;" >+ accesskey="&mnEditInsertMenu.accesskey;"> >+ <menupopup> >+ <menuitem id="mnEditInsertAfter" >+ label="&mnEditInsertAfter.label;" >+ accesskey="&mnEditInsertAfter.accesskey;" >+ command="cmdEditInsertAfter"/> >+ <menuitem id="mnEditInsertBefore" >+ label="&mnEditInsertBefore.label;" >+ accesskey="&mnEditInsertBefore.accesskey;" >+ command="cmdEditInsertBefore"/> >+ <menuitem id="mnEditInsertFirstChild" >+ label="&mnEditInsertFirstChild.label;" >+ accesskey="&mnEditInsertFirstChild.accesskey;" >+ command="cmdEditInsertFirstChild"/> >+ <menuitem id="mnEditInsertLastChild" >+ label="&mnEditInsertLastChild.label;" >+ accesskey="&mnEditInsertLastChild.accesskey;" >+ command="cmdEditInsertLastChild"/> >+ </menupopup> >+ </menu> >+ <menuitem id="mnEditDelete"/> >+ <menuseparator/> >+ <menuitem id="mnCopyXML" >+ label="&cmdCopyXML.label;" >+ accesskey="&cmdCopyXML.accesskey;" >+ command="cmdCopyXML"/> >+ <menuseparator/> >+ <menuitem id="mnBlink" >+ label="&cmdBlink.label;" >+ accesskey="&cmdBlink.accesskey;" >+ checkvalid="true" >+ command="cmdBlink"/> >+ <menuitem id="mnShowPseudoClasses" >+ label="&cmdShowPseudoClasses.label;" >+ accesskey="&cmdShowPseudoClasses.accesskey;" >+ command="cmdShowPseudoClasses"/> >+ </menupopup> >+ </popupset> >+ >+ <tree id="trDOMTree" class="plain" treelines="true" flex="1" >+ enableColumnDrag="true" >+ contextmenu="ppDOMContext" >+ onselect="viewer.onTreeSelectionChange(event);"> >+ <treecols> >+ <!-- These labels don't need to be localized since they are defined by >+ DOM APIs --> >+ <treecol id="colNodeName" label="nodeName" primary="true" >+ persist="width,hidden,ordinal" flex="3"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colLocalName" label="localName" hidden="true" >+ persist="width,hidden,ordinal" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colPrefix" label="prefix" hidden="true" >+ persist="width,hidden,ordinal" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colNamespaceURI" label="namespaceURI" hidden="true" >+ persist="width,hidden,ordinal" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colNodeType" label="nodeType" hidden="true" >+ persist="width,hidden,ordinal" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colNodeValue" label="nodeValue" hidden="true" >+ persist="width,hidden,ordinal" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="col@id" label="id" persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="col@class" label="class" persist="width,hidden,ordinal" >+ flex="1"/> >+ </treecols> >+ <treechildren id="trDOMTreeBody"/> >+ </tree> >+</page> >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/findDialog.xul b/suite/extensions/inspector/resources/content/viewers/dom/findDialog.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/findDialog.xul >@@ -0,0 +1,96 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE dialog [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/dom.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin/viewers/dom/findDialog.css"?> >+ >+<dialog id="winFind" style="width: 30em;" >+ title="&findNodes.title;" >+ ondialogaccept="return dialog.doFind();" >+ persist="screenX screenY" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" src="chrome://inspector/content/viewers/dom/FindDialog.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/rdf/RDFU.js"/> >+ >+ <hbox flex="1"> >+ <vbox flex="1"> >+ <grid> >+ <columns> >+ <column/> >+ <column flex="1"/> >+ </columns> >+ <rows> >+ <row id="rwRow1"> >+ <deck id="rwRow1Text"> >+ <!-- The script places a "control" attribute on the selected label >+ so that accessibility aids can identify the proper label for the >+ textbox. --> >+ <label id="txText1Id" >+ value="&findNodesById.label;" >+ accesskey="&findNodesById.accesskey;"/> >+ <label id="txText1Tag" >+ value="&findNodesByTag.label;" >+ accesskey="&findNodesByTag.accesskey;"/> >+ <label id="txText1Attr" >+ value="&findNodesByAttr.label;" >+ accesskey="&findNodesByAttr.accesskey;"/> >+ </deck> >+ <textbox id="tfText1"/> >+ </row> >+ <row id="rwRow2"> >+ <label id="txText2" >+ value="&findNodesByAttrValue.label;" >+ accesskey="&findNodesByAttrValue.accesskey;" >+ control="tfText2"/> >+ <textbox id="tfText2"/> >+ </row> >+ </rows> >+ </grid> >+ >+ <hbox> >+ <groupbox id="tbxType"> >+ <caption label="&findNodesSearchBy.label;"/> >+ <radiogroup id="rgType"> >+ <radio id="rdType_id" value="id" >+ label="&findNodesById.label;" >+ accesskey="&findNodesById.accesskey2;" >+ oncommand="dialog.toggleType('id')"/> >+ <radio id="rdType_tag" value="tag" >+ label="&findNodesByTag.label;" >+ accesskey="&findNodesByTag.accesskey2;" >+ oncommand="dialog.toggleType('tag')"/> >+ <radio id="rdType_attr" value="attr" >+ label="&findNodesByAttr.label;" >+ accesskey="&findNodesByAttr.accesskey2;" >+ oncommand="dialog.toggleType('attr')"/> >+ </radiogroup> >+ </groupbox> >+ <groupbox id="tbxDirection" hide="true"> >+ <caption label="&findNodesDirection.label;"/> >+ <radiogroup id="rgDirection"> >+ <radio id="rdDir_up" value="up" >+ label="&findNodesDirectionUp.label;" >+ accesskey="&findNodesDirectionUp.accesskey;"/> >+ <radio id="rdDir_down" value="down" >+ label="&findNodesDirectionDown.label;" >+ accesskey="&findNodesDirectionDown.accesskey;"/> >+ </radiogroup> >+ </groupbox> >+ </hbox> >+ </vbox> >+ >+ <vbox> >+ <button label="&findNodesFind.label;" dlgtype="accept" default="true"/> >+ <button label="&findNodesCancel.label;" dlgtype="cancel"/> >+ </vbox> >+ </hbox> >+ >+</dialog> >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/insertDialog.js b/suite/extensions/inspector/resources/content/viewers/dom/insertDialog.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/insertDialog.js >@@ -0,0 +1,136 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var dialog; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Initialization/Destruction >+ >+window.addEventListener("load", InsertDialog_initialize, false); >+ >+function InsertDialog_initialize() >+{ >+ dialog = new InsertDialog(); >+ dialog.initialize(); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// class InsertDialog >+ >+function InsertDialog() >+{ >+ this.mDoc = window.arguments[0]; >+ this.mData = window.arguments[1]; >+ >+ this.nodeType = document.getElementById("ml_nodeType"); >+ this.tagName = document.getElementById("tx_tagName"); >+ this.nodeValue = document.getElementById("tx_nodeValue"); >+ this.namespace = document.getElementById("tx_namespace"); >+ this.menulist = document.getElementById("ml_namespace"); >+ this.customNS = document.getElementById("mi_custom"); >+} >+ >+InsertDialog.prototype = >+{ >+ /** >+ * This function initializes the content of the dialog. >+ */ >+ initialize: function initialize() >+ { >+ var menulist = this.menulist; >+ var menuitems = menulist.firstChild.childNodes; >+ var defaultNS = document.getElementById("mi_namespace"); >+ var accept = document.documentElement.getButton("accept"); >+ >+ menulist.disabled = !this.mData.enableNamespaces; >+ defaultNS.value = this.mDoc.documentElement.namespaceURI; >+ >+ if (this.mData.enableNamespaces) { >+ let uri = this.mData.namespaceURI; >+ menulist.value = uri; >+ if (!menulist.selectedItem) { >+ // The original node's namespace isn't one listed in the menulist. >+ this.customNS.value = uri; >+ menulist.selectedItem = this.customNS; >+ } >+ } >+ this.updateNamespace(); >+ this.updateType(); >+ this.tagName.focus(); >+ }, >+ >+ /** >+ * The function that is called on accept. Sets data. >+ */ >+ accept: function accept() >+ { >+ switch (this.nodeType.value) >+ { >+ case "element": >+ this.mData.type = Components.interfaces.nsIDOMNode.ELEMENT_NODE; >+ this.mData.value = this.tagName.value; >+ break; >+ case "text": >+ this.mData.type = Components.interfaces.nsIDOMNode.TEXT_NODE; >+ this.mData.value = this.nodeValue.value; >+ break; >+ } >+ this.mData.namespaceURI = this.namespace.value; >+ this.mData.accepted = true; >+ return true; >+ }, >+ >+ /** >+ * updateType changes the visibility of rows based on the node type. >+ */ >+ updateType: function updateType() >+ { >+ switch (dialog.nodeType.value) >+ { >+ case "text": >+ document.getElementById("row_text").hidden = false; >+ document.getElementById("row_element").hidden = true; >+ break; >+ case "element": >+ document.getElementById("row_text").hidden = true; >+ document.getElementById("row_element").hidden = false; >+ break; >+ } >+ dialog.toggleAccept(); >+ }, >+ >+ /** >+ * updateNamespace updates the namespace textbox based on the namespace menu. >+ */ >+ updateNamespace: function updateNamespace() >+ { >+ this.namespace.disabled = dialog.menulist.selectedItem != this.customNS; >+ this.namespace.value = dialog.menulist.value; >+ }, >+ >+ /** >+ * Change the "Custom" menuitem's value to reflect the namespace textbox's >+ * value. >+ * >+ * This fires on input events, so if the user switches away from the >+ * "Custom" menuitem and then back, the previously-entered value remains. >+ */ >+ updateCustom: function updateCustom() >+ { >+ this.customNS.value = this.namespace.value; >+ }, >+ >+ /** >+ * toggleAccept enables/disables the Accept button when there is/isn't an >+ * attribute name. >+ */ >+ toggleAccept: function toggleAccept() >+ { >+ document.documentElement.getButton("accept").disabled = >+ (dialog.tagName.value == "") && (dialog.nodeType.selectedItem.value == "element"); >+ } >+}; >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/insertDialog.xul b/suite/extensions/inspector/resources/content/viewers/dom/insertDialog.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/insertDialog.xul >@@ -0,0 +1,110 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. >+--> >+<!DOCTYPE dialog SYSTEM "chrome://inspector/locale/viewers/dom.dtd"> >+<?xml-stylesheet type="text/css" href="chrome://global/skin"?> >+ >+<dialog id="InsertNode" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >+ title="&insertNode.title;" >+ buttons="accept,cancel" >+ ondialogaccept="dialog.accept();"> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/dom/insertDialog.js"/> >+ <grid> >+ <columns> >+ <column/> >+ <column flex="1"/> >+ </columns> >+ <rows> >+ <row align="center"> >+ <label value="&nodeType.label;" >+ accesskey="&nodeType.accesskey;" >+ control="ml_nodeType"/> >+ <menulist id="ml_nodeType" oncommand="dialog.updateType();"> >+ <menupopup id="mp_nodetypes"> >+ <menuitem label="&nodeType.element.label;" >+ id="mi_Element" >+ value="element"/> >+ <menuitem label="&nodeType.text.label;" >+ id="mi_Text" >+ value="text"/> >+ </menupopup> >+ </menulist> >+ </row> >+ <rows id="row_element"> >+ <row align="center"> >+ <label value="&namespaceURI.label;" >+ accesskey="&namespaceURI.accesskey;" >+ control="ml_namespace"/> >+ <menulist id="ml_namespace" oncommand="dialog.updateNamespace();"> >+ <menupopup id="mp_namespaces"> >+ <!-- This must be first, and must have the value attribute set to >+ "" in order for it to work properly --> >+ <menuitem label="&namespaceTitle.null.label;" >+ id="mi_NullNS" >+ value=""/> >+ <menuitem label="&namespaceTitle.XMLNS.label;" >+ id="mi_XMLNSNS" >+ value="http://www.w3.org/2000/xmlns/"/> >+ <menuitem label="&namespaceTitle.XML.label;" >+ id="mi_XMLNS" >+ value="http://www.w3.org/XML/1998/namespace"/> >+ <menuitem label="&namespaceTitle.XHTML.label;" >+ id="mi_XHTMLNS" >+ value="http://www.w3.org/1999/xhtml"/> >+ <menuitem label="&namespaceTitle.XLink.label;" >+ id="mi_XLinkNS" >+ value="http://www.w3.org/1999/xlink"/> >+ <menuitem label="&namespaceTitle.XSLT.label;" >+ id="mi_XSLTNS" >+ value="http://www.w3.org/1999/XSL/Transform"/> >+ <menuitem label="&namespaceTitle.XBL.label;" >+ id="mi_XBLNS" >+ value="http://www.mozilla.org/xbl"/> >+ <menuitem label="&namespaceTitle.MathML.label;" >+ id="mi_MathMLNS" >+ value="http://www.w3.org/1998/Math/MathML"/> >+ <menuitem label="&namespaceTitle.RDF.label;" >+ id="mi_RDFNS" >+ value="http://www.w3.org/1999/02/22-rdf-syntax-ns"/> >+ <menuitem label="&namespaceTitle.XUL.label;" >+ id="mi_XULNS" >+ value="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"/> >+ <menuitem label="&namespaceTitle.SVG.label;" >+ id="mi_SVGNS" >+ value="http://www.w3.org/2000/svg"/> >+ <menuitem label="&namespaceTitle.XMLEvents.label;" >+ id="mi_XMLEventsNS" >+ value="http://www.w3.org/2001/xml-events"/> >+ <!-- Value set onload --> >+ <menuitem label="&namespaceTitle.default.label;" >+ id="mi_namespace"/> >+ <!-- Value set onload --> >+ <menuitem label="&namespaceTitle.custom.label;" >+ id="mi_custom"/> >+ </menupopup> >+ </menulist> >+ </row> >+ <row> >+ <spacer/> >+ <textbox id="tx_namespace" oninput="dialog.updateCustom();"/> >+ </row> >+ <row> >+ <label value="&tagName.label;" >+ accesskey="&tagName.accesskey;" >+ control="tx_tagName"/> >+ <textbox id="tx_tagName" oninput="dialog.toggleAccept()"/> >+ </row> >+ </rows> >+ <row id="row_text" flex="1"> >+ <label value="&nodeValue.label;" >+ accesskey="&nodeValue.accesskey;" >+ control="tx_nodeValue"/> >+ <textbox id="tx_nodeValue" multiline="true"/> >+ </row> >+ </rows> >+ </grid> >+</dialog> >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/keysetOverlay.xul b/suite/extensions/inspector/resources/content/viewers/dom/keysetOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/keysetOverlay.xul >@@ -0,0 +1,20 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/viewers/dom.dtd"> >+ >+<overlay id="ovDOMViewerKeyset" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <keyset id="ksGlobalKeyset"> >+ <key id="key:find" key="&cmdShowFindDialog.key;" observes="cmd:find" >+ modifiers="accel"/> >+ <key id="key:findAgain" key="&cmdFindAgain.key;" observes="cmd:findAgain" >+ modifiers="accel"/> >+ <key id="key:findAgain2" keycode="VK_F3" observes="cmd:findAgain"/> >+ </keyset> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/popupOverlay.xul b/suite/extensions/inspector/resources/content/viewers/dom/popupOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/popupOverlay.xul >@@ -0,0 +1,122 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/viewers/dom.dtd"> >+ >+<overlay id="ovDOMViewerPopup" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <popupset id="ppsViewerPopupset"> >+ <menupopup id="ppViewerContext-dom"> >+ <menuitem id="item:findPp" >+ label="&cmdShowFindDialog.label;" >+ accesskey="&cmdShowFindDialog.accesskey;" >+ key="key:find" >+ observes="cmd:find"/> >+ >+ <menuitem id="item:findAgainPp" >+ label="&cmdFindAgain.label;" >+ accesskey="&cmdFindAgain.accesskey;" >+ key="key:findAgain" >+ observes="cmd:findAgain"/> >+ >+ <menuseparator/> >+ >+ <menuitem id="item:toggleAttributes" hidden="true" >+ class="menuitem-iconic" >+ type="checkbox" >+ label="&cmdToggleAttributes.label;" >+ accesskey="&cmdToggleAttributes.accesskey;" >+ observes="cmd:toggleAttributes"/> >+ >+ <menuitem id="item:toggleAnonPp" >+ class="menuitem-iconic" >+ type="checkbox" >+ label="&cmdToggleAnonContent.label;" >+ accesskey="&cmdToggleAnonContent.accesskey;" >+ observes="cmd:toggleAnon"/> >+ >+ <menuitem id="item:toggleAccessibleNodesPp" >+ class="menuitem-iconic" >+ type="checkbox" >+ label="&cmdToggleAccessibleNodes.label;" >+ accesskey="&cmdToggleAccessibleNodes.accesskey;" >+ observes="cmd:toggleAccessibleNodes"/> >+ >+ <menuitem id="item:toggleWhitespaceNodesPp" >+ class="menuitem-iconic" >+ type="checkbox" >+ label="&cmdToggleWhitespaceNodes.label;" >+ accesskey="&cmdToggleWhitespaceNodes.accesskey;" >+ observes="cmd:toggleWhitespaceNodes"/> >+ >+ <menuitem id="item:toggleProcessingInstructionsPp" >+ class="menuitem-iconic" >+ type="checkbox" >+ label="&cmdToggleProcessingInstructions.label;" >+ accesskey="&cmdToggleProcessingInstructions.accesskey;" >+ observes="cmd:toggleProcessingInstructions"/> >+ >+ </menupopup> >+ </popupset> >+ >+ <menupopup id="mppEdit"> >+ >+ <menuseparator/> >+ >+ <menuitem id="item:findMpp" >+ label="&cmdShowFindDialog.label;" >+ accesskey="&cmdShowFindDialog.accesskey;" >+ key="key:find" >+ observes="cmd:find"/> >+ >+ <menuitem id="item:findAgainMpp" >+ label="&cmdFindAgain.label;" >+ accesskey="&cmdFindAgain.accesskey;" >+ key="key:findAgain" >+ observes="cmd:findAgain"/> >+ >+ <menuseparator/> >+ >+ <menuitem id="item:selectByClick" >+ label="&cmdSelectByClick.label;" >+ accesskey="&cmdSelectByClick.accesskey;" >+ observes="cmd:selectByClick" >+ type="checkbox"/> >+ >+ </menupopup> >+ >+ <menupopup id="mppView"> >+ <menuitem id="item:toggleAnonMpp" >+ class="menuitem-iconic" >+ type="checkbox" >+ label="&cmdToggleAnonContent.label;" >+ accesskey="&cmdToggleAnonContent.accesskey;" >+ observes="cmd:toggleAnon"/> >+ >+ <menuitem id="item:toggleAccessibleNodesMpp" >+ class="menuitem-iconic" >+ type="checkbox" >+ label="&cmdToggleAccessibleNodes.label;" >+ accesskey="&cmdToggleAccessibleNodes.accesskey;" >+ observes="cmd:toggleAccessibleNodes"/> >+ >+ <menuitem id="item:toggleWhitespaceNodesMpp" >+ class="menuitem-iconic" >+ type="checkbox" >+ label="&cmdToggleWhitespaceNodes.label;" >+ accesskey="&cmdToggleWhitespaceNodes.accesskey;" >+ observes="cmd:toggleWhitespaceNodes"/> >+ >+ <menuitem id="item:toggleProcessingInstructionsMpp" >+ class="menuitem-iconic" >+ type="checkbox" >+ label="&cmdToggleProcessingInstructions.label;" >+ accesskey="&cmdToggleProcessingInstructions.accesskey;" >+ observes="cmd:toggleProcessingInstructions"/> >+ </menupopup> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/pseudoClassDialog.js b/suite/extensions/inspector/resources/content/viewers/dom/pseudoClassDialog.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/pseudoClassDialog.js >@@ -0,0 +1,97 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* PseudoClassDialog -------------------------------------------- >+* A dialog for choosing the pseudo-classes that should be >+* imitated on the selected element. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+****************************************************************/ >+ >+//////////// global variables ///////////////////// >+ >+var dialog; >+ >+//////////// global constants //////////////////// >+ >+const gCheckBoxIds = { >+ cbxStateHover: 4, >+ cbxStateActive: 1, >+ cbxStateFocus: 2 >+}; >+///////////////////////////////////////////////// >+ >+window.addEventListener("load", PseudoClassDialog_initialize, false); >+ >+function PseudoClassDialog_initialize() >+{ >+ dialog = new PseudoClassDialog(); >+ dialog.initialize(); >+} >+ >+//////////////////////////////////////////////////////////////////////////// >+//// class PseudoClassDialog >+ >+function PseudoClassDialog() >+{ >+ this.mOpener = window.opener.viewer; >+ this.mSubject = window.arguments[0]; >+ >+ this.mDOMUtils = XPCU.getService("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils"); >+} >+ >+PseudoClassDialog.prototype = >+{ >+ >+ initialize: function() >+ { >+ if ("hasPseudoClassLock" in this.mDOMUtils) { >+ for (var key in gCheckBoxIds) { >+ var cbx = document.getElementById(key); >+ if (this.mDOMUtils.hasPseudoClassLock(this.mSubject, cbx.label)) { >+ cbx.setAttribute("checked", "true"); >+ } >+ } >+ } >+ else { >+ var state = this.mDOMUtils.getContentState(this.mSubject); >+ >+ for (var key in gCheckBoxIds) { >+ if (gCheckBoxIds[key] & state) { >+ var cbx = document.getElementById(key); >+ cbx.setAttribute("checked", "true"); >+ } >+ } >+ } >+ }, >+ >+ onOk: function() >+ { >+ var el = this.mSubject; >+ var root = el.ownerDocument.documentElement; >+ >+ for (var key in gCheckBoxIds) { >+ var cbx = document.getElementById(key); >+ if (cbx.checked) { >+ if ("addPseudoClassLock" in this.mDOMUtils) { >+ this.mDOMUtils.addPseudoClassLock(el, cbx.label); >+ } >+ else { >+ this.mDOMUtils.setContentState(el, gCheckBoxIds[key]); >+ } >+ } >+ else { >+ if ("removePseudoClassLock" in this.mDOMUtils) { >+ this.mDOMUtils.removePseudoClassLock(el, cbx.label); >+ } >+ else { >+ this.mDOMUtils.setContentState(root, gCheckBoxIds[key]); >+ } >+ } >+ } >+ } >+ >+}; >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/dom/pseudoClassDialog.xul b/suite/extensions/inspector/resources/content/viewers/dom/pseudoClassDialog.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/dom/pseudoClassDialog.xul >@@ -0,0 +1,42 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE dialog [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/dom.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin/viewers/styleRules/styleRules.css"?> >+ >+<dialog id="winPseudoClasses" >+ title="&pseudoClasses.title;" >+ persist="screenX screenY width height" >+ ondialogaccept="return dialog.onOk()" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <!--============================= SCRIPTS ============================= --> >+ >+ <script type="application/javascript" src="chrome://inspector/content/viewers/dom/pseudoClassDialog.js"/> >+ <script type="application/javascript" src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ >+ <keyset id="dialogKeys"/> >+ >+ <groupbox style="width: 25em;"> >+ <caption label="&pseudoClasses.title;"/> >+ <vbox> >+ <!-- >+ The labels don't need to be localized, since they are CSS APIs, >+ but the access keys are localizable, because an English >+ keyboard may not always be available >+ see: https://bugzilla.mozilla.org/show_bug.cgi?id=398704#c1 >+ --> >+ <checkbox id="cbxStateHover" label=":hover" accesskey="&cbxStateHover.accesskey;"/> >+ <checkbox id="cbxStateActive" label=":active" accesskey="&cbxStateActive.accesskey;"/> >+ <checkbox id="cbxStateFocus" label=":focus" accesskey="&cbxStateFocus.accesskey;"/> >+ </vbox> >+ </groupbox> >+ >+</dialog> >diff --git a/suite/extensions/inspector/resources/content/viewers/domNode/domNode.js b/suite/extensions/inspector/resources/content/viewers/domNode/domNode.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/domNode/domNode.js >@@ -0,0 +1,549 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* DOMNodeViewer -------------------------------------------------------------- >+* The default viewer for DOM Nodes >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kDOMViewCID = "@mozilla.org/inspector/dom-view;1"; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+var gPromptService; >+ >+////////////////////////////////////////////////////////////////////////////// >+ >+window.addEventListener("load", DOMNodeViewer_initialize, false); >+ >+function DOMNodeViewer_initialize() >+{ >+ viewer = new DOMNodeViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// DOMNodeViewer Class >+ >+function DOMNodeViewer() // implements inIViewer >+{ >+ this.mObsMan = new ObserverManager(this); >+ >+ this.mURL = window.location; >+ this.mAttrTree = document.getElementById("olAttr"); >+ this.mAttrGroupBox = document.getElementById("grpAttr"); >+ >+ // prepare and attach the DOM DataSource >+ this.mDOMView = XPCU.createInstance(kDOMViewCID, "inIDOMView"); >+ this.mDOMView.whatToShow = NodeFilter.SHOW_ATTRIBUTE; >+ this.mAttrTree.treeBoxObject.view = this.mDOMView; >+} >+ >+DOMNodeViewer.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mDOMView: null, >+ mSubject: null, >+ mPanel: null, >+ >+ get selectedIndex() >+ { >+ return this.mAttrTree.currentIndex; >+ }, >+ >+ /** >+ * Returns an array of the selected indices >+ */ >+ get selectedIndices() >+ { >+ var indices = []; >+ var rangeCount = this.mAttrTree.view.selection.getRangeCount(); >+ for (var i = 0; i < rangeCount; ++i) { >+ var start = {}; >+ var end = {}; >+ this.mAttrTree.view.selection.getRangeAt(i, start, end); >+ for (var c = start.value; c <= end.value; ++c) { >+ indices.push(c); >+ } >+ } >+ return indices; >+ }, >+ >+ /** >+ * Returns a DOMAttribute from the selected index >+ */ >+ get selectedAttribute() >+ { >+ var index = this.selectedIndex; >+ return index >= 0 ? >+ new DOMAttribute(this.mDOMView.getNodeFromRowIndex(index)) : null; >+ }, >+ >+ /** >+ * Returns an array of DOMAttributes from the selected indices >+ */ >+ get selectedAttributes() >+ { >+ var indices = this.selectedIndices; >+ var attrs = []; >+ for (var i = 0; i < indices.length; ++i) { >+ var idx = this.mDOMView.getNodeFromRowIndex(indices[i]); >+ attrs.push(new DOMAttribute(idx)); >+ } >+ return attrs; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// interface inIViewer >+ >+ //// attributes >+ >+ get uid() >+ { >+ return "domNode" >+ }, >+ >+ get pane() >+ { >+ return this.mPanel >+ }, >+ >+ >+ get selection() >+ { >+ return null >+ }, >+ >+ >+ get subject() >+ { >+ return this.mSubject >+ }, >+ >+ set subject(aObject) >+ { >+ // the node value's textbox won't fire onchange when we change subjects, so >+ // let's fire it. this won't do anything if it wasn't actually changed >+ viewer.pane.panelset.execCommand('cmdEditTextValue'); >+ >+ this.mSubject = aObject instanceof Components.interfaces.nsIDOMNode ? >+ aObject : aObject.DOMNode; >+ var deck = document.getElementById("dkContent"); >+ >+ switch (this.mSubject.nodeType) { >+ // things with useful nodeValues >+ case Node.TEXT_NODE: >+ case Node.CDATA_SECTION_NODE: >+ case Node.COMMENT_NODE: >+ case Node.PROCESSING_INSTRUCTION_NODE: >+ deck.selectedIndex = 1; >+ var txb = document.getElementById("txbTextNodeValue").value = >+ this.mSubject.nodeValue; >+ break; >+ //XXX this view is designed for elements, write a more useful one for >+ // document nodes, etc. >+ default: >+ var bundle = this.pane.panelset.stringBundle; >+ deck.selectedIndex = 0; >+ >+ this.setTextValue("localName", this.mSubject.localName); >+ this.setTextValue("nodeType", bundle.getString(this.mSubject.nodeType)); >+ this.setTextValue("namespace", this.mSubject.namespaceURI); >+ } >+ >+ var hideAttributes = this.mSubject.nodeType != Node.ELEMENT_NODE; >+ this.mAttrGroupBox.hidden = hideAttributes; >+ if (!hideAttributes && this.mSubject != this.mDOMView.rootNode) { >+ this.mDOMView.rootNode = this.mSubject; >+ this.mAttrTree.view.selection.select(-1); >+ } >+ >+ this.mObsMan.dispatchEvent("subjectChange", { subject: this.mSubject }); >+ }, >+ >+ // methods >+ >+ initialize: function DNVr_Initialize(aPane) >+ { >+ this.mPanel = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function DNVr_Destroy() >+ { >+ // the node value's textbox won't fire onchange when we change views, so >+ // let's fire it. this won't do anything if it wasn't actually changed >+ viewer.pane.panelset.execCommand('cmdEditTextValue'); >+ }, >+ >+ isCommandEnabled: function DNVr_IsCommandEnabled(aCommand) >+ { >+ // NB: This function can be fired before the subject is set. >+ switch (aCommand) { >+ case "cmdEditPaste": >+ var flavor = this.mPanel.panelset.clipboardFlavor; >+ return (flavor == "inspector/dom-attribute" || >+ flavor == "inspector/dom-attributes"); >+ case "cmdEditInsert": >+ return this.subject && this.subject.nodeType == Node.ELEMENT_NODE; >+ case "cmdEditCut": >+ case "cmdEditCopy": >+ case "cmdEditDelete": >+ return this.selectedAttribute != null; >+ case "cmdEditEdit": >+ return this.mAttrTree.currentIndex >= 0 && >+ this.mAttrTree.view.selection.count == 1; >+ case "cmdEditTextValue": >+ if (this.subject) { >+ // something with a useful nodeValue >+ if (this.subject.nodeType == Node.TEXT_NODE || >+ this.subject.nodeType == Node.CDATA_SECTION_NODE || >+ this.subject.nodeType == Node.COMMENT_NODE || >+ this.subject.nodeType == Node.PROCESSING_INSTRUCTION_NODE) { >+ // did something change? >+ return this.subject.nodeValue != >+ document.getElementById("txbTextNodeValue").value; >+ } >+ } >+ return false; >+ } >+ return false; >+ }, >+ >+ getCommand: function DNVr_GetCommand(aCommand) >+ { >+ switch (aCommand) { >+ case "cmdEditCut": >+ return new cmdEditCut(); >+ case "cmdEditCopy": >+ return new cmdEditCopy(this.selectedAttributes); >+ case "cmdEditPaste": >+ return new cmdEditPaste(); >+ case "cmdEditInsert": >+ var command = new cmdEditInsert(); >+ return command.promptFor(); >+ case "cmdEditEdit": >+ var command = new cmdEditEdit(); >+ return command.promptFor(); >+ case "cmdEditDelete": >+ return new cmdEditDelete(); >+ case "cmdEditTextValue": >+ return new cmdEditTextValue(); >+ } >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Event Dispatching >+ >+ addObserver: function DNVr_AddObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ >+ removeObserver: function DNVr_RemoveObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Uncategorized >+ >+ setTextValue: function DNVr_SetTextValue(aName, aText) >+ { >+ var field = document.getElementById("tx_" + aName); >+ if (field) { >+ field.value = aText; >+ } >+ } >+}; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Command Objects >+ >+function cmdEditCut() {} >+cmdEditCut.prototype = new inBaseCommand(false); >+ >+cmdEditCut.prototype.cmdCopy = null, >+cmdEditCut.prototype.cmdDelete = null, >+ >+cmdEditCut.prototype.doTransaction = function DNVr_Cut_DoTransaction() >+{ >+ if (!this.cmdCopy) { >+ this.cmdDelete = new cmdEditDelete(); >+ this.cmdCopy = new cmdEditCopy(viewer.selectedAttributes); >+ this.cmdCopy.doTransaction(); >+ } >+ this.cmdDelete.doTransaction(); >+}; >+ >+cmdEditCut.prototype.undoTransaction = function DVVr_Cut_UndoTransaction() >+{ >+ this.cmdDelete.undoTransaction(); >+}; >+ >+function cmdEditPaste() {} >+cmdEditPaste.prototype = new inBaseCommand(false); >+ >+cmdEditPaste.prototype.pastedAttr = null; >+cmdEditPaste.prototype.previousAttrValue = null; >+cmdEditPaste.prototype.subject = null; >+cmdEditPaste.prototype.flavor = null; >+ >+cmdEditPaste.prototype.doTransaction = function DNVr_Paste_DoTransaction() >+{ >+ var subject, pastedAttr, flavor; >+ if (this.subject) { >+ subject = this.subject; >+ pastedAttr = this.pastedAttr; >+ flavor = this.flavor; >+ } >+ else { >+ subject = viewer.subject; >+ pastedAttr = viewer.pane.panelset.getClipboardData(); >+ flavor = viewer.pane.panelset.clipboardFlavor; >+ this.pastedAttr = pastedAttr; >+ this.subject = subject; >+ this.flavor = flavor; >+ if (flavor == "inspector/dom-attributes") { >+ this.previousAttrValue = []; >+ for (var i = 0; i < pastedAttr.length; ++i) { >+ this.previousAttrValue[pastedAttr[i].node.nodeName] = >+ viewer.subject.getAttribute(pastedAttr[i].node.nodeName); >+ } >+ } >+ else if (flavor == "inspector/dom-attribute") { >+ this.previousAttrValue = >+ viewer.subject.getAttribute(pastedAttr.node.nodeName); >+ } >+ } >+ >+ if (subject && pastedAttr) { >+ if (flavor == "inspector/dom-attributes") { >+ for (var i = 0; i < pastedAttr.length; ++i) { >+ subject.setAttribute(pastedAttr[i].node.nodeName, >+ pastedAttr[i].node.nodeValue); >+ } >+ } >+ else if (flavor == "inspector/dom-attribute") { >+ subject.setAttribute(pastedAttr.node.nodeName, >+ pastedAttr.node.nodeValue); >+ } >+ } >+}; >+ >+cmdEditPaste.prototype.undoTransaction = function DNVr_Paste_UndoTransaction() >+{ >+ if (this.pastedAttr) { >+ if (this.flavor == "inspector/dom-attributes") { >+ for (var i = 0; i < this.pastedAttr.length; ++i) { >+ var attrNodeName = this.pastedAttr[i].node.nodeName; >+ if (this.previousAttrValue[attrNodeName]) { >+ this.subject.setAttribute(attrNodeName, >+ this.previousAttrValue[attrNodeName]); >+ } >+ else { >+ this.subject.removeAttribute(attrNodeName); >+ } >+ } >+ } >+ else if (this.flavor == "inspector/dom-attribute") { >+ if (this.previousAttrValue) { >+ this.subject.setAttribute(this.pastedAttr.node.nodeName, >+ this.previousAttrValue); >+ } >+ else { >+ this.subject.removeAttribute(this.pastedAttr.node.nodeName); >+ } >+ } >+ } >+}; >+ >+function cmdEditInsert() {} >+cmdEditInsert.prototype = new inBaseCommand(false); >+ >+cmdEditInsert.prototype.attr = null; >+cmdEditInsert.prototype.subject = null; >+cmdEditInsert.prototype.name = null; >+cmdEditInsert.prototype.value = null; >+cmdEditInsert.prototype.namespaceURI = null; >+cmdEditInsert.prototype.accepted = false; >+ >+cmdEditInsert.prototype.promptFor = function DNVr_Insert_PromptFor() >+{ >+ var bundle = viewer.pane.panelset.stringBundle; >+ var title = bundle.getString("newAttribute.title"); >+ var doc = viewer.subject.ownerDocument; >+ >+ window.openDialog("chrome://inspector/content/viewers/domNode/" + >+ "domNodeDialog.xul", "insert", >+ "dialog,modal,centerscreen,resizable", this, title, doc); >+ >+ this.subject = viewer.subject; >+ >+ return this.accepted ? this : null; >+}; >+ >+cmdEditInsert.prototype.doTransaction = function DNVr_Insert_DoTransaction() >+{ >+ this.subject.setAttributeNS(this.namespaceURI, >+ this.name, >+ this.value); >+}; >+ >+cmdEditInsert.prototype.undoTransaction = >+ function DNVr_Insert_UndoTransaction() >+{ >+ if (this.subject == viewer.subject) { >+ this.subject.removeAttributeNS(this.namespaceURI, >+ this.name); >+ } >+}; >+ >+function cmdEditDelete() {} >+cmdEditDelete.prototype = new inBaseCommand(false); >+ >+cmdEditDelete.prototype.attrs = null; >+cmdEditDelete.prototype.subject = null; >+ >+cmdEditDelete.prototype.doTransaction = function DNVr_Delete_DoTransaction() >+{ >+ var attrs = this.attrs ? this.attrs : viewer.selectedAttributes; >+ if (attrs) { >+ this.attrs = attrs; >+ this.subject = viewer.subject; >+ for (var i = 0; i < this.attrs.length; ++i) { >+ this.subject.removeAttribute(this.attrs[i].node.nodeName); >+ } >+ } >+}; >+ >+cmdEditDelete.prototype.undoTransaction = >+ function DNVr_Delete_UndoTransaction() >+{ >+ if (this.attrs) { >+ for (var i = 0; i < this.attrs.length; ++i) { >+ this.subject.setAttribute(this.attrs[i].node.nodeName, >+ this.attrs[i].node.nodeValue); >+ } >+ } >+}; >+ >+// XXX when editing the a attribute in this document: >+// data:text/xml,<x a="hi
lo
go"/> >+// You only get "hi" and not the mutltiline text (windows) >+// This seems to work on Linux, but not very usable >+function cmdEditEdit() {} >+cmdEditEdit.prototype = new inBaseCommand(false); >+ >+cmdEditEdit.prototype.subject = null; >+cmdEditEdit.prototype.name = null; >+cmdEditEdit.prototype.value = null; >+cmdEditEdit.prototype.namespaceURI = null; >+cmdEditEdit.prototype.previousValue = null; >+cmdEditEdit.prototype.previousNamespaceURI = null; >+cmdEditEdit.prototype.accepted = false; >+ >+cmdEditEdit.prototype.promptFor = function DNVr_Edit_PromptFor() >+{ >+ var attr = viewer.selectedAttribute.node; >+ if (!attr) { >+ return null; >+ } >+ var bundle = viewer.pane.panelset.stringBundle; >+ var title = bundle.getString("editAttribute.title"); >+ var doc = attr.ownerDocument; >+ >+ this.subject = viewer.subject; >+ this.name = attr.nodeName; >+ this.previousValue = attr.nodeValue; >+ this.previousNamespaceURI = attr.namespaceURI; >+ this.value = this.previousValue; >+ this.namespaceURI = this.previousNamespaceURI; >+ >+ window.openDialog("chrome://inspector/content/viewers/domNode/" + >+ "domNodeDialog.xul", "edit", >+ "dialog,modal,centerscreen,resizable", this, title, doc); >+ >+ return this.accepted ? this : null; >+}; >+ >+cmdEditEdit.prototype.doTransaction = function DNVr_Edit_DoTransaction() >+{ >+ if (this.previousNamespaceURI == this.namespaceURI) { >+ this.subject.setAttributeNS(this.previousNamespaceURI, >+ this.name, >+ this.value); >+ } >+ else { >+ this.subject.removeAttributeNS(this.previousNamespaceURI, >+ this.name); >+ this.subject.setAttributeNS(this.namespaceURI, >+ this.name, >+ this.value); >+ } >+}; >+ >+cmdEditEdit.prototype.undoTransaction = function DNVr_Edit_UndoTransaction() >+{ >+ if (this.previousNamespaceURI == this.namespaceURI) { >+ this.subject.setAttributeNS(this.previousNamespaceURI, >+ this.name, >+ this.previousValue); >+ } >+ else { >+ this.subject.removeAttributeNS(this.namespaceURI, >+ this.name); >+ this.subject.setAttributeNS(this.previousNamespaceURI, >+ this.name, >+ this.previousValue); >+ } >+}; >+ >+/** >+ * Handles editing of text nodes. >+ */ >+function cmdEditTextValue() { >+ this.newValue = document.getElementById("txbTextNodeValue").value; >+ this.subject = viewer.subject; >+ this.previousValue = this.subject.nodeValue; >+} >+ >+cmdEditTextValue.prototype = new inBaseCommand(false); >+ >+cmdEditTextValue.prototype.doTransaction = >+ function DNVr_EditText_DoTransaction() >+{ >+ this.subject.nodeValue = this.newValue; >+}; >+ >+cmdEditTextValue.prototype.undoTransaction = >+ function DNVr_EditText_UndoTransaction() >+{ >+ this.subject.nodeValue = this.previousValue; >+ this.refreshView(); >+}; >+ >+cmdEditTextValue.prototype.redoTransaction = >+ function DNVr_EditText_RedoTransaction() >+{ >+ this.doTransaction(); >+ this.refreshView(); >+}; >+ >+cmdEditTextValue.prototype.refreshView = function DNVr_EditText_RefreshView() >+{ >+ // if we're still on the same subject, update the textbox >+ if (viewer.subject == this.subject) { >+ document.getElementById("txbTextNodeValue").value = >+ this.subject.nodeValue; >+ } >+}; >diff --git a/suite/extensions/inspector/resources/content/viewers/domNode/domNode.xul b/suite/extensions/inspector/resources/content/viewers/domNode/domNode.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/domNode/domNode.xul >@@ -0,0 +1,135 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/domNode.dtd"> %dtd2; >+]> >+ >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<?xml-stylesheet href="chrome://inspector/skin/viewers/domNode/domNode.css"?> >+ >+<page id="winNodeDefault" >+ style="padding: 10px" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <!--============================= SCRIPTS ============================= --> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/system/clipboardFlavors.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/domNode/domNode.js"/> >+ >+ <!--============================= CONTENT ============================== --> >+ >+ <commandset id="cmdsEditing"/> >+ >+ <popupset id="psPopups"> >+ <menupopup id="ppAttrContext"> >+ <menuitem id="mnEditCut"/> >+ <menuitem id="mnEditCopy"/> >+ <menuitem id="mnEditPaste"/> >+ <menuseparator/> >+ <menuitem id="mnEditEdit"/> >+ <menuitem id="mnEditInsert"/> >+ <menuitem id="mnEditDelete"/> >+ </menupopup> >+ </popupset> >+ >+ <deck id="dkContent" flex="1"> >+ <vbox id="bxElement"> >+ <grid id="olNodeInfo"> >+ <columns> >+ <column/> >+ <column flex="1"/> >+ </columns> >+ <rows> >+ <row> >+ <label value="&localName.label;" >+ control="tx_localName" >+ class="olNodeInfoLabel"/> >+ <textbox id="tx_localName" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label value="&namespaceURI.label;" >+ control="tx_namespace" >+ class="olNodeInfoLabel"/> >+ <textbox id="tx_namespace" readonly="true" class="plain"/> >+ </row> >+ <row> >+ <label value="&nodeType.label;" >+ control="tx_nodeType" >+ class="olNodeInfoLabel"/> >+ <textbox id="tx_nodeType" readonly="true" class="plain"/> >+ </row> >+ </rows> >+ </grid> >+ >+ <groupbox id="grpAttr" flex="1"> >+ <caption label="&grpAttr.label;"/> >+ <tree id="olAttr" >+ class="plain" >+ flex="1" >+ enableColumnDrag="true" >+ contextmenu="ppAttrContext" >+ onselect="viewer.pane.panelset.updateAllCommands()"> >+ <treecols> >+ <!-- These labels don't need to be localized since they are defined >+ by DOM APIs. For column headers labeled as |name| and |value|, >+ even though we're really accessing the |nodeName| and |nodeValue| >+ properties, it's fine because they're guaranteed to match >+ the attributes' |name| and |value|, respectively. --> >+ <treecol id="colNodeName" >+ label="name" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colLocalName" >+ hidden="true" >+ label="localName" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colPrefix" >+ hidden="true" >+ label="prefix" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colNamespaceURI" >+ hidden="true" >+ label="namespaceURI" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colNodeValue" >+ label="value" >+ persist="width,hidden,ordinal" >+ flex="1"/> >+ </treecols> >+ <treechildren id="olAttrBody" >+ alternatingbackground="true" >+ ondblclick="viewer.pane.panelset.execCommand('cmdEditEdit');"/> >+ </tree> >+ </groupbox> >+ >+ </vbox> >+ >+ <vbox id="bxText"> >+ <textbox id="txbTextNodeValue" multiline="true" flex="1" >+ onchange="viewer.pane.panelset.execCommand('cmdEditTextValue');"/> >+ </vbox> >+ </deck> >+</page> >diff --git a/suite/extensions/inspector/resources/content/viewers/domNode/domNodeDialog.js b/suite/extensions/inspector/resources/content/viewers/domNode/domNodeDialog.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/domNode/domNodeDialog.js >@@ -0,0 +1,101 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var dialog; >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// Initialization/Destruction >+ >+window.addEventListener("load", DomNodeDialog_initialize, false); >+ >+function DomNodeDialog_initialize() >+{ >+ dialog = new DomNodeDialog(); >+ dialog.initialize(); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// >+//// class DomNodeDialog >+ >+function DomNodeDialog() >+{ >+ this.mData = window.arguments[0]; >+ this.mTitle = window.arguments[1]; >+ this.mDoc = window.arguments[2]; >+ >+ this.nodeName = document.getElementById("tx_nodeName"); >+ this.nodeValue = document.getElementById("tx_nodeValue"); >+ this.namespace = document.getElementById("tx_namespace"); >+ this.menulist = document.getElementById("ml_namespace"); >+} >+ >+DomNodeDialog.prototype = >+{ >+ /** >+ * This function initializes the content of the dialog. >+ */ >+ initialize: function initialize() >+ { >+ document.title = this.mTitle; >+ var defaultNS = document.getElementById("mi_namespace"); >+ var customNS = document.getElementById("mi_custom"); >+ var accept = document.documentElement.getButton("accept"); >+ >+ accept.disabled = this.mData.name == null; >+ this.nodeName.value = this.mData.name || ""; >+ this.nodeName.disabled = this.mData.name != null; >+ this.nodeValue.value = this.mData.value || ""; >+ this.menulist.disabled = !this.enableNamespaces(); >+ defaultNS.value = this.mDoc.documentElement.namespaceURI; >+ customNS.value = this.mData.namespaceURI; >+ this.menulist.value = this.mData.namespaceURI || ""; >+ >+ this.toggleNamespace(); >+ }, >+ >+ /** >+ * The function that is called on accept. Sets data. >+ */ >+ accept: function accept() >+ { >+ this.mData.name = this.nodeName.value; >+ this.mData.value = this.nodeValue.value; >+ this.mData.namespaceURI = this.namespace.value; >+ this.mData.accepted = true; >+ return true; >+ }, >+ >+ /** >+ * toggleNamespace toggles the namespace textbox based on the namespace menu. >+ */ >+ toggleNamespace: function toggleNamespace() >+ { >+ dialog.namespace.disabled = dialog.menulist.selectedItem.id != "mi_custom"; >+ dialog.namespace.value = dialog.menulist.value; >+ }, >+ >+ /** >+ * enableNamespaces determines if the document accepts namespaces or not >+ * >+ * @return True if the document can have namespaced attributes, false >+ * otherwise. >+ */ >+ enableNamespaces: function enableNamespaces() >+ { >+ return this.mDoc.contentType != "text/html"; >+ }, >+ >+ /** >+ * toggleAccept enables/disables the Accept button when there is/isn't an >+ * attribute name. >+ */ >+ toggleAccept: function toggleAccept() >+ { >+ document.documentElement.getButton("accept").disabled = >+ dialog.nodeName.value == ""; >+ } >+}; >diff --git a/suite/extensions/inspector/resources/content/viewers/domNode/domNodeDialog.xul b/suite/extensions/inspector/resources/content/viewers/domNode/domNodeDialog.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/domNode/domNodeDialog.xul >@@ -0,0 +1,89 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. >+--> >+<!DOCTYPE dialog SYSTEM "chrome://inspector/locale/viewers/domNode.dtd"> >+<?xml-stylesheet type="text/css" >+ href="chrome://inspector/skin/viewers/domNode/domNode.css"?> >+ >+<dialog id="editInsertAttribute" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >+ style="min-width: 64ch;" >+ persist="width" >+ buttons="accept,cancel" >+ ondialogaccept="dialog.accept();"> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/domNode/domNodeDialog.js"/> >+ <grid flex="1"> >+ <columns> >+ <column/> >+ <column flex="1"/> >+ </columns> >+ <rows> >+ <row align="center"> >+ <label value="&nodeName.label;" control="tx_nodeName"/> >+ <textbox id="tx_nodeName" oninput="dialog.toggleAccept();"/> >+ </row> >+ <row align="center"> >+ <label value="&nodeValue.label;" control="tx_nodeValue"/> >+ <textbox id="tx_nodeValue"/> >+ </row> >+ <row align="center"> >+ <label value="&namespaceURI.label;" control="ml_namespace"/> >+ <menulist id="ml_namespace" oncommand="dialog.toggleNamespace();"> >+ <menupopup id="mp_namespaces"> >+ <!-- This must be first, and must have the value attribute set to >+ "" in order for it to work properly --> >+ <menuitem label="&namespaceTitle.null.label;" >+ id="mi_NullNS" >+ value=""/> >+ <menuitem label="&namespaceTitle.XMLNS.label;" >+ id="mi_XMLNSNS" >+ value="http://www.w3.org/2000/xmlns/"/> >+ <menuitem label="&namespaceTitle.XML.label;" >+ id="mi_XMLNS" >+ value="http://www.w3.org/XML/1998/namespace"/> >+ <menuitem label="&namespaceTitle.XHTML.label;" >+ id="mi_XHTMLNS" >+ value="http://www.w3.org/1999/xhtml"/> >+ <menuitem label="&namespaceTitle.XLink.label;" >+ id="mi_XLinkNS" >+ value="http://www.w3.org/1999/xlink"/> >+ <menuitem label="&namespaceTitle.XSLT.label;" >+ id="mi_XSLTNS" >+ value="http://www.w3.org/1999/XSL/Transform"/> >+ <menuitem label="&namespaceTitle.XBL.label;" >+ id="mi_XBLNS" >+ value="http://www.mozilla.org/xbl"/> >+ <menuitem label="&namespaceTitle.MathML.label;" >+ id="mi_MathMLNS" >+ value="http://www.w3.org/1998/Math/MathML"/> >+ <menuitem label="&namespaceTitle.RDF.label;" >+ id="mi_RDFNS" >+ value="http://www.w3.org/1999/02/22-rdf-syntax-ns"/> >+ <menuitem label="&namespaceTitle.XUL.label;" >+ id="mi_XULNS" >+ value="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"/> >+ <menuitem label="&namespaceTitle.SVG.label;" >+ id="mi_SVGNS" >+ value="http://www.w3.org/2000/svg"/> >+ <menuitem label="&namespaceTitle.XMLEvents.label;" >+ id="mi_XMLEventsNS" >+ value="http://www.w3.org/2001/xml-events"/> >+ <!-- Value set onload --> >+ <menuitem label="&namespaceTitle.default.label;" >+ id="mi_namespace"/> >+ <!-- Value set onload --> >+ <menuitem label="&namespaceTitle.custom.label;" >+ id="mi_custom"/> >+ </menupopup> >+ </menulist> >+ </row> >+ <row> >+ <spacer/> >+ <textbox id="tx_namespace"/> >+ </row> >+ </rows> >+ </grid> >+</dialog> >diff --git a/suite/extensions/inspector/resources/content/viewers/jsObject/evalExprDialog.js b/suite/extensions/inspector/resources/content/viewers/jsObject/evalExprDialog.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/jsObject/evalExprDialog.js >@@ -0,0 +1,36 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* EvalExprDialog ------------------------------------------------------------- >+* A dialog for entering javascript expression to evaluate and view in the JS >+* Object Viewer. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+*****************************************************************************/ >+ >+var gViewer = window.arguments[0]; >+var gTarget = window.arguments[1]; >+ >+/** >+ * Executes the JavaScript expression entered by the user. >+ */ >+function execute() >+{ >+ var txf = document.getElementById("txfExprInput"); >+ var rad = document.getElementById("inspect-new-window"); >+ try { >+ gViewer.doEvalExpr(txf.value, gTarget, rad.selected); >+ } >+ catch (ex) { >+ // alert the user of an error in their expression, and don't close >+ let svc = XPCU.getService("@mozilla.org/embedcomp/prompt-service;1", >+ "nsIPromptService"); >+ svc.alert(window, ex.name, ex.message); >+ >+ return false; >+ } >+ return true; >+} >diff --git a/suite/extensions/inspector/resources/content/viewers/jsObject/evalExprDialog.xul b/suite/extensions/inspector/resources/content/viewers/jsObject/evalExprDialog.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/jsObject/evalExprDialog.xul >@@ -0,0 +1,42 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE dialog [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/jsObject.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin"?> >+ >+<dialog id="winEvalExpr" >+ title="&evaluateDialog.title;" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >+ ondialogaccept="return execute();" >+ buttonlabelaccept="&jsExecute.label;" >+ style="width: 30em;"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/jsObject/evalExprDialog.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ >+ <stringbundle id="strings" >+ src="chrome://inspector/locale/inspector.properties"/> >+ >+ <description>&jsEval.desc;</description> >+ >+ <textbox id="txfExprInput"/> >+ >+ <groupbox> >+ <caption label="&inspectReturn.label;"/> >+ <radiogroup id="inspect-return-location"> >+ <radio id="inspect-existing-window" label="&inspectReturnExisting.label;" >+ selected="true"/> >+ <radio id="inspect-new-window" label="&inspectReturnNew.label;"/> >+ </radiogroup> >+ </groupbox> >+ >+</dialog> >diff --git a/suite/extensions/inspector/resources/content/viewers/jsObject/jsObject.js b/suite/extensions/inspector/resources/content/viewers/jsObject/jsObject.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/jsObject/jsObject.js >@@ -0,0 +1,27 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/*************************************************************** >+* JSObjectViewer -------------------------------------------- >+* The viewer for all facets of a javascript object. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+****************************************************************/ >+ >+//////////// global variables ///////////////////// >+ >+var viewer; >+var bundle; >+ >+////////////////////////////////////////////////// >+ >+window.addEventListener("load", JSObjectViewer_initialize, false); >+ >+function JSObjectViewer_initialize() >+{ >+ bundle = document.getElementById("inspector-bundle"); >+ viewer = new JSObjectViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >diff --git a/suite/extensions/inspector/resources/content/viewers/jsObject/jsObject.xul b/suite/extensions/inspector/resources/content/viewers/jsObject/jsObject.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/jsObject/jsObject.xul >@@ -0,0 +1,23 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<?xul-overlay href="chrome://inspector/content/viewers/jsObject/jsObjectViewer.xul"?> >+ >+<page id="winJSObject" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/jsObject/jsObject.js"/> >+ >+ <stringbundle id="inspector-bundle"/> >+ <commandset id="cmdsEditingExtras"/> >+ <commandset id="cmdsJSObjectViewer"/> >+ >+ <popupset> >+ <menupopup id="popupContext"/> >+ </popupset> >+ <tree id="treeJSObject" treelines="true" class="plain"/> >+</page> >diff --git a/suite/extensions/inspector/resources/content/viewers/jsObject/jsObjectViewer.js b/suite/extensions/inspector/resources/content/viewers/jsObject/jsObjectViewer.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/jsObject/jsObjectViewer.js >@@ -0,0 +1,617 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* JSObjectViewer ------------------------------------------------------------- >+* The viewer for all facets of a javascript object. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/utils.js >+* chrome://inspector/content/hooks.js >+* chrome://inspector/content/jsutil/events/ObserverManager.js >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kClipboardHelperCID = "@mozilla.org/widget/clipboardhelper;1"; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Class JSObjectViewer >+ >+function JSObjectViewer() >+{ >+ this.mObsMan = new ObserverManager(this); >+} >+ >+JSObjectViewer.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mSubject: null, >+ mPane: null, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// interface inIViewer >+ >+ get uid() >+ { >+ return "jsObject"; >+ }, >+ >+ get pane() >+ { >+ return this.mPane; >+ }, >+ >+ get selection() >+ { >+ return this.mSelection; >+ }, >+ >+ get subject() >+ { >+ return this.mSubject; >+ }, >+ >+ set subject(aObject) >+ { >+ var object = >+ "@mozilla.org/accessibleRetrieval;1" in Components.classes && >+ aObject instanceof Components.interfaces.nsIAccessible ? >+ aObject.DOMNode : aObject; >+ >+ this.setSubject(object); >+ }, >+ >+ // The accessibleObject viewer extends JSObjectViewer. This method is here >+ // (and not just inlined above) so that the accessibleObject viewer can get >+ // access to this function without having to use __lookupSetter__ before >+ // overriding with its own subject setter. >+ setSubject: function JSOVr_SetSubject(aObject) >+ { >+ this.mSubject = this.unwrapObject(aObject); >+ this.mView = new JSObjectView(this.mSubject); >+ this.mTree.view = this.mView; >+ >+ this.mObsMan.dispatchEvent("subjectChange", { subject: this.mSubject }); >+ >+ // If the user has just switched to us from another viewer in the document >+ // pane and we don't set the selection below, the object pane will >+ // continue to show whatever now-irrelevant thing it was showing before. >+ this.mView.selection.select(0); >+ this.mView.toggleOpenState(0); >+ }, >+ >+ initialize: function JSOVr_Initialize(aPane) >+ { >+ this.mPane = aPane; >+ this.mTree = document.getElementById("treeJSObject"); >+ >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function JSOVr_Destroy() >+ { >+ }, >+ >+ isCommandEnabled: function JSOVr_IsCommandEnabled(aCommand) >+ { >+ switch (aCommand) { >+ case "cmdCopyValue": >+ case "cmdEvalExpr": >+ return this.getSelectedCount() == 1; >+ case "cmdEditInspectInNewWindow": >+ if (this.getSelectedCount() != 1) { >+ return false; >+ } >+ let obj = this.getSelectedObject(); >+ return cmdEditInspectInNewWindowBase.isInspectable(obj); >+ } >+ return false; >+ }, >+ >+ getCommand: function JSOVr_GetCommand(aCommand) >+ { >+ if (aCommand in window) { >+ return new window[aCommand](); >+ } >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Event Dispatching >+ >+ addObserver: function JSOVr_AddObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ >+ removeObserver: function JSOVr_RemoveObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// UI Commands >+ >+ cmdCopyValue: function JSOVr_CmdCopyValue() >+ { >+ if (this.getSelectedCount() != 1) { >+ return; >+ } >+ >+ var obj = this.getSelectedObject(); >+ var helper = XPCU.getService(kClipboardHelperCID, "nsIClipboardHelper"); >+ helper.copyString(obj); >+ }, >+ >+ cmdEvalExpr: function JSOVr_CmdEvalExpr() >+ { >+ if (this.getSelectedCount() != 1) { >+ return; >+ } >+ >+ var obj = this.getSelectedObject(); >+ openDialog("chrome://inspector/content/viewers/jsObject/evalExprDialog.xul", >+ "_blank", "chrome", this, obj); >+ }, >+ >+ doEvalExpr: function JSOVr_DoEvalExpr(aExpr, aTarget, aNewView) >+ { >+ // TODO: I should really write some C++ code to execute the js code in the >+ // js context of the inspected window >+ >+ try { >+ var f = Function("target", aExpr); >+ var result = f(aTarget); >+ >+ if (result) { >+ if (aNewView) { >+ inspectObject(result); >+ } >+ else { >+ this.subject = result; >+ } >+ } >+ } >+ catch (ex) { >+ dump("Error in expression.\n"); >+ throw (ex); >+ } >+ }, >+ >+ getSelectedCount: function JSOVr_GetSelectedCount() >+ { >+ return this.mView.selection.count; >+ }, >+ >+ getSelectedObject: function JSOVr_GetSelectedObject() >+ { >+ if (this.getSelectedCount() != 1) { >+ throw new Error("Selection count not 1"); >+ } >+ return this.mView.getSelectedRowObjects()[0]; >+ }, >+ >+ onTreeSelectionChange: function JSOVr_OnTreeSelectionChange() >+ { >+ // NB: This function gets called on selection *and* deselection. >+ var view = this.mView; >+ var currentIndex = view.selection.currentIndex; >+ var currentValue = view.getRowObjectFromIndex(currentIndex); >+ >+ if (view.selection.isSelected(currentIndex)) { >+ this.changeSelection(currentValue); >+ } >+ // Otherwise, the row at currentIndex was deselected. If there are other >+ // rows selected, use the nearest one for mSelection. If not, we'll leave >+ // mSelection alone and won't dispatch any event; if there's an object >+ // panel linked to ours, just let it keep inspecting the value from the >+ // deselected row. >+ else if (this.mSelection == currentValue && view.selection.count) { >+ var nearestSelectedIndex = >+ InsUtil.getNearestIndex(currentIndex, view.getSelectedIndices()); >+ this.changeSelection(view.getRowObjectFromIndex(nearestSelectedIndex)); >+ } >+ >+ this.updateAllCommands(); >+ }, >+ >+ changeSelection: function JSOVr_ChangeSelection(aVal) >+ { >+ this.mSelection = aVal; >+ this.mObsMan.dispatchEvent("selectionChange", { selection: aVal }); >+ }, >+ >+ updateAllCommands: function JSOVr_UpdateAllCommands() >+ { >+ this.pane.panelset.updateAllCommands(); >+ >+ // There's no need to worry about any other commands outside this >+ // commandset; cmdInspectInNewWindow is global, so it just got updated. >+ var commands = document.getElementById("cmdsJSObjectViewer").childNodes; >+ for (let i = 0, n = commands.length; i < n; ++i) { >+ let command = commands[i]; >+ if (this.isCommandEnabled(command.id)) { >+ command.removeAttribute("disabled"); >+ } >+ else { >+ command.setAttribute("disabled", true); >+ } >+ } >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Miscellaneous Utility Methods >+ >+ unwrapObject: function JSOVr_UnwrapObject(aObject) >+ { >+ /* unwrap() throws for primitive values, so don't call it for those */ >+ if (typeof(aObject) === "object" && aObject) { >+ aObject = XPCNativeWrapper.unwrap(aObject); >+ } >+ return aObject; >+ } >+}; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// JSObjectView >+ >+function JSObjectView(aObject) >+{ >+ this.mKeys = [bundle.getString("root.title")]; >+ this.mValues = [aObject]; >+ this.mValueStrings = [this.jsValueToString(aObject)]; >+ >+ this.mLevels = [0]; >+ this.mOpenStates = [false]; >+ >+ this.mRowCount = 1; >+} >+ >+JSObjectView.prototype = new inBaseTreeView(); >+ >+JSObjectView.prototype.mLevels = null; >+JSObjectView.prototype.mValues = null; >+JSObjectView.prototype.mValueStrings = null; >+JSObjectView.prototype.mLevels = null; >+JSObjectView.prototype.mOpenStates = null; >+ >+JSObjectView.prototype.jsValueToString = function JSOV_JSValueToString(aVal) >+{ >+ var str; >+ try { >+ str = String(aVal); >+ } >+ catch (ex) { >+ str = Object.prototype.toString.call(aVal); >+ } >+ >+ if (typeof(aVal) == "string") { >+ str = "\"" + str + "\""; >+ } >+ >+ return str; >+}; >+ >+/** >+ * Sort the keys for an object into the following order: >+ * - constants with numeric values sorted numerically by value >+ * - sorted alphanumerically by key in the event of a tie >+ * - constants with non-numeric values sorted alphanumerically by key >+ * - other numeric key names (e.g., array indices) sorted numerically >+ * - other key names sorted alphanumerically >+ * @param aObject >+ * The object whose keys we're sorting. >+ * @param aKeys >+ * The list of property names of aObject being sorted. >+ */ >+JSObjectView.prototype.sortKeys = function JSOV_SortKeys(aObject, aKeys) >+{ >+ /** >+ * A sort comparator for numeric values. Numerics come before non-numerics. >+ * If both parameters are non-numeric, returns 0. >+ */ >+ var numericSortComparator = >+ function JSOV_SortKeys_NumericSortComparator(a, b) >+ { >+ if (isNaN(a)) { >+ return isNaN(b) ? 0 : 1; >+ } >+ if (isNaN(b)) { >+ return -1; >+ } >+ return a - b; >+ }; >+ >+ var keySortComparator = function JSOV_SortKeys_KeySortComparator(a, b) >+ { >+ var aIsConstant = a == a.toUpperCase() && isNaN(a); >+ var bIsConstant = b == b.toUpperCase() && isNaN(b); >+ // constants come first >+ if (aIsConstant) { >+ if (bIsConstant) { >+ // both are constants. sort by numeric value, then non-numeric name >+ return numericSortComparator(aObject[a], aObject[b]) || >+ a.localeCompare(b); >+ } >+ // a is constant, b is not >+ return -1; >+ } >+ if (bIsConstant) { >+ // b is constant, a is not >+ return 1; >+ } >+ // neither are constants. go by numeric property name, then non-numeric >+ // property name >+ return numericSortComparator(a, b) || a.localeCompare(b); >+ }; >+ >+ aKeys.sort(keySortComparator); >+}; >+ >+/** >+ * Get the number of rows that are descendants of the given row. >+ * @param aIndex >+ * The index of the row. >+ * @return The number of descendants, as above. >+ */ >+JSObjectView.prototype.getDescendantCount = >+ function JSOV_GetDescendantCount(aIndex) >+{ >+ if (this.checkForBadIndex(aIndex)) { >+ return 0; >+ } >+ >+ var level = this.mLevels[aIndex]; >+ var currentIndex = aIndex + 1; >+ var rowCount = this.mRowCount; >+ while (this.mLevels[currentIndex] > level && currentIndex < rowCount) { >+ ++currentIndex; >+ } >+ >+ return currentIndex - aIndex - 1; >+}; >+ >+JSObjectView.prototype.getRowObjectFromIndex = >+ function JSOV_GetRowObjectFromIndex(aIndex) >+{ >+ if (this.checkForBadIndex(aIndex)) { >+ throw new RangeError("Invalid index " + aIndex); >+ } >+ >+ return this.mValues[aIndex]; >+} >+ >+JSObjectView.prototype.collapseRow = function JSOV_CollapseRow(aIndex) >+{ >+ var rowsDeleted = this.getDescendantCount(aIndex); >+ if (rowsDeleted) { >+ let after = aIndex + 1; >+ this.mKeys.splice(after, rowsDeleted); >+ this.mValues.splice(after, rowsDeleted); >+ this.mValueStrings.splice(after, rowsDeleted); >+ this.mOpenStates.splice(after, rowsDeleted); >+ this.mLevels.splice(after, rowsDeleted); >+ } >+ return rowsDeleted; >+}; >+ >+JSObjectView.prototype.expandRow = function JSOV_ExpandRow(aIndex) >+{ >+ var insertedKeys = []; >+ var insertedValues = []; >+ var insertedValueStrings = []; >+ var insertedOpenStates = []; >+ var insertedLevels = []; >+ >+ // Get the new keys. >+ var obj = this.mValues[aIndex]; >+ for (let key in obj) { >+ // Not pretty, but we need some way to weed out properties that throw. >+ // It's not as simple as just going ahead and caching the values now, >+ // because when we sort the keys, we'd lose the correspondence between >+ // array indices. >+ try { >+ let val = obj[key]; >+ insertedKeys.push(key); >+ } >+ catch (ex) { >+ // Faked properties throw NOT_YET_IMPLEMENTED. Discard them. >+ } >+ } >+ this.sortKeys(obj, insertedKeys); >+ >+ // Get the new data. >+ var rowsInserted = insertedKeys.length; >+ var level = this.mLevels[aIndex] + 1; >+ for (let i = 0; i < rowsInserted; ++i) { >+ let val = viewer.unwrapObject(obj[insertedKeys[i]]); >+ insertedValues.push(val); >+ insertedValueStrings.push(this.jsValueToString(val)); >+ insertedOpenStates.push(false); >+ insertedLevels.push(level); >+ } >+ >+ // Splice in everything. >+ var after = aIndex + 1; >+ this.spliceFrom(this.mKeys, after, insertedKeys); >+ this.spliceFrom(this.mValues, after, insertedValues); >+ this.spliceFrom(this.mValueStrings, after, insertedValueStrings); >+ this.spliceFrom(this.mOpenStates, after, insertedOpenStates); >+ this.spliceFrom(this.mLevels, after, insertedLevels); >+ >+ return rowsInserted; >+}; >+ >+/** >+ * Splice elements copied from one array into another at the given index. >+ * There is no way to specify that any elements should be removed. >+ * @param aDestination >+ * The array the data should be spliced into. >+ * @param aIndex >+ * The index into aDestination that the data should be copied to. >+ * @param aSource >+ * The array that should be copied into aDestination at aIndex. >+ */ >+JSObjectView.prototype.spliceFrom = >+ function JSOV_SpliceFrom(aDestination, aIndex, aSource) >+{ >+ Array.prototype.splice.apply(aDestination, ([aIndex, 0]).concat(aSource)); >+}; >+ >+/** >+ * Check if the purported row is outside the range of valid row indexes. >+ * @param aIndex >+ * The index of the given row. >+ * @return true iff aIndex is outside the range >+ */ >+JSObjectView.prototype.checkForBadIndex = >+ function JSOV_CheckForBadIndex(aIndex) >+{ >+ if (aIndex < 0 || aIndex >= this.mRowCount) { >+ Components.utils.reportError("Bad index"); >+ return true; >+ } >+ >+ return false; >+}; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// JSObjectView nsITreeView Implementation >+ >+JSObjectView.prototype.toggleOpenState = function JSOV_ToggleOpenState(aIndex) >+{ >+ if (this.isContainerEmpty(aIndex)) { >+ return; >+ } >+ >+ var rowCountChange = 0; >+ var isOpen = this.mOpenStates[aIndex]; >+ if (isOpen) { >+ rowCountChange = -this.collapseRow(aIndex); >+ } >+ else { >+ rowCountChange = this.expandRow(aIndex); >+ } >+ this.mOpenStates[aIndex] = !isOpen; >+ >+ this.mRowCount += rowCountChange; >+ >+ // Notify the box object. >+ var bo = this.mTree; >+ if (bo) { >+ bo.rowCountChanged(aIndex + 1, rowCountChange); >+ bo.invalidateRow(aIndex); >+ } >+}; >+ >+JSObjectView.prototype.getCellText = function JSOV_GetCellText(aIndex, aCol) >+{ >+ if (this.checkForBadIndex(aIndex)) { >+ return ""; >+ } >+ >+ switch (aCol.id) { >+ case "colProp": >+ return this.mKeys[aIndex]; >+ case "colVal": >+ return this.mValueStrings[aIndex]; >+ } >+ return ""; >+}; >+ >+JSObjectView.prototype.getParentIndex = function JSOV_GetParentIndex(aIndex) >+{ >+ if (this.checkForBadIndex(aIndex) || aIndex == 0) { >+ return -1; >+ } >+ >+ var parentLevel = this.mLevels[aIndex] - 1; >+ for (let i = aIndex - 1; i >= 0; --i) { >+ if (this.mLevels[i] == parentLevel) { >+ return i; >+ } >+ } >+ >+ Components.utils.reportError("Unrooted rows present"); >+ return -1; >+}; >+ >+JSObjectView.prototype.hasNextSibling = >+ function JSOV_HasNextSibling(aIndex, aAfterIndex) >+{ >+ if (this.checkForBadIndex(aIndex)) { >+ return false; >+ } >+ >+ var level = this.mLevels[aIndex]; >+ for (let i = aAfterIndex + 1, n = this.mRowCount; i < n; ++i) { >+ if (this.mLevels[i] == level) { >+ return true; >+ } >+ if (this.mLevels[i] < level) { >+ break; >+ } >+ } >+ >+ return false; >+}; >+ >+JSObjectView.prototype.getLevel = function JSOV_GetLevel(aIndex) >+{ >+ if (this.checkForBadIndex(aIndex)) { >+ return -1; >+ } >+ >+ return this.mLevels[aIndex]; >+}; >+ >+JSObjectView.prototype.isContainer = function JSOV_IsContainer(aIndex) >+{ >+ if (this.checkForBadIndex(aIndex)) { >+ return false; >+ } >+ >+ return cmdEditInspectInNewWindowBase.isInspectable(this.mValues[aIndex]); >+}; >+ >+JSObjectView.prototype.isContainerEmpty = >+ function JSOV_IsContainerEmpty(aIndex) >+{ >+ if (!this.isContainer(aIndex)) { >+ return true; >+ } >+ >+ var val = this.mValues[aIndex]; >+ for (let key in val) { >+ return false; >+ } >+ >+ return true; >+}; >+ >+JSObjectView.prototype.isContainerOpen = function JSOV_IsContainerOpen(aIndex) >+{ >+ if (!this.isContainer(aIndex)) { >+ return false; >+ } >+ >+ return this.mOpenStates[aIndex]; >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Transactions >+ >+function cmdEditInspectInNewWindow() >+{ >+ if (viewer.getSelectedCount() == 1) { >+ this.mObject = viewer.getSelectedObject(); >+ } >+} >+ >+cmdEditInspectInNewWindow.prototype = new cmdEditInspectInNewWindowBase(); >diff --git a/suite/extensions/inspector/resources/content/viewers/jsObject/jsObjectViewer.xul b/suite/extensions/inspector/resources/content/viewers/jsObject/jsObjectViewer.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/jsObject/jsObjectViewer.xul >@@ -0,0 +1,60 @@ >+<?xml version="1.0"?> >+ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/jsObject.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin/inspector.css"?> >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inBaseTreeView.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/jsObject/jsObjectViewer.js"/> >+ >+ <stringbundle id="inspector-bundle" >+ src="chrome://inspector/locale/inspector.properties"/> >+ >+ <commandset id="cmdsEditingExtras"/> >+ <commandset id="cmdsJSObjectViewer"> >+ <command id="cmdCopyValue" oncommand="viewer.cmdCopyValue();"/> >+ <command id="cmdEvalExpr" oncommand="viewer.cmdEvalExpr();"/> >+ </commandset> >+ >+ <menupopup id="popupContext"> >+ <!-- mnEditInspectInNewWindow is overlaid by editingOverlay.xul --> >+ <menuitem id="mnEditInspectInNewWindow"/> >+ <menuseparator/> >+ <menuitem label="&jsCopyValue.label;" command="cmdCopyValue"/> >+ <menuitem label="&jsEval.label;" command="cmdEvalExpr"/> >+ </menupopup> >+ >+ <tree id="treeJSObject" flex="1" context="popupContext" >+ onselect="viewer.onTreeSelectionChange();"> >+ <treecols> >+ <treecol id="colProp" flex="1" primary="true" >+ label="&jsProperty.label;"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colVal" flex="1" label="&jsValue.label;"/> >+ </treecols> >+ >+ <treechildren id="trchJSObject"/> >+ </tree> >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/viewers/styleRules/commandOverlay.xul b/suite/extensions/inspector/resources/content/viewers/styleRules/commandOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/styleRules/commandOverlay.xul >@@ -0,0 +1,18 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/viewers/styleRules.dtd"> >+ >+<overlay id="ovStyleRulesViewerCommands" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <commandset id="cmdsGlobalCommands"> >+ >+ </commandset> >+ >+</overlay> >+ >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/styleRules/keysetOverlay.xul b/suite/extensions/inspector/resources/content/viewers/styleRules/keysetOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/styleRules/keysetOverlay.xul >@@ -0,0 +1,18 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/viewers/dom.dtd"> >+ >+<overlay id="ovDOMViewerKeyset" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <keyset id="ksGlobalKeyset"> >+ <key id="key:find" key="&cmdShowFindDialog.accelkey;" observes="cmd:find" >+ modifiers="accel"/> >+ <key id="key:findNext" keycode="VK_F3" observes="cmd:findNext"/> >+ </keyset> >+ >+</overlay> >diff --git a/suite/extensions/inspector/resources/content/viewers/styleRules/popupOverlay.xul b/suite/extensions/inspector/resources/content/viewers/styleRules/popupOverlay.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/styleRules/popupOverlay.xul >@@ -0,0 +1,21 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE overlay SYSTEM "chrome://inspector/locale/viewers/styleRules.dtd"> >+ >+<overlay id="ovStyleRulesViewerPopup" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <popupset id="ppsViewerPopupset"> >+ <!-- >+ <menupopup id="ppViewerContext-styleRules"> >+ </menupopup> >+ --> >+ </popupset> >+ >+</overlay> >+ >+ >diff --git a/suite/extensions/inspector/resources/content/viewers/styleRules/styleRules.js b/suite/extensions/inspector/resources/content/viewers/styleRules/styleRules.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/styleRules/styleRules.js >@@ -0,0 +1,809 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* StyleRulesViewer ----------------------------------------------------------- >+* The viewer for CSS style rules that apply to a DOM element. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/utils.js >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/jsutil/rdf/RDFU.js >+* chrome://global/content/viewSourceUtils.js >+* chrome://inspector/content/jsutil/commands/baseCommands.js >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+var gPromptService; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kDOMUtilsCID = "@mozilla.org/inspector/dom-utils;1"; >+const kPromptServiceCID = "@mozilla.org/embedcomp/prompt-service;1"; >+ >+////////////////////////////////////////////////////////////////////////////// >+ >+window.addEventListener("load", StyleRulesViewer_initialize, false); >+ >+function StyleRulesViewer_initialize() >+{ >+ viewer = new StyleRulesViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+ >+ gPromptService = XPCU.getService(kPromptServiceCID, "nsIPromptService"); >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Class StyleRulesViewer >+ >+function StyleRulesViewer() // implements inIViewer >+{ >+ this.mObsMan = new ObserverManager(this); >+ >+ this.mURL = window.location; >+ this.mRuleTree = document.getElementById("olStyleRules"); >+ this.mRuleBoxObject = this.mRuleTree.treeBoxObject; >+ this.mPropsTree = document.getElementById("olStyleProps"); >+ this.mPropsBoxObject = this.mPropsTree.treeBoxObject; >+ this.mFocusedTree = null; >+ this.mDOMUtils = XPCU.getService(kDOMUtilsCID, "inIDOMUtils"); >+} >+ >+StyleRulesViewer.prototype = >+{ >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mSubject: null, >+ mPanel: null, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Interface inIViewer >+ >+ get uid() >+ { >+ return "styleRules" >+ }, >+ >+ get pane() >+ { >+ return this.mPanel >+ }, >+ >+ get selection() >+ { >+ return null >+ }, >+ >+ get subject() >+ { >+ return this.mSubject >+ }, >+ >+ set subject(aObject) >+ { >+ this.mSubject = >+ ("@mozilla.org/accessibleRetrieval;1" in Components.classes && >+ aObject instanceof Components.interfaces.nsIAccessible) ? >+ aObject.DOMNode : aObject; >+ >+ // update the rule tree >+ this.mRuleView = new StyleRuleView(this.mSubject); >+ this.mRuleBoxObject.view = this.mRuleView; >+ // clear the props tree >+ this.mPropsTree.disabled = true; >+ this.mPropsTree.contextMenu = null; >+ this.mPropsView = null; >+ this.mPropsBoxObject.view = null; >+ >+ this.mObsMan.dispatchEvent("subjectChange", { subject: this.mSubject }); >+ }, >+ >+ initialize: function SRVr_Initialize(aPane) >+ { >+ this.mPanel = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function SRVr_Destroy() >+ { >+ // We need to remove the views at this time or else they will attempt to >+ // re-paint while the document is being deconstructed, resulting in >+ // some nasty XPConnect assertions >+ this.mRuleBoxObject.view = null; >+ this.mPropsBoxObject.view = null; >+ }, >+ >+ isCommandEnabled: function SRVr_IsCommandEnabled(aCommand) >+ { >+ var rule = this.getSelectedRule(); >+ var fileURI = rule && rule.parentStyleSheet && rule.parentStyleSheet.href; >+ // XXX can't edit resource: stylesheets because of bug 343508, and >+ // CSSFontFaceRules because of bug 443978 >+ var isEditable = !(/^resource:/.test(fileURI) || >+ rule instanceof CSSFontFaceRule); >+ >+ var propFocus = this.mFocusedTree == this.mPropsTree; >+ var propCount = this.mPropsTree.view.selection.count; >+ >+ switch (aCommand) { >+ // ppStylePropsContext >+ // The first three of these are context-sensitive; until they are >+ // supported for the rule pane, they are meaningless when it has focus. >+ case "cmdEditCopy": >+ return propFocus && propCount > 0; >+ case "cmdEditDelete": >+ return isEditable && propFocus && propCount > 0; >+ case "cmdEditInsert": >+ return isEditable && propFocus; >+ case "cmdTogglePriority": >+ return isEditable && propCount > 0; >+ case "cmdEditEdit": >+ return isEditable && propCount == 1; >+ // ppStyleRulesContext >+ case "cmdEditCopyFileURI": >+ case "cmdEditViewFileURI": >+ return !!fileURI; >+ } >+ return false; >+ }, >+ >+ getCommand: function SRVr_GetCommand(aCommand) >+ { >+ switch (aCommand) { >+ case "cmdEditCopy": >+ return new cmdEditCopy(this.mPropsView.getSelectedRowObjects()); >+ case "cmdEditDelete": >+ return new cmdEditDelete(this.getSelectedDec(), >+ this.mPropsView.getSelectedRowObjects()); >+ case "cmdEditInsert": >+ var bundle = this.mPanel.panelset.stringBundle; >+ var msg = bundle.getString("styleRulePropertyName.message"); >+ var title = bundle.getString("styleRuleNewProperty.title"); >+ >+ var property = { value: "" }; >+ var value = { value: "" }; >+ var dummy = { value: false }; >+ >+ if (!gPromptService.prompt(window, title, msg, property, null, >+ dummy)) { >+ return null; >+ } >+ >+ msg = bundle.getString("styleRulePropertyValue.message"); >+ if (!gPromptService.prompt(window, title, msg, value, null, dummy)) { >+ return null; >+ } >+ >+ return new cmdEditInsert(this.getSelectedDec(), property.value, >+ value.value, ""); >+ case "cmdEditEdit": >+ var rule = this.getSelectedDec(); >+ var property = this.getSelectedProp(); >+ var priority = rule.getPropertyPriority(property); >+ >+ var bundle = this.mPanel.panelset.stringBundle; >+ var msg = bundle.getString("styleRulePropertyValue.message"); >+ var title = bundle.getString("styleRuleEditProperty.title"); >+ >+ var value = { value: rule.getPropertyValue(property) }; >+ var dummy = { value: false }; >+ >+ if (!gPromptService.prompt(window, title, msg, value, null, dummy)) { >+ return null; >+ } >+ >+ return new cmdEditEdit(rule, property, value.value, priority); >+ case "cmdTogglePriority": >+ return new cmdTogglePriority(this.getSelectedDec(), >+ this.mPropsView.getSelectedRowObjects()); >+ case "cmdEditCopyFileURI": >+ return new cmdEditCopyFileURI(this.getSelectedRule()); >+ case "cmdEditViewFileURI": >+ return new cmdEditViewFileURI(this.getSelectedRule()); >+ } >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Event Dispatching >+ >+ addObserver: function SRVr_AddObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ >+ removeObserver: function SRVr_RemoveObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Uncategorized >+ >+ get DOMUtils() { >+ return this.mDOMUtils; >+ }, >+ >+ getSelectedDec: function SRVr_GetSelectedDec() >+ { >+ var idx = this.mRuleTree.currentIndex; >+ return this.mRuleView.selection.count == 1 ? >+ this.mRuleView.getDecAt(idx) : >+ null; >+ }, >+ >+ getSelectedProp: function SRVr_GetSelectedProp() >+ { >+ if (this.mPropsView.selection.count != 1) { >+ return null; >+ } >+ var dec = this.getSelectedDec(); >+ // API awkwardness >+ var min = {}, max = {}; >+ this.mPropsView.selection.getRangeAt(0, min, max); >+ return dec.item(min.value); >+ }, >+ >+ getSelectedRule: function SRVr_GetSelectedRule() >+ { >+ var idx = this.mRuleTree.currentIndex; >+ return this.mRuleView.selection.count == 1 ? >+ this.mRuleView.getRuleAt(idx) : >+ null; >+ }, >+ >+ onRuleSelect: function SRVr_OnRuleSelect() >+ { >+ var dec = this.getSelectedDec(); >+ this.mPropsView = new StylePropsView(dec); >+ this.mPropsBoxObject.view = this.mPropsView; >+ viewer.pane.panelset.updateAllCommands(); >+ // for non-style rules, change props tree depending on its relevance >+ this.mPropsTree.disabled = !dec; >+ this.mPropsTree.contextMenu = dec ? "ppStylePropsContext" : null; >+ }, >+ >+ onPropSelect: function SRVr_OnPropSelect() >+ { >+ viewer.pane.panelset.updateAllCommands(); >+ }, >+ >+ onTreeFocus: function SRVr_OnTreeFocus(aTree) >+ { >+ this.mFocusedTree = aTree; >+ viewer.pane.panelset.updateAllCommands(); >+ }, >+ >+ onPopupShowing: function SRVr_OnPopupShowing(aCommandSetId) >+ { >+ var commandset = document.getElementById(aCommandSetId); >+ for (let i = 0; i < commandset.childNodes.length; i++) { >+ var command = commandset.childNodes[i]; >+ command.setAttribute("disabled", !viewer.isCommandEnabled(command.id)); >+ } >+ } >+}; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// StyleRuleView >+ >+function StyleRuleView(aObject) >+{ >+ this.mLevel = []; >+ this.mOpen = []; >+ if (aObject instanceof Components.interfaces.nsIDOMCSSStyleSheet) { >+ document.getElementById("olcRule").setAttribute("primary", "true"); >+ this.mSheetRules = []; >+ for (let i = 0; i < aObject.cssRules.length; i++) { >+ this.mSheetRules[i] = aObject.cssRules[i]; >+ this.mLevel[i] = 0; >+ this.mOpen[i] = false; >+ } >+ } >+ else { >+ document.getElementById("olcRule").removeAttribute("primary"); >+ this.mRules = viewer.DOMUtils.getCSSStyleRules(aObject); >+ if (aObject.hasAttribute("style")) { >+ try { >+ this.mStyleAttribute = >+ new XPCNativeWrapper(aObject, "style").style; >+ } >+ catch (ex) { >+ } >+ } >+ } >+} >+ >+StyleRuleView.prototype = new inBaseTreeView(); >+ >+StyleRuleView.prototype.mSheetRules = null; >+StyleRuleView.prototype.mLevel = null; >+StyleRuleView.prototype.mOpen = null; >+StyleRuleView.prototype.mRules = null; >+StyleRuleView.prototype.mStyleAttribute = null; >+ >+StyleRuleView.prototype.getRuleAt = function SRV_GetRuleAt(aRow) >+{ >+ if (aRow >= 0) { >+ if (this.mRules) { >+ var rule = this.mRules.GetElementAt(aRow); >+ try { >+ return XPCU.QI(rule, "nsIDOMCSSStyleRule"); >+ } >+ catch (ex) { >+ } >+ } >+ else { >+ return this.mSheetRules[aRow]; >+ } >+ } >+ return null; >+} >+ >+StyleRuleView.prototype.getDecAt = function SRV_GetDecAt(aRow) >+{ >+ if (aRow >= 0) { >+ if (this.mRules) { >+ if (this.mStyleAttribute && aRow == this.mRules.Count()) { >+ return this.mStyleAttribute; >+ } >+ var rule = this.mRules.GetElementAt(aRow); >+ try { >+ return XPCU.QI(rule, "nsIDOMCSSStyleRule").style; >+ } >+ catch (ex) { >+ } >+ } >+ // for CSSStyleRule, CSSFontFaceRule, CSSPageRule, and >+ // ElementCSSInlineStyle >+ else if ("style" in this.mSheetRules[aRow]) { >+ return this.mSheetRules[aRow].style; >+ } >+ } >+ return null; >+} >+ >+StyleRuleView.prototype.getChildCount = function SRV_GetChildCount(aRow) >+{ >+ if (aRow >= 0) { >+ var rule = this.mSheetRules[aRow]; >+ if (rule instanceof CSSImportRule) { >+ return rule.styleSheet ? rule.styleSheet.cssRules.length : 0; >+ } >+ if (rule instanceof CSSMediaRule || >+ rule instanceof CSSMozDocumentRule) { >+ return rule.cssRules.length; >+ } >+ } >+ return 0; >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Interface nsITreeView (Override inBaseTreeView) >+ >+StyleRuleView.prototype.__defineGetter__("rowCount", function() >+{ >+ if (this.mRules) { >+ return this.mRules.Count() + (this.mStyleAttribute ? 1 : 0); >+ } >+ if (this.mSheetRules) { >+ return this.mSheetRules.length; >+ } >+ return 0; >+}); >+ >+StyleRuleView.prototype.getCellText = function SRV_GetCellText(aRow, aCol) >+{ >+ if (aRow > this.rowCount) { >+ return ""; >+ } >+ >+ // special case for the style attribute >+ if (this.mStyleAttribute && aRow == this.mRules.Count()) { >+ if (aCol.id == "olcRule") { >+ return 'style=""'; >+ } >+ >+ if (aCol.id == "olcFileURL") { >+ // we ought to be able to get to the URL... >+ return ""; >+ } >+ >+ if (aCol.id == "olcLine") { >+ return ""; >+ } >+ return ""; >+ } >+ >+ var rule = this.getRuleAt(aRow); >+ if (!rule) { >+ return ""; >+ } >+ >+ if (aCol.id == "olcRule") { >+ if (rule instanceof CSSStyleRule) { >+ return rule.selectorText; >+ } >+ if (rule instanceof CSSFontFaceRule) { >+ return "@font-face"; >+ } >+ if (rule instanceof CSSMediaRule || >+ rule instanceof CSSMozDocumentRule) { >+ // get rule text up until the block begins, and trim off whitespace >+ return rule.cssText.replace(/\s*{[\s\S]*/, ""); >+ } >+ return rule.cssText; >+ } >+ >+ if (aCol.id == "olcFileURL") { >+ return rule.parentStyleSheet ? rule.parentStyleSheet.href : ""; >+ } >+ >+ if (aCol.id == "olcLine") { >+ return rule.type == CSSRule.STYLE_RULE ? >+ viewer.DOMUtils.getRuleLine(rule) : >+ ""; >+ } >+ >+ return ""; >+} >+ >+StyleRuleView.prototype.getLevel = function SRV_GetLevel(aRow) >+{ >+ if (aRow in this.mLevel) { >+ return this.mLevel[aRow]; >+ } >+ return 0; >+} >+ >+StyleRuleView.prototype.getParentIndex = function SRV_GetParentIndex(aRow) >+{ >+ var level = this.getLevel(aRow); >+ for (let i = aRow - 1; i >= 0; --i) { >+ if (this.getLevel(i) < level) { >+ return i; >+ } >+ } >+ return -1; >+} >+ >+StyleRuleView.prototype.hasNextSibling = >+ function SRV_HasNextSibling(aRow, aAfter) >+{ >+ var baseLevel = this.getLevel(aRow); >+ var rowCount = this.rowCount; // quick access since this property is dynamic >+ for (let i = aAfter + 1; i < rowCount; ++i) { >+ if (this.getLevel(i) < baseLevel) { >+ break; >+ } >+ if (this.getLevel(i) == baseLevel) { >+ return true; >+ } >+ } >+ return false; >+} >+ >+StyleRuleView.prototype.isContainer = function SRV_IsContainer(aRow) >+{ >+ if (this.mSheetRules) { >+ if (this.mSheetRules[aRow] instanceof CSSImportRule || >+ this.mSheetRules[aRow] instanceof CSSMediaRule || >+ this.mSheetRules[aRow] instanceof CSSMozDocumentRule) { >+ return true; >+ } >+ } >+ return false; >+} >+ >+StyleRuleView.prototype.isContainerEmpty = function SRV_IsContainerEmpty(aRow) >+{ >+ return !this.getChildCount(aRow); >+} >+ >+StyleRuleView.prototype.isContainerOpen = function SRV_IsContainerOpen(aRow) >+{ >+ return this.mOpen[aRow]; >+} >+ >+StyleRuleView.prototype.toggleOpenState = function SRV_ToggleOpenState(aRow) >+{ >+ var oldLength = this.mSheetRules.length; >+ var childLevel = this.mLevel[aRow] + 1; >+ if (this.mOpen[aRow]) { >+ // find the number of children and other descendants >+ let count = this.mSheetRules.length - aRow - 1; >+ for (let i = aRow + 1, n = this.mSheetRules.length; i < n; ++i) { >+ if (this.mLevel[i] < childLevel) { >+ count = i - aRow - 1; >+ break; >+ } >+ } >+ this.mSheetRules.splice(aRow + 1, count); >+ this.mLevel.splice(aRow + 1, count); >+ this.mOpen.splice(aRow + 1, count); >+ } >+ else { >+ var inserts = []; >+ var rule = this.mSheetRules[aRow]; >+ if (rule instanceof CSSImportRule) { >+ // @import is tricky, because its styleSheet property is allowed to be >+ // null if its media-type qualifier isn't supported, among other >+ // reasons. >+ inserts = rule.styleSheet ? rule.styleSheet.cssRules : []; >+ } >+ else if (rule instanceof CSSMediaRule || >+ rule instanceof CSSMozDocumentRule) { >+ inserts = rule.cssRules; >+ } >+ // make space for children >+ var count = this.getChildCount(aRow); >+ for (let i = this.rowCount - 1; i > aRow; --i) { >+ this.mSheetRules[i + count] = this.mSheetRules[i]; >+ this.mLevel[i + count] = this.mLevel[i]; >+ this.mOpen[i + count] = this.mOpen[i]; >+ } >+ // fill in children >+ for (let i = 0; i < inserts.length; ++i) { >+ this.mSheetRules[aRow + 1 + i] = inserts[i]; >+ this.mLevel[aRow + 1 + i] = childLevel; >+ this.mOpen[aRow + 1 + i] = false; >+ } >+ } >+ this.mOpen[aRow] = !this.mOpen[aRow]; >+ viewer.mRuleTree.treeBoxObject.rowCountChanged(aRow + 1, >+ this.mSheetRules.length - oldLength); >+ viewer.mRuleTree.treeBoxObject.invalidateRow(aRow); >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// StylePropsView >+ >+function StylePropsView(aDec) >+{ >+ this.mDec = aDec; >+} >+ >+StylePropsView.prototype = new inBaseTreeView(); >+ >+StylePropsView.prototype.__defineGetter__("rowCount", function() >+{ >+ return this.mDec ? this.mDec.length : 0; >+}); >+ >+StylePropsView.prototype.getCellProperties = >+ function SPV_GetCellProperties(aRow, aCol, aProperties) >+{ >+ if (aCol.id == "olcPropPriority") { >+ var prop = this.mDec.item(aRow); >+ if (this.mDec.getPropertyPriority(prop) == "important") { >+ if (!aProperties) >+ return "important"; >+ >+ aProperties.AppendElement(this.createAtom("important")); >+ } >+ } >+ >+ return ""; >+} >+ >+StylePropsView.prototype.getCellText = function SPV_GetCellText(aRow, aCol) >+{ >+ var prop = this.mDec.item(aRow); >+ >+ if (aCol.id == "olcPropName") { >+ return prop; >+ } >+ else if (aCol.id == "olcPropValue") { >+ return this.mDec.getPropertyValue(prop) >+ } >+ >+ return null; >+} >+ >+/** >+ * Returns a CSSProperty for the row in the tree corresponding to the >+ * passed index. >+ * @param aIndex >+ * index of the row in the tree >+ * @return a CSSProperty >+ */ >+StylePropsView.prototype.getRowObjectFromIndex = >+ function SPV_GetRowObjectFromIndex(aIndex) >+{ >+ var prop = this.mDec.item(aIndex); >+ return new CSSProperty(prop, this.mDec.getPropertyValue(prop), >+ this.mDec.getPropertyPriority(prop)); >+} >+ >+/** >+ * Handles inserting a CSS property >+ * @param aRule >+ * the rule that will contain the new property >+ * @param aProperty >+ * the name of the new property >+ * @param aValue >+ * the value of the new property >+ * @param aPriority >+ * the priority of the new property ("important" or "") >+ */ >+function cmdEditInsert(aRule, aProperty, aValue, aPriority) >+{ >+ this.rule = aRule; >+ this.property = aProperty; >+ this.value = aValue; >+ this.priority = aPriority; >+} >+ >+cmdEditInsert.prototype = new inBaseCommand(false); >+ >+cmdEditInsert.prototype.doTransaction = function Insert_DoTransaction() >+{ >+ viewer.mPropsBoxObject.beginUpdateBatch(); >+ try { >+ this.rule.setProperty(this.property, this.value, this.priority); >+ } >+ finally { >+ viewer.mPropsBoxObject.endUpdateBatch(); >+ } >+}; >+ >+cmdEditInsert.prototype.undoTransaction = function Insert_UndoTransaction() >+{ >+ this.rule.removeProperty(this.property); >+ viewer.mPropsBoxObject.invalidate(); >+}; >+ >+/** >+ * Handles deleting CSS properties >+ * @param aRule >+ * the rule containing the properties >+ * @param aProperties >+ * an array of CSSPropertys to delete >+ */ >+function cmdEditDelete(aRule, aProperties) >+{ >+ this.rule = aRule; >+ this.properties = aProperties; >+} >+ >+cmdEditDelete.prototype = new inBaseCommand(false); >+ >+cmdEditDelete.prototype.doTransaction = function Delete_DoTransaction() >+{ >+ viewer.mPropsBoxObject.beginUpdateBatch(); >+ for (let i = 0; i < this.properties.length; i++) { >+ this.rule.removeProperty(this.properties[i].property); >+ } >+ viewer.mPropsBoxObject.endUpdateBatch(); >+}; >+ >+cmdEditDelete.prototype.undoTransaction = function Delete_UndoTransaction() >+{ >+ viewer.mPropsBoxObject.beginUpdateBatch(); >+ try { >+ for (let i = 0; i < this.properties.length; i++) { >+ this.rule.setProperty(this.properties[i].property, >+ this.properties[i].value, >+ this.properties[i].important ? >+ "important" : >+ ""); >+ } >+ } >+ finally { >+ viewer.mPropsBoxObject.endUpdateBatch(); >+ } >+}; >+ >+/** >+ * Handles editing CSS properties >+ * @param aRule >+ * the rule containing the property >+ * @param aProperty >+ * the property to change >+ * @param aNewValue >+ * the new value for the property >+ * @param aNewPriority >+ * the new priority for the property ("important" or "") >+ */ >+function cmdEditEdit(aRule, aProperty, aNewValue, aNewPriority) >+{ >+ this.rule = aRule; >+ this.property = aProperty; >+ this.oldValue = aRule.getPropertyValue(aProperty); >+ this.newValue = aNewValue; >+ this.oldPriority = aRule.getPropertyPriority(aProperty); >+ this.newPriority = aNewPriority; >+} >+ >+cmdEditEdit.prototype = new inBaseCommand(false); >+ >+cmdEditEdit.prototype.doTransaction = function Edit_DoTransaction() >+{ >+ this.rule.setProperty(this.property, this.newValue, >+ this.newPriority); >+ viewer.mPropsBoxObject.invalidate(); >+}; >+ >+cmdEditEdit.prototype.undoTransaction = function Edit_UndoTransaction() >+{ >+ this.rule.setProperty(this.property, this.oldValue, >+ this.oldPriority); >+ viewer.mPropsBoxObject.invalidate(); >+}; >+ >+/** >+ * Handles toggling CSS !important. >+ * @param aRule >+ * the rule containing the properties >+ * @param aProperties >+ * an array of CSSPropertys to toggle >+ */ >+function cmdTogglePriority(aRule, aProperties) >+{ >+ this.rule = aRule; >+ this.properties = aProperties; >+} >+ >+cmdTogglePriority.prototype = new inBaseCommand(false); >+ >+cmdTogglePriority.prototype.doTransaction = >+ function TogglePriority_DoTransaction() >+{ >+ for (let i = 0; i < this.properties.length; i++) { >+ // XXX bug 305761 means we can't make something not important, so >+ // instead we'll delete this property and make a new one at the proper >+ // priority. This method also sucks because the property gets moved to >+ // the bottom. >+ var property = this.properties[i].property; >+ var value = this.properties[i].value; >+ var newPriority = this.rule.getPropertyPriority(property) == "" ? >+ "important" : ""; >+ this.rule.removeProperty(property); >+ this.rule.setProperty(property, value, newPriority); >+ } >+ viewer.mPropsBoxObject.invalidate(); >+}; >+ >+cmdTogglePriority.prototype.undoTransaction = >+ function TogglePriority_UndoTransaction() >+{ >+ this.doTransaction(); >+}; >+ >+/** >+ * Copy the URI for a CSS rule's parent style sheet onto the clipboard. >+ * @param aRule >+ * The nsIDOMCSSRule whose parent style sheet's URI should be copied. >+ */ >+function cmdEditCopyFileURI(aRule) >+{ >+ this.mString = aRule && aRule.parentStyleSheet && >+ aRule.parentStyleSheet.href; >+} >+ >+cmdEditCopyFileURI.prototype = new cmdEditCopySimpleStringBase(); >+ >+/** >+ * Open a source view on a CSS rule's parent style sheet. This will attempt >+ * open the file at the line that the rule appears on. >+ * @param aRule >+ * The source view will open on nsIDOMCSSRule aRule's parent style >+ * sheet. If aRule is an nsIDOMCSSStyleRule, the source view will open >+ * to the line in the style sheet that aRule appears on. >+ */ >+function cmdEditViewFileURI(aRule) >+{ >+ this.mURI = aRule && aRule.parentStyleSheet && aRule.parentStyleSheet.href; >+ if (aRule.type == CSSRule.STYLE_RULE) { >+ this.mLineNumber = viewer.DOMUtils.getRuleLine(aRule); >+ } >+} >+ >+cmdEditViewFileURI.prototype = new cmdEditViewFileURIBase(); >diff --git a/suite/extensions/inspector/resources/content/viewers/styleRules/styleRules.xul b/suite/extensions/inspector/resources/content/viewers/styleRules/styleRules.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/styleRules/styleRules.xul >@@ -0,0 +1,109 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE page SYSTEM "chrome://inspector/locale/viewers/styleRules.dtd"> >+ >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<?xml-stylesheet href="chrome://inspector/skin/viewers/styleRules/styleRules.css"?> >+ >+<page id="winStyleRules" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <!--============================= SCRIPTS ============================= --> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inBaseTreeView.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/styleRules/styleRules.js"/> >+ <script type="application/javascript" >+ src="chrome://global/content/XPCNativeWrapper.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/rdf/RDFU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/system/clipboardFlavors.js"/> >+ <script type="application/javascript" >+ src="chrome://global/content/viewSourceUtils.js"/> >+ >+ <!--============================ COMMANDS ============================= --> >+ >+ <commandset id="cmdsEditing"/> >+ <commandset id="cmdsEditingExtras"/> >+ <commandset id="cmdsProps"> >+ <command id="cmdTogglePriority" >+ oncommand="viewer.pane.panelset.execCommand('cmdTogglePriority')"/> >+ </commandset> >+ >+ <!--============================= POPUPS ============================== --> >+ >+ <popupset id="psPopups"> >+ <menupopup id="ppStyleRulesContext" >+ onpopupshowing="return viewer.onPopupShowing('cmdsEditingExtras')"> >+ <menuitem id="mnEditCopyFileURI"/> >+ <menuitem id="mnEditViewFileURI"/> >+ </menupopup> >+ >+ <menupopup id="ppStylePropsContext" >+ onpopupshowing="viewer.onPopupShowing('cmdsProps')"> >+ <menuitem id="mnEditCopy"/> >+ <menuseparator/> >+ <menuitem id="mnEditInsert"/> >+ <menuitem id="mnEditEdit"/> >+ <menuitem id="mnEditDelete"/> >+ <menuseparator/> >+ <menuitem label="&toggleSelectedImportant.label;" >+ command="cmdTogglePriority"/> >+ </menupopup> >+ </popupset> >+ >+ <!--============================= CONTENT ============================== --> >+ >+ <tree id="olStyleRules" class="plain" flex="1" persist="height" >+ seltype="single" onselect="viewer.onRuleSelect()" >+ contextmenu="ppStyleRulesContext" onfocus="viewer.onTreeFocus(this)"> >+ <treecols> >+ <treecol id="olcRule" label="&styleRule.label;" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcFileURL" label="&styleRuleURI.label;" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcLine" label="&styleRuleLineNumber.label;"/> >+ </treecols> >+ <treechildren id="olbStyleRules" >+ alternatingbackground="true"/> >+ </tree> >+ >+ <splitter id="splTrees" collapse="after" persist="state"> >+ <grippy/> >+ </splitter> >+ >+ <tree id="olStyleProps" >+ class="plain" >+ flex="1" >+ persist="height" >+ onselect="viewer.onPropSelect()" >+ onfocus="viewer.onTreeFocus(this)"> >+ <treecols> >+ <treecol id="olcPropPriority" label="&styleRulePropPriority.label;" >+ class="treecol-image"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcPropName" label="&styleRulePropName.label;" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcPropValue" label="&styleRulePropValue.label;" flex="1"/> >+ </treecols> >+ <treechildren id="olbStyleProps" >+ alternatingbackground="true" >+ ondblclick="viewer.pane.panelset.execCommand('cmdEditEdit')"/> >+ </tree> >+ >+</page> >diff --git a/suite/extensions/inspector/resources/content/viewers/stylesheets/stylesheets.js b/suite/extensions/inspector/resources/content/viewers/stylesheets/stylesheets.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/stylesheets/stylesheets.js >@@ -0,0 +1,359 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* StyleSheetsViewer ---------------------------------------------------------- >+* The viewer for the style sheets loaded by a document. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/utils.js >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://global/content/viewSourceUtils.js >+* chrome://inspector/content/jsutil/commands/baseCommands.js >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+ >+////////////////////////////////////////////////////////////////////////////// >+ >+window.addEventListener("load", StyleSheetsViewer_initialize, false); >+ >+function StyleSheetsViewer_initialize() >+{ >+ viewer = new StyleSheetsViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Class StyleSheetsViewer >+ >+function StyleSheetsViewer() >+{ >+ this.mURL = window.location; >+ this.mObsMan = new ObserverManager(this); >+ >+ this.mTree = document.getElementById("olStyleSheets"); >+ this.mOlBox = this.mTree.treeBoxObject; >+} >+ >+StyleSheetsViewer.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mSubject: null, >+ mPane: null, >+ mView: null, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Interface inIViewer >+ >+ get uid() >+ { >+ return "stylesheets"; >+ }, >+ >+ get pane() >+ { >+ return this.mPane; >+ }, >+ >+ get selection() >+ { >+ return this.mSelection; >+ }, >+ >+ get subject() >+ { >+ return this.mSubject; >+ }, >+ >+ set subject(aObject) >+ { >+ this.mView = new StyleSheetsView(aObject); >+ this.mOlBox.view = this.mView; >+ this.mObsMan.dispatchEvent("subjectChange", { subject: aObject }); >+ this.mView.selection.select(0); >+ }, >+ >+ initialize: function SSVr_Initialize(aPane) >+ { >+ this.mPane = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function SSVr_Destroy() >+ { >+ this.mOlBox.view = null; >+ }, >+ >+ isCommandEnabled: function SSVr_IsCommandEnabled(aCommand) >+ { >+ switch (aCommand) { >+ case "cmdEditCopyFileURI": >+ case "cmdEditViewFileURI": >+ case "cmdEditInspectInNewWindow": >+ return !!this.getSelectedSheet(); >+ } >+ return false; >+ }, >+ >+ getCommand: function SSVr_GetCommand(aCommand) >+ { >+ if (aCommand in window) { >+ return new window[aCommand](); >+ } >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Event Dispatching >+ >+ addObserver: function SSVr_AddObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ >+ removeObserver: function SSVr_RemoveObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Stuff >+ >+ onItemSelected: function SSVr_OnItemSelected() >+ { >+ this.pane.panelset.updateAllCommands(); >+ >+ var idx = this.mTree.currentIndex; >+ this.mSelection = this.mView.getSheet(idx); >+ this.mObsMan.dispatchEvent("selectionChange", >+ { selection: this.mSelection }); >+ }, >+ >+ getSelectedSheet: function SSVr_GetSelectedSheet() >+ { >+ if (this.mView.selection.count == 1) { >+ let minAndMax = {}; >+ this.mView.selection.getRangeAt(0, minAndMax, minAndMax); >+ return this.mView.getSheet(minAndMax.value); >+ } >+ return null; >+ }, >+ >+ onPopupShowing: function SRVr_OnPopupShowing(aCommandSetId) >+ { >+ // cmdEditInspectInNewWindow should already be up to date, but we need to >+ // make sure the others are as well. >+ var commandset = document.getElementById(aCommandSetId); >+ for (let i = 0; i < commandset.childNodes.length; i++) { >+ var command = commandset.childNodes[i]; >+ if (viewer.isCommandEnabled(command.id)) { >+ command.removeAttribute("disabled"); >+ } >+ else { >+ command.setAttribute("disabled", "true"); >+ } >+ } >+ } >+}; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// StyleSheetsView >+ >+function StyleSheetsView(aDocument) >+{ >+ this.mDocument = aDocument; >+ this.mSheets = []; >+ this.mLevels = []; >+ this.mOpen = []; >+ this.mChildCount = []; >+ this.mRowCount = 0; >+ >+ var ss = aDocument.styleSheets; >+ for (let i = 0; i < ss.length; ++i) { >+ this.insertSheet(ss[i], 0, -1); >+ } >+} >+ >+StyleSheetsView.prototype = new inBaseTreeView(); >+ >+StyleSheetsView.prototype.getSheet = >+function SSV_GetSheet(aRow) >+{ >+ return this.mSheets[aRow]; >+} >+ >+StyleSheetsView.prototype.insertSheet = >+function SSV_InsertSheet(aSheet, aLevel, aRow) >+{ >+ var row = aRow < 0 ? this.mSheets.length : aRow; >+ >+ this.mSheets[row] = aSheet; >+ this.mLevels[row] = aLevel; >+ this.mOpen[row] = false; >+ >+ var count = 0; >+ var rules = aSheet.cssRules; >+ for (let i = 0; i < rules.length; ++i) { >+ if (rules[i].type == CSSRule.IMPORT_RULE) { >+ ++count; >+ } >+ } >+ this.mChildCount[row] = count; >+ ++this.mRowCount; >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Interface nsITreeView >+ >+StyleSheetsView.prototype.getCellText = >+function SSV_GetCellText(aRow, aCol) >+{ >+ var rule = this.mSheets[aRow]; >+ if (aCol.id == "olcHref") { >+ if (rule.href) { >+ return rule.href; >+ } >+ // fall back for style elements >+ if (rule.ownerNode && rule.ownerNode.ownerDocument) { >+ return rule.ownerNode.ownerDocument.documentURI; >+ } >+ } >+ else if (aCol.id == "olcRules") { >+ return this.mSheets[aRow].cssRules.length; >+ } >+ return ""; >+} >+ >+StyleSheetsView.prototype.getLevel = >+function SSV_GetLevel(aRow) >+{ >+ return this.mLevels[aRow]; >+} >+ >+StyleSheetsView.prototype.isContainer = >+function SSV_IsContainer(aRow) >+{ >+ return this.mChildCount[aRow] > 0; >+} >+ >+StyleSheetsView.prototype.isContainerEmpty = >+function SSV_IsContainerEmpty(aRow) >+{ >+ return !this.isContainer(aRow); >+} >+ >+StyleSheetsView.prototype.getParentIndex = >+function SSV_GetParentIndex(aRow) >+{ >+ var baseLevel = this.mLevels[aRow]; >+ for (let i = aRow - 1; i >= 0; --i) { >+ if (this.mLevels[i] < baseLevel) { >+ return i; >+ } >+ } >+ return -1; >+} >+ >+StyleSheetsView.prototype.hasNextSibling = >+function SSV_HasNextSibling(aRow, aAfter) >+{ >+ var baseLevel = this.mLevels[aRow]; >+ for (let i = aAfter + 1; i < this.mRowCount; ++i) { >+ if (this.mLevels[i] < baseLevel) { >+ break; >+ } >+ if (this.mLevels[i] == baseLevel) { >+ return true; >+ } >+ } >+ return false; >+} >+ >+StyleSheetsView.prototype.isContainerOpen = >+function SSV_IsContainerOpen(aRow) >+{ >+ return this.mOpen[aRow]; >+} >+ >+StyleSheetsView.prototype.toggleOpenState = >+function SSV_ToggleOpenState(aRow) >+{ >+ var changeCount = 0; >+ if (this.mOpen[aRow]) { >+ var baseLevel = this.mLevels[aRow]; >+ for (let i = aRow + 1; i < this.mRowCount; ++i) { >+ if (this.mLevels[i] <= baseLevel) { >+ break; >+ } >+ ++changeCount; >+ } >+ // shift data up >+ this.mSheets.splice(aRow + 1, changeCount); >+ this.mLevels.splice(aRow + 1, changeCount); >+ this.mOpen.splice(aRow + 1, changeCount); >+ this.mChildCount.splice(aRow + 1, changeCount); >+ changeCount = -changeCount; >+ this.mRowCount += changeCount; >+ } >+ else { >+ // for quick access >+ var rules = this.mSheets[aRow].cssRules; >+ var level = this.mLevels[aRow] + 1; >+ var childCount = this.mChildCount[aRow]; >+ // shift data down >+ for (let i = this.mRowCount - 1; i > aRow; --i) { >+ this.mSheets[i + childCount] = this.mSheets[i]; >+ this.mLevels[i + childCount] = this.mLevels[i]; >+ this.mOpen[i + childCount] = this.mOpen[i]; >+ this.mChildCount[i + childCount] = this.mChildCount[i]; >+ } >+ // fill in new rows >+ for (let i = 0; i < rules.length; ++i) { >+ if (rules[i].type == CSSRule.IMPORT_RULE) { >+ ++changeCount; >+ this.insertSheet(rules[i].styleSheet, level, aRow + changeCount); >+ } >+ else if (rules[i].type != CSSRule.CHARSET_RULE) { >+ // only @charset and other @imports may precede @import, so exit now >+ break; >+ } >+ } >+ } >+ >+ this.mOpen[aRow] = !this.mOpen[aRow]; >+ this.mTree.rowCountChanged(aRow + 1, changeCount); >+ this.mTree.invalidateRow(aRow); >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Transactions >+ >+function cmdEditInspectInNewWindow() >+{ >+ this.mObject = viewer.getSelectedSheet(); >+} >+ >+cmdEditInspectInNewWindow.prototype = new cmdEditInspectInNewWindowBase(); >+ >+function cmdEditCopyFileURI() >+{ >+ var sheet = viewer.getSelectedSheet(); >+ this.mString = sheet && sheet.href; >+} >+ >+cmdEditCopyFileURI.prototype = new cmdEditCopySimpleStringBase(); >+ >+function cmdEditViewFileURI() >+{ >+ var sheet = viewer.getSelectedSheet(); >+ this.mURI = sheet && sheet.href; >+} >+ >+cmdEditViewFileURI.prototype = new cmdEditViewFileURIBase(); >diff --git a/suite/extensions/inspector/resources/content/viewers/stylesheets/stylesheets.xul b/suite/extensions/inspector/resources/content/viewers/stylesheets/stylesheets.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/stylesheets/stylesheets.xul >@@ -0,0 +1,61 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/stylesheets.dtd"> %dtd2; >+]> >+ >+<?xml-stylesheet href="chrome://inspector/skin/"?> >+ >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<page id="winStylesheets" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inBaseTreeView.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ <script type="application/javascript" >+ src="chrome://global/content/viewSourceUtils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/stylesheets/stylesheets.js"/> >+ >+ <commandset id="cmdsEditingExtras"/> >+ >+ <popupset id="psPopups"> >+ <menupopup id="ppStyleSheetsContext" >+ onpopupshowing="viewer.onPopupShowing('cmdsEditingExtras');"> >+ <menuitem id="mnEditInspectInNewWindow"/> >+ <menuseparator/> >+ <menuitem id="mnEditCopyFileURI"/> >+ <menuitem id="mnEditViewFileURI"/> >+ </menupopup> >+ </popupset> >+ >+ <tree id="olStyleSheets" class="plain" treelines="true" flex="1" >+ seltype="single" onselect="viewer.onItemSelected()" >+ context="ppStyleSheetsContext"> >+ <treecols> >+ <treecol id="olcHref" label="&sheetLocation.label;" primary="true" >+ persist="width,hidden,ordinal" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcRules" label="&sheetRules.label;" >+ persist="width,hidden,ordinal" style="width: 4em"/> >+ </treecols> >+ <treechildren id="olbStyleSheets" >+ alternatingbackground="true"/> >+ </tree> >+</page> >diff --git a/suite/extensions/inspector/resources/content/viewers/usedFontFaces/usedFontFaces.js b/suite/extensions/inspector/resources/content/viewers/usedFontFaces/usedFontFaces.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/usedFontFaces/usedFontFaces.js >@@ -0,0 +1,229 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* UsedFontFacesViewer -------------------------------------------------------- >+* The viewer for the font faces used for a DOM node. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+* chrome://inspector/content/events/ObserverManager.js >+* chrome://inspector/content/commands/baseCommands.js >+* chrome://inspector/content/system/clipboardFlavors.js >+* chrome://inspector/content/xul/inBaseTreeView.js >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+ >+////////////////////////////////////////////////////////////////////////////// >+ >+window.addEventListener("load", UsedFontFacesViewer_initialize, false); >+ >+function UsedFontFacesViewer_initialize() >+{ >+ viewer = new UsedFontFacesViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// class UsedFontFacesViewer >+ >+function UsedFontFacesViewer() >+{ >+ this.mObsMan = new ObserverManager(this); >+ >+ this.mDOMUtils = XPCU.getService("@mozilla.org/inspector/dom-utils;1", >+ "inIDOMUtils"); >+ >+ this.mTree = document.getElementById("olFonts"); >+} >+ >+UsedFontFacesViewer.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mSubject: null, >+ mPane: null, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// interface inIViewer >+ >+ get uid() >+ { >+ return "usedFontFaces"; >+ }, >+ >+ get pane() >+ { >+ return this.mPane; >+ }, >+ >+ get subject() >+ { >+ return this.mSubject; >+ }, >+ >+ set subject(aObject) >+ { >+ this.mSubject = aObject instanceof Components.interfaces.nsIDOMNode ? >+ aObject : aObject.DOMNode; >+ this.mTreeView = new UsedFontFacesView(this.mSubject); >+ this.mTree.view = this.mTreeView; >+ this.mObsMan.dispatchEvent("subjectChange", { subject: this.mSubject }); >+ }, >+ >+ initialize: function UFFVr_Initialize(aPane) >+ { >+ this.mPane = aPane; >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function UFFVr_Destroy() >+ { >+ // We need to remove the view at this time or else it will attempt to >+ // re-paint while the document is being deconstructed, resulting in some >+ // nasty XPConnect assertions >+ this.mTree.view = null; >+ }, >+ >+ isCommandEnabled: function UFFVr_IsCommandEnabled(aCommand) >+ { >+ switch (aCommand) { >+ // ppUsedFontFacesContext >+ case "cmdEditCopy": >+ return this.mTree.view.selection.count > 0; >+ case "cmdEditCopyFileURI": >+ return this.mTreeView.getSelectedRowObjects() >+ .some(function(aFont) { return !!aFont.URI; }); >+ } >+ return false; >+ }, >+ >+ getCommand: function UFFVr_GetCommand(aCommand) >+ { >+ switch (aCommand) { >+ case "cmdEditCopy": >+ return new cmdEditCopy(this.mTreeView.getSelectedRowObjects()); >+ case "cmdEditCopyFileURI": >+ return new cmdEditCopyFileURI(this.mTreeView.getSelectedRowObjects()); >+ } >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// event dispatching >+ >+ addObserver: function UFFVr_AddObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ >+ removeObserver: function UFFVr_RemoveObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Miscellaneous >+ >+ onItemSelected: function UFFVr_OnItemSelected() >+ { >+ // This will (eventually) call isCommandEnabled on Copy >+ viewer.pane.panelset.updateAllCommands(); >+ }, >+ >+ onPopupShowing: function UFFVr_OnPopupShowing(aCommandSetId) >+ { >+ var commandset = document.getElementById(aCommandSetId); >+ for (let i = 0; i < commandset.childNodes.length; i++) { >+ var command = commandset.childNodes[i]; >+ command.setAttribute("disabled", !viewer.isCommandEnabled(command.id)); >+ } >+ } >+}; >+ >+//////////////////////////////////////////////////////////////////////////// >+//// UsedFontFacesView >+ >+function UsedFontFacesView(aObject) >+{ >+ // XXX Can't create a range for a DocumentType object >+ if (aObject instanceof Components.interfaces.nsIDOMDocumentType) { >+ this.mFontList = []; >+ this.mRowCount = 0; >+ } >+ else { >+ var range = (aObject.ownerDocument || aObject).createRange(); >+ range.selectNodeContents(aObject); >+ this.mFontList = viewer.mDOMUtils.getUsedFontFaces(range); >+ this.mRowCount = this.mFontList.length; >+ } >+} >+ >+UsedFontFacesView.prototype = new inBaseTreeView(); >+ >+UsedFontFacesView.prototype.getCellText = function UFFV_GetCellText(aRow, aCol) >+{ >+ var font = this.mFontList.item(aRow); >+ if (aCol.id == "olcFontName") { >+ return font.name; >+ } >+ else if (aCol.id == "olcCSSFamilyName") { >+ return font.CSSFamilyName; >+ } >+ else if (aCol.id == "olcURI") { >+ return font.URI; >+ } >+ else if (aCol.id == "olcLocalName") { >+ return font.localName; >+ } >+ else if (aCol.id == "olcFormat") { >+ return font.format; >+ } >+ >+ return null; >+}; >+ >+/** >+ * Returns a FontFace for the row in the tree corresponding to the passed >+ * index. >+ * @param aIndex >+ * index of the row in the tree >+ * @return a FontFace >+ */ >+UsedFontFacesView.prototype.getRowObjectFromIndex = >+ function UFFV_GetRowObjectFromIndex(aIndex) >+{ >+ return this.mFontList.item(aIndex); >+}; >+ >+/** >+ * Copy the names of fonts onto the clipboard. >+ * @param aFonts >+ * The font faces whose names should be copied. >+ */ >+function cmdEditCopy(aFonts) >+{ >+ this.mString = aFonts.map(function(aFont) { return aFont.name; }).join("\n"); >+} >+ >+cmdEditCopy.prototype = new cmdEditCopySimpleStringBase(); >+ >+/** >+ * Copy the URIs for downloaded fonts onto the clipboard. >+ * @param aFonts >+ * The font faces whose URIs should be copied. >+ */ >+function cmdEditCopyFileURI(aFonts) >+{ >+ this.mString = aFonts.map(function(aFont) { return aFont.URI; }) >+ .filter(function(aURI) { return !!aURI; }) >+ .join("\n"); >+} >+ >+cmdEditCopyFileURI.prototype = new cmdEditCopySimpleStringBase(); >diff --git a/suite/extensions/inspector/resources/content/viewers/usedFontFaces/usedFontFaces.xul b/suite/extensions/inspector/resources/content/viewers/usedFontFaces/usedFontFaces.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/usedFontFaces/usedFontFaces.xul >@@ -0,0 +1,68 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!DOCTYPE page [ >+ <!ENTITY % dtd1 SYSTEM "chrome://inspector/locale/inspector.dtd"> %dtd1; >+ <!ENTITY % dtd2 SYSTEM "chrome://inspector/locale/viewers/usedFontFaces.dtd"> %dtd2; >+]> >+ >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<?xml-stylesheet href="chrome://inspector/skin/"?> >+ >+<page id="winUsedFontFaces" >+ orient="vertical" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <!--============================= SCRIPTS ============================= --> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inBaseTreeView.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/usedFontFaces/usedFontFaces.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/system/clipboardFlavors.js"/> >+ >+ <!--============================ COMMANDS ============================= --> >+ >+ <commandset id="cmdsEditing"/> >+ <commandset id="cmdsEditingExtras"/> >+ >+ <!--============================= POPUPS ============================== --> >+ >+ <popupset id="psPopups"> >+ <menupopup id="ppUsedFontFacesContext" >+ onpopupshowing="return viewer.onPopupShowing('cmdsEditingExtras')"> >+ <menuitem id="mnEditCopy"/> >+ <menuitem id="mnEditCopyFileURI"/> >+ </menupopup> >+ </popupset> >+ >+ <!--============================= CONTENT ============================== --> >+ >+ <tree id="olFonts" flex="1" onselect="viewer.onItemSelected()" >+ class="plain" contextmenu="ppUsedFontFacesContext"> >+ <treecols> >+ <treecol id="olcFontName" label="&fontName.label;" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcCSSFamilyName" label="&cssFamilyName.label;" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcURI" label="&uri.label;" flex="1" hidden="true"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcLocalName" label="&localName.label;" flex="1" hidden="true"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcFormat" label="&format.label;" flex="1" hidden="true"/> >+ </treecols> >+ <treechildren id="olbFonts" alternatingbackground="true"/> >+ </tree> >+</page> >diff --git a/suite/extensions/inspector/resources/content/viewers/xblBindings/xblBindings.js b/suite/extensions/inspector/resources/content/viewers/xblBindings/xblBindings.js >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/xblBindings/xblBindings.js >@@ -0,0 +1,730 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+/***************************************************************************** >+* XBLBindingsViewer ---------------------------------------------------------- >+* Inspects the XBL bindings for a given element, including anonymous content, >+* methods, properties, event handlers, and resources. >+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >+* REQUIRED IMPORTS: >+* chrome://inspector/content/jsutil/xpcom/XPCU.js >+*****************************************************************************/ >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Variables >+ >+var viewer; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Global Constants >+ >+const kDOMViewContractID = "@mozilla.org/inspector/dom-view;1"; >+const kDOMUtilsContractID = "@mozilla.org/inspector/dom-utils;1"; >+const kXBLNSURI = "http://www.mozilla.org/xbl"; >+ >+////////////////////////////////////////////////////////////////////////////// >+ >+window.addEventListener("load", XBLBindingsViewer_initialize, false); >+ >+function XBLBindingsViewer_initialize() >+{ >+ viewer = new XBLBindingsViewer(); >+ viewer.initialize(parent.FrameExchange.receiveData(window)); >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Class XBLBindingsViewer >+ >+function XBLBindingsViewer() >+{ >+ this.mURL = window.location; >+ this.mObsMan = new ObserverManager(this); >+ this.mDOMUtils = XPCU.getService(kDOMUtilsContractID, "inIDOMUtils"); >+ >+ this.mBindingsList = document.getElementById("mlBindings"); >+ >+ this.mContentTree = document.getElementById("olContent"); >+ this.mMethodTree = document.getElementById("olMethods"); >+ this.mPropTree = document.getElementById("olProps"); >+ this.mHandlerTree = document.getElementById("olHandlers"); >+ this.mResourceTree = document.getElementById("olResources"); >+ >+ this.mTreeViews = {}; >+ >+ this.generateViewGetterAndSetter("contentView", this.mContentTree); >+ this.generateViewGetterAndSetter("methodView", this.mMethodTree); >+ this.generateViewGetterAndSetter("propView", this.mPropTree); >+ this.generateViewGetterAndSetter("handlerView", this.mHandlerTree); >+ this.generateViewGetterAndSetter("resourceView", this.mResourceTree); >+ >+ this.mControllers = {}; >+ >+ this.addController(this.mBindingsList, BindingsListController); >+ this.addController(this.mResourceTree, ResourceTreeController); >+ >+ // prepare and attach the content DOM datasource >+ var contentView = XPCU.createInstance(kDOMViewContractID, "inIDOMView"); >+ contentView.whatToShow &= ~(NodeFilter.SHOW_TEXT); >+ XPCU.QI(contentView, "nsITreeView"); >+ this.contentView = contentView; >+} >+ >+XBLBindingsViewer.prototype = >+{ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Initialization >+ >+ mSubject: null, >+ mPane: null, >+ mControllers: null, >+ mTreeViews: null, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Interface inIViewer >+ >+ get uid() >+ { >+ return "xblBindings"; >+ }, >+ >+ get pane() >+ { >+ return this.mPane; >+ }, >+ >+ get subject() >+ { >+ return this.mSubject; >+ }, >+ >+ set subject(aObject) >+ { >+ this.mSubject = aObject instanceof Components.interfaces.nsIDOMNode ? >+ aObject : aObject.DOMNode; >+ >+ this.populateBindings(); >+ >+ this.displayBinding(this.mBindingsList.value); >+ >+ this.mObsMan.dispatchEvent("subjectChange", { subject: this.mSubject }); >+ }, >+ >+ initialize: function XBLBVr_Initialize(aPane) >+ { >+ this.mPane = aPane; >+ >+ aPane.notifyViewerReady(this); >+ }, >+ >+ destroy: function XBLBVr_Destroy() >+ { >+ this.contentView = null; >+ this.methodView = null; >+ this.propView = null; >+ this.handlerView = null; >+ this.resourceView = null; >+ }, >+ >+ isCommandEnabled: function XBLBVr_IsCommandEnabled(aCommand) >+ { >+ var controller = >+ document.commandDispatcher.getControllerForCommand(aCommand); >+ return !!controller && controller.isCommandEnabled(aCommand); >+ }, >+ >+ getCommand: function XBLBVr_GetCommand(aCommand) >+ { >+ var controller = >+ this.mControllers[document.commandDispatcher.focusedElement.id]; >+ if (controller) { >+ return controller.getCommand(aCommand); >+ } >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Event Dispatching >+ >+ addObserver: function XBLBVr_AddObserver(aEvent, aObserver) >+ { >+ this.mObsMan.addObserver(aEvent, aObserver); >+ }, >+ >+ removeObserver: function XBLBVr_RemoveObserver(aEvent, aObserver) >+ { >+ this.mObsMan.removeObserver(aEvent, aObserver); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Displaying Binding Info >+ >+ populateBindings: function XBLBVr_PopulateBindings() >+ { >+ var urls = this.mDOMUtils.getBindingURLs(this.mSubject); >+ >+ this.mBindingsList.removeAllItems(); >+ >+ for (let i = 0, n = urls.length; i < n; ++i) { >+ var url = urls.queryElementAt(i, Components.interfaces.nsIURI).spec; >+ var currentItem = this.mBindingsList.appendItem(url, url); >+ currentItem.crop = "center"; >+ currentItem.tooltipText = url; >+ } >+ >+ this.mBindingsList.selectedIndex = 0; >+ }, >+ >+ displayBinding: function XBLBVr_DisplayBinding(aURL) >+ { >+ this.mBindingsList.tooltipText = aURL; >+ this.mBindingURL = aURL; >+ if (aURL) { >+ var req = new XMLHttpRequest(); >+ req.addEventListener("load", gDocLoadListener, true); >+ req.open("GET", aURL); >+ req.overrideMimeType("application/xml"); >+ req.send(null); >+ } >+ else { >+ this.doDisplayBinding(null); >+ } >+ }, >+ >+ doDisplayBinding: function XBLBVr_DoDisplayBinding(doc) >+ { >+ if (doc) { >+ var url = this.mBindingURL; >+ var poundPt = url.indexOf("#"); >+ var id = url.substr(poundPt + 1); >+ var bindings = doc.getElementsByTagNameNS(kXBLNSURI, "binding"); >+ var binding = null; >+ for (var i = 0; i < bindings.length; ++i) { >+ if (bindings[i].getAttribute("id") == id) { >+ binding = bindings[i]; >+ break; >+ } >+ } >+ this.mBinding = binding; >+ } >+ else { >+ this.mBinding = null; >+ } >+ >+ this.displayContent(); >+ this.displayMethods(); >+ this.displayProperties(); >+ this.displayHandlers(); >+ this.displayResources(); >+ >+ // switch to the first non-disabled tab if the one that's showing is >+ // disabled, otherwise, you can't use the keyboard to switch tabs >+ var tabbox = document.getElementById("bxBindingAspects"); >+ if (tabbox.selectedTab.disabled) { >+ for (let i = 0; i < tabbox.tabs.childNodes.length; ++i) { >+ if (!tabbox.tabs.childNodes[i].disabled) { >+ tabbox.selectedTab = tabbox.tabs.childNodes[i]; >+ break; >+ } >+ } >+ } >+ >+ this.mBindingsList.disabled = !this.mBinding; >+ }, >+ >+ displayContent: function XBLBVr_DisplayContent() >+ { >+ this.contentView.rootNode = this.mBinding && >+ this.mBinding.getElementsByTagNameNS(kXBLNSURI, "content").item(0); >+ this.mContentTree.disabled = !this.contentView.rootNode; >+ document.getElementById("tbContent").disabled = >+ !this.contentView.rootNode; >+ if (this.contentView.rootNode) { >+ this.contentView.selection.select(0); >+ } >+ }, >+ >+ displayMethods: function XBLBVr_DisplayMethods() >+ { >+ this.methodView = >+ this.mBinding ? new MethodTreeView(this.mBinding) : null; >+ >+ var active = this.mBinding && >+ this.mBinding.getElementsByTagNameNS(kXBLNSURI, "method").length > 0; >+ this.mMethodTree.disabled = !active; >+ document.getElementById("tbMethods").disabled = !active; >+ if (active && this.methodView.rowCount) { >+ this.methodView.selection.select(0); >+ } >+ }, >+ >+ displayProperties: function XBLBVr_DisplayProperties() >+ { >+ this.propView = >+ this.mBinding ? new PropTreeView(this.mBinding) : null; >+ >+ var active = this.mBinding && >+ this.mBinding.getElementsByTagNameNS(kXBLNSURI, "property").length > 0; >+ this.mPropTree.disabled = !active; >+ document.getElementById("tbProps").disabled = !active; >+ if (active && this.propView.rowCount) { >+ this.propView.selection.select(0); >+ } >+ }, >+ >+ displayHandlers: function XBLBVr_DisplayHandlers() >+ { >+ this.handlerView = >+ this.mBinding ? new HandlerTreeView(this.mBinding) : null; >+ >+ var active = this.mBinding && >+ this.mBinding.getElementsByTagNameNS(kXBLNSURI, "handler").length > 0; >+ this.mHandlerTree.disabled = !active; >+ document.getElementById("tbHandlers").disabled = !active; >+ if (active && this.handlerView.rowCount) { >+ this.handlerView.selection.select(0); >+ } >+ }, >+ >+ displayResources: function XBLBVr_DisplayResources() >+ { >+ this.resourceView = >+ this.mBinding ? new ResourceTreeView(this.mBinding) : null; >+ >+ var active = this.mBinding && >+ this.mBinding.getElementsByTagNameNS(kXBLNSURI, "resources").length > 0; >+ document.getElementById("tbResources").disabled = !active; >+ this.mResourceTree.disabled = !active; >+ }, >+ >+ displayMethod: function XBLBVr_DisplayMethod(aMethod) >+ { >+ var body = aMethod.getElementsByTagNameNS(kXBLNSURI, "body").item(0); >+ document.getElementById("txbMethodCode").value = >+ this.justifySource(this.readDOMText(body)); >+ }, >+ >+ displayProperty: function XBLBVr_DisplayProperty(aProp) >+ { >+ var rgroup = document.getElementById("rgPropGetterSetter"); >+ var getradio = document.getElementById("raPropGetter"); >+ var setradio = document.getElementById("raPropSetter"); >+ >+ // disable/enable radio buttons >+ getradio.disabled = >+ !aProp || !(aProp.hasAttribute("onget") || >+ aProp.getElementsByTagName("getter").length); >+ setradio.disabled = >+ !aProp || !(aProp.hasAttribute("onset") || >+ aProp.getElementsByTagName("setter").length); >+ >+ // make sure a valid radio button is selected >+ if (rgroup.selectedIndex < 0) { >+ rgroup.selectedIndex = 0; >+ } >+ if (rgroup.selectedItem.disabled) { >+ var other = rgroup.getItemAtIndex((rgroup.selectedIndex + 1) % 2); >+ if (!other.disabled) { >+ rgroup.selectedItem = other; >+ } >+ } >+ >+ // display text >+ var et = rgroup.value; >+ var text = ""; >+ if (et && aProp) { >+ text = aProp.getAttribute("on" + et); >+ if (!text) { >+ let kids = aProp.getElementsByTagNameNS(kXBLNSURI, et + "ter"); >+ text = this.readDOMText(kids.item(0)); >+ } >+ } >+ document.getElementById("txbPropCode").value = this.justifySource(text); >+ }, >+ >+ displayHandler: function XBLBVr_DisplayHandler(aHandler) >+ { >+ var text = ""; >+ if (aHandler) { >+ text = aHandler.getAttribute("action") || this.readDOMText(aHandler); >+ } >+ document.getElementById("txbHandlerCode").value = >+ this.justifySource(text); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Selection >+ >+ onMethodSelected: function XBLBVr_OnMethodSelected() >+ { >+ var idx = this.mMethodTree.currentIndex; >+ var methods = this.mBinding.getElementsByTagNameNS(kXBLNSURI, "method"); >+ var method = methods[idx]; >+ this.displayMethod(method); >+ }, >+ >+ onPropSelected: function XBLBVr_OnPropSelected() >+ { >+ var idx = this.mPropTree.currentIndex; >+ var props = this.mBinding.getElementsByTagNameNS(kXBLNSURI, "property"); >+ var prop = props[idx]; >+ this.displayProperty(prop); >+ }, >+ >+ onHandlerSelected: function XBLBVr_OnHandlerSelected() >+ { >+ var idx = this.mHandlerTree.currentIndex; >+ var handlers = this.mBinding.getElementsByTagNameNS(kXBLNSURI, "handler"); >+ var handler = handlers[idx]; >+ this.displayHandler(handler); >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// Misc >+ >+ /** >+ * Generates getter and setter methods for property named by the given >+ * identifier. The setter will set the tree's view and cache it. The >+ * getter will recall the cached view. >+ * @param aIdentifier >+ * The name of the property where the getter and setter should live. >+ * @param aTree >+ * The tree whose view should be set in the setter. >+ */ >+ generateViewGetterAndSetter: >+ function XBLBVr_GenerateViewGetterAndSetter(aIdentifier, aTree) >+ { >+ this.__defineSetter__(aIdentifier, function(aVal) >+ { >+ aTree.view = aVal; >+ return this.mTreeViews[aIdentifier] = aVal; >+ }); >+ this.__defineGetter__(aIdentifier, function() >+ { >+ return this.mTreeViews[aIdentifier]; >+ }); >+ }, >+ >+ /** >+ * Creates a controller, registers it with this viewer, and appends it to >+ * the controllers of the given element. >+ * @param aEl >+ * The element to which we should add the controller. aEl.id must be >+ * non-empty. >+ * @param aControllerConstructor >+ * A constructor function whose instances will implement >+ * nsIController. aEl will be passed as the first parameter during >+ * construction. >+ */ >+ addController: function XBLBVr_AddController(aEl, aControllerConstructor) { >+ var controller = new aControllerConstructor(aEl); >+ this.mControllers[aEl.id] = controller; >+ aEl.controllers.appendController(controller); >+ }, >+ >+ >+ onPopupShowing: function XBLBVr_OnPopupShowing(aPopup) >+ { >+ var kids = aPopup.childNodes; >+ for (let i = 0, n = kids.length; i < n; ++i) { >+ let command = document.getElementById(kids[i].command); >+ if (this.isCommandEnabled(command.id)) { >+ command.removeAttribute("disabled"); >+ } >+ else { >+ command.setAttribute("disabled", "true"); >+ } >+ } >+ }, >+ >+ readDOMText: function XBLBVr_ReadDOMText(aEl) >+ { >+ if (!aEl) { >+ return ""; >+ } >+ >+ var text = aEl.nodeValue || ""; >+ for (var i = 0; i < aEl.childNodes.length; ++i) { >+ text += this.readDOMText(aEl.childNodes[i]); >+ } >+ return text; >+ }, >+ >+ // Remove newlines at the beginning of the string and the lowest level of >+ // indentation from the beginning of each line, since most XBL getters, >+ // setters, methods, and handlers are handwritten CDATA. >+ justifySource: function XBLBVr_JustifySource(aStr) >+ { >+ // convert indentation to use spaces >+ while (/^ *\t/m.test(aStr)) { >+ aStr = aStr.replace(/^(( )*) {0,7}\t/gm, "$1 "); >+ } >+ // remove trailing spaces from all lines >+ aStr = aStr.replace(/ +$/gm, ""); >+ // lose the trailing blank lines >+ aStr = aStr.replace(/\n*$/, ""); >+ // lose the initial blank lines >+ aStr = aStr.replace(/^\n*/, ""); >+ // now check if, for some crazy reason, there are lines in the rest of the >+ // source at a lower indentation level than the first line >+ var indentations = aStr.match(/^ *(?=[^\n])/gm); >+ if (indentations) { >+ indentations.sort(); >+ if (indentations[0]) { >+ aStr = aStr.replace(RegExp("^" + indentations[0], "gm"), ""); >+ } >+ } >+ return aStr; >+ } >+}; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Controllers >+ >+function BindingsListController(aBindingsList) {} >+ >+BindingsListController.prototype = { >+ >+ commands: { >+ cmdEditCopyFileURI: function BLC_CopyFileURI() >+ { >+ this.mString = document.popupNode.value; >+ }, >+ >+ cmdEditViewFileURI: function BLC_ViewFileURI() >+ { >+ this.mURI = document.popupNode.value; >+ } >+ }, >+ >+ getCommand: function BLC_GetCommand(aCommand) >+ { >+ if (this.supportsCommand(aCommand)) { >+ return new this.commands[aCommand](); >+ } >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// nsIController Implementation >+ >+ isCommandEnabled: function BLC_IsCommandEnabled(aCommand) >+ { >+ switch (aCommand) { >+ case "cmdEditCopyFileURI": >+ case "cmdEditViewFileURI": >+ return !!document.popupNode.value; >+ } >+ return false; >+ }, >+ >+ supportsCommand: function BLC_SupportsCommand(aCommand) >+ { >+ return aCommand in this.commands; >+ }, >+ >+ doCommand: function BLC_DoCommand(aCommand) {}, >+ >+ onEvent: function BLC_OnEvent(aEvent) {} >+} >+ >+let commands = BindingsListController.prototype.commands; >+commands.cmdEditCopyFileURI.prototype = new cmdEditCopySimpleStringBase(); >+commands.cmdEditViewFileURI.prototype = new cmdEditViewFileURIBase(); >+ >+function ResourceTreeController(aTree) {} >+ >+ResourceTreeController.prototype = { >+ >+ commands: { >+ cmdEditCopyFileURI: function RTC_CopyFileURI() >+ { >+ this.mString = viewer.resourceView.getSelectedResourceURI(); >+ }, >+ >+ cmdEditViewFileURI: function RTC_ViewFileURI() >+ { >+ this.mURI = viewer.resourceView.getSelectedResourceURI(); >+ } >+ }, >+ >+ getCommand: function RTC_GetCommand(aCommand) >+ { >+ if (this.supportsCommand(aCommand)) { >+ return new this.commands[aCommand](); >+ } >+ return null; >+ }, >+ >+ //////////////////////////////////////////////////////////////////////////// >+ //// nsIController Implementation >+ >+ isCommandEnabled: function RTC_IsCommandEnabled(aCommand) >+ { >+ switch (aCommand) { >+ case "cmdEditCopyFileURI": >+ return !!viewer.resourceView.getSelectedResourceURI(); >+ case "cmdEditViewFileURI": >+ return !!viewer.resourceView.getSelectedResourceURI() && >+ viewer.resourceView.getSelectedResourceType() != "image"; >+ } >+ return false; >+ }, >+ >+ supportsCommand: function RTC_SupportsCommand(aCommand) >+ { >+ return aCommand in this.commands; >+ }, >+ >+ doCommand: function RTC_DoCommand(aCommand) {}, >+ >+ onEvent: function RTC_OnEvent(aEvent) {} >+} >+ >+commands = ResourceTreeController.prototype.commands; >+commands.cmdEditCopyFileURI.prototype = new cmdEditCopySimpleStringBase(); >+commands.cmdEditViewFileURI.prototype = new cmdEditViewFileURIBase(); >+ >+////////////////////////////////////////////////////////////////////////////// >+//// MethodTreeView >+ >+function MethodTreeView(aBinding) >+{ >+ this.mMethods = aBinding.getElementsByTagNameNS(kXBLNSURI, "method"); >+ this.mRowCount = this.mMethods ? this.mMethods.length : 0; >+} >+ >+MethodTreeView.prototype = new inBaseTreeView(); >+ >+MethodTreeView.prototype.getCellText = >+function MTV_GetCellText(aRow, aCol) >+{ >+ if (aCol.id == "olcMethodName") { >+ var method = this.mMethods[aRow]; >+ var name = method.getAttribute("name"); >+ var params = method.getElementsByTagNameNS(kXBLNSURI, "parameter"); >+ var pstr = ""; >+ if (params.length) { >+ pstr += params[0].getAttribute("name"); >+ } >+ for (var i = 1; i < params.length; ++i) { >+ pstr += ", " + params[i].getAttribute("name"); >+ } >+ return name + "(" + pstr + ")"; >+ } >+ >+ return ""; >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// PropTreeView >+ >+function PropTreeView(aBinding) >+{ >+ this.mProps = aBinding.getElementsByTagNameNS(kXBLNSURI, "property"); >+ this.mRowCount = this.mProps ? this.mProps.length : 0; >+} >+ >+PropTreeView.prototype = new inBaseTreeView(); >+ >+PropTreeView.prototype.getCellText = >+function PTV_GetCellText(aRow, aCol) >+{ >+ if (aCol.id == "olcPropName") { >+ return this.mProps[aRow].getAttribute("name"); >+ } >+ >+ return ""; >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// HandlerTreeView >+ >+function HandlerTreeView(aBinding) >+{ >+ this.mHandlers = aBinding.getElementsByTagNameNS(kXBLNSURI, "handler"); >+ this.mRowCount = this.mHandlers ? this.mHandlers.length : 0; >+} >+ >+HandlerTreeView.prototype = new inBaseTreeView(); >+ >+HandlerTreeView.prototype.getCellText = >+function HTV_GetCellText(aRow, aCol) >+{ >+ var handler = this.mHandlers[aRow]; >+ if (aCol.id == "olcHandlerEvent") { >+ return handler.getAttribute("event"); >+ } >+ else if (aCol.id == "olcHandlerPhase") { >+ return handler.getAttribute("phase"); >+ } >+ >+ return ""; >+} >+ >+////////////////////////////////////////////////////////////////////////////// >+//// ResourceTreeView >+ >+function ResourceTreeView(aBinding) >+{ >+ this.mResources = []; >+ var res = aBinding.getElementsByTagNameNS(kXBLNSURI, "resources").item(0); >+ if (res) { >+ var kids = res.childNodes; >+ for (var i = 0; i < kids.length; ++i) { >+ if (kids[i].nodeType == Node.ELEMENT_NODE) { >+ this.mResources.push(kids[i]); >+ } >+ } >+ } >+ >+ this.mRowCount = this.mResources.length; >+ >+ this.wrappedJSObject = this; >+} >+ >+ResourceTreeView.prototype = new inBaseTreeView(); >+ >+ResourceTreeView.prototype.getCellText = >+function RTV_GetCellText(aRow, aCol) >+{ >+ var resource = this.mResources[aRow]; >+ if (aCol.id == "olcResourceType") { >+ return resource.localName; >+ } >+ else if (aCol.id == "olcResourceSrc") { >+ return resource.getAttribute("src"); >+ } >+ >+ return ""; >+} >+ >+ResourceTreeView.prototype.getSelectedResourceURI = >+ function RTV_GetSelectedResourceURI() >+{ >+ if (this.selection.count == 1) { >+ let minAndMax = {}; >+ this.selection.getRangeAt(0, minAndMax, minAndMax); >+ return this.mResources[minAndMax.value].getAttribute("src"); >+ } >+ return null; >+}; >+ >+ResourceTreeView.prototype.getSelectedResourceType = >+ function RTV_GetSelectedResourceType() >+{ >+ if (this.selection.count == 1) { >+ let minAndMax = {}; >+ this.selection.getRangeAt(0, minAndMax, minAndMax); >+ return this.mResources[minAndMax.value].localName; >+ } >+ return null; >+}; >+ >+////////////////////////////////////////////////////////////////////////////// >+//// Event Listeners >+ >+function gDocLoadListener(event) >+{ >+ viewer.doDisplayBinding(event.target.responseXML); >+} >diff --git a/suite/extensions/inspector/resources/content/viewers/xblBindings/xblBindings.xul b/suite/extensions/inspector/resources/content/viewers/xblBindings/xblBindings.xul >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/content/viewers/xblBindings/xblBindings.xul >@@ -0,0 +1,167 @@ >+<?xml version="1.0"?> >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!DOCTYPE page SYSTEM "chrome://inspector/locale/viewers/xblBindings.dtd"> >+ >+<?xul-overlay href="chrome://inspector/content/editingOverlay.xul"?> >+ >+<?xml-stylesheet >+ href="chrome://inspector/skin/viewers/xblBindings/xblBindings.css"?> >+ >+<page id="winXBLBindings" >+ orient="vertical" >+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> >+ >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xul/inBaseTreeView.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/utils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/hooks.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/xpcom/XPCU.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/events/ObserverManager.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/jsutil/commands/baseCommands.js"/> >+ <script type="application/javascript" >+ src="chrome://global/content/viewSourceUtils.js"/> >+ <script type="application/javascript" >+ src="chrome://inspector/content/viewers/xblBindings/xblBindings.js"/> >+ >+ <commandset id="cmdsEditingExtras"/> >+ >+ <popupset id="psPopups"> >+ <!-- Just split this if it's ever at all specialized. --> >+ <menupopup id="ppSharedContext" >+ onpopupshowing="viewer.onPopupShowing(this);"> >+ <menuitem id="mnEditCopyFileURI"/> >+ <menuitem id="mnEditViewFileURI"/> >+ </menupopup> >+ </popupset> >+ >+ <menulist id="mlBindings" oncommand="viewer.displayBinding(this.value)" >+ crop="center" contextmenu="ppSharedContext"> >+ <menupopup id="mpBindings"/> >+ </menulist> >+ >+ <tabbox id="bxBindingAspects" flex="1"> >+ <tabs> >+ <tab id="tbContent" label="&bindingContent.label;" >+ disabled="true"/> >+ <tab id="tbMethods" label="&bindingMethods.label;" >+ disabled="true"/> >+ <tab id="tbProps" label="&bindingProperties.label;" >+ disabled="true"/> >+ <tab id="tbHandlers" label="&bindingHandlers.label;" >+ disabled="true"/> >+ <tab id="tbResources" label="&bindingResources.label;" >+ disabled="true"/> >+ </tabs> >+ <tabpanels flex="1"> >+ <tree id="olContent" seltype="single" treelines="true"> >+ <treecols> >+ <!-- Don't localize these DOM API names --> >+ <treecol id="colNodeName" primary="true" label="nodeName" flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="colNodeValue" label="nodeValue" flex="1"/> >+ </treecols> >+ <treechildren id="olbContent"/> >+ </tree> >+ >+ <vbox> >+ <tree id="olMethods" seltype="single" >+ hidecolumnpicker="true" >+ flex="1" >+ onselect="viewer.onMethodSelected()" >+ persist="height"> >+ <treecols> >+ <treecol id="olcMethodName" label="&bindingMethodName.label;" >+ flex="1"/> >+ </treecols> >+ <treechildren id="olbMethods" alternatingbackground="true"/> >+ </tree> >+ <splitter id="splMethods" orient="vertical" collapse="after" >+ persist="state"> >+ <grippy/> >+ </splitter> >+ <groupbox id="gbMethods" flex="1" persist="height"> >+ <caption label="Source Code"/> >+ <textbox id="txbMethodCode" readonly="true" multiline="true" >+ flex="1"/> >+ </groupbox> >+ </vbox> >+ >+ <vbox> >+ <vbox id="bxProps" flex="1" persist="height"> >+ <tree id="olProps" seltype="single" >+ hidecolumnpicker="true" >+ flex="1" >+ onselect="viewer.onPropSelected()"> >+ <treecols> >+ <treecol id="olcPropName" label="&bindingProperty.label;" >+ flex="1"/> >+ </treecols> >+ <treechildren id="olbProps" alternatingbackground="true"/> >+ </tree> >+ <radiogroup id="rgPropGetterSetter" orient="horizontal"> >+ <radio id="raPropGetter" label="&bindingGetter.label;" >+ value="get" oncommand="viewer.onPropSelected()" >+ selected="true"/> >+ <radio id="raPropSetter" label="&bindingSetter.label;" >+ value="set" oncommand="viewer.onPropSelected()"/> >+ </radiogroup> >+ </vbox> >+ <splitter id="splProps" orient="vertical" collapse="after" >+ persist="state"> >+ <grippy/> >+ </splitter> >+ <groupbox id="gbProps" flex="1" persist="height"> >+ <caption label="Source Code"/> >+ <textbox id="txbPropCode" readonly="true" multiline="true" >+ flex="1"/> >+ </groupbox> >+ </vbox> >+ >+ <vbox> >+ <tree id="olHandlers" seltype="single" >+ flex="1" >+ onselect="viewer.onHandlerSelected()" >+ persist="height"> >+ <treecols> >+ <treecol id="olcHandlerEvent" label="&bindingHandlerEvent.label;" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcHandlerPhase" >+ label="&bindingHandlerPhase.label;"/> >+ </treecols> >+ <treechildren id="olbHandlers" alternatingbackground="true"/> >+ </tree> >+ <splitter id="splHandlers" orient="vertical" collapse="after" >+ persist="state"> >+ <grippy/> >+ </splitter> >+ <groupbox id="gbHandlers" flex="1" persist="height"> >+ <caption label="Source Code"/> >+ <textbox id="txbHandlerCode" readonly="true" multiline="true" >+ flex="1"/> >+ </groupbox> >+ </vbox> >+ >+ <tree id="olResources" seltype="single" >+ contextmenu="ppSharedContext"> >+ <treecols> >+ <treecol id="olcResourceType" label="&bindingResourceType.label;" >+ flex="1"/> >+ <splitter class="tree-splitter"/> >+ <treecol id="olcResourceSrc" label="&bindingResourceSrc.label;" >+ flex="2"/> >+ </treecols> >+ <treechildren id="olbResources" alternatingbackground="true"/> >+ </tree> >+ </tabpanels> >+ </tabbox> >+</page> >diff --git a/suite/extensions/inspector/resources/locale/Makefile.in b/suite/extensions/inspector/resources/locale/Makefile.in >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/Makefile.in >@@ -0,0 +1,30 @@ >+# >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+ >+DEPTH=../../../.. >+topsrcdir=@top_srcdir@ >+srcdir=@srcdir@ >+VPATH=@srcdir@ >+ >+include $(DEPTH)/config/autoconf.mk >+ >+EXTERNALLY_MANAGED_MAKE_FILE := 1 >+STANDALONE_MAKEFILE := 1 >+JAR_MANIFEST := $(srcdir)/jar.mn >+ >+XPI_NAME = inspector >+ >+DEFINES += -DAB_CD=$(AB_CD) >+ >+# Let jar.mn do its happy-dance >+ >+include $(topsrcdir)/config/rules.mk >+ >+ifneq (en-US,$(AB_CD)) >+libs realchrome:: >+ @echo "Comparing $(AB_CD) to en-US" >+ @$(PERL) $(topsrcdir)/toolkit/locales/compare-locales.pl $(srcdir)/en-US $(srcdir)/$(AB_CD) >+endif >diff --git a/suite/extensions/inspector/resources/locale/ca/editing.dtd b/suite/extensions/inspector/resources/locale/ca/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/editing.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Desfés"> >+<!ENTITY mnEditUndo.accesskey "D"> >+<!ENTITY mnEditRedo.label "Refés"> >+<!ENTITY mnEditRedo.accesskey "R"> >+<!ENTITY mnEditCut.label "Retalla"> >+<!ENTITY mnEditCut.accesskey "t"> >+<!ENTITY mnEditCopy.label "Copia"> >+<!ENTITY mnEditCopy.accesskey "C"> >+<!ENTITY mnEditPaste.label "Enganxa"> >+<!ENTITY mnEditPaste.accesskey "x"> >+<!ENTITY mnEditInsert.label "Insereix"> >+<!ENTITY mnEditInsert.accesskey "I"> >+<!ENTITY mnEditEdit.label "Edita"> >+<!ENTITY mnEditEdit.accesskey "E"> >+<!ENTITY mnEditDelete.label "Suprimeix"> >+<!ENTITY mnEditDelete.accesskey "S"> >+<!ENTITY mnEditInspectInNewWindow.label "Inspecciona en una nova finestra"> >diff --git a/suite/extensions/inspector/resources/locale/ca/inspector.dtd b/suite/extensions/inspector/resources/locale/ca/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/inspector.dtd >@@ -0,0 +1,54 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.title "Inspector DOM"> >+<!ENTITY thDOMNodes.label "Nodes DOM"> >+<!ENTITY btnInspect.label "Inspecciona"> >+<!ENTITY bxDocPanel.title "Document"> >+<!ENTITY bxObjectPanel.title "Objecte"> >+<!ENTITY btnSelecting.tooltip "Cerqueu un node per inspeccionar fent-li un clic"> >+<!ENTITY btnFind.tooltip "Cerqueu un node per inspeccionar per identificador, etiqueta o atribut"> >+<!-- MAIN MENU ITEMS --> >+<!ENTITY mnFile.label "Fitxer"> >+<!ENTITY mnFile.accesskey "F"> >+<!ENTITY cmdShowOpenURLDialog.label "Inspecciona un URL"> >+<!ENTITY cmdShowOpenURLDialog.accesskey "U"> >+<!ENTITY cmdClose.label "Tanca"> >+<!ENTITY cmdClose.accesskey "c"> >+<!ENTITY cmdExit.label "Surt"> >+<!ENTITY cmdExit.accesskey "u"> >+<!ENTITY mnEdit.label "Edita"> >+<!ENTITY mnEdit.accesskey "E"> >+<!ENTITY cmdUndo.label "Desfés"> >+<!ENTITY cmdUndo.accesskey "D"> >+<!ENTITY cmdRedo.label "Refés"> >+<!ENTITY cmdRedo.accesskey "R"> >+<!ENTITY cmdCut.label "Retalla"> >+<!ENTITY cmdCut.accesskey "T"> >+<!ENTITY cmdCopy.label "Copia"> >+<!ENTITY cmdCopy.accesskey "C"> >+<!ENTITY cmdPaste.label "Enganxa"> >+<!ENTITY cmdPaste.accesskey "x"> >+<!ENTITY cmdDelete.label "Suprimeix"> >+<!ENTITY cmdDelete.accesskey "u"> >+<!ENTITY mnSearch.label "Cerca"> >+<!ENTITY mnSearch.accesskey "r"> >+<!ENTITY mnSearchPlugins.label "Extensions"> >+<!ENTITY mnSearchPlugins.accesskey "E"> >+<!ENTITY cmdRunSearch.label "Executa..."> >+<!ENTITY cmdRunSearch.accesskey "a"> >+<!ENTITY mnView.label "Visualitza"> >+<!ENTITY mnView.accesskey "V"> >+<!ENTITY cmdToggleBrowser.label "Navegador"> >+<!ENTITY cmdToggleSearch.label "Cerca els resultats"> >+<!ENTITY cmdViewSearchItem.label "Visualitza..."> >+<!ENTITY cmdEditSearchItem.label "Edita"> >+<!ENTITY cmdCopySearchItemLine.label "Copia la lÃnia"> >+<!ENTITY cmdCopySearchItemAll.label "Copia-ho tot"> >+<!ENTITY cmdSaveSearchItemText.label "Desa..."> >+<!ENTITY cmdClearSearch.label "Neteja"> >+<!ENTITY cmdHideSearchItems.label "Amaga"> >+<!ENTITY browserPanel.label "Navegador"> >+ >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/ca/inspector.properties b/suite/extensions/inspector/resources/locale/ca/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/inspector.properties >@@ -0,0 +1,41 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+# >+# Catalan Translation: Projecte Mozilla en català - Softcatalà - http://www.softcatala.org/projectes/mozilla >+ >+ >+ >+inspectURL.title=Inspecció d'un URL >+inspectURL.message=Introduïu un URL >+inspectWindow.noDocuments.message = (None) >+styleRuleNewProperty.title=Nova regla d'estil >+styleRuleEditProperty.title=Edita la regla d'estil >+styleRulePropertyValue.message=Introduïu el valor de la propietat: >+styleRulePropertyName.message=Introduïu el nom de la propietat: >+sidebar.title=Inspector DOM >+sidebarInstalled=S'ha instal·lat la barra lateral >+newAttribute.title=Nou atribut >+editAttribute.title=Edita l'atribut >+enterAttrName.message=Introduïu un nom d'atribut: >+enterAttrValue.message=Introduïu un valor de l'atribut: >+findNodesDocumentEnd.message=S'ha arribat al final del document. >+findNodesDocumentEnd.title=Cerca els nodes >+#LOCALIZATION NOTE (root.title) label displayed for the tree head of the JavaScript Object tree >+root.title = Assumpte >+ >+ >+# The following items correspond to the node types defined by the >+# W3C DOM Core specification. >+1=Element >+2=Atribut >+3=Text >+4=Secció CDATA >+5=Referència d'entitat >+6=Entitat >+7=Instrucció de procés >+8=Comentari >+9=Document >+10=Tipus de document >+11=Fragment del document >+12=Notació >diff --git a/suite/extensions/inspector/resources/locale/ca/prefs.dtd b/suite/extensions/inspector/resources/locale/ca/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/prefs.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "Inspector DOM"> >+<!ENTITY Sidebar.label "Barra lateral"> >+<!ENTITY elementBlinking.label "Element marcat"> >+<!ENTITY blinkSelectedElement.label "Marca l'element seleccionat"> >+<!ENTITY borderColor.label "Color del contorn"> >+<!ENTITY borderWidth.label "Amplada del contorn"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Duració de la marca"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Velocitat de parpalleig del marcatge"> >+<!ENTITY invertColors.label "Inverteix els colors"> >+<!ENTITY installHowTo.label "La barra lateral de l'Inspector DOM no està instal·lada. Feu un clic al botó 'Instal·la' per a afegir-la a la vostra barra lateral."> >+<!ENTITY install.label "Instal·la"> >+<!ENTITY addNavigatorHooks.label "Afegeix menús contextuals al navegador"> >diff --git a/suite/extensions/inspector/resources/locale/ca/search/findFiles.dtd b/suite/extensions/inspector/resources/locale/ca/search/findFiles.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/search/findFiles.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY findFiles.title "Cerca els fitxers..."> >+<!ENTITY txSearchFor.label "Cerca:"> >+<!ENTITY txSearchPath.label "Cerca a:"> >+<!ENTITY cbRecurse.label "Cerca les subcarpetes"> >diff --git a/suite/extensions/inspector/resources/locale/ca/search/junkImgs.dtd b/suite/extensions/inspector/resources/locale/ca/search/junkImgs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/search/junkImgs.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY junkImgs.title "Cerca les imatges que no s'utilitzen en el tema actual..."> >+<!ENTITY junkImgsDescription "Per fer que aquesta cerca funcioni de forma efectiva, heu d'inspeccionar un document que carregui tots els fitxers CSS en el tema actual. Llavors, apunteu a una ubicació del disc on pugui trobar-se l'arrel del tema actual."> >diff --git a/suite/extensions/inspector/resources/locale/ca/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/ca/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "Inspector DOM"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "n"> >+ >+<!ENTITY inspectPageTaskCmd.label "Inspecciona la pà gina"> >+<!ENTITY inspectPageTaskCmd.accesskey "s"> >diff --git a/suite/extensions/inspector/resources/locale/ca/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/ca/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/viewers/boxModel.dtd >@@ -0,0 +1,12 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Catalan Translation: Projecte Mozilla en català - Softcatalà - http://www.softcatala.org/projectes/mozilla/ --> >+ >+ >+<!ENTITY boxPosition.label "Posició"> >+<!ENTITY boxDimension.label "Dimensions"> >+<!ENTITY boxMargin.label "Marge"> >+<!ENTITY boxBorder.label "Contorn"> >+<!ENTITY boxPadding.label "Separació"> >diff --git a/suite/extensions/inspector/resources/locale/ca/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/ca/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/viewers/computedStyle.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Catalan Translation: Projecte Mozilla en català - Softcatalà - http://www.softcatala.org/projectes/mozilla/ --> >+ >+ >+<!ENTITY propertyName.label "Propietat"> >+<!ENTITY propertyValue.label "Valor"> >diff --git a/suite/extensions/inspector/resources/locale/ca/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/ca/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/viewers/dom.dtd >@@ -0,0 +1,58 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Catalan Translation: Projecte Mozilla en català - Softcatalà - http://www.softcatala.org/projectes/mozilla/ --> >+ >+ >+<!ENTITY cmdShowFindDialog.label "Cerca els nodes..."> >+<!ENTITY cmdShowFindDialog.accesskey "n"> >+<!ENTITY cmdShowFindDialog.accelkey "n"> >+ >+<!ENTITY cmdFindNext.label "Cerca el següent"> >+<!ENTITY cmdFindNext.accesskey "g"> >+ >+<!ENTITY cmdToggleAnonContent.label "Mostra el contingut anònim"> >+<!ENTITY cmdToggleAnonContent.accesskey "a"> >+ >+<!ENTITY cmdToggleWhitespaceNodes.label "Mostra els nodes d'espais blancs"> >+<!ENTITY cmdToggleWhitespaceNodes.accesskey "b"> >+ >+<!ENTITY cmdToggleAccessibleNodes.label "Show Accessible Nodes"> >+<!ENTITY cmdToggleAccessibleNodes.accesskey "c"> >+ >+<!ENTITY cmdFlashSelected.label "Marca l'element seleccionat"> >+ >+<!ENTITY cmdToggleAttributes.label "Mostra els atributs"> >+<!ENTITY cmdToggleAttributes.accesskey "r"> >+ >+<!ENTITY cmdSelectByClick.label "Selecciona l'element amb un clic"> >+<!ENTITY cmdSelectByClick.accesskey "S"> >+ >+<!ENTITY ColumnsDialog.title "Columnes"> >+ >+<!ENTITY cmdShowColumnsDialog.label "Columnes"> >+<!ENTITY cmdShowColumnsDialog.accesskey "C"> >+ >+<!ENTITY cmdInsertNode.label "Insereix"> >+<!ENTITY cmdDeleteNode.label "Suprimeix"> >+<!ENTITY cmdCopyXML.label "Copia l'XML"> >+<!ENTITY cmdBlink.label "Marca l'element"> >+<!ENTITY cmdInspectBrowser.label "Inspeciona el document contingut"> >+ >+<!ENTITY cmdShowPseudoClasses.label "Defineix pseudo-classes..."> >+<!ENTITY cmdShowPseudoClasses.accesskey "P"> >+ >+<!ENTITY pseudoClasses.title "Pseudo-classes"> >+ >+<!ENTITY findNodes.title "Cerca els nodes"> >+<!ENTITY findNodesById.label "Identificador"> >+<!ENTITY findNodesByTag.label "Etiqueta"> >+<!ENTITY findNodesByAttr.label "Atribut"> >+<!ENTITY findNodesByAttrValue.label "Valor"> >+<!ENTITY findNodesSearchBy.label "Cerca per"> >+<!ENTITY findNodesDirection.label "Direcció"> >+<!ENTITY findNodesDirectionUp.label "Amunt"> >+<!ENTITY findNodesDirectionDown.label "Avall"> >+<!ENTITY findNodesFind.label "Cerca"> >+<!ENTITY findNodesCancel.label "Cancel·la"> >diff --git a/suite/extensions/inspector/resources/locale/ca/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/ca/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/viewers/domNode.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Catalan Translation: Projecte Mozilla en català - Softcatalà - http://www.softcatala.org/projectes/mozilla/ --> >+ >+ >+<!ENTITY nodeName.label "Nom del node:"> >+<!ENTITY namespaceURI.label "URI de l'espai de noms:"> >+<!ENTITY nodeType.label "Tipus de node:"> >diff --git a/suite/extensions/inspector/resources/locale/ca/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/ca/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Catalan Translation: Projecte Mozilla en català - Softcatalà - http://www.softcatala.org/projectes/mozilla/ --> >+ >+ >+<!ENTITY jsCopyValue.label "Copia el valor"> >+<!ENTITY jsEval.label "Avalua el javascript..."> >+ >+<!ENTITY jsProperty.label "Propietat"> >+<!ENTITY jsValue.label "Valor"> >+ >+<!ENTITY jsEval.desc "Introduïu una expressió javascript. La variable "target" és l'objecte que està seleccionat ara. Qualsevol valor que retorneu es mostrarà al Visualitzador d'objectes del Javascript."> >+ >+<!ENTITY jsExecute.label "Executa"> >diff --git a/suite/extensions/inspector/resources/locale/ca/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/ca/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/viewers/styleRules.dtd >@@ -0,0 +1,25 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Catalan Translation: Projecte Mozilla en català - Softcatalà - http://www.softcatala.org/projectes/mozilla/ --> >+ >+ >+<!ENTITY miFindCSSRules.label "Cerca les regles RSS..."> >+<!ENTITY miFindCSSRules.accesskey "C"> >+ >+<!ENTITY newRules.label "Nova"> >+<!ENTITY deleteSelectedRules.label "Suprimeix"> >+<!ENTITY disableSelectedRules.label "Inhabilita"> >+<!ENTITY openSelectedFileInEditor.label "Obre el fitxer a l'editor"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Commuta !important"> >+ >+<!ENTITY styleRule.label "Regla"> >+<!ENTITY styleRuleURI.label "Fitxer"> >+<!ENTITY styleRuleLineNumber.label "LÃnia"> >+ >+<!ENTITY styleRulePropPriority.label "Prioritat"> >+<!ENTITY styleRulePropName.label "Propietat"> >+<!ENTITY styleRulePropValue.label "Valor"> >diff --git a/suite/extensions/inspector/resources/locale/ca/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/ca/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/viewers/stylesheets.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Catalan Translation: Projecte Mozilla en català - Softcatalà - http://www.softcatala.org/projectes/mozilla/ --> >+ >+ >+<!ENTITY sheetLocation.label "Full d'estil"> >+<!ENTITY sheetRules.label "Regles"> >+ >diff --git a/suite/extensions/inspector/resources/locale/ca/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/ca/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ca/viewers/xblBindings.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Catalan Translation: Projecte Mozilla en català - Softcatalà - http://www.softcatala.org/projectes/mozilla/ --> >+ >+ >+<!ENTITY bindingContent.label "Contingut"> >+<!ENTITY bindingMethods.label "Mètodes"> >+<!ENTITY bindingProperties.label "Propietats"> >+<!ENTITY bindingGetter.label "Receptor"> >+<!ENTITY bindingSetter.label "Definidor"> >+<!ENTITY bindingProperty.label "Propietat"> >+<!ENTITY bindingHandlers.label "Gestors"> >+<!ENTITY bindingResources.label "Recursos"> >+<!ENTITY bindingSourceCode.label "Codi font"> >diff --git a/suite/extensions/inspector/resources/locale/cs/editing.dtd b/suite/extensions/inspector/resources/locale/cs/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/editing.dtd >@@ -0,0 +1,22 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "ZpÄt"> >+<!ENTITY mnEditUndo.accesskey "Z"> >+<!ENTITY mnEditRedo.label "Znovu"> >+<!ENTITY mnEditRedo.accesskey "o"> >+<!ENTITY mnEditCut.label "Vyjmout"> >+<!ENTITY mnEditCut.accesskey "V"> >+<!ENTITY mnEditCopy.label "KopÃrovat"> >+<!ENTITY mnEditCopy.accesskey "K"> >+<!ENTITY mnEditPaste.label "Vložit"> >+<!ENTITY mnEditPaste.accesskey "l"> >+<!ENTITY mnEditInsert.label "PÅidat"> >+<!ENTITY mnEditInsert.accesskey "P"> >+<!ENTITY mnEditEdit.label "Upravit"> >+<!ENTITY mnEditEdit.accesskey "U"> >+<!ENTITY mnEditDelete.label "Odebrat"> >+<!ENTITY mnEditDelete.accesskey "d"> >+<!ENTITY mnEditInspectInNewWindow.label "Prozkoumat v novém oknÄ"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "n"> >diff --git a/suite/extensions/inspector/resources/locale/cs/inspector.dtd b/suite/extensions/inspector/resources/locale/cs/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/inspector.dtd >@@ -0,0 +1,60 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM Inspektor"> >+ >+<!ENTITY thDOMNodes.label "Uzly DOM"> >+<!ENTITY btnInspect.label "Prozkoumat"> >+<!ENTITY btnInspect.accesskey "P"> >+<!ENTITY bxDocPanel.title "Dokument"> >+<!ENTITY bxObjectPanel.title "Objekt"> >+<!ENTITY btnSelecting.tooltip "Vybere prvek klepnutÃm"> >+<!ENTITY btnFind.tooltip "Najde prvek podle id, tagu nebo atributu"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Soubor"> >+<!ENTITY mnFile.accesskey "S"> >+<!ENTITY mnInspectContentDocument.label "Prozkoumat obsah"> >+<!ENTITY mnInspectContentDocument.accesskey "o"> >+<!ENTITY mnInspectChromeDocument.label "Prozkoumat chrome"> >+<!ENTITY mnInspectChromeDocument.accesskey "c"> >+<!ENTITY cmdShowOpenURLDialog.label "Prozkoumat URLâ¦"> >+<!ENTITY cmdShowOpenURLDialog.accesskey "U"> >+<!ENTITY cmdSave.label "Uložit DOM jakoâ¦"> >+<!ENTITY cmdSave.accesskey "l"> >+<!ENTITY cmdClose.label "ZavÅÃt"> >+<!ENTITY cmdClose.accesskey "Z"> >+<!ENTITY cmdExit.label "UkonÄit"> >+<!ENTITY cmdExit.accesskey "k"> >+ >+<!ENTITY mnEdit.label "Ãpravy"> >+<!ENTITY mnEdit.accesskey "p"> >+<!ENTITY cmdUndo.label "ZpÄt"> >+<!ENTITY cmdUndo.accesskey "Z"> >+<!ENTITY cmdRedo.label "Znovu"> >+<!ENTITY cmdRedo.accesskey "o"> >+<!ENTITY cmdCut.label "Vyjmout"> >+<!ENTITY cmdCut.accesskey "t"> >+<!ENTITY cmdCopy.label "KopÃrovat"> >+<!ENTITY cmdCopy.accesskey "K"> >+<!ENTITY cmdPaste.label "Vložit"> >+<!ENTITY cmdPaste.accesskey "l"> >+<!ENTITY cmdDelete.label "Smazat"> >+<!ENTITY cmdDelete.accesskey "S"> >+ >+<!ENTITY mnSearch.label "Hledat"> >+<!ENTITY mnSearch.accesskey "H"> >+ >+<!ENTITY mnView.label "Zobrazit"> >+<!ENTITY mnView.accesskey "Z"> >+<!ENTITY cmdToggleBrowser.label "ProhlÞeÄ"> >+<!ENTITY cmdToggleBrowser.accesskey "P"> >+<!ENTITY cmdToggleSearch.label "Výsledky hledánÃ"> >+ >+<!ENTITY browserPanel.label "ProhlÞeÄ"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/cs/inspector.properties b/suite/extensions/inspector/resources/locale/cs/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/inspector.properties >@@ -0,0 +1,35 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+ >+inspectURL.title=Prozkoumat URL >+inspectURL.message=Vložte URL: >+inspectWindow.noDocuments.message=(Žádný) >+styleRuleNewProperty.title=Nové pravidlo stylu >+styleRuleEditProperty.title=Ãprava pravidla stylu >+styleRulePropertyValue.message=Vložte hodnotu vlastnosti: >+styleRulePropertyName.message=Vložte jméno vlastnosti >+sidebar.title=DOM Inspektor >+sidebarInstalled=Postrannà liÅ¡ta je nainstalována >+newAttribute.title=Nový atribut >+editAttribute.title=Ãpravy atributu >+findNodesDocumentEnd.message=Dosažen konec dokumentu >+findNodesDocumentEnd.title=NajÃt uzel >+#LOCALIZATION NOTE (root.title) label displayed for the tree head of the JavaScript Object tree >+root.title=KoÅen >+ >+# The following items correspond to the node types defined by the >+# W3C DOM Core specification. >+1=Prvek >+2=Atribut >+3=Text >+4=Sekce CDATA >+5=Odkaz entity >+6=Entita >+7=ProvádÄjÃcà instrukce >+8=KomentáŠ>+9=Dokument >+10=Typ dokumentu >+11=Fragment dokumentu >+12=Záznam >diff --git a/suite/extensions/inspector/resources/locale/cs/prefs.dtd b/suite/extensions/inspector/resources/locale/cs/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/prefs.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM Inspektor"> >+<!ENTITY Sidebar.label "Postrannà liÅ¡ta"> >+<!ENTITY elementBlinking.label "ZvýraznÄnà prvků"> >+<!ENTITY blinkSelectedElement.label "Zvýraznit vybraný prvek"> >+<!ENTITY borderColor.label "Barva rámeÄku"> >+<!ENTITY borderWidth.label "Å ÃÅka rámeÄku"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Doba zvýraznÄnÃ"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Rychlost zvýraznÄnÃ"> >+<!ENTITY invertColors.label "Obrátit barvy"> >+<!ENTITY installHowTo.label "Postrannà liÅ¡ta DOM Inspektoru nenà nainstalována. Pro pÅidánà postrannà liÅ¡ty klepnÄte na tlaÄÃtko 'Instalovat'."> >+<!ENTITY install.label "Instalovat"> >+<!ENTITY addNavigatorHooks.label "PÅidat do mÃstnà nabÃdky v ProhlÞeÄi"> >diff --git a/suite/extensions/inspector/resources/locale/cs/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/cs/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM Inspektor"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "Prozkoumat stránku"> >+<!ENTITY inspectPageTaskCmd.accesskey "s"> >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/accessibleEvent.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descIsFromUserInput.label "Je ze vstupu uživatele: "> >+<!ENTITY descState.label "Stav: "> >+<!ENTITY descIsEnabled.label "Je stav povolen: "> >+<!ENTITY descStartOffset.label "PoÄáteÄnà pozice: "> >+<!ENTITY descLength.label "Délka: "> >+<!ENTITY descIsInserted.label "Je vložen text: "> >+<!ENTITY descModifiedText.label "ZmÄnÄný text: "> >+<!ENTITY descCaretOffset.label "Pozice kurzoru: "> >+ >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/accessibleEvents.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventType.label "Typ události"> >+<!ENTITY eventTime.label "Äas"> >+<!ENTITY eventNodeName.label "Jméno uzlu"> >+<!ENTITY clearEventList.label "Vymazat seznam událostÃ"> >+ >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/accessibleProps.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descRole.label "Role:"> >+<!ENTITY descName.label "Jméno:"> >+<!ENTITY descDescription.label "Popis:"> >+<!ENTITY descValue.label "Hodnota:"> >+<!ENTITY descState.label "Stav:"> >+<!ENTITY descActionName.label "Jméno akce:"> >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/accessibleRelations.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY relationType.label "Typ relace"> >+<!ENTITY role.label "Role"> >+<!ENTITY nodeName.label "Jméno uzlu"> >+<!ENTITY relations.label "Relace: "> >+<!ENTITY relationTargets.label "CÃle relace: "> >+ >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/accessibleTree.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "Role"> >+<!ENTITY name.label "Jméno"> >+<!ENTITY nodeName.label "Jméno uzlu"> >+ >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/boxModel.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY boxPosition.label "UmÃstÄnÃ"> >+<!ENTITY boxDimension.label "RozmÄry"> >+<!ENTITY boxMargin.label "VnÄjšà okraj"> >+<!ENTITY boxBorder.label "RámeÄek"> >+<!ENTITY boxPadding.label "VnitÅnà okraj"> >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/computedStyle.dtd >@@ -0,0 +1,5 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY propertyName.label "Vlastnost"> >+<!ENTITY propertyValue.label "Hodnota"> >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/dom.dtd >@@ -0,0 +1,136 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY cmdShowFindDialog.label "NajÃt uzelâ¦"> >+<!ENTITY cmdShowFindDialog.accesskey "N"> >+<!ENTITY cmdShowFindDialog.accelkey "f"> >+ >+<!ENTITY cmdFindNext.label "NajÃt dalÅ¡Ã"> >+<!ENTITY cmdFindNext.accesskey "N"> >+ >+<!ENTITY cmdToggleAnonContent.label "Zobrazit anonymnà obsah"> >+<!ENTITY cmdToggleAnonContent.accesskey "a"> >+ >+<!ENTITY cmdToggleWhitespaceNodes.label "Zobrazit prázdné uzly"> >+<!ENTITY cmdToggleWhitespaceNodes.accesskey "p"> >+ >+<!ENTITY cmdToggleAccessibleNodes.label "Zobrazit pÅÃstupové uzly"> >+<!ENTITY cmdToggleAccessibleNodes.accesskey "u"> >+ >+<!ENTITY cmdToggleProcessingInstructions.label "Zobrazit procesnà instrukce"> >+<!ENTITY cmdToggleProcessingInstructions.accesskey "p"> >+ >+<!ENTITY cmdFlashSelected.label "Zvýraznit vybraný prvek"> >+<!ENTITY cmdFlashSelected.accesskey "Z"> >+ >+<!ENTITY cmdToggleAttributes.label "Zobrazit atributy"> >+<!ENTITY cmdToggleAttributes.accesskey "r"> >+ >+<!ENTITY cmdSelectByClick.label "Vybrat prvek klepnutÃm"> >+<!ENTITY cmdSelectByClick.accesskey "V"> >+ >+<!ENTITY ColumnsDialog.title "Sloupce"> >+ >+<!ENTITY cmdShowColumnsDialog.label "Sloupceâ¦"> >+<!ENTITY cmdShowColumnsDialog.accesskey "S"> >+ >+<!ENTITY cmdInsertNode.label "PÅidatâ¦"> >+<!ENTITY cmdDeleteNode.label "Smazat"> >+<!ENTITY cmdCopyXML.label "KopÃrovat XML"> >+<!ENTITY cmdCopyXML.accesskey "X"> >+<!ENTITY cmdBlink.label "Zvýraznit prvek"> >+<!ENTITY cmdBlink.accesskey "Z"> >+<!ENTITY cmdInspectBrowser.label "Prozkoumat"> >+<!ENTITY cmdInspectBrowser.accesskey "P"> >+ >+<!ENTITY cmdShowPseudoClasses.label "Nastavit pseudo-tÅÃdy"> >+<!ENTITY cmdShowPseudoClasses.accesskey "p"> >+ >+<!ENTITY pseudoClasses.title "Pseudo-tÅÃdy"> >+ >+<!ENTITY findNodes.title "NajÃt uzel"> >+<!ENTITY findNodesById.label "Id"> >+<!ENTITY findNodesById.accesskey "I"> >+<!ENTITY findNodesById.accesskey2 "d"> >+<!ENTITY findNodesByTag.label "Tag"> >+<!ENTITY findNodesByTag.accesskey "T"> >+<!ENTITY findNodesByTag.accesskey2 "g"> >+<!ENTITY findNodesByAttr.label "Atribut"> >+<!ENTITY findNodesByAttr.accesskey "A"> >+<!ENTITY findNodesByAttr.accesskey2 "r"> >+<!ENTITY findNodesByAttrValue.label "Hodnota"> >+<!ENTITY findNodesByAttrValue.accesskey "V"> >+<!ENTITY findNodesSearchBy.label "Hledat podle"> >+<!ENTITY findNodesDirection.label "SmÄr"> >+<!ENTITY findNodesDirectionUp.label "Nahoru"> >+<!ENTITY findNodesDirectionUp.accesskey "N"> >+<!ENTITY findNodesDirectionDown.label "Dolů"> >+<!ENTITY findNodesDirectionDown.accesskey "D"> >+<!ENTITY findNodesFind.label "NajÃt"> >+<!ENTITY findNodesCancel.label "ZruÅ¡it"> >+ >+<!ENTITY mnEditPasteMenu.label "Vložit"> >+<!ENTITY mnEditPasteMenu.accesskey "l"> >+<!ENTITY mnEditPasteBefore.label "pÅed"> >+<!ENTITY mnEditPasteBefore.accesskey "p"> >+<!ENTITY mnEditPasteAfter.label "po"> >+<!ENTITY mnEditPasteAfter.accesskey "o"> >+<!ENTITY mnEditPasteReplace.label "mÃsto (nahradit)"> >+<!ENTITY mnEditPasteReplace.accesskey "m"> >+<!ENTITY mnEditPasteFirstChild.label "jako prvnà potomek"> >+<!ENTITY mnEditPasteFirstChild.accesskey "r"> >+<!ENTITY mnEditPasteLastChild.label "jako poslednà potomek"> >+<!ENTITY mnEditPasteLastChild.accesskey "s"> >+<!ENTITY mnEditPasteAsParent.label "jako rodiÄ"> >+<!ENTITY mnEditPasteAsParent.accesskey "r"> >+ >+<!ENTITY mnEditInsertMenu.label "Vložit"> >+<!ENTITY mnEditInsertMenu.accesskey "l"> >+<!ENTITY mnEditInsertAfter.label "pÅed"> >+<!ENTITY mnEditInsertAfter.accesskey "p"> >+<!ENTITY mnEditInsertBefore.label "po"> >+<!ENTITY mnEditInsertBefore.accesskey "o"> >+<!ENTITY mnEditInsertFirstChild.label "jako prvnà potomek"> >+<!ENTITY mnEditInsertFirstChild.accesskey "m"> >+<!ENTITY mnEditInsertLastChild.label "jako poslednà potomek"> >+<!ENTITY mnEditInsertLastChild.accesskey "s"> >+ >+<!ENTITY insertNode.title "Vložit uzel"> >+<!ENTITY nodeType.label "Typ uzlu:"> >+<!ENTITY nodeType.accesskey "T"> >+<!ENTITY nodeType.element.label "Prvek"> >+<!ENTITY nodeType.text.label "Text"> >+<!ENTITY namespaceURI.label "URI jmenného prostoru:"> >+<!ENTITY namespaceURI.accesskey "U"> >+<!ENTITY tagName.label "Jméno tagu:"> >+<!ENTITY tagName.accesskey "J"> >+<!ENTITY nodeValue.label "Hodnota uzlu:"> >+<!ENTITY nodeValue.accesskey "H"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "VýchozÃ"> >+<!ENTITY namespaceTitle.custom.label "VlastnÃ"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "Události XML"> >+<!ENTITY namespaceTitle.WAIRoles.label "Role WAI"> >+<!ENTITY namespaceTitle.WAIProperties.label "Vlastnosti WAI"> >+ >+<!-- LOCALIZATION NOTE: Localizers can choose not to translate the following access keys. For a discussion about the pros and cons of such a decision, see https://bugzilla.mozilla.org/show_bug.cgi?id=398704, comments 1 and 2. --> >+<!ENTITY cbxStateHover.accesskey "h"> >+<!ENTITY cbxStateActive.accesskey "a"> >+<!ENTITY cbxStateFocus.accesskey "f"> >+ >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/domNode.dtd >@@ -0,0 +1,30 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Jméno uzlu"> >+<!ENTITY localName.label "MÃstnà název:"> >+<!ENTITY namespaceURI.label "URI jmenného prostoru"> >+<!ENTITY nodeType.label "Typ uzlu:"> >+<!ENTITY nodeValue.label "Hodnota uzlu:"> >+ >+<!ENTITY namespaceTitle.null.label "prázdný"> >+<!ENTITY namespaceTitle.default.label "výchozÃ"> >+<!ENTITY namespaceTitle.custom.label "vlastnÃ"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "Události XML"> >+<!ENTITY namespaceTitle.WAIRoles.label "Role WAI"> >+<!ENTITY namespaceTitle.WAIProperties.label "Vlastnosti WAI"> >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "KopÃrovat hodnotu"> >+<!ENTITY jsEval.label "Vyhodnotit JavaScript"> >+ >+<!ENTITY jsProperty.label "Vlastnost"> >+<!ENTITY jsValue.label "Hodnota"> >+ >+<!ENTITY evaluateDialog.title "Vyhodnocenà výrazu"> >+<!ENTITY jsEval.desc "Vložte výraz v jazyce JavaScript. PromÄnná "target" obsahuje objekt, který je právÄ zvolen."> >+<!ENTITY jsExecute.label "Spustit"> >+<!ENTITY inspectReturn.label "Výsledek vypsat v:"> >+<!ENTITY inspectReturnNew.label "novém oknÄ"> >+<!ENTITY inspectReturnExisting.label "existujÃcÃm oknÄ"> >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/styleRules.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY miFindCSSRules.label "NajÃt pravidlo CSSâ¦"> >+<!ENTITY miFindCSSRules.accesskey "N"> >+<!ENTITY newRules.label "Nový"> >+<!ENTITY deleteSelectedRules.label "Odstranit"> >+<!ENTITY disableSelectedRules.label "deaktivovaný"> >+<!ENTITY openSelectedFileInEditor.label "OtevÅÃt v editoru"> >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "PÅepnout !important"> >+<!ENTITY styleRule.label "Pravidlo"> >+<!ENTITY styleRuleURI.label "Soubor"> >+<!ENTITY styleRuleLineNumber.label "Åádka"> >+<!ENTITY styleRulePropPriority.label "Priorita"> >+<!ENTITY styleRulePropName.label "Vlastnost"> >+<!ENTITY styleRulePropValue.label "Hodnota"> >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/stylesheets.dtd >@@ -0,0 +1,5 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY sheetLocation.label "Styly"> >+<!ENTITY sheetRules.label "Pravidla"> >diff --git a/suite/extensions/inspector/resources/locale/cs/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/cs/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/cs/viewers/xblBindings.dtd >@@ -0,0 +1,12 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY bindingContent.label "Obsah"> >+<!ENTITY bindingMethods.label "Metody"> >+<!ENTITY bindingProperties.label "Vlastnosti"> >+<!ENTITY bindingGetter.label "VyzvedávaÄ"> >+<!ENTITY bindingSetter.label "NastavovaÄ"> >+<!ENTITY bindingProperty.label "Vlastnost"> >+<!ENTITY bindingHandlers.label "ObsluhovaÄe"> >+<!ENTITY bindingResources.label "Zdroje"> >+<!ENTITY bindingSourceCode.label "Zdrojový kód"> >diff --git a/suite/extensions/inspector/resources/locale/da/editing.dtd b/suite/extensions/inspector/resources/locale/da/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/editing.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Fortryd"> >+<!ENTITY mnEditUndo.accesskey "F"> >+<!ENTITY mnEditRedo.label "Gentag"> >+<!ENTITY mnEditRedo.accesskey "G"> >+<!ENTITY mnEditCut.label "Klip"> >+<!ENTITY mnEditCut.accesskey "K"> >+<!ENTITY mnEditCopy.label "Kopier"> >+<!ENTITY mnEditCopy.accesskey "o"> >+<!ENTITY mnEditPaste.label "Indsæt"> >+<!ENTITY mnEditPaste.accesskey "I"> >+<!ENTITY mnEditInsert.label "Indsæt ny"> >+<!ENTITY mnEditInsert.accesskey "N"> >+<!ENTITY mnEditEdit.label "Rediger"> >+<!ENTITY mnEditEdit.accesskey "R"> >+<!ENTITY mnEditDelete.label "Slet"> >+<!ENTITY mnEditDelete.accesskey "S"> >+<!ENTITY mnEditInspectInNewWindow.label "Inspicer i nyt vindue"> >diff --git a/suite/extensions/inspector/resources/locale/da/inspector.dtd b/suite/extensions/inspector/resources/locale/da/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/inspector.dtd >@@ -0,0 +1,63 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM Inspektør"> >+ >+<!ENTITY thDOMNodes.label "DOM Nodes"> >+<!ENTITY btnInspect.label "Inspicer"> >+<!ENTITY bxDocPanel.title "Dokument"> >+<!ENTITY bxObjectPanel.title "Objekt"> >+<!ENTITY btnSelecting.tooltip "Inspicer en node ved at klikke pÃ¥ den"> >+<!ENTITY btnFind.tooltip "Find en node at inspicere ved id, tag eller attribut"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Filer"> >+<!ENTITY mnFile.accesskey "f"> >+ <!ENTITY cmdShowOpenURLDialog.label "Inspicer en URL..."> >+ <!ENTITY cmdShowOpenURLDialog.accesskey "u"> >+ <!ENTITY cmdClose.label "Luk"> >+ <!ENTITY cmdClose.accesskey "l"> >+ <!ENTITY cmdExit.label "Afslut"> >+ <!ENTITY cmdExit.accesskey "a"> >+ >+<!ENTITY mnEdit.label "Rediger"> >+<!ENTITY mnEdit.accesskey "R"> >+ <!ENTITY cmdUndo.label "Fortryd"> >+ <!ENTITY cmdUndo.accesskey "F"> >+ <!ENTITY cmdRedo.label "Gentag"> >+ <!ENTITY cmdRedo.accesskey "G"> >+ <!ENTITY cmdCut.label "Klip"> >+ <!ENTITY cmdCut.accesskey "K"> >+ <!ENTITY cmdCopy.label "Kopier"> >+ <!ENTITY cmdCopy.accesskey "o"> >+ <!ENTITY cmdPaste.label "Indsæt"> >+ <!ENTITY cmdPaste.accesskey "I"> >+ <!ENTITY cmdDelete.label "Slet"> >+ <!ENTITY cmdDelete.accesskey "S"> >+ >+<!ENTITY mnSearch.label "Søg"> >+<!ENTITY mnSearch.accesskey "s"> >+ <!ENTITY mnSearchPlugins.label "Udvidelsemoduler"> >+ <!ENTITY mnSearchPlugins.accesskey "U"> >+ <!ENTITY cmdRunSearch.label "Kør..."> >+ <!ENTITY cmdRunSearch.accesskey "K"> >+ >+<!ENTITY mnView.label "Vis"> >+<!ENTITY mnView.accesskey "v"> >+ <!ENTITY cmdToggleBrowser.label "Browser"> >+ <!ENTITY cmdToggleSearch.label "Søgeresultater"> >+ >+<!ENTITY cmdViewSearchItem.label "Vis..."> >+<!ENTITY cmdEditSearchItem.label "Rediger..."> >+<!ENTITY cmdCopySearchItemLine.label "Kopier linje"> >+<!ENTITY cmdCopySearchItemAll.label "Kopier alt"> >+<!ENTITY cmdSaveSearchItemText.label "Gem..."> >+<!ENTITY cmdClearSearch.label "Ryd"> >+<!ENTITY cmdHideSearchItems.label "Skjul"> >+ >+<!ENTITY browserPanel.label "Browser"> >+ >+<!ENTITY closeCmd.key "L"> >diff --git a/suite/extensions/inspector/resources/locale/da/inspector.properties b/suite/extensions/inspector/resources/locale/da/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/inspector.properties >@@ -0,0 +1,36 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+ >+inspectURL.title = Inspicer URL >+inspectURL.message = Indtast en URL: >+inspectWindow.noDocuments.message = (intet dokument) >+styleRuleNewProperty.title = Ny typografi-regl >+styleRuleEditProperty.title = Rediger typografi-regl >+styleRulePropertyValue.message = Indtast værdi for egenskab: >+styleRulePropertyName.message = Indtast navn pÃ¥ egenskab: >+sidebar.title = DOM Inspektør >+sidebarInstalled = Sidebjælken er installeret. >+newAttribute.title = Ny attribut >+editAttribute.title = Rediger attribut >+findNodesDocumentEnd.message = Slutningen af dokumentet nÃ¥et. >+findNodesDocumentEnd.title = Find node >+#LOCALIZATION NOTE (root.title) label displayed for the tree head of the JavaScript Object tree >+root.title = Rod >+ >+ >+# The following items correspond to the node types defined by the >+# W3C DOM Core specification. >+1 = Element >+2 = Attribut >+3 = Tekst >+4 = CDATA Sektion >+5 = Entitet reference >+6 = Entitet >+7 = Processeringsinstruktion >+8 = Kommentar >+9 = Dokument >+10 = Dokumenttype >+11 = Dokumentfragment >+12 = Notation >diff --git a/suite/extensions/inspector/resources/locale/da/prefs.dtd b/suite/extensions/inspector/resources/locale/da/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/prefs.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM Inspektør"> >+<!ENTITY Sidebar.label "Sidebjælke"> >+<!ENTITY elementBlinking.label "Element Blink"> >+<!ENTITY blinkSelectedElement.label "Blink det valgte element"> >+<!ENTITY borderColor.label "Rammefarve"> >+<!ENTITY borderWidth.label "Rammetykkelse"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Blink varighed"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Blink hastighed"> >+<!ENTITY invertColors.label "Inverter farver"> >+<!ENTITY installHowTo.label "DOM Inspektør sidebjælken er pt. ikke installeret. Klik pÃ¥ knappen 'Installer' for at tilføje den til din sidebjælke."> >+<!ENTITY install.label "Installer"> >+<!ENTITY addNavigatorHooks.label "Tilføj kontekst-menuer til Navigator"> >diff --git a/suite/extensions/inspector/resources/locale/da/search/findFiles.dtd b/suite/extensions/inspector/resources/locale/da/search/findFiles.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/search/findFiles.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY findFiles.title "Find filer..."> >+<!ENTITY txSearchFor.label "Søg efter:"> >+<!ENTITY txSearchPath.label "Søg i:"> >+<!ENTITY cbRecurse.label "Søg undermapper"> >diff --git a/suite/extensions/inspector/resources/locale/da/search/junkImgs.dtd b/suite/extensions/inspector/resources/locale/da/search/junkImgs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/search/junkImgs.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY junkImgs.title "Find ubrugte billeder i det nuværende tema..."> >+<!ENTITY junkImgsDescription "For at denne søgning kan foretages effektivt bliver du nød til at inspicere et dokument som indlæser ENHVER CSS fil i det nuværende tema. Derefter, peg pÃ¥ den placering pÃ¥ disken, hvor roden af det nuværende tema kan findes."> >\ No newline at end of file >diff --git a/suite/extensions/inspector/resources/locale/da/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/da/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM Inspektør"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "Inspicer side"> >+<!ENTITY inspectPageTaskCmd.accesskey "i"> >diff --git a/suite/extensions/inspector/resources/locale/da/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/da/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/viewers/boxModel.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Placering"> >+<!ENTITY boxDimension.label "Størrelse"> >+<!ENTITY boxMargin.label "Margen"> >+<!ENTITY boxBorder.label "Ramme"> >+<!ENTITY boxPadding.label "Udfyldelse"> >diff --git a/suite/extensions/inspector/resources/locale/da/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/da/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Egenskab"> >+<!ENTITY propertyValue.label "Værdi"> >diff --git a/suite/extensions/inspector/resources/locale/da/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/da/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/viewers/dom.dtd >@@ -0,0 +1,64 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "Find Noder..."> >+ <!ENTITY cmdShowFindDialog.accesskey "f"> >+ <!ENTITY cmdShowFindDialog.accelkey "f"> >+ >+ <!ENTITY cmdFindNext.label "Find næste"> >+ <!ENTITY cmdFindNext.accesskey "n"> >+ >+ <!ENTITY cmdToggleAnonContent.label "Vis anonymt indhold"> >+ <!ENTITY cmdToggleAnonContent.accesskey "a"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "Vis blanke noder"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "b"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "Show Accessible Nodes"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "c"> >+ >+ <!ENTITY cmdFlashSelected.label "Blink valgte element"> >+ >+ <!ENTITY cmdToggleAttributes.label "Vis attributer"> >+ <!ENTITY cmdToggleAttributes.accesskey "r"> >+ >+ <!ENTITY cmdSelectByClick.label "Vælg element ved klik"> >+ <!ENTITY cmdSelectByClick.accesskey "V"> >+ >+ <!ENTITY ColumnsDialog.title "Kolonner"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "Kolonner..."> >+ <!ENTITY cmdShowColumnsDialog.accesskey "K"> >+ >+ <!ENTITY cmdInsertNode.label "Indsæt..."> >+ <!ENTITY cmdDeleteNode.label "Slet"> >+ <!ENTITY cmdCopyXML.label "Kopier XML"> >+ <!ENTITY cmdBlink.label "Blink element"> >+ <!ENTITY cmdInspectBrowser.label "Inspicer indholdt dokument"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "Sæt Pseudo-klasser..."> >+ <!ENTITY cmdShowPseudoClasses.accesskey "p"> >+ >+ <!ENTITY pseudoClasses.title "Pseudo-klasser"> >+ >+ <!ENTITY findNodes.title "Find noder"> >+ <!ENTITY findNodesById.label "ID"> >+ <!ENTITY findNodesByTag.label "Tag"> >+ <!ENTITY findNodesByAttr.label "Attr"> >+ <!ENTITY findNodesByAttrValue.label "Værdi"> >+ <!ENTITY findNodesSearchBy.label "Søg efter"> >+ <!ENTITY findNodesDirection.label "Retning"> >+ <!ENTITY findNodesDirectionUp.label "Op"> >+ <!ENTITY findNodesDirectionDown.label "Ned"> >+ <!ENTITY findNodesFind.label "Find"> >+ <!ENTITY findNodesCancel.label "Afbryd"> >+ >+ <!ENTITY mnEditPasteMenu.label "Indsæt"> >+ <!ENTITY mnEditPasteBefore.label "Før"> >+ <!ENTITY mnEditPasteAfter.label "Efter"> >+ <!ENTITY mnEditPasteReplace.label "I stedet for (erstat)"> >+ <!ENTITY mnEditPasteFirstChild.label "Som første barn"> >+ <!ENTITY mnEditPasteLastChild.label "Som sidste barn"> >+ <!ENTITY mnEditPasteAsParent.label "Som forældre"> >+ >diff --git a/suite/extensions/inspector/resources/locale/da/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/da/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/viewers/domNode.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Nodenavn:"> >+<!ENTITY namespaceURI.label "Namespace URI:"> >+<!ENTITY nodeType.label "Nodetype:"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "Dokumentstandard"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE These are generic Namespaces --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "XML Events"> >+<!ENTITY namespaceTitle.WAIRoles.label "WAI Roles"> >+<!ENTITY namespaceTitle.WAIProperties.label "WAI Properties"> >+<!ENTITY namespaceTitle.custom.label "Custom"> >diff --git a/suite/extensions/inspector/resources/locale/da/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/da/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Kopier værdi"> >+<!ENTITY jsEval.label "Evaluer JavaScript..."> >+ >+<!ENTITY jsProperty.label "Egenskab"> >+<!ENTITY jsValue.label "Værdi"> >+ >+<!ENTITY evaluateDialog.title "Evaluer udtryk"> >+<!ENTITY jsEval.desc "Indtast et JavaScript udtryk. Variablen "target" er den egenskab som pt. er valgt."> >+<!ENTITY jsExecute.label "Udfør"> >+<!ENTITY inspectReturn.label "Inspicér returværdi i"> >+<!ENTITY inspectReturnNew.label "Nyt vindue"> >+<!ENTITY inspectReturnExisting.label "Eksisterende vindue"> >diff --git a/suite/extensions/inspector/resources/locale/da/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/da/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/viewers/styleRules.dtd >@@ -0,0 +1,22 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "Find CSS regler..."> >+<!ENTITY miFindCSSRules.accesskey "F"> >+ >+<!ENTITY newRules.label "Ny"> >+<!ENTITY deleteSelectedRules.label "Slet"> >+<!ENTITY disableSelectedRules.label "Deaktiver"> >+<!ENTITY openSelectedFileInEditor.label "à bn fil i editor"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Tænd/sluk !important"> >+ >+<!ENTITY styleRule.label "Regl"> >+<!ENTITY styleRuleURI.label "Fil"> >+<!ENTITY styleRuleLineNumber.label "Linje"> >+ >+<!ENTITY styleRulePropPriority.label "Prioritet"> >+<!ENTITY styleRulePropName.label "Egenskab"> >+<!ENTITY styleRulePropValue.label "Værdi"> >diff --git a/suite/extensions/inspector/resources/locale/da/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/da/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Typografiark"> >+<!ENTITY sheetRules.label "Regler"> >+ >diff --git a/suite/extensions/inspector/resources/locale/da/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/da/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/da/viewers/xblBindings.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "Indhold"> >+<!ENTITY bindingMethods.label "Metoder"> >+<!ENTITY bindingProperties.label "Egenskaber"> >+<!ENTITY bindingGetter.label "Getter"> >+<!ENTITY bindingSetter.label "Setter"> >+<!ENTITY bindingProperty.label "Egenskab"> >+<!ENTITY bindingHandlers.label "Handlers"> >+<!ENTITY bindingResources.label "Ressourcer"> >+<!ENTITY bindingSourceCode.label "Kildekode"> >diff --git a/suite/extensions/inspector/resources/locale/de/editing.dtd b/suite/extensions/inspector/resources/locale/de/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/editing.dtd >@@ -0,0 +1,27 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Rückgängig"> >+<!ENTITY mnEditUndo.accesskey "R"> >+<!ENTITY mnEditRedo.label "Wiederholen"> >+<!ENTITY mnEditRedo.accesskey "W"> >+<!ENTITY mnEditCut.label "Ausschneiden"> >+<!ENTITY mnEditCut.accesskey "A"> >+<!ENTITY mnEditCopy.label "Kopieren"> >+<!ENTITY mnEditCopy.accesskey "K"> >+<!ENTITY mnEditPaste.label "Einfügen"> >+<!ENTITY mnEditPaste.accesskey "E"> >+<!ENTITY mnEditInsert.label "Hinzufügen"> >+<!ENTITY mnEditInsert.accesskey "H"> >+<!ENTITY mnEditEdit.label "Bearbeiten"> >+<!ENTITY mnEditEdit.accesskey "B"> >+<!ENTITY mnEditDelete.label "Löschen"> >+<!ENTITY mnEditDelete.accesskey "L"> >+<!ENTITY mnEditInspectInNewWindow.label "In neuem Fenster inspizieren"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "F"> >+<!ENTITY mnEditInspectInNewWindow.key "I"> >+<!ENTITY mnEditCopyFileURI.label "URI kopieren"> >+<!ENTITY mnEditCopyFileURI.accesskey "U"> >+<!ENTITY mnEditViewFileURI.label "Datei ansehen"> >+<!ENTITY mnEditViewFileURI.accesskey "D"> >diff --git a/suite/extensions/inspector/resources/locale/de/inspector.dtd b/suite/extensions/inspector/resources/locale/de/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/inspector.dtd >@@ -0,0 +1,67 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM Inspector"> >+ >+<!ENTITY thDOMNodes.label "DOM-Knoten"> >+<!ENTITY btnInspect.label "Inspizieren"> >+<!ENTITY btnInspect.accesskey "I"> >+<!ENTITY bxDocPanel.title "Dokument"> >+<!ENTITY bxObjectPanel.title "Objekt"> >+<!ENTITY btnSelecting.tooltip "Einen Knoten zum Inspizieren durch darauf klicken suchen"> >+<!ENTITY btnFind.tooltip "Einen Knoten zum Inspizieren über ID, Tag oder Attribut suchen"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Datei"> >+<!ENTITY mnFile.accesskey "D"> >+ <!ENTITY mnInspectContentDocument.label "Inhaltsdokument inspizieren"> >+ <!ENTITY mnInspectContentDocument.accesskey "h"> >+ <!ENTITY mnInspectChromeDocument.label "Chrome-Dokument inspizieren"> >+ <!ENTITY mnInspectChromeDocument.accesskey "C"> >+ <!ENTITY mnInspectApplicationAccessible.label "Anwendungs-"Accessible" inspizieren"> >+ <!ENTITY mnInspectApplicationAccessible.accesskey "A"> >+ <!ENTITY cmdEnterLocation.label "Eine URL inspizieren"> >+ <!ENTITY cmdEnterLocation.accesskey "U"> >+ <!ENTITY cmdEnterLocation.key "L"> >+ <!ENTITY cmdEnterLocation.key2 "D"> >+ <!ENTITY cmdSave.label "DOM speichern unterâ¦"> >+ <!ENTITY cmdSave.accesskey "D"> >+ <!ENTITY cmdClose.label "SchlieÃen"> >+ <!ENTITY cmdClose.accesskey "L"> >+ <!ENTITY cmdExit.label "Beenden"> >+ <!ENTITY cmdExit.accesskey "e"> >+ >+<!ENTITY mnEdit.label "Bearbeiten"> >+<!ENTITY mnEdit.accesskey "B"> >+ <!ENTITY cmdUndo.label "Rückgängig"> >+ <!ENTITY cmdUndo.accesskey "R"> >+ <!ENTITY cmdRedo.label "Wiederholen"> >+ <!ENTITY cmdRedo.accesskey "W"> >+ <!ENTITY cmdCut.label "Ausschneiden"> >+ <!ENTITY cmdCut.accesskey "s"> >+ <!ENTITY cmdCopy.label "Kopieren"> >+ <!ENTITY cmdCopy.accesskey "c"> >+ <!ENTITY cmdPaste.label "Einfügen"> >+ <!ENTITY cmdPaste.accesskey "E"> >+ <!ENTITY cmdDelete.label "Löschen"> >+ <!ENTITY cmdDelete.accesskey "L"> >+ >+<!ENTITY mnView.label "Ansicht"> >+<!ENTITY mnView.accesskey "A"> >+ <!ENTITY mnDocViewerList.label "Dokument-Ansicht"> >+ <!ENTITY mnDocViewerList.accesskey "D"> >+ <!ENTITY mnObjectViewerList.label "Objekt-Ansicht"> >+ <!ENTITY mnObjectViewerList.accesskey "O"> >+ <!ENTITY cmdToggleDocument.label "Dokument im Browser-Bereich anzeigen"> >+ <!ENTITY cmdToggleDocument.accesskey "B"> >+ <!ENTITY cmdToggleSearch.label "Suchergebnisse"> >+ <!ENTITY cmdFlashOnSelect.label "Ausgewähltes Element blinken lassen"> >+ <!ENTITY cmdFlashOnSelect.accesskey "w"> >+ >+<!ENTITY browserPanel.label "Browser"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/de/inspector.properties b/suite/extensions/inspector/resources/locale/de/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/inspector.properties >@@ -0,0 +1,37 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+applicationAccesible.title = Anwendungs-"Accessible" >+inspectWindow.noDocuments.message = (Keines) >+styleRuleNewProperty.title = Neue Style-Regel >+styleRuleEditProperty.title = Style-Regel bearbeiten >+styleRulePropertyValue.message = Geben Sie den Eigenschaftswert ein: >+styleRulePropertyName.message = Geben Sie den Eigenschaftsnamen ein: >+sidebar.title = DOM Inspector >+sidebarInstalled = Die Sidebar ist installiert. >+newAttribute.title = Neues Attribut >+editAttribute.title = Attribut bearbeiten >+findNodesDocumentEnd.message = Ende des Dokuments erreicht. >+findNodesDocumentEnd.title = Knoten suchen >+# LOCALIZATION NOTE (root.title) label displayed for the tree head of the >+# JavaScript Object tree >+root.title = Subjekt >+ >+irrecoverableSubtree.message = Einige der ausgewählten Knoten sind Teil eines anonymen Unterbaums, der zerstört wird. Ein Löschen dieser Knoten kann nicht rückgängig gemacht werden. Wollen Sie die ausgewählten Knoten löschen? >+irrecoverableSubtree.title = Anonymen Unterbaum löschen >+ >+# The following items correspond to the node types defined by the W3C DOM Core >+# specification. >+1 = Element >+2 = Attribut >+3 = Text >+4 = CDATA-Bereich >+5 = Entity-Referenz >+6 = Entity >+7 = Durchführungsanweisung >+8 = Kommentar >+9 = Dokument >+10 = Dokument-Typ >+11 = Dokument-Fragment >+12 = Notation >diff --git a/suite/extensions/inspector/resources/locale/de/prefs.dtd b/suite/extensions/inspector/resources/locale/de/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/prefs.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM Inspector"> >+<!ENTITY Sidebar.label "Sidebar"> >+<!ENTITY elementBlinking.label "Blinken von Elementen"> >+<!ENTITY blinkSelectedElement.label "Ausgewähltes Element blinken lassen"> >+<!ENTITY blinkSelectedElement.accesskey "B"> >+<!ENTITY borderColor.label "Rahmenfarbe"> >+<!ENTITY borderColor.accesskey "R"> >+<!ENTITY borderWidth.label "Rahmenbreite"> >+<!ENTITY borderWidth.accesskey "a"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Blinkdauer"> >+<!ENTITY blinkDuration.accesskey "d"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Blinkgeschwindigkeit"> >+<!ENTITY blinkSpeed.accesskey "k"> >+<!ENTITY invertColors.label "Farben invertieren"> >+<!ENTITY invertColors.accesskey "F"> >+<!ENTITY installHowTo.label "Die DOM Inspector Sidebar ist momentan nicht installiert. Klicken Sie die 'Installieren'-Schaltfläche, um Sie zu Ihrer Sidebar hinzuzufügen."> >+<!ENTITY install.label "Installieren"> >+<!ENTITY install.accesskey "n"> >+<!ENTITY addNavigatorHooks.label "Kontextmenüs in Navigator hinzufügen"> >+<!ENTITY addNavigatorHooks.accesskey "x"> >diff --git a/suite/extensions/inspector/resources/locale/de/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/de/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM Inspector"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "Seite inspizieren"> >+<!ENTITY inspectPageTaskCmd.accesskey "i"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewer-registry.dtd b/suite/extensions/inspector/resources/locale/de/viewer-registry.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewer-registry.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY dom.label "DOM-Knoten"> >+<!ENTITY stylesheets.label "Stylesheets"> >+<!ENTITY domNode.label "DOM-Knoten"> >+<!ENTITY boxModel.label "Box-Modell"> >+<!ENTITY xblBindings.label "XBL-Bindings"> >+<!ENTITY styleRules.label "CSS-Regeln"> >+<!ENTITY computedStyle.label "Errechnete Styles"> >+<!ENTITY usedFontFaces.label "Benutzte Schriftarten"> >+<!ENTITY jsObject.label "JavaScript-Objekt"> >+<!ENTITY accessibleEvent.label "Accessible-Ereignis"> >+<!ENTITY accessibleObject.label "Accessible-Objekt"> >+<!ENTITY accessibleProps.label "Accessible-Eigenschaften"> >+<!ENTITY accessibleRelations.label "Accessible-Beziehungen"> >+<!ENTITY accessibleEvents.label "Accessible-Ereignisse"> >+<!ENTITY accessibleTree.label "Accessible-Baum"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/de/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/accessibleEvent.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descIsFromUserInput.label "Kommt von Benutzereingaben:"> >+<!ENTITY descState.label "Status:"> >+<!ENTITY descIsEnabled.label "Statue ist aktiviert:"> >+<!ENTITY descStartOffset.label "Start-Offset:"> >+<!ENTITY descLength.label "Länge:"> >+<!ENTITY descIsInserted.label "Text wurde eingefügt:"> >+<!ENTITY descModifiedText.label "Modifizierter Text:"> >+<!ENTITY descCaretOffset.label "Caret-Offset:"> >+<!ENTITY descrHandlerOutput.label "Ereignis-Hanndler-Ausgabe:"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/de/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/accessibleEvents.dtd >@@ -0,0 +1,23 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventList.label "Ereignisliste"> >+<!ENTITY watchedEvents.label "Beobachtete Ereignisse"> >+<!ENTITY handledEvents.label "Behandelte Ereignisse:"> >+<!ENTITY eventType.label "Ereignis-Typ"> >+<!ENTITY eventTime.label "Zeit"> >+<!ENTITY eventTargetNodeName.label "Knoten-Name"> >+<!ENTITY eventTargetNodeID.label "ID"> >+<!ENTITY eventTargetRole.label "Rolle"> >+<!ENTITY eventTargetName.label "Name"> >+<!ENTITY isWatched.label "Wird beobachtet"> >+<!ENTITY isHandlerEnabled.label "Handler aktiviert"> >+<!ENTITY clearEventList.label "Ereignis-Liste leeren"> >+<!ENTITY chooseEventsToWatch.label "Zu beobachtende Ereignisse auswählen"> >+<!ENTITY watchAll.label "All beobachten"> >+<!ENTITY watchNone.label "Keine beobachten"> >+<!ENTITY editHandler.label "Handler bearbeiten"> >+<!ENTITY contextHelp.label "?"> >+<!ENTITY handlerEditorNoEvent.label "Wählen Sie den Ereignistyp, um einen Handler hinzuzufügen."> >+ >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/accessibleEvents.properties b/suite/extensions/inspector/resources/locale/de/viewers/accessibleEvents.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/accessibleEvents.properties >@@ -0,0 +1,22 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+mutationEvents = Mutationsereignisse >+changeEvents = Ereignisse ändern >+notificationEvents = Mitteilungsereignisse >+selectionEvents = Auswahlereignisse >+menuEvents = Menü-Ereignisse >+documentEvents = Dokumentereignisse >+textEvents = Textereignisse >+tableEvents = Tabellenereignisse >+windowEvents = Fensterereignisse >+hyperLinkEvents = Hyperlink-Ereignisse >+hyperTextEvents = Hypertext-Ereignisse >+ >+handlerEditorLabel = "%S" Ereignis-Handler aktivieren. >+ >+role = Rolle >+name = Name >+nodeName = Knoten-Name >+id = ID >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/accessibleEventsHandlerHelpDialog.dtd b/suite/extensions/inspector/resources/locale/de/viewers/accessibleEventsHandlerHelpDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/accessibleEventsHandlerHelpDialog.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY helpDialog.title "Handler-Hilfedialog"> >+ >+ <!ENTITY general.descr "Einen Accessibility-Ereignis-Handler schreiben und anwenden. Wenn das Ereignis auftritt, können Sie es in der Ereignisliste auswählen und das Ergebnis der Handler-Ausführung in der verbundenen Accessible-Ereignis-Ansicht sehen."> >+ <!ENTITY helpers.descr "Die folgenden Objekte und Funktionen können innerhalb des Handler-Editors verwendet werden:"> >+ >+ <!ENTITY event.descr "Accessibility-Ereignis-Objekt"> >+ <!ENTITY target.descr "Accessibility-Zielobjekt"> >+ <!ENTITY accRetrieval.descr "nsIAccessibleRetrieval Accessibility-Service"> >+ <!ENTITY output.descr "gibt die angegebene Zeichenkette aus"> >+ <!ENTITY outputAttrs.descr "gibt die Objekt-Attribute des gegebenen Accessible-Objekts aus"> >+ <!ENTITY outputRole.descr "gibt die Rolle des angegebenen Accessible-Objekts aus"> >+ <!ENTITY outputStates.descr "gibt Zustände des angegebenen Accessible-Objekts aus"> >+ <!ENTITY outputTree.descr "gibt einen Baum für das angegebene Accessible-Objekt aus und hebt Accessibles aus dem angegebenen Array hervor"> >+ <!ENTITY outputDOMAttrs.descr "gibt die DOM-Attribute des gegebenen Accessible-Objekts aus"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/de/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/accessibleProps.dtd >@@ -0,0 +1,29 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descRole.label "Rolle:"> >+<!ENTITY descName.label "Name:"> >+<!ENTITY descDescription.label "Beschreibung:"> >+<!ENTITY descValue.label "Wert:"> >+<!ENTITY descState.label "Status:"> >+<!ENTITY descBounds.label "MaÃe:"> >+<!ENTITY tabAttrs.label "Objektattribute"> >+<!ENTITY colAttrName.label "Name"> >+<!ENTITY colAttrValue.label "Wert"> >+<!ENTITY tabActions.label "Aktionen"> >+<!ENTITY descKeyBindings.label "Tastenzuordnungen:"> >+<!ENTITY descInvoke.label "Aufrufen"> >+<!ENTITY tabTextAttrs.label "Textattribute:"> >+<!ENTITY descDefaultAttrs.label "Standardattribute:"> >+<!ENTITY descStartOffset.label "Start-Offset:"> >+<!ENTITY descEndOffset.label "End-Offset:"> >+<!ENTITY tabTableCell.label "Tabellenzelle"> >+<!ENTITY descColumnIdx.label "Spaltenindex:"> >+<!ENTITY descRowIdx.label "Zeilenindex:"> >+<!ENTITY descColumnExtent.label "Spaltenbreite:"> >+<!ENTITY descRowExtent.label "Zeilenhöhe:"> >+<!ENTITY descIsSelected.label "Ist ausgewählt:"> >+<!ENTITY colProp.label "Eigenschaft"> >+<!ENTITY colRole.label "Rolle"> >+<!ENTITY colName.label "Name"> >+<!ENTITY colNodeName.label "Knoten-Name"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/accessibleProps.properties b/suite/extensions/inspector/resources/locale/de/viewers/accessibleProps.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/accessibleProps.properties >@@ -0,0 +1,5 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+accBounds = x: %S; y: %S; Breite: %S; Höhe: %S; >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/de/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/accessibleRelations.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY relationType.label "Beziehungstyp"> >+<!ENTITY role.label "Rolle"> >+<!ENTITY nodeName.label "Knoten-Name"> >+<!ENTITY relations.label "Beziehungen:"> >+<!ENTITY relationTargets.label "Beziehungs-Ziele:"> >+ >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/de/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/accessibleTree.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "Rolle"> >+<!ENTITY name.label "Name"> >+<!ENTITY nodeName.label "Knoten-Name"> >+ >+<!ENTITY evaluateJS.label "JavaScript evaluieren"> >+ >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/accessibleTreeEvalJSDialog.dtd b/suite/extensions/inspector/resources/locale/de/viewers/accessibleTreeEvalJSDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/accessibleTreeEvalJSDialog.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY evaluateDialog.title "JavaScript-Dialog evaluieren"> >+ >+ <!ENTITY btnEvaluateJS.label "Evaluieren"> >+ <!ENTITY btnEvaluateJS.accesskey "E"> >+ >+ <!ENTITY txtInputArea.label "Eingabebereich ('accessible'-Variable verwenden, um mit dem ausgewählten Accessibility-Element zu arbeiten und die 'output'-Funktion um in das 'Ausgabebereich'-Fenster zu schreiben, 'tree.search(accessible, filterfunc)', um zu suchen, und 'tree.clearSearch()', um die Suchresultate zu leeren):"> >+ <!ENTITY txtInputArea.accesskey "E"> >+ <!ENTITY txtOutputArea.label "Ausgabebereich:"> >+ <!ENTITY txtOutputArea.accesskey "A"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/de/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/boxModel.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Position"> >+<!ENTITY boxDimension.label "Dimensionen"> >+<!ENTITY boxMargin.label "AuÃenabstand"> >+<!ENTITY boxBorder.label "Rahmen"> >+<!ENTITY boxPadding.label "Innenabstand"> >+ >+<!ENTITY xCoord.label "x"> >+<!ENTITY yCoord.label "y"> >+<!ENTITY screenXCoord.label "Bildschirm-X"> >+<!ENTITY screenYCoord.label "Bildschirm-Y"> >+ >+<!ENTITY dimensionWidth.label "Box-Breite"> >+<!ENTITY dimensionHeight.label "Box-Höhe"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/de/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Eigenschaft"> >+<!ENTITY propertyValue.label "Wert"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/de/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/dom.dtd >@@ -0,0 +1,138 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "Knoten suchenâ¦"> >+ <!ENTITY cmdShowFindDialog.accesskey "s"> >+ <!ENTITY cmdShowFindDialog.key "f"> >+ >+ <!ENTITY cmdFindAgain.label "Weitersuchen"> >+ <!ENTITY cmdFindAgain.accesskey "t"> >+ <!ENTITY cmdFindAgain.key "G"> >+ >+ <!ENTITY cmdToggleAnonContent.label "Anonymen Inhalt anzeigen"> >+ <!ENTITY cmdToggleAnonContent.accesskey "A"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "Leere Textknoten anzeigen"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "x"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "Zugängliche Knoten anzeigen"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "Z"> >+ >+ <!ENTITY cmdToggleProcessingInstructions.label "Verarbeitungsbefehle anzeigen"> >+ <!ENTITY cmdToggleProcessingInstructions.accesskey "D"> >+ >+ <!ENTITY cmdToggleAttributes.label "Attribute anzeigen"> >+ <!ENTITY cmdToggleAttributes.accesskey "t"> >+ >+ <!ENTITY cmdSelectByClick.label "Element durch Klick auswählen"> >+ <!ENTITY cmdSelectByClick.accesskey "K"> >+ >+ <!ENTITY ColumnsDialog.title "Spalten"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "Spaltenâ¦"> >+ <!ENTITY cmdShowColumnsDialog.accesskey "S"> >+ >+ <!ENTITY cmdInsertNode.label "Einfügenâ¦"> >+ <!ENTITY cmdDeleteNode.label "Löschen"> >+ <!ENTITY cmdCopyXML.label "XML kopieren"> >+ <!ENTITY cmdCopyXML.accesskey "X"> >+ <!ENTITY cmdBlink.label "Element blinken lassen"> >+ <!ENTITY cmdBlink.accesskey "b"> >+ <!ENTITY cmdInspectBrowser.label "Enthaltenes Dokument inspizieren"> >+ <!ENTITY cmdInspectBrowser.accesskey "E"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "Pseudo-Klassen setzenâ¦"> >+ <!ENTITY cmdShowPseudoClasses.accesskey "P"> >+ >+ <!ENTITY pseudoClasses.title "Pseudo-Klassen"> >+ >+ <!ENTITY findNodes.title "Knoten suchen"> >+ <!ENTITY findNodesById.label "ID"> >+ <!ENTITY findNodesById.accesskey "I"> >+ <!ENTITY findNodesById.accesskey2 "D"> >+ <!ENTITY findNodesByTag.label "Tag"> >+ <!ENTITY findNodesByTag.accesskey "T"> >+ <!ENTITY findNodesByTag.accesskey2 "g"> >+ <!ENTITY findNodesByAttr.label "Attr"> >+ <!ENTITY findNodesByAttr.accesskey "A"> >+ <!ENTITY findNodesByAttr.accesskey2 "r"> >+ <!ENTITY findNodesByAttrValue.label "Wert"> >+ <!ENTITY findNodesByAttrValue.accesskey "W"> >+ <!ENTITY findNodesSearchBy.label "Suchen nach"> >+ <!ENTITY findNodesDirection.label "Richtung"> >+ <!ENTITY findNodesDirectionUp.label "Nach oben"> >+ <!ENTITY findNodesDirectionUp.accesskey "o"> >+ <!ENTITY findNodesDirectionDown.label "Nach unten"> >+ <!ENTITY findNodesDirectionDown.accesskey "u"> >+ <!ENTITY findNodesFind.label "Suchen"> >+ <!ENTITY findNodesCancel.label "Abbrechen"> >+ >+ <!ENTITY mnEditPasteMenu.label "Einfügen"> >+ <!ENTITY mnEditPasteMenu.accesskey "E"> >+ <!ENTITY mnEditPasteBefore.label "Davor"> >+ <!ENTITY mnEditPasteBefore.accesskey "v"> >+ <!ENTITY mnEditPasteAfter.label "Danach"> >+ <!ENTITY mnEditPasteAfter.accesskey "D"> >+ <!ENTITY mnEditPasteReplace.label "Anstatt (Ersetzen)"> >+ <!ENTITY mnEditPasteReplace.accesskey "A"> >+ <!ENTITY mnEditPasteFirstChild.label "Als erstes "Kind""> >+ <!ENTITY mnEditPasteFirstChild.accesskey "e"> >+ <!ENTITY mnEditPasteLastChild.label "Als letztes "Kind""> >+ <!ENTITY mnEditPasteLastChild.accesskey "z"> >+ <!ENTITY mnEditPasteAsParent.label "Darüberliegend"> >+ <!ENTITY mnEditPasteAsParent.accesskey "b"> >+ >+ <!ENTITY mnEditInsertMenu.label "Hinzufügen"> >+ <!ENTITY mnEditInsertMenu.accesskey "H"> >+ <!ENTITY mnEditInsertAfter.label "Danach"> >+ <!ENTITY mnEditInsertAfter.accesskey "D"> >+ <!ENTITY mnEditInsertBefore.label "Davor"> >+ <!ENTITY mnEditInsertBefore.accesskey "v"> >+ <!ENTITY mnEditInsertFirstChild.label "Als erstes "Kind""> >+ <!ENTITY mnEditInsertFirstChild.accesskey "e"> >+ <!ENTITY mnEditInsertLastChild.label "Als letztes "Kind""> >+ <!ENTITY mnEditInsertLastChild.accesskey "z"> >+ >+ <!ENTITY insertNode.title "Knoten einfügen"> >+ <!ENTITY nodeType.label "Knoten-Typ:"> >+ <!ENTITY nodeType.accesskey "T"> >+ <!ENTITY nodeType.element.label "Element"> >+ <!ENTITY nodeType.text.label "Text"> >+ <!ENTITY namespaceURI.label "Namespace-URI:"> >+ <!ENTITY namespaceURI.accesskey "U"> >+ <!ENTITY tagName.label "Tag-Name:"> >+ <!ENTITY tagName.accesskey "N"> >+ <!ENTITY nodeValue.label "Knoten-Wert:"> >+ <!ENTITY nodeValue.accesskey "W"> >+ >+ <!ENTITY namespaceTitle.null.label "null"> >+ <!ENTITY namespaceTitle.default.label "Dokumentstandard"> >+ <!ENTITY namespaceTitle.custom.label "Benutzerdefiniert"> >+ >+ <!-- LOCALIZATION NOTE: The following entities are names of W3C >+ specifications. Please consult >+ http://www.w3.org/Consortium/Translation/ for appropriate translation >+ or leave unchanged. --> >+ <!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+ <!ENTITY namespaceTitle.XML.label "XML"> >+ <!ENTITY namespaceTitle.XHTML.label "XHTML"> >+ <!ENTITY namespaceTitle.XLink.label "XLink"> >+ <!ENTITY namespaceTitle.XSLT.label "XSLT"> >+ <!ENTITY namespaceTitle.XBL.label "XBL"> >+ <!ENTITY namespaceTitle.MathML.label "MathML"> >+ <!ENTITY namespaceTitle.RDF.label "RDF"> >+ <!ENTITY namespaceTitle.XUL.label "XUL"> >+ <!ENTITY namespaceTitle.SVG.label "SVG"> >+ <!ENTITY namespaceTitle.XMLEvents.label "XML-Ereignisse"> >+ <!ENTITY namespaceTitle.WAIRoles.label "WAI-Rollen"> >+ <!ENTITY namespaceTitle.WAIProperties.label "WAI-Eigenschaften"> >+ >+ <!-- LOCALIZATION NOTE: Localizers can choose not to translate the following >+ access keys. For a discussion about the pros and cons of such a >+ decision, see https://bugzilla.mozilla.org/show_bug.cgi?id=398704, >+ comments 1 and 2. --> >+ <!ENTITY cbxStateHover.accesskey "h"> >+ <!ENTITY cbxStateActive.accesskey "a"> >+ <!ENTITY cbxStateFocus.accesskey "f"> >+ >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/de/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/domNode.dtd >@@ -0,0 +1,31 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Knoten-Name:"> >+<!ENTITY localName.label "Lokaler Name:"> >+<!ENTITY namespaceURI.label "Namespace-URI:"> >+<!ENTITY nodeType.label "Knoten-Typ:"> >+<!ENTITY nodeValue.label "Knoten-Wert:"> >+<!ENTITY grpAttr.label "Attribute"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "Dokumentstandard"> >+<!ENTITY namespaceTitle.custom.label "Benutzerdefiniert"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "XML-Ereignisse"> >+<!ENTITY namespaceTitle.WAIRoles.label "WAI-Rollen"> >+<!ENTITY namespaceTitle.WAIProperties.label "WAI-Eigenschaften"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/de/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Wert kopieren"> >+<!ENTITY jsEval.label "JavaScript auswertenâ¦"> >+ >+<!ENTITY jsProperty.label "Eigenschaft"> >+<!ENTITY jsValue.label "Wert"> >+ >+<!ENTITY evaluateDialog.title "Ausdruck auswerten"> >+<!ENTITY jsEval.desc "Geben Sie einen JavaScript-Ausdruck an. Die Variable "target" ist die momentan ausgewählte Eigenschaft."> >+<!ENTITY jsExecute.label "Ausführen"> >+<!ENTITY inspectReturn.label "Rückgabe inspizieren in"> >+<!ENTITY inspectReturnNew.label "Neuem Fenster"> >+<!ENTITY inspectReturnExisting.label "Aktuellem Fenster"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/de/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/styleRules.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "CSS-Regeln suchenâ¦"> >+<!ENTITY miFindCSSRules.accesskey "C"> >+ >+<!ENTITY newRules.label "Neu"> >+<!ENTITY deleteSelectedRules.label "Löschen"> >+<!ENTITY disableSelectedRules.label "Deaktivieren"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "!important ein/ausschalten"> >+ >+<!ENTITY styleRule.label "Regel"> >+<!ENTITY styleRuleURI.label "Datei"> >+<!ENTITY styleRuleLineNumber.label "Zeile"> >+ >+<!ENTITY styleRulePropPriority.label "Priorität"> >+<!ENTITY styleRulePropName.label "Eigenschaft"> >+<!ENTITY styleRulePropValue.label "Wert"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/de/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Stylesheet"> >+<!ENTITY sheetRules.label "Regeln"> >+ >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/usedFontFaces.dtd b/suite/extensions/inspector/resources/locale/de/viewers/usedFontFaces.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/usedFontFaces.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY fontName.label "Schriftname"> >+<!ENTITY cssFamilyName.label "Familienname"> >+<!ENTITY uri.label "URI"> >+<!ENTITY localName.label "Lokaler Name"> >+<!ENTITY format.label "Format"> >diff --git a/suite/extensions/inspector/resources/locale/de/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/de/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/de/viewers/xblBindings.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "Inhalte"> >+<!ENTITY bindingMethods.label "Methoden"> >+<!ENTITY bindingMethodName.label "Methodenname"> >+<!ENTITY bindingProperties.label "Eigenschaften"> >+<!ENTITY bindingGetter.label "Getter"> >+<!ENTITY bindingSetter.label "Setter"> >+<!ENTITY bindingProperty.label "Eigenschaft"> >+<!ENTITY bindingHandlers.label "Handler"> >+<!ENTITY bindingHandlerEvent.label "Ereignis"> >+<!ENTITY bindingHandlerPhase.label "Phase"> >+<!ENTITY bindingResources.label "Resourcen"> >+<!ENTITY bindingResourceType.label "Typ"> >+<!ENTITY bindingResourceSrc.label "Quelle"> >+<!ENTITY bindingSourceCode.label "Quellcode"> >diff --git a/suite/extensions/inspector/resources/locale/el/editing.dtd b/suite/extensions/inspector/resources/locale/el/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/editing.dtd >@@ -0,0 +1,27 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "ÎναίÏεÏη"> >+<!ENTITY mnEditUndo.accesskey "Î"> >+<!ENTITY mnEditRedo.label "ÎκÏÏÏÏη αναίÏεÏηÏ"> >+<!ENTITY mnEditRedo.accesskey "κ"> >+<!ENTITY mnEditCut.label "ÎÏοκοÏή"> >+<!ENTITY mnEditCut.accesskey "Ï"> >+<!ENTITY mnEditCopy.label "ÎνÏιγÏαÏή"> >+<!ENTITY mnEditCopy.accesskey "ν"> >+<!ENTITY mnEditPaste.label "ÎÏικÏλληÏη"> >+<!ENTITY mnEditPaste.accesskey "Î"> >+<!ENTITY mnEditInsert.label "ÎιÏαγÏγή"> >+<!ENTITY mnEditInsert.accesskey "Ï"> >+<!ENTITY mnEditEdit.label "ÎÏεξεÏγαÏία"> >+<!ENTITY mnEditEdit.accesskey "Î"> >+<!ENTITY mnEditDelete.label "ÎιαγÏαÏή"> >+<!ENTITY mnEditDelete.accesskey "Î"> >+<!ENTITY mnEditInspectInNewWindow.label "ÎÏιθεÏÏηÏη Ïε νÎο ÏαÏÎ¬Î¸Ï Ïο"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "θ"> >+<!ENTITY mnEditInspectInNewWindow.key "I"> >+<!ENTITY mnEditCopyFileURI.label "ÎνÏιγÏαÏή URI"> >+<!ENTITY mnEditCopyFileURI.accesskey "U"> >+<!ENTITY mnEditViewFileURI.label "Î Ïοβολή αÏÏÎµÎ¯Î¿Ï "> >+<!ENTITY mnEditViewFileURI.accesskey "Î "> >diff --git a/suite/extensions/inspector/resources/locale/el/inspector.dtd b/suite/extensions/inspector/resources/locale/el/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/inspector.dtd >@@ -0,0 +1,67 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "ÎÏιθεÏÏηÏÎ®Ï DOM"> >+ >+<!ENTITY thDOMNodes.label "ÎÏμβοι DOM"> >+<!ENTITY btnInspect.label "ÎÏιθεÏÏηÏη"> >+<!ENTITY btnInspect.accesskey "θ"> >+<!ENTITY bxDocPanel.title "ÎγγÏαÏο"> >+<!ENTITY bxObjectPanel.title "ÎνÏικείμενο"> >+<!ENTITY btnSelecting.tooltip "ÎÏÏεÏη κÏÎ¼Î²Î¿Ï Î³Î¹Î± εÏιθεÏÏηÏη κάνονÏÎ±Ï ÎºÎ»Î¹Îº Ïε Î±Ï ÏÏν"> >+<!ENTITY btnFind.tooltip "ÎÏÏεÏη κÏÎ¼Î²Î¿Ï Î³Î¹Î± εÏιθεÏÏηÏη καÏά αναγνÏÏιÏÏÎ¹ÎºÏ (id), εÏικÎÏα ή ÏαÏακÏηÏιÏÏικÏ"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "ÎÏÏείο"> >+<!ENTITY mnFile.accesskey "Î"> >+ <!ENTITY mnInspectContentDocument.label "ÎÏιθεÏÏηÏη εγγÏάÏÎ¿Ï ÏεÏιεÏÏÎ¼ÎµÎ½Î¿Ï "> >+ <!ENTITY mnInspectContentDocument.accesskey "Ï"> >+ <!ENTITY mnInspectChromeDocument.label "ÎÏιθεÏÏηÏη εγγÏάÏÎ¿Ï Chrome"> >+ <!ENTITY mnInspectChromeDocument.accesskey "h"> >+ <!ENTITY mnInspectApplicationAccessible.label "ÎÏιθεÏÏηÏη ÏÏοÏβάÏÎ¹Î¼Î¿Ï Î±Î½ÏικειμÎÎ½Î¿Ï ÎµÏαÏμογήÏ"> >+ <!ENTITY mnInspectApplicationAccessible.accesskey "θ"> >+ <!ENTITY cmdEnterLocation.label "ÎÏιθεÏÏηÏη ενÏÏ URL"> >+ <!ENTITY cmdEnterLocation.accesskey "U"> >+ <!ENTITY cmdEnterLocation.key "L"> >+ <!ENTITY cmdEnterLocation.key2 "D"> >+ <!ENTITY cmdSave.label "ÎÏÎ¿Î¸Î®ÎºÎµÏ Ïη DOM ÏÏâ¦"> >+ <!ENTITY cmdSave.accesskey "Î"> >+ <!ENTITY cmdClose.label "ÎλείÏιμο"> >+ <!ENTITY cmdClose.accesskey "Î"> >+ <!ENTITY cmdExit.label "ÎξοδοÏ"> >+ <!ENTITY cmdExit.accesskey "δ"> >+ >+<!ENTITY mnEdit.label "ÎÏεξεÏγαÏία"> >+<!ENTITY mnEdit.accesskey "Î"> >+ <!ENTITY cmdUndo.label "ÎναίÏεÏη"> >+ <!ENTITY cmdUndo.accesskey "Î"> >+ <!ENTITY cmdRedo.label "ÎκÏÏÏÏη αναίÏεÏηÏ"> >+ <!ENTITY cmdRedo.accesskey "κ"> >+ <!ENTITY cmdCut.label "ÎÏοκοÏή"> >+ <!ENTITY cmdCut.accesskey "Ï"> >+ <!ENTITY cmdCopy.label "ÎνÏιγÏαÏή"> >+ <!ENTITY cmdCopy.accesskey "ν"> >+ <!ENTITY cmdPaste.label "ÎÏικÏλληÏη"> >+ <!ENTITY cmdPaste.accesskey "Î"> >+ <!ENTITY cmdDelete.label "ÎιαγÏαÏή"> >+ <!ENTITY cmdDelete.accesskey "Î"> >+ >+<!ENTITY mnView.label "Î Ïοβολή"> >+<!ENTITY mnView.accesskey "Î "> >+ <!ENTITY mnDocViewerList.label "Τμήμα ÏÏÎ¿Î²Î¿Î»Î®Ï ÎµÎ³Î³ÏάÏÎ¿Ï "> >+ <!ENTITY mnDocViewerList.accesskey "ε"> >+ <!ENTITY mnObjectViewerList.label "Τμήμα ÏÏÎ¿Î²Î¿Î»Î®Ï Î±Î½ÏικειμÎÎ½Î¿Ï "> >+ <!ENTITY mnObjectViewerList.accesskey "ν"> >+ <!ENTITY cmdToggleDocument.label "Î Ïοβολή εγγÏάÏÎ¿Ï Ïε ÏαÏÎ¬Î¸Ï Ïο ÏεÏιήγηÏηÏ"> >+ <!ENTITY cmdToggleDocument.accesskey "θ"> >+ <!ENTITY cmdToggleSearch.label "ÎÏοÏελÎÏμαÏα αναζήÏηÏηÏ"> >+ <!ENTITY cmdFlashOnSelect.label "ÎναλαμÏÎÏ ÎµÏιλεγμÎÎ½Î¿Ï ÏÏοιÏÎµÎ¯Î¿Ï "> >+ <!ENTITY cmdFlashOnSelect.accesskey "λ"> >+ >+<!ENTITY browserPanel.label "ΠεÏιηγηÏήÏ"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/el/inspector.properties b/suite/extensions/inspector/resources/locale/el/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/inspector.properties >@@ -0,0 +1,37 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+applicationAccesible.title = Î ÏοÏβάÏιμο ανÏικείμενο εÏαÏÎ¼Î¿Î³Î®Ï >+inspectWindow.noDocuments.message = (ÎανÎνα ÎγγÏαÏο) >+styleRuleNewProperty.title = ÎÎÎ¿Ï ÎºÎ±Î½ÏÎ½Î±Ï ÏεÏνοÏÏοÏÎ¯Î±Ï >+styleRuleEditProperty.title = ÎÏεξεÏγαÏία κανÏνα ÏεÏνοÏÏοÏÎ¯Î±Ï >+styleRulePropertyValue.message = ÎιÏάγεÏε Ïην Ïιμή ÏÎ·Ï Î¹Î´Î¹ÏÏηÏαÏ: >+styleRulePropertyName.message = ÎιÏάγεÏε Ïο Ïνομα ÏÎ·Ï Î¹Î´Î¹ÏÏηÏαÏ: >+sidebar.title = ÎÏιθεÏÏηÏÎ®Ï DOM >+sidebarInstalled = Î ÏÎ»ÎµÏ Ïική ÏÏήλη ÎÏει εγκαÏαÏÏαθεί. >+newAttribute.title = ÎÎο ÏαÏακÏηÏιÏÏÎ¹ÎºÏ >+editAttribute.title = ÎÏεξεÏγαÏία ÏαÏακÏηÏιÏÏÎ¹ÎºÎ¿Ï >+findNodesDocumentEnd.message = ΠαναζήÏηÏη ÎÏθαÏε ÏÏο ÏÎÎ»Î¿Ï ÏÎ¿Ï ÎµÎ³Î³ÏάÏÎ¿Ï . >+findNodesDocumentEnd.title = ÎÏÏεÏη κÏμβÏν >+# LOCALIZATION NOTE (root.title) label displayed for the tree head of the >+# JavaScript Object tree >+root.title = ÎÎμα >+ >+irrecoverableSubtree.message = ÎÏιÏμÎνοι αÏÏ ÏÎ¿Ï Ï ÎµÏιλεγμÎÎ½Î¿Ï Ï ÎºÏÎ¼Î²Î¿Ï Ï Î±ÏοÏελοÏν μÎÏÎ¿Ï ÎµÎ½ÏÏ Î±Î½ÏÎ½Ï Î¼Î¿Ï Ï ÏοδÎνÏÏÎ¿Ï Ïο οÏοίο θα καÏαÏÏÏαÏεί. ΠδιαγÏαÏή Î±Ï ÏÏν ÏÏν κÏμβÏν δεν μÏοÏεί να αναιÏεθεί. ÎÎλεÏε να διαγÏάÏεÏε ÏÎ¿Ï Ï ÎµÏιλεγμÎÎ½Î¿Ï Ï ÎºÏÎ¼Î²Î¿Ï Ï; >+irrecoverableSubtree.title = ÎιαγÏαÏή ανÏÎ½Ï Î¼Î¿Ï Ï ÏοδÎνÏÏÎ¿Ï >+ >+# The following items correspond to the node types defined by the W3C DOM Core >+# specification. >+1 = ΣÏοιÏείο >+2 = ΧαÏακÏηÏιÏÏÎ¹ÎºÏ >+3 = Îείμενο >+4 = ÎνÏÏηÏα CDATA >+5 = ÎναÏοÏά ονÏÏÏηÏÎ±Ï >+6 = ÎνÏÏÏηÏα >+7 = Îδηγία εÏεξεÏγαÏÎ¯Î±Ï >+8 = ΣÏÏλιο >+9 = ÎγγÏαÏο >+10 = ΤÏÏÎ¿Ï ÎµÎ³Î³ÏάÏÎ¿Ï >+11 = ÎÏÏÏÏαÏμα εγγÏάÏÎ¿Ï >+12 = ΣημειογÏαÏία >diff --git a/suite/extensions/inspector/resources/locale/el/prefs.dtd b/suite/extensions/inspector/resources/locale/el/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/prefs.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "ÎÏιθεÏÏηÏÎ®Ï DOM"> >+<!ENTITY Sidebar.label "Î Î»ÎµÏ Ïική ÏÏήλη"> >+<!ENTITY elementBlinking.label "ÎναλαμÏÎÏ ÏÏοιÏÎµÎ¯Î¿Ï "> >+<!ENTITY blinkSelectedElement.label "ÎναλαμÏÎÏ ÎµÏιλεγμÎÎ½Î¿Ï ÏÏοιÏÎµÎ¯Î¿Ï "> >+<!ENTITY blinkSelectedElement.accesskey "λ"> >+<!ENTITY borderColor.label "ΧÏÏμα ÏεÏιγÏάμμαÏοÏ"> >+<!ENTITY borderColor.accesskey "Χ"> >+<!ENTITY borderWidth.label "ΠάÏÎ¿Ï ÏεÏιγÏάμμαÏοÏ"> >+<!ENTITY borderWidth.accesskey "Î "> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "ÎιάÏκεια αναλαμÏÏν"> >+<!ENTITY blinkDuration.accesskey "Î"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "ΤαÏÏÏηÏα αναλαμÏÏν"> >+<!ENTITY blinkSpeed.accesskey "Τ"> >+<!ENTITY invertColors.label "ÎνÏιÏÏÏοÏή ÏÏÏμάÏÏν"> >+<!ENTITY invertColors.accesskey "Î"> >+<!ENTITY installHowTo.label "Î ÏÎ»ÎµÏ Ïική ÏÏήλη ÏÎ¿Ï ÎÏιθεÏÏηÏή DOM δεν είναι εγκαÏεÏÏημÎνη Î±Ï Ïήν Ïη ÏÏιγμή. ΠαÏήÏÏε Ïο ÎºÎ¿Ï Î¼Ïί «ÎγκαÏάÏÏαÏη» για να Ïην ÏÏοÏθÎÏεÏε ÏÏην ÏÎ»ÎµÏ Ïική ÏÏήλη ÏαÏ."> >+<!ENTITY install.label "ÎγκαÏάÏÏαÏη"> >+<!ENTITY install.accesskey "Î"> >+<!ENTITY addNavigatorHooks.label "Î ÏοÏθήκη Î¼ÎµÎ½Î¿Ï ÏεÏιεÏομÎÎ½Î¿Ï ÏÏην ÏεÏιήγηÏη"> >+<!ENTITY addNavigatorHooks.accesskey "θ"> >diff --git a/suite/extensions/inspector/resources/locale/el/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/el/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "ÎÏιθεÏÏηÏÎ®Ï DOM"> >+<!ENTITY inspectorTaskCmd.commandkey "ι"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "Ï"> >+<!ENTITY inspectorTaskCmd.accesskey "Î"> >+ >+<!ENTITY inspectPageTaskCmd.label "ÎÏιθεÏÏηÏη ÏελίδαÏ"> >+<!ENTITY inspectPageTaskCmd.accesskey "θ"> >diff --git a/suite/extensions/inspector/resources/locale/el/viewer-registry.dtd b/suite/extensions/inspector/resources/locale/el/viewer-registry.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewer-registry.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY dom.label "ÎÏμβοι DOM"> >+<!ENTITY stylesheets.label "ΦÏλλα ÏεÏνοÏÏοÏίαÏ"> >+<!ENTITY domNode.label "ÎÏÎ¼Î²Î¿Ï DOM"> >+<!ENTITY boxModel.label "ÎονÏÎλο ÏλαιÏÎ¯Î¿Ï "> >+<!ENTITY xblBindings.label "ÎιαδÎÏÎµÎ¹Ï XBL"> >+<!ENTITY styleRules.label "ÎανÏÎ½ÎµÏ CSS"> >+<!ENTITY computedStyle.label "Î¥ÏολογιÏμÎνη ÏεÏνοÏÏοÏία"> >+<!ENTITY usedFontFaces.label "ΧÏηÏιμοÏοιημÎÎ½ÎµÏ Î³ÏαμμαÏοÏειÏÎÏ"> >+<!ENTITY jsObject.label "ÎνÏικείμενο JavaScript"> >+<!ENTITY accessibleEvent.label "Î ÏοÏβάÏιμο ÏÏ Î¼Î²Î¬Î½"> >+<!ENTITY accessibleObject.label "Î ÏοÏβάÏιμο ανÏικείμενο"> >+<!ENTITY accessibleProps.label "Î ÏοÏβάÏÎ¹Î¼ÎµÏ Î¹Î´Î¹ÏÏηÏεÏ"> >+<!ENTITY accessibleRelations.label "Î ÏοÏβάÏÎ¹Î¼ÎµÏ ÏÏÎÏειÏ"> >+<!ENTITY accessibleEvents.label "Î ÏοÏβάÏιμα ÏÏ Î¼Î²Î¬Î½Ïα"> >+<!ENTITY accessibleTree.label "Î ÏοÏβάÏιμο δÎνÏÏο"> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/el/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/accessibleEvent.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descIsFromUserInput.label "Îίναι αÏÏ ÎµÎ¹ÏαγÏγή ÏÏήÏÏη: "> >+<!ENTITY descState.label "ÎαÏάÏÏαÏη: "> >+<!ENTITY descIsEnabled.label "Îίναι η καÏάÏÏαÏη ενεÏγοÏοιημÎνη: "> >+<!ENTITY descStartOffset.label "ÎεÏαÏÏÏιÏη αÏÏήÏ: "> >+<!ENTITY descLength.label "ÎήκοÏ: "> >+<!ENTITY descIsInserted.label "Îίναι Ïο κείμενο ειÏηγμÎνο: "> >+<!ENTITY descModifiedText.label "ΤÏοÏοÏοιημÎνο κείμενο: "> >+<!ENTITY descCaretOffset.label "ÎεÏαÏÏÏιÏη δÏομÎα: "> >+<!ENTITY descrHandlerOutput.label "ÎÎ¾Î¿Î´Î¿Ï ÏειÏιÏÏή ÏÏ Î¼Î²Î¬Î½ÏοÏ: "> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/el/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/accessibleEvents.dtd >@@ -0,0 +1,23 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventList.label "ÎίÏÏα ÏÏ Î¼Î²Î¬Î½ÏÏν"> >+<!ENTITY watchedEvents.label "ΠαÏÎ±ÎºÎ¿Î»Î¿Ï Î¸Î·Î¼Îνα ÏÏ Î¼Î²Î¬Î½Ïα"> >+<!ENTITY handledEvents.label "ÎιαÏειÏιÏμÎνα ÏÏ Î¼Î²Î¬Î½Ïα:"> >+<!ENTITY eventType.label "ΤÏÏÎ¿Ï ÏÏ Î¼Î²Î¬Î½ÏοÏ"> >+<!ENTITY eventTime.label "ÎÏα"> >+<!ENTITY eventTargetNodeName.label "Îνομα κÏÎ¼Î²Î¿Ï "> >+<!ENTITY eventTargetNodeID.label "ID"> >+<!ENTITY eventTargetRole.label "ΡÏλοÏ"> >+<!ENTITY eventTargetName.label "Îνομα"> >+<!ENTITY isWatched.label "ΠαÏÎ±ÎºÎ¿Î»Î¿Ï Î¸ÎµÎ¯Ïαι"> >+<!ENTITY isHandlerEnabled.label "ÎνεÏγοÏοιημÎÎ½Î¿Ï ÏειÏιÏÏήÏ"> >+<!ENTITY clearEventList.label "ÎκκαθάÏιÏη λίÏÏÎ±Ï ÏÏ Î¼Î²Î¬Î½ÏÏν"> >+<!ENTITY chooseEventsToWatch.label "ÎÏιλογή ÏÏ Î¼Î²Î¬Î½ÏÏν ÏÏÎ¿Ï ÏαÏακολοÏθηÏη"> >+<!ENTITY watchAll.label "ΠαÏακολοÏθηÏη ÏλÏν"> >+<!ENTITY watchNone.label "ΠαÏακολοÏθηÏη κανενÏÏ"> >+<!ENTITY editHandler.label "ÎÏεξεÏγαÏία ÏειÏιÏÏή"> >+<!ENTITY contextHelp.label "Îοήθεια"> >+<!ENTITY handlerEditorNoEvent.label "ÎÏιλÎξÏε ÏÏÏο ÏÏ Î¼Î²Î¬Î½ÏÎ¿Ï Î³Î¹Î± να ÏÏοÏθÎÏεÏε Îνα ÏειÏιÏÏή"> >+ >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/accessibleEvents.properties b/suite/extensions/inspector/resources/locale/el/viewers/accessibleEvents.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/accessibleEvents.properties >@@ -0,0 +1,22 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+mutationEvents = ÏÏ Î¼Î²Î¬Î½Ïα μεÏÎ±Î²Î¿Î»Î®Ï >+changeEvents = ÏÏ Î¼Î²Î¬Î½Ïα Î±Î»Î»Î±Î³Î®Ï >+notificationEvents = ÏÏ Î¼Î²Î¬Î½Ïα ειδοÏοίηÏÎ·Ï >+selectionEvents = ÏÏ Î¼Î²Î¬Î½Ïα εÏÎ¹Î»Î¿Î³Î®Ï >+menuEvents = ÏÏ Î¼Î²Î¬Î½Ïα Î¼ÎµÎ½Î¿Ï >+documentEvents = ÏÏ Î¼Î²Î¬Î½Ïα εγγÏάÏÎ¿Ï >+textEvents = ÏÏ Î¼Î²Î¬Î½Ïα κειμÎÎ½Î¿Ï >+tableEvents = ÏÏ Î¼Î²Î¬Î½Ïα Ïίνακα >+windowEvents = ÏÏ Î¼Î²Î¬Î½Ïα ÏαÏαθÏÏÎ¿Ï >+hyperLinkEvents = ÏÏ Î¼Î²Î¬Î½Ïα Ï ÏεÏ-ÏÏ Î½Î´ÎÏÎ¼Î¿Ï >+hyperTextEvents = ÏÏ Î¼Î²Î¬Î½Ïα Ï ÏεÏ-κειμÎÎ½Î¿Ï >+ >+handlerEditorLabel = ÎνεÏγοÏοίηÏη ÏειÏιÏÏή ÏÏ Î¼Î²Î¬Î½ÏÎ¿Ï "%S" >+ >+role = ΡÏÎ»Î¿Ï >+name = Îνομα >+nodeName = Îνομα κÏÎ¼Î²Î¿Ï >+id = ID >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/accessibleEventsHandlerHelpDialog.dtd b/suite/extensions/inspector/resources/locale/el/viewers/accessibleEventsHandlerHelpDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/accessibleEventsHandlerHelpDialog.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY helpDialog.title "ÎÎ¹Î¬Î»Î¿Î³Î¿Ï Î²Î¿Î®Î¸ÎµÎ¹Î±Ï ÏειÏιÏÏÏν"> >+ >+ <!ENTITY general.descr "Î£Ï Î³Î³ÏάÏÏε και ÏÏοÏαÏÏήÏÏε Îνα ÏειÏιÏÏή ÏÏ Î¼Î²Î¬Î½ÏÎ¿Ï ÏÏοÏβαÏιμÏÏηÏαÏ. ÎÏαν ÏÏοκÏÏει Ïο ÏÏ Î¼Î²Î¬Î½, μÏοÏείÏε να Ïο εÏιλÎξεÏε αÏÏ Ïη λίÏÏα ÏÏ Î¼Î²Î¬Î½ÏÏν και να δείÏε Ïο αÏοÏÎλεÏμα ÏÎ·Ï ÎµÎºÏίμηÏÎ·Ï ÏÎ¿Ï ÏειÏιÏÏή ÏÏο ÏÏ Î½Î´ÎµÎ´ÎµÎ¼Îνο Ïμήμα ÏÏÎ¿Î²Î¿Î»Î®Ï ÏÏοÏβάÏιμÏν ÏÏ Î¼Î²Î¬Î½ÏÏν."> >+ <!ENTITY helpers.descr "Τα ακÏÎ»Î¿Ï Î¸Î± ανÏικείμενα και ÏÏ Î½Î±ÏÏήÏÎµÎ¹Ï Î¼ÏοÏοÏν να ÏÏηÏιμοÏοιηθοÏν ÏÏον εÏεξεÏγαÏÏή ÏειÏιÏÏή:"> >+ >+ <!ENTITY event.descr "ανÏικείμενο ÏÏ Î¼Î²Î¬Î½ÏÎ¿Ï ÏÏοÏβαÏιμÏÏηÏαÏ"> >+ <!ENTITY target.descr "ανÏικείμενο ÏÏÏÏÎ¿Ï ÏÏοÏβαÏιμÏÏηÏαÏ"> >+ <!ENTITY accRetrieval.descr "Ï ÏηÏεÏία ÏÏοÏβαÏιμÏÏηÏÎ±Ï nsIAccessibleRetrieval"> >+ <!ENTITY output.descr "εκÏÏ ÏÏνει Ïη δεδομÎνη ÏÏ Î¼Î²Î¿Î»Î¿ÏειÏά"> >+ <!ENTITY outputAttrs.descr "εκÏÏ ÏÏνει Ïα ÏαÏακÏηÏιÏÏικά ÏÎ¿Ï Î´ÎµÎ´Î¿Î¼ÎÎ½Î¿Ï ÏÏοÏβάÏÎ¹Î¼Î¿Ï Î±Î½ÏικειμÎÎ½Î¿Ï "> >+ <!ENTITY outputRole.descr "εκÏÏ ÏÏνει Ïο ÏÏλο ÏÎ¿Ï Î´ÎµÎ´Î¿Î¼ÎÎ½Î¿Ï ÏÏοÏβάÏÎ¹Î¼Î¿Ï Î±Î½ÏικειμÎÎ½Î¿Ï "> >+ <!ENTITY outputStates.descr "εκÏÏ ÏÏνει ÏÎ¹Ï ÎºÎ±ÏαÏÏάÏÎµÎ¹Ï ÏÎ¿Ï Î´ÎµÎ´Î¿Î¼ÎÎ½Î¿Ï ÏÏοÏβάÏÎ¹Î¼Î¿Ï Î±Î½ÏικειμÎÎ½Î¿Ï "> >+ <!ENTITY outputTree.descr "εκÏÏ ÏÏνει δÎνÏÏο για Ïο δεδομÎνο ÏÏοÏβάÏιμο ανÏικείμενο, εÏιÏημαίνονÏÎ±Ï Ïα ÏÏοÏβάÏιμα ανÏικείμενα ÏÎ·Ï Î´ÎµÎ´Î¿Î¼ÎÎ½Î·Ï ÏÏ ÏÏοιÏίαÏ"> >+ <!ENTITY outputDOMAttrs.descr "εκÏÏ ÏÏνει Ïα ÏαÏακÏηÏιÏÏικά DOM ÏÎ¿Ï Î´ÎµÎ´Î¿Î¼ÎÎ½Î¿Ï ÏÏοÏβάÏÎ¹Î¼Î¿Ï Î±Î½ÏικειμÎÎ½Î¿Ï "> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/el/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/accessibleProps.dtd >@@ -0,0 +1,29 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descRole.label "ΡÏλοÏ:"> >+<!ENTITY descName.label "Îνομα:"> >+<!ENTITY descDescription.label "ΠεÏιγÏαÏή:"> >+<!ENTITY descValue.label "Τιμή:"> >+<!ENTITY descState.label "ÎαÏάÏÏαÏη:"> >+<!ENTITY descBounds.label "ÎÏια:"> >+<!ENTITY tabAttrs.label "ΧαÏακÏηÏιÏÏικά ανÏικειμÎÎ½Î¿Ï "> >+<!ENTITY colAttrName.label "Îνομα"> >+<!ENTITY colAttrValue.label "Τιμή"> >+<!ENTITY tabActions.label "ÎνÎÏγειεÏ"> >+<!ENTITY descKeyBindings.label "Î£Ï Î½Î´Ï Î±Ïμοί ÏλήκÏÏÏν:"> >+<!ENTITY descInvoke.label "ÎÏίκληÏη"> >+<!ENTITY tabTextAttrs.label "ΧαÏακÏηÏιÏÏικά κειμÎÎ½Î¿Ï "> >+<!ENTITY descDefaultAttrs.label "Î ÏοεÏιλεγμÎνα ÏαÏακÏηÏιÏÏικά:"> >+<!ENTITY descStartOffset.label "ÎεÏαÏÏÏιÏη αÏÏήÏ:"> >+<!ENTITY descEndOffset.label "ÎεÏαÏÏÏιÏη ÏÎÎ»Î¿Ï Ï:"> >+<!ENTITY tabTableCell.label "Îελί Ïίνακα"> >+<!ENTITY descColumnIdx.label "ÎÏ ÏεÏήÏιο ÏÏήληÏ:"> >+<!ENTITY descRowIdx.label "ÎÏ ÏεÏήÏιο ÏειÏάÏ:"> >+<!ENTITY descColumnExtent.label "ÎκÏαÏη ÏÏήληÏ:"> >+<!ENTITY descRowExtent.label "ÎκÏαÏη ÏειÏάÏ:"> >+<!ENTITY descIsSelected.label "Îίναι εÏιλεγμÎνο:"> >+<!ENTITY colProp.label "ÎδιÏÏηÏα"> >+<!ENTITY colRole.label "ΡÏλοÏ"> >+<!ENTITY colName.label "Îνομα"> >+<!ENTITY colNodeName.label "Îνομα κÏÎ¼Î²Î¿Ï "> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/accessibleProps.properties b/suite/extensions/inspector/resources/locale/el/viewers/accessibleProps.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/accessibleProps.properties >@@ -0,0 +1,5 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+accBounds = Ï: %S; Ï: %S; ÏλάÏοÏ: %S; ÏÏοÏ: %S; >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/el/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/accessibleRelations.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY relationType.label "ΤÏÏÎ¿Ï ÏÏÎÏηÏ"> >+<!ENTITY role.label "ΡÏλοÏ"> >+<!ENTITY nodeName.label "Îνομα κÏÎ¼Î²Î¿Ï "> >+<!ENTITY relations.label "ΣÏÎÏειÏ: "> >+<!ENTITY relationTargets.label "ΣÏÏÏοι ÏÏÎÏηÏ: "> >+ >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/el/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/accessibleTree.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "ΡÏλοÏ"> >+<!ENTITY name.label "Îνομα"> >+<!ENTITY nodeName.label "Îνομα κÏÎ¼Î²Î¿Ï "> >+ >+<!ENTITY evaluateJS.label "ÎκÏίμηÏη JavaScript"> >+ >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/accessibleTreeEvalJSDialog.dtd b/suite/extensions/inspector/resources/locale/el/viewers/accessibleTreeEvalJSDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/accessibleTreeEvalJSDialog.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY evaluateDialog.title "ÎÎ¹Î¬Î»Î¿Î³Î¿Ï ÎµÎºÏίμηÏÎ·Ï JavaScript"> >+ >+ <!ENTITY btnEvaluateJS.label "ÎκÏίμηÏη"> >+ <!ENTITY btnEvaluateJS.accesskey "κ"> >+ >+ <!ENTITY txtInputArea.label "ΠεÏιοÏή ειÏÏÎ´Î¿Ï (ÏÏηÏιμοÏοιήÏÏε «ÏÏοÏβάÏιμη» μεÏαβληÏή για λειÏÎ¿Ï Ïγία με Ïο εÏιλεγμÎνο ÏÏοÏβάÏιμο ανÏικείμενο και ÏÏ Î½Î¬ÏÏηÏη «εξÏÎ´Î¿Ï Â» για εγγÏαÏή ÏÏο ÏλαίÏιο «ΠεÏιοÏή εξÏÎ´Î¿Ï Â», «tree.search(accessible, filterfunc)» για αναζήÏηÏη και «tree.clearSearch()» για εκκαθάÏιÏη αÏοÏελεÏμάÏÏν αναζήÏηÏηÏ): "> >+ <!ENTITY txtInputArea.accesskey "Ï"> >+ <!ENTITY txtOutputArea.label "ΠεÏιοÏή εξÏÎ´Î¿Ï : "> >+ <!ENTITY txtOutputArea.accesskey "δ"> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/el/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/boxModel.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "ÎÎÏη"> >+<!ENTITY boxDimension.label "ÎιαÏÏάÏειÏ"> >+<!ENTITY boxMargin.label "ΠεÏιθÏÏιο"> >+<!ENTITY boxBorder.label "ΠεÏίγÏαμμα"> >+<!ENTITY boxPadding.label "ÎÎμιÏμα"> >+ >+<!ENTITY xCoord.label "Ï"> >+<!ENTITY yCoord.label "Ï"> >+<!ENTITY screenXCoord.label "οθÏνη Ï"> >+<!ENTITY screenYCoord.label "οθÏνη Ï"> >+ >+<!ENTITY dimensionWidth.label "ÏλάÏÎ¿Ï ÏλαιÏÎ¯Î¿Ï "> >+<!ENTITY dimensionHeight.label "ÏÏÎ¿Ï ÏλαιÏÎ¯Î¿Ï "> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/el/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "ÎδιÏÏηÏα"> >+<!ENTITY propertyValue.label "Τιμή"> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/el/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/dom.dtd >@@ -0,0 +1,138 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "ÎÏÏεÏη κÏμβÏνâ¦"> >+ <!ENTITY cmdShowFindDialog.accesskey "Ï"> >+ <!ENTITY cmdShowFindDialog.key "f"> >+ >+ <!ENTITY cmdFindAgain.label "ÎÏÏεÏη Ïάλι"> >+ <!ENTITY cmdFindAgain.accesskey "λ"> >+ <!ENTITY cmdFindAgain.key "G"> >+ >+ <!ENTITY cmdToggleAnonContent.label "ÎμÏάνιÏη ανÏÎ½Ï Î¼Î¿Ï ÏεÏιεÏÏÎ¼ÎµÎ½Î¿Ï "> >+ <!ENTITY cmdToggleAnonContent.accesskey "α"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "ÎμÏάνιÏη κÏμβÏν Î»ÎµÏ ÎºÎ¿Ï Î´Î¹Î±ÏÏήμαÏοÏ"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "Ï"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "ÎμÏάνιÏη ÏÏοÏβάÏιμÏν κÏμβÏν"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "ο"> >+ >+ <!ENTITY cmdToggleProcessingInstructions.label "ÎμÏάνιÏη οδηγιÏν εÏεξεÏγαÏίαÏ"> >+ <!ENTITY cmdToggleProcessingInstructions.accesskey "δ"> >+ >+ <!ENTITY cmdToggleAttributes.label "ÎμÏάνιÏη ÏαÏακÏηÏιÏÏικÏν"> >+ <!ENTITY cmdToggleAttributes.accesskey "κ"> >+ >+ <!ENTITY cmdSelectByClick.label "ÎÏιλογή ÏÏοιÏÎµÎ¯Î¿Ï Î¼Îµ κλικ"> >+ <!ENTITY cmdSelectByClick.accesskey "Ï"> >+ >+ <!ENTITY ColumnsDialog.title "ΣÏήλεÏ"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "ΣÏήλεÏâ¦"> >+ <!ENTITY cmdShowColumnsDialog.accesskey "Ï"> >+ >+ <!ENTITY cmdInsertNode.label "ÎιÏαγÏγήâ¦"> >+ <!ENTITY cmdDeleteNode.label "ÎιαγÏαÏή"> >+ <!ENTITY cmdCopyXML.label "ÎνÏιγÏαÏή XML"> >+ <!ENTITY cmdCopyXML.accesskey "Ï"> >+ <!ENTITY cmdBlink.label "ÎναλαμÏÎÏ ÏÏοιÏÎµÎ¯Î¿Ï "> >+ <!ENTITY cmdBlink.accesskey "λ"> >+ <!ENTITY cmdInspectBrowser.label "ÎÏιθεÏÏηÏη ÏεÏιεÏÏÎ¼ÎµÎ½Î¿Ï ÎµÎ³Î³ÏάÏÎ¿Ï "> >+ <!ENTITY cmdInspectBrowser.accesskey "θ"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "ÎÏιÏμÏÏ ÏÎµÏ Î´Î¿-κλάÏεÏνâ¦"> >+ <!ENTITY cmdShowPseudoClasses.accesskey "Î"> >+ >+ <!ENTITY pseudoClasses.title "Î¨ÎµÏ Î´Î¿-κλάÏειÏ"> >+ >+ <!ENTITY findNodes.title "ÎÏÏεÏη κÏμβÏν"> >+ <!ENTITY findNodesById.label "ÎναγνÏÏιÏÏÎ¹ÎºÏ (Id)"> >+ <!ENTITY findNodesById.accesskey "ν"> >+ <!ENTITY findNodesById.accesskey2 "Î"> >+ <!ENTITY findNodesByTag.label "ÎÏικÎÏα"> >+ <!ENTITY findNodesByTag.accesskey "Ï"> >+ <!ENTITY findNodesByTag.accesskey2 "Î"> >+ <!ENTITY findNodesByAttr.label "ΧαÏακÏηÏιÏÏικÏ"> >+ <!ENTITY findNodesByAttr.accesskey "κ"> >+ <!ENTITY findNodesByAttr.accesskey2 "Χ"> >+ <!ENTITY findNodesByAttrValue.label "Τιμή"> >+ <!ENTITY findNodesByAttrValue.accesskey "Τ"> >+ <!ENTITY findNodesSearchBy.label "ÎναζήÏηÏη καÏά"> >+ <!ENTITY findNodesDirection.label "ÎαÏεÏÎ¸Ï Î½Ïη"> >+ <!ENTITY findNodesDirectionUp.label "ΠάνÏ"> >+ <!ENTITY findNodesDirectionUp.accesskey "Î "> >+ <!ENTITY findNodesDirectionDown.label "ÎάÏÏ"> >+ <!ENTITY findNodesDirectionDown.accesskey "Ï"> >+ <!ENTITY findNodesFind.label "ÎÏÏεÏη"> >+ <!ENTITY findNodesCancel.label "ÎκÏÏÏÏη"> >+ >+ <!ENTITY mnEditPasteMenu.label "ÎÏικÏλληÏη"> >+ <!ENTITY mnEditPasteMenu.accesskey "Î"> >+ <!ENTITY mnEditPasteBefore.label "Î Ïιν"> >+ <!ENTITY mnEditPasteBefore.accesskey "Î "> >+ <!ENTITY mnEditPasteAfter.label "ÎεÏά"> >+ <!ENTITY mnEditPasteAfter.accesskey "Î"> >+ <!ENTITY mnEditPasteReplace.label "ÎÏιÏÏÏÎ¿Ï (ÎνÏικαÏάÏÏαÏη)"> >+ <!ENTITY mnEditPasteReplace.accesskey "Î"> >+ <!ENTITY mnEditPasteFirstChild.label "Î©Ï ÏÏÏÏο ÏεκνικÏ"> >+ <!ENTITY mnEditPasteFirstChild.accesskey "ο"> >+ <!ENTITY mnEditPasteLastChild.label "Î©Ï ÏÎµÎ»ÎµÏ Ïαίο ÏεκνικÏ"> >+ <!ENTITY mnEditPasteLastChild.accesskey "Ï"> >+ <!ENTITY mnEditPasteAsParent.label "Î©Ï Î³Î¿Î½Î¹ÎºÏ"> >+ <!ENTITY mnEditPasteAsParent.accesskey "ν"> >+ >+ <!ENTITY mnEditInsertMenu.label "ÎιÏαγÏγή"> >+ <!ENTITY mnEditInsertMenu.accesskey "Ï"> >+ <!ENTITY mnEditInsertAfter.label "ÎεÏά"> >+ <!ENTITY mnEditInsertAfter.accesskey "Î"> >+ <!ENTITY mnEditInsertBefore.label "Î Ïιν"> >+ <!ENTITY mnEditInsertBefore.accesskey "Î "> >+ <!ENTITY mnEditInsertFirstChild.label "Î©Ï ÏÏÏÏο ÏεκνικÏ"> >+ <!ENTITY mnEditInsertFirstChild.accesskey "ο"> >+ <!ENTITY mnEditInsertLastChild.label "Î©Ï ÏÎµÎ»ÎµÏ Ïαίο ÏεκνικÏ"> >+ <!ENTITY mnEditInsertLastChild.accesskey "Ï"> >+ >+ <!ENTITY insertNode.title "ÎιÏαγÏγή κÏÎ¼Î²Î¿Ï "> >+ <!ENTITY nodeType.label "ΤÏÏÎ¿Ï ÎºÏÎ¼Î²Î¿Ï :"> >+ <!ENTITY nodeType.accesskey "Ï"> >+ <!ENTITY nodeType.element.label "ΣÏοιÏείο"> >+ <!ENTITY nodeType.text.label "Îείμενο"> >+ <!ENTITY namespaceURI.label "URI ονομαÏοÏÏÏÎ¿Ï :"> >+ <!ENTITY namespaceURI.accesskey "ν"> >+ <!ENTITY tagName.label "Îνομα εÏικÎÏαÏ:"> >+ <!ENTITY tagName.accesskey "κ"> >+ <!ENTITY nodeValue.label "Τιμή κÏÎ¼Î²Î¿Ï :"> >+ <!ENTITY nodeValue.accesskey "Τ"> >+ >+ <!ENTITY namespaceTitle.null.label "null"> >+ <!ENTITY namespaceTitle.default.label "Î ÏοεÏιλογή εγγÏάÏÎ¿Ï "> >+ <!ENTITY namespaceTitle.custom.label "Î ÏοÏαÏμοÏμÎνο"> >+ >+ <!-- LOCALIZATION NOTE: The following entities are names of W3C >+ specifications. Please consult >+ http://www.w3.org/Consortium/Translation/ for appropriate translation >+ or leave unchanged. --> >+ <!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+ <!ENTITY namespaceTitle.XML.label "XML"> >+ <!ENTITY namespaceTitle.XHTML.label "XHTML"> >+ <!ENTITY namespaceTitle.XLink.label "XLink"> >+ <!ENTITY namespaceTitle.XSLT.label "XSLT"> >+ <!ENTITY namespaceTitle.XBL.label "XBL"> >+ <!ENTITY namespaceTitle.MathML.label "MathML"> >+ <!ENTITY namespaceTitle.RDF.label "RDF"> >+ <!ENTITY namespaceTitle.XUL.label "XUL"> >+ <!ENTITY namespaceTitle.SVG.label "SVG"> >+ <!ENTITY namespaceTitle.XMLEvents.label "Î£Ï Î¼Î²Î¬Î½Ïα XML"> >+ <!ENTITY namespaceTitle.WAIRoles.label "ΡÏλοι WAI"> >+ <!ENTITY namespaceTitle.WAIProperties.label "ÎδιÏÏηÏÎµÏ WAI"> >+ >+ <!-- LOCALIZATION NOTE: Localizers can choose not to translate the following >+ access keys. For a discussion about the pros and cons of such a >+ decision, see https://bugzilla.mozilla.org/show_bug.cgi?id=398704, >+ comments 1 and 2. --> >+ <!ENTITY cbxStateHover.accesskey "h"> >+ <!ENTITY cbxStateActive.accesskey "a"> >+ <!ENTITY cbxStateFocus.accesskey "f"> >+ >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/el/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/domNode.dtd >@@ -0,0 +1,31 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Îνομα κÏÎ¼Î²Î¿Ï :"> >+<!ENTITY localName.label "ΤοÏÎ¹ÎºÏ Ïνομα:"> >+<!ENTITY namespaceURI.label "URI ονοµαÏοÏÏÏÎ¿Ï :"> >+<!ENTITY nodeType.label "ΤÏÏÎ¿Ï ÎºÏÎ¼Î²Î¿Ï :"> >+<!ENTITY nodeValue.label "Τιμή κÏÎ¼Î²Î¿Ï :"> >+<!ENTITY grpAttr.label "ΧαÏακÏηÏιÏÏικά"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "Î ÏοεÏιλογή εγγÏάÏÎ¿Ï "> >+<!ENTITY namespaceTitle.custom.label "Î ÏοÏαÏμοÏμÎνο"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "Î£Ï Î¼Î²Î¬Î½Ïα XML"> >+<!ENTITY namespaceTitle.WAIRoles.label "ΡÏλοι WAI"> >+<!ENTITY namespaceTitle.WAIProperties.label "ÎδιÏÏηÏÎµÏ WAI"> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/el/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "ÎνÏιγÏαÏή ÏιμήÏ"> >+<!ENTITY jsEval.label "ÎκÏίμηÏη JavaScriptâ¦"> >+ >+<!ENTITY jsProperty.label "ÎδιÏÏηÏα"> >+<!ENTITY jsValue.label "Τιμή"> >+ >+<!ENTITY evaluateDialog.title "ÎκÏίμηÏη ÎκÏÏαÏηÏ"> >+<!ENTITY jsEval.desc "ÎιÏάγεÏε μια ÎκÏÏαÏη JavaScript. ΠμεÏαβληÏή «target» είναι η ιδιÏÏηÏα ÏÎ¿Ï ÎµÎ¯Î½Î±Î¹ εÏιλεγμÎνη Î±Ï Ïήν Ïη ÏÏιγμή."> >+<!ENTITY jsExecute.label "ÎκÏÎλεÏη"> >+<!ENTITY inspectReturn.label "ÎÏιθεÏÏηÏη εÏιÏÏÏοÏήÏâ¦"> >+<!ENTITY inspectReturnNew.label "Ïε νÎο ÏαÏÎ¬Î¸Ï Ïο"> >+<!ENTITY inspectReturnExisting.label "ÏÏο Ï ÏάÏÏον ÏαÏÎ¬Î¸Ï Ïο"> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/el/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/styleRules.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "ÎÏÏεÏη κανÏνÏν CSSâ¦"> >+<!ENTITY miFindCSSRules.accesskey "Î"> >+ >+<!ENTITY newRules.label "ÎÎοÏ"> >+<!ENTITY deleteSelectedRules.label "ÎιαγÏαÏή"> >+<!ENTITY disableSelectedRules.label "ÎÏενεÏγοÏοίηÏη"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Îναλλαγή «!important»"> >+ >+<!ENTITY styleRule.label "ÎανÏναÏ"> >+<!ENTITY styleRuleURI.label "ÎÏÏείο"> >+<!ENTITY styleRuleLineNumber.label "ÎÏαμμή"> >+ >+<!ENTITY styleRulePropPriority.label "Î ÏοÏεÏαιÏÏηÏα"> >+<!ENTITY styleRulePropName.label "ÎδιÏÏηÏα"> >+<!ENTITY styleRulePropValue.label "Τιμή"> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/el/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "ΦÏλλο ÏεÏνοÏÏοÏίαÏ"> >+<!ENTITY sheetRules.label "ÎανÏνεÏ"> >+ >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/usedFontFaces.dtd b/suite/extensions/inspector/resources/locale/el/viewers/usedFontFaces.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/usedFontFaces.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY fontName.label "Îνομα γÏαμμαÏοÏειÏάÏ"> >+<!ENTITY cssFamilyName.label "Îνομα οικογÎνειαÏ"> >+<!ENTITY uri.label "URI"> >+<!ENTITY localName.label "ΤοÏÎ¹ÎºÏ Ïνομα"> >+<!ENTITY format.label "ÎοÏÏή"> >diff --git a/suite/extensions/inspector/resources/locale/el/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/el/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/el/viewers/xblBindings.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "ΠεÏιεÏÏμενο"> >+<!ENTITY bindingMethods.label "ÎÎθοδοι"> >+<!ENTITY bindingMethodName.label "Îνομα μεθÏÎ´Î¿Ï "> >+<!ENTITY bindingProperties.label "ÎδιÏÏηÏεÏ"> >+<!ENTITY bindingGetter.label "ÎνακÏηÏÎ®Ï (Getter)"> >+<!ENTITY bindingSetter.label "ÎÏιÏÏÎ®Ï (Setter)"> >+<!ENTITY bindingProperty.label "ÎδιÏÏηÏα"> >+<!ENTITY bindingHandlers.label "ΧειÏιÏÏÎÏ"> >+<!ENTITY bindingHandlerEvent.label "Î£Ï Î¼Î²Î¬Î½"> >+<!ENTITY bindingHandlerPhase.label "ΦάÏη"> >+<!ENTITY bindingResources.label "Î ÏÏοι"> >+<!ENTITY bindingResourceType.label "ΤÏÏοÏ"> >+<!ENTITY bindingResourceSrc.label "Î ÏοÎÎ»ÎµÏ Ïη"> >+<!ENTITY bindingSourceCode.label "Î Î·Î³Î±Î¯Î¿Ï ÎºÏδικαÏ"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/editing.dtd b/suite/extensions/inspector/resources/locale/en-GB/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/editing.dtd >@@ -0,0 +1,27 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Undo"> >+<!ENTITY mnEditUndo.accesskey "u"> >+<!ENTITY mnEditRedo.label "Redo"> >+<!ENTITY mnEditRedo.accesskey "r"> >+<!ENTITY mnEditCut.label "Cut"> >+<!ENTITY mnEditCut.accesskey "t"> >+<!ENTITY mnEditCopy.label "Copy"> >+<!ENTITY mnEditCopy.accesskey "c"> >+<!ENTITY mnEditPaste.label "Paste"> >+<!ENTITY mnEditPaste.accesskey "p"> >+<!ENTITY mnEditInsert.label "Insert"> >+<!ENTITY mnEditInsert.accesskey "i"> >+<!ENTITY mnEditEdit.label "Edit"> >+<!ENTITY mnEditEdit.accesskey "e"> >+<!ENTITY mnEditDelete.label "Delete"> >+<!ENTITY mnEditDelete.accesskey "d"> >+<!ENTITY mnEditInspectInNewWindow.label "Inspect in New Window"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "N"> >+<!ENTITY mnEditInspectInNewWindow.key "I"> >+<!ENTITY mnEditCopyFileURI.label "Copy URI"> >+<!ENTITY mnEditCopyFileURI.accesskey "U"> >+<!ENTITY mnEditViewFileURI.label "View File"> >+<!ENTITY mnEditViewFileURI.accesskey "V"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/inspector.dtd b/suite/extensions/inspector/resources/locale/en-GB/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/inspector.dtd >@@ -0,0 +1,67 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM Inspector"> >+ >+<!ENTITY thDOMNodes.label "DOM Nodes"> >+<!ENTITY btnInspect.label "Inspect"> >+<!ENTITY btnInspect.accesskey "I"> >+<!ENTITY bxDocPanel.title "Document"> >+<!ENTITY bxObjectPanel.title "Object"> >+<!ENTITY btnSelecting.tooltip "Find a node to inspect by clicking on it"> >+<!ENTITY btnFind.tooltip "Find a node to inspect by id, tag, or attribute"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "File"> >+<!ENTITY mnFile.accesskey "F"> >+ <!ENTITY mnInspectContentDocument.label "Inspect Content Document"> >+ <!ENTITY mnInspectContentDocument.accesskey "O"> >+ <!ENTITY mnInspectChromeDocument.label "Inspect Chrome Document"> >+ <!ENTITY mnInspectChromeDocument.accesskey "H"> >+ <!ENTITY mnInspectApplicationAccessible.label "Inspect Application Accessible"> >+ <!ENTITY mnInspectApplicationAccessible.accesskey "A"> >+ <!ENTITY cmdEnterLocation.label "Inspect a URL"> >+ <!ENTITY cmdEnterLocation.accesskey "U"> >+ <!ENTITY cmdEnterLocation.key "L"> >+ <!ENTITY cmdEnterLocation.key2 "D"> >+ <!ENTITY cmdSave.label "Save DOM Asâ¦"> >+ <!ENTITY cmdSave.accesskey "S"> >+ <!ENTITY cmdClose.label "Close"> >+ <!ENTITY cmdClose.accesskey "C"> >+ <!ENTITY cmdExit.label "Exit"> >+ <!ENTITY cmdExit.accesskey "x"> >+ >+<!ENTITY mnEdit.label "Edit"> >+<!ENTITY mnEdit.accesskey "E"> >+ <!ENTITY cmdUndo.label "Undo"> >+ <!ENTITY cmdUndo.accesskey "U"> >+ <!ENTITY cmdRedo.label "Redo"> >+ <!ENTITY cmdRedo.accesskey "R"> >+ <!ENTITY cmdCut.label "Cut"> >+ <!ENTITY cmdCut.accesskey "t"> >+ <!ENTITY cmdCopy.label "Copy"> >+ <!ENTITY cmdCopy.accesskey "C"> >+ <!ENTITY cmdPaste.label "Paste"> >+ <!ENTITY cmdPaste.accesskey "P"> >+ <!ENTITY cmdDelete.label "Delete"> >+ <!ENTITY cmdDelete.accesskey "D"> >+ >+<!ENTITY mnView.label "View"> >+<!ENTITY mnView.accesskey "v"> >+ <!ENTITY mnDocViewerList.label "Document Viewer"> >+ <!ENTITY mnDocViewerList.accesskey "D"> >+ <!ENTITY mnObjectViewerList.label "Object Viewer"> >+ <!ENTITY mnObjectViewerList.accesskey "O"> >+ <!ENTITY cmdToggleDocument.label "Show Document in Browser Pane"> >+ <!ENTITY cmdToggleDocument.accesskey "B"> >+ <!ENTITY cmdToggleSearch.label "Search Results"> >+ <!ENTITY cmdFlashOnSelect.label "Blink Selected Element"> >+ <!ENTITY cmdFlashOnSelect.accesskey "S"> >+ >+<!ENTITY browserPanel.label "Browser"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/inspector.properties b/suite/extensions/inspector/resources/locale/en-GB/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/inspector.properties >@@ -0,0 +1,37 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+applicationAccesible.title = Application Accessible >+inspectWindow.noDocuments.message = (None) >+styleRuleNewProperty.title = New Style Rule >+styleRuleEditProperty.title = Edit Style Rule >+styleRulePropertyValue.message = Enter the property value: >+styleRulePropertyName.message = Enter the property name: >+sidebar.title = DOM Inspector >+sidebarInstalled = The sidebar is installed. >+newAttribute.title = New Attribute >+editAttribute.title = Edit Attribute >+findNodesDocumentEnd.message = End of document reached. >+findNodesDocumentEnd.title = Find Nodes >+# LOCALIZATION NOTE (root.title) label displayed for the tree head of the >+# JavaScript Object tree >+root.title = Subject >+ >+irrecoverableSubtree.message = Some of the selected nodes are part of an anonymous subtree that will be destroyed. Deleting these nodes cannot be undone. Do you want to delete the selected nodes? >+irrecoverableSubtree.title = Delete Anonymous Subtree >+ >+# The following items correspond to the node types defined by the W3C DOM Core >+# specification. >+1 = Element >+2 = Attribute >+3 = Text >+4 = CDATA Section >+5 = Entity Reference >+6 = Entity >+7 = Processing Instruction >+8 = Comment >+9 = Document >+10 = Document Type >+11 = Document Fragment >+12 = Notation >diff --git a/suite/extensions/inspector/resources/locale/en-GB/prefs.dtd b/suite/extensions/inspector/resources/locale/en-GB/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/prefs.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM Inspector"> >+<!ENTITY Sidebar.label "Sidebar"> >+<!ENTITY elementBlinking.label "Element Blinking"> >+<!ENTITY blinkSelectedElement.label "Blink Selected Element"> >+<!ENTITY blinkSelectedElement.accesskey "B"> >+<!ENTITY borderColor.label "Border Colour"> >+<!ENTITY borderColor.accesskey "C"> >+<!ENTITY borderWidth.label "Border Width"> >+<!ENTITY borderWidth.accesskey "W"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Blink Duration"> >+<!ENTITY blinkDuration.accesskey "D"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Blink Speed"> >+<!ENTITY blinkSpeed.accesskey "S"> >+<!ENTITY invertColors.label "Invert Colours"> >+<!ENTITY invertColors.accesskey "v"> >+<!ENTITY installHowTo.label "The DOM Inspector Sidebar is not currently installed. Click the 'Install' button to add it to your Sidebar."> >+<!ENTITY install.label "Install"> >+<!ENTITY install.accesskey "I"> >+<!ENTITY addNavigatorHooks.label "Add contextual menus to Navigator"> >+<!ENTITY addNavigatorHooks.accesskey "m"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/en-GB/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM Inspector"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "Inspect Page"> >+<!ENTITY inspectPageTaskCmd.accesskey "i"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewer-registry.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewer-registry.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewer-registry.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY dom.label "DOM Nodes"> >+<!ENTITY stylesheets.label "Style Sheets"> >+<!ENTITY domNode.label "DOM Node"> >+<!ENTITY boxModel.label "Box Model"> >+<!ENTITY xblBindings.label "XBL Bindings"> >+<!ENTITY styleRules.label "CSS Rules"> >+<!ENTITY computedStyle.label "Computed Style"> >+<!ENTITY usedFontFaces.label "Used Font Faces"> >+<!ENTITY jsObject.label "JavaScript Object"> >+<!ENTITY accessibleEvent.label "Accessible Event"> >+<!ENTITY accessibleObject.label "Accessible Object"> >+<!ENTITY accessibleProps.label "Accessible Properties"> >+<!ENTITY accessibleRelations.label "Accessible Relations"> >+<!ENTITY accessibleEvents.label "Accessible Events"> >+<!ENTITY accessibleTree.label "Accessible Tree"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEvent.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descIsFromUserInput.label "Is from user input: "> >+<!ENTITY descState.label "State: "> >+<!ENTITY descIsEnabled.label "Is state enabled: "> >+<!ENTITY descStartOffset.label "Start offset: "> >+<!ENTITY descLength.label "Length: "> >+<!ENTITY descIsInserted.label "Is text inserted: "> >+<!ENTITY descModifiedText.label "Modified text: "> >+<!ENTITY descCaretOffset.label "Caret offset: "> >+<!ENTITY descrHandlerOutput.label "Event handler output: "> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEvents.dtd >@@ -0,0 +1,23 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventList.label "Event List"> >+<!ENTITY watchedEvents.label "Watched Events"> >+<!ENTITY handledEvents.label "Handled events:"> >+<!ENTITY eventType.label "Event Type"> >+<!ENTITY eventTime.label "Time"> >+<!ENTITY eventTargetNodeName.label "Node Name"> >+<!ENTITY eventTargetNodeID.label "ID"> >+<!ENTITY eventTargetRole.label "Role"> >+<!ENTITY eventTargetName.label "Name"> >+<!ENTITY isWatched.label "Watched"> >+<!ENTITY isHandlerEnabled.label "Handler Enabled"> >+<!ENTITY clearEventList.label "Clear Event List"> >+<!ENTITY chooseEventsToWatch.label "Choose events to watch."> >+<!ENTITY watchAll.label "Watch All"> >+<!ENTITY watchNone.label "Watch None"> >+<!ENTITY editHandler.label "Edit Handler"> >+<!ENTITY contextHelp.label "?"> >+<!ENTITY handlerEditorNoEvent.label "Choose event type to add a handler."> >+ >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEvents.properties b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEvents.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEvents.properties >@@ -0,0 +1,22 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+mutationEvents = mutation events >+changeEvents = change events >+notificationEvents = notification events >+selectionEvents = selection events >+menuEvents = menu events >+documentEvents = document events >+textEvents = text events >+tableEvents = table events >+windowEvents = window events >+hyperLinkEvents = hyper link events >+hyperTextEvents = hyper text events >+ >+handlerEditorLabel = Enable "%S" event handler. >+ >+role = Role >+name = Name >+nodeName = Node Name >+id = ID >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEventsHandlerHelpDialog.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEventsHandlerHelpDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleEventsHandlerHelpDialog.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY helpDialog.title "Handler help dialogue"> >+ >+ <!ENTITY general.descr "Write and attach an accessibility event handler. When the event occurs, you can select it in the events list and see the result of the handler evaluation in the linked Accessible Event viewer."> >+ <!ENTITY helpers.descr "The following objects and functions can be used within handler editor:"> >+ >+ <!ENTITY event.descr "accessibility event object"> >+ <!ENTITY target.descr "accessibility target object"> >+ <!ENTITY accRetrieval.descr "nsIAccessibleRetrieval accessibility service"> >+ <!ENTITY output.descr "prints the given string"> >+ <!ENTITY outputAttrs.descr "prints object attributes of the given accessible object"> >+ <!ENTITY outputRole.descr "prints role of the given accessible object"> >+ <!ENTITY outputStates.descr "prints states of the given accessible object"> >+ <!ENTITY outputTree.descr "prints tree for the given accessible object, highlighting accessibles from the given array"> >+ <!ENTITY outputDOMAttrs.descr "prints DOM attributes of the given accessible object"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleProps.dtd >@@ -0,0 +1,29 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descRole.label "Role:"> >+<!ENTITY descName.label "Name:"> >+<!ENTITY descDescription.label "Description:"> >+<!ENTITY descValue.label "Value:"> >+<!ENTITY descState.label "State:"> >+<!ENTITY descBounds.label "Bounds:"> >+<!ENTITY tabAttrs.label "Object attributes"> >+<!ENTITY colAttrName.label "Name"> >+<!ENTITY colAttrValue.label "Value"> >+<!ENTITY tabActions.label "Actions"> >+<!ENTITY descKeyBindings.label "Key bindings:"> >+<!ENTITY descInvoke.label "Invoke"> >+<!ENTITY tabTextAttrs.label "Text attributes"> >+<!ENTITY descDefaultAttrs.label "Default attributes:"> >+<!ENTITY descStartOffset.label "Start offset:"> >+<!ENTITY descEndOffset.label "End offset:"> >+<!ENTITY tabTableCell.label "Table cell"> >+<!ENTITY descColumnIdx.label "Column index:"> >+<!ENTITY descRowIdx.label "Row index:"> >+<!ENTITY descColumnExtent.label "Column extent:"> >+<!ENTITY descRowExtent.label "Row extent:"> >+<!ENTITY descIsSelected.label "Is selected:"> >+<!ENTITY colProp.label "Property"> >+<!ENTITY colRole.label "Role"> >+<!ENTITY colName.label "Name"> >+<!ENTITY colNodeName.label "Node name"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleProps.properties b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleProps.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleProps.properties >@@ -0,0 +1,5 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+accBounds = x: %S; y: %S; width: %S; height: %S; >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleRelations.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY relationType.label "Relation Type"> >+<!ENTITY role.label "Role"> >+<!ENTITY nodeName.label "Node Name"> >+<!ENTITY relations.label "Relations: "> >+<!ENTITY relationTargets.label "Relation Targets: "> >+ >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleTree.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "Role"> >+<!ENTITY name.label "Name"> >+<!ENTITY nodeName.label "Node Name"> >+ >+<!ENTITY evaluateJS.label "Evaluate JavaScript"> >+ >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleTreeEvalJSDialog.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleTreeEvalJSDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/accessibleTreeEvalJSDialog.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY evaluateDialog.title "Evaluate JavaScript Dialogue"> >+ >+ <!ENTITY btnEvaluateJS.label "Evaluate"> >+ <!ENTITY btnEvaluateJS.accesskey "E"> >+ >+ <!ENTITY txtInputArea.label "Input Area (use 'accessible' variable to operate with the selected accessible and 'output' function to write into 'Output Area' window, 'tree.search(accessible, filterfunc)' to search and 'tree.clearSearch()' to clear search results): "> >+ <!ENTITY txtInputArea.accesskey "I"> >+ <!ENTITY txtOutputArea.label "Output Area: "> >+ <!ENTITY txtOutputArea.accesskey "O"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/boxModel.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Position"> >+<!ENTITY boxDimension.label "Dimensions"> >+<!ENTITY boxMargin.label "Margin"> >+<!ENTITY boxBorder.label "Border"> >+<!ENTITY boxPadding.label "Padding"> >+ >+<!ENTITY xCoord.label "x"> >+<!ENTITY yCoord.label "y"> >+<!ENTITY screenXCoord.label "screen x"> >+<!ENTITY screenYCoord.label "screen y"> >+ >+<!ENTITY dimensionWidth.label "box width"> >+<!ENTITY dimensionHeight.label "box height"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Property"> >+<!ENTITY propertyValue.label "Value"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/dom.dtd >@@ -0,0 +1,138 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "Find Nodesâ¦"> >+ <!ENTITY cmdShowFindDialog.accesskey "f"> >+ <!ENTITY cmdShowFindDialog.key "f"> >+ >+ <!ENTITY cmdFindAgain.label "Find Again"> >+ <!ENTITY cmdFindAgain.accesskey "g"> >+ <!ENTITY cmdFindAgain.key "G"> >+ >+ <!ENTITY cmdToggleAnonContent.label "Show Anonymous Content"> >+ <!ENTITY cmdToggleAnonContent.accesskey "a"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "Show Whitespace Nodes"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "W"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "Show Accessible Nodes"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "c"> >+ >+ <!ENTITY cmdToggleProcessingInstructions.label "Show Processing Instructions"> >+ <!ENTITY cmdToggleProcessingInstructions.accesskey "P"> >+ >+ <!ENTITY cmdToggleAttributes.label "Show Attributes"> >+ <!ENTITY cmdToggleAttributes.accesskey "r"> >+ >+ <!ENTITY cmdSelectByClick.label "Select Element By Click"> >+ <!ENTITY cmdSelectByClick.accesskey "S"> >+ >+ <!ENTITY ColumnsDialog.title "Columns"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "Columnsâ¦"> >+ <!ENTITY cmdShowColumnsDialog.accesskey "C"> >+ >+ <!ENTITY cmdInsertNode.label "Insertâ¦"> >+ <!ENTITY cmdDeleteNode.label "Delete"> >+ <!ENTITY cmdCopyXML.label "Copy XML"> >+ <!ENTITY cmdCopyXML.accesskey "X"> >+ <!ENTITY cmdBlink.label "Blink Element"> >+ <!ENTITY cmdBlink.accesskey "B"> >+ <!ENTITY cmdInspectBrowser.label "Inspect Contained Document"> >+ <!ENTITY cmdInspectBrowser.accesskey "e"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "Set Pseudo-classesâ¦"> >+ <!ENTITY cmdShowPseudoClasses.accesskey "S"> >+ >+ <!ENTITY pseudoClasses.title "Pseudo-classes"> >+ >+ <!ENTITY findNodes.title "Find Nodes"> >+ <!ENTITY findNodesById.label "Id"> >+ <!ENTITY findNodesById.accesskey "I"> >+ <!ENTITY findNodesById.accesskey2 "d"> >+ <!ENTITY findNodesByTag.label "Tag"> >+ <!ENTITY findNodesByTag.accesskey "T"> >+ <!ENTITY findNodesByTag.accesskey2 "g"> >+ <!ENTITY findNodesByAttr.label "Attr"> >+ <!ENTITY findNodesByAttr.accesskey "A"> >+ <!ENTITY findNodesByAttr.accesskey2 "r"> >+ <!ENTITY findNodesByAttrValue.label "Value"> >+ <!ENTITY findNodesByAttrValue.accesskey "V"> >+ <!ENTITY findNodesSearchBy.label "Search By"> >+ <!ENTITY findNodesDirection.label "Direction"> >+ <!ENTITY findNodesDirectionUp.label "Up"> >+ <!ENTITY findNodesDirectionUp.accesskey "U"> >+ <!ENTITY findNodesDirectionDown.label "Down"> >+ <!ENTITY findNodesDirectionDown.accesskey "w"> >+ <!ENTITY findNodesFind.label "Find"> >+ <!ENTITY findNodesCancel.label "Cancel"> >+ >+ <!ENTITY mnEditPasteMenu.label "Paste"> >+ <!ENTITY mnEditPasteMenu.accesskey "P"> >+ <!ENTITY mnEditPasteBefore.label "Before"> >+ <!ENTITY mnEditPasteBefore.accesskey "B"> >+ <!ENTITY mnEditPasteAfter.label "After"> >+ <!ENTITY mnEditPasteAfter.accesskey "A"> >+ <!ENTITY mnEditPasteReplace.label "In place of (Replace)"> >+ <!ENTITY mnEditPasteReplace.accesskey "I"> >+ <!ENTITY mnEditPasteFirstChild.label "As first child"> >+ <!ENTITY mnEditPasteFirstChild.accesskey "f"> >+ <!ENTITY mnEditPasteLastChild.label "As last child"> >+ <!ENTITY mnEditPasteLastChild.accesskey "c"> >+ <!ENTITY mnEditPasteAsParent.label "As parent"> >+ <!ENTITY mnEditPasteAsParent.accesskey "r"> >+ >+ <!ENTITY mnEditInsertMenu.label "Insert"> >+ <!ENTITY mnEditInsertMenu.accesskey "I"> >+ <!ENTITY mnEditInsertAfter.label "After"> >+ <!ENTITY mnEditInsertAfter.accesskey "A"> >+ <!ENTITY mnEditInsertBefore.label "Before"> >+ <!ENTITY mnEditInsertBefore.accesskey "B"> >+ <!ENTITY mnEditInsertFirstChild.label "As first child"> >+ <!ENTITY mnEditInsertFirstChild.accesskey "f"> >+ <!ENTITY mnEditInsertLastChild.label "As last child"> >+ <!ENTITY mnEditInsertLastChild.accesskey "c"> >+ >+ <!ENTITY insertNode.title "Insert Node"> >+ <!ENTITY nodeType.label "Node Type:"> >+ <!ENTITY nodeType.accesskey "T"> >+ <!ENTITY nodeType.element.label "Element"> >+ <!ENTITY nodeType.text.label "Text"> >+ <!ENTITY namespaceURI.label "Namespace URI:"> >+ <!ENTITY namespaceURI.accesskey "U"> >+ <!ENTITY tagName.label "Tag Name:"> >+ <!ENTITY tagName.accesskey "N"> >+ <!ENTITY nodeValue.label "Node Value:"> >+ <!ENTITY nodeValue.accesskey "V"> >+ >+ <!ENTITY namespaceTitle.null.label "null"> >+ <!ENTITY namespaceTitle.default.label "Document Default"> >+ <!ENTITY namespaceTitle.custom.label "Custom"> >+ >+ <!-- LOCALIZATION NOTE: The following entities are names of W3C >+ specifications. Please consult >+ http://www.w3.org/Consortium/Translation/ for appropriate translation >+ or leave unchanged. --> >+ <!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+ <!ENTITY namespaceTitle.XML.label "XML"> >+ <!ENTITY namespaceTitle.XHTML.label "XHTML"> >+ <!ENTITY namespaceTitle.XLink.label "XLink"> >+ <!ENTITY namespaceTitle.XSLT.label "XSLT"> >+ <!ENTITY namespaceTitle.XBL.label "XBL"> >+ <!ENTITY namespaceTitle.MathML.label "MathML"> >+ <!ENTITY namespaceTitle.RDF.label "RDF"> >+ <!ENTITY namespaceTitle.XUL.label "XUL"> >+ <!ENTITY namespaceTitle.SVG.label "SVG"> >+ <!ENTITY namespaceTitle.XMLEvents.label "XML Events"> >+ <!ENTITY namespaceTitle.WAIRoles.label "WAI Roles"> >+ <!ENTITY namespaceTitle.WAIProperties.label "WAI Properties"> >+ >+ <!-- LOCALIZATION NOTE: Localizers can choose not to translate the following >+ access keys. For a discussion about the pros and cons of such a >+ decision, see https://bugzilla.mozilla.org/show_bug.cgi?id=398704, >+ comments 1 and 2. --> >+ <!ENTITY cbxStateHover.accesskey "h"> >+ <!ENTITY cbxStateActive.accesskey "a"> >+ <!ENTITY cbxStateFocus.accesskey "f"> >+ >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/domNode.dtd >@@ -0,0 +1,31 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Node Name:"> >+<!ENTITY localName.label "Local Name:"> >+<!ENTITY namespaceURI.label "Namespace URI:"> >+<!ENTITY nodeType.label "Node Type:"> >+<!ENTITY nodeValue.label "Node Value:"> >+<!ENTITY grpAttr.label "Attributes"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "Document Default"> >+<!ENTITY namespaceTitle.custom.label "Custom"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "XML Events"> >+<!ENTITY namespaceTitle.WAIRoles.label "WAI Roles"> >+<!ENTITY namespaceTitle.WAIProperties.label "WAI Properties"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Copy Value"> >+<!ENTITY jsEval.label "Evaluate JavaScriptâ¦"> >+ >+<!ENTITY jsProperty.label "Property"> >+<!ENTITY jsValue.label "Value"> >+ >+<!ENTITY evaluateDialog.title "Evaluate Expression"> >+<!ENTITY jsEval.desc "Enter a JavaScript expression. The variable "target" is the property that is currently selected."> >+<!ENTITY jsExecute.label "Execute"> >+<!ENTITY inspectReturn.label "Inspect return in"> >+<!ENTITY inspectReturnNew.label "New window"> >+<!ENTITY inspectReturnExisting.label "Existing window"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/styleRules.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "Find CSS Rulesâ¦"> >+<!ENTITY miFindCSSRules.accesskey "F"> >+ >+<!ENTITY newRules.label "New"> >+<!ENTITY deleteSelectedRules.label "Delete"> >+<!ENTITY disableSelectedRules.label "Disable"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Toggle !important"> >+ >+<!ENTITY styleRule.label "Rule"> >+<!ENTITY styleRuleURI.label "File"> >+<!ENTITY styleRuleLineNumber.label "Line"> >+ >+<!ENTITY styleRulePropPriority.label "Priority"> >+<!ENTITY styleRulePropName.label "Property"> >+<!ENTITY styleRulePropValue.label "Value"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Style Sheet"> >+<!ENTITY sheetRules.label "Rules"> >+ >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/usedFontFaces.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/usedFontFaces.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/usedFontFaces.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY fontName.label "Font Name"> >+<!ENTITY cssFamilyName.label "Family Name"> >+<!ENTITY uri.label "URI"> >+<!ENTITY localName.label "Local Name"> >+<!ENTITY format.label "Format"> >diff --git a/suite/extensions/inspector/resources/locale/en-GB/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/en-GB/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-GB/viewers/xblBindings.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "Content"> >+<!ENTITY bindingMethods.label "Methods"> >+<!ENTITY bindingMethodName.label "Method Name"> >+<!ENTITY bindingProperties.label "Properties"> >+<!ENTITY bindingGetter.label "Getter"> >+<!ENTITY bindingSetter.label "Setter"> >+<!ENTITY bindingProperty.label "Property"> >+<!ENTITY bindingHandlers.label "Handlers"> >+<!ENTITY bindingHandlerEvent.label "Event"> >+<!ENTITY bindingHandlerPhase.label "Phase"> >+<!ENTITY bindingResources.label "Resources"> >+<!ENTITY bindingResourceType.label "Type"> >+<!ENTITY bindingResourceSrc.label "Source"> >+<!ENTITY bindingSourceCode.label "Source Code"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/editing.dtd b/suite/extensions/inspector/resources/locale/en-US/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/editing.dtd >@@ -0,0 +1,27 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Undo"> >+<!ENTITY mnEditUndo.accesskey "u"> >+<!ENTITY mnEditRedo.label "Redo"> >+<!ENTITY mnEditRedo.accesskey "r"> >+<!ENTITY mnEditCut.label "Cut"> >+<!ENTITY mnEditCut.accesskey "t"> >+<!ENTITY mnEditCopy.label "Copy"> >+<!ENTITY mnEditCopy.accesskey "c"> >+<!ENTITY mnEditPaste.label "Paste"> >+<!ENTITY mnEditPaste.accesskey "p"> >+<!ENTITY mnEditInsert.label "Insert"> >+<!ENTITY mnEditInsert.accesskey "i"> >+<!ENTITY mnEditEdit.label "Edit"> >+<!ENTITY mnEditEdit.accesskey "e"> >+<!ENTITY mnEditDelete.label "Delete"> >+<!ENTITY mnEditDelete.accesskey "d"> >+<!ENTITY mnEditInspectInNewWindow.label "Inspect in New Window"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "N"> >+<!ENTITY mnEditInspectInNewWindow.key "I"> >+<!ENTITY mnEditCopyFileURI.label "Copy URI"> >+<!ENTITY mnEditCopyFileURI.accesskey "U"> >+<!ENTITY mnEditViewFileURI.label "View File"> >+<!ENTITY mnEditViewFileURI.accesskey "V"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/inspector.dtd b/suite/extensions/inspector/resources/locale/en-US/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/inspector.dtd >@@ -0,0 +1,67 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM Inspector"> >+ >+<!ENTITY thDOMNodes.label "DOM Nodes"> >+<!ENTITY btnInspect.label "Inspect"> >+<!ENTITY btnInspect.accesskey "I"> >+<!ENTITY bxDocPanel.title "Document"> >+<!ENTITY bxObjectPanel.title "Object"> >+<!ENTITY btnSelecting.tooltip "Find a node to inspect by clicking on it"> >+<!ENTITY btnFind.tooltip "Find a node to inspect by id, tag, or attribute"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "File"> >+<!ENTITY mnFile.accesskey "F"> >+ <!ENTITY mnInspectContentDocument.label "Inspect Content Document"> >+ <!ENTITY mnInspectContentDocument.accesskey "O"> >+ <!ENTITY mnInspectChromeDocument.label "Inspect Chrome Document"> >+ <!ENTITY mnInspectChromeDocument.accesskey "H"> >+ <!ENTITY mnInspectApplicationAccessible.label "Inspect Application Accessible"> >+ <!ENTITY mnInspectApplicationAccessible.accesskey "A"> >+ <!ENTITY cmdEnterLocation.label "Inspect a URL"> >+ <!ENTITY cmdEnterLocation.accesskey "U"> >+ <!ENTITY cmdEnterLocation.key "L"> >+ <!ENTITY cmdEnterLocation.key2 "D"> >+ <!ENTITY cmdSave.label "Save DOM Asâ¦"> >+ <!ENTITY cmdSave.accesskey "S"> >+ <!ENTITY cmdClose.label "Close"> >+ <!ENTITY cmdClose.accesskey "C"> >+ <!ENTITY cmdExit.label "Exit"> >+ <!ENTITY cmdExit.accesskey "x"> >+ >+<!ENTITY mnEdit.label "Edit"> >+<!ENTITY mnEdit.accesskey "E"> >+ <!ENTITY cmdUndo.label "Undo"> >+ <!ENTITY cmdUndo.accesskey "U"> >+ <!ENTITY cmdRedo.label "Redo"> >+ <!ENTITY cmdRedo.accesskey "R"> >+ <!ENTITY cmdCut.label "Cut"> >+ <!ENTITY cmdCut.accesskey "t"> >+ <!ENTITY cmdCopy.label "Copy"> >+ <!ENTITY cmdCopy.accesskey "C"> >+ <!ENTITY cmdPaste.label "Paste"> >+ <!ENTITY cmdPaste.accesskey "P"> >+ <!ENTITY cmdDelete.label "Delete"> >+ <!ENTITY cmdDelete.accesskey "D"> >+ >+<!ENTITY mnView.label "View"> >+<!ENTITY mnView.accesskey "v"> >+ <!ENTITY mnDocViewerList.label "Document Viewer"> >+ <!ENTITY mnDocViewerList.accesskey "D"> >+ <!ENTITY mnObjectViewerList.label "Object Viewer"> >+ <!ENTITY mnObjectViewerList.accesskey "O"> >+ <!ENTITY cmdToggleDocument.label "Show Document in Browser Pane"> >+ <!ENTITY cmdToggleDocument.accesskey "B"> >+ <!ENTITY cmdToggleSearch.label "Search Results"> >+ <!ENTITY cmdFlashOnSelect.label "Blink Selected Element"> >+ <!ENTITY cmdFlashOnSelect.accesskey "S"> >+ >+<!ENTITY browserPanel.label "Browser"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/inspector.properties b/suite/extensions/inspector/resources/locale/en-US/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/inspector.properties >@@ -0,0 +1,37 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+applicationAccesible.title = Application Accessible >+inspectWindow.noDocuments.message = (None) >+styleRuleNewProperty.title = New Style Rule >+styleRuleEditProperty.title = Edit Style Rule >+styleRulePropertyValue.message = Enter the property value: >+styleRulePropertyName.message = Enter the property name: >+sidebar.title = DOM Inspector >+sidebarInstalled = The sidebar is installed. >+newAttribute.title = New Attribute >+editAttribute.title = Edit Attribute >+findNodesDocumentEnd.message = End of document reached. >+findNodesDocumentEnd.title = Find Nodes >+# LOCALIZATION NOTE (root.title) label displayed for the tree head of the >+# JavaScript Object tree >+root.title = Subject >+ >+irrecoverableSubtree.message = Some of the selected nodes are part of an anonymous subtree that will be destroyed. Deleting these nodes cannot be undone. Do you want to delete the selected nodes? >+irrecoverableSubtree.title = Delete Anonymous Subtree >+ >+# The following items correspond to the node types defined by the W3C DOM Core >+# specification. >+1 = Element >+2 = Attribute >+3 = Text >+4 = CDATA Section >+5 = Entity Reference >+6 = Entity >+7 = Processing Instruction >+8 = Comment >+9 = Document >+10 = Document Type >+11 = Document Fragment >+12 = Notation >diff --git a/suite/extensions/inspector/resources/locale/en-US/prefs.dtd b/suite/extensions/inspector/resources/locale/en-US/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/prefs.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM Inspector"> >+<!ENTITY Sidebar.label "Sidebar"> >+<!ENTITY elementBlinking.label "Element Blinking"> >+<!ENTITY blinkSelectedElement.label "Blink Selected Element"> >+<!ENTITY blinkSelectedElement.accesskey "B"> >+<!ENTITY borderColor.label "Border Color"> >+<!ENTITY borderColor.accesskey "C"> >+<!ENTITY borderWidth.label "Border Width"> >+<!ENTITY borderWidth.accesskey "W"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Blink Duration"> >+<!ENTITY blinkDuration.accesskey "D"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Blink Speed"> >+<!ENTITY blinkSpeed.accesskey "S"> >+<!ENTITY invertColors.label "Invert Colors"> >+<!ENTITY invertColors.accesskey "v"> >+<!ENTITY installHowTo.label "The DOM Inspector Sidebar is not currently installed. Click the 'Install' button to add it to your Sidebar."> >+<!ENTITY install.label "Install"> >+<!ENTITY install.accesskey "I"> >+<!ENTITY addNavigatorHooks.label "Add contextual menus to Navigator"> >+<!ENTITY addNavigatorHooks.accesskey "m"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/en-US/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM Inspector"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "Inspect Page"> >+<!ENTITY inspectPageTaskCmd.accesskey "i"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewer-registry.dtd b/suite/extensions/inspector/resources/locale/en-US/viewer-registry.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewer-registry.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY dom.label "DOM Nodes"> >+<!ENTITY stylesheets.label "Style Sheets"> >+<!ENTITY domNode.label "DOM Node"> >+<!ENTITY boxModel.label "Box Model"> >+<!ENTITY xblBindings.label "XBL Bindings"> >+<!ENTITY styleRules.label "CSS Rules"> >+<!ENTITY computedStyle.label "Computed Style"> >+<!ENTITY usedFontFaces.label "Used Font Faces"> >+<!ENTITY jsObject.label "JavaScript Object"> >+<!ENTITY accessibleEvent.label "Accessible Event"> >+<!ENTITY accessibleObject.label "Accessible Object"> >+<!ENTITY accessibleProps.label "Accessible Properties"> >+<!ENTITY accessibleRelations.label "Accessible Relations"> >+<!ENTITY accessibleEvents.label "Accessible Events"> >+<!ENTITY accessibleTree.label "Accessible Tree"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEvent.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descIsFromUserInput.label "Is from user input: "> >+<!ENTITY descState.label "State: "> >+<!ENTITY descIsEnabled.label "Is state enabled: "> >+<!ENTITY descStartOffset.label "Start offset: "> >+<!ENTITY descLength.label "Length: "> >+<!ENTITY descIsInserted.label "Is text inserted: "> >+<!ENTITY descModifiedText.label "Modified text: "> >+<!ENTITY descCaretOffset.label "Caret offset: "> >+<!ENTITY descrHandlerOutput.label "Event handler output: "> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEvents.dtd >@@ -0,0 +1,23 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventList.label "Event List"> >+<!ENTITY watchedEvents.label "Watched Events"> >+<!ENTITY handledEvents.label "Handled events:"> >+<!ENTITY eventType.label "Event Type"> >+<!ENTITY eventTime.label "Time"> >+<!ENTITY eventTargetNodeName.label "Node Name"> >+<!ENTITY eventTargetNodeID.label "ID"> >+<!ENTITY eventTargetRole.label "Role"> >+<!ENTITY eventTargetName.label "Name"> >+<!ENTITY isWatched.label "Watched"> >+<!ENTITY isHandlerEnabled.label "Handler Enabled"> >+<!ENTITY clearEventList.label "Clear Event List"> >+<!ENTITY chooseEventsToWatch.label "Choose events to watch."> >+<!ENTITY watchAll.label "Watch All"> >+<!ENTITY watchNone.label "Watch None"> >+<!ENTITY editHandler.label "Edit Handler"> >+<!ENTITY contextHelp.label "?"> >+<!ENTITY handlerEditorNoEvent.label "Choose event type to add a handler."> >+ >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEvents.properties b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEvents.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEvents.properties >@@ -0,0 +1,22 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+mutationEvents = mutation events >+changeEvents = change events >+notificationEvents = notification events >+selectionEvents = selection events >+menuEvents = menu events >+documentEvents = document events >+textEvents = text events >+tableEvents = table events >+windowEvents = window events >+hyperLinkEvents = hyper link events >+hyperTextEvents = hyper text events >+ >+handlerEditorLabel = Enable "%S" event handler. >+ >+role = Role >+name = Name >+nodeName = Node Name >+id = ID >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEventsHandlerHelpDialog.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEventsHandlerHelpDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleEventsHandlerHelpDialog.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY helpDialog.title "Handler help dialog"> >+ >+ <!ENTITY general.descr "Write and attach an accessibility event handler. When the event occurs, you can select it in the events list and see the result of the handler evaluation in the linked Accessible Event viewer."> >+ <!ENTITY helpers.descr "The following objects and functions can be used within handler editor:"> >+ >+ <!ENTITY event.descr "accessibility event object"> >+ <!ENTITY target.descr "accessibility target object"> >+ <!ENTITY accRetrieval.descr "nsIAccessibleRetrieval accessibility service"> >+ <!ENTITY output.descr "prints the given string"> >+ <!ENTITY outputAttrs.descr "prints object attributes of the given accessible object"> >+ <!ENTITY outputRole.descr "prints role of the given accessible object"> >+ <!ENTITY outputStates.descr "prints states of the given accessible object"> >+ <!ENTITY outputTree.descr "prints tree for the given accessible object, highlighting accessibles from the given array"> >+ <!ENTITY outputDOMAttrs.descr "prints DOM attributes of the given accessible object"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleProps.dtd >@@ -0,0 +1,29 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descRole.label "Role:"> >+<!ENTITY descName.label "Name:"> >+<!ENTITY descDescription.label "Description:"> >+<!ENTITY descValue.label "Value:"> >+<!ENTITY descState.label "State:"> >+<!ENTITY descBounds.label "Bounds:"> >+<!ENTITY tabAttrs.label "Object attributes"> >+<!ENTITY colAttrName.label "Name"> >+<!ENTITY colAttrValue.label "Value"> >+<!ENTITY tabActions.label "Actions"> >+<!ENTITY descKeyBindings.label "Key bindings:"> >+<!ENTITY descInvoke.label "Invoke"> >+<!ENTITY tabTextAttrs.label "Text attributes"> >+<!ENTITY descDefaultAttrs.label "Default attributes:"> >+<!ENTITY descStartOffset.label "Start offset:"> >+<!ENTITY descEndOffset.label "End offset:"> >+<!ENTITY tabTableCell.label "Table cell"> >+<!ENTITY descColumnIdx.label "Column index:"> >+<!ENTITY descRowIdx.label "Row index:"> >+<!ENTITY descColumnExtent.label "Column extent:"> >+<!ENTITY descRowExtent.label "Row extent:"> >+<!ENTITY descIsSelected.label "Is selected:"> >+<!ENTITY colProp.label "Property"> >+<!ENTITY colRole.label "Role"> >+<!ENTITY colName.label "Name"> >+<!ENTITY colNodeName.label "Node name"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleProps.properties b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleProps.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleProps.properties >@@ -0,0 +1,5 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+accBounds = x: %S; y: %S; width: %S; height: %S; >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleRelations.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY relationType.label "Relation Type"> >+<!ENTITY role.label "Role"> >+<!ENTITY nodeName.label "Node Name"> >+<!ENTITY relations.label "Relations: "> >+<!ENTITY relationTargets.label "Relation Targets: "> >+ >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleTree.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "Role"> >+<!ENTITY name.label "Name"> >+<!ENTITY nodeName.label "Node Name"> >+ >+<!ENTITY evaluateJS.label "Evaluate JavaScript"> >+ >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleTreeEvalJSDialog.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleTreeEvalJSDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/accessibleTreeEvalJSDialog.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY evaluateDialog.title "Evaluate JavaScript Dialog"> >+ >+ <!ENTITY btnEvaluateJS.label "Evaluate"> >+ <!ENTITY btnEvaluateJS.accesskey "E"> >+ >+ <!ENTITY txtInputArea.label "Input Area (use 'accessible' variable to operate with the selected accessible and 'output' function to write into 'Output Area' window, 'tree.search(accessible, filterfunc)' to search and 'tree.clearSearch()' to clear search results): "> >+ <!ENTITY txtInputArea.accesskey "I"> >+ <!ENTITY txtOutputArea.label "Output Area: "> >+ <!ENTITY txtOutputArea.accesskey "O"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/boxModel.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Position"> >+<!ENTITY boxDimension.label "Dimensions"> >+<!ENTITY boxMargin.label "Margin"> >+<!ENTITY boxBorder.label "Border"> >+<!ENTITY boxPadding.label "Padding"> >+ >+<!ENTITY xCoord.label "x"> >+<!ENTITY yCoord.label "y"> >+<!ENTITY screenXCoord.label "screen x"> >+<!ENTITY screenYCoord.label "screen y"> >+ >+<!ENTITY dimensionWidth.label "box width"> >+<!ENTITY dimensionHeight.label "box height"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Property"> >+<!ENTITY propertyValue.label "Value"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/dom.dtd >@@ -0,0 +1,138 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "Find Nodesâ¦"> >+ <!ENTITY cmdShowFindDialog.accesskey "f"> >+ <!ENTITY cmdShowFindDialog.key "f"> >+ >+ <!ENTITY cmdFindAgain.label "Find Again"> >+ <!ENTITY cmdFindAgain.accesskey "g"> >+ <!ENTITY cmdFindAgain.key "G"> >+ >+ <!ENTITY cmdToggleAnonContent.label "Show Anonymous Content"> >+ <!ENTITY cmdToggleAnonContent.accesskey "a"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "Show Whitespace Nodes"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "W"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "Show Accessible Nodes"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "c"> >+ >+ <!ENTITY cmdToggleProcessingInstructions.label "Show Processing Instructions"> >+ <!ENTITY cmdToggleProcessingInstructions.accesskey "P"> >+ >+ <!ENTITY cmdToggleAttributes.label "Show Attributes"> >+ <!ENTITY cmdToggleAttributes.accesskey "r"> >+ >+ <!ENTITY cmdSelectByClick.label "Select Element By Click"> >+ <!ENTITY cmdSelectByClick.accesskey "s"> >+ >+ <!ENTITY ColumnsDialog.title "Columns"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "Columnsâ¦"> >+ <!ENTITY cmdShowColumnsDialog.accesskey "c"> >+ >+ <!ENTITY cmdInsertNode.label "Insertâ¦"> >+ <!ENTITY cmdDeleteNode.label "Delete"> >+ <!ENTITY cmdCopyXML.label "Copy XML"> >+ <!ENTITY cmdCopyXML.accesskey "X"> >+ <!ENTITY cmdBlink.label "Blink Element"> >+ <!ENTITY cmdBlink.accesskey "B"> >+ <!ENTITY cmdInspectBrowser.label "Inspect Contained Document"> >+ <!ENTITY cmdInspectBrowser.accesskey "e"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "Set Pseudo-classesâ¦"> >+ <!ENTITY cmdShowPseudoClasses.accesskey "S"> >+ >+ <!ENTITY pseudoClasses.title "Pseudo-classes"> >+ >+ <!ENTITY findNodes.title "Find Nodes"> >+ <!ENTITY findNodesById.label "Id"> >+ <!ENTITY findNodesById.accesskey "I"> >+ <!ENTITY findNodesById.accesskey2 "d"> >+ <!ENTITY findNodesByTag.label "Tag"> >+ <!ENTITY findNodesByTag.accesskey "T"> >+ <!ENTITY findNodesByTag.accesskey2 "g"> >+ <!ENTITY findNodesByAttr.label "Attr"> >+ <!ENTITY findNodesByAttr.accesskey "A"> >+ <!ENTITY findNodesByAttr.accesskey2 "r"> >+ <!ENTITY findNodesByAttrValue.label "Value"> >+ <!ENTITY findNodesByAttrValue.accesskey "V"> >+ <!ENTITY findNodesSearchBy.label "Search By"> >+ <!ENTITY findNodesDirection.label "Direction"> >+ <!ENTITY findNodesDirectionUp.label "Up"> >+ <!ENTITY findNodesDirectionUp.accesskey "U"> >+ <!ENTITY findNodesDirectionDown.label "Down"> >+ <!ENTITY findNodesDirectionDown.accesskey "w"> >+ <!ENTITY findNodesFind.label "Find"> >+ <!ENTITY findNodesCancel.label "Cancel"> >+ >+ <!ENTITY mnEditPasteMenu.label "Paste"> >+ <!ENTITY mnEditPasteMenu.accesskey "P"> >+ <!ENTITY mnEditPasteBefore.label "Before"> >+ <!ENTITY mnEditPasteBefore.accesskey "B"> >+ <!ENTITY mnEditPasteAfter.label "After"> >+ <!ENTITY mnEditPasteAfter.accesskey "A"> >+ <!ENTITY mnEditPasteReplace.label "In place of (Replace)"> >+ <!ENTITY mnEditPasteReplace.accesskey "I"> >+ <!ENTITY mnEditPasteFirstChild.label "As first child"> >+ <!ENTITY mnEditPasteFirstChild.accesskey "f"> >+ <!ENTITY mnEditPasteLastChild.label "As last child"> >+ <!ENTITY mnEditPasteLastChild.accesskey "c"> >+ <!ENTITY mnEditPasteAsParent.label "As parent"> >+ <!ENTITY mnEditPasteAsParent.accesskey "r"> >+ >+ <!ENTITY mnEditInsertMenu.label "Insert"> >+ <!ENTITY mnEditInsertMenu.accesskey "I"> >+ <!ENTITY mnEditInsertAfter.label "After"> >+ <!ENTITY mnEditInsertAfter.accesskey "A"> >+ <!ENTITY mnEditInsertBefore.label "Before"> >+ <!ENTITY mnEditInsertBefore.accesskey "B"> >+ <!ENTITY mnEditInsertFirstChild.label "As first child"> >+ <!ENTITY mnEditInsertFirstChild.accesskey "f"> >+ <!ENTITY mnEditInsertLastChild.label "As last child"> >+ <!ENTITY mnEditInsertLastChild.accesskey "c"> >+ >+ <!ENTITY insertNode.title "Insert Node"> >+ <!ENTITY nodeType.label "Node Type:"> >+ <!ENTITY nodeType.accesskey "T"> >+ <!ENTITY nodeType.element.label "Element"> >+ <!ENTITY nodeType.text.label "Text"> >+ <!ENTITY namespaceURI.label "Namespace URI:"> >+ <!ENTITY namespaceURI.accesskey "U"> >+ <!ENTITY tagName.label "Tag Name:"> >+ <!ENTITY tagName.accesskey "N"> >+ <!ENTITY nodeValue.label "Node Value:"> >+ <!ENTITY nodeValue.accesskey "V"> >+ >+ <!ENTITY namespaceTitle.null.label "null"> >+ <!ENTITY namespaceTitle.default.label "Document Default"> >+ <!ENTITY namespaceTitle.custom.label "Custom"> >+ >+ <!-- LOCALIZATION NOTE: The following entities are names of W3C >+ specifications. Please consult >+ http://www.w3.org/Consortium/Translation/ for appropriate translation >+ or leave unchanged. --> >+ <!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+ <!ENTITY namespaceTitle.XML.label "XML"> >+ <!ENTITY namespaceTitle.XHTML.label "XHTML"> >+ <!ENTITY namespaceTitle.XLink.label "XLink"> >+ <!ENTITY namespaceTitle.XSLT.label "XSLT"> >+ <!ENTITY namespaceTitle.XBL.label "XBL"> >+ <!ENTITY namespaceTitle.MathML.label "MathML"> >+ <!ENTITY namespaceTitle.RDF.label "RDF"> >+ <!ENTITY namespaceTitle.XUL.label "XUL"> >+ <!ENTITY namespaceTitle.SVG.label "SVG"> >+ <!ENTITY namespaceTitle.XMLEvents.label "XML Events"> >+ <!ENTITY namespaceTitle.WAIRoles.label "WAI Roles"> >+ <!ENTITY namespaceTitle.WAIProperties.label "WAI Properties"> >+ >+ <!-- LOCALIZATION NOTE: Localizers can choose not to translate the following >+ access keys. For a discussion about the pros and cons of such a >+ decision, see https://bugzilla.mozilla.org/show_bug.cgi?id=398704, >+ comments 1 and 2. --> >+ <!ENTITY cbxStateHover.accesskey "h"> >+ <!ENTITY cbxStateActive.accesskey "a"> >+ <!ENTITY cbxStateFocus.accesskey "f"> >+ >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/domNode.dtd >@@ -0,0 +1,31 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Node Name:"> >+<!ENTITY localName.label "Local Name:"> >+<!ENTITY namespaceURI.label "Namespace URI:"> >+<!ENTITY nodeType.label "Node Type:"> >+<!ENTITY nodeValue.label "Node Value:"> >+<!ENTITY grpAttr.label "Attributes"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "Document Default"> >+<!ENTITY namespaceTitle.custom.label "Custom"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "XML Events"> >+<!ENTITY namespaceTitle.WAIRoles.label "WAI Roles"> >+<!ENTITY namespaceTitle.WAIProperties.label "WAI Properties"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Copy Value"> >+<!ENTITY jsEval.label "Evaluate JavaScriptâ¦"> >+ >+<!ENTITY jsProperty.label "Property"> >+<!ENTITY jsValue.label "Value"> >+ >+<!ENTITY evaluateDialog.title "Evaluate Expression"> >+<!ENTITY jsEval.desc "Enter a JavaScript expression. The variable "target" is the property that is currently selected."> >+<!ENTITY jsExecute.label "Execute"> >+<!ENTITY inspectReturn.label "Inspect return in"> >+<!ENTITY inspectReturnNew.label "New window"> >+<!ENTITY inspectReturnExisting.label "Existing window"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/styleRules.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "Find CSS Rulesâ¦"> >+<!ENTITY miFindCSSRules.accesskey "F"> >+ >+<!ENTITY newRules.label "New"> >+<!ENTITY deleteSelectedRules.label "Delete"> >+<!ENTITY disableSelectedRules.label "Disable"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Toggle !important"> >+ >+<!ENTITY styleRule.label "Rule"> >+<!ENTITY styleRuleURI.label "File"> >+<!ENTITY styleRuleLineNumber.label "Line"> >+ >+<!ENTITY styleRulePropPriority.label "Priority"> >+<!ENTITY styleRulePropName.label "Property"> >+<!ENTITY styleRulePropValue.label "Value"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Style Sheet"> >+<!ENTITY sheetRules.label "Rules"> >+ >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/usedFontFaces.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/usedFontFaces.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/usedFontFaces.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY fontName.label "Font Name"> >+<!ENTITY cssFamilyName.label "Family Name"> >+<!ENTITY uri.label "URI"> >+<!ENTITY localName.label "Local Name"> >+<!ENTITY format.label "Format"> >diff --git a/suite/extensions/inspector/resources/locale/en-US/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/en-US/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/en-US/viewers/xblBindings.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "Content"> >+<!ENTITY bindingMethods.label "Methods"> >+<!ENTITY bindingMethodName.label "Method Name"> >+<!ENTITY bindingProperties.label "Properties"> >+<!ENTITY bindingGetter.label "Getter"> >+<!ENTITY bindingSetter.label "Setter"> >+<!ENTITY bindingProperty.label "Property"> >+<!ENTITY bindingHandlers.label "Handlers"> >+<!ENTITY bindingHandlerEvent.label "Event"> >+<!ENTITY bindingHandlerPhase.label "Phase"> >+<!ENTITY bindingResources.label "Resources"> >+<!ENTITY bindingResourceType.label "Type"> >+<!ENTITY bindingResourceSrc.label "Source"> >+<!ENTITY bindingSourceCode.label "Source Code"> >diff --git a/suite/extensions/inspector/resources/locale/fi/editing.dtd b/suite/extensions/inspector/resources/locale/fi/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/editing.dtd >@@ -0,0 +1,27 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Kumoa"> >+<!ENTITY mnEditUndo.accesskey "m"> >+<!ENTITY mnEditRedo.label "Tee uudelleen"> >+<!ENTITY mnEditRedo.accesskey "T"> >+<!ENTITY mnEditCut.label "Leikkaa"> >+<!ENTITY mnEditCut.accesskey "L"> >+<!ENTITY mnEditCopy.label "Kopioi"> >+<!ENTITY mnEditCopy.accesskey "K"> >+<!ENTITY mnEditPaste.label "Liitä"> >+<!ENTITY mnEditPaste.accesskey "i"> >+<!ENTITY mnEditInsert.label "Lisää"> >+<!ENTITY mnEditInsert.accesskey "L"> >+<!ENTITY mnEditEdit.label "Muokkaa"> >+<!ENTITY mnEditEdit.accesskey "M"> >+<!ENTITY mnEditDelete.label "Poista"> >+<!ENTITY mnEditDelete.accesskey "o"> >+<!ENTITY mnEditInspectInNewWindow.label "Tutki uudessa ikkunassa"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "d"> >+<!ENTITY mnEditInspectInNewWindow.key "I"> >+<!ENTITY mnEditCopyFileURI.label "Kopioi URI"> >+<!ENTITY mnEditCopyFileURI.accesskey "U"> >+<!ENTITY mnEditViewFileURI.label "Näytä tiedosto"> >+<!ENTITY mnEditViewFileURI.accesskey "N"> >diff --git a/suite/extensions/inspector/resources/locale/fi/inspector.dtd b/suite/extensions/inspector/resources/locale/fi/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/inspector.dtd >@@ -0,0 +1,67 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM-tutkija"> >+ >+<!ENTITY thDOMNodes.label "DOM-solmuja"> >+<!ENTITY btnInspect.label "Tutki"> >+<!ENTITY btnInspect.accesskey "T"> >+<!ENTITY bxDocPanel.title "Asiakirja"> >+<!ENTITY bxObjectPanel.title "Objekti"> >+<!ENTITY btnSelecting.tooltip "Napsauta solmua, jota haluat tutkia"> >+<!ENTITY btnFind.tooltip "Valitse tutkittava solmu tunnisteen, tagin tai attribuutin perusteella"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Tiedosto"> >+<!ENTITY mnFile.accesskey "T"> >+ <!ENTITY mnInspectContentDocument.label "Tutki sisältödokumentti"> >+ <!ENTITY mnInspectContentDocument.accesskey "T"> >+ <!ENTITY mnInspectChromeDocument.label "Tutki chrome-dokumentti"> >+ <!ENTITY mnInspectChromeDocument.accesskey "c"> >+ <!ENTITY mnInspectApplicationAccessible.label "Tutki sovelluksen esteettömyysmuuttujaa"> >+ <!ENTITY mnInspectApplicationAccessible.accesskey "o"> >+ <!ENTITY cmdEnterLocation.label "Tutki sijainti"> >+ <!ENTITY cmdEnterLocation.accesskey "u"> >+ <!ENTITY cmdEnterLocation.key "L"> >+ <!ENTITY cmdEnterLocation.key2 "D"> >+ <!ENTITY cmdSave.label "Tallenna DOM nimelläâ¦"> >+ <!ENTITY cmdSave.accesskey "a"> >+ <!ENTITY cmdClose.label "Sulje"> >+ <!ENTITY cmdClose.accesskey "S"> >+ <!ENTITY cmdExit.label "Lopeta"> >+ <!ENTITY cmdExit.accesskey "L"> >+ >+<!ENTITY mnEdit.label "Muokkaa"> >+<!ENTITY mnEdit.accesskey "M"> >+ <!ENTITY cmdUndo.label "Kumoa"> >+ <!ENTITY cmdUndo.accesskey "m"> >+ <!ENTITY cmdRedo.label "Tee uudelleen"> >+ <!ENTITY cmdRedo.accesskey "T"> >+ <!ENTITY cmdCut.label "Leikkaa"> >+ <!ENTITY cmdCut.accesskey "L"> >+ <!ENTITY cmdCopy.label "Kopioi"> >+ <!ENTITY cmdCopy.accesskey "K"> >+ <!ENTITY cmdPaste.label "Liitä"> >+ <!ENTITY cmdPaste.accesskey "i"> >+ <!ENTITY cmdDelete.label "Poista"> >+ <!ENTITY cmdDelete.accesskey "o"> >+ >+<!ENTITY mnView.label "Näytä"> >+<!ENTITY mnView.accesskey "N"> >+ <!ENTITY mnDocViewerList.label "Dokumenttikatselin"> >+ <!ENTITY mnDocViewerList.accesskey "D"> >+ <!ENTITY mnObjectViewerList.label "Objektikatselin"> >+ <!ENTITY mnObjectViewerList.accesskey "O"> >+ <!ENTITY cmdToggleDocument.label "Näytä dokumentti selainpaneelissa"> >+ <!ENTITY cmdToggleDocument.accesskey "s"> >+ <!ENTITY cmdToggleSearch.label "Hakutulokset"> >+ <!ENTITY cmdFlashOnSelect.label "Valittu elementti vilkkuu"> >+ <!ENTITY cmdFlashOnSelect.accesskey "V"> >+ >+<!ENTITY browserPanel.label "Selain"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/fi/inspector.properties b/suite/extensions/inspector/resources/locale/fi/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/inspector.properties >@@ -0,0 +1,37 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+applicationAccesible.title = Sovelluksen esteettömysmuuttuja >+inspectWindow.noDocuments.message = (ei mitään) >+styleRuleNewProperty.title = Uusi tyylisääntö >+styleRuleEditProperty.title = Muokkaa tyylisääntöä >+styleRulePropertyValue.message = Anna ominaisuudelle arvo: >+styleRulePropertyName.message = Anna ominaisuudelle nimi: >+sidebar.title = DOM-tutkija >+sidebarInstalled = Sivupaneeli on asennettu. >+newAttribute.title = Uusi attribuutti >+editAttribute.title = Muokkaa attribuuttia >+findNodesDocumentEnd.message = Dokumentin loppu. >+findNodesDocumentEnd.title = Etsi solmuja >+# LOCALIZATION NOTE (root.title) label displayed for the tree head of the >+# JavaScript Object tree >+root.title = Otsikko >+ >+irrecoverableSubtree.message = Jotkin valituista solmuista ovat osa nimetöntä alipuuta, joka tullaan tuhoamaan. Näiden solmujen poistoa ei voi kumota. Haluatko poistaa valitut solmut? >+irrecoverableSubtree.title = Poista nimetön alipuu >+ >+# The following items correspond to the node types defined by the W3C DOM Core >+# specification. >+1 = Elementti >+2 = Attribuutti >+3 = Teksti >+4 = CDATA-osio >+5 = Entiteettireferenssi >+6 = Entiteetti >+7 = Prosessointiohje >+8 = Kommentti >+9 = Dokumentti >+10 = Dokumentin tyyppi >+11 = Dokumentin osa >+12 = Notaatio >diff --git a/suite/extensions/inspector/resources/locale/fi/prefs.dtd b/suite/extensions/inspector/resources/locale/fi/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/prefs.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM-tutkija"> >+<!ENTITY Sidebar.label "Sivupaneeli"> >+<!ENTITY elementBlinking.label "Elementin vilkkuminen"> >+<!ENTITY blinkSelectedElement.label "Valittu elementti vilkkuu"> >+<!ENTITY blinkSelectedElement.accesskey "V"> >+<!ENTITY borderColor.label "Reunuksen väri"> >+<!ENTITY borderColor.accesskey "R"> >+<!ENTITY borderWidth.label "Reunuksen leveys"> >+<!ENTITY borderWidth.accesskey "e"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Vilkahduksen kesto"> >+<!ENTITY blinkDuration.accesskey "i"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Vilkkumisnopeus"> >+<!ENTITY blinkSpeed.accesskey "k"> >+<!ENTITY invertColors.label "Käänteiset värit"> >+<!ENTITY invertColors.accesskey "ä"> >+<!ENTITY installHowTo.label "DOM-tutkijan sivupaneelia ei ole asennettu. Paina 'Asenna'-painiketta, jos haluat asentaa sen sivupaneeliin."> >+<!ENTITY install.label "Asenna"> >+<!ENTITY install.accesskey "A"> >+<!ENTITY addNavigatorHooks.label "Lisää pikavalikot selaimeen"> >+<!ENTITY addNavigatorHooks.accesskey "L"> >diff --git a/suite/extensions/inspector/resources/locale/fi/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/fi/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM-tutkija"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "D"> >+<!ENTITY inspectorTaskCmd.accesskey "D"> >+ >+<!ENTITY inspectPageTaskCmd.label "Tutki sivu"> >+<!ENTITY inspectPageTaskCmd.accesskey "T"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewer-registry.dtd b/suite/extensions/inspector/resources/locale/fi/viewer-registry.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewer-registry.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY dom.label "DOM-solmut"> >+<!ENTITY stylesheets.label "Tyylimäärittelyt"> >+<!ENTITY domNode.label "DOM-solmu"> >+<!ENTITY boxModel.label "Laatikkomalli"> >+<!ENTITY xblBindings.label "XBL-sidonnat"> >+<!ENTITY styleRules.label "CSS-säännöt"> >+<!ENTITY computedStyle.label "Laskettu tyyli"> >+<!ENTITY usedFontFaces.label "Käytetyt kirjasintyypit"> >+<!ENTITY jsObject.label "JavaScript-olio"> >+<!ENTITY accessibleEvent.label "Esteettömyystapahtuma"> >+<!ENTITY accessibleObject.label "Esteettömyysolio"> >+<!ENTITY accessibleProps.label "Esteettömyysominaisuudet"> >+<!ENTITY accessibleRelations.label "Esteettömyyssuhteet"> >+<!ENTITY accessibleEvents.label "Esteettömyystapahtumat"> >+<!ENTITY accessibleTree.label "Esteettömyyspuu"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEvent.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descIsFromUserInput.label "On käyttäjän syötteestä: "> >+<!ENTITY descState.label "Tila: "> >+<!ENTITY descIsEnabled.label "Onko tila päällä: "> >+<!ENTITY descStartOffset.label "Aloitusetäisyys: "> >+<!ENTITY descLength.label "Pituus: "> >+<!ENTITY descIsInserted.label "Onko tekstiä lisätty: "> >+<!ENTITY descModifiedText.label "Muutettu teksti: "> >+<!ENTITY descCaretOffset.label "Etäisyys kohdistimeen: "> >+<!ENTITY descrHandlerOutput.label "Tapahtumakäsittelijän tuloste: "> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEvents.dtd >@@ -0,0 +1,23 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventList.label "Tapahtumaluettelo"> >+<!ENTITY watchedEvents.label "Seuratut tapahtumat"> >+<!ENTITY handledEvents.label "Käsitellyt tapahtumat:"> >+<!ENTITY eventType.label "Tapahtuman tyyppi"> >+<!ENTITY eventTime.label "Aika"> >+<!ENTITY eventTargetNodeName.label "Solmun nimi"> >+<!ENTITY eventTargetNodeID.label "Tunniste"> >+<!ENTITY eventTargetRole.label "Rooli"> >+<!ENTITY eventTargetName.label "Nimi"> >+<!ENTITY isWatched.label "Seurattavana"> >+<!ENTITY isHandlerEnabled.label "Käsittelijä on käytössä"> >+<!ENTITY clearEventList.label "Tyhjennä tapahtumalista"> >+<!ENTITY chooseEventsToWatch.label "Valitse seurattavat tapahtumat"> >+<!ENTITY watchAll.label "Seuraa kaikkia"> >+<!ENTITY watchNone.label "Ãlä seuraa yhtäkään"> >+<!ENTITY editHandler.label "Muokkaa käsittelijää"> >+<!ENTITY contextHelp.label "?"> >+<!ENTITY handlerEditorNoEvent.label "Valitse tapahtumatyyppi lisätäksesi käsittelijän."> >+ >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEvents.properties b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEvents.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEvents.properties >@@ -0,0 +1,22 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+mutationEvents = mutaatiotapahtumat >+changeEvents = muutostapahtumat >+notificationEvents = ilmoitustapahtumat >+selectionEvents = valintatapahtumat >+menuEvents = valikkotapahtumat >+documentEvents = dokumenttitapahtumat >+textEvents = tekstitapahtumat >+tableEvents = taulukkotapahtumat >+windowEvents = ikkunatapahtumat >+hyperLinkEvents = hyperlinkkitapahtumat >+hyperTextEvents = hypertekstitapahtumat >+ >+handlerEditorLabel = Ota käyttöön "%S"-tapahtumakäsittelijä. >+ >+role = Rooli >+name = Nimi >+nodeName = Solmun nimi >+id = ID >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEventsHandlerHelpDialog.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEventsHandlerHelpDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleEventsHandlerHelpDialog.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY helpDialog.title "Käsittelijän ohjeikkuna"> >+ >+ <!ENTITY general.descr "Kirjoita ja liitä esteettömyystapahtumakäsittelijä. Kun tapahtuma ilmenee, voit valita sen tapahtumaluettelosta ja katsoa käsittelijän suorituksen tuloksen linkitetystä esteettömyystapahtumakatselimesta."> >+ <!ENTITY helpers.descr "Käsittelijämuokkaimessa voi käyttää seuraavia olioita ja funktioita:"> >+ >+ <!ENTITY event.descr "esteettömyystapahtumaolio"> >+ <!ENTITY target.descr "esteettömyyskohdeolio"> >+ <!ENTITY accRetrieval.descr "nsIAccessibleRetrieval-esteettömyyspalvelu"> >+ <!ENTITY output.descr "tulostaa annetun merkkijonon"> >+ <!ENTITY outputAttrs.descr "tulostaa annetun esteettömyysolion olioattribuutit"> >+ <!ENTITY outputRole.descr "tulostaa annetun esteettömyysolion roolin"> >+ <!ENTITY outputStates.descr "tulostaa annetun esteettömyysolion tilat"> >+ <!ENTITY outputTree.descr "tulostaa annetun esteettömyysolion puun ja korostaa esteettömyysmuuttujat annetussa taulukossa"> >+ <!ENTITY outputDOMAttrs.descr "tulostaa annetun esteettömyysolion DOM-attribuutit"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleProps.dtd >@@ -0,0 +1,29 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descRole.label "Rooli:"> >+<!ENTITY descName.label "Nimi:"> >+<!ENTITY descDescription.label "Kuvaus:"> >+<!ENTITY descValue.label "Arvo:"> >+<!ENTITY descState.label "Tila:"> >+<!ENTITY descBounds.label "Raja-arvot:"> >+<!ENTITY tabAttrs.label "Objektin attribuutit"> >+<!ENTITY colAttrName.label "Nimi"> >+<!ENTITY colAttrValue.label "Arvo"> >+<!ENTITY tabActions.label "Toiminnot"> >+<!ENTITY descKeyBindings.label "Näppäinsidonnat:"> >+<!ENTITY descInvoke.label "Kutsu"> >+<!ENTITY tabTextAttrs.label "Tekstiattribuutit"> >+<!ENTITY descDefaultAttrs.label "Oletusattribuutit:"> >+<!ENTITY descStartOffset.label "Aloitusetäisyys:"> >+<!ENTITY descEndOffset.label "Lopetusetäisyys:"> >+<!ENTITY tabTableCell.label "Taulukon solu"> >+<!ENTITY descColumnIdx.label "Sarakeindeksi:"> >+<!ENTITY descRowIdx.label "Rivi-indeksi:"> >+<!ENTITY descColumnExtent.label "Sarakemäärä:"> >+<!ENTITY descRowExtent.label "Rivimäärä:"> >+<!ENTITY descIsSelected.label "Valittu:"> >+<!ENTITY colProp.label "Ominaisuus"> >+<!ENTITY colRole.label "Rooli"> >+<!ENTITY colName.label "Nimi"> >+<!ENTITY colNodeName.label "Solmun nimi"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/accessibleProps.properties b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleProps.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleProps.properties >@@ -0,0 +1,5 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+accBounds = x: %S; y: %S; leveys: %S; korkeus: %S; >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleRelations.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY relationType.label "Suhdetyyppi"> >+<!ENTITY role.label "Rooli"> >+<!ENTITY nodeName.label "Solmun nimi"> >+<!ENTITY relations.label "Suhteet: "> >+<!ENTITY relationTargets.label "Suhdekohteet: "> >+ >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleTree.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "Rooli"> >+<!ENTITY name.label "Nimi"> >+<!ENTITY nodeName.label "Solmun nimi"> >+ >+<!ENTITY evaluateJS.label "Suorita JavaScript"> >+ >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/accessibleTreeEvalJSDialog.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleTreeEvalJSDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/accessibleTreeEvalJSDialog.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY evaluateDialog.title "Suorita JavaScript -dialogi"> >+ >+ <!ENTITY btnEvaluateJS.label "Suorita"> >+ <!ENTITY btnEvaluateJS.accesskey "S"> >+ >+ <!ENTITY txtInputArea.label "Syötekenttä (voit käyttää accessible-muuttujaa valitun esteettömyysolion hallintaan ja output-funktiota kirjoittaaksesi tulostekenttään. 'tree.search(esteettömyysolio, suodatusfunktio)' etsii hakutuloksista ja 'tree.clearSearch()' nollaa hakutulokset): "> >+ <!ENTITY txtInputArea.accesskey "y"> >+ <!ENTITY txtOutputArea.label "Tulostealue: "> >+ <!ENTITY txtOutputArea.accesskey "T"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/boxModel.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Sijainti"> >+<!ENTITY boxDimension.label "Mitat"> >+<!ENTITY boxMargin.label "Marginaalit"> >+<!ENTITY boxBorder.label "Reunukset"> >+<!ENTITY boxPadding.label "Sisennys"> >+ >+<!ENTITY xCoord.label "x"> >+<!ENTITY yCoord.label "y"> >+<!ENTITY screenXCoord.label "ruutu-x"> >+<!ENTITY screenYCoord.label "ruutu-y"> >+ >+<!ENTITY dimensionWidth.label "laatikon leveys"> >+<!ENTITY dimensionHeight.label "laatikon korkeus"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Ominaisuus"> >+<!ENTITY propertyValue.label "Arvo"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/dom.dtd >@@ -0,0 +1,138 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "Etsi solmujaâ¦"> >+ <!ENTITY cmdShowFindDialog.accesskey "E"> >+ <!ENTITY cmdShowFindDialog.key "f"> >+ >+ <!ENTITY cmdFindAgain.label "Etsi seuraava"> >+ <!ENTITY cmdFindAgain.accesskey "s"> >+ <!ENTITY cmdFindAgain.key "G"> >+ >+ <!ENTITY cmdToggleAnonContent.label "Näytä nimeämätön sisältö"> >+ <!ENTITY cmdToggleAnonContent.accesskey "N"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "Näytä tyhjät (whitespace) solmut"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "t"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "Näytä 'accessible'-solmut"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "a"> >+ >+ <!ENTITY cmdToggleProcessingInstructions.label "Näytä prosessointiohjeet"> >+ <!ENTITY cmdToggleProcessingInstructions.accesskey "p"> >+ >+ <!ENTITY cmdToggleAttributes.label "Näytä attribuutit"> >+ <!ENTITY cmdToggleAttributes.accesskey "r"> >+ >+ <!ENTITY cmdSelectByClick.label "Valitse elementti napsauttamalla"> >+ <!ENTITY cmdSelectByClick.accesskey "V"> >+ >+ <!ENTITY ColumnsDialog.title "Sarakkeet"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "Sarakkeitaâ¦"> >+ <!ENTITY cmdShowColumnsDialog.accesskey "S"> >+ >+ <!ENTITY cmdInsertNode.label "Lisääâ¦"> >+ <!ENTITY cmdDeleteNode.label "Poista"> >+ <!ENTITY cmdCopyXML.label "Kopioi XML"> >+ <!ENTITY cmdCopyXML.accesskey "X"> >+ <!ENTITY cmdBlink.label "Elementti vilkkumaan"> >+ <!ENTITY cmdBlink.accesskey "E"> >+ <!ENTITY cmdInspectBrowser.label "Tutki sisällettyä dokumenttia"> >+ <!ENTITY cmdInspectBrowser.accesskey "e"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "Aseta pseudoluokkiaâ¦"> >+ <!ENTITY cmdShowPseudoClasses.accesskey "s"> >+ >+ <!ENTITY pseudoClasses.title "Pseudoluokat"> >+ >+ <!ENTITY findNodes.title "Etsi solmuja"> >+ <!ENTITY findNodesById.label "Tunniste"> >+ <!ENTITY findNodesById.accesskey "T"> >+ <!ENTITY findNodesById.accesskey2 "d"> >+ <!ENTITY findNodesByTag.label "Avainsana"> >+ <!ENTITY findNodesByTag.accesskey "A"> >+ <!ENTITY findNodesByTag.accesskey2 "g"> >+ <!ENTITY findNodesByAttr.label "Attribuutti"> >+ <!ENTITY findNodesByAttr.accesskey "A"> >+ <!ENTITY findNodesByAttr.accesskey2 "r"> >+ <!ENTITY findNodesByAttrValue.label "Arvo"> >+ <!ENTITY findNodesByAttrValue.accesskey "A"> >+ <!ENTITY findNodesSearchBy.label "Etsintäperuste"> >+ <!ENTITY findNodesDirection.label "Suunta"> >+ <!ENTITY findNodesDirectionUp.label "Ylös"> >+ <!ENTITY findNodesDirectionUp.accesskey "Y"> >+ <!ENTITY findNodesDirectionDown.label "Alas"> >+ <!ENTITY findNodesDirectionDown.accesskey "A"> >+ <!ENTITY findNodesFind.label "Etsi"> >+ <!ENTITY findNodesCancel.label "Peru"> >+ >+ <!ENTITY mnEditPasteMenu.label "Liitä"> >+ <!ENTITY mnEditPasteMenu.accesskey "i"> >+ <!ENTITY mnEditPasteBefore.label "Ennen"> >+ <!ENTITY mnEditPasteBefore.accesskey "E"> >+ <!ENTITY mnEditPasteAfter.label "Jälkeen"> >+ <!ENTITY mnEditPasteAfter.accesskey "ä"> >+ <!ENTITY mnEditPasteReplace.label "Korvaa"> >+ <!ENTITY mnEditPasteReplace.accesskey "K"> >+ <!ENTITY mnEditPasteFirstChild.label "Ensimmäisenä lapsiobjektina"> >+ <!ENTITY mnEditPasteFirstChild.accesskey "E"> >+ <!ENTITY mnEditPasteLastChild.label "Viimeisenä lapsiobjektina"> >+ <!ENTITY mnEditPasteLastChild.accesskey "V"> >+ <!ENTITY mnEditPasteAsParent.label "Vanhempiobjektina"> >+ <!ENTITY mnEditPasteAsParent.accesskey "V"> >+ >+ <!ENTITY mnEditInsertMenu.label "Lisää"> >+ <!ENTITY mnEditInsertMenu.accesskey "s"> >+ <!ENTITY mnEditInsertAfter.label "Jälkeen"> >+ <!ENTITY mnEditInsertAfter.accesskey "ä"> >+ <!ENTITY mnEditInsertBefore.label "Ennen"> >+ <!ENTITY mnEditInsertBefore.accesskey "E"> >+ <!ENTITY mnEditInsertFirstChild.label "Ensimmäisenä lapsiobjektina"> >+ <!ENTITY mnEditInsertFirstChild.accesskey "E"> >+ <!ENTITY mnEditInsertLastChild.label "Viimeisenä lapsiobjektina"> >+ <!ENTITY mnEditInsertLastChild.accesskey "V"> >+ >+ <!ENTITY insertNode.title "Lisää solmu"> >+ <!ENTITY nodeType.label "Solmun tyyppi:"> >+ <!ENTITY nodeType.accesskey "t"> >+ <!ENTITY nodeType.element.label "Elementti"> >+ <!ENTITY nodeType.text.label "Teksti"> >+ <!ENTITY namespaceURI.label "Nimiavaruusosoite:"> >+ <!ENTITY namespaceURI.accesskey "N"> >+ <!ENTITY tagName.label "Tagin nimi:"> >+ <!ENTITY tagName.accesskey "n"> >+ <!ENTITY nodeValue.label "Solmun arvo:"> >+ <!ENTITY nodeValue.accesskey "a"> >+ >+ <!ENTITY namespaceTitle.null.label "null"> >+ <!ENTITY namespaceTitle.default.label "Dokumentin oletus"> >+ <!ENTITY namespaceTitle.custom.label "Oma"> >+ >+ <!-- LOCALIZATION NOTE: The following entities are names of W3C >+ specifications. Please consult >+ http://www.w3.org/Consortium/Translation/ for appropriate translation >+ or leave unchanged. --> >+ <!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+ <!ENTITY namespaceTitle.XML.label "XML"> >+ <!ENTITY namespaceTitle.XHTML.label "XHTML"> >+ <!ENTITY namespaceTitle.XLink.label "XLink"> >+ <!ENTITY namespaceTitle.XSLT.label "XSLT"> >+ <!ENTITY namespaceTitle.XBL.label "XBL"> >+ <!ENTITY namespaceTitle.MathML.label "MathML"> >+ <!ENTITY namespaceTitle.RDF.label "RDF"> >+ <!ENTITY namespaceTitle.XUL.label "XUL"> >+ <!ENTITY namespaceTitle.SVG.label "SVG"> >+ <!ENTITY namespaceTitle.XMLEvents.label "XML Events"> >+ <!ENTITY namespaceTitle.WAIRoles.label "WAI Roles"> >+ <!ENTITY namespaceTitle.WAIProperties.label "WAI Properties"> >+ >+ <!-- LOCALIZATION NOTE: Localizers can choose not to translate the following >+ access keys. For a discussion about the pros and cons of such a >+ decision, see https://bugzilla.mozilla.org/show_bug.cgi?id=398704, >+ comments 1 and 2. --> >+ <!ENTITY cbxStateHover.accesskey "h"> >+ <!ENTITY cbxStateActive.accesskey "a"> >+ <!ENTITY cbxStateFocus.accesskey "f"> >+ >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/domNode.dtd >@@ -0,0 +1,31 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Solmun nimi:"> >+<!ENTITY localName.label "Paikallinen nimi:"> >+<!ENTITY namespaceURI.label "Nimiavaruusosoite:"> >+<!ENTITY nodeType.label "Solmun tyyppi:"> >+<!ENTITY nodeValue.label "Solmun arvo:"> >+<!ENTITY grpAttr.label "Attribuutit"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "Dokumentin oletus"> >+<!ENTITY namespaceTitle.custom.label "Oma"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "XML Events"> >+<!ENTITY namespaceTitle.WAIRoles.label "WAI Roles"> >+<!ENTITY namespaceTitle.WAIProperties.label "WAI Properties"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Kopioi arvo"> >+<!ENTITY jsEval.label "Suorita JavaScriptâ¦"> >+ >+<!ENTITY jsProperty.label "Ominaisuus"> >+<!ENTITY jsValue.label "Arvo"> >+ >+<!ENTITY evaluateDialog.title "Suorita lause"> >+<!ENTITY jsEval.desc "Syötä Javascript-lause. Muuttuja "target" on valittu ominaisuus tällä hetkellä."> >+<!ENTITY jsExecute.label "Suorita"> >+<!ENTITY inspectReturn.label "Tutki palaute"> >+<!ENTITY inspectReturnNew.label "Uudessa ikkunassa"> >+<!ENTITY inspectReturnExisting.label "Olemassaolevassa ikkunassa"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/styleRules.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "Etsi CSS-sääntöjäâ¦"> >+<!ENTITY miFindCSSRules.accesskey "E"> >+ >+<!ENTITY newRules.label "Uusi"> >+<!ENTITY deleteSelectedRules.label "Poista"> >+<!ENTITY disableSelectedRules.label "Poista käytöstä"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Aseta/poista !important"> >+ >+<!ENTITY styleRule.label "Sääntö"> >+<!ENTITY styleRuleURI.label "Tiedosto"> >+<!ENTITY styleRuleLineNumber.label "Rivi"> >+ >+<!ENTITY styleRulePropPriority.label "Tärkeysaste"> >+<!ENTITY styleRulePropName.label "Ominaisuus"> >+<!ENTITY styleRulePropValue.label "Arvo"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Tyylitiedosto"> >+<!ENTITY sheetRules.label "Säännöt"> >+ >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/usedFontFaces.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/usedFontFaces.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/usedFontFaces.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY fontName.label "Kirjasinlajin nimi"> >+<!ENTITY cssFamilyName.label "Kirjasinperheen nimi"> >+<!ENTITY uri.label "URI"> >+<!ENTITY localName.label "Paikallinen nimi"> >+<!ENTITY format.label "Formaatti"> >diff --git a/suite/extensions/inspector/resources/locale/fi/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/fi/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fi/viewers/xblBindings.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "Sisältö"> >+<!ENTITY bindingMethods.label "Metodit"> >+<!ENTITY bindingMethodName.label "Metodin nimi"> >+<!ENTITY bindingProperties.label "Ominaisuudet"> >+<!ENTITY bindingGetter.label "Palauttaja"> >+<!ENTITY bindingSetter.label "Asettaja"> >+<!ENTITY bindingProperty.label "Ominaisuus"> >+<!ENTITY bindingHandlers.label "Käsittelijät"> >+<!ENTITY bindingHandlerEvent.label "Tapahtuma"> >+<!ENTITY bindingHandlerPhase.label "Vaihe"> >+<!ENTITY bindingResources.label "Resurssit"> >+<!ENTITY bindingResourceType.label "Tyyppi"> >+<!ENTITY bindingResourceSrc.label "Lähde"> >+<!ENTITY bindingSourceCode.label "Lähdekoodi"> >diff --git a/suite/extensions/inspector/resources/locale/fr/editing.dtd b/suite/extensions/inspector/resources/locale/fr/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/editing.dtd >@@ -0,0 +1,27 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Annuler"> >+<!ENTITY mnEditUndo.accesskey "n"> >+<!ENTITY mnEditRedo.label "Refaire"> >+<!ENTITY mnEditRedo.accesskey "R"> >+<!ENTITY mnEditCut.label "Couper"> >+<!ENTITY mnEditCut.accesskey "C"> >+<!ENTITY mnEditCopy.label "Copier"> >+<!ENTITY mnEditCopy.accesskey "p"> >+<!ENTITY mnEditPaste.label "Coller"> >+<!ENTITY mnEditPaste.accesskey "l"> >+<!ENTITY mnEditInsert.label "Insérer"> >+<!ENTITY mnEditInsert.accesskey "I"> >+<!ENTITY mnEditEdit.label "Modifier la valeur"> >+<!ENTITY mnEditEdit.accesskey "v"> >+<!ENTITY mnEditDelete.label "Supprimer"> >+<!ENTITY mnEditDelete.accesskey "u"> >+<!ENTITY mnEditInspectInNewWindow.label "Examiner dans une nouvelle fenêtre"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "E"> >+<!ENTITY mnEditInspectInNewWindow.key "I"> >+<!ENTITY mnEditCopyFileURI.label "Copier l'URI"> >+<!ENTITY mnEditCopyFileURI.accesskey "U"> >+<!ENTITY mnEditViewFileURI.label "Afficher le fichier"> >+<!ENTITY mnEditViewFileURI.accesskey "A"> >diff --git a/suite/extensions/inspector/resources/locale/fr/inspector.dtd b/suite/extensions/inspector/resources/locale/fr/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/inspector.dtd >@@ -0,0 +1,67 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "Inspecteur DOM"> >+ >+<!ENTITY thDOMNodes.label "NÅuds DOM"> >+<!ENTITY btnInspect.label "Examiner"> >+<!ENTITY btnInspect.accesskey "x"> >+<!ENTITY bxDocPanel.title "Document"> >+<!ENTITY bxObjectPanel.title "Objet"> >+<!ENTITY btnSelecting.tooltip "Choisir un nÅud à examiner en cliquant sur celui-ci "> >+<!ENTITY btnFind.tooltip "Chercher un nÅud à examiner par id, balise, ou attribut"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Fichier"> >+<!ENTITY mnFile.accesskey "F"> >+<!ENTITY mnInspectContentDocument.label "Examiner le contenu d'un document"> >+<!ENTITY mnInspectContentDocument.accesskey "E"> >+<!ENTITY mnInspectChromeDocument.label "Examiner le Chrome d'un document"> >+<!ENTITY mnInspectChromeDocument.accesskey "x"> >+<!ENTITY mnInspectApplicationAccessible.label "Examiner l'accessibilité de l'application"> >+<!ENTITY mnInspectApplicationAccessible.accesskey "a"> >+<!ENTITY cmdEnterLocation.label "Examiner une URL"> >+<!ENTITY cmdEnterLocation.accesskey "m"> >+<!ENTITY cmdEnterLocation.key "L"> >+<!ENTITY cmdEnterLocation.key2 "D"> >+<!ENTITY cmdSave.label "Enregistrer le DOM sousâ¦"> >+<!ENTITY cmdSave.accesskey "D"> >+<!ENTITY cmdClose.label "Fermer"> >+<!ENTITY cmdClose.accesskey "m"> >+<!ENTITY cmdExit.label "Quitter"> >+<!ENTITY cmdExit.accesskey "Q"> >+ >+<!ENTITY mnEdit.label "Ãdition"> >+<!ENTITY mnEdit.accesskey "n"> >+<!ENTITY cmdUndo.label "Annuler"> >+<!ENTITY cmdUndo.accesskey "n"> >+<!ENTITY cmdRedo.label "Refaire"> >+<!ENTITY cmdRedo.accesskey "b"> >+<!ENTITY cmdCut.label "Couper"> >+<!ENTITY cmdCut.accesskey "C"> >+<!ENTITY cmdCopy.label "Copier"> >+<!ENTITY cmdCopy.accesskey "p"> >+<!ENTITY cmdPaste.label "Coller"> >+<!ENTITY cmdPaste.accesskey "l"> >+<!ENTITY cmdDelete.label "Supprimer"> >+<!ENTITY cmdDelete.accesskey "e"> >+ >+<!ENTITY mnView.label "Affichage"> >+<!ENTITY mnView.accesskey "A"> >+<!ENTITY mnDocViewerList.label "Afficher le document"> >+<!ENTITY mnDocViewerList.accesskey "c"> >+<!ENTITY mnObjectViewerList.label "Afficher l'objet"> >+<!ENTITY mnObjectViewerList.accesskey "h"> >+<!ENTITY cmdToggleDocument.label "Afficher le document dans le panneau de navigation"> >+<!ENTITY cmdToggleDocument.accesskey "n"> >+<!ENTITY cmdFlashOnSelect.label "Faire clignoter l'élément sélectionné"> >+<!ENTITY cmdFlashOnSelect.accesskey "F"> >+<!ENTITY cmdToggleSearch.label "Résultats de la recherche"> >+ >+<!ENTITY browserPanel.label "Navigateur"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/fr/inspector.properties b/suite/extensions/inspector/resources/locale/fr/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/inspector.properties >@@ -0,0 +1,36 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+applicationAccesible.title = Accessibilité >+inspectWindow.noDocuments.message = (Aucune) >+styleRuleNewProperty.title = Nouvelle règle de style >+styleRuleEditProperty.title = Ãditer la règle de style >+styleRulePropertyValue.message = Entrez la valeur de la propriété : >+styleRulePropertyName.message = Entrez le nom de la propriété : >+sidebar.title = Inspecteur DOM >+sidebarInstalled = Le panneau « Inspecteur DOM » est installé dans la barre latérale. >+newAttribute.title = Nouvel attribut >+editAttribute.title = Ãditer l'attribut >+findNodesDocumentEnd.message = La fin du document a été atteinte. >+findNodesDocumentEnd.title = Trouver les nÅuds >+#LOCALIZATION NOTE (root.title) label displayed for the tree head of the JavaScript Object tree >+root.title = Sujet >+ >+irrecoverableSubtree.message = Certains des nÅuds sélectionnés font partie d'un sous-arbre anonyme qui va être détruit. La suppression de ces nÅuds est irréversible. Voulez-vous vraiment supprimer les nÅuds sélectionnés ? >+irrecoverableSubtree.title = Suppression d'un sous-arbre anonyme >+ >+# The following items correspond to the node types defined by the >+# W3C DOM Core specification. >+1 = Ãlément >+2 = Attribut >+3 = Texte >+4 = Section CDATA >+5 = Référence d'entité >+6 = Entité >+7 = Instruction de traitement >+8 = Commentaire >+9 = Document >+10 = Type de document >+11 = Fragment de document >+12 = Notation >diff --git a/suite/extensions/inspector/resources/locale/fr/prefs.dtd b/suite/extensions/inspector/resources/locale/fr/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/prefs.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "Inspecteur DOM"> >+<!ENTITY Sidebar.label "Barre latérale"> >+<!ENTITY elementBlinking.label "Clignotement de l'élément"> >+<!ENTITY blinkSelectedElement.label "Faire clignoter l'élément sélectionné"> >+<!ENTITY blinkSelectedElement.accesskey "F"> >+<!ENTITY borderColor.label "Couleur de la bordure"> >+<!ENTITY borderColor.accesskey "C"> >+<!ENTITY borderWidth.label "Largeur de la bordure"> >+<!ENTITY borderWidth.accesskey "L"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Durée du clignotement"> >+<!ENTITY blinkDuration.accesskey "D"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Vitesse du clignotement"> >+<!ENTITY blinkSpeed.accesskey "V"> >+<!ENTITY invertColors.label "Inverser les couleurs"> >+<!ENTITY invertColors.accesskey "I"> >+<!ENTITY installHowTo.label "Le panneau de l'inspecteur DOM n'est pas installé dans la barre latérale. Pour l'ajouter, cliquez sur le bouton « Installer »."> >+<!ENTITY install.label "Installer"> >+<!ENTITY install.accesskey "n"> >+<!ENTITY addNavigatorHooks.label "Ajouter des menus contextuels au navigateur"> >+<!ENTITY addNavigatorHooks.accesskey "A"> >diff --git a/suite/extensions/inspector/resources/locale/fr/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/fr/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "Inspecteur DOM"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "Inspecter la page"> >+<!ENTITY inspectPageTaskCmd.accesskey "i"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewer-registry.dtd b/suite/extensions/inspector/resources/locale/fr/viewer-registry.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewer-registry.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY dom.label "NÅuds DOM"> >+<!ENTITY stylesheets.label "Feuilles de style"> >+<!ENTITY domNode.label "NÅud DOM"> >+<!ENTITY boxModel.label "Modèle de boîte"> >+<!ENTITY xblBindings.label "Liaisons XBL"> >+<!ENTITY styleRules.label "Règles CSS"> >+<!ENTITY computedStyle.label "Style calculé"> >+<!ENTITY jsObject.label "Objet JavaScript"> >+<!ENTITY accessibleEvent.label "Ãvénement accessible"> >+<!ENTITY accessibleObject.label "Objet accessible"> >+<!ENTITY accessibleProps.label "Propriétés accessibles"> >+<!ENTITY accessibleRelations.label "Relations accessibles"> >+<!ENTITY accessibleEvents.label "Ãvénements accessibles"> >+<!ENTITY accessibleTree.label "Arbre accessible"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEvent.dtd >@@ -0,0 +1,15 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descIsFromUserInput.label "Provient de l'action de l'utilisateur : "> >+<!ENTITY descState.label "Ãtat : "> >+<!ENTITY descIsEnabled.label "Est dans l'état activé : "> >+<!ENTITY descStartOffset.label "Démarrage du décalage : "> >+<!ENTITY descLength.label "Longueur : "> >+<!ENTITY descIsInserted.label "Est du texte inséré : "> >+<!ENTITY descModifiedText.label "Texte modifié : "> >+<!ENTITY descCaretOffset.label "Décalage du curseur : "> >+ >+<!ENTITY descrHandlerOutput.label "Résultats de sortie du gestionnaire d'événements : "> >+ >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEvents.dtd >@@ -0,0 +1,22 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventList.label "Liste d'événements"> >+<!ENTITY watchedEvents.label "Ãvénements observés"> >+<!ENTITY handledEvents.label "Ãvénements gérés :"> >+<!ENTITY eventType.label "Type d'événement"> >+<!ENTITY eventTime.label "Heure"> >+<!ENTITY eventTargetNodeName.label "Nom du nÅud"> >+<!ENTITY eventTargetNodeID.label "ID"> >+<!ENTITY eventTargetRole.label "Rôle"> >+<!ENTITY eventTargetName.label "Nom"> >+<!ENTITY isWatched.label "Observé"> >+<!ENTITY isHandlerEnabled.label "Gestionnaire activé"> >+<!ENTITY clearEventList.label "Effacer la liste des événements"> >+<!ENTITY chooseEventsToWatch.label "Choisir les événements à observer."> >+<!ENTITY watchAll.label "Tout observer"> >+<!ENTITY watchNone.label "Ne rien observer"> >+<!ENTITY editHandler.label "Modifier le gestionnaire"> >+<!ENTITY contextHelp.label "?"> >+<!ENTITY handlerEditorNoEvent.label "Choisir le type d'événement à ajouter au gestionnaire."> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEvents.properties b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEvents.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEvents.properties >@@ -0,0 +1,22 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+mutationEvents = événements de mutation >+changeEvents = événements de modification >+notificationEvents = événements de notification >+selectionEvents = événements de sélection >+menuEvents = événements de menu >+documentEvents = événements de document >+textEvents = événements de texte >+tableEvents = événements de tableau >+windowEvents = événements de fenêtre >+hyperLinkEvents = événements d'hyperlien >+hyperTextEvents = événements d'hypertexte >+ >+handlerEditorLabel = Activer le gestionnaire d'événements « %S ». >+ >+role = Rôle >+name = Nom >+nodeName = Nom du nÅud >+id = ID >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEventsHandlerHelpDialog.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEventsHandlerHelpDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleEventsHandlerHelpDialog.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY helpDialog.title "Dialogue d'aide de gestionnaire"> >+ >+ <!ENTITY general.descr "Ãcrire et joindre un gestionnaire d'événements d'accessibilité. Quand l'événement survient, vous pouvez le sélectionner dans la liste des événements et voir le résultat de l'évaluation du gestionnaire dans le lien de la visionneuse d'événements d'accessibilité."> >+ <!ENTITY helpers.descr "Les fonctions et objets suivants peuvent être utilisés dans l'éditeur du gestionnaire :"> >+ >+ <!ENTITY event.descr "objet d'événement d'accessibilité"> >+ <!ENTITY target.descr "objet cible d'accessibilité"> >+ <!ENTITY accRetrieval.descr "service d'accessibilité nsIAccessibleRetrieval"> >+ <!ENTITY output.descr "imprimer la chaîne donnée"> >+ <!ENTITY outputAttrs.descr "imprimer les attributs de l'objet d'accessibilité donné"> >+ <!ENTITY outputRole.descr "imprimer le rôle de l'objet d'accessibilité donné"> >+ <!ENTITY outputStates.descr "imprimer les états de l'objet d'accessibilité donné"> >+ <!ENTITY outputTree.descr "imprimer l'arbre de l'objet d'accessibilité donné, en mettant en valeur les éléments d'accessibilité du tableau donné"> >+ <!ENTITY outputDOMAttrs.descr "imprimer les attributs DOM de l'objet d'accessibilité donné"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleProps.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descRole.label "Rôle :"> >+<!ENTITY descName.label "Nom :"> >+<!ENTITY descDescription.label "Description :"> >+<!ENTITY descValue.label "Valeur :"> >+<!ENTITY descState.label "Ãtat :"> >+<!ENTITY descBounds.label "Liaisons :"> >+ >+<!ENTITY tabAttrs.label "Attributs de l'objet"> >+<!ENTITY colAttrName.label "Nom"> >+<!ENTITY colAttrValue.label "Valeur"> >+<!ENTITY tabActions.label "Actions"> >+<!ENTITY descKeyBindings.label "Raccourcis attribués :"> >+<!ENTITY descInvoke.label "Invoquer"> >+<!ENTITY tabTableCell.label "Cellule de tableau"> >+<!ENTITY descColumnIdx.label "Index de colonne :"> >+<!ENTITY descRowIdx.label "Index de ligne :"> >+<!ENTITY descColumnExtent.label "Ãtendue de colonne :"> >+<!ENTITY descRowExtent.label "Ãtendue de ligne :"> >+<!ENTITY descIsSelected.label "Est sélectionné :"> >+<!ENTITY colProp.label "Propriété"> >+<!ENTITY colRole.label "Rôle"> >+<!ENTITY colName.label "Nom"> >+<!ENTITY colNodeName.label "Nom du nÅud"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/accessibleProps.properties b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleProps.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleProps.properties >@@ -0,0 +1,5 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+accBounds = x : %S; y : %S; largeur : %S; hauteur : %S; >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleRelations.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY relationType.label "Type de relation"> >+<!ENTITY role.label "Rôle"> >+<!ENTITY nodeName.label "Nom du nÅud"> >+<!ENTITY relations.label "Relations : "> >+<!ENTITY relationTargets.label "Cibles de la relation : "> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleTree.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "Rôle"> >+<!ENTITY name.label "Nom"> >+<!ENTITY nodeName.label "Nom du nÅud"> >+ >+<!ENTITY evaluateJS.label "Ãvaluer le JavaScript"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/accessibleTreeEvalJSDialog.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleTreeEvalJSDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/accessibleTreeEvalJSDialog.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY evaluateDialog.title "Dialogue d'évaluation de JavaScript"> >+ >+<!ENTITY btnEvaluateJS.label "Ãvaluer"> >+<!ENTITY btnEvaluateJS.accesskey "v"> >+ >+<!ENTITY txtInputArea.label "Zone de saisie (utiliser la variable « accessible » pour fonctionner avec l'élément accessible sélectionné, la fonction « output » pour écrire dans la fenêtre « Zone d'affichage », « tree.search(accessible, filterfunc) » pour rechercher et « tree.clearSearch() » pour effacer les résultats de recherche : "> >+<!ENTITY txtInputArea.accesskey "Z"> >+<!ENTITY txtOutputArea.label "Zone d'affichage : "> >+<!ENTITY txtOutputArea.accesskey "o"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/boxModel.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Position"> >+<!ENTITY boxDimension.label "Dimensions"> >+<!ENTITY boxMargin.label "Marges"> >+<!ENTITY boxBorder.label "Bordure"> >+<!ENTITY boxPadding.label "Remplissage"> >+ >+<!ENTITY xCoord.label "x"> >+<!ENTITY yCoord.label "y"> >+<!ENTITY screenXCoord.label "écran x"> >+<!ENTITY screenYCoord.label "écran y"> >+ >+<!ENTITY dimensionWidth.label "largeur de boîte"> >+<!ENTITY dimensionHeight.label "hauteur de boîte"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Propriété"> >+<!ENTITY propertyValue.label "Valeur"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/dom.dtd >@@ -0,0 +1,135 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "Rechercher un nÅudâ¦"> >+ <!ENTITY cmdShowFindDialog.accesskey "R"> >+ <!ENTITY cmdShowFindDialog.key "f"> >+ >+ <!ENTITY cmdFindAgain.label "Rechercher le suivant"> >+ <!ENTITY cmdFindAgain.accesskey "e"> >+ <!ENTITY cmdFindAgain.key "G"> >+ >+ <!ENTITY cmdToggleAnonContent.label "Afficher le contenu anonyme"> >+ <!ENTITY cmdToggleAnonContent.accesskey "A"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "Afficher les nÅuds vides"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "v"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "Afficher les nÅuds accessibles"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "c"> >+ >+ <!ENTITY cmdToggleProcessingInstructions.label "Afficher les instructions de traitement"> >+ <!ENTITY cmdToggleProcessingInstructions.accesskey "h"> >+ >+ <!ENTITY cmdToggleAttributes.label "Afficher les attributs"> >+ <!ENTITY cmdToggleAttributes.accesskey "t"> >+ >+ <!ENTITY cmdSelectByClick.label "Sélectionner l'élément par un clic"> >+ <!ENTITY cmdSelectByClick.accesskey "c"> >+ >+ <!ENTITY ColumnsDialog.title "Colonnes"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "Colonnesâ¦"> >+ <!ENTITY cmdShowColumnsDialog.accesskey "o"> >+ >+ <!ENTITY cmdInsertNode.label "Insérerâ¦"> >+ <!ENTITY cmdDeleteNode.label "Supprimer"> >+ <!ENTITY cmdCopyXML.label "Copier le code de l'élément"> >+ <!ENTITY cmdCopyXML.accesskey "o"> >+ <!ENTITY cmdBlink.label "Faire clignoter l'élément"> >+ <!ENTITY cmdBlink.accesskey "F"> >+ <!ENTITY cmdInspectBrowser.label "Examiner le contenu du document"> >+ <!ENTITY cmdInspectBrowser.accesskey "x"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "Afficher les styles des pseudo-classesâ¦"> >+ <!ENTITY cmdShowPseudoClasses.accesskey "A"> >+ >+ <!ENTITY pseudoClasses.title "Pseudo-classes"> >+ >+ <!ENTITY findNodes.title "Rechercher des nÅuds"> >+ <!ENTITY findNodesById.label "Id"> >+ <!ENTITY findNodesById.accesskey "I"> >+ <!ENTITY findNodesById.accesskey2 "d"> >+ <!ENTITY findNodesByTag.label "Balise"> >+ <!ENTITY findNodesByTag.accesskey "B"> >+ <!ENTITY findNodesByTag.accesskey2 "e"> >+ <!ENTITY findNodesByAttr.label "Attribut"> >+ <!ENTITY findNodesByAttr.accesskey "A"> >+ <!ENTITY findNodesByAttr.accesskey2 "r"> >+ <!ENTITY findNodesByAttrValue.label "Valeur"> >+ <!ENTITY findNodesByAttrValue.accesskey "V"> >+ <!ENTITY findNodesSearchBy.label "Chercher par"> >+ <!ENTITY findNodesDirection.label "Direction"> >+ <!ENTITY findNodesDirectionUp.label "En haut"> >+ <!ENTITY findNodesDirectionUp.accesskey "h"> >+ <!ENTITY findNodesDirectionDown.label "En bas"> >+ <!ENTITY findNodesDirectionDown.accesskey "b"> >+ <!ENTITY findNodesFind.label "Rechercher"> >+ <!ENTITY findNodesCancel.label "Annuler"> >+ >+ <!ENTITY mnEditPasteMenu.label "Coller"> >+ <!ENTITY mnEditPasteMenu.accesskey "l"> >+ <!ENTITY mnEditPasteBefore.label "Avant"> >+ <!ENTITY mnEditPasteBefore.accesskey "v"> >+ <!ENTITY mnEditPasteAfter.label "Après"> >+ <!ENTITY mnEditPasteAfter.accesskey "A"> >+ <!ENTITY mnEditPasteReplace.label "à la place de (Remplacer)"> >+ <!ENTITY mnEditPasteReplace.accesskey "d"> >+ <!ENTITY mnEditPasteFirstChild.label "Comme premier enfant"> >+ <!ENTITY mnEditPasteFirstChild.accesskey "C"> >+ <!ENTITY mnEditPasteLastChild.label "Comme dernier enfant"> >+ <!ENTITY mnEditPasteLastChild.accesskey "o"> >+ <!ENTITY mnEditPasteAsParent.label "Comme parent"> >+ <!ENTITY mnEditPasteAsParent.accesskey "m"> >+ >+ <!ENTITY mnEditInsertMenu.label "Insérer"> >+ <!ENTITY mnEditInsertMenu.accesskey "I"> >+ <!ENTITY mnEditInsertAfter.label "Après"> >+ <!ENTITY mnEditInsertAfter.accesskey "A"> >+ <!ENTITY mnEditInsertBefore.label "Avant"> >+ <!ENTITY mnEditInsertBefore.accesskey "v"> >+ <!ENTITY mnEditInsertFirstChild.label "Comme premier enfant"> >+ <!ENTITY mnEditInsertFirstChild.accesskey "C"> >+ <!ENTITY mnEditInsertLastChild.label "Comme dernier enfant"> >+ <!ENTITY mnEditInsertLastChild.accesskey "o"> >+ >+ <!ENTITY insertNode.title "Insérer un nÅud"> >+ <!ENTITY nodeType.label "Type de nÅud :"> >+ <!ENTITY nodeType.accesskey "T"> >+ <!ENTITY nodeType.element.label "Ãlément"> >+ <!ENTITY nodeType.text.label "Texte"> >+ <!ENTITY namespaceURI.label "URI de l'espace de noms :"> >+ <!ENTITY namespaceURI.accesskey "U"> >+ <!ENTITY tagName.label "Nom de la balise :"> >+ <!ENTITY tagName.accesskey "N"> >+ <!ENTITY nodeValue.label "Valeur du nÅud :"> >+ <!ENTITY nodeValue.accesskey "V"> >+ >+ <!ENTITY namespaceTitle.null.label "null"> >+ <!ENTITY namespaceTitle.default.label "Espace de noms par défaut du document"> >+ <!ENTITY namespaceTitle.custom.label "Personnalisé"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+ <!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+ <!ENTITY namespaceTitle.XML.label "XML"> >+ <!ENTITY namespaceTitle.XHTML.label "XHTML"> >+ <!ENTITY namespaceTitle.XLink.label "XLink"> >+ <!ENTITY namespaceTitle.XSLT.label "XSLT"> >+ <!ENTITY namespaceTitle.XBL.label "XBL"> >+ <!ENTITY namespaceTitle.MathML.label "MathML"> >+ <!ENTITY namespaceTitle.RDF.label "RDF"> >+ <!ENTITY namespaceTitle.XUL.label "XUL"> >+ <!ENTITY namespaceTitle.SVG.label "SVG"> >+ <!ENTITY namespaceTitle.XMLEvents.label "Ãvénements XML"> >+ <!ENTITY namespaceTitle.WAIRoles.label "Rôles WAI"> >+ <!ENTITY namespaceTitle.WAIProperties.label "Propriétés WAI"> >+ >+ <!-- LOCALIZATION NOTE: Localizers can choose not to translate the following >+ access keys. For a discussion about the pros and cons of such a decision, see >+ https://bugzilla.mozilla.org/show_bug.cgi?id=398704, comments 1 and 2. --> >+ <!ENTITY cbxStateHover.accesskey "h"> >+ <!ENTITY cbxStateActive.accesskey "a"> >+ <!ENTITY cbxStateFocus.accesskey "f"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/domNode.dtd >@@ -0,0 +1,31 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Nom du nÅud :"> >+<!ENTITY localName.label "Nom local :"> >+<!ENTITY namespaceURI.label "URI de l'espace de noms :"> >+<!ENTITY nodeType.label "Type du nÅud :"> >+<!ENTITY nodeValue.label "Valeur du nÅud :"> >+<!ENTITY grpAttr.label "Attributs"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "Espace de noms par défaut du document"> >+<!ENTITY namespaceTitle.custom.label "Personnalisé"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "Ãvénements XML"> >+<!ENTITY namespaceTitle.WAIRoles.label "Rôles WAI"> >+<!ENTITY namespaceTitle.WAIProperties.label "Propriétés WAI"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/jsObject.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Copier la valeur"> >+<!ENTITY jsEval.label "Ãvaluer du Javascriptâ¦"> >+ >+<!ENTITY jsProperty.label "Propriété"> >+<!ENTITY jsValue.label "Valeur"> >+ >+<!ENTITY evaluateDialog.title "Ãvaluer l'expression"> >+ >+<!ENTITY jsEval.desc "Entrez une expression Javascript. La variable « target » est l'objet qui est actuellement sélectionné."> >+<!ENTITY jsExecute.label "Exécuter"> >+<!ENTITY inspectReturn.label "Inspecter le résultat dans une "> >+<!ENTITY inspectReturnNew.label "nouvelle fenêtre"> >+<!ENTITY inspectReturnExisting.label "fenêtre existante"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/styleRules.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "Chercher dans les règles CSSâ¦"> >+<!ENTITY miFindCSSRules.accesskey "C"> >+ >+<!ENTITY newRules.label "Nouvelle"> >+<!ENTITY deleteSelectedRules.label "Supprimer"> >+<!ENTITY disableSelectedRules.label "Désactiver"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Basculer !important"> >+ >+<!ENTITY styleRule.label "Règle"> >+<!ENTITY styleRuleURI.label "Fichier"> >+<!ENTITY styleRuleLineNumber.label "Ligne"> >+ >+<!ENTITY styleRulePropPriority.label "Priorité"> >+<!ENTITY styleRulePropName.label "Propriété"> >+<!ENTITY styleRulePropValue.label "Valeur"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/stylesheets.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Feuille de styles"> >+<!ENTITY sheetRules.label "Règles"> >diff --git a/suite/extensions/inspector/resources/locale/fr/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/fr/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/fr/viewers/xblBindings.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "Contenu"> >+<!ENTITY bindingMethods.label "Méthodes"> >+<!ENTITY bindingMethodName.label "Nom de méthode"> >+<!ENTITY bindingProperties.label "Propriétés"> >+<!ENTITY bindingGetter.label "Accesseur"> >+<!ENTITY bindingSetter.label "Mutateur"> >+<!ENTITY bindingProperty.label "Propriété"> >+<!ENTITY bindingHandlers.label "Manipulateurs"> >+<!ENTITY bindingHandlerEvent.label "Ãvénement"> >+<!ENTITY bindingHandlerPhase.label "Phase"> >+<!ENTITY bindingResources.label "Ressources"> >+<!ENTITY bindingResourceType.label "Type"> >+<!ENTITY bindingResourceSrc.label "Source"> >+<!ENTITY bindingSourceCode.label "Code source"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/editing.dtd b/suite/extensions/inspector/resources/locale/ga-IE/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/editing.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Cealaigh"> >+<!ENTITY mnEditUndo.accesskey "l"> >+<!ENTITY mnEditRedo.label "Athfheidhmigh"> >+<!ENTITY mnEditRedo.accesskey "f"> >+<!ENTITY mnEditCut.label "Gearr"> >+<!ENTITY mnEditCut.accesskey "G"> >+<!ENTITY mnEditCopy.label "Cóipeáil"> >+<!ENTITY mnEditCopy.accesskey "C"> >+<!ENTITY mnEditPaste.label "Greamaigh"> >+<!ENTITY mnEditPaste.accesskey "r"> >+<!ENTITY mnEditInsert.label "Ionsáigh"> >+<!ENTITY mnEditInsert.accesskey "I"> >+<!ENTITY mnEditEdit.label "Eagar"> >+<!ENTITY mnEditEdit.accesskey "E"> >+<!ENTITY mnEditDelete.label "Dealaigh"> >+<!ENTITY mnEditDelete.accesskey "D"> >+<!ENTITY mnEditInspectInNewWindow.label "Scrúdaigh i bhFuinneog Nua"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/inspector.dtd b/suite/extensions/inspector/resources/locale/ga-IE/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/inspector.dtd >@@ -0,0 +1,53 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.title "Scrúdaitheoir DOM"> >+<!ENTITY thDOMNodes.label "Nóid DOM"> >+<!ENTITY btnInspect.label "Scrúdaigh"> >+<!ENTITY bxDocPanel.title "Cáipéis"> >+<!ENTITY bxObjectPanel.title "Réad"> >+<!ENTITY btnSelecting.tooltip "Cuardaigh nód le scrúdú trà ghliogáil air"> >+<!ENTITY btnFind.tooltip "Cuardaigh nód le scrúdú de réir aitheantais, clibe, nó aitreabúide"> >+<!-- MAIN MENU ITEMS --> >+<!ENTITY mnFile.label "Comhad"> >+<!ENTITY mnFile.accesskey "C"> >+<!ENTITY cmdShowOpenURLDialog.label "Scrúdaigh URL..."> >+<!ENTITY cmdShowOpenURLDialog.accesskey "U"> >+<!ENTITY cmdClose.label "Dún"> >+<!ENTITY cmdClose.accesskey "D"> >+<!ENTITY cmdExit.label "Scoir"> >+<!ENTITY cmdExit.accesskey "S"> >+<!ENTITY mnEdit.label "Eagar"> >+<!ENTITY mnEdit.accesskey "E"> >+<!ENTITY cmdUndo.label "Cealaigh"> >+<!ENTITY cmdUndo.accesskey "l"> >+<!ENTITY cmdRedo.label "Athfheidhmigh"> >+<!ENTITY cmdRedo.accesskey "f"> >+<!ENTITY cmdCut.label "Gearr"> >+<!ENTITY cmdCut.accesskey "G"> >+<!ENTITY cmdCopy.label "Cóipeáil"> >+<!ENTITY cmdCopy.accesskey "C"> >+<!ENTITY cmdPaste.label "Greamaigh"> >+<!ENTITY cmdPaste.accesskey "r"> >+<!ENTITY cmdDelete.label "Dealaigh"> >+<!ENTITY cmdDelete.accesskey "D"> >+<!ENTITY mnSearch.label "Cuardaigh"> >+<!ENTITY mnSearch.accesskey "u"> >+<!ENTITY mnSearchPlugins.label "EisÃnteachtaÃ"> >+<!ENTITY mnSearchPlugins.accesskey "E"> >+<!ENTITY cmdRunSearch.label "Rith..."> >+<!ENTITY cmdRunSearch.accesskey "R"> >+<!ENTITY mnView.label "Amharc"> >+<!ENTITY mnView.accesskey "A"> >+<!ENTITY cmdToggleBrowser.label "BrabhsálaÃ"> >+<!ENTITY cmdToggleSearch.label "Torthaà Cuardaigh"> >+<!ENTITY cmdViewSearchItem.label "Amharc..."> >+<!ENTITY cmdEditSearchItem.label "Eagar..."> >+<!ENTITY cmdCopySearchItemLine.label "Cóipeáil LÃne"> >+<!ENTITY cmdCopySearchItemAll.label "Cóipeáil Gach Rud"> >+<!ENTITY cmdSaveSearchItemText.label "Sábháil..."> >+<!ENTITY cmdClearSearch.label "Bánaigh"> >+<!ENTITY cmdHideSearchItems.label "Folaigh"> >+<!ENTITY browserPanel.label "BrabhsálaÃ"> >+<!ENTITY closeCmd.key "D"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/inspector.properties b/suite/extensions/inspector/resources/locale/ga-IE/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/inspector.properties >@@ -0,0 +1,38 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+ >+inspectURL.title=Scr\u00FAdaigh URL >+inspectURL.message=Iontr\u00E1il URL: >+inspectWindow.noDocuments.message=Neamhn\u00ED >+styleRuleNewProperty.title=Riail Nua St\u00EDle >+styleRuleEditProperty.title=Cuir Riail St\u00EDle in Eagar >+styleRulePropertyValue.message=Iontr\u00E1il luach an air\u00ED: >+styleRulePropertyName.message=Iontr\u00E1il ainm an air\u00ED: >+sidebar.title=Scr\u00FAdaitheoir DOM >+sidebarInstalled=T\u00E1 an barra taoibh suite\u00E1ilte. >+newAttribute.title=Aitreab\u00FAid Nua >+editAttribute.title=Cuir Aitreab\u00FAid in Eagar >+enterAttrName.message=Iontr\u00E1il ainm na haitreab\u00FAide: >+enterAttrValue.message=Iontr\u00E1il luach na haitreab\u00FAide: >+findNodesDocumentEnd.message=T\u00E1 deireadh na c\u00E1ip\u00E9ise sroichte. >+findNodesDocumentEnd.title=Aimsigh N\u00F3id >+#LOCALIZATION NOTE (root.title) label displayed for the tree head of the JavaScript Object tree >+root.title=\u00C1bhar >+ >+ >+# The following items correspond to the node types defined by the >+# W3C DOM Core specification. >+1=Eilimint >+2=Aitreab\u00FAid >+3=T\u00E9acs >+4=Rann\u00E1n CDATA >+5=Tagairt Aon\u00E1in >+6=Aon\u00E1n >+7=Ord\u00FA Pr\u00F3ise\u00E1la >+8=N\u00F3ta >+9=C\u00E1ip\u00E9is >+10=Cine\u00E1l C\u00E1ip\u00E9ise >+11=Bl\u00FAire de Ch\u00E1ip\u00E9is >+12=Nodaireacht >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/prefs.dtd b/suite/extensions/inspector/resources/locale/ga-IE/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/prefs.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "Scrúdaitheoir DOM"> >+<!ENTITY Sidebar.label "Barra Taoibh"> >+<!ENTITY elementBlinking.label "Caochadh na hEiliminte"> >+<!ENTITY blinkSelectedElement.label "Cuir Eilimint Roghnaithe ag Caochadh"> >+<!ENTITY borderColor.label "Dath na hImlÃne"> >+<!ENTITY borderWidth.label "Leithead na hImlÃne"> >+<!ENTITY px.label "(pct)"> >+<!ENTITY blinkDuration.label "Fad an Chaochta"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Luas an Chaochta"> >+<!ENTITY invertColors.label "Inbhéartaigh na Dathanna"> >+<!ENTITY installHowTo.label "NÃl Barra Taoibh an Scrúdaitheoir DOM suiteáilte faoi láthair. Gliogáil an >+cnaipe 'Suiteáil' chun é a chur le do Bharra Taoibh."> >+<!ENTITY install.label "Suiteáil"> >+<!ENTITY addNavigatorHooks.label "Cuir roghchláir chomhthéacsacha le Navigator"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/search/findFiles.dtd b/suite/extensions/inspector/resources/locale/ga-IE/search/findFiles.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/search/findFiles.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY findFiles.title "Aimsigh Comhaid..."> >+<!ENTITY txSearchFor.label "Cuardaigh:"> >+<!ENTITY txSearchPath.label "Cuardaigh I:"> >+<!ENTITY cbRecurse.label "Cuardaigh i bhFo-Fhillteáin"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/search/junkImgs.dtd b/suite/extensions/inspector/resources/locale/ga-IE/search/junkImgs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/search/junkImgs.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY junkImgs.title "Cuardaigh Ãomhánna gan Ãsáid sa Téama Reatha..."> >+<!ENTITY junkImgsDescription "Ionas go n-oibreoidh an cuardach seo go héifeachtach, nà mór duit bheith ag >+scrúdú cáipéis a luchtaÃonn GACH comhad CSS sa téama reatha. Ansin pointeáil >+ar shuÃomh ar an diosca ina bhfuil fréamh an téama reatha le fáil."> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/ga-IE/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/tasksOverlay.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "Scrúdaitheoir DOM"> >+<!ENTITY inspectorTaskCmd.commandkey "e"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "i"> >+<!ENTITY inspectPageTaskCmd.label "Scrúdaigh Leathanach"> >+<!ENTITY inspectPageTaskCmd.accesskey "L"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/ga-IE/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/viewers/boxModel.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY boxPosition.label "SuÃomh"> >+<!ENTITY boxDimension.label "ToisÃ"> >+<!ENTITY boxMargin.label "Imeall"> >+<!ENTITY boxBorder.label "ImlÃne"> >+<!ENTITY boxPadding.label "Stuáil"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/ga-IE/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/viewers/computedStyle.dtd >@@ -0,0 +1,5 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY propertyName.label "AirÃ"> >+<!ENTITY propertyValue.label "Luach"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/ga-IE/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/viewers/dom.dtd >@@ -0,0 +1,41 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY cmdShowFindDialog.label "Aimsigh Nóid..."> >+<!ENTITY cmdShowFindDialog.accesskey "A"> >+<!ENTITY cmdShowFindDialog.accelkey "f"> >+<!ENTITY cmdFindNext.label "An Chéad Cheann Eile"> >+<!ENTITY cmdFindNext.accesskey "n"> >+<!ENTITY cmdToggleAnonContent.label "Taispeáin Innechar gan Ainm"> >+<!ENTITY cmdToggleAnonContent.accesskey "A"> >+<!ENTITY cmdToggleWhitespaceNodes.label "Taispeáin Nóid Spáis Bháin"> >+<!ENTITY cmdToggleWhitespaceNodes.accesskey "B"> >+<!ENTITY cmdToggleAccessibleNodes.label "Show Accessible Nodes"> >+<!ENTITY cmdToggleAccessibleNodes.accesskey "c"> >+<!ENTITY cmdFlashSelected.label "Cuir Eilimint Roghnaithe ag Caochadh"> >+<!ENTITY cmdToggleAttributes.label "Taispeáin AitreabúidÃ"> >+<!ENTITY cmdToggleAttributes.accesskey "r"> >+<!ENTITY cmdSelectByClick.label "Roghnaigh Eilimint trà Ghliogáil"> >+<!ENTITY cmdSelectByClick.accesskey "R"> >+<!ENTITY ColumnsDialog.title "Colúin"> >+<!ENTITY cmdShowColumnsDialog.label "Colúin..."> >+<!ENTITY cmdShowColumnsDialog.accesskey "C"> >+<!ENTITY cmdInsertNode.label "Ionsáigh..."> >+<!ENTITY cmdDeleteNode.label "Dealaigh"> >+<!ENTITY cmdCopyXML.label "Cóipeáil XML"> >+<!ENTITY cmdBlink.label "Cuir Eilimint ag Caochadh"> >+<!ENTITY cmdInspectBrowser.label "Scrúdaigh an Cháipéis Chuimsithe"> >+<!ENTITY cmdShowPseudoClasses.label "Socraigh SúdaicmÃ..."> >+<!ENTITY cmdShowPseudoClasses.accesskey "S"> >+<!ENTITY pseudoClasses.title "SúdaicmÃ"> >+<!ENTITY findNodes.title "Aimsigh Nóid"> >+<!ENTITY findNodesById.label "Aitheantas"> >+<!ENTITY findNodesByTag.label "Clib"> >+<!ENTITY findNodesByAttr.label "Aitreabúid"> >+<!ENTITY findNodesByAttrValue.label "Luach"> >+<!ENTITY findNodesSearchBy.label "Cuardaigh de réir"> >+<!ENTITY findNodesDirection.label "Treo"> >+<!ENTITY findNodesDirectionUp.label "Suas"> >+<!ENTITY findNodesDirectionDown.label "SÃos"> >+<!ENTITY findNodesFind.label "Aimsigh"> >+<!ENTITY findNodesCancel.label "Cealaigh"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/ga-IE/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/viewers/domNode.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY nodeName.label "Ainm an Nóid:"> >+<!ENTITY namespaceURI.label "URI an ainmspáis:"> >+<!ENTITY nodeType.label "Cineál an Nóid:"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/ga-IE/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/viewers/jsObject.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY jsCopyValue.label "Cóipeáil an Luach"> >+<!ENTITY jsEval.label "Measúnaigh JavaScript..."> >+<!ENTITY jsProperty.label "AirÃ"> >+<!ENTITY jsValue.label "Luach"> >+<!ENTITY jsEval.desc "Iontráil slonn JavaScript. Is à an athróg "target" an t-airà atá >+roghnaithe faoi láthair. Taispeánfear i mBreathnóir na nOibiachtaà >+JavaScript cibé luach a aisfhilltear."> >+<!ENTITY jsExecute.label "Rith"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/ga-IE/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/viewers/styleRules.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY miFindCSSRules.label "Aimsigh Rialacha CSS..."> >+<!ENTITY miFindCSSRules.accesskey "A"> >+<!ENTITY newRules.label "Nua"> >+<!ENTITY deleteSelectedRules.label "Scrios"> >+<!ENTITY disableSelectedRules.label "DÃchumasaigh"> >+<!ENTITY openSelectedFileInEditor.label "Oscail Comhad in Eagarthóir"> >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Scoránaigh !important"> >+<!ENTITY styleRule.label "Riail"> >+<!ENTITY styleRuleURI.label "Comhad"> >+<!ENTITY styleRuleLineNumber.label "LÃne"> >+<!ENTITY styleRulePropPriority.label "TosaÃocht"> >+<!ENTITY styleRulePropName.label "AirÃ"> >+<!ENTITY styleRulePropValue.label "Luach"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/ga-IE/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/viewers/stylesheets.dtd >@@ -0,0 +1,5 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY sheetLocation.label "StÃlbhileog"> >+<!ENTITY sheetRules.label "Rialacha"> >diff --git a/suite/extensions/inspector/resources/locale/ga-IE/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/ga-IE/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ga-IE/viewers/xblBindings.dtd >@@ -0,0 +1,12 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY bindingContent.label "Ãbhar"> >+<!ENTITY bindingMethods.label "Modhanna"> >+<!ENTITY bindingProperties.label "AirÃonna"> >+<!ENTITY bindingGetter.label "Faighteoir"> >+<!ENTITY bindingSetter.label "Socraitheoir"> >+<!ENTITY bindingProperty.label "AirÃ"> >+<!ENTITY bindingHandlers.label "Láimhseálaithe"> >+<!ENTITY bindingResources.label "AcmhainnÃ"> >+<!ENTITY bindingSourceCode.label "Cód Foinseach"> >diff --git a/suite/extensions/inspector/resources/locale/hu/editing.dtd b/suite/extensions/inspector/resources/locale/hu/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/editing.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Visszavonás"> >+<!ENTITY mnEditUndo.accesskey "V"> >+<!ENTITY mnEditRedo.label "Ãjra"> >+<!ENTITY mnEditRedo.accesskey "r"> >+<!ENTITY mnEditCut.label "Kivágás"> >+<!ENTITY mnEditCut.accesskey "K"> >+<!ENTITY mnEditCopy.label "Másolás"> >+<!ENTITY mnEditCopy.accesskey "M"> >+<!ENTITY mnEditPaste.label "Beillesztés"> >+<!ENTITY mnEditPaste.accesskey "B"> >+<!ENTITY mnEditInsert.label "Beszúrás"> >+<!ENTITY mnEditInsert.accesskey "B"> >+<!ENTITY mnEditEdit.label "Szerkesztés"> >+<!ENTITY mnEditEdit.accesskey "z"> >+<!ENTITY mnEditDelete.label "Törlés"> >+<!ENTITY mnEditDelete.accesskey "T"> >+<!ENTITY mnEditInspectInNewWindow.label "Vizsgálat új ablakban"> >diff --git a/suite/extensions/inspector/resources/locale/hu/inspector.dtd b/suite/extensions/inspector/resources/locale/hu/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/inspector.dtd >@@ -0,0 +1,63 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM Inspector"> >+ >+<!ENTITY thDOMNodes.label "DOM csomópontok"> >+<!ENTITY btnInspect.label "Vizsgálat"> >+<!ENTITY bxDocPanel.title "Dokumentum"> >+<!ENTITY bxObjectPanel.title "Objektum"> >+<!ENTITY btnSelecting.tooltip "Csomópont vizsgálatra való keresése rákattintással"> >+<!ENTITY btnFind.tooltip "Csomópont vizsgálatra való keresése id, tag, vagy attribútum alapján"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Fájl"> >+<!ENTITY mnFile.accesskey "F"> >+ <!ENTITY cmdShowOpenURLDialog.label "URL vizsgálata..."> >+ <!ENTITY cmdShowOpenURLDialog.accesskey "u"> >+ <!ENTITY cmdClose.label "Bezárás"> >+ <!ENTITY cmdClose.accesskey "B"> >+ <!ENTITY cmdExit.label "Kilépés"> >+ <!ENTITY cmdExit.accesskey "K"> >+ >+<!ENTITY mnEdit.label "Szerkesztés"> >+<!ENTITY mnEdit.accesskey "z"> >+ <!ENTITY cmdUndo.label "Visszavonás"> >+ <!ENTITY cmdUndo.accesskey "v"> >+ <!ENTITY cmdRedo.label "Ãjra"> >+ <!ENTITY cmdRedo.accesskey "r"> >+ <!ENTITY cmdCut.label "Kivágás"> >+ <!ENTITY cmdCut.accesskey "K"> >+ <!ENTITY cmdCopy.label "Másolás"> >+ <!ENTITY cmdCopy.accesskey "M"> >+ <!ENTITY cmdPaste.label "Beillesztés"> >+ <!ENTITY cmdPaste.accesskey "B"> >+ <!ENTITY cmdDelete.label "Törlés"> >+ <!ENTITY cmdDelete.accesskey "T"> >+ >+<!ENTITY mnSearch.label "Keresés"> >+<!ENTITY mnSearch.accesskey "K"> >+ <!ENTITY mnSearchPlugins.label "Kiterjesztések"> >+ <!ENTITY mnSearchPlugins.accesskey "i"> >+ <!ENTITY cmdRunSearch.label "Futtatás..."> >+ <!ENTITY cmdRunSearch.accesskey "F"> >+ >+<!ENTITY mnView.label "Nézet"> >+<!ENTITY mnView.accesskey "N"> >+ <!ENTITY cmdToggleBrowser.label "BöngészÅ"> >+ <!ENTITY cmdToggleSearch.label "Találatok"> >+ >+<!ENTITY cmdViewSearchItem.label "Megtekintés..."> >+<!ENTITY cmdEditSearchItem.label "Szerkesztés..."> >+<!ENTITY cmdCopySearchItemLine.label "Sor másolása"> >+<!ENTITY cmdCopySearchItemAll.label "Mindet másolja"> >+<!ENTITY cmdSaveSearchItemText.label "Mentés..."> >+<!ENTITY cmdClearSearch.label "Törlés"> >+<!ENTITY cmdHideSearchItems.label "Elrejtés"> >+ >+<!ENTITY browserPanel.label "BöngészÅ"> >+ >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/hu/inspector.properties b/suite/extensions/inspector/resources/locale/hu/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/inspector.properties >@@ -0,0 +1,38 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+ >+inspectURL.title = URL vizsg\u00e1lata >+inspectURL.message = Adjon meg egy URL-t: >+inspectWindow.noDocuments.message = (Nincs) >+styleRuleNewProperty.title = \u00daj st\u00edlus szab\u00e1lyk\u00e9szlet >+styleRuleEditProperty.title = St\u00edlus szab\u00e1lyk\u00e9szlet szerkeszt\u00e9se >+styleRulePropertyValue.message = Adja meg a tulajdons\u00e1g \u00e9rt\u00e9k\u00e9t: >+styleRulePropertyName.message = Adja meg a tulajdons\u00e1g nev\u00e9t: >+sidebar.title = DOM Inspector >+sidebarInstalled = Oldals\u00e1v telep\u00edtve. >+newAttribute.title = \u00daj attrib\u00fatum >+editAttribute.title = Attrib\u00fatum szerkeszt\u00e9se >+enterAttrName.message = Adja meg az attrib\u00fatum nev\u00e9t: >+enterAttrValue.message = Adja meg az attrib\u00fatum \u00e9rt\u00e9k\u00e9t: >+findNodesDocumentEnd.message = El\u00e9rte a dokumentum v\u00e9g\u00e9t. >+findNodesDocumentEnd.title = Csom\u00f3pont keres\u00e9se >+#LOCALIZATION NOTE (root.title) label displayed for the tree head of the JavaScript Object tree >+root.title = T\u00e1rgy >+ >+ >+# The following items correspond to the node types defined by the >+# W3C DOM Core specification. >+1 = Elem >+2 = Attrib\u00fatum >+3 = Sz\u00f6veg >+4 = CDATA-r\u00e9sz >+5 = Egyedhivatkoz\u00e1s >+6 = Egyed >+7 = Feldolgoz\u00e1si utas\u00edt\u00e1s >+8 = Megjegyz\u00e9s >+9 = Dokumentum >+10 = Dokumentumt\u00edpus >+11 = Dokumentumt\u00f6red\u00e9k >+12 = Jel\u00f6l\u00e9s >diff --git a/suite/extensions/inspector/resources/locale/hu/prefs.dtd b/suite/extensions/inspector/resources/locale/hu/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/prefs.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM Inspector"> >+<!ENTITY Sidebar.label "Oldalsáv"> >+<!ENTITY elementBlinking.label "Elem villogtatása"> >+<!ENTITY blinkSelectedElement.label "Kijelölt elem villogtatása"> >+<!ENTITY borderColor.label "Szegély szÃne"> >+<!ENTITY borderWidth.label "Szegély vastagsága"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Villogtatás idÅtartama"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Villogtatás sebessége"> >+<!ENTITY invertColors.label "Inverz szÃnek"> >+<!ENTITY installHowTo.label "A DOM Inspector Oldalsáv jelenleg nincs telepÃtve. Az Oldalsávhoz való hozzáadáshoz kattintson a 'TelepÃtés' gombra."> >+<!ENTITY install.label "TelepÃtés"> >+<!ENTITY addNavigatorHooks.label "Hozzáadás a böngészÅ helyi menüihez"> >diff --git a/suite/extensions/inspector/resources/locale/hu/search/findFiles.dtd b/suite/extensions/inspector/resources/locale/hu/search/findFiles.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/search/findFiles.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY findFiles.title "FájlkeresÅ..."> >+<!ENTITY txSearchFor.label "Keresés:"> >+<!ENTITY txSearchPath.label "Keresés itt:"> >+<!ENTITY cbRecurse.label "Keresés az alkönyvtárakban is"> >diff --git a/suite/extensions/inspector/resources/locale/hu/search/junkImgs.dtd b/suite/extensions/inspector/resources/locale/hu/search/junkImgs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/search/junkImgs.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY junkImgs.title "Nem használt képek keresése az aktuális témában..."> >+<!ENTITY junkImgsDescription "A keresés hatékonyságához olyan dokumentumot érdemes vizsgálni, amely a témához tartozó összes CSS-fájlt betölti. Ezután meg kell adni az aktuális téma gyökerének helyét a lemezen."> >diff --git a/suite/extensions/inspector/resources/locale/hu/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/hu/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM Inspector"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "Oldal vizsgálata"> >+<!ENTITY inspectPageTaskCmd.accesskey "i"> >diff --git a/suite/extensions/inspector/resources/locale/hu/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/hu/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/viewers/boxModel.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "PozÃció"> >+<!ENTITY boxDimension.label "Méretek"> >+<!ENTITY boxMargin.label "Margó"> >+<!ENTITY boxBorder.label "Szegély"> >+<!ENTITY boxPadding.label "Kitöltés"> >diff --git a/suite/extensions/inspector/resources/locale/hu/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/hu/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Tulajdonság"> >+<!ENTITY propertyValue.label "Ãrték"> >diff --git a/suite/extensions/inspector/resources/locale/hu/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/hu/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/viewers/dom.dtd >@@ -0,0 +1,55 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "Csomópontok keresése..."> >+ <!ENTITY cmdShowFindDialog.accesskey "C"> >+ <!ENTITY cmdShowFindDialog.accelkey "f"> >+ >+ <!ENTITY cmdFindNext.label "KövetkezÅ keresése"> >+ <!ENTITY cmdFindNext.accesskey "K"> >+ >+ <!ENTITY cmdToggleAnonContent.label "Névtelen tartalom megjelenÃtése"> >+ <!ENTITY cmdToggleAnonContent.accesskey "v"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "Ãres csomópontok megjelenÃtése"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "r"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "Show Accessible Nodes"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "c"> >+ >+ <!ENTITY cmdFlashSelected.label "Kijelölt elem villogtatása"> >+ >+ <!ENTITY cmdToggleAttributes.label "Attribútumok megjelenÃtése"> >+ <!ENTITY cmdToggleAttributes.accesskey "A"> >+ >+ <!ENTITY cmdSelectByClick.label "Elem kiválasztása kattintással"> >+ <!ENTITY cmdSelectByClick.accesskey "E"> >+ >+ <!ENTITY ColumnsDialog.title "Oszlopok"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "Oszlopok..."> >+ <!ENTITY cmdShowColumnsDialog.accesskey "O"> >+ >+ <!ENTITY cmdInsertNode.label "Beszúrás..."> >+ <!ENTITY cmdDeleteNode.label "Törlés"> >+ <!ENTITY cmdCopyXML.label "XML másolása"> >+ <!ENTITY cmdBlink.label "Elem villogtatása"> >+ <!ENTITY cmdInspectBrowser.label "Tartalmazott dokumentum vizsgálata"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "Látszólagos osztályok beállÃtása..."> >+ <!ENTITY cmdShowPseudoClasses.accesskey "L"> >+ >+ <!ENTITY pseudoClasses.title "Látszólagos osztályok"> >+ >+ <!ENTITY findNodes.title "Csomópontok keresése"> >+ <!ENTITY findNodesById.label "Id"> >+ <!ENTITY findNodesByTag.label "Tag"> >+ <!ENTITY findNodesByAttr.label "Attribútum"> >+ <!ENTITY findNodesByAttrValue.label "Ãrték"> >+ <!ENTITY findNodesSearchBy.label "Keresés jellemzÅ alapján"> >+ <!ENTITY findNodesDirection.label "Irány"> >+ <!ENTITY findNodesDirectionUp.label "Felfelé"> >+ <!ENTITY findNodesDirectionDown.label "Lefelé"> >+ <!ENTITY findNodesFind.label "Keresés"> >+ <!ENTITY findNodesCancel.label "Mégse"> >diff --git a/suite/extensions/inspector/resources/locale/hu/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/hu/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/viewers/domNode.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Csomópont neve:"> >+<!ENTITY namespaceURI.label "Névtér URI:"> >+<!ENTITY nodeType.label "Csomópont tÃpusa:"> >diff --git a/suite/extensions/inspector/resources/locale/hu/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/hu/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/viewers/jsObject.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Ãrték másolása"> >+<!ENTITY jsEval.label "JavaScript kiértékelése..."> >+ >+<!ENTITY jsProperty.label "Tulajdonság"> >+<!ENTITY jsValue.label "Ãrték"> >+ >+<!ENTITY jsEval.desc "Adjon meg egy JavaScript kifejezést. A "target" változó a jelenleg kiválasztott tulajdonság. Minden visszatérési érték a JavaScript ObjektumnézÅben fog megjelenni."> >+ >+<!ENTITY jsExecute.label "Végrehajtás"> >diff --git a/suite/extensions/inspector/resources/locale/hu/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/hu/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/viewers/styleRules.dtd >@@ -0,0 +1,22 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "CSS-szabálykészletek keresése..."> >+<!ENTITY miFindCSSRules.accesskey "C"> >+ >+<!ENTITY newRules.label "Ãj"> >+<!ENTITY deleteSelectedRules.label "Törlés"> >+<!ENTITY disableSelectedRules.label "Letiltás"> >+<!ENTITY openSelectedFileInEditor.label "Fájl megnyitása szerkesztÅben"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "!important kapcsoló"> >+ >+<!ENTITY styleRule.label "Szabálykészlet"> >+<!ENTITY styleRuleURI.label "Fájl"> >+<!ENTITY styleRuleLineNumber.label "Sor"> >+ >+<!ENTITY styleRulePropPriority.label "Prioritás"> >+<!ENTITY styleRulePropName.label "Tulajdonság"> >+<!ENTITY styleRulePropValue.label "Ãrték"> >diff --git a/suite/extensions/inspector/resources/locale/hu/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/hu/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/viewers/stylesheets.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "StÃluslap"> >+<!ENTITY sheetRules.label "Szabálykészletek"> >+ >+ >diff --git a/suite/extensions/inspector/resources/locale/hu/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/hu/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/hu/viewers/xblBindings.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "Tartalom"> >+<!ENTITY bindingMethods.label "Eljárások"> >+<!ENTITY bindingProperties.label "Tulajdonságok"> >+<!ENTITY bindingGetter.label "LekérdezÅ"> >+<!ENTITY bindingSetter.label "MódosÃtó"> >+<!ENTITY bindingProperty.label "Tulajdonság"> >+<!ENTITY bindingHandlers.label "KezelÅk"> >+<!ENTITY bindingResources.label "ErÅforrások"> >+<!ENTITY bindingSourceCode.label "Forráskód"> >diff --git a/suite/extensions/inspector/resources/locale/jar.mn b/suite/extensions/inspector/resources/locale/jar.mn >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/jar.mn >@@ -0,0 +1,32 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+#filter substitution >+ >+inspector.jar: >+% locale inspector @AB_CD@ %locale/@AB_CD@/inspector/ >+ locale/@AB_CD@/inspector/inspector.dtd (@AB_CD@/inspector.dtd) >+ locale/@AB_CD@/inspector/prefs.dtd (@AB_CD@/prefs.dtd) >+ locale/@AB_CD@/inspector/editing.dtd (@AB_CD@/editing.dtd) >+ locale/@AB_CD@/inspector/tasksOverlay.dtd (@AB_CD@/tasksOverlay.dtd) >+ locale/@AB_CD@/inspector/viewer-registry.dtd (@AB_CD@/viewer-registry.dtd) >+ locale/@AB_CD@/inspector/viewers/accessibleEvent.dtd (@AB_CD@/viewers/accessibleEvent.dtd) >+ locale/@AB_CD@/inspector/viewers/accessibleEvents.dtd (@AB_CD@/viewers/accessibleEvents.dtd) >+ locale/@AB_CD@/inspector/viewers/accessibleEvents.properties (@AB_CD@/viewers/accessibleEvents.properties) >+ locale/@AB_CD@/inspector/viewers/accessibleEventsHandlerHelpDialog.dtd (@AB_CD@/viewers/accessibleEventsHandlerHelpDialog.dtd) >+ locale/@AB_CD@/inspector/viewers/accessibleProps.dtd (@AB_CD@/viewers/accessibleProps.dtd) >+ locale/@AB_CD@/inspector/viewers/accessibleProps.properties (@AB_CD@/viewers/accessibleProps.properties) >+ locale/@AB_CD@/inspector/viewers/accessibleRelations.dtd (@AB_CD@/viewers/accessibleRelations.dtd) >+ locale/@AB_CD@/inspector/viewers/accessibleTree.dtd (@AB_CD@/viewers/accessibleTree.dtd) >+ locale/@AB_CD@/inspector/viewers/accessibleTreeEvalJSDialog.dtd (@AB_CD@/viewers/accessibleTreeEvalJSDialog.dtd) >+ locale/@AB_CD@/inspector/viewers/dom.dtd (@AB_CD@/viewers/dom.dtd) >+ locale/@AB_CD@/inspector/viewers/domNode.dtd (@AB_CD@/viewers/domNode.dtd) >+ locale/@AB_CD@/inspector/viewers/styleRules.dtd (@AB_CD@/viewers/styleRules.dtd) >+ locale/@AB_CD@/inspector/viewers/stylesheets.dtd (@AB_CD@/viewers/stylesheets.dtd) >+ locale/@AB_CD@/inspector/viewers/xblBindings.dtd (@AB_CD@/viewers/xblBindings.dtd) >+ locale/@AB_CD@/inspector/viewers/boxModel.dtd (@AB_CD@/viewers/boxModel.dtd) >+ locale/@AB_CD@/inspector/viewers/computedStyle.dtd (@AB_CD@/viewers/computedStyle.dtd) >+ locale/@AB_CD@/inspector/viewers/usedFontFaces.dtd (@AB_CD@/viewers/usedFontFaces.dtd) >+ locale/@AB_CD@/inspector/viewers/jsObject.dtd (@AB_CD@/viewers/jsObject.dtd) >+ locale/@AB_CD@/inspector/inspector.properties (@AB_CD@/inspector.properties) >diff --git a/suite/extensions/inspector/resources/locale/moz.build b/suite/extensions/inspector/resources/locale/moz.build >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/moz.build >@@ -0,0 +1,6 @@ >+# vim: set filetype=python: >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+USE_EXTENSION_MANIFEST = True >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/editing.dtd b/suite/extensions/inspector/resources/locale/nb-NO/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/editing.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Angre"> >+<!ENTITY mnEditUndo.accesskey "A"> >+<!ENTITY mnEditRedo.label "Gjenta"> >+<!ENTITY mnEditRedo.accesskey "G"> >+<!ENTITY mnEditCut.label "Klipp ut"> >+<!ENTITY mnEditCut.accesskey "u"> >+<!ENTITY mnEditCopy.label "Kopier"> >+<!ENTITY mnEditCopy.accesskey "K"> >+<!ENTITY mnEditPaste.label "Lim inn"> >+<!ENTITY mnEditPaste.accesskey "L"> >+<!ENTITY mnEditInsert.label "Sett inn"> >+<!ENTITY mnEditInsert.accesskey "e"> >+<!ENTITY mnEditEdit.label "Rediger"> >+<!ENTITY mnEditEdit.accesskey "R"> >+<!ENTITY mnEditDelete.label "Slett"> >+<!ENTITY mnEditDelete.accesskey "S"> >+<!ENTITY mnEditInspectInNewWindow.label "Inspiser i nytt vindu"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/inspector.dtd b/suite/extensions/inspector/resources/locale/nb-NO/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/inspector.dtd >@@ -0,0 +1,58 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM-inspeksjon"> >+ >+<!ENTITY thDOMNodes.label "DOM-noder"> >+<!ENTITY btnInspect.label "Inspiser"> >+<!ENTITY bxDocPanel.title "Dokument"> >+<!ENTITY bxObjectPanel.title "Objekt"> >+<!ENTITY btnSelecting.tooltip "Finn en node ved Ã¥ trykke pÃ¥ den."> >+<!ENTITY btnFind.tooltip "Finn en node basert pÃ¥ id, merkelapp eller egenskap."> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Fil"> >+<!ENTITY mnFile.accesskey "f"> >+ <!ENTITY mnInspectContentDocument.label "Inspiser innholdsdokument"> >+ <!ENTITY mnInspectContentDocument.accesskey "n"> >+ <!ENTITY mnInspectChromeDocument.label "Inspiser chrome-dokument"> >+ <!ENTITY mnInspectChromeDocument.accesskey "s"> >+ <!ENTITY cmdShowOpenURLDialog.label "Inspiser adresse ..."> >+ <!ENTITY cmdShowOpenURLDialog.accesskey "I"> >+ <!ENTITY cmdSave.label "Lagre DOM som ..."> >+ <!ENTITY cmdSave.accesskey "L"> >+ <!ENTITY cmdClose.label "Lukk"> >+ <!ENTITY cmdClose.accesskey "L"> >+ <!ENTITY cmdExit.label "Avslutt"> >+ <!ENTITY cmdExit.accesskey "v"> >+ >+<!ENTITY mnEdit.label "Rediger"> >+<!ENTITY mnEdit.accesskey "R"> >+ <!ENTITY cmdUndo.label "Angre"> >+ <!ENTITY cmdUndo.accesskey "a"> >+ <!ENTITY cmdRedo.label "Gjenta"> >+ <!ENTITY cmdRedo.accesskey "g"> >+ <!ENTITY cmdCut.label "Klipp ut"> >+ <!ENTITY cmdCut.accesskey "u"> >+ <!ENTITY cmdCopy.label "Kopier"> >+ <!ENTITY cmdCopy.accesskey "k"> >+ <!ENTITY cmdPaste.label "Lim inn"> >+ <!ENTITY cmdPaste.accesskey "i"> >+ <!ENTITY cmdDelete.label "Slett"> >+ <!ENTITY cmdDelete.accesskey "S"> >+ >+<!ENTITY mnSearch.label "Søk"> >+<!ENTITY mnSearch.accesskey "s"> >+ >+<!ENTITY mnView.label "Vis"> >+<!ENTITY mnView.accesskey "v"> >+ <!ENTITY cmdToggleBrowser.label "Nettleser"> >+ <!ENTITY cmdToggleSearch.label "Søkeresultat"> >+ >+<!ENTITY browserPanel.label "Nettleser"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/inspector.properties b/suite/extensions/inspector/resources/locale/nb-NO/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/inspector.properties >@@ -0,0 +1,36 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+ >+inspectURL.title = Inspiser adresse >+inspectURL.message = Skriv inn en adresse: >+inspectWindow.noDocuments.message = (Ingen) >+styleRuleNewProperty.title = Ny stilregel >+styleRuleEditProperty.title = Rediger stilregel >+styleRulePropertyValue.message = Egenskapens verdi: >+styleRulePropertyName.message = Egenskapens navn: >+sidebar.title = DOM-inspeksjon >+sidebarInstalled = Sidestolpen er installert. >+newAttribute.title = Ny egenskap ... >+editAttribute.title = Rediger egenskap ... >+findNodesDocumentEnd.message = Slutten av dokumentet er nÃ¥dd. >+findNodesDocumentEnd.title = Finn noder >+#LOCALIZATION NOTE (root.title) label displayed for the tree head of the JavaScript Object tree >+root.title = Subjekt >+ >+ >+# The following items correspond to the node types defined by the >+# W3C DOM Core specification. >+1 = Element >+2 = Egenskap >+3 = Tekst >+4 = CDATA-seksjon >+5 = Entitetreferanse >+6 = Entitet >+7 = Prosesseringsinstruksjon >+8 = Kommentar >+9 = Dokument >+10 = Dokumenttype >+11 = Dokumentfragment >+12 = Notasjon >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/prefs.dtd b/suite/extensions/inspector/resources/locale/nb-NO/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/prefs.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM-inspeksjon"> >+<!ENTITY Sidebar.label "Sidestolpe"> >+<!ENTITY elementBlinking.label "Varsling"> >+<!ENTITY blinkSelectedElement.label "Blink valgt element"> >+<!ENTITY borderColor.label "Farge"> >+<!ENTITY borderWidth.label "Bredde"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Varighet"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Hurtighet"> >+<!ENTITY invertColors.label "Inverter farger"> >+<!ENTITY installHowTo.label "DOM-inspektør sidestolpe er ikke installert. Trykk 'Installer' for Ã¥ legge det til i din sidestople."> >+<!ENTITY install.label "Installer"> >+<!ENTITY addNavigatorHooks.label "Opprett hurtigmeny i nettleser"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/nb-NO/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM-inspeksjon"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "Inspiser side"> >+<!ENTITY inspectPageTaskCmd.accesskey "I"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/accessibleEvents.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventType.label "Event Type"> >+<!ENTITY eventTime.label "Time"> >+<!ENTITY eventNodeName.label "Node Name"> >+<!ENTITY clearEventList.label "Clear Event List"> >+ >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/accessibleProps.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descRole.label "Role:"> >+<!ENTITY descName.label "Name:"> >+<!ENTITY descDescription.label "Description:"> >+<!ENTITY descValue.label "Value:"> >+<!ENTITY descState.label "State:"> >+<!ENTITY descActionName.label "Action Name:"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/accessibleTree.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "Role"> >+<!ENTITY name.label "Name"> >+<!ENTITY nodeName.label "Node Name"> >+ >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/boxModel.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Posisjon"> >+<!ENTITY boxDimension.label "Dimensjon"> >+<!ENTITY boxMargin.label "Marg"> >+<!ENTITY boxBorder.label "Ramme"> >+<!ENTITY boxPadding.label "Kantfyll"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Egenskap"> >+<!ENTITY propertyValue.label "Verdi"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/dom.dtd >@@ -0,0 +1,101 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "Finn noder ..."> >+ <!ENTITY cmdShowFindDialog.accesskey "f"> >+ <!ENTITY cmdShowFindDialog.accelkey "f"> >+ >+ <!ENTITY cmdFindNext.label "Finn neste"> >+ <!ENTITY cmdFindNext.accesskey "n"> >+ >+ <!ENTITY cmdToggleAnonContent.label "Vis anonymt innhold"> >+ <!ENTITY cmdToggleAnonContent.accesskey "a"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "Vis blanke noder"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "b"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "Vis tilgjengelige noder"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "s"> >+ >+ <!ENTITY cmdToggleProcessingInstructions.label "Vis behandlingsinstruksjoner"> >+ <!ENTITY cmdToggleProcessingInstructions.accesskey "e"> >+ >+ <!ENTITY cmdFlashSelected.label "Blink valgt element"> >+ >+ <!ENTITY cmdToggleAttributes.label "Vis egenskaper"> >+ <!ENTITY cmdToggleAttributes.accesskey "v"> >+ >+ <!ENTITY cmdSelectByClick.label "Velg elementer ved Ã¥ klikke"> >+ <!ENTITY cmdSelectByClick.accesskey "V"> >+ >+ <!ENTITY ColumnsDialog.title "Kolonner"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "Kolonner ..."> >+ <!ENTITY cmdShowColumnsDialog.accesskey "k"> >+ >+ <!ENTITY cmdInsertNode.label "Sett inn ..."> >+ <!ENTITY cmdDeleteNode.label "Slett"> >+ <!ENTITY cmdCopyXML.label "Kopier XML"> >+ <!ENTITY cmdBlink.label "Blink element"> >+ <!ENTITY cmdInspectBrowser.label "Inspiser dokument"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "Sett pseudo-klasser ..."> >+ <!ENTITY cmdShowPseudoClasses.accesskey "p"> >+ >+ <!ENTITY pseudoClasses.title "Pseudo-klasser"> >+ >+ <!ENTITY findNodes.title "Finn noder"> >+ <!ENTITY findNodesById.label "Id"> >+ <!ENTITY findNodesByTag.label "Element"> >+ <!ENTITY findNodesByAttr.label "Egenskap"> >+ <!ENTITY findNodesByAttrValue.label "Verdi"> >+ <!ENTITY findNodesSearchBy.label "Søk etter"> >+ <!ENTITY findNodesDirection.label "Retning"> >+ <!ENTITY findNodesDirectionUp.label "Opp"> >+ <!ENTITY findNodesDirectionDown.label "Ned"> >+ <!ENTITY findNodesFind.label "Finn"> >+ <!ENTITY findNodesCancel.label "Avbryt"> >+ >+ <!ENTITY mnEditPasteMenu.label "Lim inn"> >+ <!ENTITY mnEditPasteBefore.label "Foran"> >+ <!ENTITY mnEditPasteAfter.label "Etter"> >+ <!ENTITY mnEditPasteReplace.label "Istedenfor (erstatt)"> >+ <!ENTITY mnEditPasteFirstChild.label "Som første barn"> >+ <!ENTITY mnEditPasteLastChild.label "Som siste barn"> >+ <!ENTITY mnEditPasteAsParent.label "Som forelder"> >+ >+ <!ENTITY mnEditInsertMenu.label "Sett inn"> >+ <!ENTITY mnEditInsertAfter.label "Etter"> >+ <!ENTITY mnEditInsertBefore.label "Før"> >+ <!ENTITY mnEditInsertFirstChild.label "Som første barn"> >+ <!ENTITY mnEditInsertLastChild.label "Som siste barn"> >+ >+ <!ENTITY insertNode.title "Sett inn node"> >+ <!ENTITY nodeType.label "Nodetype:"> >+ <!ENTITY nodeType.element.label "Element"> >+ <!ENTITY nodeType.text.label "Tekst"> >+ <!ENTITY namespaceURI.label "Navnerom-URI:"> >+ <!ENTITY tagName.label "Tagg-navn:"> >+ <!ENTITY nodeValue.label "Nodeverdi:"> >+ >+ <!ENTITY namespaceTitle.null.label "null"> >+ <!ENTITY namespaceTitle.default.label "Dokumentforvalg"> >+ <!ENTITY namespaceTitle.custom.label "Egendefinert"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+ <!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+ <!ENTITY namespaceTitle.XML.label "XML"> >+ <!ENTITY namespaceTitle.XHTML.label "XHTML"> >+ <!ENTITY namespaceTitle.XLink.label "XLink"> >+ <!ENTITY namespaceTitle.XSLT.label "XSLT"> >+ <!ENTITY namespaceTitle.XBL.label "XBL"> >+ <!ENTITY namespaceTitle.MathML.label "MathML"> >+ <!ENTITY namespaceTitle.RDF.label "RDF"> >+ <!ENTITY namespaceTitle.XUL.label "XUL"> >+ <!ENTITY namespaceTitle.SVG.label "SVG"> >+ <!ENTITY namespaceTitle.XMLEvents.label "XML Events"> >+ <!ENTITY namespaceTitle.WAIRoles.label "WAI Roles"> >+ <!ENTITY namespaceTitle.WAIProperties.label "WAI Properties"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/domNode.dtd >@@ -0,0 +1,30 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Navn:"> >+<!ENTITY localName.label "Lokalt navn:"> >+<!ENTITY namespaceURI.label "Navnerom:"> >+<!ENTITY nodeType.label "Type:"> >+<!ENTITY nodeValue.label "Verdi:"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "Dokumentforvalg"> >+<!ENTITY namespaceTitle.custom.label "Egendefinert"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "XML Events"> >+<!ENTITY namespaceTitle.WAIRoles.label "WAI Roles"> >+<!ENTITY namespaceTitle.WAIProperties.label "WAI Properties"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Kopier verdi"> >+<!ENTITY jsEval.label "Evaluer Javascript ..."> >+ >+<!ENTITY jsProperty.label "Egenskap"> >+<!ENTITY jsValue.label "Verdi"> >+ >+<!ENTITY evaluateDialog.title "Evaluer uttrykk"> >+<!ENTITY jsEval.desc "Skriv inn et JavaScript-uttrykk. Variabelen "target" er det valgte objektet."> >+<!ENTITY jsExecute.label "Utfør"> >+<!ENTITY inspectReturn.label "Inspiser resultat i"> >+<!ENTITY inspectReturnNew.label "Nytt vindu"> >+<!ENTITY inspectReturnExisting.label "Eksisterende vindu"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/styleRules.dtd >@@ -0,0 +1,22 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "Finn stilregel ..."> >+<!ENTITY miFindCSSRules.accesskey "F"> >+ >+<!ENTITY newRules.label "Ny"> >+<!ENTITY deleteSelectedRules.label "Slett"> >+<!ENTITY disableSelectedRules.label "Deaktiver"> >+<!ENTITY openSelectedFileInEditor.label "à pne i filredigerer"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Sett/fjern !important"> >+ >+<!ENTITY styleRule.label "Regel"> >+<!ENTITY styleRuleURI.label "Fil"> >+<!ENTITY styleRuleLineNumber.label "Linje"> >+ >+<!ENTITY styleRulePropPriority.label "Prioritet"> >+<!ENTITY styleRulePropName.label "Egenskap"> >+<!ENTITY styleRulePropValue.label "Verdi"> >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Stilark"> >+<!ENTITY sheetRules.label "Regler"> >+ >diff --git a/suite/extensions/inspector/resources/locale/nb-NO/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/nb-NO/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/nb-NO/viewers/xblBindings.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "Innhold"> >+<!ENTITY bindingMethods.label "Metoder"> >+<!ENTITY bindingProperties.label "Egenskaper"> >+<!ENTITY bindingGetter.label "Henter"> >+<!ENTITY bindingSetter.label "Setter"> >+<!ENTITY bindingProperty.label "Egenskap"> >+<!ENTITY bindingHandlers.label "HÃ¥ndterere"> >+<!ENTITY bindingResources.label "Resursser"> >+<!ENTITY bindingSourceCode.label "Kildekode"> >diff --git a/suite/extensions/inspector/resources/locale/pl/editing.dtd b/suite/extensions/inspector/resources/locale/pl/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/editing.dtd >@@ -0,0 +1,27 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Cofnij"> >+<!ENTITY mnEditUndo.accesskey "C"> >+<!ENTITY mnEditRedo.label "PrzywróÄ"> >+<!ENTITY mnEditRedo.accesskey "r"> >+<!ENTITY mnEditCut.label "Wytnij"> >+<!ENTITY mnEditCut.accesskey "t"> >+<!ENTITY mnEditCopy.label "Kopiuj"> >+<!ENTITY mnEditCopy.accesskey "K"> >+<!ENTITY mnEditPaste.label "Wklej"> >+<!ENTITY mnEditPaste.accesskey "e"> >+<!ENTITY mnEditInsert.label "Wstaw"> >+<!ENTITY mnEditInsert.accesskey "W"> >+<!ENTITY mnEditEdit.label "Edytuj"> >+<!ENTITY mnEditEdit.accesskey "d"> >+<!ENTITY mnEditDelete.label "UsuÅ"> >+<!ENTITY mnEditDelete.accesskey "s"> >+<!ENTITY mnEditInspectInNewWindow.label "Zbadaj w nowym oknie"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "Z"> >+<!ENTITY mnEditInspectInNewWindow.key "I"> >+<!ENTITY mnEditCopyFileURI.label "Kopiuj adres URI"> >+<!ENTITY mnEditCopyFileURI.accesskey "U"> >+<!ENTITY mnEditViewFileURI.label "WyÅwietl plik"> >+<!ENTITY mnEditViewFileURI.accesskey "y"> >diff --git a/suite/extensions/inspector/resources/locale/pl/inspector.dtd b/suite/extensions/inspector/resources/locale/pl/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/inspector.dtd >@@ -0,0 +1,67 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "Inspektor DOM"> >+ >+<!ENTITY thDOMNodes.label "WÄzÅy DOM"> >+<!ENTITY btnInspect.label "Zbadaj"> >+<!ENTITY btnInspect.accesskey "Z"> >+<!ENTITY bxDocPanel.title "Dokument"> >+<!ENTITY bxObjectPanel.title "Obiekt"> >+<!ENTITY btnSelecting.tooltip "Wybierz wÄzeÅ do zbadania poprzez klikniÄcie na nim"> >+<!ENTITY btnFind.tooltip "Znajdź wÄzeÅ do zbadania poprzez jego id, tag, lub atrybut"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Plik"> >+<!ENTITY mnFile.accesskey "P"> >+<!ENTITY mnInspectContentDocument.label "Zbadaj zwykÅy dokument"> >+<!ENTITY mnInspectContentDocument.accesskey "b"> >+<!ENTITY mnInspectChromeDocument.label "Zbadaj dokument chrome"> >+<!ENTITY mnInspectChromeDocument.accesskey "a"> >+<!ENTITY mnInspectApplicationAccessible.label "Zbadaj dostÄpnÄ aplikacjÄ"> >+<!ENTITY mnInspectApplicationAccessible.accesskey "d"> >+<!ENTITY cmdEnterLocation.label "Zbadaj URL"> >+<!ENTITY cmdEnterLocation.accesskey "U"> >+<!ENTITY cmdEnterLocation.key "L"> >+<!ENTITY cmdEnterLocation.key2 "D"> >+<!ENTITY cmdSave.label "Zapisz DOM jakoâ¦"> >+<!ENTITY cmdSave.accesskey "s"> >+<!ENTITY cmdClose.label "Zamknij"> >+<!ENTITY cmdClose.accesskey "Z"> >+<!ENTITY cmdExit.label "ZakoÅcz"> >+<!ENTITY cmdExit.accesskey "k"> >+ >+<!ENTITY mnEdit.label "Edycja"> >+<!ENTITY mnEdit.accesskey "E"> >+<!ENTITY cmdUndo.label "Cofnij"> >+<!ENTITY cmdUndo.accesskey "C"> >+<!ENTITY cmdRedo.label "PrzywróÄ"> >+<!ENTITY cmdRedo.accesskey "r"> >+<!ENTITY cmdCut.label "Wytnij"> >+<!ENTITY cmdCut.accesskey "t"> >+<!ENTITY cmdCopy.label "Kopiuj"> >+<!ENTITY cmdCopy.accesskey "K"> >+<!ENTITY cmdPaste.label "Wklej"> >+<!ENTITY cmdPaste.accesskey "e"> >+<!ENTITY cmdDelete.label "UsuÅ"> >+<!ENTITY cmdDelete.accesskey "U"> >+ >+<!ENTITY mnView.label "Widok"> >+<!ENTITY mnView.accesskey "W"> >+<!ENTITY mnDocViewerList.label "PrzeglÄ darka dokumentów"> >+<!ENTITY mnDocViewerList.accesskey "d"> >+<!ENTITY mnObjectViewerList.label "PrzeglÄ darka obiektów"> >+<!ENTITY mnObjectViewerList.accesskey "o"> >+<!ENTITY cmdToggleDocument.label "Pokaż dokument w panelu przeglÄ darki"> >+<!ENTITY cmdToggleDocument.accesskey "P"> >+<!ENTITY cmdToggleSearch.label "Wyniki wyszukiwania"> >+<!ENTITY cmdFlashOnSelect.label "Wyróżnij wybrany element mruganiem"> >+<!ENTITY cmdFlashOnSelect.accesskey "y"> >+ >+<!ENTITY browserPanel.label "PrzeglÄ darka"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/pl/inspector.properties b/suite/extensions/inspector/resources/locale/pl/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/inspector.properties >@@ -0,0 +1,37 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+applicationAccesible.title=DostÄpna aplikacja >+inspectWindow.noDocuments.message=(Brak) >+styleRuleNewProperty.title=Nowa wÅasnoÅÄ reguÅy stylu >+styleRuleEditProperty.title=Edycja wÅasnoÅci reguÅy stylu >+styleRulePropertyValue.message=Wprowadź wartoÅÄ wÅasnoÅci: >+styleRulePropertyName.message=Wprowadź nazwÄ wÅasnoÅci: >+sidebar.title=Inspektor DOM >+sidebarInstalled=Panel boczny zostaÅ zainstalowany. >+newAttribute.title=Nowy atrybut >+editAttribute.title=Edycja atrybutu >+findNodesDocumentEnd.message=ZakoÅczono wyszukiwanie wÄzÅów. >+findNodesDocumentEnd.title=Znajdź wÄzÅy >+# LOCALIZATION NOTE (root.title) label displayed for the tree head of the >+# JavaScript Object tree >+root.title=Przedmiot >+ >+irrecoverableSubtree.message=Niektóre z zaznaczonych wÄzÅów sÄ czÄÅciÄ anonimowego poddrzewa, które zostanie zniszczone. UsuniÄcie tych wÄzÅów bÄdzie nieodwracalne. UsunÄ Ä zaznaczone wÄzÅy? >+irrecoverableSubtree.title=UsuÅ anonimowe poddrzewo >+ >+# The following items correspond to the node types defined by the W3C DOM Core >+# specification. >+1=Element >+2=Atrybut >+3=Tekst >+4=Sekcja CDATA >+5=OdwoÅanie encji >+6=Encja >+7=Instrukcje przetwarzania >+8=Komentarz >+9=Dokument >+10=Typ dokumentu >+11=Fragment dokumentu >+12=Notacja >diff --git a/suite/extensions/inspector/resources/locale/pl/prefs.dtd b/suite/extensions/inspector/resources/locale/pl/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/prefs.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "Inspektor DOM"> >+<!ENTITY Sidebar.label "Panel boczny"> >+<!ENTITY elementBlinking.label "Wyróżnianie elementów interfejsu"> >+<!ENTITY blinkSelectedElement.label "Wyróżnij wybrany element mrugajÄ cym obramowaniem"> >+<!ENTITY blinkSelectedElement.accesskey "W"> >+<!ENTITY borderColor.label "Kolor obramowania"> >+<!ENTITY borderColor.accesskey "K"> >+<!ENTITY borderWidth.label "SzerokoÅÄ obramowania"> >+<!ENTITY borderWidth.accesskey "o"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Mrugaj przez"> >+<!ENTITY blinkDuration.accesskey "M"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "SzybkoÅÄ mrugania"> >+<!ENTITY blinkSpeed.accesskey "S"> >+<!ENTITY invertColors.label "OdwrÃ³Ä kolory"> >+<!ENTITY invertColors.accesskey "r"> >+<!ENTITY installHowTo.label "Niektóre funkcje Inspektora DOM dostÄpne sÄ w postaci karty panelu bocznego. Należy nacisnÄ Ä przycisk 'Dodaj kartÄ', aby wÅÄ czyÄ kartÄ Inspektora DOM."> >+<!ENTITY install.label "Instaluj"> >+<!ENTITY install.accesskey "I"> >+<!ENTITY addNavigatorHooks.label "Dodaj menu kontekstowe do przeglÄ darki"> >+<!ENTITY addNavigatorHooks.accesskey "D"> >diff --git a/suite/extensions/inspector/resources/locale/pl/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/pl/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "Inspektor DOM"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "s"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "Zbadaj stronÄ"> >+<!ENTITY inspectPageTaskCmd.accesskey "s"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewer-registry.dtd b/suite/extensions/inspector/resources/locale/pl/viewer-registry.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewer-registry.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY dom.label "WÄzÅy DOM"> >+<!ENTITY stylesheets.label "Arkusze stylów"> >+<!ENTITY domNode.label "WÄzeÅ DOM"> >+<!ENTITY boxModel.label "Model skrzynki (Box Model)"> >+<!ENTITY xblBindings.label "WiÄ zania XBL"> >+<!ENTITY styleRules.label "ReguÅy CSS"> >+<!ENTITY computedStyle.label "Obliczony styl"> >+<!ENTITY usedFontFaces.label "Użyte kroje czcionek"> >+<!ENTITY jsObject.label "Obiekt jÄzyka JavaScript"> >+<!ENTITY accessibleEvent.label "DostÄpne zdarzenie"> >+<!ENTITY accessibleObject.label "DostÄpne obiekty"> >+<!ENTITY accessibleProps.label "DostÄpne wÅaÅciwoÅci"> >+<!ENTITY accessibleRelations.label "DostÄpne relacje"> >+<!ENTITY accessibleEvents.label "DostÄpne zdarzenia"> >+<!ENTITY accessibleTree.label "DostÄpne drzewo"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEvent.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descIsFromUserInput.label "Wprowadzony przez użytkownika: "> >+<!ENTITY descState.label "Stan: "> >+<!ENTITY descIsEnabled.label "Stan wÅÄ czony: "> >+<!ENTITY descStartOffset.label "Offset poczÄ tkowy: "> >+<!ENTITY descLength.label "DÅugoÅÄ: "> >+<!ENTITY descIsInserted.label "Tekst wstawiony: "> >+<!ENTITY descModifiedText.label "Tekst zmodyfikowany: "> >+<!ENTITY descCaretOffset.label "Offset kursora: "> >+<!ENTITY descrHandlerOutput.label "Obszar wyjÅciowy uchwytu zdarzeÅ: "> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEvents.dtd >@@ -0,0 +1,23 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventList.label "Lista zdarzeÅ"> >+<!ENTITY watchedEvents.label "Obserwowane zdarzenia"> >+<!ENTITY handledEvents.label "Uchwycane zdarzenia:"> >+<!ENTITY eventType.label "Typ zdarzenia"> >+<!ENTITY eventTime.label "Czas"> >+<!ENTITY eventTargetNodeName.label "Nazwa wÄzÅa"> >+<!ENTITY eventTargetNodeID.label "Identyfikator"> >+<!ENTITY eventTargetRole.label "Rola"> >+<!ENTITY eventTargetName.label "Nazwa"> >+<!ENTITY isWatched.label "SÄ obserwowane"> >+<!ENTITY isHandlerEnabled.label "Uchwyt wÅÄ czony"> >+<!ENTITY clearEventList.label "WyczyÅÄ listÄ zdarzeÅ"> >+<!ENTITY chooseEventsToWatch.label "Wybierz zdarzenie do obserwacji"> >+<!ENTITY watchAll.label "Obserwuj wszystkie"> >+<!ENTITY watchNone.label "Nie obserwuj nic"> >+<!ENTITY editHandler.label "Edytuj uchwyt"> >+<!ENTITY contextHelp.label "Pomoc"> >+<!ENTITY handlerEditorNoEvent.label "Wybierz typ zdarzenia w celu dodania uchwytu."> >+ >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEvents.properties b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEvents.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEvents.properties >@@ -0,0 +1,22 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+mutationEvents=zdarzenia mutacji >+changeEvents=zdarzenia zmiany >+notificationEvents=zdarzenia powiadomieÅ >+selectionEvents=zdarzenia zaznaczenia >+menuEvents=zdarzenia menu >+documentEvents=zdarzenia dokumentu >+textEvents=zdarzenia tekstu >+tableEvents=zdarzenia tabeli >+windowEvents=zdarzenia okna >+hyperLinkEvents=zdarzenia odnoÅników >+hyperTextEvents=zdarzenia hipertekstu >+ >+handlerEditorLabel=WÅÄ cz uchwyt dla zdarzenia â%Sâ. >+ >+role=Rola >+name=Nazwa >+nodeName=Nazwa wÄzÅa >+id=Identyfikator >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEventsHandlerHelpDialog.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEventsHandlerHelpDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleEventsHandlerHelpDialog.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY helpDialog.title "Pomoc uchwytu"> >+ >+<!ENTITY general.descr "Napisz i zaÅÄ cz uchwyt zdarzenia dostÄpnoÅci. Gdy te zdarzenie wystÄ pi, bÄdzie można wybraÄ je z listy zdarzeÅ oraz zobaczyÄ wyniki analizy uchwytu w podglÄ dzie zdarzeÅ dostÄpnoÅci."> >+<!ENTITY helpers.descr "NastÄpujÄ ce obiekty i funkcje mogÄ byÄ używane w edytorze uchwytów:"> >+ >+<!ENTITY event.descr "obiekt zdarzenia dostÄpnoÅci"> >+<!ENTITY target.descr "obiekt docelowy dostÄpnoÅci"> >+<!ENTITY accRetrieval.descr "Serwis dostÄpnoÅci nsIAccessibleRetrieval"> >+<!ENTITY output.descr "pokazuje wybrany ciÄ g"> >+<!ENTITY outputAttrs.descr "pokazuje atrybuty obiektu dla wybranego obiektu dostÄpnoÅci"> >+<!ENTITY outputRole.descr "pokazuje role dla wybranego obiektu dostÄpnoÅci"> >+<!ENTITY outputStates.descr "pokazuje stany wybranego obiektu dostÄpnoÅci"> >+<!ENTITY outputTree.descr "pokazuje drzewo dla wybranego obiektu dostÄpnoÅci, podÅwietlajÄ c elementy dostÄpnoÅciowe z wybranej listy"> >+<!ENTITY outputDOMAttrs.descr "pokazuje atrybuty DOM dla wybranego obiektu dostÄpnoÅci"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleProps.dtd >@@ -0,0 +1,29 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descRole.label "Rola:"> >+<!ENTITY descName.label "Nazwa:"> >+<!ENTITY descDescription.label "Opis:"> >+<!ENTITY descValue.label "WartoÅÄ:"> >+<!ENTITY descState.label "Stan:"> >+<!ENTITY descBounds.label "Granice:"> >+<!ENTITY tabAttrs.label "Atrybuty obiektu"> >+<!ENTITY colAttrName.label "Nazwa"> >+<!ENTITY colAttrValue.label "WartoÅÄ"> >+<!ENTITY tabActions.label "CzynnoÅci"> >+<!ENTITY descKeyBindings.label "ZawiÄ zane klucze:"> >+<!ENTITY descInvoke.label "Uruchom"> >+<!ENTITY tabTextAttrs.label "Atrybuty tekstu"> >+<!ENTITY descDefaultAttrs.label "DomyÅlne atrybuty:"> >+<!ENTITY descStartOffset.label "Offset poczÄ tkowy:"> >+<!ENTITY descEndOffset.label "Offset koÅcowy:"> >+<!ENTITY tabTableCell.label "Komórka tabeli"> >+<!ENTITY descColumnIdx.label "Indeks kolumny:"> >+<!ENTITY descRowIdx.label "Indeks wiersza:"> >+<!ENTITY descColumnExtent.label "Rozmiary kolumny:"> >+<!ENTITY descRowExtent.label "Rozmiary wiersza:"> >+<!ENTITY descIsSelected.label "Jest zaznaczone:"> >+<!ENTITY colProp.label "WÅaÅciwoÅÄ"> >+<!ENTITY colRole.label "Rola"> >+<!ENTITY colName.label "Nazwa"> >+<!ENTITY colNodeName.label "Nazwa wÄzÅa"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/accessibleProps.properties b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleProps.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleProps.properties >@@ -0,0 +1,5 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+accBounds=x: %S; y: %S; szerokoÅÄ: %S; wysokoÅÄ: %S; >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleRelations.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY relationType.label "Typ relacji"> >+<!ENTITY role.label "Rola"> >+<!ENTITY nodeName.label "Nazwa wÄzÅa"> >+<!ENTITY relations.label "Relacje: "> >+<!ENTITY relationTargets.label "Cele relacji: "> >+ >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleTree.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "Rola"> >+<!ENTITY name.label "Nazwa"> >+<!ENTITY nodeName.label "Nazwa wÄzÅa"> >+ >+<!ENTITY evaluateJS.label "Analizuj kod JavaScript"> >+ >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/accessibleTreeEvalJSDialog.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleTreeEvalJSDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/accessibleTreeEvalJSDialog.dtd >@@ -0,0 +1,12 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY evaluateDialog.title "Okno dialogowe analizy JavaScript"> >+ >+<!ENTITY btnEvaluateJS.label "Analiza"> >+<!ENTITY btnEvaluateJS.accesskey "E"> >+<!ENTITY txtInputArea.label "Obszar wprowadzania (użyj zmiennej 'dostÄpny' aby sterowaÄ wybranÄ dostÄpnoÅciÄ i funkcjÄ 'wyjÅcie' by pisaÄ w oknie 'Obszar wyjÅciowy'): "> >+<!ENTITY txtInputArea.accesskey "I"> >+<!ENTITY txtOutputArea.label "Obszar wyjÅciowy: "> >+<!ENTITY txtOutputArea.accesskey "O"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/boxModel.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Pozycja"> >+<!ENTITY boxDimension.label "Wymiary"> >+<!ENTITY boxMargin.label "Margines"> >+<!ENTITY boxBorder.label "Obramowanie"> >+<!ENTITY boxPadding.label "OdstÄpy wewnÄtrzne"> >+ >+<!ENTITY xCoord.label "wspóÅrzÄdna pozioma"> >+<!ENTITY yCoord.label "wspóÅrzÄdna pionowa"> >+<!ENTITY screenXCoord.label "wspóÅrzÄdna pozioma ekranu"> >+<!ENTITY screenYCoord.label "wspóÅrzÄdna pionowa ekranu"> >+ >+<!ENTITY dimensionWidth.label "szerokoÅÄ pudeÅka"> >+<!ENTITY dimensionHeight.label "wysokoÅÄ pudeÅka"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "WÅaÅciwoÅÄ"> >+<!ENTITY propertyValue.label "WartoÅÄ"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/dom.dtd >@@ -0,0 +1,138 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY cmdShowFindDialog.label "Znajdź wÄzÅyâ¦"> >+<!ENTITY cmdShowFindDialog.accesskey "Z"> >+<!ENTITY cmdShowFindDialog.key "f"> >+ >+<!ENTITY cmdFindAgain.label "Znajdź nastÄpne"> >+<!ENTITY cmdFindAgain.accesskey "n"> >+<!ENTITY cmdFindAgain.key "G"> >+ >+<!ENTITY cmdToggleAnonContent.label "WyÅwietl anonimowÄ zawartoÅÄ"> >+<!ENTITY cmdToggleAnonContent.accesskey "a"> >+ >+<!ENTITY cmdToggleWhitespaceNodes.label "WyÅwietl wÄzÅy zawierajÄ ce niewidoczne znaki"> >+<!ENTITY cmdToggleWhitespaceNodes.accesskey "n"> >+ >+<!ENTITY cmdToggleAccessibleNodes.label "WyÅwietl dostÄpne wÄzÅy"> >+<!ENTITY cmdToggleAccessibleNodes.accesskey "d"> >+ >+<!ENTITY cmdToggleProcessingInstructions.label "WyÅwietl instrukcje przetwarzania"> >+<!ENTITY cmdToggleProcessingInstructions.accesskey "y"> >+ >+<!ENTITY cmdToggleAttributes.label "WyÅwietl atrybuty"> >+<!ENTITY cmdToggleAttributes.accesskey "r"> >+ >+<!ENTITY cmdSelectByClick.label "Wybierz element poprzez klikniÄcie"> >+<!ENTITY cmdSelectByClick.accesskey "W"> >+ >+<!ENTITY ColumnsDialog.title "Kolumny"> >+ >+<!ENTITY cmdShowColumnsDialog.label "Kolumnyâ¦"> >+<!ENTITY cmdShowColumnsDialog.accesskey "K"> >+ >+<!ENTITY cmdInsertNode.label "Wstawâ¦"> >+<!ENTITY cmdDeleteNode.label "UsuÅ"> >+<!ENTITY cmdCopyXML.label "Kopiuj XML"> >+<!ENTITY cmdCopyXML.accesskey "X"> >+<!ENTITY cmdBlink.label "Wyróżnij element"> >+<!ENTITY cmdBlink.accesskey "e"> >+<!ENTITY cmdInspectBrowser.label "Zbadaj wewnÄtrzny dokument"> >+<!ENTITY cmdInspectBrowser.accesskey "Z"> >+ >+<!ENTITY cmdShowPseudoClasses.label "Ustaw pseudoklasyâ¦"> >+<!ENTITY cmdShowPseudoClasses.accesskey "p"> >+ >+<!ENTITY pseudoClasses.title "Pseudoklasy"> >+ >+<!ENTITY findNodes.title "Znajdź wÄzÅy"> >+<!ENTITY findNodesById.label "Identyfikator ID"> >+<!ENTITY findNodesById.accesskey "d"> >+<!ENTITY findNodesById.accesskey2 "I"> >+<!ENTITY findNodesByTag.label "Znacznik"> >+<!ENTITY findNodesByTag.accesskey "k"> >+<!ENTITY findNodesByTag.accesskey2 "Z"> >+<!ENTITY findNodesByAttr.label "Atrybut"> >+<!ENTITY findNodesByAttr.accesskey "u"> >+<!ENTITY findNodesByAttr.accesskey2 "A"> >+<!ENTITY findNodesByAttrValue.label "WartoÅÄ"> >+<!ENTITY findNodesByAttrValue.accesskey "o"> >+<!ENTITY findNodesSearchBy.label "Szukaj po"> >+<!ENTITY findNodesDirection.label "Kierunek"> >+<!ENTITY findNodesDirectionUp.label "W górÄ"> >+<!ENTITY findNodesDirectionUp.accesskey "g"> >+<!ENTITY findNodesDirectionDown.label "W dóÅ"> >+<!ENTITY findNodesDirectionDown.accesskey "w"> >+<!ENTITY findNodesFind.label "Znajdź"> >+<!ENTITY findNodesCancel.label "Anuluj"> >+ >+<!ENTITY mnEditPasteMenu.label "Wklej"> >+<!ENTITY mnEditPasteMenu.accesskey "W"> >+<!ENTITY mnEditPasteBefore.label "Przed"> >+<!ENTITY mnEditPasteBefore.accesskey "P"> >+<!ENTITY mnEditPasteAfter.label "Po"> >+<!ENTITY mnEditPasteAfter.accesskey "o"> >+<!ENTITY mnEditPasteReplace.label "Zamiast tego (zamieÅ)"> >+<!ENTITY mnEditPasteReplace.accesskey "a"> >+<!ENTITY mnEditPasteFirstChild.label "Jako pierwszy element potomny"> >+<!ENTITY mnEditPasteFirstChild.accesskey "J"> >+<!ENTITY mnEditPasteLastChild.label "Jako ostatni element potomny"> >+<!ENTITY mnEditPasteLastChild.accesskey "k"> >+<!ENTITY mnEditPasteAsParent.label "Jako element nadrzÄdny"> >+<!ENTITY mnEditPasteAsParent.accesskey "r"> >+ >+<!ENTITY mnEditInsertMenu.label "Wstaw"> >+<!ENTITY mnEditInsertMenu.accesskey "a"> >+<!ENTITY mnEditInsertAfter.label "Po"> >+<!ENTITY mnEditInsertAfter.accesskey "o"> >+<!ENTITY mnEditInsertBefore.label "Przed"> >+<!ENTITY mnEditInsertBefore.accesskey "P"> >+<!ENTITY mnEditInsertFirstChild.label "Jako pierwszy element potomny"> >+<!ENTITY mnEditInsertFirstChild.accesskey "J"> >+<!ENTITY mnEditInsertLastChild.label "Jako ostatni element potomny"> >+<!ENTITY mnEditInsertLastChild.accesskey "k"> >+ >+<!ENTITY insertNode.title "Wstaw wÄzeÅ"> >+<!ENTITY nodeType.label "Typ wÄzÅa:"> >+<!ENTITY nodeType.accesskey "T"> >+<!ENTITY nodeType.element.label "Element"> >+<!ENTITY nodeType.text.label "Tekst"> >+<!ENTITY namespaceURI.label "PrzestrzeÅ nazw URI:"> >+<!ENTITY namespaceURI.accesskey "U"> >+<!ENTITY tagName.label "Nazwa znacznika:"> >+<!ENTITY tagName.accesskey "N"> >+<!ENTITY nodeValue.label "WartoÅÄ wÄzÅa:"> >+<!ENTITY nodeValue.accesskey "W"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "DomyÅlna dokumentu"> >+<!ENTITY namespaceTitle.custom.label "Użytkownika"> >+ >+ <!-- LOCALIZATION NOTE: The following entities are names of W3C >+ specifications. Please consult >+ http://www.w3.org/Consortium/Translation/ for appropriate translation >+ or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "Zdarzenia XML"> >+<!ENTITY namespaceTitle.WAIRoles.label "Role WAI"> >+<!ENTITY namespaceTitle.WAIProperties.label "WÅaÅciwoÅci WAI"> >+ >+ <!-- LOCALIZATION NOTE: Localizers can choose not to translate the following >+ access keys. For a discussion about the pros and cons of such a >+ decision, see https://bugzilla.mozilla.org/show_bug.cgi?id=398704, >+ comments 1 and 2. --> >+<!ENTITY cbxStateHover.accesskey "h"> >+<!ENTITY cbxStateActive.accesskey "a"> >+<!ENTITY cbxStateFocus.accesskey "f"> >+ >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/domNode.dtd >@@ -0,0 +1,31 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Nazwa wÄzÅa:"> >+<!ENTITY localName.label "Nazwa lokalna:"> >+<!ENTITY namespaceURI.label "URI przestrzeni nazw:"> >+<!ENTITY nodeType.label "Typ wÄzÅa:"> >+<!ENTITY nodeValue.label "WartoÅÄ wÄzÅa:"> >+<!ENTITY grpAttr.label "Atrybuty"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "DomyÅlna dokumentu"> >+<!ENTITY namespaceTitle.custom.label "Użytkownika"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "Zdarzenia XML"> >+<!ENTITY namespaceTitle.WAIRoles.label "Role WAI"> >+<!ENTITY namespaceTitle.WAIProperties.label "WÅaÅciwoÅci WAI"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Kopiuj wartoÅÄ"> >+<!ENTITY jsEval.label "Analizuj kod JavaScriptâ¦"> >+ >+<!ENTITY jsProperty.label "WÅaÅciwoÅÄ"> >+<!ENTITY jsValue.label "WartoÅÄ"> >+ >+<!ENTITY evaluateDialog.title "Analizuj wyrażenie"> >+<!ENTITY jsEval.desc "ProszÄ podaÄ wyrażenie JavaScript. Zmienna "target" jest obecnie wybranÄ wÅaÅciwoÅciÄ ."> >+<!ENTITY jsExecute.label "Wykonaj"> >+<!ENTITY inspectReturn.label "Zbadaj wynik w"> >+<!ENTITY inspectReturnNew.label "nowym oknie"> >+<!ENTITY inspectReturnExisting.label "istniejÄ cym oknie"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/styleRules.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "Znajdź reguÅy CSSâ¦"> >+<!ENTITY miFindCSSRules.accesskey "r"> >+ >+<!ENTITY newRules.label "Nowy"> >+<!ENTITY deleteSelectedRules.label "UsuÅ"> >+<!ENTITY disableSelectedRules.label "WyÅÄ cz"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "PrzeÅÄ cz atrybut !important"> >+ >+<!ENTITY styleRule.label "ReguÅa"> >+<!ENTITY styleRuleURI.label "Plik"> >+<!ENTITY styleRuleLineNumber.label "Wiersz"> >+ >+<!ENTITY styleRulePropPriority.label "Priorytet"> >+<!ENTITY styleRulePropName.label "WÅaÅciwoÅÄ"> >+<!ENTITY styleRulePropValue.label "WartoÅÄ"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Arkusz stylów"> >+<!ENTITY sheetRules.label "ReguÅy"> >+ >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/usedFontFaces.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/usedFontFaces.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/usedFontFaces.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY fontName.label "Nazwa czcionki"> >+<!ENTITY cssFamilyName.label "Nazwa rodziny"> >+<!ENTITY uri.label "URI"> >+<!ENTITY localName.label "Nazwa lokalna"> >+<!ENTITY format.label "Format"> >diff --git a/suite/extensions/inspector/resources/locale/pl/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/pl/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pl/viewers/xblBindings.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "ZawartoÅÄ"> >+<!ENTITY bindingMethods.label "Metody"> >+<!ENTITY bindingMethodName.label "Nazwa metody"> >+<!ENTITY bindingProperties.label "WÅaÅciwoÅci"> >+<!ENTITY bindingGetter.label "Pobieranie wartoÅci"> >+<!ENTITY bindingSetter.label "Ustawianie wartoÅci"> >+<!ENTITY bindingProperty.label "WÅaÅciwoÅci"> >+<!ENTITY bindingHandlers.label "Uchwyty"> >+<!ENTITY bindingHandlerEvent.label "Zdarzenie"> >+<!ENTITY bindingHandlerPhase.label "Faza"> >+<!ENTITY bindingResources.label "Zasoby"> >+<!ENTITY bindingResourceType.label "Typ"> >+<!ENTITY bindingResourceSrc.label "ŹródÅo"> >+<!ENTITY bindingSourceCode.label "Kod źródÅowy"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/editing.dtd b/suite/extensions/inspector/resources/locale/pt-BR/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/editing.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Desfazer"> >+<!ENTITY mnEditUndo.accesskey "D"> >+<!ENTITY mnEditRedo.label "Refazer"> >+<!ENTITY mnEditRedo.accesskey "R"> >+<!ENTITY mnEditCut.label "Recortar"> >+<!ENTITY mnEditCut.accesskey "t"> >+<!ENTITY mnEditCopy.label "Copiar"> >+<!ENTITY mnEditCopy.accesskey "C"> >+<!ENTITY mnEditPaste.label "Colar"> >+<!ENTITY mnEditPaste.accesskey "o"> >+<!ENTITY mnEditInsert.label "Inserir..."> >+<!ENTITY mnEditInsert.accesskey "I"> >+<!ENTITY mnEditEdit.label "Editar..."> >+<!ENTITY mnEditEdit.accesskey "E"> >+<!ENTITY mnEditDelete.label "Excluir"> >+<!ENTITY mnEditDelete.accesskey "x"> >+<!ENTITY mnEditInspectInNewWindow.label "Inspecionar em nova janela"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/inspector.dtd b/suite/extensions/inspector/resources/locale/pt-BR/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/inspector.dtd >@@ -0,0 +1,63 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM Inspector"> >+ >+<!ENTITY thDOMNodes.label "Nós DOM"> >+<!ENTITY btnInspect.label "Inspecionar"> >+<!ENTITY bxDocPanel.title "Documento"> >+<!ENTITY bxObjectPanel.title "Objeto"> >+<!ENTITY btnSelecting.tooltip "Clicar para localizar e inspecionar o nó"> >+<!ENTITY btnFind.tooltip "Localizar um nó para inspecionar através do id, tag ou atributo"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Arquivo"> >+<!ENTITY mnFile.accesskey "A"> >+ <!ENTITY cmdShowOpenURLDialog.label "Inspecionar URL..."> >+ <!ENTITY cmdShowOpenURLDialog.accesskey "U"> >+ <!ENTITY cmdClose.label "Fechar"> >+ <!ENTITY cmdClose.accesskey "F"> >+ <!ENTITY cmdExit.label "Sair"> >+ <!ENTITY cmdExit.accesskey "S"> >+ >+<!ENTITY mnEdit.label "Editar"> >+<!ENTITY mnEdit.accesskey "E"> >+ <!ENTITY cmdUndo.label "Desfazer"> >+ <!ENTITY cmdUndo.accesskey "D"> >+ <!ENTITY cmdRedo.label "Refazer"> >+ <!ENTITY cmdRedo.accesskey "R"> >+ <!ENTITY cmdCut.label "Recortar"> >+ <!ENTITY cmdCut.accesskey "t"> >+ <!ENTITY cmdCopy.label "Copiar"> >+ <!ENTITY cmdCopy.accesskey "C"> >+ <!ENTITY cmdPaste.label "Colar"> >+ <!ENTITY cmdPaste.accesskey "o"> >+ <!ENTITY cmdDelete.label "Excluir"> >+ <!ENTITY cmdDelete.accesskey "x"> >+ >+<!ENTITY mnSearch.label "Pesquisar"> >+<!ENTITY mnSearch.accesskey "P"> >+ <!ENTITY mnSearchPlugins.label "Extensões"> >+ <!ENTITY mnSearchPlugins.accesskey "E"> >+ <!ENTITY cmdRunSearch.label "Executar..."> >+ <!ENTITY cmdRunSearch.accesskey "E"> >+ >+<!ENTITY mnView.label "Exibir"> >+<!ENTITY mnView.accesskey "x"> >+ <!ENTITY cmdToggleBrowser.label "Browser"> >+ <!ENTITY cmdToggleSearch.label "Resultados da pesquisa"> >+ >+<!ENTITY cmdViewSearchItem.label "Exibir..."> >+<!ENTITY cmdEditSearchItem.label "Editar..."> >+<!ENTITY cmdCopySearchItemLine.label "Copiar linha"> >+<!ENTITY cmdCopySearchItemAll.label "Copiar tudo"> >+<!ENTITY cmdSaveSearchItemText.label "Salvar..."> >+<!ENTITY cmdClearSearch.label "Limpar"> >+<!ENTITY cmdHideSearchItems.label "Ocultar"> >+ >+<!ENTITY browserPanel.label "Browser"> >+ >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/inspector.properties b/suite/extensions/inspector/resources/locale/pt-BR/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/inspector.properties >@@ -0,0 +1,39 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+ >+inspectURL.title = Inspecionar URL >+inspectURL.message = Forne\u00e7a uma URL: >+inspectWindow.error.message = N\u00e3o foi poss\u00edvel mudar para a janela requisitada. >+inspectWindow.error.title = Erro ao inspecionar janela >+styleRuleNewProperty.title = Nova regra de estilo >+styleRuleEditProperty.title = Editar regra de estilo >+styleRulePropertyValue.message = Forne\u00e7a o valor da propriedade: >+styleRulePropertyName.message = Forne\u00e7a o nome da propriedade: >+sidebar.title = DOM Inspector >+sidebarInstalled = O painel est\u00e1 instalado. >+newAttribute.title = Novo atributo >+editAttribute.title = Editar atributo >+enterAttrName.message = Forne\u00e7a o nome do atributo: >+enterAttrValue.message = Forne\u00e7a o valor do atributo: >+findNodesDocumentEnd.message = Atingido o fim do documento. >+findNodesDocumentEnd.title = Localizar n\u00f3s >+#LOCALIZATION NOTE (root.title) label displayed for the tree head of the JavaScript Object tree >+root.title = Subject >+ >+ >+# The following items correspond to the node types defined by the >+# W3C DOM Core specification. >+1 = Elemento >+2 = Atributo >+3 = Texto >+4 = Se\u00e7\u00e3o CDATA >+5 = Refer\u00eancia de entidade >+6 = Entidade >+7 = Processando instru\u00e7\u00e3o >+8 = Coment\u00e1rio >+9 = Documento >+10 = Tipo de documento >+11 = Fragmento de documento >+12 = Anota\u00e7\u00e3o >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/prefs.dtd b/suite/extensions/inspector/resources/locale/pt-BR/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/prefs.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM Inspector"> >+<!ENTITY Sidebar.label "Painel"> >+<!ENTITY elementBlinking.label "Piscamento"> >+<!ENTITY blinkSelectedElement.label "Piscar elemento selecionado"> >+<!ENTITY borderColor.label "Cor da borda"> >+<!ENTITY borderWidth.label "Largura da borda"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Duração da piscada"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Velocidade da piscada"> >+<!ENTITY invertColors.label "Inverter cores"> >+<!ENTITY installHowTo.label "O painel do DOM Inspector não está instalado. Clique em 'Instalar' para adicioná-lo ao painel."> >+<!ENTITY install.label "Instalar"> >+<!ENTITY addNavigatorHooks.label "Adicionar menus de contexto ao browser"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/search/findFiles.dtd b/suite/extensions/inspector/resources/locale/pt-BR/search/findFiles.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/search/findFiles.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY findFiles.title "Localizar arquivos..."> >+<!ENTITY txSearchFor.label "Localizar:"> >+<!ENTITY txSearchPath.label "Localizar em:"> >+<!ENTITY cbRecurse.label "Incluir subpastas"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/search/junkImgs.dtd b/suite/extensions/inspector/resources/locale/pt-BR/search/junkImgs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/search/junkImgs.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY junkImgs.title "Localizar imagens não usadas no tema atual..."> >+<!ENTITY junkImgsDescription "Para a pesquisa funcionar efetivamente, é necessário inspecionar um documento que carregue TODOS os arquivos CSS do tema atual. Depois aponte o local do disco onde a raiz do tema está localizada."> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/pt-BR/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM Inspector"> >+<!ENTITY inspectorTaskCmd.commandkey "I"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "I"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "Inspecionar página"> >+<!ENTITY inspectPageTaskCmd.accesskey "I"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/pt-BR/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/viewers/boxModel.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Posição"> >+<!ENTITY boxDimension.label "Dimensões"> >+<!ENTITY boxMargin.label "Margem"> >+<!ENTITY boxBorder.label "Borda"> >+<!ENTITY boxPadding.label "Padding"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/pt-BR/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Propriedade"> >+<!ENTITY propertyValue.label "Valor"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/pt-BR/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/viewers/dom.dtd >@@ -0,0 +1,55 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "Localizar nós..."> >+ <!ENTITY cmdShowFindDialog.accesskey "z"> >+ <!ENTITY cmdShowFindDialog.accelkey "f"> >+ >+ <!ENTITY cmdFindNext.label "Localizar próximo"> >+ <!ENTITY cmdFindNext.accesskey "L"> >+ >+ <!ENTITY cmdToggleAnonContent.label "Exibir conteúdo anônimo"> >+ <!ENTITY cmdToggleAnonContent.accesskey "E"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "Exibir nós de espaços em branco"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "x"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "Show Accessible Nodes"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "c"> >+ >+ <!ENTITY cmdFlashSelected.label "Piscar elemento selecionado"> >+ >+ <!ENTITY cmdToggleAttributes.label "Exibir atributos"> >+ <!ENTITY cmdToggleAttributes.accesskey "a"> >+ >+ <!ENTITY cmdSelectByClick.label "Selecionar elemento pelo clique"> >+ <!ENTITY cmdSelectByClick.accesskey "S"> >+ >+ <!ENTITY ColumnsDialog.title "Colunas"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "Colunas..."> >+ <!ENTITY cmdShowColumnsDialog.accesskey "C"> >+ >+ <!ENTITY cmdInsertNode.label "Inserir..."> >+ <!ENTITY cmdDeleteNode.label "Excluir"> >+ <!ENTITY cmdCopyXML.label "Copiar XML"> >+ <!ENTITY cmdBlink.label "Piscar elemento"> >+ <!ENTITY cmdInspectBrowser.label "Inspect Contained Document"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "Definir pseudoclasses..."> >+ <!ENTITY cmdShowPseudoClasses.accesskey "D"> >+ >+ <!ENTITY pseudoClasses.title "Pseudoclasses"> >+ >+ <!ENTITY findNodes.title "Localizar nós"> >+ <!ENTITY findNodesById.label "Id"> >+ <!ENTITY findNodesByTag.label "Tag"> >+ <!ENTITY findNodesByAttr.label "Attr"> >+ <!ENTITY findNodesByAttrValue.label "Valor"> >+ <!ENTITY findNodesSearchBy.label "Pesquisar pelo"> >+ <!ENTITY findNodesDirection.label "Direção"> >+ <!ENTITY findNodesDirectionUp.label "Acima"> >+ <!ENTITY findNodesDirectionDown.label "Abaixo"> >+ <!ENTITY findNodesFind.label "Localizar"> >+ <!ENTITY findNodesCancel.label "Cancelar"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/pt-BR/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/viewers/domNode.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Nome do nó:"> >+<!ENTITY namespaceURI.label "URI do namespace:"> >+<!ENTITY nodeType.label "Tipo do nó:"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/pt-BR/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/viewers/jsObject.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Copiar valor"> >+<!ENTITY jsEval.label "Executar JavaScript..."> >+ >+<!ENTITY jsProperty.label "Propriedade"> >+<!ENTITY jsValue.label "Valor"> >+ >+<!ENTITY jsEval.desc "Forneça uma expressão JavaScript. A variável "target" é a propriedade atualmente selecionada. Qualquer valor retornado será exibido no Javascript Object Viewer."> >+ >+<!ENTITY jsExecute.label "Executar"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/pt-BR/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/viewers/styleRules.dtd >@@ -0,0 +1,22 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "Localizar regras CSS..."> >+<!ENTITY miFindCSSRules.accesskey "L"> >+ >+<!ENTITY newRules.label "Nova"> >+<!ENTITY deleteSelectedRules.label "Excluir"> >+<!ENTITY disableSelectedRules.label "Desativar"> >+<!ENTITY openSelectedFileInEditor.label "Abrir arquivo no editor"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Inverter !important"> >+ >+<!ENTITY styleRule.label "Regra"> >+<!ENTITY styleRuleURI.label "Arquivo"> >+<!ENTITY styleRuleLineNumber.label "Linha"> >+ >+<!ENTITY styleRulePropPriority.label "Prioridade"> >+<!ENTITY styleRulePropName.label "Propriedade"> >+<!ENTITY styleRulePropValue.label "Valor"> >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/pt-BR/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Folha de estilo"> >+<!ENTITY sheetRules.label "Regras"> >+ >diff --git a/suite/extensions/inspector/resources/locale/pt-BR/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/pt-BR/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/pt-BR/viewers/xblBindings.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "Valor"> >+<!ENTITY bindingMethods.label "Métodos"> >+<!ENTITY bindingProperties.label "Propriedades"> >+<!ENTITY bindingGetter.label "Getter"> >+<!ENTITY bindingSetter.label "Setter"> >+<!ENTITY bindingProperty.label "Propriedade"> >+<!ENTITY bindingHandlers.label "Handlers"> >+<!ENTITY bindingResources.label "Resources"> >+<!ENTITY bindingSourceCode.label "Código-fonte"> >diff --git a/suite/extensions/inspector/resources/locale/ru/editing.dtd b/suite/extensions/inspector/resources/locale/ru/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/editing.dtd >@@ -0,0 +1,27 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "ÐÑмениÑÑ"> >+<!ENTITY mnEditUndo.accesskey "м"> >+<!ENTITY mnEditRedo.label "ÐовÑоÑиÑÑ"> >+<!ENTITY mnEditRedo.accesskey "в"> >+<!ENTITY mnEditCut.label "ÐÑÑезаÑÑ"> >+<!ENTITY mnEditCut.accesskey "Ñ"> >+<!ENTITY mnEditCopy.label "ÐопиÑоваÑÑ"> >+<!ENTITY mnEditCopy.accesskey "п"> >+<!ENTITY mnEditPaste.label "ÐÑÑавиÑÑ"> >+<!ENTITY mnEditPaste.accesskey "Ñ"> >+<!ENTITY mnEditInsert.label "ÐÑÑавка"> >+<!ENTITY mnEditInsert.accesskey "Ñ"> >+<!ENTITY mnEditEdit.label "ÐзмениÑÑ"> >+<!ENTITY mnEditEdit.accesskey "з"> >+<!ENTITY mnEditDelete.label "УдалиÑÑ"> >+<!ENTITY mnEditDelete.accesskey "д"> >+<!ENTITY mnEditInspectInNewWindow.label "ÐÑÑледоваÑÑ Ð² новом окне"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "о"> >+<!ENTITY mnEditInspectInNewWindow.key "I"> >+<!ENTITY mnEditCopyFileURI.label "ÐопиÑоваÑÑ URI"> >+<!ENTITY mnEditCopyFileURI.accesskey "и"> >+<!ENTITY mnEditViewFileURI.label "ÐÑоÑмоÑÑеÑÑ Ñайл"> >+<!ENTITY mnEditViewFileURI.accesskey "е"> >diff --git a/suite/extensions/inspector/resources/locale/ru/inspector.dtd b/suite/extensions/inspector/resources/locale/ru/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/inspector.dtd >@@ -0,0 +1,58 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.title "ÐнÑпекÑÐ¾Ñ DOM"> >+<!ENTITY thDOMNodes.label "Ð£Ð·Ð»Ñ DOM"> >+<!ENTITY btnInspect.label "ÐÑÑледоваÑÑ"> >+<!ENTITY btnInspect.accesskey "л"> >+<!ENTITY bxDocPanel.title "ÐокÑменÑ"> >+<!ENTITY bxObjectPanel.title "ÐбÑекÑ"> >+<!ENTITY btnSelecting.tooltip "ÐайÑи Ñзел Ð´Ð»Ñ Ð¸ÑÑледованиÑ, ÑÑлкнÑв по немÑ"> >+<!ENTITY btnFind.tooltip "ÐайÑи Ñзел Ð´Ð»Ñ Ð¸ÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ иденÑиÑикаÑоÑÑ, ÑÐµÐ³Ñ Ð¸Ð»Ð¸ аÑÑибÑÑÑ"> >+<!ENTITY mnFile.label "Файл"> >+<!ENTITY mnFile.accesskey "й"> >+<!ENTITY mnInspectContentDocument.label "ÐÑÑледоваÑÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Content"> >+<!ENTITY mnInspectContentDocument.accesskey "о"> >+<!ENTITY mnInspectChromeDocument.label "ÐÑÑледоваÑÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Chrome"> >+<!ENTITY mnInspectChromeDocument.accesskey "к"> >+<!ENTITY mnInspectApplicationAccessible.label "ÐÑÑледоваÑÑ Ð´Ð¾ÑÑÑпноÑÑÑ Ð¿ÑиложениÑ"> >+<!ENTITY mnInspectApplicationAccessible.accesskey "Ñ"> >+<!ENTITY cmdEnterLocation.label "ÐÑÑледоваÑÑ URL"> >+<!ENTITY cmdEnterLocation.accesskey "Ñ"> >+<!ENTITY cmdEnterLocation.key "L"> >+<!ENTITY cmdEnterLocation.key2 "D"> >+<!ENTITY cmdSave.label "Ð¡Ð¾Ñ ÑаниÑÑ DOM какâ¦"> >+<!ENTITY cmdSave.accesskey "Ñ "> >+<!ENTITY cmdClose.label "ÐакÑÑÑÑ"> >+<!ENTITY cmdClose.accesskey "Ñ"> >+<!ENTITY cmdExit.label "ÐÑÑ Ð¾Ð´"> >+<!ENTITY cmdExit.accesskey "Ñ"> >+<!ENTITY mnEdit.label "ÐÑавка"> >+<!ENTITY mnEdit.accesskey "в"> >+<!ENTITY cmdUndo.label "ÐÑмениÑÑ"> >+<!ENTITY cmdUndo.accesskey "е"> >+<!ENTITY cmdRedo.label "ÐовÑоÑиÑÑ"> >+<!ENTITY cmdRedo.accesskey "Ñ"> >+<!ENTITY cmdCut.label "ÐÑÑезаÑÑ"> >+<!ENTITY cmdCut.accesskey "з"> >+<!ENTITY cmdCopy.label "ÐопиÑоваÑÑ"> >+<!ENTITY cmdCopy.accesskey "Ñ"> >+<!ENTITY cmdPaste.label "ÐÑÑавиÑÑ"> >+<!ENTITY cmdPaste.accesskey "а"> >+<!ENTITY cmdDelete.label "УдалиÑÑ"> >+<!ENTITY cmdDelete.accesskey "д"> >+<!ENTITY mnView.label "Ðид"> >+<!ENTITY mnView.accesskey "и"> >+<!ENTITY mnDocViewerList.label "ÐÑоÑмоÑÑ Ð´Ð¾ÐºÑменÑов"> >+<!ENTITY mnDocViewerList.accesskey "д"> >+<!ENTITY mnObjectViewerList.label "ÐÑоÑмоÑÑ Ð¾Ð±ÑекÑов"> >+<!ENTITY mnObjectViewerList.accesskey "о"> >+<!ENTITY cmdToggleDocument.label "ÐоказаÑÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Ð² панели бÑаÑзеÑа"> >+<!ENTITY cmdToggleDocument.accesskey "б"> >+<!ENTITY cmdToggleSearch.label "РезÑлÑÑаÑÑ Ð¿Ð¾Ð¸Ñка"> >+<!ENTITY cmdFlashOnSelect.label "ÐодÑвеÑиваÑÑ Ð²ÑбÑаннÑй ÑлеменÑ"> >+<!ENTITY cmdFlashOnSelect.accesskey "Ñ"> >+<!ENTITY browserPanel.label "ÐÑаÑзеÑ"> >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/ru/inspector.properties b/suite/extensions/inspector/resources/locale/ru/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/inspector.properties >@@ -0,0 +1,30 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+applicationAccesible.title = ÐоÑÑÑпноÑÑÑ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ >+inspectWindow.noDocuments.message = (ÐеÑ) >+styleRuleNewProperty.title = Ðовое обÑÑвление ÑÑÐ¸Ð»Ñ >+styleRuleEditProperty.title = Ðзменение обÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑÑÐ¸Ð»Ñ >+styleRulePropertyValue.message = ÐведиÑе знаÑение ÑвойÑÑва: >+styleRulePropertyName.message = ÐведиÑе Ð¸Ð¼Ñ ÑвойÑÑва: >+sidebar.title = ÐнÑпекÑÐ¾Ñ DOM >+sidebarInstalled = ÐÐ¾ÐºÐ¾Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ ÑÑÑановлена. >+newAttribute.title = ÐовÑй аÑÑибÑÑ >+editAttribute.title = Ðзменение аÑÑибÑÑа >+findNodesDocumentEnd.message = ÐоÑÑигнÑÑ ÐºÐ¾Ð½ÐµÑ Ð´Ð¾ÐºÑменÑа. >+findNodesDocumentEnd.title = ÐоиÑк Ñзлов >+root.title = ÐбÑÐµÐºÑ >+irrecoverableSubtree.message = ÐекоÑоÑÑе из вÑделеннÑÑ Ñзлов ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ поддеÑева, коÑоÑое бÑÐ´ÐµÑ ÑазÑÑÑено. ÐоÑле ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑÑÐ¸Ñ Ñзлов Ð¸Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð±ÑÐ´ÐµÑ Ð²Ð¾ÑÑÑановиÑÑ. ÐÑ Ñ Ð¾ÑиÑе ÑдалиÑÑ Ð²ÑделеннÑе ÑзлÑ? >+irrecoverableSubtree.title = Удаление анонимного поддеÑева >+1 = ÐÐ»ÐµÐ¼ÐµÐ½Ñ >+2 = ÐÑÑибÑÑ >+3 = ТекÑÑ >+4 = Раздел CDATA >+5 = СÑÑлка на ÑÑÑноÑÑÑ >+6 = СÑÑноÑÑÑ >+7 = ÐнÑÑÑÑкÑÐ¸Ñ Ð¿Ð¾ обÑабоÑке >+8 = ÐомменÑаÑий >+9 = ÐокÑÐ¼ÐµÐ½Ñ >+10 = Тип докÑменÑа >+11 = ЧаÑÑÑ Ð´Ð¾ÐºÑменÑа >+12 = ÐоÑаÑÐ¸Ñ >diff --git a/suite/extensions/inspector/resources/locale/ru/prefs.dtd b/suite/extensions/inspector/resources/locale/ru/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/prefs.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "ÐнÑпекÑÐ¾Ñ DOM"> >+<!ENTITY Sidebar.label "ÐÐ¾ÐºÐ¾Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ"> >+<!ENTITY elementBlinking.label "ÐодÑвеÑка ÑлеменÑа"> >+<!ENTITY blinkSelectedElement.label "ÐодÑвеÑиваÑÑ Ð²ÑбÑаннÑй ÑлеменÑ"> >+<!ENTITY blinkSelectedElement.accesskey "б"> >+<!ENTITY borderColor.label "Ð¦Ð²ÐµÑ Ð³ÑаниÑÑ"> >+<!ENTITY borderColor.accesskey "в"> >+<!ENTITY borderWidth.label "ШиÑина гÑаниÑÑ"> >+<!ENTITY borderWidth.accesskey "и"> >+<!ENTITY px.label "(пикÑелов)"> >+<!ENTITY blinkDuration.label "ÐлиÑелÑноÑÑÑ Ð¿Ð¾Ð´ÑвеÑки"> >+<!ENTITY blinkDuration.accesskey "Ñ"> >+<!ENTITY ms.label "(мÑ)"> >+<!ENTITY blinkSpeed.label "СкоÑоÑÑÑ Ð¼Ð¸Ð³Ð°Ð½Ð¸Ñ Ð¿Ñи подÑвеÑке"> >+<!ENTITY blinkSpeed.accesskey "м"> >+<!ENTITY invertColors.label "ÐбÑаÑиÑÑ ÑвеÑа"> >+<!ENTITY invertColors.accesskey "Ñ"> >+<!ENTITY installHowTo.label "ÐÐ¾ÐºÐ¾Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ Ð´Ð»Ñ ÐнÑпекÑоÑа DOM не ÑÑÑановлена. ЧÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ ÐµÑ ÑÑда, нажмиÑе ÐºÐ½Ð¾Ð¿ÐºÑ Â«ÐобавиÑÑ»."> >+<!ENTITY install.label "ÐобавиÑÑ"> >+<!ENTITY install.accesskey "о"> >+<!ENTITY addNavigatorHooks.label "ÐобавиÑÑ ÐºÐ¾Ð½ÑекÑÑнÑе Ð¼ÐµÐ½Ñ Ð² ÐавигаÑоÑ"> >+<!ENTITY addNavigatorHooks.accesskey "к"> >diff --git a/suite/extensions/inspector/resources/locale/ru/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/ru/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/tasksOverlay.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "ÐнÑпекÑÐ¾Ñ DOM"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "Ñ"> >+<!ENTITY inspectorTaskCmd.accesskey "Ð"> >+<!ENTITY inspectPageTaskCmd.label "ÐÑÑледоваÑÑ ÑÑÑаниÑÑ"> >+<!ENTITY inspectPageTaskCmd.accesskey "Ð"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewer-registry.dtd b/suite/extensions/inspector/resources/locale/ru/viewer-registry.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewer-registry.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY dom.label "Ð£Ð·Ð»Ñ DOM"> >+<!ENTITY stylesheets.label "ТаблиÑÑ ÑÑилей"> >+<!ENTITY domNode.label "Узел DOM"> >+<!ENTITY boxModel.label "ÐÐ»Ð¾ÐºÐ¾Ð²Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ"> >+<!ENTITY xblBindings.label "XBL-биндинги"> >+<!ENTITY styleRules.label "ÐÑавила CSS"> >+<!ENTITY computedStyle.label "ÐÑÑиÑленнÑй ÑÑилÑ"> >+<!ENTITY usedFontFaces.label "ÐÑполÑзÑемÑе Font Faces"> >+<!ENTITY jsObject.label "ÐбÑÐµÐºÑ JavaScript"> >+<!ENTITY accessibleEvent.label "СобÑÑие доÑÑÑпноÑÑи"> >+<!ENTITY accessibleObject.label "ÐбÑÐµÐºÑ Ð´Ð¾ÑÑÑпноÑÑи"> >+<!ENTITY accessibleProps.label "СвойÑÑва доÑÑÑпноÑÑи"> >+<!ENTITY accessibleRelations.label "ÐÑноÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи"> >+<!ENTITY accessibleEvents.label "СобÑÑÐ¸Ñ Ð´Ð¾ÑÑÑпноÑÑи"> >+<!ENTITY accessibleTree.label "ÐеÑево доÑÑÑпноÑÑи"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEvent.dtd >@@ -0,0 +1,12 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descIsFromUserInput.label "Ðз ввода полÑзоваÑелÑ:"> >+<!ENTITY descState.label "СоÑÑоÑние:"> >+<!ENTITY descIsEnabled.label "СоÑÑоÑние вклÑÑено:"> >+<!ENTITY descStartOffset.label "ÐаÑалÑнÑй Ñдвиг:"> >+<!ENTITY descLength.label "Ðлина:"> >+<!ENTITY descIsInserted.label "ТекÑÑ Ð²ÑÑавлен:"> >+<!ENTITY descModifiedText.label "ÐзменÑнннÑй ÑекÑÑ:"> >+<!ENTITY descCaretOffset.label "Сдвиг кÑÑÑоÑа:"> >+<!ENTITY descrHandlerOutput.label "ÐÑвод обÑабоÑÑика ÑобÑÑий: "> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEvents.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY eventList.label "СпиÑок ÑобÑÑий"> >+<!ENTITY watchedEvents.label "ÐÑÑлеживаемÑе ÑобÑÑиÑ"> >+<!ENTITY handledEvents.label "ÐбÑабаÑÑваемÑе ÑобÑÑиÑ:"> >+<!ENTITY eventType.label "Тип ÑобÑÑиÑ"> >+<!ENTITY eventTime.label "ÐÑемÑ"> >+<!ENTITY eventTargetNodeName.label "ÐÐ¼Ñ Ñзла"> >+<!ENTITY eventTargetNodeID.label "ID"> >+<!ENTITY eventTargetRole.label "РолÑ"> >+<!ENTITY eventTargetName.label "ÐмÑ"> >+<!ENTITY isWatched.label "ÐÑÑлеживаеÑÑÑ"> >+<!ENTITY isHandlerEnabled.label "ÐбÑабоÑÑик вклÑÑÑн"> >+<!ENTITY clearEventList.label "ÐÑиÑÑиÑÑ ÑпиÑок ÑобÑÑий"> >+<!ENTITY chooseEventsToWatch.label "ÐÑбеÑиÑе ÑобÑÑÐ¸Ñ Ð´Ð»Ñ Ð¾ÑÑлеживаниÑ."> >+<!ENTITY watchAll.label "ÐÑÑлеживаÑÑ Ð²Ñе"> >+<!ENTITY watchNone.label "Ðе оÑÑлеживаÑÑ Ð½Ð¸Ñего"> >+<!ENTITY editHandler.label "РедакÑиÑоваÑÑ Ð¾Ð±ÑабоÑÑик"> >+<!ENTITY contextHelp.label "?"> >+<!ENTITY handlerEditorNoEvent.label "ÐÑбеÑиÑе Ñип ÑобÑÑÐ¸Ñ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ðº обÑабоÑÑикÑ."> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEvents.properties b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEvents.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEvents.properties >@@ -0,0 +1,19 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+mutationEvents = ÑобÑÑÐ¸Ñ Ð¼ÑÑаÑии >+changeEvents = ÑобÑÑÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ >+notificationEvents = ÑобÑÑÐ¸Ñ ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ >+selectionEvents = ÑобÑÑÐ¸Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ >+menuEvents = ÑобÑÑÐ¸Ñ Ð¼ÐµÐ½Ñ >+documentEvents = ÑобÑÑÐ¸Ñ Ð´Ð¾ÐºÑменÑа >+textEvents = ÑобÑÑÐ¸Ñ ÑекÑÑа >+tableEvents = ÑобÑÑÐ¸Ñ ÑаблиÑÑ >+windowEvents = ÑобÑÑÐ¸Ñ Ð¾ÐºÐ½Ð° >+hyperLinkEvents = ÑобÑÑÐ¸Ñ Ð³Ð¸Ð¿ÐµÑÑÑÑлки >+hyperTextEvents = ÑобÑÑÐ¸Ñ Ð³Ð¸Ð¿ÐµÑÑекÑÑа >+handlerEditorLabel = ÐклÑÑиÑÑ Ð¾Ð±ÑабоÑÑик ÑобÑÑий «%S». >+role = Ð Ð¾Ð»Ñ >+name = ÐÐ¼Ñ >+nodeName = ÐÐ¼Ñ Ñзла >+id = ID >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEventsHandlerHelpDialog.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEventsHandlerHelpDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleEventsHandlerHelpDialog.dtd >@@ -0,0 +1,15 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY helpDialog.title "Ðкно ÑпÑавки ÐбÑабоÑÑика"> >+<!ENTITY general.descr "ÐиÑÐµÑ Ð¸ пÑикÑеплÑÐµÑ Ð¾Ð±ÑабоÑÑик ÑобÑÑÐ¸Ñ Ð´Ð¾ÑÑÑпноÑÑи. ÐÑи возникновении ÑобÑÑиÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе вÑбÑаÑÑ ÐµÐ³Ð¾ в ÑпиÑке ÑобÑÑий и ÑвидеÑÑ ÑезÑлÑÑÐ°Ñ ÑабоÑÑ Ð¾Ð±ÑабоÑÑика в ÑвÑзанном окне пÑоÑмоÑÑа СобÑÑий ÐоÑÑÑпноÑÑи."> >+<!ENTITY helpers.descr "Ð ÑедакÑоÑе обÑабоÑÑика можно иÑполÑзоваÑÑ ÑледÑÑÑие обÑекÑÑ Ð¸ ÑÑнкÑии:"> >+<!ENTITY event.descr "обÑÐµÐºÑ ÑобÑÑÐ¸Ñ Ð´Ð¾ÑÑÑпноÑÑи"> >+<!ENTITY target.descr "обÑÐµÐºÑ Ñели доÑÑÑпноÑÑи"> >+<!ENTITY accRetrieval.descr "ÑлÑжба доÑÑÑпноÑÑи nsIAccessibleRetrieval"> >+<!ENTITY output.descr "пеÑаÑÐ°ÐµÑ Ð´Ð°Ð½Ð½ÑÑ ÑÑÑокÑ"> >+<!ENTITY outputAttrs.descr "пеÑаÑÐ°ÐµÑ Ð°ÑÑибÑÑÑ Ð¾Ð±ÑекÑа данного обÑекÑа доÑÑÑпноÑÑи"> >+<!ENTITY outputRole.descr "пеÑаÑÐ°ÐµÑ ÑÐ¾Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ обÑекÑа доÑÑÑпноÑÑи"> >+<!ENTITY outputStates.descr "пеÑаÑÐ°ÐµÑ ÑоÑÑоÑÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ обÑекÑа доÑÑÑпноÑÑи"> >+<!ENTITY outputTree.descr "пеÑаÑÐ°ÐµÑ Ð´ÐµÑево данного обÑекÑа доÑÑÑпноÑÑи, подÑвеÑÐ¸Ð²Ð°ÐµÑ Ð´Ð¾ÑÑÑпноÑÑи из данного маÑÑива"> >+<!ENTITY outputDOMAttrs.descr "пеÑаÑÐ°ÐµÑ Ð°ÑÑибÑÑÑ DOM данного обÑекÑа доÑÑÑпноÑÑи"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleProps.dtd >@@ -0,0 +1,30 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descRole.label "РолÑ:"> >+<!ENTITY descName.label "ÐмÑ:"> >+<!ENTITY descDescription.label "ÐпиÑание:"> >+<!ENTITY descValue.label "ÐнаÑение:"> >+<!ENTITY descState.label "СоÑÑоÑние:"> >+<!ENTITY descBounds.label "ÐÑаниÑÑ:"> >+<!ENTITY tabAttrs.label "ÐÑÑибÑÑÑ Ð¾Ð±ÑекÑа"> >+<!ENTITY colAttrName.label "ÐмÑ"> >+<!ENTITY colAttrValue.label "ÐнаÑение"> >+<!ENTITY tabActions.label "ÐейÑÑвиÑ"> >+<!ENTITY descKeyBindings.label "СоÑеÑÐ°Ð½Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñ:"> >+<!ENTITY descInvoke.label "ÐÑзваÑÑ"> >+<!ENTITY tabTextAttrs.label "ÐÑÑибÑÑÑ ÑекÑÑа"> >+<!ENTITY descDefaultAttrs.label "ÐÑÑибÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ:"> >+<!ENTITY descStartOffset.label "ÐаÑалÑнÑй Ñдвиг:"> >+<!ENTITY descEndOffset.label "ÐонеÑнÑй Ñдвиг:"> >+<!ENTITY tabTableCell.label "ЯÑейка ÑаблиÑÑ"> >+<!ENTITY descColumnIdx.label "ÐÐ½Ð´ÐµÐºÑ ÑÑолбÑа:"> >+<!ENTITY descRowIdx.label "ÐÐ½Ð´ÐµÐºÑ ÑÑÑоки:"> >+<!ENTITY descColumnExtent.label "Ð Ð°Ð·Ð¼ÐµÑ ÑÑолбÑа:"> >+<!ENTITY descRowExtent.label "Ð Ð°Ð·Ð¼ÐµÑ ÑÑÑоки:"> >+<!ENTITY descIsSelected.label "ÐÑбÑан:"> >+<!ENTITY colProp.label "СвойÑÑво"> >+<!ENTITY colRole.label "РолÑ"> >+<!ENTITY colName.label "ÐмÑ"> >+<!ENTITY colNodeName.label "ÐÐ¼Ñ Ñзла"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/accessibleProps.properties b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleProps.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleProps.properties >@@ -0,0 +1,4 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+accBounds = x: %S; y: %S; ÑиÑина: %S; вÑÑоÑа: %S; >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleRelations.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY relationType.label "Тип оÑноÑениÑ"> >+<!ENTITY role.label "РолÑ"> >+<!ENTITY nodeName.label "ÐÐ¼Ñ Ñзла"> >+<!ENTITY relations.label "ÐÑноÑениÑ:"> >+<!ENTITY relationTargets.label "Цели оÑноÑениÑ:"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleTree.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY role.label "РолÑ"> >+<!ENTITY name.label "ÐмÑ"> >+<!ENTITY nodeName.label "ÐÐ¼Ñ Ñзла"> >+<!ENTITY evaluateJS.label "ÐÑÑиÑлиÑÑ JavaScript"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/accessibleTreeEvalJSDialog.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleTreeEvalJSDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/accessibleTreeEvalJSDialog.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY evaluateDialog.title "Ðиалог вÑÑиÑÐ»ÐµÐ½Ð¸Ñ JavaScript"> >+<!ENTITY btnEvaluateJS.label "ÐÑполниÑÑ"> >+<!ENTITY btnEvaluateJS.accesskey "п"> >+<!ENTITY txtInputArea.label "Ðона ввода (иÑполÑзÑйÑе пеÑеменнÑÑ 'accessible' Ð´Ð»Ñ ÑабоÑÑ Ñ Ð²ÑбÑанной accessible и ÑÑнкÑÐ¸Ñ 'output' Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи в окно 'Ðона вÑвода', 'tree.search(accessible, filterfunc)' Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка и 'tree.clearSearch()' Ð´Ð»Ñ Ð¾ÑиÑÑки ÑезÑлÑÑаÑов поиÑка): "> >+<!ENTITY txtInputArea.accesskey "в"> >+<!ENTITY txtOutputArea.label "Ðона вÑвода:"> >+<!ENTITY txtOutputArea.accesskey "Ñ"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/boxModel.dtd >@@ -0,0 +1,14 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY boxPosition.label "РаÑположение"> >+<!ENTITY boxDimension.label "РазмеÑÑ"> >+<!ENTITY boxMargin.label "Ðоле"> >+<!ENTITY boxBorder.label "ÐÑаниÑа"> >+<!ENTITY boxPadding.label "ÐÑÑÑÑп"> >+<!ENTITY xCoord.label "x"> >+<!ENTITY yCoord.label "y"> >+<!ENTITY screenXCoord.label "ÑкÑаннÑй x"> >+<!ENTITY screenYCoord.label "ÑкÑаннÑй y"> >+<!ENTITY dimensionWidth.label "ÑиÑина блока"> >+<!ENTITY dimensionHeight.label "вÑÑоÑа блока"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/computedStyle.dtd >@@ -0,0 +1,5 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY propertyName.label "СвойÑÑво"> >+<!ENTITY propertyValue.label "ÐнаÑение"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/dom.dtd >@@ -0,0 +1,109 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY cmdShowFindDialog.label "ÐайÑи ÑзлÑâ¦"> >+<!ENTITY cmdShowFindDialog.accesskey "Ð"> >+<!ENTITY cmdShowFindDialog.key "f"> >+<!ENTITY cmdFindAgain.label "ÐайÑи еÑÑ Ñаз"> >+<!ENTITY cmdFindAgain.accesskey "й"> >+<!ENTITY cmdFindAgain.key "G"> >+<!ENTITY cmdToggleAnonContent.label "ÐоказÑваÑÑ Ð½ÐµÐ¸Ð·Ð²ÐµÑÑное ÑодеÑжимое"> >+<!ENTITY cmdToggleAnonContent.accesskey "н"> >+<!ENTITY cmdToggleWhitespaceNodes.label "ÐоказÑваÑÑ Ð¿ÑобелÑнÑе ÑзлÑ"> >+<!ENTITY cmdToggleWhitespaceNodes.accesskey "п"> >+<!ENTITY cmdToggleAccessibleNodes.label "ÐоказÑваÑÑ ÑÐ·Ð»Ñ Ð´Ð¾ÑÑÑпноÑÑи"> >+<!ENTITY cmdToggleAccessibleNodes.accesskey "д"> >+<!ENTITY cmdToggleProcessingInstructions.label "ÐоказÑваÑÑ Ð¸Ð½ÑÑÑÑкÑии обÑабоÑки"> >+<!ENTITY cmdToggleProcessingInstructions.accesskey "о"> >+<!ENTITY cmdToggleAttributes.label "ÐоказÑваÑÑ Ð°ÑÑибÑÑÑ"> >+<!ENTITY cmdToggleAttributes.accesskey "а"> >+<!ENTITY cmdSelectByClick.label "ÐÑбиÑаÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑелÑком"> >+<!ENTITY cmdSelectByClick.accesskey "Ð"> >+<!ENTITY ColumnsDialog.title "Ðолонки"> >+<!ENTITY cmdShowColumnsDialog.label "Ðолонкиâ¦"> >+<!ENTITY cmdShowColumnsDialog.accesskey "Ð"> >+<!ENTITY cmdInsertNode.label "ÐÑÑавкаâ¦"> >+<!ENTITY cmdDeleteNode.label "УдалиÑÑ"> >+<!ENTITY cmdCopyXML.label "ÐопиÑоваÑÑ XML"> >+<!ENTITY cmdCopyXML.accesskey "п"> >+<!ENTITY cmdBlink.label "ÐодÑвеÑиваÑÑ ÑлеменÑ"> >+<!ENTITY cmdBlink.accesskey "Ñ"> >+<!ENTITY cmdInspectBrowser.label "ÐÑÑледоваÑÑ Ð¾ÑкÑÑÑÑй докÑменÑ"> >+<!ENTITY cmdInspectBrowser.accesskey "Ñ"> >+<!ENTITY cmdShowPseudoClasses.label "УказаÑÑ Ð¿ÑевдоклаÑÑÑâ¦"> >+<!ENTITY cmdShowPseudoClasses.accesskey "У"> >+<!ENTITY pseudoClasses.title "ÐÑевдоклаÑÑÑ"> >+<!ENTITY findNodes.title "ÐайÑи ÑзлÑ"> >+<!ENTITY findNodesById.label "ÐденÑиÑикаÑоÑ"> >+<!ENTITY findNodesById.accesskey "д"> >+<!ENTITY findNodesById.accesskey2 "Ñ"> >+<!ENTITY findNodesByTag.label "Тег"> >+<!ENTITY findNodesByTag.accesskey "е"> >+<!ENTITY findNodesByTag.accesskey2 "г"> >+<!ENTITY findNodesByAttr.label "ÐÑÑибÑÑ"> >+<!ENTITY findNodesByAttr.accesskey "Ñ"> >+<!ENTITY findNodesByAttr.accesskey2 "Ñ"> >+<!ENTITY findNodesByAttrValue.label "ÐнаÑение"> >+<!ENTITY findNodesByAttrValue.accesskey "н"> >+<!ENTITY findNodesSearchBy.label "УÑловие поиÑка"> >+<!ENTITY findNodesDirection.label "ÐапÑавление"> >+<!ENTITY findNodesDirectionUp.label "ÐвеÑÑ "> >+<!ENTITY findNodesDirectionUp.accesskey "в"> >+<!ENTITY findNodesDirectionDown.label "Ðниз"> >+<!ENTITY findNodesDirectionDown.accesskey "н"> >+<!ENTITY findNodesFind.label "ÐайÑи"> >+<!ENTITY findNodesCancel.label "ÐÑмена"> >+<!ENTITY mnEditPasteMenu.label "ÐÑÑавиÑÑ"> >+<!ENTITY mnEditPasteMenu.accesskey "Ñ"> >+<!ENTITY mnEditPasteBefore.label "ÐеÑед"> >+<!ENTITY mnEditPasteBefore.accesskey "е"> >+<!ENTITY mnEditPasteAfter.label "ÐоÑле"> >+<!ENTITY mnEditPasteAfter.accesskey "о"> >+<!ENTITY mnEditPasteReplace.label "ÐмеÑÑо (Ðамена)"> >+<!ENTITY mnEditPasteReplace.accesskey "м"> >+<!ENTITY mnEditPasteFirstChild.label "Ðак пеÑвÑй доÑеÑний"> >+<!ENTITY mnEditPasteFirstChild.accesskey "в"> >+<!ENTITY mnEditPasteLastChild.label "Ðак поÑледний доÑеÑний"> >+<!ENTITY mnEditPasteLastChild.accesskey "Ñ"> >+<!ENTITY mnEditPasteAsParent.label "Ðак ÑодиÑелÑÑкий"> >+<!ENTITY mnEditPasteAsParent.accesskey "Ñ"> >+<!ENTITY mnEditInsertMenu.label "ÐÑÑавка"> >+<!ENTITY mnEditInsertMenu.accesskey "Ñ"> >+<!ENTITY mnEditInsertAfter.label "ÐоÑле"> >+<!ENTITY mnEditInsertAfter.accesskey "Ñ"> >+<!ENTITY mnEditInsertBefore.label "ÐеÑед"> >+<!ENTITY mnEditInsertBefore.accesskey "Ñ"> >+<!ENTITY mnEditInsertFirstChild.label "Ðак пеÑвÑй доÑеÑний"> >+<!ENTITY mnEditInsertFirstChild.accesskey "в"> >+<!ENTITY mnEditInsertLastChild.label "Ðак поÑледний доÑеÑний"> >+<!ENTITY mnEditInsertLastChild.accesskey "Ñ"> >+<!ENTITY insertNode.title "ÐÑÑавиÑÑ Ñзел"> >+<!ENTITY nodeType.label "Тип Ñзла:"> >+<!ENTITY nodeType.accesskey "л"> >+<!ENTITY nodeType.element.label "ÐлеменÑ"> >+<!ENTITY nodeType.text.label "ТекÑÑ"> >+<!ENTITY namespaceURI.label "URI пÑоÑÑÑанÑÑва имен:"> >+<!ENTITY namespaceURI.accesskey "м"> >+<!ENTITY tagName.label "ÐÐ¼Ñ Ñега:"> >+<!ENTITY tagName.accesskey "м"> >+<!ENTITY nodeValue.label "ÐнаÑение Ñзла:"> >+<!ENTITY nodeValue.accesskey "н"> >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "ÐокÑменÑа по ÑмолÑаниÑ"> >+<!ENTITY namespaceTitle.custom.label "ÐÑÑгой"> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "СобÑÑÐ¸Ñ XML"> >+<!ENTITY namespaceTitle.WAIRoles.label "Роли WAI"> >+<!ENTITY namespaceTitle.WAIProperties.label "СвойÑÑва WAI"> >+<!ENTITY cbxStateHover.accesskey "h"> >+<!ENTITY cbxStateActive.accesskey "a"> >+<!ENTITY cbxStateFocus.accesskey "f"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/domNode.dtd >@@ -0,0 +1,25 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY nodeName.label "ÐÐ¼Ñ Ñзла:"> >+<!ENTITY localName.label "ÐокалÑное имÑ:"> >+<!ENTITY namespaceURI.label "URI пÑоÑÑÑанÑÑва имен:"> >+<!ENTITY nodeType.label "Тип Ñзла:"> >+<!ENTITY nodeValue.label "ÐнаÑение Ñзла:"> >+<!ENTITY grpAttr.label "ÐÑÑибÑÑÑ"> >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "ÐокÑменÑа по ÑмолÑаниÑ"> >+<!ENTITY namespaceTitle.custom.label "ÐÑÑгой"> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "СобÑÑÐ¸Ñ XML"> >+<!ENTITY namespaceTitle.WAIRoles.label "Роли WAI"> >+<!ENTITY namespaceTitle.WAIProperties.label "СвойÑÑва WAI"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/jsObject.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY jsCopyValue.label "ÐопиÑоваÑÑ Ð·Ð½Ð°Ñение"> >+<!ENTITY jsEval.label "ÐÑÑиÑлиÑÑ JavaScriptâ¦"> >+<!ENTITY jsProperty.label "СвойÑÑво"> >+<!ENTITY jsValue.label "ÐнаÑение"> >+<!ENTITY evaluateDialog.title "ÐÑÑиÑлиÑÑ Ð²ÑÑажение"> >+<!ENTITY jsEval.desc "ÐведиÑе вÑÑажение JavaScript. ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«target» â вÑбÑанное в даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑвойÑÑво. ÐÑбое возвÑаÑаемое знаÑение бÑÐ´ÐµÑ Ð¾ÑобÑажено в облаÑÑи пÑоÑмоÑÑа JavaScript."> >+<!ENTITY jsExecute.label "ÐÑполниÑÑ"> >+<!ENTITY inspectReturn.label "ÐÑÑледоваÑÑ ÑезÑлÑÑаÑÑ Ð²"> >+<!ENTITY inspectReturnNew.label "Ðовом окне"> >+<!ENTITY inspectReturnExisting.label "СÑÑеÑÑвÑÑÑем окне"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/styleRules.dtd >@@ -0,0 +1,15 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY miFindCSSRules.label "ÐайÑи пÑавила CSSâ¦"> >+<!ENTITY miFindCSSRules.accesskey "Ð"> >+<!ENTITY newRules.label "СоздаÑÑ"> >+<!ENTITY deleteSelectedRules.label "УдалиÑÑ"> >+<!ENTITY disableSelectedRules.label "ÐÑклÑÑиÑÑ"> >+<!ENTITY toggleSelectedImportant.label "ÐеÑеклÑÑиÑÑ Ð¸ÑполÑзование !important"> >+<!ENTITY styleRule.label "ÐÑавило"> >+<!ENTITY styleRuleURI.label "Файл"> >+<!ENTITY styleRuleLineNumber.label "СÑÑока"> >+<!ENTITY styleRulePropPriority.label "ÐÑиоÑиÑеÑ"> >+<!ENTITY styleRulePropName.label "СвойÑÑво"> >+<!ENTITY styleRulePropValue.label "ÐнаÑение"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/stylesheets.dtd >@@ -0,0 +1,5 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY sheetLocation.label "ТаблиÑа ÑÑилей"> >+<!ENTITY sheetRules.label "ÐÑавила"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/usedFontFaces.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/usedFontFaces.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/usedFontFaces.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY fontName.label "ÐÐ¼Ñ ÑÑиÑÑа"> >+<!ENTITY cssFamilyName.label "ÐÐ¼Ñ ÑемÑи"> >+<!ENTITY uri.label "URI"> >+<!ENTITY localName.label "ÐокалÑное имÑ"> >+<!ENTITY format.label "ФоÑмаÑ"> >diff --git a/suite/extensions/inspector/resources/locale/ru/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/ru/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/ru/viewers/xblBindings.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY bindingContent.label "СодеÑжимое"> >+<!ENTITY bindingMethods.label "ÐеÑодÑ"> >+<!ENTITY bindingMethodName.label "ÐÐ¼Ñ Ð¼ÐµÑода"> >+<!ENTITY bindingProperties.label "СвойÑÑва"> >+<!ENTITY bindingGetter.label "ÐолÑÑаÑÑий"> >+<!ENTITY bindingSetter.label "УÑÑановивÑий"> >+<!ENTITY bindingProperty.label "СвойÑÑво"> >+<!ENTITY bindingHandlers.label "ÐбÑабоÑÑики"> >+<!ENTITY bindingHandlerEvent.label "СобÑÑие"> >+<!ENTITY bindingHandlerPhase.label "Фаза"> >+<!ENTITY bindingResources.label "РеÑÑÑÑÑ"> >+<!ENTITY bindingResourceType.label "Тип"> >+<!ENTITY bindingResourceSrc.label "ÐÑÑоÑник"> >+<!ENTITY bindingSourceCode.label "ÐÑÑ Ð¾Ð´Ð½Ñй код"> >diff --git a/suite/extensions/inspector/resources/locale/sk/editing.dtd b/suite/extensions/inspector/resources/locale/sk/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/editing.dtd >@@ -0,0 +1,27 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "Späť"> >+<!ENTITY mnEditUndo.accesskey "S"> >+<!ENTITY mnEditRedo.label "Znovu"> >+<!ENTITY mnEditRedo.accesskey "Z"> >+<!ENTITY mnEditCut.label "Vystrihnúť"> >+<!ENTITY mnEditCut.accesskey "V"> >+<!ENTITY mnEditCopy.label "KopÃrovaÅ¥"> >+<!ENTITY mnEditCopy.accesskey "K"> >+<!ENTITY mnEditPaste.label "PrilepiÅ¥"> >+<!ENTITY mnEditPaste.accesskey "P"> >+<!ENTITY mnEditInsert.label "VložiÅ¥"> >+<!ENTITY mnEditInsert.accesskey "i"> >+<!ENTITY mnEditEdit.label "UpraviÅ¥"> >+<!ENTITY mnEditEdit.accesskey "U"> >+<!ENTITY mnEditDelete.label "OdstrániÅ¥"> >+<!ENTITY mnEditDelete.accesskey "O"> >+<!ENTITY mnEditInspectInNewWindow.label "PreskúmaÅ¥ v novom okne"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "e"> >+<!ENTITY mnEditInspectInNewWindow.key "I"> >+<!ENTITY mnEditCopyFileURI.label "KopÃrovaÅ¥ URI"> >+<!ENTITY mnEditCopyFileURI.accesskey "R"> >+<!ENTITY mnEditViewFileURI.label "ZobraziÅ¥ súbor"> >+<!ENTITY mnEditViewFileURI.accesskey "b"> >diff --git a/suite/extensions/inspector/resources/locale/sk/inspector.dtd b/suite/extensions/inspector/resources/locale/sk/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/inspector.dtd >@@ -0,0 +1,67 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM Inspector"> >+ >+<!ENTITY thDOMNodes.label "Uzly DOM"> >+<!ENTITY btnInspect.label "PreskúmaÅ¥"> >+<!ENTITY btnInspect.accesskey "r"> >+<!ENTITY bxDocPanel.title "Dokument"> >+<!ENTITY bxObjectPanel.title "Objekt"> >+<!ENTITY btnSelecting.tooltip "Pomocou myÅ¡i vybraÅ¥ uzol na preskúmanie"> >+<!ENTITY btnFind.tooltip "VyhľadaÅ¥ uzol podľa ID, tagu alebo atribútu"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Súbor"> >+<!ENTITY mnFile.accesskey "S"> >+ <!ENTITY mnInspectContentDocument.label "PreskúmaÅ¥ obsah dokumentu"> >+ <!ENTITY mnInspectContentDocument.accesskey "P"> >+ <!ENTITY mnInspectChromeDocument.label "PreskúmaÅ¥ chrome dokumentu"> >+ <!ENTITY mnInspectChromeDocument.accesskey "h"> >+ <!ENTITY mnInspectApplicationAccessible.label "PreskúmaÅ¥ prÃstupnosÅ¥ aplikácie"> >+ <!ENTITY mnInspectApplicationAccessible.accesskey "s"> >+ <!ENTITY cmdEnterLocation.label "PreskúmaÅ¥ URL"> >+ <!ENTITY cmdEnterLocation.accesskey "U"> >+ <!ENTITY cmdEnterLocation.key "L"> >+ <!ENTITY cmdEnterLocation.key2 "D"> >+ <!ENTITY cmdSave.label "UložiÅ¥ DOM akoâ¦"> >+ <!ENTITY cmdSave.accesskey "a"> >+ <!ENTITY cmdClose.label "ZavrieÅ¥"> >+ <!ENTITY cmdClose.accesskey "z"> >+ <!ENTITY cmdExit.label "Koniec"> >+ <!ENTITY cmdExit.accesskey "k"> >+ >+<!ENTITY mnEdit.label "UpraviÅ¥"> >+<!ENTITY mnEdit.accesskey "U"> >+ <!ENTITY cmdUndo.label "Späť"> >+ <!ENTITY cmdUndo.accesskey "S"> >+ <!ENTITY cmdRedo.label "Znovu"> >+ <!ENTITY cmdRedo.accesskey "Z"> >+ <!ENTITY cmdCut.label "Vystrihnúť"> >+ <!ENTITY cmdCut.accesskey "V"> >+ <!ENTITY cmdCopy.label "KopÃrovaÅ¥"> >+ <!ENTITY cmdCopy.accesskey "K"> >+ <!ENTITY cmdPaste.label "PrilepiÅ¥"> >+ <!ENTITY cmdPaste.accesskey "P"> >+ <!ENTITY cmdDelete.label "OdstrániÅ¥"> >+ <!ENTITY cmdDelete.accesskey "O"> >+ >+<!ENTITY mnView.label "ZobraziÅ¥"> >+<!ENTITY mnView.accesskey "Z"> >+ <!ENTITY mnDocViewerList.label "ZobrazovaÄ dokumentu"> >+ <!ENTITY mnDocViewerList.accesskey "Z"> >+ <!ENTITY mnObjectViewerList.label "ZobrazovaÄ objektu"> >+ <!ENTITY mnObjectViewerList.accesskey "o"> >+ <!ENTITY cmdToggleDocument.label "ZobraziÅ¥ dokument v paneli PrehliadaÄ"> >+ <!ENTITY cmdToggleDocument.accesskey "P"> >+ <!ENTITY cmdFlashOnSelect.label "ZvýrazniÅ¥ vybraný prvok"> >+ <!ENTITY cmdFlashOnSelect.accesskey "v"> >+ <!ENTITY cmdToggleSearch.label "Výsledky hľadania"> >+<!ENTITY browserPanel.label "PrehliadaÄ"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >+ >diff --git a/suite/extensions/inspector/resources/locale/sk/inspector.properties b/suite/extensions/inspector/resources/locale/sk/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/inspector.properties >@@ -0,0 +1,37 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+applicationAccesible.title = PrÃstupnosÅ¥ aplikácie pre telesne postihnuté osoby >+inspectWindow.noDocuments.message = (Žiadne) >+styleRuleNewProperty.title=Nové pravidlo Å¡týlu >+styleRuleEditProperty.title=Ãprava pravidla Å¡týlu >+styleRulePropertyValue.message=Zadajte hodnotu vlastnosti: >+styleRulePropertyName.message=Zadajte názov vlastnosti >+sidebar.title=DOM Inspector >+sidebarInstalled=BoÄný panel je nainÅ¡talovaný >+newAttribute.title=Nový atribút >+editAttribute.title=Ãpravy atribútu >+findNodesDocumentEnd.message=Dosiahnutý koniec dokumentu >+findNodesDocumentEnd.title=HľadaÅ¥ uzly >+# LOCALIZATION NOTE (root.title) label displayed for the tree head of the >+# JavaScript Object tree >+root.title = Predmet >+ >+irrecoverableSubtree.message = Niektoré z oznaÄených uzlov sú súÄasÅ¥ou anonymného podstromu, ktorý bude zruÅ¡ený. Odstránenie týchto uzlov nie je možné vrátiÅ¥ späť. Chcete odstrániÅ¥ oznaÄené uzly? >+irrecoverableSubtree.title = OdstrániÅ¥ anonymný podstrom >+ >+# The following items correspond to the node types defined by the W3C DOM Core >+# specification. >+1 = Prvok >+2 = Atribút >+3 = Text >+4 = Sekcia CDATA >+5 = Odkaz entity >+6 = Entita >+7 = Vykonávanie inÅ¡trukcie >+8 = Komentár >+9 = Dokument >+10 = Typ dokumentu >+11 = Fragment dokumentu >+12 = Poznámka >diff --git a/suite/extensions/inspector/resources/locale/sk/prefs.dtd b/suite/extensions/inspector/resources/locale/sk/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/prefs.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM Inspector"> >+<!ENTITY Sidebar.label "BoÄný panel"> >+<!ENTITY elementBlinking.label "Zvýraznenie prvkov"> >+<!ENTITY blinkSelectedElement.label "ZvýrazniÅ¥ vybraný prvok"> >+<!ENTITY blinkSelectedElement.accesskey "Z"> >+<!ENTITY borderColor.label "Farba orámovania"> >+<!ENTITY borderColor.accesskey "F"> >+<!ENTITY borderWidth.label "Å Ãrka orámovania"> >+<!ENTITY borderWidth.accesskey "o"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Doba zvýraznenia"> >+<!ENTITY blinkDuration.accesskey "D"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "RýchlosÅ¥ blikania"> >+<!ENTITY blinkSpeed.accesskey "R"> >+<!ENTITY invertColors.label "PrevrátiÅ¥ farby"> >+<!ENTITY invertColors.accesskey "v"> >+<!ENTITY installHowTo.label "BoÄný panel aplikácie DOM Inspector nie je nainÅ¡talovaný. BoÄný panel pridáte kliknutÃm na tlaÄidlo 'InÅ¡talovaÅ¥'."> >+<!ENTITY install.label "NainÅ¡talovaÅ¥"> >+<!ENTITY install.accesskey "N"> >+<!ENTITY addNavigatorHooks.label "PridaÅ¥ do kontextových ponúk prehliadaÄa"> >+<!ENTITY addNavigatorHooks.accesskey "k"> >diff --git a/suite/extensions/inspector/resources/locale/sk/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/sk/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/tasksOverlay.dtd >@@ -0,0 +1,12 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM Inspector"> >+<!ENTITY inspectorTaskCmd.commandkey "I"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+ >+<!ENTITY inspectPageTaskCmd.label "PreskúmaÅ¥ stránku"> >+<!ENTITY inspectPageTaskCmd.accesskey "P"> >+ >diff --git a/suite/extensions/inspector/resources/locale/sk/viewer-registry.dtd b/suite/extensions/inspector/resources/locale/sk/viewer-registry.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewer-registry.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY dom.label "Uzly rozhrania DOM"> >+<!ENTITY stylesheets.label "Å ablóny so Å¡týlmi"> >+<!ENTITY domNode.label "Uzol rozhrania DOM"> >+<!ENTITY boxModel.label "RámÄekový model"> >+<!ENTITY xblBindings.label "Väzby XBL"> >+<!ENTITY styleRules.label "Pravidlá CSS"> >+<!ENTITY computedStyle.label "VypoÄÃtané Å¡týly"> >+<!ENTITY usedFontFaces.label "Použité pÃsma"> >+<!ENTITY jsObject.label "Objekt JavaScriptu"> >+<!ENTITY accessibleEvent.label "Dostupná udalosÅ¥"> >+<!ENTITY accessibleObject.label "Dostupný objekt"> >+<!ENTITY accessibleProps.label "Dostupné vlastnosti"> >+<!ENTITY accessibleRelations.label "Dostupné vzÅ¥ahy"> >+<!ENTITY accessibleEvents.label "Dostupné udalosti"> >+<!ENTITY accessibleTree.label "Dostupný strom"> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEvent.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descIsFromUserInput.label "Je vstup od použÃvateľa: "> >+<!ENTITY descState.label "Stav: "> >+<!ENTITY descIsEnabled.label "Je stav povolený: "> >+<!ENTITY descStartOffset.label "ZaÄiatoÄný offset: "> >+<!ENTITY descLength.label "Dĺžka: "> >+<!ENTITY descIsInserted.label "Je vložený text: "> >+<!ENTITY descModifiedText.label "Upravený text: "> >+<!ENTITY descCaretOffset.label "Offset kurzora: "> >+<!ENTITY descrHandlerOutput.label "Výstup spracovania udalosti: "> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEvents.dtd >@@ -0,0 +1,22 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventList.label "Zoznam udalostÃ"> >+<!ENTITY watchedEvents.label "Sledovanie udalostÃ"> >+<!ENTITY handledEvents.label "Spracované udalosti:"> >+<!ENTITY eventType.label "Typ udalosti"> >+<!ENTITY eventTime.label "Äas"> >+<!ENTITY eventTargetNodeName.label "Názov uzla"> >+<!ENTITY eventTargetNodeID.label "ID"> >+<!ENTITY eventTargetRole.label "Ãloha"> >+<!ENTITY eventTargetName.label "Názov"> >+<!ENTITY isWatched.label "Sledovaný"> >+<!ENTITY isHandlerEnabled.label "Spracovanie povolené"> >+<!ENTITY clearEventList.label "VymazaÅ¥ zoznam udalostÃ"> >+<!ENTITY chooseEventsToWatch.label "Zvoľte udalosti na sledovanie."> >+<!ENTITY watchAll.label "SledovaÅ¥ vÅ¡etko"> >+<!ENTITY watchNone.label "NesledovaÅ¥ niÄ"> >+<!ENTITY editHandler.label "UpraviÅ¥ spracovanie udalostÃ"> >+<!ENTITY contextHelp.label "?"> >+<!ENTITY handlerEditorNoEvent.label "Zvoľte typ udalosti, ktorý chcete do obsluhy udalostÃ."> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEvents.properties b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEvents.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEvents.properties >@@ -0,0 +1,22 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+mutationEvents = udalosti mutácie >+changeEvents = udalosti zmeny >+notificationEvents = udalosti notifikácià >+selectionEvents = udalosti výberu >+menuEvents = udalosti ponuky >+documentEvents = udalosti dokumentu >+textEvents = udalosti textu >+tableEvents = udalosti tabuľky >+windowEvents = udalosti okna >+hyperLinkEvents = udalosti odkazu >+hyperTextEvents = udalosti textu odkazu >+ >+handlerEditorLabel = PovoliÅ¥ spracovanie udalostà "%S". >+ >+role = Rola >+name = Názov >+nodeName = Názov uzla >+id = ID >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEventsHandlerHelpDialog.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEventsHandlerHelpDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleEventsHandlerHelpDialog.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY helpDialog.title "PomocnÃk pre spracovanie udalostÃ"> >+ >+ <!ENTITY general.descr "NapÃÅ¡te a pripojte spracovanie dostupnej udalosti. KeÄ udalosÅ¥ nastane, môžete ju zvoliÅ¥ v zozname udalostà a uvidÃte výsledok spracovanie udalosti v pripojenom zobrazovaÄi dostupných udalostÃ."> >+ <!ENTITY helpers.descr "V editore spracovania udalostà je možné použÃvaÅ¥ nasledujúce objekty a funkcie:"> >+ >+ <!ENTITY event.descr "dostupný objekt udalosti"> >+ <!ENTITY target.descr "cieľový dostupný objekt"> >+ <!ENTITY accRetrieval.descr "služba dostupnosti nsIAccessibleRetrieval"> >+ <!ENTITY output.descr "vypÃÅ¡e zadaný reÅ¥azec"> >+ <!ENTITY outputAttrs.descr "vypÃÅ¡e atribúty zadaného dostupného objektu"> >+ <!ENTITY outputRole.descr "vypÃÅ¡e rolu zadaného dostupného objektu"> >+ <!ENTITY outputStates.descr "vypÃÅ¡e stav zadaného dostupného objektu"> >+ <!ENTITY outputTree.descr "vypÃÅ¡e strom pre zadaný dostupný objekt, zvýraznà dostupné objekty zo zadaného poľa"> >+ <!ENTITY outputDOMAttrs.descr "vypÃÅ¡e atribúty DOM zadaného dostupného objektu"> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleProps.dtd >@@ -0,0 +1,30 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descRole.label "Ãloha:"> >+<!ENTITY descName.label "Názov:"> >+<!ENTITY descDescription.label "Popis:"> >+<!ENTITY descValue.label "Hodnota:"> >+<!ENTITY descState.label "Stav:"> >+<!ENTITY descBounds.label "Okraje:"> >+<!ENTITY tabAttrs.label "Atribúty objektu"> >+<!ENTITY colAttrName.label "Názov"> >+<!ENTITY colAttrValue.label "Hodnota"> >+<!ENTITY tabActions.label "Akcie"> >+<!ENTITY descKeyBindings.label "Kláv. skratky:"> >+<!ENTITY descInvoke.label "VyvolaÅ¥"> >+<!ENTITY tabTextAttrs.label "Textové atribúty"> >+<!ENTITY descDefaultAttrs.label "Predvolené atribúty:"> >+<!ENTITY descStartOffset.label "ZaÄiatoÄný offset:"> >+<!ENTITY descEndOffset.label "Koncový offset:"> >+<!ENTITY tabTableCell.label "Bunka tabuľky"> >+<!ENTITY descColumnIdx.label "Index stĺpca:"> >+<!ENTITY descRowIdx.label "Index riadka:"> >+<!ENTITY descColumnExtent.label "Rozsah stĺpca:"> >+<!ENTITY descRowExtent.label "Rozsah riadka:"> >+<!ENTITY descIsSelected.label "Je vybraný:"> >+<!ENTITY colProp.label "VlastnosÅ¥"> >+<!ENTITY colRole.label "Rola"> >+<!ENTITY colName.label "Názov"> >+<!ENTITY colNodeName.label "Názov uzla"> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/accessibleProps.properties b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleProps.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleProps.properties >@@ -0,0 +1,5 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+accBounds = x: %S; y: %S; Å¡Ãrka: %S; výška: %S; >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleRelations.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY relationType.label "Typ vzÅ¥ahu"> >+<!ENTITY role.label "Ãloha"> >+<!ENTITY nodeName.label "Názov uzla"> >+<!ENTITY relations.label "VzÅ¥ahy: "> >+<!ENTITY relationTargets.label "Ciele vzÅ¥ahov: "> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleTree.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "Ãloha"> >+<!ENTITY name.label "Názov"> >+<!ENTITY nodeName.label "Názov uzla"> >+ >+<!ENTITY evaluateJS.label "VyhodnotiÅ¥ JavaScript"> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/accessibleTreeEvalJSDialog.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleTreeEvalJSDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/accessibleTreeEvalJSDialog.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY evaluateDialog.title "Dialógové okno vyhodnotenia JavaScriptu"> >+ >+ <!ENTITY btnEvaluateJS.label "VyhodnotiÅ¥"> >+ <!ENTITY btnEvaluateJS.accesskey "V"> >+ >+ <!ENTITY txtInputArea.label "Vstup (použite premennú 'accessible' na obsluhu aktuálneho prÃstupového bodu, funkciu 'output' na zápis do okna 'Výstup', 'tree.search(accessible, filterfunc)' na vyhľadávanie a 'tree.clearSearch()' na vymazanie výsledkov vyhľadávania): "> >+ <!ENTITY txtInputArea.accesskey "t"> >+ <!ENTITY txtOutputArea.label "Výstup: "> >+ <!ENTITY txtOutputArea.accesskey "s"> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/boxModel.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Umiestnenie"> >+<!ENTITY boxDimension.label "Rozmery"> >+<!ENTITY boxBorder.label "Okraj"> >+<!ENTITY boxMargin.label "Orámovanie"> >+<!ENTITY boxPadding.label "Vyplnenie"> >+ >+<!ENTITY xCoord.label "x"> >+<!ENTITY yCoord.label "y"> >+<!ENTITY screenXCoord.label "obrazovka x"> >+<!ENTITY screenYCoord.label "obrazovka y"> >+ >+<!ENTITY dimensionWidth.label "Å¡Ãrka boxu"> >+<!ENTITY dimensionHeight.label "výška boxu"> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/computedStyle.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Vlastnost"> >+<!ENTITY propertyValue.label "Hodnota"> >+ >+ >+ >+ >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/dom.dtd >@@ -0,0 +1,138 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY cmdShowFindDialog.label "HľadaÅ¥ uzlyâ¦"> >+<!ENTITY cmdShowFindDialog.accesskey "H"> >+<!ENTITY cmdShowFindDialog.key "f"> >+ >+<!ENTITY cmdFindAgain.label "HľadaÅ¥ znova"> >+<!ENTITY cmdFindAgain.accesskey "a"> >+<!ENTITY cmdFindAgain.key "G"> >+ >+<!ENTITY cmdToggleAnonContent.label "ZobraziÅ¥ anonymný obsah"> >+<!ENTITY cmdToggleAnonContent.accesskey "a"> >+ >+<!ENTITY cmdToggleWhitespaceNodes.label "ZobraziÅ¥ prázdne uzly"> >+<!ENTITY cmdToggleWhitespaceNodes.accesskey "u"> >+ >+<!ENTITY cmdToggleAccessibleNodes.label "ZobraziÅ¥ prÃstupové uzly"> >+<!ENTITY cmdToggleAccessibleNodes.accesskey "b"> >+ >+<!ENTITY cmdToggleProcessingInstructions.label "ZobraziÅ¥ vykonávacie inÅ¡trukcie"> >+<!ENTITY cmdToggleProcessingInstructions.accesskey "k"> >+ >+<!ENTITY cmdToggleAttributes.label "ZobraziÅ¥ atribúty"> >+<!ENTITY cmdToggleAttributes.accesskey "r"> >+ >+<!ENTITY cmdSelectByClick.label "VybraÅ¥ prvok kliknutÃm"> >+<!ENTITY cmdSelectByClick.accesskey "b"> >+ >+<!ENTITY ColumnsDialog.title "Stĺpce"> >+ >+<!ENTITY cmdShowColumnsDialog.label "Stĺpce"> >+<!ENTITY cmdShowColumnsDialog.accesskey "c"> >+ >+<!ENTITY cmdInsertNode.label "VložiÅ¥"> >+<!ENTITY cmdDeleteNode.label "OdstrániÅ¥"> >+<!ENTITY cmdCopyXML.label "KopÃrovaÅ¥ XML"> >+<!ENTITY cmdCopyXML.accesskey "X"> >+<!ENTITY cmdBlink.label "ZvýrazniÅ¥ prvok"> >+<!ENTITY cmdBlink.accesskey "Z"> >+<!ENTITY cmdInspectBrowser.label "PreskúmaÅ¥"> >+<!ENTITY cmdInspectBrowser.accesskey "r"> >+ >+<!ENTITY cmdShowPseudoClasses.label "NastaviÅ¥ pseudo-triedy"> >+<!ENTITY cmdShowPseudoClasses.accesskey "N"> >+ >+<!ENTITY pseudoClasses.title "Pseudo-triedy"> >+ >+<!ENTITY findNodes.title "HľadaÅ¥ uzlyâ¦"> >+<!ENTITY findNodesById.label "ID"> >+<!ENTITY findNodesById.accesskey "I"> >+<!ENTITY findNodesById.accesskey2 "d"> >+<!ENTITY findNodesByTag.label "Tag"> >+<!ENTITY findNodesByTag.accesskey "T"> >+<!ENTITY findNodesByTag.accesskey2 "g"> >+<!ENTITY findNodesByAttr.label "Atribút"> >+<!ENTITY findNodesByAttr.accesskey "A"> >+<!ENTITY findNodesByAttr.accesskey2 "r"> >+<!ENTITY findNodesByAttrValue.label "Hodnota"> >+<!ENTITY findNodesByAttrValue.accesskey "H"> >+<!ENTITY findNodesSearchBy.label "HľadaÅ¥"> >+<!ENTITY findNodesDirection.label "Smer"> >+<!ENTITY findNodesDirectionUp.label "Nahor"> >+<!ENTITY findNodesDirectionUp.accesskey "h"> >+<!ENTITY findNodesDirectionDown.label "Nadol"> >+<!ENTITY findNodesDirectionDown.accesskey "N"> >+<!ENTITY findNodesFind.label "HľadaÅ¥"> >+<!ENTITY findNodesCancel.label "ZruÅ¡iÅ¥"> >+ >+ <!ENTITY mnEditPasteMenu.label "PrilepiÅ¥"> >+ <!ENTITY mnEditPasteMenu.accesskey "P"> >+ <!ENTITY mnEditPasteBefore.label "Pred"> >+ <!ENTITY mnEditPasteBefore.accesskey "r"> >+ <!ENTITY mnEditPasteAfter.label "Po"> >+ <!ENTITY mnEditPasteAfter.accesskey "P"> >+ <!ENTITY mnEditPasteReplace.label "Na miesto (NahradiÅ¥)"> >+ <!ENTITY mnEditPasteReplace.accesskey "N"> >+ <!ENTITY mnEditPasteFirstChild.label "Ako prvý potomok"> >+ <!ENTITY mnEditPasteFirstChild.accesskey "A"> >+ <!ENTITY mnEditPasteLastChild.label "Ako posledný potomok"> >+ <!ENTITY mnEditPasteLastChild.accesskey "k"> >+ <!ENTITY mnEditPasteAsParent.label "Ako rodiÄ"> >+ <!ENTITY mnEditPasteAsParent.accesskey "o"> >+ >+ <!ENTITY mnEditInsertMenu.label "VložiÅ¥"> >+ <!ENTITY mnEditInsertMenu.accesskey "i"> >+ <!ENTITY mnEditInsertAfter.label "Po"> >+ <!ENTITY mnEditInsertAfter.accesskey "P"> >+ <!ENTITY mnEditInsertBefore.label "Pred"> >+ <!ENTITY mnEditInsertBefore.accesskey "r"> >+ <!ENTITY mnEditInsertFirstChild.label "Ako prvý potomok"> >+ <!ENTITY mnEditInsertFirstChild.accesskey "A"> >+ <!ENTITY mnEditInsertLastChild.label "Ako posledný potomok"> >+ <!ENTITY mnEditInsertLastChild.accesskey "k"> >+ >+ <!ENTITY insertNode.title "VložiÅ¥ uzol"> >+ <!ENTITY nodeType.label "Typ uzla:"> >+ <!ENTITY nodeType.accesskey "T"> >+ <!ENTITY nodeType.element.label "Prvok"> >+ <!ENTITY nodeType.text.label "Text"> >+ <!ENTITY namespaceURI.label "Priestor názvov URI:"> >+ <!ENTITY namespaceURI.accesskey "U"> >+ <!ENTITY tagName.label "Názov tagu:"> >+ <!ENTITY tagName.accesskey "N"> >+ <!ENTITY nodeValue.label "Hodnota uzla:"> >+ <!ENTITY nodeValue.accesskey "H"> >+ >+ <!ENTITY namespaceTitle.null.label "Nulový"> >+ <!ENTITY namespaceTitle.default.label "Predvolený podľa dokumentu"> >+ <!ENTITY namespaceTitle.custom.label "Vlastný"> >+ >+ <!-- LOCALIZATION NOTE: The following entities are names of W3C >+ specifications. Please consult >+ http://www.w3.org/Consortium/Translation/ for appropriate translation >+ or leave unchanged. --> >+ <!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+ <!ENTITY namespaceTitle.XML.label "XML"> >+ <!ENTITY namespaceTitle.XHTML.label "XHTML"> >+ <!ENTITY namespaceTitle.XLink.label "XLink"> >+ <!ENTITY namespaceTitle.XSLT.label "XSLT"> >+ <!ENTITY namespaceTitle.XBL.label "XBL"> >+ <!ENTITY namespaceTitle.MathML.label "MathML"> >+ <!ENTITY namespaceTitle.RDF.label "RDF"> >+ <!ENTITY namespaceTitle.XUL.label "XUL"> >+ <!ENTITY namespaceTitle.SVG.label "SVG"> >+ <!ENTITY namespaceTitle.XMLEvents.label "Udalosti XML"> >+ <!ENTITY namespaceTitle.WAIRoles.label "Ãlohy WAI"> >+ <!ENTITY namespaceTitle.WAIProperties.label "Vlastnosti WAI"> >+ >+ <!-- LOCALIZATION NOTE: Localizers can choose not to translate the following >+ access keys. For a discussion about the pros and cons of such a >+ decision, see https://bugzilla.mozilla.org/show_bug.cgi?id=398704, >+ comments 1 and 2. --> >+ <!ENTITY cbxStateHover.accesskey "h"> >+ <!ENTITY cbxStateActive.accesskey "a"> >+ <!ENTITY cbxStateFocus.accesskey "f"> >+ >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/domNode.dtd >@@ -0,0 +1,31 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Názov uzla:"> >+<!ENTITY localName.label "Lokálny názov:"> >+<!ENTITY namespaceURI.label "Priestor názvov URI:"> >+<!ENTITY nodeType.label "Typ uzla:"> >+<!ENTITY nodeValue.label "Hodnota uzla:"> >+<!ENTITY grpAttr.label "Atribúty"> >+ >+<!ENTITY namespaceTitle.null.label "Nulový"> >+<!ENTITY namespaceTitle.default.label "Predvolený pre dokument"> >+<!ENTITY namespaceTitle.custom.label "Vlastný"> >+ >+<!-- LOCALIZATION NOTE: The following entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "Udalosti XML"> >+<!ENTITY namespaceTitle.WAIRoles.label "Ãlohy WAI"> >+<!ENTITY namespaceTitle.WAIProperties.label "Vlastnosti WAI"> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/jsObject.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "KopÃrovaÅ¥ hodnotu"> >+<!ENTITY jsEval.label "VyhodnotiÅ¥ JavaScript"> >+ >+<!ENTITY jsProperty.label "VlastnosÅ¥"> >+<!ENTITY jsValue.label "Hodnota"> >+ >+<!ENTITY evaluateDialog.title "Vyhodnotenie výrazu"> >+<!ENTITY jsEval.desc "Zadajte výraz v jazyku JavaScript. Premenná "target" je objektom, ktorý je práve vybraný."> >+<!ENTITY jsExecute.label "SpustiÅ¥"> >+<!ENTITY inspectReturn.label "Výsledok otvoriÅ¥"> >+<!ENTITY inspectReturnNew.label "V novom okne"> >+<!ENTITY inspectReturnExisting.label "V existujúcom okne"> >+ >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/styleRules.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "HľadaÅ¥ pravidlá CSSâ¦"> >+<!ENTITY miFindCSSRules.accesskey "H"> >+ >+<!ENTITY newRules.label "Nové"> >+<!ENTITY deleteSelectedRules.label "OdstrániÅ¥"> >+<!ENTITY disableSelectedRules.label "ZakázaÅ¥"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Prepnúť !important"> >+ >+<!ENTITY styleRule.label "Pravidlo"> >+<!ENTITY styleRuleURI.label "Súbor"> >+<!ENTITY styleRuleLineNumber.label "Riadok"> >+ >+<!ENTITY styleRulePropPriority.label "Priorita"> >+<!ENTITY styleRulePropName.label "VlastnosÅ¥"> >+<!ENTITY styleRulePropValue.label "Hodnota"> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/stylesheets.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Å ablóna so Å¡týlmi"> >+<!ENTITY sheetRules.label "Pravidlá"> >+ >+ >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/usedFontFaces.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/usedFontFaces.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/usedFontFaces.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY fontName.label "Názov pÃsma"> >+<!ENTITY cssFamilyName.label "Rodina pÃsma"> >+<!ENTITY uri.label "URI"> >+<!ENTITY localName.label "Lokálny názov"> >+<!ENTITY format.label "Formát"> >diff --git a/suite/extensions/inspector/resources/locale/sk/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/sk/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sk/viewers/xblBindings.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "Obsah"> >+<!ENTITY bindingMethods.label "Metódy"> >+<!ENTITY bindingMethodName.label "Názov metódy"> >+<!ENTITY bindingProperties.label "Vlastnosti"> >+<!ENTITY bindingGetter.label "Getter"> >+<!ENTITY bindingSetter.label "Setter"> >+<!ENTITY bindingProperty.label "VlastnosÅ¥"> >+<!ENTITY bindingHandlers.label "Obslužné programy"> >+<!ENTITY bindingHandlerEvent.label "UdalosÅ¥"> >+<!ENTITY bindingHandlerPhase.label "Fáza"> >+<!ENTITY bindingResources.label "Zdroje"> >+<!ENTITY bindingResourceType.label "Typ"> >+<!ENTITY bindingResourceSrc.label "Zdroj"> >+<!ENTITY bindingSourceCode.label "Zdrojový kód"> >+ >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/editing.dtd b/suite/extensions/inspector/resources/locale/sv-SE/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/editing.dtd >@@ -0,0 +1,27 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditUndo.label "à ngra"> >+<!ENTITY mnEditUndo.accesskey "Ã¥"> >+<!ENTITY mnEditRedo.label "Gör om"> >+<!ENTITY mnEditRedo.accesskey "g"> >+<!ENTITY mnEditCut.label "Klipp ut"> >+<!ENTITY mnEditCut.accesskey "t"> >+<!ENTITY mnEditCopy.label "Kopiera"> >+<!ENTITY mnEditCopy.accesskey "k"> >+<!ENTITY mnEditPaste.label "Klistra in"> >+<!ENTITY mnEditPaste.accesskey "l"> >+<!ENTITY mnEditInsert.label "Infoga"> >+<!ENTITY mnEditInsert.accesskey "i"> >+<!ENTITY mnEditEdit.label "Redigera"> >+<!ENTITY mnEditEdit.accesskey "e"> >+<!ENTITY mnEditDelete.label "Ta bort"> >+<!ENTITY mnEditDelete.accesskey "b"> >+<!ENTITY mnEditInspectInNewWindow.label "Granska i nytt fönster"> >+<!ENTITY mnEditInspectInNewWindow.accesskey "n"> >+<!ENTITY mnEditInspectInNewWindow.key "r"> >+<!ENTITY mnEditCopyFileURI.label "Kopiera URI"> >+<!ENTITY mnEditCopyFileURI.accesskey "u"> >+<!ENTITY mnEditViewFileURI.label "Visa fil"> >+<!ENTITY mnEditViewFileURI.accesskey "v"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/inspector.dtd b/suite/extensions/inspector/resources/locale/sv-SE/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/inspector.dtd >@@ -0,0 +1,67 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ >+<!ENTITY Inspector.title "DOM-granskaren"> >+ >+<!ENTITY thDOMNodes.label "DOM-noder"> >+<!ENTITY btnInspect.label "Granska"> >+<!ENTITY btnInspect.accesskey "G"> >+<!ENTITY bxDocPanel.title "Dokument"> >+<!ENTITY bxObjectPanel.title "Objekt"> >+<!ENTITY btnSelecting.tooltip "Hitta en nod att granska genom att klicka pÃ¥ den"> >+<!ENTITY btnFind.tooltip "Hitta en nod att granska m.h.a. ID, tagg eller attribut"> >+ >+<!-- MAIN MENU ITEMS --> >+ >+<!ENTITY mnFile.label "Arkiv"> >+<!ENTITY mnFile.accesskey "A"> >+ <!ENTITY mnInspectContentDocument.label "Granska innehÃ¥llsdokument"> >+ <!ENTITY mnInspectContentDocument.accesskey "i"> >+ <!ENTITY mnInspectChromeDocument.label "Granska chrome-dokument"> >+ <!ENTITY mnInspectChromeDocument.accesskey "c"> >+ <!ENTITY mnInspectApplicationAccessible.label "Granska programtillgänglighet"> >+ <!ENTITY mnInspectApplicationAccessible.accesskey "p"> >+ <!ENTITY cmdEnterLocation.label "Granska en URL"> >+ <!ENTITY cmdEnterLocation.accesskey "U"> >+ <!ENTITY cmdEnterLocation.key "L"> >+ <!ENTITY cmdEnterLocation.key2 "D"> >+ <!ENTITY cmdSave.label "Spara DOM somâ¦"> >+ <!ENTITY cmdSave.accesskey "S"> >+ <!ENTITY cmdClose.label "Stäng"> >+ <!ENTITY cmdClose.accesskey "ä"> >+ <!ENTITY cmdExit.label "Avsluta"> >+ <!ENTITY cmdExit.accesskey "v"> >+ >+<!ENTITY mnEdit.label "Redigera"> >+<!ENTITY mnEdit.accesskey "e"> >+ <!ENTITY cmdUndo.label "à ngra"> >+ <!ENTITY cmdUndo.accesskey "à "> >+ <!ENTITY cmdRedo.label "Gör om"> >+ <!ENTITY cmdRedo.accesskey "G"> >+ <!ENTITY cmdCut.label "Klipp ut"> >+ <!ENTITY cmdCut.accesskey "t"> >+ <!ENTITY cmdCopy.label "Kopiera"> >+ <!ENTITY cmdCopy.accesskey "K"> >+ <!ENTITY cmdPaste.label "Klistra in"> >+ <!ENTITY cmdPaste.accesskey "l"> >+ <!ENTITY cmdDelete.label "Ta bort"> >+ <!ENTITY cmdDelete.accesskey "b"> >+ >+<!ENTITY mnView.label "Visa"> >+<!ENTITY mnView.accesskey "V"> >+ <!ENTITY mnDocViewerList.label "Dokumentgranskare"> >+ <!ENTITY mnDocViewerList.accesskey "D"> >+ <!ENTITY mnObjectViewerList.label "Objektgranskare"> >+ <!ENTITY mnObjectViewerList.accesskey "O"> >+ <!ENTITY cmdToggleDocument.label "Visa dokument i webbläsarruta"> >+ <!ENTITY cmdToggleDocument.accesskey "b"> >+ <!ENTITY cmdToggleSearch.label "Sökresultat"> >+ <!ENTITY cmdFlashOnSelect.label "Blinka markerat element"> >+ <!ENTITY cmdFlashOnSelect.accesskey "n"> >+ >+<!ENTITY browserPanel.label "Webbläsare"> >+ >+<!ENTITY saveCmd.key "S"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/inspector.properties b/suite/extensions/inspector/resources/locale/sv-SE/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/inspector.properties >@@ -0,0 +1,34 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+applicationAccesible.title = Programtillgänglighet >+inspectWindow.noDocuments.message = (Ingen) >+styleRuleNewProperty.title = Ny formatregel >+styleRuleEditProperty.title = Redigera formatregel >+styleRulePropertyValue.message = Ange egenskapens värde: >+styleRulePropertyName.message = Ange egenskapens namn: >+sidebar.title = DOM-granskaren >+sidebarInstalled = Sidopanelen är installerad. >+newAttribute.title = Nytt attribut >+editAttribute.title = Redigera attribut >+findNodesDocumentEnd.message = Slutet pÃ¥ dokumentet har nÃ¥tts. >+findNodesDocumentEnd.title = Sök noder >+root.title = Objekt >+ >+irrecoverableSubtree.title = Ta bort anonymt underordnat träd >+ >+irrecoverableSubtree.message = NÃ¥gra av de markerade noderna tillhör ett anonymt underordnat träd, som kommer att förstöras. Borttagningen av dessa noder kan inte Ã¥ngras. Vill du ta bort de markerade noderna? >+ >+1 = Element >+2 = Attribut >+3 = Text >+4 = CDATA-avsnitt >+5 = Entitetsreferens >+6 = Entitet >+7 = Bearbetningsinstruktion >+8 = Kommentar >+9 = Dokument >+10 = Dokumenttyp >+11 = Dokumentfragment >+12 = Notation >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/prefs.dtd b/suite/extensions/inspector/resources/locale/sv-SE/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/prefs.dtd >@@ -0,0 +1,26 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM-granskaren"> >+<!ENTITY Sidebar.label "Sidopanel"> >+<!ENTITY elementBlinking.label "Elementblinkning"> >+<!ENTITY blinkSelectedElement.label "Blinka markerat element"> >+<!ENTITY blinkSelectedElement.accesskey "B"> >+<!ENTITY borderColor.label "Kantlinjefärg"> >+<!ENTITY borderColor.accesskey "f"> >+<!ENTITY borderWidth.label "Kantlinjebredd"> >+<!ENTITY borderWidth.accesskey "K"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "Blinkningslängd"> >+<!ENTITY blinkDuration.accesskey "l"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "Blinkningshastighet"> >+<!ENTITY blinkSpeed.accesskey "h"> >+<!ENTITY invertColors.label "Invertera färger"> >+<!ENTITY invertColors.accesskey "v"> >+<!ENTITY installHowTo.label "DOM-granskarens sidopanel är för närvarande inte installerad. Klicka pÃ¥ "Installera"-knappen för att lägga till den i din sidopanel."> >+<!ENTITY install.label "Installera"> >+<!ENTITY install.accesskey "I"> >+<!ENTITY addNavigatorHooks.label "Lägg till snabbmenyer i navigatören"> >+<!ENTITY addNavigatorHooks.accesskey "m"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/sv-SE/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectorTaskCmd.label "DOM-granskaren"> >+<!ENTITY inspectorTaskCmd.commandkey "g"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "G"> >+ >+<!ENTITY inspectPageTaskCmd.label "Granska sida"> >+<!ENTITY inspectPageTaskCmd.accesskey "g"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewer-registry.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewer-registry.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewer-registry.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY dom.label "DOM-noder"> >+<!ENTITY stylesheets.label "Formatmallar"> >+<!ENTITY domNode.label "DOM-nod"> >+<!ENTITY boxModel.label "Rutmodell"> >+<!ENTITY xblBindings.label "XBL-bindningar"> >+<!ENTITY styleRules.label "CSS-regler"> >+<!ENTITY computedStyle.label "Beräknat format"> >+<!ENTITY usedFontFaces.label "Använda typsnitt"> >+<!ENTITY jsObject.label "JavaScript-objekt"> >+<!ENTITY accessibleEvent.label "Tillgänglig händelse"> >+<!ENTITY accessibleObject.label "Tillgängligt objekt"> >+<!ENTITY accessibleProps.label "Tillgängliga egenskaper"> >+<!ENTITY accessibleRelations.label "Tillgängliga relationer"> >+<!ENTITY accessibleEvents.label "Tillgängliga händelser"> >+<!ENTITY accessibleTree.label "Tillgängligt träd"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEvent.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEvent.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEvent.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY descIsFromUserInput.label "FrÃ¥n användarindata: "> >+<!ENTITY descState.label "TillstÃ¥nd: "> >+<!ENTITY descIsEnabled.label "TillstÃ¥nd aktiverat: "> >+<!ENTITY descStartOffset.label "Startförskjutning: "> >+<!ENTITY descLength.label "Längd: "> >+<!ENTITY descIsInserted.label "Infogad text: "> >+<!ENTITY descModifiedText.label "Ãndrad text: "> >+<!ENTITY descCaretOffset.label "Textmarkörförskjutning: "> >+<!ENTITY descrHandlerOutput.label "Händelsehanterarutdata: "> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEvents.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEvents.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEvents.dtd >@@ -0,0 +1,22 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY eventList.label "Händelselista"> >+<!ENTITY watchedEvents.label "Bevakade händelser"> >+<!ENTITY handledEvents.label "Hanterade händelser:"> >+<!ENTITY eventType.label "Händelsetyp"> >+<!ENTITY eventTime.label "Tid"> >+<!ENTITY eventTargetNodeName.label "Nodnamn"> >+<!ENTITY eventTargetNodeID.label "ID"> >+<!ENTITY eventTargetRole.label "Roll"> >+<!ENTITY eventTargetName.label "Namn"> >+<!ENTITY isWatched.label "Bevakas"> >+<!ENTITY isHandlerEnabled.label "Hanteraraktiverad"> >+<!ENTITY clearEventList.label "Rensa händelselistan"> >+<!ENTITY chooseEventsToWatch.label "Välj händelser att bevaka"> >+<!ENTITY watchAll.label "Bevaka alla"> >+<!ENTITY watchNone.label "Bevaka ingen"> >+<!ENTITY editHandler.label "Redigera hanterare"> >+<!ENTITY contextHelp.label "?"> >+<!ENTITY handlerEditorNoEvent.label "Välj händelsetyp för att lägga till en hanterare."> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEvents.properties b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEvents.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEvents.properties >@@ -0,0 +1,22 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+mutationEvents = mutationshändelser >+changeEvents = ändringshändelser >+notificationEvents = aviseringshändelser >+selectionEvents = markeringshändelser >+menuEvents = menyhändelser >+documentEvents = dokumenthändelser >+textEvents = texthändelser >+tableEvents = tabellhändelser >+windowEvents = fönsterhändelser >+hyperLinkEvents = hyperlänkhändelser >+hyperTextEvents = hypertexthändelser >+ >+handlerEditorLabel = Aktivera händelsehanteraren "%S". >+ >+role = Roll >+name = Namn >+nodeName = Nodnamn >+id = ID >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEventsHandlerHelpDialog.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEventsHandlerHelpDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleEventsHandlerHelpDialog.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY helpDialog.title "Hjälpdialog för hanterare"> >+ >+ <!ENTITY general.descr "Skriv och bifoga en hjälpmedelshändelsehanterare. När händelsen inträffar kan du markera den i händelselistan och se resultatet av hanterarens utvärdering i den länkade granskaren "Tillgänglig händelse"."> >+ <!ENTITY helpers.descr "Följande objekt och funktioner kan användas i hanterarredigeraren:"> >+ >+ <!ENTITY event.descr "hjälpmedelshändelseobjekt"> >+ <!ENTITY target.descr "hjälpmedelsmÃ¥lobjekt"> >+ <!ENTITY accRetrieval.descr "hjälpmedelstjänsten nsIAccessibleRetrieval"> >+ <!ENTITY output.descr "skriver ut den angivna strängen"> >+ <!ENTITY outputAttrs.descr "skriver ut objektattributen för det angivna hjälpmedelsobjektet"> >+ <!ENTITY outputRole.descr "skriver ut rollen för det angivna hjälpmedelsobjektet"> >+ <!ENTITY outputStates.descr "skriver ut tillstÃ¥nd för det angivna hjälpmedelsobjektet"> >+ <!ENTITY outputTree.descr "skriver ut ett träd för det angivna hjälpmedelsobjektet, färgmarkerar hjälpmedel frÃ¥n den angivna matrisen"> >+ <!ENTITY outputDOMAttrs.descr "skriver ut DOM-attribut för det angivna hjälpmedelsobjektet"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleProps.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleProps.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleProps.dtd >@@ -0,0 +1,29 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+<!ENTITY descRole.label "Roll:"> >+<!ENTITY descName.label "Namn:"> >+<!ENTITY descDescription.label "Beskrivning:"> >+<!ENTITY descValue.label "Värde:"> >+<!ENTITY descState.label "TillstÃ¥nd:"> >+<!ENTITY descBounds.label "Gränser:"> >+<!ENTITY tabAttrs.label "Objektattribut"> >+<!ENTITY colAttrName.label "Namn"> >+<!ENTITY colAttrValue.label "Värde"> >+<!ENTITY tabActions.label "à tgärder"> >+<!ENTITY descKeyBindings.label "Nyckelbindningar:"> >+<!ENTITY descInvoke.label "Anropa"> >+<!ENTITY tabTextAttrs.label "Textattribut"> >+<!ENTITY descDefaultAttrs.label "Standardattribut:"> >+<!ENTITY descStartOffset.label "StartavstÃ¥nd:"> >+<!ENTITY descEndOffset.label "SlutavstÃ¥nd:"> >+<!ENTITY tabTableCell.label "Tabellcell"> >+<!ENTITY descColumnIdx.label "Kolumnindex:"> >+<!ENTITY descRowIdx.label "Radindex:"> >+<!ENTITY descColumnExtent.label "Kolumnutsträckning:"> >+<!ENTITY descRowExtent.label "Radutsträckning:"> >+<!ENTITY descIsSelected.label "Markerad:"> >+<!ENTITY colProp.label "Egenskap"> >+<!ENTITY colRole.label "Roll"> >+<!ENTITY colName.label "Namn"> >+<!ENTITY colNodeName.label "Nodnamn"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleProps.properties b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleProps.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleProps.properties >@@ -0,0 +1,5 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+accBounds = x: %S; y: %S; bredd: %S; höjd: %S; >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleRelations.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleRelations.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleRelations.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY relationType.label "Relationstyp"> >+<!ENTITY role.label "Roll"> >+<!ENTITY nodeName.label "Nodnamn"> >+<!ENTITY relations.label "Relationer: "> >+<!ENTITY relationTargets.label "RelationsmÃ¥l: "> >+ >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleTree.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleTree.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleTree.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY role.label "Roll"> >+<!ENTITY name.label "Namn"> >+<!ENTITY nodeName.label "Nodnamn"> >+ >+<!ENTITY evaluateJS.label "Utvärdera JavaScript"> >+ >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleTreeEvalJSDialog.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleTreeEvalJSDialog.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/accessibleTreeEvalJSDialog.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this file, >+ - You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY evaluateDialog.title "Utvärdera JavaScript"> >+ >+ <!ENTITY btnEvaluateJS.label "Utvärdera"> >+ <!ENTITY btnEvaluateJS.accesskey "e"> >+ >+ <!ENTITY txtInputArea.label "IndataomrÃ¥de (använd variabeln "accessible" för att arbeta med markerat accessibility-element och funktionen "output" för att skriva i fönstret "UtdataomrÃ¥de"): "> >+ <!ENTITY txtInputArea.accesskey "I"> >+ <!ENTITY txtOutputArea.label "UtdataomrÃ¥de: "> >+ <!ENTITY txtOutputArea.accesskey "U"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/boxModel.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxPosition.label "Position"> >+<!ENTITY boxDimension.label "Dimensioner"> >+<!ENTITY boxMargin.label "Marginal"> >+<!ENTITY boxBorder.label "Kantlinje"> >+<!ENTITY boxPadding.label "Utfyllnad"> >+ >+<!ENTITY xCoord.label "x"> >+<!ENTITY yCoord.label "y"> >+<!ENTITY screenXCoord.label "skärm-x"> >+<!ENTITY screenYCoord.label "skärm-y"> >+ >+<!ENTITY dimensionWidth.label "bredd pÃ¥ ruta"> >+<!ENTITY dimensionHeight.label "höjd pÃ¥ ruta"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "Egenskap"> >+<!ENTITY propertyValue.label "Värde"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/dom.dtd >@@ -0,0 +1,138 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+ <!ENTITY cmdShowFindDialog.label "Sök noderâ¦"> >+ <!ENTITY cmdShowFindDialog.accesskey "ö"> >+ <!ENTITY cmdShowFindDialog.key "ö"> >+ >+ <!ENTITY cmdFindAgain.label "Sök igen"> >+ <!ENTITY cmdFindAgain.accesskey "g"> >+ <!ENTITY cmdFindAgain.key "G"> >+ >+ <!ENTITY cmdToggleAnonContent.label "Visa anonymt innehÃ¥ll"> >+ <!ENTITY cmdToggleAnonContent.accesskey "a"> >+ >+ <!ENTITY cmdToggleWhitespaceNodes.label "Visa noder med tomt utrymme"> >+ <!ENTITY cmdToggleWhitespaceNodes.accesskey "t"> >+ >+ <!ENTITY cmdToggleAccessibleNodes.label "Visa tillgängliga noder"> >+ <!ENTITY cmdToggleAccessibleNodes.accesskey "l"> >+ >+ <!ENTITY cmdToggleProcessingInstructions.label "Visa bearbetningsinstruktioner"> >+ <!ENTITY cmdToggleProcessingInstructions.accesskey "b"> >+ >+ <!ENTITY cmdToggleAttributes.label "Visa attribut"> >+ <!ENTITY cmdToggleAttributes.accesskey "r"> >+ >+ <!ENTITY cmdSelectByClick.label "Välj element genom att klicka"> >+ <!ENTITY cmdSelectByClick.accesskey "e"> >+ >+ <!ENTITY ColumnsDialog.title "Kolumner"> >+ >+ <!ENTITY cmdShowColumnsDialog.label "Kolumnerâ¦"> >+ <!ENTITY cmdShowColumnsDialog.accesskey "K"> >+ >+ <!ENTITY cmdInsertNode.label "Infogaâ¦"> >+ <!ENTITY cmdDeleteNode.label "Ta bort"> >+ <!ENTITY cmdCopyXML.label "Kopiera XML"> >+ <!ENTITY cmdCopyXML.accesskey "X"> >+ <!ENTITY cmdBlink.label "Blinka element"> >+ <!ENTITY cmdBlink.accesskey "B"> >+ <!ENTITY cmdInspectBrowser.label "Granska inbäddat dokument"> >+ <!ENTITY cmdInspectBrowser.accesskey "d"> >+ >+ <!ENTITY cmdShowPseudoClasses.label "Ange pseudoklasserâ¦"> >+ <!ENTITY cmdShowPseudoClasses.accesskey "S"> >+ >+ <!ENTITY pseudoClasses.title "Pseudoklasser"> >+ >+ <!ENTITY findNodes.title "Sök noder"> >+ <!ENTITY findNodesById.label "ID"> >+ <!ENTITY findNodesById.accesskey "I"> >+ <!ENTITY findNodesById.accesskey2 "D"> >+ <!ENTITY findNodesByTag.label "Tagg"> >+ <!ENTITY findNodesByTag.accesskey "T"> >+ <!ENTITY findNodesByTag.accesskey2 "g"> >+ <!ENTITY findNodesByAttr.label "Attr"> >+ <!ENTITY findNodesByAttr.accesskey "A"> >+ <!ENTITY findNodesByAttr.accesskey2 "r"> >+ <!ENTITY findNodesByAttrValue.label "Värde"> >+ <!ENTITY findNodesByAttrValue.accesskey "V"> >+ <!ENTITY findNodesSearchBy.label "Sök pÃ¥"> >+ <!ENTITY findNodesDirection.label "Riktning"> >+ <!ENTITY findNodesDirectionUp.label "UppÃ¥t"> >+ <!ENTITY findNodesDirectionUp.accesskey "U"> >+ <!ENTITY findNodesDirectionDown.label "NedÃ¥t"> >+ <!ENTITY findNodesDirectionDown.accesskey "Ã¥"> >+ <!ENTITY findNodesFind.label "Sök"> >+ <!ENTITY findNodesCancel.label "Avbryt"> >+ >+ <!ENTITY mnEditPasteMenu.label "Klistra in"> >+ <!ENTITY mnEditPasteMenu.accesskey "l"> >+ <!ENTITY mnEditPasteBefore.label "Före"> >+ <!ENTITY mnEditPasteBefore.accesskey "ö"> >+ <!ENTITY mnEditPasteAfter.label "Efter"> >+ <!ENTITY mnEditPasteAfter.accesskey "E"> >+ <!ENTITY mnEditPasteReplace.label "Istället för (Ersätt)"> >+ <!ENTITY mnEditPasteReplace.accesskey "I"> >+ <!ENTITY mnEditPasteFirstChild.label "Som första underordnade"> >+ <!ENTITY mnEditPasteFirstChild.accesskey "f"> >+ <!ENTITY mnEditPasteLastChild.label "Som sista underordnade"> >+ <!ENTITY mnEditPasteLastChild.accesskey "u"> >+ <!ENTITY mnEditPasteAsParent.label "Som överordnad"> >+ <!ENTITY mnEditPasteAsParent.accesskey "r"> >+ >+ <!ENTITY mnEditInsertMenu.label "Infoga"> >+ <!ENTITY mnEditInsertMenu.accesskey "I"> >+ <!ENTITY mnEditInsertAfter.label "Efter"> >+ <!ENTITY mnEditInsertAfter.accesskey "E"> >+ <!ENTITY mnEditInsertBefore.label "Före"> >+ <!ENTITY mnEditInsertBefore.accesskey "ö"> >+ <!ENTITY mnEditInsertFirstChild.label "Som första underordnade"> >+ <!ENTITY mnEditInsertFirstChild.accesskey "f"> >+ <!ENTITY mnEditInsertLastChild.label "Som sista underordnade"> >+ <!ENTITY mnEditInsertLastChild.accesskey "u"> >+ >+ <!ENTITY insertNode.title "Infoga nod"> >+ <!ENTITY nodeType.label "Nodtyp:"> >+ <!ENTITY nodeType.accesskey "t"> >+ <!ENTITY nodeType.element.label "Element"> >+ <!ENTITY nodeType.text.label "Text"> >+ <!ENTITY namespaceURI.label "NamnomrÃ¥des-URI:"> >+ <!ENTITY namespaceURI.accesskey "U"> >+ <!ENTITY tagName.label "Taggnamn:"> >+ <!ENTITY tagName.accesskey "n"> >+ <!ENTITY nodeValue.label "Nodvärde:"> >+ <!ENTITY nodeValue.accesskey "v"> >+ >+ <!ENTITY namespaceTitle.null.label "null"> >+ <!ENTITY namespaceTitle.default.label "Dokumentstandard"> >+ <!ENTITY namespaceTitle.custom.label "Eget"> >+ >+ <!-- LOCALIZATION NOTE: The following entities are names of W3C >+ specifications. Please consult >+ http://www.w3.org/Consortium/Translation/ for appropriate translation >+ or leave unchanged. --> >+ <!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+ <!ENTITY namespaceTitle.XML.label "XML"> >+ <!ENTITY namespaceTitle.XHTML.label "XHTML"> >+ <!ENTITY namespaceTitle.XLink.label "XLink"> >+ <!ENTITY namespaceTitle.XSLT.label "XSLT"> >+ <!ENTITY namespaceTitle.XBL.label "XBL"> >+ <!ENTITY namespaceTitle.MathML.label "MathML"> >+ <!ENTITY namespaceTitle.RDF.label "RDF"> >+ <!ENTITY namespaceTitle.XUL.label "XUL"> >+ <!ENTITY namespaceTitle.SVG.label "SVG"> >+ <!ENTITY namespaceTitle.XMLEvents.label "XML-händelser"> >+ <!ENTITY namespaceTitle.WAIRoles.label "WAI-roller"> >+ <!ENTITY namespaceTitle.WAIProperties.label "WAI-egenskaper"> >+ >+ <!-- LOCALIZATION NOTE: Localizers can choose not to translate the following >+ access keys. For a discussion about the pros and cons of such a >+ decision, see https://bugzilla.mozilla.org/show_bug.cgi?id=398704, >+ comments 1 and 2. --> >+ <!ENTITY cbxStateHover.accesskey "h"> >+ <!ENTITY cbxStateActive.accesskey "a"> >+ <!ENTITY cbxStateFocus.accesskey "f"> >+ >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/domNode.dtd >@@ -0,0 +1,31 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY nodeName.label "Nodnamn:"> >+<!ENTITY localName.label "Lokalt namn:"> >+<!ENTITY namespaceURI.label "NamnomrÃ¥des-URI:"> >+<!ENTITY nodeType.label "Nodtyp:"> >+<!ENTITY nodeValue.label "Nodvärde:"> >+<!ENTITY grpAttr.label "Attribut"> >+ >+<!ENTITY namespaceTitle.null.label "null"> >+<!ENTITY namespaceTitle.default.label "Dokumentstandard"> >+<!ENTITY namespaceTitle.custom.label "Eget"> >+ >+<!-- LOCALIZATION NOTE: Följande entities are names of W3C specifications. >+ Please consult http://www.w3.org/Consortium/Translation/ >+ for appropriate translation or leave unchanged. --> >+<!ENTITY namespaceTitle.XMLNS.label "XMLNS"> >+<!ENTITY namespaceTitle.XML.label "XML"> >+<!ENTITY namespaceTitle.XHTML.label "XHTML"> >+<!ENTITY namespaceTitle.XLink.label "XLink"> >+<!ENTITY namespaceTitle.XSLT.label "XSLT"> >+<!ENTITY namespaceTitle.XBL.label "XBL"> >+<!ENTITY namespaceTitle.MathML.label "MathML"> >+<!ENTITY namespaceTitle.RDF.label "RDF"> >+<!ENTITY namespaceTitle.XUL.label "XUL"> >+<!ENTITY namespaceTitle.SVG.label "SVG"> >+<!ENTITY namespaceTitle.XMLEvents.label "XML-händelser"> >+<!ENTITY namespaceTitle.WAIRoles.label "WAI-roller"> >+<!ENTITY namespaceTitle.WAIProperties.label "WAI-egenskaper"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/jsObject.dtd >@@ -0,0 +1,16 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "Kopiera värde"> >+<!ENTITY jsEval.label "Utvärdera JavaScriptâ¦"> >+ >+<!ENTITY jsProperty.label "Egenskap"> >+<!ENTITY jsValue.label "Värde"> >+ >+<!ENTITY evaluateDialog.title "Utvärdera uttryck"> >+<!ENTITY jsEval.desc "Ange ett JavaScript-uttryck. Variabeln "target" är den egenskap som för närvarande är markerad."> >+<!ENTITY jsExecute.label "Kör"> >+<!ENTITY inspectReturn.label "Granska svar i"> >+<!ENTITY inspectReturnNew.label "Nytt fönster"> >+<!ENTITY inspectReturnExisting.label "Befintligt fönster"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/styleRules.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY miFindCSSRules.label "Sök CSS-reglerâ¦"> >+<!ENTITY miFindCSSRules.accesskey "C"> >+ >+<!ENTITY newRules.label "Nytt"> >+<!ENTITY deleteSelectedRules.label "Ta bort"> >+<!ENTITY disableSelectedRules.label "Inaktivera"> >+ >+<!-- LOCALIZATION NOTE: DO NOT LOCALIZE "!important" since it is a CSS API --> >+<!ENTITY toggleSelectedImportant.label "Visa/Dölj !important"> >+ >+<!ENTITY styleRule.label "Regel"> >+<!ENTITY styleRuleURI.label "Fil"> >+<!ENTITY styleRuleLineNumber.label "Rad"> >+ >+<!ENTITY styleRulePropPriority.label "Prioritet"> >+<!ENTITY styleRulePropName.label "Egenskap"> >+<!ENTITY styleRulePropValue.label "Värde"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "Formatmall"> >+<!ENTITY sheetRules.label "Regler"> >+ >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/usedFontFaces.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/usedFontFaces.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/usedFontFaces.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY fontName.label "Typsnittsnamn"> >+<!ENTITY cssFamilyName.label "Familjenamn"> >+<!ENTITY uri.label "URI"> >+<!ENTITY localName.label "Lokalt namn"> >+<!ENTITY format.label "Format"> >diff --git a/suite/extensions/inspector/resources/locale/sv-SE/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/sv-SE/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/sv-SE/viewers/xblBindings.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "InnehÃ¥ll"> >+<!ENTITY bindingMethods.label "Metoder"> >+<!ENTITY bindingMethodName.label "Metodnamn"> >+<!ENTITY bindingProperties.label "Egenskaper"> >+<!ENTITY bindingGetter.label "Hämtare"> >+<!ENTITY bindingSetter.label "Sättare"> >+<!ENTITY bindingProperty.label "Egenskap"> >+<!ENTITY bindingHandlers.label "Hanterare"> >+<!ENTITY bindingHandlerEvent.label "Händelse"> >+<!ENTITY bindingHandlerPhase.label "Fas"> >+<!ENTITY bindingResources.label "Resurser"> >+<!ENTITY bindingResourceType.label "Typ"> >+<!ENTITY bindingResourceSrc.label "Källa"> >+<!ENTITY bindingSourceCode.label "Källkod"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/editing.dtd b/suite/extensions/inspector/resources/locale/zh-CN/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/editing.dtd >@@ -0,0 +1,21 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY mnEditCopy.accesskey "c"> >+<!ENTITY mnEditCopy.label "å¤å¶"> >+<!ENTITY mnEditCut.accesskey "t"> >+<!ENTITY mnEditCut.label "åªå"> >+<!ENTITY mnEditDelete.accesskey "d"> >+<!ENTITY mnEditDelete.label "å é¤"> >+<!ENTITY mnEditEdit.accesskey "e"> >+<!ENTITY mnEditEdit.label "ç¼è¾"> >+<!ENTITY mnEditInsert.accesskey "i"> >+<!ENTITY mnEditInsert.label "æå ¥"> >+<!ENTITY mnEditPaste.accesskey "p"> >+<!ENTITY mnEditPaste.label "ç²è´´"> >+<!ENTITY mnEditRedo.accesskey "r"> >+<!ENTITY mnEditRedo.label "éå"> >+<!ENTITY mnEditUndo.accesskey "u"> >+<!ENTITY mnEditUndo.label "æ¤é"> >+<!ENTITY mnEditInspectInNewWindow.label "卿°çªå£ä¸æ¥ç"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/inspector.dtd b/suite/extensions/inspector/resources/locale/zh-CN/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/inspector.dtd >@@ -0,0 +1,52 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.title "DOM æ¥çå¨"> >+<!ENTITY browserPanel.label "æµè§å¨"> >+<!ENTITY btnFind.tooltip "æ¾å°ä¸ä¸ªèç¹æ¥çå ¶idï¼tagï¼æè 屿§"> >+<!ENTITY btnInspect.label "æ¥ç"> >+<!ENTITY btnSelecting.tooltip "æ¾å°ä¸ä¸ªèç¹ï¼ç¹å»ä»¥æ¥çå®"> >+<!ENTITY bxDocPanel.title "ææ¡£"> >+<!ENTITY bxObjectPanel.title "对象"> >+<!ENTITY closeCmd.key "W"> >+<!ENTITY cmdClearSearch.label "æ¸ ç©º"> >+<!ENTITY cmdClose.accesskey "C"> >+<!ENTITY cmdClose.label "å ³é"> >+<!ENTITY cmdCopy.accesskey "C"> >+<!ENTITY cmdCopy.label "å¤å¶"> >+<!ENTITY cmdCopySearchItemAll.label "å ¨é¨å¤å¶"> >+<!ENTITY cmdCopySearchItemLine.label "å¤å¶è¡"> >+<!ENTITY cmdCut.accesskey "t"> >+<!ENTITY cmdCut.label "åªå"> >+<!ENTITY cmdDelete.accesskey "D"> >+<!ENTITY cmdDelete.label "å é¤"> >+<!ENTITY cmdEditSearchItem.label "ç¼è¾..."> >+<!ENTITY cmdExit.accesskey "x"> >+<!ENTITY cmdExit.label "éåº"> >+<!ENTITY cmdHideSearchItems.label "éè"> >+<!ENTITY cmdPaste.accesskey "P"> >+<!ENTITY cmdPaste.label "ç²è´´"> >+<!ENTITY cmdRedo.accesskey "R"> >+<!ENTITY cmdRedo.label "éå"> >+<!ENTITY cmdRunSearch.accesskey "R"> >+<!ENTITY cmdRunSearch.label "è¿è¡..."> >+<!ENTITY cmdSaveSearchItemText.label "ä¿å..."> >+<!ENTITY cmdShowOpenURLDialog.accesskey "U"> >+<!ENTITY cmdShowOpenURLDialog.label "æ¥çä¸ä¸ªURL..."> >+<!ENTITY cmdToggleBrowser.label "æµè§å¨"> >+<!ENTITY cmdToggleSearch.label "æç´¢ç»æ"> >+<!ENTITY cmdUndo.accesskey "U"> >+<!ENTITY cmdUndo.label "æ¤é"> >+<!ENTITY cmdViewSearchItem.label "æ¥ç..."> >+<!ENTITY mnEdit.accesskey "E"> >+<!ENTITY mnEdit.label "ç¼è¾"> >+<!ENTITY mnFile.accesskey "F"> >+<!ENTITY mnFile.label "æä»¶"> >+<!ENTITY mnSearch.accesskey "S"> >+<!ENTITY mnSearch.label "æç´¢"> >+<!ENTITY mnSearchPlugins.accesskey "E"> >+<!ENTITY mnSearchPlugins.label "æ©å±"> >+<!ENTITY mnView.accesskey "v"> >+<!ENTITY mnView.label "æ¥ç"> >+<!ENTITY thDOMNodes.label "DOM èç¹"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/inspector.properties b/suite/extensions/inspector/resources/locale/zh-CN/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/inspector.properties >@@ -0,0 +1,35 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+#Translated with MozillaTranslator version 5.03 >+#Sat Feb 25 21:48:21 CST 2006 >+styleRulePropertyValue.message=\u8BF7\u8F93\u5165\u5C5E\u6027\u503C\uFF1A >+newAttribute.title=\u65B0\u5EFA\u5C5E\u6027 >+styleRuleEditProperty.title=\u7F16\u8F91\u6837\u5F0F\u89C4\u5219 >+inspectWindow.noDocuments.message=(\u65E0) >+enterAttrName.message=\u8BF7\u8F93\u5165\u5C5E\u6027\u540D\u79F0\uFF1A >+inspectURL.message=\u8BF7\u8F93\u5165\u4E00\u4E2AURL\uFF1A >+findNodesDocumentEnd.message=\u5DF2\u8FBE\u5230\u6587\u6863\u5C3E\u90E8\u3002 >+inspectURL.title=\u67E5\u770BURL >+editAttribute.title=\u7F16\u8F91\u5C5E\u6027 >+findNodesDocumentEnd.title=\u67E5\u627E\u8282\u70B9 >+sidebarInstalled=\u4FA7\u680F\u5DF2\u5B89\u88C5 >+inspectWindow.noDocuments.message = (None) >+12=\u7B26\u53F7 >+sidebar.title=DOM \u67E5\u770B\u5668 >+11=\u6587\u6863\u6BB5 >+10=\u6587\u6863\u7C7B\u578B >+enterAttrValue.message=\u8BF7\u8F93\u5165\u5C5E\u6027\u503C\uFF1A >+styleRulePropertyName.message=\u8BF7\u8F93\u5165\u5C5E\u6027\u540D\u79F0\uFF1A >+9=\u6587\u6863 >+8=\u8BF4\u660E >+7=\u5904\u7406\u6307\u4EE4 >+root.title=\u6807\u9898 >+6=\u5B9E\u4F53 >+5=\u5B9E\u4F53\u5F15\u7528 >+4=CDATA \u6BB5 >+3=\u6587\u5B57 >+2=\u5C5E\u6027 >+styleRuleNewProperty.title=\u65B0\u6837\u5F0F\u89C4\u5219 >+1=\u5143\u7D20 >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/prefs.dtd b/suite/extensions/inspector/resources/locale/zh-CN/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/prefs.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY Inspector.label "DOM æ¥çå¨"> >+<!ENTITY Sidebar.label "è¾¹æ "> >+<!ENTITY addNavigatorHooks.label "æ·»å ä¸ä¸æç¸å ³èåè³æµè§å¨"> >+<!ENTITY blinkDuration.label "éªçé´é"> >+<!ENTITY blinkSelectedElement.label "éªçéä¸å ç´ "> >+<!ENTITY blinkSpeed.label "éªçé度"> >+<!ENTITY borderColor.label "è¾¹æ¡é¢è²"> >+<!ENTITY borderWidth.label "è¾¹æ¡å®½åº¦"> >+<!ENTITY elementBlinking.label "éªçå ç´ "> >+<!ENTITY install.label "å®è£ "> >+<!ENTITY installHowTo.label "DOM æ¥çå¨ä¾§æ å°æªå®è£ ã请ç¹å»âå®è£ âæé®å°ä¹æ·»å è³ä¾§æ ã"> >+<!ENTITY invertColors.label "å转é¢è²"> >+<!ENTITY ms.label "ï¼æ¯«ç§ï¼"> >+<!ENTITY px.label "(px)"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/search/findFiles.dtd b/suite/extensions/inspector/resources/locale/zh-CN/search/findFiles.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/search/findFiles.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY cbRecurse.label "æç´¢åæä»¶å¤¹"> >+<!ENTITY findFiles.title "æç´¢æä»¶..."> >+<!ENTITY txSearchFor.label "æç´¢ï¼"> >+<!ENTITY txSearchPath.label "æç´¢å°ï¼"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/search/junkImgs.dtd b/suite/extensions/inspector/resources/locale/zh-CN/search/junkImgs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/search/junkImgs.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY junkImgs.title "æ¥æ¾å½å主é¢ä¸æªä½¿ç¨çå¾å..."> >+<!ENTITY junkImgsDescription "为äºè½ä½¿æç´¢åè½æ£å¸¸å·¥ä½ï¼æ¨å¿ é¡»æ¯å¨å½å主é¢ä¸æ¥çä¸ä¸ªå·²è½½å ¥ææçCSSæä»¶çææ¡£ãç¶åï¼æåºå½å主é¢çæ ¹å¨ç£çä¸çä½ç½®ã"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/zh-CN/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/tasksOverlay.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY inspectPageTaskCmd.accesskey "i"> >+<!ENTITY inspectPageTaskCmd.label "æ¥ç页é¢"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.label "DOM æ¥çå¨"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/zh-CN/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/viewers/boxModel.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY boxBorder.label "è¾¹æ¡"> >+<!ENTITY boxDimension.label "尺寸"> >+<!ENTITY boxMargin.label "页边è·"> >+<!ENTITY boxPadding.label "é´é"> >+<!ENTITY boxPosition.label "ä½ç½®"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/zh-CN/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/viewers/computedStyle.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY propertyName.label "屿§"> >+<!ENTITY propertyValue.label "å¼"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/zh-CN/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/viewers/dom.dtd >@@ -0,0 +1,42 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY ColumnsDialog.title "å"> >+<!ENTITY cmdBlink.label "å 亮å ç´ "> >+<!ENTITY cmdCopyXML.label "å¤å¶XML"> >+<!ENTITY cmdDeleteNode.label "å é¤"> >+<!ENTITY cmdFindNext.accesskey "n"> >+<!ENTITY cmdFindNext.label "æ¥æ¾ä¸ä¸ä¸ª"> >+<!ENTITY cmdFlashSelected.label "å 亮æéå ç´ "> >+<!ENTITY cmdInsertNode.label "æå ¥..."> >+<!ENTITY cmdInspectBrowser.label "æ¥çå å«çææ¡£"> >+<!ENTITY cmdSelectByClick.accesskey "s"> >+<!ENTITY cmdSelectByClick.label "ç¹å»éæ©å ç´ "> >+<!ENTITY cmdShowColumnsDialog.accesskey "c"> >+<!ENTITY cmdShowColumnsDialog.label "å..."> >+<!ENTITY cmdShowFindDialog.accelkey "f"> >+<!ENTITY cmdShowFindDialog.accesskey "f"> >+<!ENTITY cmdShowFindDialog.label "æ¥æ¾èç¹..."> >+<!ENTITY cmdShowPseudoClasses.accesskey "p"> >+<!ENTITY cmdShowPseudoClasses.label "设置伪类..."> >+<!ENTITY cmdToggleAnonContent.accesskey "a"> >+<!ENTITY cmdToggleAnonContent.label "æ¾ç¤ºå¿åå 容"> >+<!ENTITY cmdToggleAttributes.accesskey "r"> >+<!ENTITY cmdToggleAttributes.label "æ¾ç¤ºå±æ§"> >+<!ENTITY cmdToggleWhitespaceNodes.accesskey "W"> >+<!ENTITY cmdToggleWhitespaceNodes.label "æ¾ç¤ºç©ºç½èç¹"> >+<!ENTITY cmdToggleAccessibleNodes.label "Show Accessible Nodes"> >+<!ENTITY cmdToggleAccessibleNodes.accesskey "c"> >+<!ENTITY findNodes.title "æ¥æ¾èç¹"> >+<!ENTITY findNodesByAttr.label "屿§"> >+<!ENTITY findNodesByAttrValue.label "å¼"> >+<!ENTITY findNodesById.label "Id"> >+<!ENTITY findNodesByTag.label "æ è®°"> >+<!ENTITY findNodesCancel.label "åæ¶"> >+<!ENTITY findNodesDirection.label "æ¹å"> >+<!ENTITY findNodesDirectionDown.label "ä¸"> >+<!ENTITY findNodesDirectionUp.label "ä¸"> >+<!ENTITY findNodesFind.label "æ¥æ¾"> >+<!ENTITY findNodesSearchBy.label "æç´¢ï¼æ"> >+<!ENTITY pseudoClasses.title "伪类"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/zh-CN/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/viewers/domNode.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY namespaceURI.label "ååç©ºé´ URIï¼"> >+<!ENTITY nodeName.label "èç¹åç§°ï¼"> >+<!ENTITY nodeType.label "èç¹ç±»åï¼"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/zh-CN/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/viewers/jsObject.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY jsCopyValue.label "å¤å¶å¼"> >+<!ENTITY jsEval.desc "è¾å ¥ä¸ä¸ªJavascript 表达å¼ï¼åé "target" æ¯å½åéä¸ç屿§ãä»»ä½è¿åå¼å°ä¼å¨Javascript 对象è§å¾ä¸æ¾ç¤ºã"> >+<!ENTITY jsEval.label "è¿è¡ Javascript..."> >+<!ENTITY jsExecute.label "æ§è¡"> >+<!ENTITY jsProperty.label "屿§"> >+<!ENTITY jsValue.label "å¼"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/zh-CN/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/viewers/styleRules.dtd >@@ -0,0 +1,17 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY deleteSelectedRules.label "å é¤"> >+<!ENTITY disableSelectedRules.label "ç¦ç¨"> >+<!ENTITY miFindCSSRules.accesskey "F"> >+<!ENTITY miFindCSSRules.label "æç´¢CSSè§å..."> >+<!ENTITY newRules.label "æ°å»º"> >+<!ENTITY openSelectedFileInEditor.label "å¨ç¼è¾å¨ä¸æå¼æä»¶"> >+<!ENTITY styleRule.label "è§å"> >+<!ENTITY styleRuleLineNumber.label "è¡"> >+<!ENTITY styleRulePropName.label "屿§"> >+<!ENTITY styleRulePropPriority.label "ä¼å 级"> >+<!ENTITY styleRulePropValue.label "å¼"> >+<!ENTITY styleRuleURI.label "æä»¶"> >+<!ENTITY toggleSelectedImportant.label "忢 !important"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/zh-CN/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/viewers/stylesheets.dtd >@@ -0,0 +1,6 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY sheetLocation.label "æ ·å¼è¡¨å"> >+<!ENTITY sheetRules.label "è§å"> >diff --git a/suite/extensions/inspector/resources/locale/zh-CN/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/zh-CN/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-CN/viewers/xblBindings.dtd >@@ -0,0 +1,13 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!ENTITY bindingContent.label "å 容"> >+<!ENTITY bindingGetter.label "å弿¹æ³"> >+<!ENTITY bindingHandlers.label "å¤çæ¹æ³"> >+<!ENTITY bindingMethods.label "æ¹æ³"> >+<!ENTITY bindingProperties.label "屿§"> >+<!ENTITY bindingProperty.label "屿§"> >+<!ENTITY bindingResources.label "èµæº"> >+<!ENTITY bindingSetter.label "è®¾å¼æ¹æ³"> >+<!ENTITY bindingSourceCode.label "æºä»£ç "> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/editing.dtd b/suite/extensions/inspector/resources/locale/zh-TW/editing.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/editing.dtd >@@ -0,0 +1,22 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY mnEditUndo.label "復å"> >+<!ENTITY mnEditUndo.accesskey "u"> >+<!ENTITY mnEditRedo.label "åæ¶ã復åã"> >+<!ENTITY mnEditRedo.accesskey "r"> >+<!ENTITY mnEditCut.label "åªä¸"> >+<!ENTITY mnEditCut.accesskey "t"> >+<!ENTITY mnEditCopy.label "è¤è£½"> >+<!ENTITY mnEditCopy.accesskey "c"> >+<!ENTITY mnEditPaste.label "è²¼ä¸"> >+<!ENTITY mnEditPaste.accesskey "p"> >+<!ENTITY mnEditInsert.label "æå ¥"> >+<!ENTITY mnEditInsert.accesskey "i"> >+<!ENTITY mnEditEdit.label "編輯"> >+<!ENTITY mnEditEdit.accesskey "e"> >+<!ENTITY mnEditDelete.label "åªé¤"> >+<!ENTITY mnEditDelete.accesskey "d"> >+<!ENTITY mnEditInspectInNewWindow.label "以æ°è¦çªæª¢è¦"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/inspector.dtd b/suite/extensions/inspector/resources/locale/zh-TW/inspector.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/inspector.dtd >@@ -0,0 +1,53 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY Inspector.title "DOM è§å¯å¨"> >+<!ENTITY thDOMNodes.label "DOM ç¯é»"> >+<!ENTITY btnInspect.label "è§å¯"> >+<!ENTITY bxDocPanel.title "æä»¶"> >+<!ENTITY bxObjectPanel.title "ç©ä»¶"> >+<!ENTITY btnSelecting.tooltip "é»é¸ç¯é»ä»¥è§å¯ä¹"> >+<!ENTITY btnFind.tooltip "以 id, tag, æ attribute ä¾è§å¯ç¯é»"> >+<!ENTITY mnFile.label "æªæ¡"> >+<!ENTITY mnFile.accesskey "f"> >+<!ENTITY cmdShowOpenURLDialog.label "è§å¯ç¶²å (URL)..."> >+<!ENTITY cmdShowOpenURLDialog.accesskey "u"> >+<!ENTITY cmdClose.label "éé"> >+<!ENTITY cmdClose.accesskey "c"> >+<!ENTITY cmdExit.label "çµæ"> >+<!ENTITY cmdExit.accesskey "x"> >+<!ENTITY mnEdit.label "編輯"> >+<!ENTITY mnEdit.accesskey "e"> >+<!ENTITY cmdUndo.label "復å"> >+<!ENTITY cmdUndo.accesskey "u"> >+<!ENTITY cmdRedo.label "åæ¶ã復åã"> >+<!ENTITY cmdRedo.accesskey "r"> >+<!ENTITY cmdCut.label "åªä¸"> >+<!ENTITY cmdCut.accesskey "t"> >+<!ENTITY cmdCopy.label "è¤è£½"> >+<!ENTITY cmdCopy.accesskey "c"> >+<!ENTITY cmdPaste.label "è²¼ä¸"> >+<!ENTITY cmdPaste.accesskey "p"> >+<!ENTITY cmdDelete.label "åªé¤"> >+<!ENTITY cmdDelete.accesskey "d"> >+<!ENTITY mnSearch.label "æå°"> >+<!ENTITY mnSearch.accesskey "s"> >+<!ENTITY mnSearchPlugins.label "æ´å åè½"> >+<!ENTITY mnSearchPlugins.accesskey "e"> >+<!ENTITY cmdRunSearch.label "å·è¡..."> >+<!ENTITY cmdRunSearch.accesskey "r"> >+<!ENTITY mnView.label "檢è¦"> >+<!ENTITY mnView.accesskey "v"> >+<!ENTITY cmdToggleBrowser.label "ç覽å¨"> >+<!ENTITY cmdToggleSearch.label "æå°çµæ"> >+<!ENTITY cmdViewSearchItem.label "檢è¦..."> >+<!ENTITY cmdEditSearchItem.label "編輯..."> >+<!ENTITY cmdCopySearchItemLine.label "è¤è£½å®è¡"> >+<!ENTITY cmdCopySearchItemAll.label "è¤è£½å ¨é¨"> >+<!ENTITY cmdSaveSearchItemText.label "å²å..."> >+<!ENTITY cmdClearSearch.label "æ¸ é¤"> >+<!ENTITY cmdHideSearchItems.label "é±è"> >+<!ENTITY browserPanel.label "ç覽å¨"> >+<!ENTITY closeCmd.key "W"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/inspector.properties b/suite/extensions/inspector/resources/locale/zh-TW/inspector.properties >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/inspector.properties >@@ -0,0 +1,34 @@ >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+# Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb >+inspectURL.title=\u89c0\u5bdf\u7db2\u5740 URL >+inspectURL.message=\u8f38\u5165\u7db2\u5740 URL: >+inspectWindow.error.message=\u7121\u6cd5\u5207\u81f3\u8981\u6c42\u8996\u7a97\u3002 >+inspectWindow.error.title=\u89c0\u5bdf\u8996\u7a97\u767c\u751f\u932f\u8aa4 >+styleRuleNewProperty.title=\u65b0\u6a23\u5f0f\u898f\u5247 >+styleRuleEditProperty.title=\u7de8\u8f2f\u6a23\u5f0f\u898f\u5247 >+styleRulePropertyValue.message=\u8f38\u5165 Property \u8a2d\u5b9a\u503c: >+styleRulePropertyName.message=\u8f38\u5165 Property \u540d\u7a31: >+sidebar.title=DOM \u89c0\u5bdf\u5668 >+sidebarInstalled=\u8cc7\u8a0a\u65b9\u584a\u5217\u6a21\u7d44\u5df2\u5b89\u88dd\u3002 >+newAttribute.title=\u65b0\u589e\u5c6c\u6027 >+editAttribute.title=\u7de8\u8f2f\u5c6c\u6027 >+enterAttrName.message=\u8f38\u5165\u5c6c\u6027\u540d\u7a31: >+enterAttrValue.message=\u8f38\u5165\u5c6c\u6027(Attribute)\u540d\u7a31: >+findNodesDocumentEnd.message=\u5df2\u5230\u6587\u4ef6\u5e95\u7aef\u3002 >+findNodesDocumentEnd.title=\u5c0b\u627e\u7bc0\u9ede >+root.title=\u6a19\u984c >+1=\u5143\u7d20(Element) >+2=\u5c6c\u6027(Attribute) >+3=\u6587\u5b57 >+4=CDATA \u5340\u6bb5 >+5=\u5be6\u9ad4\u53c3\u8003(Entity Ref) >+6=\u5be6\u9ad4(Entity) >+7=\u8655\u7406\u6307\u4ee4 >+8=\u8a3b\u89e3 >+9=\u6587\u4ef6 >+10=\u6587\u4ef6\u578b\u614b >+11=\u6587\u4ef6\u7247\u6bb5 >+12=\u6ce8\u610f >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/prefs.dtd b/suite/extensions/inspector/resources/locale/zh-TW/prefs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/prefs.dtd >@@ -0,0 +1,19 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY Inspector.label "DOM è§å¯å¨"> >+<!ENTITY Sidebar.label "è³è¨æ¹å¡å"> >+<!ENTITY elementBlinking.label "éçé ç®"> >+<!ENTITY blinkSelectedElement.label "éçé¸åé ç®"> >+<!ENTITY borderColor.label "éæ¡é¡è²"> >+<!ENTITY borderWidth.label "éæ¡å¯¬åº¦"> >+<!ENTITY px.label "(px)"> >+<!ENTITY blinkDuration.label "éçéé"> >+<!ENTITY ms.label "(ms)"> >+<!ENTITY blinkSpeed.label "éçé度"> >+<!ENTITY invertColors.label "é¡è²åç¸"> >+<!ENTITY installHowTo.label "å°æªå®è£è³è¨æ¹å¡åä¸ç DOM è§å¯å¨æ¨¡çµãè«æãå®è£ã以å å°ä½ çè³è¨æ¹å¡åä¸ã"> >+<!ENTITY install.label "å®è£"> >+<!ENTITY addNavigatorHooks.label "å¨ç覽å¨ä¸å å ¥å³éµé¸å®"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/search/findFiles.dtd b/suite/extensions/inspector/resources/locale/zh-TW/search/findFiles.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/search/findFiles.dtd >@@ -0,0 +1,9 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY findFiles.title "å°æ¾æªæ¡..."> >+<!ENTITY txSearchFor.label "å°æ¾:"> >+<!ENTITY txSearchPath.label "å°æ¾è·¯å¾:"> >+<!ENTITY cbRecurse.label "æå°åè³æå¤¾"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/search/junkImgs.dtd b/suite/extensions/inspector/resources/locale/zh-TW/search/junkImgs.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/search/junkImgs.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY junkImgs.title "卿¤ä½æ¯ä¸»é¡ä¸æ¾å°æªç¨å°çåç"> >+<!ENTITY junkImgsDescription "è¦æ£å¸¸ä½¿ç¨éååè½ï¼ä½ å¿ é å è¼å ¥ä¸å使ç¨å°ä½æ¯ä¸»é¡ä¸ææCSSæªçæä»¶ï¼ç¶å¾é¸åå¯ä»¥æ¾å°ç®å使ç¨ç使¯ä¸»é¡çç£ç¢ç®éã"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/tasksOverlay.dtd b/suite/extensions/inspector/resources/locale/zh-TW/tasksOverlay.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/tasksOverlay.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY inspectorTaskCmd.label "DOM è§å¯å¨"> >+<!ENTITY inspectorTaskCmd.commandkey "i"> >+<!ENTITY inspectorTaskCmd.accesskey.ff "n"> >+<!ENTITY inspectorTaskCmd.accesskey "I"> >+<!ENTITY inspectPageTaskCmd.label "è§å¯é é¢"> >+<!ENTITY inspectPageTaskCmd.accesskey "i"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/viewers/boxModel.dtd b/suite/extensions/inspector/resources/locale/zh-TW/viewers/boxModel.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/viewers/boxModel.dtd >@@ -0,0 +1,10 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY boxPosition.label "æçä½ç½®"> >+<!ENTITY boxDimension.label "尺寸大å°"> >+<!ENTITY boxMargin.label "éç(Margin)"> >+<!ENTITY boxBorder.label "éæ¡(Border)"> >+<!ENTITY boxPadding.label "éè·(Padding)"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/viewers/computedStyle.dtd b/suite/extensions/inspector/resources/locale/zh-TW/viewers/computedStyle.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/viewers/computedStyle.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY propertyName.label "屬æ§"> >+<!ENTITY propertyValue.label "å §å«å¼"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/viewers/dom.dtd b/suite/extensions/inspector/resources/locale/zh-TW/viewers/dom.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/viewers/dom.dtd >@@ -0,0 +1,43 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY cmdShowFindDialog.label "å°æ¾ç¯é»..."> >+<!ENTITY cmdShowFindDialog.accesskey "f"> >+<!ENTITY cmdShowFindDialog.accelkey "f"> >+<!ENTITY cmdFindNext.label "å°æ¾ä¸ä¸å"> >+<!ENTITY cmdFindNext.accesskey "n"> >+<!ENTITY cmdToggleAnonContent.label "顯示æªå½åå §å®¹"> >+<!ENTITY cmdToggleAnonContent.accesskey "a"> >+<!ENTITY cmdToggleWhitespaceNodes.label "顯示空ç½ç¯é»"> >+<!ENTITY cmdToggleWhitespaceNodes.accesskey "W"> >+<!ENTITY cmdToggleAccessibleNodes.label "Show Accessible Nodes"> >+<!ENTITY cmdToggleAccessibleNodes.accesskey "c"> >+<!ENTITY cmdFlashSelected.label "éçå·²é¸é ç®"> >+<!ENTITY cmdToggleAttributes.label "顯示屬æ§"> >+<!ENTITY cmdToggleAttributes.accesskey "r"> >+<!ENTITY cmdSelectByClick.label "䏿¬¡é»é¸é ç®"> >+<!ENTITY cmdSelectByClick.accesskey "s"> >+<!ENTITY ColumnsDialog.title "æ¬"> >+<!ENTITY cmdShowColumnsDialog.label "æ¬..."> >+<!ENTITY cmdShowColumnsDialog.accesskey "c"> >+<!ENTITY cmdInsertNode.label "æå ¥..."> >+<!ENTITY cmdDeleteNode.label "åªé¤"> >+<!ENTITY cmdCopyXML.label "è¤è£½ XML"> >+<!ENTITY cmdBlink.label "éçé ç®"> >+<!ENTITY cmdInspectBrowser.label "è§å¯å §å«æä»¶"> >+<!ENTITY cmdShowPseudoClasses.label "è¨å®èæ¬é¡å¥..."> >+<!ENTITY cmdShowPseudoClasses.accesskey "p"> >+<!ENTITY pseudoClasses.title "èæ¬é¡å¥"> >+<!ENTITY findNodes.title "å°æ¾ç¯é»"> >+<!ENTITY findNodesById.label "Id"> >+<!ENTITY findNodesByTag.label "Tag"> >+<!ENTITY findNodesByAttr.label "Attr"> >+<!ENTITY findNodesByAttrValue.label "å §å«å¼"> >+<!ENTITY findNodesSearchBy.label "æå°æ¹å¼:"> >+<!ENTITY findNodesDirection.label "æ¹å"> >+<!ENTITY findNodesDirectionUp.label "å¾ä¸"> >+<!ENTITY findNodesDirectionDown.label "å¾ä¸"> >+<!ENTITY findNodesFind.label "å°æ¾"> >+<!ENTITY findNodesCancel.label "åæ¶"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/viewers/domNode.dtd b/suite/extensions/inspector/resources/locale/zh-TW/viewers/domNode.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/viewers/domNode.dtd >@@ -0,0 +1,8 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY nodeName.label "ç¯é»å稱:"> >+<!ENTITY namespaceURI.label "Namespace URI:"> >+<!ENTITY nodeType.label "ç¯é»åæ :"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/viewers/jsObject.dtd b/suite/extensions/inspector/resources/locale/zh-TW/viewers/jsObject.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/viewers/jsObject.dtd >@@ -0,0 +1,11 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY jsCopyValue.label "è¤è£½å §å«å¼"> >+<!ENTITY jsEval.label "å·è¡ Javascript..."> >+<!ENTITY jsProperty.label "屬æ§"> >+<!ENTITY jsValue.label "å §å«å¼"> >+<!ENTITY jsEval.desc "è¼¸å ¥ JavaScript éç®å¼ãè®æ¸ãtargetãæ¯ç®åæé¸çç©ä»¶ãä»»ä½å³åå¼é½æé¡¯ç¤ºå¨ JavaScript ç©ä»¶æª¢è¦å¨è£¡ã"> >+<!ENTITY jsExecute.label "å·è¡"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/viewers/styleRules.dtd b/suite/extensions/inspector/resources/locale/zh-TW/viewers/styleRules.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/viewers/styleRules.dtd >@@ -0,0 +1,18 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY miFindCSSRules.label "æå° CSS è¦å..."> >+<!ENTITY miFindCSSRules.accesskey "F"> >+<!ENTITY newRules.label "æ°å¢"> >+<!ENTITY deleteSelectedRules.label "åªé¤"> >+<!ENTITY disableSelectedRules.label "æ«å使ç¨"> >+<!ENTITY openSelectedFileInEditor.label "ç¨ç·¨è¼¯å¨éå"> >+<!ENTITY toggleSelectedImportant.label "åæ !important"> >+<!ENTITY styleRule.label "è¦å"> >+<!ENTITY styleRuleURI.label "æªæ¡"> >+<!ENTITY styleRuleLineNumber.label "è¡è"> >+<!ENTITY styleRulePropPriority.label "åªå é åº"> >+<!ENTITY styleRulePropName.label "屬æ§"> >+<!ENTITY styleRulePropValue.label "å §å«å¼"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/viewers/stylesheets.dtd b/suite/extensions/inspector/resources/locale/zh-TW/viewers/stylesheets.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/viewers/stylesheets.dtd >@@ -0,0 +1,7 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY sheetLocation.label "樣å¼è¡¨"> >+<!ENTITY sheetRules.label "è¦å"> >diff --git a/suite/extensions/inspector/resources/locale/zh-TW/viewers/xblBindings.dtd b/suite/extensions/inspector/resources/locale/zh-TW/viewers/xblBindings.dtd >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/locale/zh-TW/viewers/xblBindings.dtd >@@ -0,0 +1,14 @@ >+<!-- This Source Code Form is subject to the terms of the Mozilla Public >+ - License, v. 2.0. If a copy of the MPL was not distributed with this >+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> >+ >+<!-- Generated by MozLCDB v0.3, http://moztw.org/tools/mozlcdb --> >+<!ENTITY bindingContent.label "å §å®¹(Content)"> >+<!ENTITY bindingMethods.label " æå¡å½å¼(Method)"> >+<!ENTITY bindingProperties.label "屬æ§(Properties)"> >+<!ENTITY bindingGetter.label "è®åå½å¼(Getter)"> >+<!ENTITY bindingSetter.label "è¨å®å½å¼(Setter)"> >+<!ENTITY bindingProperty.label "屬æ§(Property)"> >+<!ENTITY bindingHandlers.label "èçå½å¼(Handlers)"> >+<!ENTITY bindingResources.label "è³æº(Resource)"> >+<!ENTITY bindingSourceCode.label "æºç¢¼(Source Code)"> >diff --git a/suite/extensions/inspector/resources/moz.build b/suite/extensions/inspector/resources/moz.build >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/moz.build >@@ -0,0 +1,7 @@ >+# vim: set filetype=python: >+# This Source Code Form is subject to the terms of the Mozilla Public >+# License, v. 2.0. If a copy of the MPL was not distributed with this >+# file, You can obtain one at http://mozilla.org/MPL/2.0/. >+ >+CONFIGURE_SUBST_FILES += ['locale/Makefile'] >+ >diff --git a/suite/extensions/inspector/resources/skin/classic/ImageSearchItem.gif b/suite/extensions/inspector/resources/skin/classic/ImageSearchItem.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f078b634b100382388b8b1c12c1fbcf2fea30678 >GIT binary patch >literal 122 >zc${<hbhEHb6krfwSj50^pFxv>;XlLtr2qf_A2@J;0R|L*vM@3*urTO=I3TqQ%=R9; >z?nD`Q{cPKNV_H?~iNkIpbH67lWzKvq&~oP%TRvA*Ni3sH!}ARn7d-#{vc-i**TYL| >T=60Vfr&fz~H{K{QGFSruFDNUw > >diff --git a/suite/extensions/inspector/resources/skin/classic/btnFind-dis.gif b/suite/extensions/inspector/resources/skin/classic/btnFind-dis.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..bc5e69795d0423988928f633ceed2a1cd59bb449 >GIT binary patch >literal 98 >zc${<hbhEHb6lD-)XkcKNI%o0!|Nj+#vM@3*Ff!;c00BsbfyuI`f92`7{E9QunIzZk >zymiy7Qp~(c(zWc=iD}tY^WvMX6?xqM+OuWl?a5CoL=z|MU{sqpaoK0iSP=#WYXDcq >BB@6%n > >diff --git a/suite/extensions/inspector/resources/skin/classic/btnFind.gif b/suite/extensions/inspector/resources/skin/classic/btnFind.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3433ac04d235210f2f640830d97e1f5a752c03f9 >GIT binary patch >literal 98 >zc${<hbhEHb6lD-)XkY+=|Ns9h{$ycfU|?j>0r5dH3`~|i{VPwu<yV}M&Lp{R=dGJw >ym15>qlCEW^PE5<Lnit=6t;pm4*PbmaZ%=+&A(}X02cz1=iOW87#)>d7SOWmQH6u6x > >diff --git a/suite/extensions/inspector/resources/skin/classic/btnSelecting-act.gif b/suite/extensions/inspector/resources/skin/classic/btnSelecting-act.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..90b80c3fba88f1376c93f9421635e816e377c6bb >GIT binary patch >literal 287 >zc${<hbhEHb6lD-)IKlt||NsA&kn)z3S4>UINJ&jkN={8oN=Zmej*Cx>jY~*LO-oKm >zO-creB*iBr#>FSZ#>Gd+#70HO#Kgs?re`Fjq$UDolak{TlNuWv85tRY1~R~a;!hSv >z1_l`h9S{d(Cj;vo1@)ek%t<j?OLAVXdNYf!BzF5Ii`zE5|F?7%cxe16F_3CZ$c&O` >z>pnC+T9da!hpD;2huvfDrA4keGMyZz$0V)q^_^u~#1?*=*-82E`5Y5zk!(+9R$l%N >z{`!XIBxY{$&Mv7b(q%a&99%+kgu16DhMBMnFBP6YwY<V+eo;}5wORc-`$YZq>ldo4 >YNblKesee#r=b@vArH>swqR3zk0Lutu1ONa4 > >diff --git a/suite/extensions/inspector/resources/skin/classic/btnSelecting-dis.gif b/suite/extensions/inspector/resources/skin/classic/btnSelecting-dis.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c5f5dea92b4d86018ce529457aa347b7d4cb6d6f >GIT binary patch >literal 279 >zc${<hbhEHb6lD-)IKlt||Ns9#bmIJpb61a_y>jf#<)f!B9XWMz>YT+(R&QFnW%rTO >zmkyu0c<AJXV`r}%J#+c$oyW(|T{(94^3gMwj-0-D_|yfUb_U!)@h1x-1A`cY4u}J? >zlYw>0f~7qvnUlg+Ey;Pk>dh>*lGyE=EN<KI{@>DAVA1iTWW$342UEP{c;fR!r}(V9 >z;cU`)g;n+j=OKriWh*<ECgwUQY`HW;H6r4MI0wffA%8Wc((=lx+Bi-Y{_+Ze9*&sc >zVoqTm-l@FJz3CG<`I+W1&FGyl+iXT&UXk_Esui>JHCL<+R#)NJy3KO^`n9|EitX8_ >Jzekb58UU5mc~$@b > >diff --git a/suite/extensions/inspector/resources/skin/classic/btnSelecting.gif b/suite/extensions/inspector/resources/skin/classic/btnSelecting.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d970f50d6a552704df1ff2c560c707099b3ef03f >GIT binary patch >literal 286 >zc$@(q0pb2fNk%w1VHE%s0K@<Q00030|NkyAk~%y;u(Gwq$I8LO#=O44y1c)+yS}%% >zyt1^n$I#iv$;`pT$G*YDyuZT7%FM*a$->3Qz{ADA!o<D6!n?k}y1l=+yS=u#yS2Ew >z|Ns900000000000A^8LW000~SEC2ui02Kfg000G>ASaAuX_8zjq-^V|?3xaAUAMA0 >z+dK{bw1{xnDEM?RTBG4;IwppS!k1eq4UjCv0?AAVNS)H5g#Zo-4K>CYAKnK5AfpCX >z+k*z>!oL6l02^yb0|gWqh!}r>gJJ^`6$p|Di;Q7b0}u)eoC}qJmv{pY1f>L@fOn!c >km2z@yJFI}Op)V<~v{ff00KC09wzjmv#2mxLFT)`KJ8(sR?f?J) > >diff --git a/suite/extensions/inspector/resources/skin/classic/iconImportant.gif b/suite/extensions/inspector/resources/skin/classic/iconImportant.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b5d346356825c8ea243c2fe16bb5ebb8c51f6055 >GIT binary patch >literal 65 >zc${<hbhEHb<YM4qn8?8JABg_{KXBjx0|SHNPZmZ71||j_Ae#Xs&%h)!rJrNM_FTCs >Ry=to^?gWOPmt<wI1^`675w-vT > >diff --git a/suite/extensions/inspector/resources/skin/classic/iconViewerList-dis.gif b/suite/extensions/inspector/resources/skin/classic/iconViewerList-dis.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6e26577721cd5ca6f45032dddaaf155916459d0f >GIT binary patch >literal 90 >zc${<hbhEHb6ky<En8?8J|NsA)GiL%x1_lPjpDc_F3``6<KsEzNo`Ffbr+?+_2mA{K >rw?tVx3Iu2D^Nlray6%}5zrF2U=(LPid$(%l&G0*Ed?G@Gfx#L8Ln9y9 > >diff --git a/suite/extensions/inspector/resources/skin/classic/iconViewerList.gif b/suite/extensions/inspector/resources/skin/classic/iconViewerList.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..82f7dff9b1485ac6ff7d35b2e2c18d714b9d0490 >GIT binary patch >literal 137 >zc${<hbhEHb6ky<E*v!Ci;J|_7=dS(#|NrjYyJyavX=`hXkB?_zVPU`lbU*}1F9VC+ >zh7+EzH5X@9_WoC>;7rM!b|gaP&_S;3>Lsl;yIxehW8&SsWBwU&9nso7ll8??&bhf> >T`slPGYJK?hveQ@H7#OSpTsbi9 > >diff --git a/suite/extensions/inspector/resources/skin/classic/inspector.css b/suite/extensions/inspector/resources/skin/classic/inspector.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/inspector.css >@@ -0,0 +1,6 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://global/skin"); >+@import url("chrome://inspector/content/inspector.css"); >diff --git a/suite/extensions/inspector/resources/skin/classic/inspectorWindow.css b/suite/extensions/inspector/resources/skin/classic/inspectorWindow.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/inspectorWindow.css >@@ -0,0 +1,45 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+@import url("chrome://navigator/skin"); >+@import url("chrome://browser/skin"); >+ >+#bxURLBar { >+ padding: 2px; >+} >+ >+#bxSearch { >+ height: 150px; >+} >+ >+#splPanels { >+ width: 5px; >+} >+ >+/* ::::: toolbar buttons ::::: */ >+ >+#btnSelecting { >+ list-style-image: url("chrome://inspector/skin/btnSelecting.gif"); >+} >+ >+#btnSelecting[checked="true"] { >+ list-style-image: url("chrome://inspector/skin/btnSelecting-act.gif"); >+} >+ >+#btnSelecting[disabled="true"] { >+ list-style-image: url("chrome://inspector/skin/btnSelecting-dis.gif"); >+} >+ >+#btnFind { >+ list-style-image: url("chrome://inspector/skin/btnFind.gif"); >+} >+ >+#btnFind[disabled="true"] { >+ list-style-image: url("chrome://inspector/skin/btnFind-dis.gif"); >+} >+ >+.viewer-list, .viewer-menu { >+ -moz-user-focus: ignore; >+} >diff --git a/suite/extensions/inspector/resources/skin/classic/panelset.css b/suite/extensions/inspector/resources/skin/classic/panelset.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/panelset.css >@@ -0,0 +1,34 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+panel[disabled="true"] > .viewer-pane-box-1 { >+ visibility: collapse; >+} >+ >+.viewer-menu, .viewer-list { >+ -moz-user-focus: normal; >+} >+ >+.viewer-list { >+ list-style-image: url("chrome://inspector/skin/iconViewerList.gif"); >+} >+ >+.viewer-list[disabled="true"] { >+ list-style-image: url("chrome://inspector/skin/iconViewerList-dis.gif"); >+} >+ >+.viewer-pane-toolbox { >+ border-right: none; >+} >+ >+.viewer-pane-box-2 { >+ border-left: 1px solid ThreeDShadow; >+ border-right: 1px solid ThreeDShadow; >+} >+ >+.viewer-pane-toolbox { >+ border-top: none; >+ border-bottom: none; >+} >+ >diff --git a/suite/extensions/inspector/resources/skin/classic/sidebar.css b/suite/extensions/inspector/resources/skin/classic/sidebar.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/sidebar.css >@@ -0,0 +1,9 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+tabpanels { >+ padding: 0px; >+} >\ No newline at end of file >diff --git a/suite/extensions/inspector/resources/skin/classic/titledSplitter.css b/suite/extensions/inspector/resources/skin/classic/titledSplitter.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/titledSplitter.css >@@ -0,0 +1,53 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+.titled-splitter { >+ border-top: 1px outset InactiveCaption; >+ border-bottom: 1px outset InactiveCaption; >+ background-color: InactiveCaption; >+ color: InactiveCaptionText; >+ cursor: default; >+} >+ >+box[orient="vertical"] > .titled-splitter { >+ cursor: default; >+} >+ >+.titledsplitter-container { >+ padding-bottom: 2px; >+} >+ >+.titledsplitter-dragbar { >+ min-height: 2px; >+ cursor: n-resize !important; >+} >+ >+.titledsplitter-titlebox { >+ padding: 0px 5px 0px 5px; >+} >+ >+.titledsplitter-text { >+ margin: 0px !important; >+ font-weight: bold; >+} >+ >+.titledsplitter-closebutton { >+ -moz-binding: none; >+ margin: 1px; >+ border: 1px outset ThreeDFace; >+ padding: 2px; >+ min-width: 0px; >+ background-color: ThreeDFace; >+} >+ >+.titledsplitter-closeimage { >+ list-style-image: url("chrome://inspector/skin/titledsplitter-close.gif"); >+} >+ >+.titledsplitter-closebutton:hover:active { >+ border-style: inset; >+ padding: 3px 1px 1px 3px; >+} >+ >+ >diff --git a/suite/extensions/inspector/resources/skin/classic/titledsplitter-close.gif b/suite/extensions/inspector/resources/skin/classic/titledsplitter-close.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a53eddd05915e614f8da16fef143b90bed243de7 >GIT binary patch >literal 58 >zc${<hbhEHb<YeGvXkY+=|Ns9h{$ycfU|?j>0r5dH3`~M7O&PP_T)XDk7-*?oBN-ga >Hz+epkddLmQ > >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/accessibleEvent/accessibleEvent.css b/suite/extensions/inspector/resources/skin/classic/viewers/accessibleEvent/accessibleEvent.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/accessibleEvent/accessibleEvent.css >@@ -0,0 +1,9 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin/viewers/accessibleTree/accessibleTree.css"); >+ >+#handlerOutput { >+ overflow: auto; >+} >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/accessibleEvents/accessibleEvents.css b/suite/extensions/inspector/resources/skin/classic/viewers/accessibleEvents/accessibleEvents.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/accessibleEvents/accessibleEvents.css >@@ -0,0 +1,21 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+treechildren::-moz-tree-checkbox(checked) { >+ list-style-image: url("chrome://global/skin/checkbox/cbox-check.gif"); >+} >+ >+#welHandlerEditor { >+ font-family: monospace; >+} >+ >+#welGrippyButton { >+ cursor: default; >+} >+ >+#welSplitter { >+ -moz-appearance: none; >+} >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/accessibleProps/accessibleProps.css b/suite/extensions/inspector/resources/skin/classic/viewers/accessibleProps/accessibleProps.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/accessibleProps/accessibleProps.css >@@ -0,0 +1,22 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+.textAttrsTextRange { >+ border-bottom: medium dotted blue; >+ padding: 7px; >+ border-bottom-left-radius: 16px; >+ border-bottom-right-radius: 16px; >+ line-height: 250%; >+ margin: 2px; >+} >+ >+.textAttrsTextRange:hover { >+ border-bottom: medium dotted red; >+} >+ >+.textAttrsTextRange[selected] { >+ border-bottom: medium groove purple; >+} >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/accessibleTree/accessibleTree.css b/suite/extensions/inspector/resources/skin/classic/viewers/accessibleTree/accessibleTree.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/accessibleTree/accessibleTree.css >@@ -0,0 +1,22 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+treechildren::-moz-tree-row(highlight) { >+ background-color: #feeecd; >+} >+ >+treechildren::-moz-tree-row(selected, highlight) { >+ background-color: #c0ffff; >+} >+ >+treechildren::-moz-tree-cell-text(highlight) { >+ color: black; >+} >+ >+treechildren::-moz-tree-cell-text(grayout) { >+ color: gray; >+ font-weight: bold; >+} >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/boxModel/boxModel.css b/suite/extensions/inspector/resources/skin/classic/viewers/boxModel/boxModel.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/boxModel/boxModel.css >@@ -0,0 +1,23 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+/* ::::: statistics ::::: */ >+ >+.nonzero { >+ font-weight: bold; >+} >+ >+groupbox:not(#boxBorder) textbox { >+ text-align: right; >+} >+ >+row { >+ -moz-box-align: baseline; >+} >+ >+#enclosingBox { >+ overflow: auto; >+} >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/dom/columnsDialog.css b/suite/extensions/inspector/resources/skin/classic/viewers/dom/columnsDialog.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/dom/columnsDialog.css >@@ -0,0 +1,26 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+#trColumns { >+ background-color: ThreeDFace; >+} >+ >+.column-selector { >+ border: 1px outset ThreeDFace; >+ padding: 2px; >+ background-color: ThreeDFace; >+ vertical-align: middle; >+} >+ >+.attr-column-selector, >+.attr-column-selector[focused="true"] { >+ margin: 0; >+ border: none; >+} >+ >+[col-dragging="true"] { >+ border: 1px solid ButtonText; >+} >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/dom/dom.css b/suite/extensions/inspector/resources/skin/classic/viewers/dom/dom.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/dom/dom.css >@@ -0,0 +1,58 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+/* :::::::: node type color coding :::::::: */ >+ >+treechildren::-moz-tree-cell-text(ACCESSIBLE_NODE) { >+ font-weight: bold; >+} >+ >+treechildren::-moz-tree-cell-text(ELEMENT_NODE) { >+ color: #000000; >+} >+ >+treechildren::-moz-tree-cell-text(ATTRIBUTE_NODE) { >+ color: #556b2f; >+} >+ >+treechildren::-moz-tree-cell-text(CDATA_SECTION_NODE), >+treechildren::-moz-tree-cell-text(TEXT_NODE) { >+ color: #0000AA; >+} >+ >+treechildren::-moz-tree-cell-text(COMMENT_NODE) { >+ color: #228b22; >+} >+ >+treechildren::-moz-tree-cell-text(DOCUMENT_NODE) { >+ color: #800080; >+} >+ >+treechildren::-moz-tree-cell-text(DOCUMENT_TYPE_NODE) { >+ color: #606000; >+} >+ >+treechildren::-moz-tree-cell-text(PROCESSING_INSTRUCTION_NODE) { >+ color: #808080; >+} >+ >+treechildren::-moz-tree-cell-text(anonymous) { >+ color: #ff0000; >+} >+ >+treechildren::-moz-tree-cell-text(selected, focus) { >+ color: #FFFFFF; >+} >+ >+/* :::::::: drag and drop insertion indicators :::::::: */ >+ >+treechildren::-moz-tree-column(dnd-insert-before) { >+ border-left: 2px solid #000000; >+} >+ >+treechildren::-moz-tree-column(dnd-insert-after) { >+ border-right: 2px solid #000000; >+} >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/dom/findDialog.css b/suite/extensions/inspector/resources/skin/classic/viewers/dom/findDialog.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/dom/findDialog.css >@@ -0,0 +1,5 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/domNode/domNode.css b/suite/extensions/inspector/resources/skin/classic/viewers/domNode/domNode.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/domNode/domNode.css >@@ -0,0 +1,13 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+@import url("chrome://inspector/content/extensions/treeEditable.css"); >+ >+.olNodeInfoLabel { >+ padding-right: 0.5em; >+} >+#olNodeInfo { >+ padding-bottom: 0.5em; >+} >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/styleRules/styleRules.css b/suite/extensions/inspector/resources/skin/classic/viewers/styleRules/styleRules.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/styleRules/styleRules.css >@@ -0,0 +1,21 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+@import url("chrome://inspector/content/extensions/treeEditable.css"); >+ >+#olcPropPriority { >+ list-style-image: url("chrome://inspector/skin/iconImportant.gif"); >+} >+ >+#olbStyleProps::-moz-tree-image(olcPropPriority, important) { >+ list-style-image: url("chrome://inspector/skin/iconImportant.gif"); >+} >+ >+/* ::::: default column widths ::::: */ >+ >+#olcLine { >+ width: 5em; >+} >+ >diff --git a/suite/extensions/inspector/resources/skin/classic/viewers/xblBindings/xblBindings.css b/suite/extensions/inspector/resources/skin/classic/viewers/xblBindings/xblBindings.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/classic/viewers/xblBindings/xblBindings.css >@@ -0,0 +1,6 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin/"); >+@import url("chrome://inspector/skin/viewers/dom/dom.css"); >diff --git a/suite/extensions/inspector/resources/skin/modern/ImageSearchItem.gif b/suite/extensions/inspector/resources/skin/modern/ImageSearchItem.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f078b634b100382388b8b1c12c1fbcf2fea30678 >GIT binary patch >literal 122 >zc${<hbhEHb6krfwSj50^pFxv>;XlLtr2qf_A2@J;0R|L*vM@3*urTO=I3TqQ%=R9; >z?nD`Q{cPKNV_H?~iNkIpbH67lWzKvq&~oP%TRvA*Ni3sH!}ARn7d-#{vc-i**TYL| >T=60Vfr&fz~H{K{QGFSruFDNUw > >diff --git a/suite/extensions/inspector/resources/skin/modern/btnFind-dis.gif b/suite/extensions/inspector/resources/skin/modern/btnFind-dis.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..bc5e69795d0423988928f633ceed2a1cd59bb449 >GIT binary patch >literal 98 >zc${<hbhEHb6lD-)XkcKNI%o0!|Nj+#vM@3*Ff!;c00BsbfyuI`f92`7{E9QunIzZk >zymiy7Qp~(c(zWc=iD}tY^WvMX6?xqM+OuWl?a5CoL=z|MU{sqpaoK0iSP=#WYXDcq >BB@6%n > >diff --git a/suite/extensions/inspector/resources/skin/modern/btnFind.gif b/suite/extensions/inspector/resources/skin/modern/btnFind.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3433ac04d235210f2f640830d97e1f5a752c03f9 >GIT binary patch >literal 98 >zc${<hbhEHb6lD-)XkY+=|Ns9h{$ycfU|?j>0r5dH3`~|i{VPwu<yV}M&Lp{R=dGJw >ym15>qlCEW^PE5<Lnit=6t;pm4*PbmaZ%=+&A(}X02cz1=iOW87#)>d7SOWmQH6u6x > >diff --git a/suite/extensions/inspector/resources/skin/modern/btnSelecting-act.gif b/suite/extensions/inspector/resources/skin/modern/btnSelecting-act.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..90b80c3fba88f1376c93f9421635e816e377c6bb >GIT binary patch >literal 287 >zc${<hbhEHb6lD-)IKlt||NsA&kn)z3S4>UINJ&jkN={8oN=Zmej*Cx>jY~*LO-oKm >zO-creB*iBr#>FSZ#>Gd+#70HO#Kgs?re`Fjq$UDolak{TlNuWv85tRY1~R~a;!hSv >z1_l`h9S{d(Cj;vo1@)ek%t<j?OLAVXdNYf!BzF5Ii`zE5|F?7%cxe16F_3CZ$c&O` >z>pnC+T9da!hpD;2huvfDrA4keGMyZz$0V)q^_^u~#1?*=*-82E`5Y5zk!(+9R$l%N >z{`!XIBxY{$&Mv7b(q%a&99%+kgu16DhMBMnFBP6YwY<V+eo;}5wORc-`$YZq>ldo4 >YNblKesee#r=b@vArH>swqR3zk0Lutu1ONa4 > >diff --git a/suite/extensions/inspector/resources/skin/modern/btnSelecting-dis.gif b/suite/extensions/inspector/resources/skin/modern/btnSelecting-dis.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c5f5dea92b4d86018ce529457aa347b7d4cb6d6f >GIT binary patch >literal 279 >zc${<hbhEHb6lD-)IKlt||Ns9#bmIJpb61a_y>jf#<)f!B9XWMz>YT+(R&QFnW%rTO >zmkyu0c<AJXV`r}%J#+c$oyW(|T{(94^3gMwj-0-D_|yfUb_U!)@h1x-1A`cY4u}J? >zlYw>0f~7qvnUlg+Ey;Pk>dh>*lGyE=EN<KI{@>DAVA1iTWW$342UEP{c;fR!r}(V9 >z;cU`)g;n+j=OKriWh*<ECgwUQY`HW;H6r4MI0wffA%8Wc((=lx+Bi-Y{_+Ze9*&sc >zVoqTm-l@FJz3CG<`I+W1&FGyl+iXT&UXk_Esui>JHCL<+R#)NJy3KO^`n9|EitX8_ >Jzekb58UU5mc~$@b > >diff --git a/suite/extensions/inspector/resources/skin/modern/btnSelecting.gif b/suite/extensions/inspector/resources/skin/modern/btnSelecting.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d970f50d6a552704df1ff2c560c707099b3ef03f >GIT binary patch >literal 286 >zc$@(q0pb2fNk%w1VHE%s0K@<Q00030|NkyAk~%y;u(Gwq$I8LO#=O44y1c)+yS}%% >zyt1^n$I#iv$;`pT$G*YDyuZT7%FM*a$->3Qz{ADA!o<D6!n?k}y1l=+yS=u#yS2Ew >z|Ns900000000000A^8LW000~SEC2ui02Kfg000G>ASaAuX_8zjq-^V|?3xaAUAMA0 >z+dK{bw1{xnDEM?RTBG4;IwppS!k1eq4UjCv0?AAVNS)H5g#Zo-4K>CYAKnK5AfpCX >z+k*z>!oL6l02^yb0|gWqh!}r>gJJ^`6$p|Di;Q7b0}u)eoC}qJmv{pY1f>L@fOn!c >km2z@yJFI}Op)V<~v{ff00KC09wzjmv#2mxLFT)`KJ8(sR?f?J) > >diff --git a/suite/extensions/inspector/resources/skin/modern/iconImportant.gif b/suite/extensions/inspector/resources/skin/modern/iconImportant.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b5d346356825c8ea243c2fe16bb5ebb8c51f6055 >GIT binary patch >literal 65 >zc${<hbhEHb<YM4qn8?8JABg_{KXBjx0|SHNPZmZ71||j_Ae#Xs&%h)!rJrNM_FTCs >Ry=to^?gWOPmt<wI1^`675w-vT > >diff --git a/suite/extensions/inspector/resources/skin/modern/iconViewerList-dis.gif b/suite/extensions/inspector/resources/skin/modern/iconViewerList-dis.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..55d087b488f6d34762494b1bbde5212a25596bbe >GIT binary patch >literal 141 >zc${<hbhEHb6ky<E*vtR||NsA=vS4jv-|XWTZnjQYFn#roiAy#B1sSjb#h)yU3=A9$ >zIv@_n3<egffD@jt1(sx0_WxI?5KPIOb|^!{<)Bb@^pY9Xw^VB1?L76!a5`VO(yI#f >X*biG}_I3H+N;6&&wf;sH3xhQP1m-dY > >diff --git a/suite/extensions/inspector/resources/skin/modern/iconViewerList.gif b/suite/extensions/inspector/resources/skin/modern/iconViewerList.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d95292f1b2f8c041d5b738cadf7e01c6662cdb24 >GIT binary patch >literal 113 >zc${<hbhEHb6ky<ESi}GV|Ns9lnKn1JvPRF^=I-6QKrT>F@h1x-0|Og_4oC$^Ed#Te >z#;!XmOFh4~?UmSnVE6k&Vr(o2ds8(gEDLYCt<J8MyU#58v26VL`BJM)?`*AdznT)1 >LWi|gS3xhQPyILwX > >diff --git a/suite/extensions/inspector/resources/skin/modern/iconViewerMenu-dis.gif b/suite/extensions/inspector/resources/skin/modern/iconViewerMenu-dis.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cc019420de9af1b5e7c02c03a0b2dcb35e41a685 >GIT binary patch >literal 65 >zc${<hbhEHb<Y3@qn8?5oT{gL8#=8Ii|1&T!DE?$&WME)o&;ha;K=KSsLR0!H7Yfah >SixE2MUf5T>m0yjO!5RQNV-Xbq > >diff --git a/suite/extensions/inspector/resources/skin/modern/iconViewerMenu.gif b/suite/extensions/inspector/resources/skin/modern/iconViewerMenu.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ed314dad0815b7aab8bbbe361537a1d2c7699490 >GIT binary patch >literal 58 >zc${<hbhEHbWM|-GXkdT>#h)yU3=E76Iv@^6hJi`2r=L@D!;5*HlkBRLrcC}hUxdLL >E00mGCC;$Ke > >diff --git a/suite/extensions/inspector/resources/skin/modern/inspector.css b/suite/extensions/inspector/resources/skin/modern/inspector.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/inspector.css >@@ -0,0 +1,6 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://global/skin"); >+@import url("chrome://inspector/content/inspector.css"); >diff --git a/suite/extensions/inspector/resources/skin/modern/inspectorWindow.css b/suite/extensions/inspector/resources/skin/modern/inspectorWindow.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/inspectorWindow.css >@@ -0,0 +1,45 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+@import url("chrome://navigator/skin"); >+@import url("chrome://browser/skin"); >+ >+#tbxInsToolbox { >+ border-bottom: none; >+} >+ >+#bxURLBar { >+ padding: 2px; >+} >+ >+#bxSearch { >+ height: 150px; >+} >+ >+/* ::::: toolbar buttons ::::: */ >+ >+#btnSelecting { >+ list-style-image: url("chrome://inspector/skin/btnSelecting.gif"); >+} >+ >+#btnSelecting[checked="true"] { >+ list-style-image: url("chrome://inspector/skin/btnSelecting-act.gif"); >+} >+ >+#btnSelecting[disabled="true"] { >+ list-style-image: url("chrome://inspector/skin/btnSelecting-dis.gif"); >+} >+ >+#btnFind { >+ list-style-image: url("chrome://inspector/skin/btnFind.gif"); >+} >+ >+#btnFind[disabled="true"] { >+ list-style-image: url("chrome://inspector/skin/btnFind-dis.gif"); >+} >+ >+.viewer-list, .viewer-menu { >+ -moz-user-focus: ignore; >+} >diff --git a/suite/extensions/inspector/resources/skin/modern/panelset.css b/suite/extensions/inspector/resources/skin/modern/panelset.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/panelset.css >@@ -0,0 +1,37 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+domi-panel[disabled="true"] > .viewer-pane-box-1 { >+ visibility: collapse; >+} >+ >+.viewer-menu, .viewer-list { >+ -moz-user-focus: normal; >+} >+ >+.viewer-list { >+ list-style-image: url("chrome://inspector/skin/iconViewerList.gif"); >+} >+ >+.viewer-list[disabled="true"] { >+ list-style-image: url("chrome://inspector/skin/iconViewerList-dis.gif"); >+} >+ >+.viewer-menu { >+ list-style-image: url("chrome://inspector/skin/iconViewerMenu.gif"); >+} >+ >+.viewer-menu[disabled="true"] { >+ list-style-image: url("chrome://inspector/skin/iconViewerMenu-dis.gif"); >+} >+ >+.viewer-menu > .toolbarbutton-menu-dropmarker { >+ display: none; >+} >+ >+.viewer-pane-toolbox { >+ border-top: none; >+ border-bottom: none; >+} >+ >diff --git a/suite/extensions/inspector/resources/skin/modern/sidebar.css b/suite/extensions/inspector/resources/skin/modern/sidebar.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/sidebar.css >@@ -0,0 +1,9 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+tabpanels { >+ padding: 0px; >+} >\ No newline at end of file >diff --git a/suite/extensions/inspector/resources/skin/modern/titledSplitter.css b/suite/extensions/inspector/resources/skin/modern/titledSplitter.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/titledSplitter.css >@@ -0,0 +1,54 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+.titled-splitter { >+ border: 1px solid #000000; >+ background-color: #5B7693; >+ cursor: default; >+} >+ >+box[orient="vertical"] > .titled-splitter { >+ cursor: default; >+} >+ >+.titledsplitter-container { >+ padding-bottom: 2px; >+} >+ >+.titledsplitter-dragbar { >+ border-top: 1px solid #92ABC9; >+ min-height: 2px; >+ cursor: n-resize; >+} >+ >+.titledsplitter-titlebox { >+ padding: 0px 5px 0px 5px; >+} >+ >+.titledsplitter-text { >+ margin: 0px !important; >+ font-weight: bold; >+ color: #ffffff; >+} >+ >+.titledsplitter-closebutton { >+ -moz-binding: none; >+ margin: 1px; >+ border: 1px outset #C7D0D9; >+ -moz-border-radius: 0px !important; >+ padding: 2px; >+ min-width: 0px; >+ background-color: #C7D0D9; >+} >+ >+.titledsplitter-closeimage { >+ list-style-image: url("chrome://inspector/skin/titledsplitter-close.gif"); >+} >+ >+.titledsplitter-closebutton:hover:active { >+ border-style: inset; >+ padding: 3px 1px 1px 3px; >+} >+ >+ >diff --git a/suite/extensions/inspector/resources/skin/modern/titledsplitter-close.gif b/suite/extensions/inspector/resources/skin/modern/titledsplitter-close.gif >new file mode 100644 >index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a53eddd05915e614f8da16fef143b90bed243de7 >GIT binary patch >literal 58 >zc${<hbhEHb<YeGvXkY+=|Ns9h{$ycfU|?j>0r5dH3`~M7O&PP_T)XDk7-*?oBN-ga >Hz+epkddLmQ > >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/accessibleEvent/accessibleEvent.css b/suite/extensions/inspector/resources/skin/modern/viewers/accessibleEvent/accessibleEvent.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/accessibleEvent/accessibleEvent.css >@@ -0,0 +1,5 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin/viewers/accessibleTree/accessibleTree.css"); >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/accessibleEvents/accessibleEvents.css b/suite/extensions/inspector/resources/skin/modern/viewers/accessibleEvents/accessibleEvents.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/accessibleEvents/accessibleEvents.css >@@ -0,0 +1,21 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+treechildren::-moz-tree-checkbox { >+ list-style-image: url("chrome://global/skin/checkbox/cbox.gif"); >+} >+ >+treechildren::-moz-tree-checkbox(checked) { >+ list-style-image: url("chrome://global/skin/checkbox/cbox-check.gif"); >+} >+ >+#welHandlerEditor { >+ font-family: monospace; >+} >+ >+#welGrippyButton { >+ cursor: default; >+} >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/accessibleProps/accessibleProps.css b/suite/extensions/inspector/resources/skin/modern/viewers/accessibleProps/accessibleProps.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/accessibleProps/accessibleProps.css >@@ -0,0 +1,22 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+.textAttrsTextRange { >+ border-bottom: medium dotted blue; >+ padding: 7px; >+ border-bottom-left-radius: 16px; >+ border-bottom-right-radius: 16px; >+ line-height: 250%; >+ margin: 2px; >+} >+ >+.textAttrsTextRange:hover { >+ border-bottom: medium dotted red; >+} >+ >+.textAttrsTextRange[selected] { >+ border-bottom: medium groove purple; >+} >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/accessibleTree/accessibleTree.css b/suite/extensions/inspector/resources/skin/modern/viewers/accessibleTree/accessibleTree.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/accessibleTree/accessibleTree.css >@@ -0,0 +1,22 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+treechildren::-moz-tree-row(highlight) { >+ background-color: #feeecd; >+} >+ >+treechildren::-moz-tree-row(selected, highlight) { >+ background-color: #c0ffff; >+} >+ >+treechildren::-moz-tree-cell-text(highlight) { >+ color: black; >+} >+ >+treechildren::-moz-tree-cell-text(grayout) { >+ color: gray; >+ font-weight: bold; >+} >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/boxModel/boxModel.css b/suite/extensions/inspector/resources/skin/modern/viewers/boxModel/boxModel.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/boxModel/boxModel.css >@@ -0,0 +1,23 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+/* ::::: statistics ::::: */ >+ >+.nonzero { >+ font-weight: bold; >+} >+ >+groupbox:not(#boxBorder) textbox { >+ text-align: right; >+} >+ >+row { >+ -moz-box-align: baseline; >+} >+ >+#enclosingBox { >+ overflow: auto; >+} >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/dom/columnsDialog.css b/suite/extensions/inspector/resources/skin/modern/viewers/dom/columnsDialog.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/dom/columnsDialog.css >@@ -0,0 +1,26 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+#trColumns { >+ background-color: #C7D0D9; >+} >+ >+.column-selector { >+ border: 1px outset #C7D0D9; >+ padding: 2px; >+ background-color: #C7D0D9; >+ vertical-align: middle; >+} >+ >+.attr-column-selector, >+.attr-column-selector[focused="true"] { >+ margin: 0; >+ border: none; >+} >+ >+[col-dragging="true"] { >+ border: 1px solid black; >+} >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/dom/dom.css b/suite/extensions/inspector/resources/skin/modern/viewers/dom/dom.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/dom/dom.css >@@ -0,0 +1,59 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+ >+/* :::::::: node type color coding :::::::: */ >+ >+treechildren::-moz-tree-cell-text(ACCESSIBLE_NODE) { >+ font-weight: bold; >+} >+ >+treechildren::-moz-tree-cell-text(ELEMENT_NODE) { >+ color: #000000; >+} >+ >+treechildren::-moz-tree-cell-text(ATTRIBUTE_NODE) { >+ color: #556b2f; >+} >+ >+treechildren::-moz-tree-cell-text(CDATA_SECTION_NODE), >+treechildren::-moz-tree-cell-text(TEXT_NODE) { >+ color: #0000AA; >+} >+ >+treechildren::-moz-tree-cell-text(COMMENT_NODE) { >+ color: #228b22; >+} >+ >+treechildren::-moz-tree-cell-text(DOCUMENT_NODE) { >+ color: #800080; >+} >+ >+treechildren::-moz-tree-cell-text(DOCUMENT_TYPE_NODE) { >+ color: #606000; >+} >+ >+treechildren::-moz-tree-cell-text(PROCESSING_INSTRUCTION_NODE) { >+ color: #808080; >+} >+ >+treechildren::-moz-tree-cell-text(anonymous) { >+ color: #ff0000; >+} >+ >+treechildren::-moz-tree-cell-text(selected, focus) { >+ color: #FFFFFF; >+} >+ >+/* :::::::: drag and drop insertion indicators :::::::: */ >+ >+treechildren::-moz-tree-column(dnd-insert-before) { >+ border-left: 2px solid #000000; >+} >+ >+treechildren::-moz-tree-column(dnd-insert-after) { >+ border-right: 2px solid #000000; >+} >+ >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/dom/findDialog.css b/suite/extensions/inspector/resources/skin/modern/viewers/dom/findDialog.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/dom/findDialog.css >@@ -0,0 +1,5 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/domNode/domNode.css b/suite/extensions/inspector/resources/skin/modern/viewers/domNode/domNode.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/domNode/domNode.css >@@ -0,0 +1,13 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+@import url("chrome://inspector/content/extensions/treeEditable.css"); >+ >+.olNodeInfoLabel { >+ padding-right: 0.5em; >+} >+#olNodeInfo { >+ padding-bottom: 0.5em; >+} >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/styleRules/styleRules.css b/suite/extensions/inspector/resources/skin/modern/viewers/styleRules/styleRules.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/styleRules/styleRules.css >@@ -0,0 +1,21 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+@import url("chrome://inspector/content/extensions/treeEditable.css"); >+ >+#olcPropPriority { >+ list-style-image: url("chrome://inspector/skin/iconImportant.gif"); >+} >+ >+#olbStyleProps::-moz-tree-image(olcPropPriority, important) { >+ list-style-image: url("chrome://inspector/skin/iconImportant.gif"); >+} >+ >+/* ::::: default column widths ::::: */ >+ >+#olcLine { >+ width: 5em; >+} >+ >diff --git a/suite/extensions/inspector/resources/skin/modern/viewers/xblBindings/xblBindings.css b/suite/extensions/inspector/resources/skin/modern/viewers/xblBindings/xblBindings.css >new file mode 100644 >--- /dev/null >+++ b/suite/extensions/inspector/resources/skin/modern/viewers/xblBindings/xblBindings.css >@@ -0,0 +1,6 @@ >+/* This Source Code Form is subject to the terms of the Mozilla Public >+ * License, v. 2.0. If a copy of the MPL was not distributed with this >+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ >+ >+@import url("chrome://inspector/skin"); >+@import url("chrome://inspector/skin/viewers/dom/dom.css");
Flags:
iannbugzilla
: review+
iannbugzilla
: approval-comm-release+
Actions:
View
|
Diff
|
Review
Attachments on
bug 1700003
:
9210606
| 9210611 |
9210616