This application claims the benefit of British Patent Application No. 0623333.2, filed on Nov. 23, 2006, which is incorporated herein by reference in its entirety.
The present invention relates to facilitating regression operations to software applications executable in a computer system, and more particularly, to providing a system-wide regression facility.
Individual software applications frequently provide a facility to regress, or undo, a user action. Such regression facilities are useful in the event that a user has performed an action by mistake, or changes their mind regarding a previously-executed action. Such a regression facility can be initiated by a user and is operable to revert a software application to a state which existed before a regressable action was performed.
For example, word processing software applications can include an “undo” option that will regress a most recently taken user action. Software applications can also retain a list of multiple regressable actions which a user can regress individually, one at a time, or as a set or subset. Since the state of a software application changes with each user action performed in sequence, regression of such user actions will normally be required to take place in a sequence which is the reverse of that sequence in which the actions were performed. For this reason, lists of multiple regressable actions will normally be stored in an ordered data structure.
While the provision of a regression facility in an individual software application is useful, it has the drawback that regression of actions is specifically designed and developed into each software application individually. This involves much duplication of effort in recording each and every user action separately within each software application. Furthermore, a regression facility existing entirely within a software application is operable to regress actions only during the execution of that software application. It is conceivable that a user undertakes an action within a software application before exiting the application. Regression of such an action will not be possible following the exiting of the application because the exit from the application inherently includes the closing of the regression facility.
It would therefore be advantageous to overcome these disadvantages by providing that a regression facility need not be provided in each and every software application, and to provide for a regression facility which is operable outside the scope of any one application.
The present invention accordingly provides, in a first aspect, a method of a regression manager for providing a regression operation to a software application executable in a computer system. The method can include the steps of: receiving registration information for a regression callback function from a software application, the regression callback function providing a regression facility for the software application: receiving an action parameter for a regressable action from the software application, the action parameter comprising an argument for use by the regression callback function to regress the regressable action; and in response to a request to provide a regression operation for the software application, calling the regression callback function for the software application.
In this way a centralized regression manager is operable to provide a regression facility for multiple applications suitable for execution on a computer system. Both the recording of information for regressable actions in a data structure, and the triggering of the regression operation using the registration information are undertaken externally to software applications themselves. Further, the specific implementation of the regression functionality is provided within each software application as a regression callback function, allowing the regression manager to be generalized without specific knowledge of how each action or regression is implemented. Additionally, since the regression facility exists logically separate from the software applications it is possible to regress actions even after the software application ceases to execute. For example, the regression stack can include entries for a software application which persist after the execution of the software application has ceased.
The method can further include storing each of the action parameters associated with an identifier of the software application in a data structure ordered according to the order of receipt of action parameter.
The calling the regression callback step can further include sending an argument of a most recent of the action parameters associated with the software application.
The method can further include removing the most recent of the action parameters associated with the software application from the data structure.
The regression manager can be incorporated into an operating system of the computer system.
The data structure can be a stack data structure.
The stack can be stored in a memory of the computer system.
The stack can be stored in a non-volatile memory of the computer system such that action parameters are persistent.
A request to provide a regression operation can originate from a source logically separated from the software application.
The present invention accordingly provides, in a second aspect, a regression manager apparatus for providing a regression operation to a software application executable in a computer system. The apparatus can include: a first receiver for receiving registration information for a regression callback function from a software application, the regression callback function providing a regression facility for the software application: a second receiver receiving an action parameter for a regressable action from the software application, the action parameter comprising an argument for use by the regression callback function to regress the regressable action; and a function caller for, in response to a request to provide a regression operation for the software application, calling the regression callback function for the software application.
The present invention accordingly provides, in a third aspect, an apparatus comprising: a central processing unit, a memory subsystem; an input/output subsystem; and a bus subsystem interconnecting the central processing unit, the memory subsystem, the input/output subsystem; and the regression manager apparatus described above.
The present invention accordingly provides, in a fourth aspect, a computer program element, or computer-readable medium, comprising computer program code that, when loaded into a computer system and executed thereon, causes the computer to perform the steps of a method as described above.
There are shown in the drawings, embodiments which are presently preferred. It is expressly noted, however, that the invention is not limited to the precise arrangements and instrumentalities shown.
a is a flowchart of a method in accordance with a preferred embodiment of the present invention;
b is a flowchart of a method of the regression operation of
a illustrates a transition of the regression stack of
b schematically illustrates a transition of the regression stack of
c schematically illustrates a transition of the regression stack of
The regression manager 202 includes a registry of application callback functions 204. The registry 204 comprises a data structure containing an entry for each of the software applications 218 for which a regression facility is provided by the regression manager 202. For example, the registry 204 can comprise a list, table or database. Each entry in the registry 204 includes an application identifier 206′, 206″, 206″′. Each application identifier 206′, 206″, 206″′ is a unique identifier for one of the software applications 218 to which regression facilities are provided. For example, the application identifier 206′, 206″, 206″′ can comprise a unique name or reference number for an application. Each entry in the registry 204 further includes a reference 208′, 208″, 208″′ to a regression callback function 222 in the software application corresponding to an application identifier 206′, 206″, 206″′. A regression callback function 222 is an application-specific function for implementing an application-specific regression for a user action in the application. For example, in a word processing application, a user action of typing the words “once upon a time” can be regressed by removal of the words “once upon a time”. A regression callback function 222 in such a word processing application is operable to receive, as an argument, the user action (i.e. the typing of the words “once upon a time”) and to regress that action (i.e., by removal of those words). Since each software application can provide potentially vastly different user actions, and can define correspondingly vastly different regression operations for such user actions, it is necessary that each of the software applications 218 provide a regression callback function 222 to undertake such application specific regressions. Such regression functions are well known in the art and are currently included in applications providing a regression facility, such as an ‘undo’ facility. The reference 208 to the regression callback function 222 is preferably a memory reference, such as a function pointer, to the regression callback function 222 in a software application.
The regression manager 202 further includes a regression stack 212. The regression stack 212 comprises an ordered data structure including an entry for each user action added by a software application. Each entry in the regression stack 212 corresponds to a user action in a software application which is regressable by a regression callback function 222 for the software application. Each entry in the regression stack 212 includes a unique application identifier 214′, 214″, 214″′ corresponding to an application identifier 206′, 206″, 206″′ stored in the registry 204. Each entry in the regression stack 212 further includes an action parameter 216′, 216″, 216″′. Each action parameter 216′, 216″, 216″′ is a parameter provided by a software application 218 for a particular user action in the software application. Each action parameter 216′, 216″, 216″′ is a representation of a regressable user action including an argument suitable for sending to a regression callback function 222 of the software application for regressing the action. The format of the action parameter 216 can be application specific and it is not necessary for the regression manager 202 to be able to interpret or understand the action parameter 216. In one embodiment, an action parameter 216′, 216″, 216″′ is a stream of bytes including user action information as an argument for an application regression callback function 222.
An action parameter 216′, 216″, 216″′ can include information relating to a state of the software application both before and after a user action is complete. For example, a user action in a file manager application to rename a file from the name “a.txt” to the name “b.txt” may be represented by an action parameter 216′ including details of the user action (i.e. a file rename action) and the state of the file before and after the action (i.e. the original name “a.txt” and the new name “b.txt”). This information is then useful by a regression callback function 222 to regress the user action. Such a regression can include, for example, renaming the file back to its original name of “a.txt”. Without the state information before and after the user action, the regression callback function 222 would be unable to determine what the file should be renamed to in an effective regression.
The regression manager 202 receives action parameters 216′, 216″, 216″′ from the software applications 218 and adds them to the regression stack 212 along with an identifier 214′, 214″, 214″′ of the particular originating application. Entries in the regression stack 212 are ordered according to the order of receipt of action parameters 216′, 216″, 216″′ from software applications.
While the regression stack 212 is described as a stack, it will be apparent to those skilled in the art that the regression stack 212 can alternatively be implemented using any ordered data structure such as an ordered list, table or database. Furthermore, in one embodiment the regression stack 212 has a limited size to reflect a limit to the number of regressable actions included in the regression stack 212. When the regression stack 212 reaches the size limit, the receipt of a new action parameter from a software application for addition to the regression stack 212 will cause the deletion of an oldest action parameter on the regression stack 212 to prevent exceeding the size limit. In one example of such an embodiment, the oldest action parameter for deletion from the regression stack 212 is selected as the oldest action parameter associated with the unique identifier of the software application for which a new action parameter is received.
In one embodiment, the regression stack 212 is stored in a memory of a computer system. In an alternative embodiment, the regression stack 212 is stored in a non-volatile storage of the computer system in order that the regression stack 212 can persist beyond the operation of the computer system.
The regression manager 202 further includes a regression operation 210 as a functional software or hardware component responsive to the selection of a user selectable regress option 220 in a software application. The user selectable regress option 220 is useful to trigger, by, for example, a user, the regression of a most recent user action in a software application. The user selectable regress option 220 can alternatively be provided logically separated from the software application, for example as part of a user interface for the operating system, as part of a separate software application or as part of a user interface associated with the regression manager 202. Once triggered, the regression operation 210 is operable to receive an application identifier for which a regression operation is required. The application identifier is associated with an application for which the user selectable regress option 220 is selected. The regression operation 210 then locates the most recent action parameter entry in the regression stack 212 for the identified application and calls the regression callback function 222 for the identified application sending an argument from the located action parameter. The regression callback function 222 is called via the registry 204 which includes a reference to the regression callback function 222 for the identified application. Subsequently, the regression operation 2110 removes the located action parameter 216 entry from the regressions stack 212. This removal is required as once an action parameter is regressed it cannot be further regressed and so must be removed as the latest action parameter 216 in the regression stack 212.
In this way a centralized regression manager 202 is operable to provide a regression facility for multiple applications suitable for execution on a computer system. Both the recording of information for regressable actions in the regression stack 212, and the triggering of the regression operation via the registry 204, are undertaken externally to software applications 218. Further, the specific implementation of the regression functionality is provided within each software application as a regression callback function 2 allowing the regression manager 202 to be generalized without specific knowledge of how each action or regression is implemented. Additionally, since the regression facility exists logically separated from the software applications 218 it is possible to regress actions even after the software application ceases to execute. For example, the regression stack 212 can include entries for a software application which persist beyond the execution of the software application. Further, the inclusion in the registry 204 of entries for software applications from which other software applications can be invoked (such as the Explorer application in Microsoft Windows (Windows is a Registered Trademark of the Microsoft Corporation)) will allow actions including the invocation and closing of applications to also be susceptible to regression. In this way, application management actions and operating system actions, including the very act of closing an application, can be regressed.
a is a flowchart of a method of the regression manager 202 of
b is a flowchart of a method of the regression operation 210 of
Similarly, at 506, software application ‘B’ 452 registers its regression callback function 456 with the regression manager 202 by providing a function pointer to the regression callback function 456 and a unique identifier of software application ‘B’ 452. At 508 the regression manager 202 adds the application identifier of software application ‘B’ 452 and the function pointer to the regression callback function 456 to the registry 204.
Subsequently, at 510, the user performs an ‘input text’ action by typing the text “once upon a time” in software application ‘A’ 402. At 512 software application ‘A’ 402 collaborates with the regression manager 202 to add the user action to the regression stack 212 by supplying the regression manager 202 with an action parameter 216 ‘input text “once upon a time”’ and an application identifier for software application ‘A’ 402. At 514 the regression manager adds the action parameter and application identifier to the regression stack 212.
Subsequently, at 516, the user performs an ‘move file’ action in software application ‘B’ 452 by moving a file named “example” to a waste basket in the application. At 518 software application ‘B’ 452 collaborates with the regression manager 202 to add the user action to the regression stack 212 by supplying the regression manager 202 with an action parameter ‘move file “example” from an “original location” to “waste basket”’ and an application identifier for software application ‘B’ 452. At 520 the regression manager adds the action parameter and application identifier to the regression stack 212.
Subsequently, at 5229, the user performs a ‘select text’ action by selecting the text “once” in software application ‘A’ 402. At 524 software application ‘A’ 402 collaborates with the regression manager 202 to add the user action to the regression stack 212 by supplying the regression manager 202 with an action parameter 216 ‘select text “once”’ and an application identifier 214 for software application ‘A’ 402. At 526 the regression manager adds the action parameter 216 and application identifier 214 to the regression stack 212.
Finally, at 528, the user performs an ‘underline selection’ action by performing an underline function on the selected text in software application ‘A’ 402. At 530 software application ‘A’ 402 collaborates with the regression manager 202 to add the user action to the regression stack 212 by supplying the regression manager 202 with an action parameter ‘underline selection’ and an application identifier for software application ‘A’ 402. At 532 the regression manager adds the action parameter and application identifier to the regression stack 212.
In this way it can be seen how the exemplary software applications ‘A’ 402 and ‘B’ 452 are able to register with the regression manager 202 to have regression callback functions 406 and 456 listed in the registry 204 of the regression manager, and add action parameters for regressable user actions to the regression stack 212 of the regression manager 202.
Returning now to
Returning now to
Insofar as embodiments of the invention described are implementable, at least in part, using a software-controlled programmable processing device, such as a microprocessor, digital signal processor or other processing device, data processing apparatus or system it will be appreciated that a computer program for configuring a programmable device, apparatus or system to implement the foregoing described methods is envisaged as an aspect of the present invention. The computer program may be embodied as source code or undergo compilation for implementation on a processing device, apparatus or system or may be embodied as object code, for example.
Suitably, the computer program is stored on a carrier medium in machine or device readable form, for example in solid-state memory, magnetic memory such as disk or tape, optically or magneto-optically readable memory such as compact disk or digital versatile disk, or other computer-readable medium, and the processing device utilizes the program or a part thereof to configure it for operation. The computer program may be supplied from a remote source embodied in a communications medium such as an electronic signal, radio frequency carrier wave or optical carrier wave. Such carrier media are also envisaged as aspects of the present invention.
It will be understood by those skilled in the art that, although the present invention has been described in relation to the above described example embodiments, the invention is not limited thereto and that there are many possible variations and modifications which fall within the scope of the invention.
The scope of the present invention includes any novel features or combination of features disclosed herein. The applicant hereby gives notice that new claims may be formulated to such features or combination of features during prosecution of this application or of any such further applications derived therefrom. In particular, with reference to the appended claims, features from dependent claims may be combined with those of the independent claims and features from respective independent claims may be combined in any appropriate manner and not merely in the specific combinations enumerated in the claims.
Number | Date | Country | Kind |
---|---|---|---|
0623333.2 | Nov 2006 | GB | national |