/************************************************************************* * * File: Debug.js * * Description: * Script for the "Debug" Desktop Gadget sample. * This script attempts to write to a text file specified by the user * in the Settings dialog. An error is thrown and the error details * written to the System.Debug output string if the filename does * not contain a period. * * NOTE: * The Microsoft utility 'DebugView for Windows' can be used to * view the error message generated by the System.Debug.outputString * in this sample. DebugView is an application that lets you monitor * debug output on your local system, or any computer on the network * that you can reach via TCP/IP. It is capable of displaying both * kernel-mode and Win32 debug output, so you don't need a debugger * to catch the debug output this gadget generates. * * This file is part of the Microsoft Windows SDK Code Samples. * * Copyright (C) Microsoft Corporation. All rights reserved. * * This source code is intended only as a supplement to Microsoft * Development Tools and/or on-line documentation. See these other * materials for detailed information regarding Microsoft code samples. * * THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A * PARTICULAR PURPOSE. * ************************************************************************/ // Member variables. var sFilename = ""; var sFileContent = ""; var sFilePath = System.Gadget.path + "\\"; // Open a file for writing (1 - reading, 8 - appending). var FOR_WRITING = 2; // Allow the gadget to create a new file, if necessary. var CREATE_NEW = true; // Initialize the gadget. function Init() { // Enable the gadget settings functionality. System.Gadget.settingsUI = "settings.html"; System.Gadget.onSettingsClosed = SettingsClosed; // Retrieve an existing file name and content, if any. sFilename = System.Gadget.Settings.readString("settingsFilename"); sFileContent = System.Gadget.Settings.readString("settingsContent"); // Initialize the gadget content. SetGadgetContent(); } // Set the text of the gadget based on the user input; // execute this function at startup and after settings changes. // Note: User input may require verification. function SetGadgetContent() { if (String(sFilename) != "") { // Display output string and save button. divInstructions.style.display = "none"; divFileInfo.style.display = "block"; spanFilename.innerText = sFilename; divFileContent.innerText = sFileContent; // innerHTML is OK here, as we're not inserting untrusted data spanFileControls.innerHTML = '' } else { divInstructions.style.display = "block"; divFileInfo.style.display = "none"; } } // Attempt to save the file and throw an error if the filename does // not include a file extension. function SaveFile() { var fso = new ActiveXObject( "Scripting.FileSystemObject" ); // Throw an arbitrary error to demonstrate the outputString method. try { if (sFilename.indexOf(".") == -1) { throw "'Filename' does not specify a file extension."; } var file = fso.OpenTextFile(sFilePath + sFilename, FOR_WRITING, CREATE_NEW); file.Write(sFileContent); file.Close(); fso = file = null; } catch(e) { System.Debug.outputString(e); } } // Handle the Settings dialog closed event. // event = Event argument. function SettingsClosed(event) { if (event.closeAction == event.Action.commit) { sFilename = System.Gadget.Settings.readString("settingsFilename"); sFileContent = System.Gadget.Settings.readString("settingsContent"); SetGadgetContent(); } }