Selective response to a comment line in a computer file6009441Abstract A token identifies a special comment that includes information usable by a specific Web page editor. Tile information included within a special comment may include authoring state information, such as parameters used by "WEBBOT" components to provide extensions to hypertext markup language (HTML) features. When a Web page is opened, the editor parses each element on the page and determines if a comment is special by detecting the presence of a predefined token. In the preferred embodiment, the token is the word "WEBBOT." The information included within this special comment can include references to extensions to HTML tags, including those that are not known by the editor, and parameters required by HTML extensions. Since the special comment is in a format ignored by Web browsers, it does not impact upon the ability of a browser to render the page. Claims The invention in which an exclusive right is claimed is defined by the following: Description FIELD OF THE INVENTION
______________________________________
<HTML>
<BODY>
Hello there?<p>
<my.sub.-- new.sub.-- tag attribute="foo" other= "bar">
<Goodbye! <p>
<.backslash.BODY>
<.backslash.HTML>
______________________________________
should display: Hello there! Goodbye! and the tag that includes the phrase "my.sub.-- new.sub.-- tag" should simply be ignored, if the Web browser has not been programmed to recognize this tag. However, some Web browsers do not properly handle unrecognized HTML. Specifically, differing amounts of vertical white space (lines) can be displayed when the page contains an unknown HTML tag, and something other than a blank line can be generated on the page where the unknown HTML is encountered. Creation of new HTML tags is thus discouraged, since it will be necessary to continually update parse code in a browser (or editor) to handle the new tags. Accordingly, a better solution to this problem is required. SUMMARY OF THE INVENTION In accordance with the present invention, a method is defined for storing information in an HTML file, so that the information is recognized by and accessible to a specific Web page editor, but is generally ignored and not directly used by a Web browser or by other types of Web page editors. The method includes the step of incorporating the information in a comment that is stored in the HTML file. A special token is inserted in the comment that includes the information, to indicate that the comment includes the information. When the file is opened by the editor, the editor parses the file and identifies the comment that includes the information, in response to the special token. In this manner, the information in the comment is available to be used by the special editor. A visualization of the information included within the comment statement that comprises the special token is preferably rendered on the page being created or edited. The editor can use the information included in the comment in several different ways. For example, the information can represent an HTML tag that is not implemented by the Web browser. In addition, the information can be used to: (a) retain authoring data that is not directly usable by the Web browser; (b) to retain authoring data that is not directly usable by the Web browser, but is used by the specific Web page editor; and (c) to produce an HTML tag that is executable by the Web browser. When used to produce the HTML tag that is usable by the Web browser, the specific Web page editor processes the information included in the comment when the file is saved. Alternatively, this editor processes the HTML tag for use by the Web browser when the tag is subsequently accessed by the Web browser, i.e., when an HTML document containing the tag is opened by the browser. Another feature of the present invention provides for determining a checksum value for an HTML tag. By later comparing the checksum value previously determined to a corresponding current value, it is possible to determine whether the tag has been manually edited after it was created by the Web page editor. In one preferred form of the invention, the specific Web page editor processes the information included in the comment and saves an output in a related HTML file that includes only tags executable by the Web browser. In another preferred form of the invention, the specific Web page editor selectively saves the output in one of a plurality of alternative formats. The information stored in the comment can comprise an authoring state of the file, an executable module, or a parameter for the executable module. BRIEF DESCRIPTION OF THE DRAWING FIGURES The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same becomes better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein: FIG. 1 (prior art) is a flow chart showing how comments are typically processed in HTML documents; FIGS. 2A and 2B are flow charts illustrating the steps implemented in two different embodiments, by a Web page editor that embodies the present invention, when opening and reading a SmartHTML document file; FIG. 3 is a flow chart showing the steps for inserting SmartHTML into a page that is open in the editor; FIGS. 4A and 4B are flow charts respectively illustrating the steps for saving and/or expanding a SmartHTML page in the two different embodiments of FIGS. 2A and 2B; FIG. 5 is a schematic block diagram of a system used for executing a computer program that implements the present invention; FIG. 6 illustrates a visualization of a WebBot Table of Contents component that is rendered in a SmartHTML page; FIG. 7 is a WebBot TimeStamp Properties dialog box that is displayed when a user inserts the WebBot TimeStamp component into a SmartHTML page; FIG. 8 is a visualization of the WebBot TimeStamp as rendered in a SmartHTML page; and FIG. 9 is a visualization of a WebBot Search component as rendered in a SmartHTML page. DESCRIPTION OF THE PREFERRED EMBODIMENTS A first embodiment of the present invention was incorporated in a WYSIWYG HTML editor distributed under the trademark FrontPage. Version 1 of the FrontPage.TM. HTML Web page editor is distributed by Vermeer Technologies, Inc. This editor was further developed and distributed as Version 1.1 by Microsoft Corporation. Most WYSIWYG HTML editors enable users to create Web page content without the need to know the relatively arcane HTML tags that are required to create a desired visual effect. The FrontPage HTML editor employs the present to include information within an HTML document that is recognized and used by the FrontPage HTML editor, but which is generally ignored by a browser that opens that document and by other types of HTML editors. The present invention enables information of almost any type to be included within an HTML document while guaranteeing that the information, which is not recognized as a valid HTML tag for use by a Web browser, does not cause a problem when the Web browser opens and renders the document. An initial application of the present invention was to insert WebBot components, which are prepackaged application modules intended to run on the Web server, within a Web page. Each of the WebBot components has an appropriate authoring user interface in FrontPage. Fhis interface is typically a property setting dialog box that enables an author to select parameters used by the WebBot component that is being inserted into the document. Further, each of the WebBot components include programming that determines the nature of a visual representation of the WebBot component in the Web page. Generally, each WebBot component is visually rendered as an integral rectangular shaped object. A key advantage of the present invention is that the persistent state for authoring information, such as the parameters used by the WebBot components, can be stored in a Web page document without adversely affecting the capability of a Web browser to open and render the document. The present invention can be extended to enable an HTML editor to employ almost any arbitrary user interface in the Web document for manipulating the contents of the document, and then can automatically produce a different representation of the document internally intended for use by a Web browser. An even broader application of the present invention would be to enable information to be included in any source language program that can be selectively accessed when the source program file is opened in one environment, but to be ignored when the source file is opened by a different program in a different environment. By convention, almost all high level languages provide for inclusion of comments within source code. The comments are used for inserting an explanation of the various steps implemented by lines of the source code, and thus, to provide an explanation of the logic embodied in the code to facilitate debugging and changes. Various conventions are applied for marking a comment that is not to be compiled or interpreted. When an interpreter or compiler parses the source code, comments are thus generally ignored. In HTML, a comment tag begins with <:-- and ends with -->. Furthermore, as is the case in most other language source code, the accepted convention is that anything within an HTML comment tag is simply ignored by a Web browser. Thus, a Web browser should not even display any additional white space in a document corresponding to the location of the comment tag. The present invention makes use of this well-defined behavior for handling HTML comment tags. In this invention, special comment tags include a structured "pseudo-tag" that resides inside the comment tag. The FrontPage HTML editor is programmed to recognize a pseudo-tag in order to detect these special types of comment tags so that the information contained within the special comment tag can be used by the editor in one of several different ways. FIG. 1 (prior art) is a flow chart 10 that illustrates the logical steps followed by a conventional HTML Web browser when handling comment tags while opening an HTML document. In a block 12, the Web browser opens a Web page for reading, thus making the contents of the page available to the browser. Next, in a decision block 14, the logic determines if the end of the file in which the Web page is stored has been reached. If so, processing of the Web page terminates in a block 16. However, if the end of the file has not been reached, a block 18 provides for reading the next tag in the page. Each HTML tag encountered is checked to determine if it is a comment tag in a block 20, and if not, a block 22 provides for rendering the tag. When a non-comment tag is rendered, the nature of the HTML tag determines how the Web browser will handle the tag. Several examples of non-comment HTML tags are discussed above, in the Background of the Invention. After an HTML tag is rendered, the program returns to decision block 14. However, if a comment tag is detected in decision block 20, as noted in a block 24, the Web browser ignores all of the content of the comment tag, through the end of the comment. Thereafter, the logic returns to decision block 14. It should be apparent from flow chart 10 that comment tags are ignored by a browser, since by convention, they do not include any HTML tags that need to be rendered. The handling of comment tags is modified in the FrontPage HTML editor by programming the editor to recognize a "special" comment tag in which a predetermined token is included that identifies the comment tag as a pseudo-tag, which includes information that should be processed and made available for use by the editor. An example should help to clarify how the present invention identifies a special comment tag. One of the WebBot components available for use with the FrontPage HTML editor produces a time stamp on the Web page (using valid HTML) that is visible in a Web browser when the browser opens the Web page. If the user inserts this WebBot component into a Web page using the FrontPage editor, a TimeStamp WebBot properties dialog box 130 opens, as shown in FIG. 7. This dialog box is identified by a title bar 132 and includes several properties that are used by the WebBot TimeStamp component inserted into the Web page. In the example of the properties box shown in this Figure, a radio button 134 is checked to indicate that the user wants the TimeStamp WebBot component to display the date that the current Web page was last edited, when the page is next opened in a Web browser. Alternatively, a radio button 136 could have been checked to indicate that the WcbBot component should display the date the Web page was last automatically updated. A drop-down list box 138 is included in the properties dialog, so that the user can select a date format from among those that are listed when the control is activated. Similarly, a drop-down list box 140 displays the current time in several different time formats from which the user can make a selection. Once these parameters have been set, the user can accept and enter the parameters by selecting an OK button 142, or discard the properties chosen by selecting a CANCEL button 144. If necessary, help can be obtained by selecting a HELP button 146. Once the user has entered the parameters as described above, a rectangular representation of the TimeStamp is placed on the Web page being created or edited in the FrontPage editor. An exemplary visualization of the WebBot TimeStamp in the editor is illustrated in a rectangle 150, in FIG. 8. In rectangle 150, only the current date is illustrated. It should be noted that the specific visual representation of the WebBot TimeStamp rendered in the Web page within the Frontllage HTML editor is determined by the code associated with the WebBot TimeStamp component. The visualization of the TimeStamp in rectangle 150 is treated as an integral object to which formatting or editilig operations can be applied. However, the actual HTML representation of the information that identifies the WebBot TimeStamp component and the parameters used by it appear as follows:
______________________________________
-WEBBOT
BOT=TimeStamp
S-Type="EDITED"
S-Format="%B %d, %Y %I:%M %p"
>
______________________________________
In the preceding HTML, the special comment is identified by inclusion of the predetermined token "WEBBOT," which appears in the first line of the comment. This token, identifying the start of a pseudo-tag within the special comment, includes three structured parameters, including "BOT," "S-Type," and "S-Format." Although there are other types, use of the S- in these structured parameters indicates a string type. The TimeStamp WebBot properties selected in dialog box 130 discussed above define the parameters following the "S-Format" line of the information included within the special comment. The editor in FrontPage is programmed to recognize a special comment like that in the above example, and therefore processes the information included within the special comment, rather than ignoring the information as is done when the comment is processed by a Web browser or other type of Web page editor. Web pages that contain special comments (i.e., comment tags that include the special predefined token) are referred to in connection with the present invention as "SmartHTML pages." Referring now to FIG. 2A, a flow chart 30 illustrates the steps implemented in a first embodiment of the present invention when the FrontPage editor opens a SmartHTML page. She page is opened in a block 32, making the contents of the SmartHTML page available for editing. A decision block 34 determines if the end of the file has been reached, and if so, the process concludes in a block 36. However, if the end of the file has not yet been reached, a block 38 provides for reading the next HTML tag on the page. In a decision block 40, the editor determines if the HTML tag just read is a comment tag and if not, proceeds to render the HTML tag, as indicated in a block 42. In this step, the HTML tag is handled as a function of the type of procedure associated with the tag. The procedure then loops back to decision block 34. If a comment tag is detected in decision block 40, the editor proceeds to a decision block 44, where the editor determines if the comment tag includes the special predefined token. Although almost any word that is not a conventional word in the English language might be used for this purpose, in the preferred embodiment, the predefined token is "WEBBOT" as noted above. If the comment tag identified does not include the special token, the logic proceeds to a block 46, which provides for ignoring the comment, and then loops back to decision block 34. However, if the editor detects that a pseudo-tag is included based upon its detection of the special token in the comment, it proceeds to a block 48. As noted in this block, the editor parses the remainder of the special or structured comment and extracts any parameters that are included therein. Next, the editor calls any component rendering code referenced in the special comment, as provided in a block 50. The component rendering code can be compiled into the editor, or may comprise external code, such as the code included in one of the WebBot components, or may be code included in a module that is found on the server or on some other computer connected to the system. In a block 52, the editor produces output corresponding to the HTML preview representing the HTML produced or referenced by the information contained in the special comment. The HTML preview causes the editor to render a visualization of the referenced component in a block 54. As noted in the example provided for the WebBot TimeStamp component, the TimeStamp visualization is simply rectangle 150, which contains an exemplary time and/or date. Other component visualizations appropriate to the type of WebBot component referenced by the information in the special comment are alternatively presented on the SmartHTML page open in the editor. After block 54, the logic returns to decision block 34. It will be apparent that this technique enables the FrontPage editor to handle new types of HTML without being specifically programmed to recognize and process the new HTML extensions. A special comment tag can include the information needed for generating valid HTML code required to implement the new HTML extension on a Web page without the FrontPage editor being required to recognize that new extension. Instead, within the Web page view open in the FrontPage Web page editor, a component visualization represents the new HTML extension and provides the parameters necessary to generate the HTML code that is validly recognized in any browser able to handle the new extension. Two further examples will help to clarify how code or modules referenced in the information included within a special comment are handled by the FrontPage editor to create a visualization on the Web page that is open for editing, without requiring that the editor actually implement the code in the same mailer that it will be by a Web browser. In FIG. 6, a rectangle 120 includes a visualization for a WebBot Table Of Contents component. This WebBot component can be inserted into a home page, for example, to generate a table of contents that lists the title of each of the other pages referenced by links from the home page. However, the actual listing of the other pages is not implemented within the visual rendering of the Table of Contents object in the home page as it is displayed on the FrontPage editor. Instead, the WebBot Table Of Contents component that has been inserted into the page being edited is visually represented by rectangle 120 and by the generic text shown therein. Another WebBot component is used for producing a search form on a Web page opened by a Web browser. As shown in FIG. 9, a rectangle 160 is represented when the WebBot search component is inserted into a page being edited. Rectangle 160, like the other rendered visual representations of the components, is treated as an integral object, so that its component parts, which include a "Search For" text box 162, a Start Search button 164, and a Reset button 166, cannot be separately accessed. However, when a browser opens the Web page in which the WebBot search component has been inserted by the FrontPage editor, the actual search form is presented, so that text can be entered within the text box, and Start Search button 164 and Reset button 166 can be selected. Referring now to FIG. 2B, a second embodiment of the present invention is disclosed in a flow chart 30'. The second embodiment differs from the first embodiment in certain of the steps employed by the FrontPage editor when opening a SmartHTML page. Tile steps in the second embodiment that are identical to those of the first embodiment are indicated by the same reference numbers. Any step in the second embodiment that is similar to but not identical to a step in the first embodiment is indicated by adding a prime to the reference numeral, e.g., 44' versus 44, to distinguish between the two different embodiments. Steps that are entirely new and not included in the first embodiment are indicated in the second embodiment by new reference numerals. As in the first embodiment, when a page is opened for reading by the editor, successive tags are read to determine if the current tag is a comment tag. If a comment tag is detected in decision block 40, the logic proceeds to a block 44', which determines if the comment tag includes a special token and has a BeginSpan marker ("STARTSPAN"). If not, the comment is ignored, as indicated in block 46 however, if the comment tag includes the special token, e.g., "WEBBOT" and if it includes a BeginSpan marker, the logic proceeds to block 48. In this block, the editor parses the tag until the end of the structured comment and extracts any parameters that are included as part of the information therein. In a block 51, the editor reads a valid HTML that has been inserted within a spanning section. A spanning section begins with the BeginSpan marker and ends with the EndSpan marker. Thus, the special comment tag and the authoring information included therein is wrapped around a valid HTML, and may wrap around a new HTML tag that is not recognized by the FrontPage editor. Tile following example of a special comment tag that spans valid HTML should help to clarify how the spanning syntax is used:
______________________________________
-WEBBOT
BOT=TimeStamp
S-Type="EDITED"
S-Format="%B %d, %Y %I:%M %p"
STARTSPAN
>
<b>August 28, 1996 11:51 AM <.backslash.b>
<:--WEBBOT ENDSPAN-->
______________________________________
In the above example, the STARTSPAN marker is disposed in a special comment and is followed by valid HTML code generated by the WebBot TimeStamp component (in bold font). The span is terminated by the second special comment tag that includes the ENDSPAN marker. It should be noted that STARTSPAN and ENDSPAN markers can be inserted in a hierarehy of matched pairs, so that components can be nested within other components, thereby providing greater flexibility to this syntax. Next, in a block 53, the editor calculates a checksum on each valid HTML tag that is included between the BeginSpan and EndSpan markers. A decision block 55 determines if the checksum just calculated matches the checksum value that is included within the special comment tag in which the EndSpan marker is found. This check determines whether the HTML was automatically created by the FrontPage editor, which was aware of the extension represented by the HTML tag, or if it has been manually changed. In this maimer, manual edit changes within the syntax can be detected to facilitate automatic resynichronization of different versions of a SmartHTML page. A negative response to the determination made in decision block 55 leads to a block 57, wherein the editor renders the component visualization as discussed above. Thereafter, or if a positive result was obtained from decision block 55, the logic proceeds to a block 59 in which the HTML spanned by the special comment tag syntax is used as the output HTML, preview for the current component. The nature of the HTML preview is determined by the code associated with the HTML tag, In a block 61, the component is called to facilitate rendering the code associated with the component and/or running any other code referenced thereby. The result is provided in a block 63 wherein the component visualization is rendered in the page open within the FrontPage editor. The logic then returns to decision block 34. When editing a Web page using the FrontPage editor, components such as the WebBot components noted above can easily be inserted by simply selecting the component from a menu or toolbar. Details of the steps implemented during the insertion process are illustrated in a flow chart 60 in FIG. 3. The procedure begins with a block 62 in which the user chooses a component from a toolbar or menu to insert into a SmartHTML page. A decision block 64 determines if the component has settable options. An example of such a component is the WebBot TimeStamp component discussed above. If so, a block 66 presents the user interface for setting the options or parameters. As previously noted, FIG. 7 illustrates the dialog box presented to enable the user to set the WebBot TimeStamp component properties. Continuing with a block 68 in FIG. 3, the editor retrieves a preview string for the component that is being inserted as valid HTML. Alternatively, the editor can run the client side rendering code for the component. As a result, as indicated in a block 70, the component is rendered as an object in the editor. Tile visual representation of the component in the editor depends upon the nature of the component. Examples were discussed above, in regard to FIGS. 6, 8, and 9. The two embodiments discussed above in connection with FIGS. 2A and 2B also are respectively represented in the different steps implemented when the editor saves or expands a SmartLHTML page. Referring to FIG. 8A, a flow chart 80 illustrates the steps implemented by the first embodiment when saving or expanding a SmartHTML Web page. In a block 82, the editor iteratively processes the data structures within the SmartHTML page, processing each tag that has been entered on the page in succession. A decision block 84 determines if the end of page has been reached, and if so, the process terminates in a block 86. However, while further tags yet remain on the page to be processed, the next page element is obtained in a block 88. A decision block 90 determines if the next element is a WebBot component. If not, a block 92 provides for converting the current page element to a valid HTML equivalent and outputting that equivalent to the HTML data stream that will be saved in a file for subsequent access by a Web browser. Conversely, if the current page element is a WebBot component, a block 94 indicates that the options for the WebBot component are transferred into the special HTML comment tag and output into a SmartHTML data stream. The SmartHTML data stream can be stored either in a separate file that is used only by the FrontPage editor, but which is not provided for use by a browser, or can be incorporated within the same file for use by both the editor and the browser. If stored in a separate file, the FrontPage HTML editor will always open this separate file when changes are required in the Web page document. However, there are clearly advantages in storing the SmartHTML data stream that includes the special comment tags discussed above within the same file as all of the other HTML tags that will be accessed by a Web browser. Next, in a block 96, the FrontPage editor invokes the appropriate expand method for the WebBot component as specified by code associated with the component type that appears on the Web page. In a block 98, the expansion step expands the output from the component, producing valid HTML output. This HTML data stream is either stored in a file that will be opened by the browser, or is included within the same file as the SmartHTML data stream, as noted above. Thereafter, the logic loops back to block 88 to process the next element on the page, and continues looping until all tag elements have been processed on the SmartHTML Web page. The second embodiment employs a procedure for saving a page that incorporates the SmartHTML syntax used for spanning a valid HTML tag. Some of the steps employed in this process in the second embodiment are thus somewhat different than those in flow chart 80. Details of the method used in the second embodiment are illustrated in a flow chart 80' in FIG. 4B. Again, steps that are identical to those in the method shown in FIG. 4A are referenced by the same numbers. The first difference between the methods occurs in a block 91 after the editor has determined that the current page element is a WebBot component. In this block, as in the first embodiment, the options for the WebBot component are transferred into the SmartHTML comment tag form, but the SmartHTML comment tag is not output into the HTML data stream until the next step, i.e., in a block 93. However, in block 93, before outputting the comment tag, a STARTSPAN marker is added. For example, the SmartHTML special comment tag might read:
______________________________________
-WEBBOT="TIMESTAMP"
STARTSPAN
S-Type="EDITED"
S-Format="%m %d %y"-->
______________________________________
Next, in a block 96, the editor invokes the expand method (to be implemented either by the client or the server as appropriate for the specified type of WebBot component). This step generates the code that will be implemented by the Web browser. A block 98 indicates that the expansion output is valid HTML. Further, the valid HTML output is applied to the HTML data stream in this block. A block 99 provides for calculating a checksum value on the output HTML that was just expanded in the preceding step. Next, in a block 101, the editor generates a matching EndSpan marker and includes the checksum value just calculated. The result is output to the HTML data stream. For example, in connection with the WebBot TimeStamp component, the output to the HTML data stream might include the special comment:
______________________________________
<!--WEBBOT
BOT="TIMESTAMP"
checksum="13708"
ENDSPAN-->
______________________________________
The HTML data stream usable by the Web browser is stored in the same document as the SmartHTML data in the second embodiment, but in contrast to the first embodiment, the HTML, data stream includes the syntax that encompasses one or more valid HTML tags. The expansion output in block 98 of FIG. 4A or in block 101 of FIG. 4B can alternatively be applied as an input to a preprocessor module. An example of such a module is a Microsoft Corporation ACCESS.TM. database Internet assistant. Such Internet assistants can be used for producing valid HTML code based on data from database tables or from spreadsheets, depending upon the type of Internet assistant employed. Thus, the expansion output in blocks 98 or 101 can be formatted as an input code specific to the particular type of preprocessor that will use the code to produce valid HTML tags to access certain types of data in a spreadsheet, database, or in other application programs. While the present invention has been disclosed in connection with a Web page editor, it is also contemplated that it can be incorporated in other types of computer application programs. Computer programs typically comprise a plurality of machine instructions that are typically stored on a nonvolatile memory media, such as a floppy disk, a CD-ROM for distribution to end users. Computer programs can also be distributed over a network. The machine instructions comprising the computer program that implement the functions of the invention as described above will also likely be distributed in this manner and the invention is intended to encompass the machine instructions that cause a computer to implement the functions described above, regardless of the manner in or media on which the machine instructions are distributed. FIG. 5 illustrates a system 100 comprising components of a personal computer suitable for executing a computer program embodying the present invention. In FIG. 5, a processor 102 is coupled bidirectionally to a memory 104 that encompasses read only memory (ROM) and random access memory (RAM). ROM is typically used for storing processor specific machine code necessary to bootup the personal computer comprising system 100, to enable input and output functions, and to carry out other basic aspects of its operation. Prior to running any computer program, the machine language code comprising the program is loaded into RAM within memory 104 and then executed by processor 102. Processor 102 is coupled to a display 106 on which the visualization of the SmartHTML page discussed above is provided to a user. Typically, programs and data are retained in a nonvolatile memory media that are accessed by either a compact disk-read only memory (CD-ROM) drive, a hard drive, or a floppy disk drive, all generally indicated by reference numeral 108 in FIG. 5. A network interface 112 couples the processor to a network. As noted above, the present invention can be distributed for use on the personal computer comprising system 100 as machine instructions stored on a memory media such as a floppy disk 114 that is read by the floppy disk drive. The program would then typically be stored on the hard drive so that when the user elects to execute the program to carry out the present invention, the machine instructions can readily be loaded into memory 104. Control of the personal computer and selection of options and input of data are implemented using input devices 110, which typically comprise a keyboard and a pointing device such as a mouse (neither separately shown). Further details of system 100 and of the personal computer comprising it are not illustrated, since they are generally well known to those of ordinary skill in the art. Although the present invention has been described in connection with the preferred form of practicing it and modifications thereto, those of ordinary skill in the art will understand that many other modifications can be made thereto within the scope of the claims that follow. Accordingly, it is not intended that the scope of the invention in any way be limited by the above description, but instead be determined entirely by reference to the claims that follow.
|
Same subclass Same class Consider this |
||||||||||
