--- /dev/null
+// Clears the view generated source selection
+function webdeveloper_clearViewGeneratedSourceSelection(selection, generatedSourceWindow)
+{
+ selection.removeAllRanges();
+ generatedSourceWindow.document.getElementById("content").contentWindow.getSelection().removeAllRanges();
+}
+
+// Displays the view frame source menu
+function webdeveloper_displayViewFrameSourceMenu(menu)
+{
+ var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
+ var documentLength = documentList.length;
+ var menuItem = null;
+ var pageDocument = null;
+
+ webdeveloper_removeGeneratedMenuItems(menu);
+
+ // Loop through the documents
+ for(var i = 0; i < documentLength; i++)
+ {
+ menuItem = document.createElement("menuitem");
+ pageDocument = documentList[i];
+ menuItem.pageDocument = pageDocument;
+
+ menuItem.setAttribute("class", "webdeveloper-generated-menu");
+ menuItem.setAttribute("label", pageDocument.documentURI);
+ menuItem.setAttribute("oncommand", "webdeveloper_viewSource(this.pageDocument)");
+ menu.appendChild(menuItem);
+ }
+}
+
+// Displays the view source with menu
+function webdeveloper_displayViewSourceWithMenu(menu, suffix)
+{
+ var description = null;
+ var descriptionPreference = null;
+ var key = null;
+ var menuItem = document.createElement("menuitem");
+ var path = null;
+ var viewSourceWithCount = webdeveloper_getIntegerPreference("webdeveloper.view.source.with.count", true);
+ var viewSourceWithSeparator = menu.getElementsByAttribute("id", "webdeveloper-view-source-separator3-" + suffix)[0];
+
+ webdeveloper_removeGeneratedMenuItems(menu);
+
+ // If there are no view source with applications
+ if(viewSourceWithCount == 0)
+ {
+ viewSourceWithSeparator.setAttribute("hidden", true);
+ }
+ else
+ {
+ viewSourceWithSeparator.setAttribute("hidden", false);
+
+ // Loop through the view source with options
+ for(var i = 1; i <= viewSourceWithCount; i++)
+ {
+ description = "webdeveloper.view.source.with." + i + ".description";
+ key = "webdeveloper.view.source.with." + i + ".key";
+ path = "webdeveloper.view.source.with." + i + ".path";
+
+ // If the description and path are set
+ if(webdeveloper_isPreferenceSet(description) && webdeveloper_isPreferenceSet(path))
+ {
+ descriptionPreference = webdeveloper_getStringPreference(description, true);
+
+ // If the description is not blank
+ if(descriptionPreference != "")
+ {
+ menuItem = document.createElement("menuitem");
+ menuItem.setAttribute("class", "webdeveloper-generated-menu");
+ menuItem.setAttribute("label", descriptionPreference);
+ menuItem.setAttribute("oncommand", "webdeveloper_loadApplicationWithSource('" + webdeveloper_getStringPreference(path, true).replace(/\\/gi, "\\\\") + "')");
+
+ // If the key preference is set
+ if(webdeveloper_isPreferenceSet(key))
+ {
+ menuItem.setAttribute("key", key);
+ }
+
+ menu.insertBefore(menuItem, viewSourceWithSeparator);
+ }
+ }
+ }
+ }
+}
+
+// Loads the given application with the source of the current page
+function webdeveloper_loadApplicationWithSource(application)
+{
+ // If the application is set
+ if(application)
+ {
+ application = new WebDeveloperApplication(application);
+
+ application.launchWithSource(getBrowser().currentURI);
+ }
+}
+
+// Toggles the view frame source menu
+function webdeveloper_toggleViewFrameSourceMenu(suffix)
+{
+ var disabled = true;
+ var frameCount = webdeveloper_getContentWindow().frames.length;
+ var menu = document.getElementById("webdeveloper-view-frame-source-" + suffix);
+
+ // If there are frames
+ if(frameCount > 0)
+ {
+ disabled = false;
+ }
+
+ webdeveloper_configureElement(menu, "disabled", disabled);
+}
+
+// Adjusts the view source menu
+function webdeveloper_updateViewSourceMenu(menu, suffix)
+{
+ webdeveloper_toggleViewFrameSourceMenu(suffix);
+ webdeveloper_displayViewSourceWithMenu(menu, suffix);
+}
+
+// View the generated source
+function webdeveloper_viewGeneratedSource()
+{
+ var currentDocument = webdeveloper_getContentDocument();
+ var currentWindow = webdeveloper_getContentWindow();
+ var generatedSourceWindow = null;
+ var selection = currentWindow.getSelection();
+
+ selection.selectAllChildren(currentDocument.documentElement);
+
+ generatedSourceWindow = window.openDialog("chrome://global/content/viewPartialSource.xul", "_blank", "chrome,dialog=no,resizable,scrollbars", getBrowser().currentURI.spec, "charset=" + currentDocument.characterSet, currentWindow.getSelection(), "selection");
+
+ window.setTimeout(webdeveloper_clearViewGeneratedSourceSelection, 1500, selection, generatedSourceWindow);
+}
+
+// View source
+function webdeveloper_viewSource(frameDocument)
+{
+ // If the view source in tab preference is set to true
+ if(webdeveloper_getBooleanPreference("webdeveloper.view.source.tab", true))
+ {
+ var newTab = getBrowser().addTab("view-source:" + frameDocument.documentURI);
+
+ // If the open tabs in background preference is not set to true
+ if(!webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
+ {
+ getBrowser().selectedTab = newTab;
+ }
+ }
+ else
+ {
+ BrowserViewSourceOfDocument(frameDocument);
+ }
+}