1 // Resizes the window to a custom size
2 function webdeveloper_customResizeWindow()
4 var contentWindow
= webdeveloper_getContentWindow();
6 window
.openDialog("chrome://webdeveloper/content/dialogs/resize.xul", "webdeveloper-resize-dialog", "centerscreen,chrome,modal", contentWindow
.outerWidth
, contentWindow
.outerHeight
, contentWindow
.innerWidth
, contentWindow
.innerHeight
);
9 // Displays the current window size
10 function webdeveloper_displayWindowSize()
12 var contentWindow
= webdeveloper_getContentWindow();
13 var stringBundle
= document
.getElementById("webdeveloper-string-bundle");
15 webdeveloper_message(stringBundle
.getString("webdeveloper_windowSize"), stringBundle
.getFormattedString("webdeveloper_displayWindowSizeResult", [contentWindow
.outerWidth
, contentWindow
.outerHeight
, contentWindow
.innerWidth
, contentWindow
.innerHeight
]));
18 // Displays the current window size in the title bar
19 function webdeveloper_displayWindowSizeInTitle(element
)
21 var contentDocument
= webdeveloper_getContentDocument();
23 // If the menu is checked
24 if(element
.getAttribute("checked"))
26 var contentWindow
= webdeveloper_getContentWindow();
28 contentDocument
.title
+= " - " + contentWindow
.outerWidth
+ "x" + contentWindow
.outerHeight
+ " [" + contentWindow
.innerWidth
+ "x" + contentWindow
.innerHeight
+ "]";
30 window
.addEventListener("resize", webdeveloper_updateWindowSizeInTitle
, false);
34 var title
= contentDocument
.title
;
36 contentDocument
.title
= title
.substring(0, title
.lastIndexOf(" - "));
38 // Try to remove the event listener
41 window
.removeEventListener("resize", webdeveloper_updateWindowSizeInTitle
, false);
49 webdeveloper_toggleStyleSheet(element
, "chrome://webdeveloper/content/stylesheets/empty.css", "webdeveloper-display-window-size-title");
52 // Resizes the window or viewport to the given width and height
53 function webdeveloper_resizeWindow(width
, height
, viewport
)
55 var windowX
= window
.screenX
;
56 var windowY
= window
.screenY
;
58 // If resizing the viewport
61 var contentWindow
= webdeveloper_getContentWindow();
63 contentWindow
.innerHeight
= height
;
64 contentWindow
.innerWidth
= width
;
68 window
.resizeTo(width
, height
);
71 window
.screenX
= windowX
;
72 window
.screenY
= windowY
;
75 // Updates the resize menu
76 function webdeveloper_updateResizeMenu(menu
, suffix
)
78 var contentWindow
= webdeveloper_getContentWindow();
79 var description
= null;
80 var descriptionPreference
= null;
82 var heightPreference
= null;
83 var menuItem
= document
.createElement("menuitem");
84 var resizeCount
= webdeveloper_getIntegerPreference("webdeveloper.resize.count", true);
85 var resizeSeparator
= menu
.getElementsByAttribute("id", "webdeveloper-resize-separator3-" + suffix
)[0];
87 var viewportHeight
= contentWindow
.innerHeight
;
88 var viewportPreference
= false;
89 var viewportWidth
= contentWindow
.innerWidth
;
91 var widthPreference
= null;
92 var windowHeight
= contentWindow
.outerHeight
;
93 var windowWidth
= contentWindow
.outerWidth
;
95 webdeveloper_configureElementByAppliedStyle(document
.getElementById("webdeveloper-display-window-size-title-" + suffix
), "checked", "webdeveloper-display-window-size-title");
96 webdeveloper_removeGeneratedMenuItems(menu
);
98 // Loop through the possible resize options
99 for(var i
= 1; i
<= resizeCount
; i
++)
101 description
= "webdeveloper.resize." + i
+ ".description";
102 height
= "webdeveloper.resize." + i
+ ".height";
103 viewport
= "webdeveloper.resize." + i
+ ".viewport";
104 width
= "webdeveloper.resize." + i
+ ".width";
106 // If the description, width and height are set
107 if(webdeveloper_isPreferenceSet(description
) && webdeveloper_isPreferenceSet(width
) && webdeveloper_isPreferenceSet(height
))
109 descriptionPreference
= webdeveloper_getStringPreference(description
, true);
111 // If the description is not blank
112 if(descriptionPreference
!= "")
114 heightPreference
= webdeveloper_getIntegerPreference(height
, true);
115 menuItem
= document
.createElement("menuitem");
116 viewportPreference
= webdeveloper_getBooleanPreference(viewport
, true);
117 widthPreference
= webdeveloper_getIntegerPreference(width
, true);
119 // If the resize attributes match the current size
120 if((viewportPreference
&& viewportWidth
== widthPreference
&& viewportHeight
== heightPreference
) || (!viewportPreference
&& windowWidth
== widthPreference
&& windowHeight
== heightPreference
))
122 menuItem
.setAttribute("checked", true);
125 menuItem
.setAttribute("class", "webdeveloper-generated-menu");
126 menuItem
.setAttribute("label", descriptionPreference
);
127 menuItem
.setAttribute("oncommand", "webdeveloper_resizeWindow(" + widthPreference
+ ", " + heightPreference
+ ", " + viewportPreference
+ ")");
128 menuItem
.setAttribute("type", "radio");
130 menu
.insertBefore(menuItem
, resizeSeparator
);
136 // Updates the window size in the title bar
137 function webdeveloper_updateWindowSizeInTitle()
139 var contentDocument
= webdeveloper_getContentDocument();
140 var contentWindow
= webdeveloper_getContentWindow();
141 var title
= contentDocument
.title
;
143 contentDocument
.title
= title
.substring(0, title
.lastIndexOf(" - ")) + " - " + contentWindow
.outerWidth
+ "x" + contentWindow
.outerHeight
+ " [" + contentWindow
.innerWidth
+ "x" + contentWindow
.innerHeight
+ "]";
147 function webdeveloper_zoom(zoomIn
)
149 var documentList
= webdeveloper_getDocuments(webdeveloper_getContentWindow());
150 var documentLength
= documentList
.length
;
152 var imageList
= null;
153 var pageDocument
= null;
155 // Loop through the documents
156 for(var i
= 0; i
< documentLength
; i
++)
158 pageDocument
= documentList
[i
];
159 imageList
= pageDocument
.images
;
161 webdeveloper_zoomText(pageDocument
.documentElement
, zoomIn
, factor
);
162 webdeveloper_zoomImages(imageList
, zoomIn
, factor
);
167 function webdeveloper_zoomImages(imageList
, zoomIn
, factor
)
171 var imageLength
= imageList
.length
;
174 // Loop through the images
175 for(var i
= 0; i
< imageLength
; i
++)
177 image
= imageList
[i
];
178 height
= image
.height
;
181 // If the width and height are set
187 image
.setAttribute("width", (width
* factor
));
188 image
.setAttribute("height", (height
* factor
));
192 image
.setAttribute("width", (width
/ factor
));
193 image
.setAttribute("height", (height
/ factor
));
203 function webdeveloper_zoomText(node
, zoomIn
, factor
)
205 var computedStyle
= node
.ownerDocument
.defaultView
.getComputedStyle(node
, null);
207 // If the computed style is set
210 var childNode
= null;
211 var childNodeList
= node
.childNodes
;
212 var childNodeLength
= childNodeList
.length
;
213 var fontSize
= computedStyle
.getPropertyCSSValue("font-size");
214 var lineHeight
= computedStyle
.getPropertyCSSValue("line-height");
216 // Loop through the child nodes
217 for(var i
= 0; i
< childNodeLength
; i
++)
219 childNode
= childNodeList
[i
];
221 // If this is an element
222 if(childNode
.nodeType
== Node
.ELEMENT_NODE
)
224 webdeveloper_zoomText(childNode
, zoomIn
, factor
);
228 // If the font size is set and is in pixels
229 if(fontSize
&& fontSize
.primitiveType
== CSSPrimitiveValue
.CSS_PX
)
234 node
.style
.fontSize
= (fontSize
.getFloatValue(CSSPrimitiveValue
.CSS_PX
) * factor
) + "px";
238 node
.style
.fontSize
= (fontSize
.getFloatValue(CSSPrimitiveValue
.CSS_PX
) / factor
) + "px";
242 // If the line height is set and is in pixels
243 if(lineHeight
&& lineHeight
.primitiveType
== CSSPrimitiveValue
.CSS_PX
)
248 node
.style
.lineHeight
= (lineHeight
.getFloatValue(CSSPrimitiveValue
.CSS_PX
) * factor
) + "px";
252 node
.style
.lineHeight
= (lineHeight
.getFloatValue(CSSPrimitiveValue
.CSS_PX
) / factor
) + "px";