Jump to content
Software FX Community

Undo/Redo


User (Legacy)

Recommended Posts

The Personalization menu allow you to revert back to the original chart 

(before you started to make changes) and it also allows you to save the

chart's settings at an specific point in time (and later restore it).

There is no way of storing the specific changes made to the chart for every

user action, this would require a very complex API to identify the myriad of

changes that can be made by the user, some of which are hard to express in

terms of "properties" (for example the user dragged a point changing its X

and Y value).

There are several events fired to allow you to maintain a "dirty" state if

you want to provide your users whit the option for saving the chart before

closing the form (InternalCommand, DataChangedByUser, etc.). You could save

the chart before these changes occur using the Export method and although

you won't be able to tell what changed you will be able to revert the

changes by Importing the previously saved template.

--

FP

Software FX

Link to comment
Share on other sites

I actually don't think an undo/redo stack is that difficult.  The way I 

suggest handling of situations when multiple things change is to simply put

multiple actions in a single transaction. i.e. Record Begin transaction

command; record do this, record do that, record do another, record End

transaction command.

If your developers would like to discuss this, I'll be glad to.

As for your personalization, I do not see documentation saying that I can

record this information to a memory (which I could store to my own undo

stack). Also, is there an estimate or range of how large this data object

is?

Thanks,

Greg

"SoftwareFX Support" <noreply@softwarefx.com> wrote in message

news:yUM2W$Q9EHA.3492@webserver3.softwarefx.com...

> The Personalization menu allow you to revert back to the original chart

> (before you started to make changes) and it also allows you to save the

> chart's settings at an specific point in time (and later restore it).

>

> There is no way of storing the specific changes made to the chart for

> every user action, this would require a very complex API to identify the

> myriad of changes that can be made by the user, some of which are hard to

> express in terms of "properties" (for example the user dragged a point

> changing its X and Y value).

>

> There are several events fired to allow you to maintain a "dirty" state if

> you want to provide your users whit the option for saving the chart before

> closing the form (InternalCommand, DataChangedByUser, etc.). You could

> save the chart before these changes occur using the Export method and

> although you won't be able to tell what changed you will be able to revert

> the changes by Importing the previously saved template.

>

> --

> FP

> Software FX

>

Link to comment
Share on other sites

>> I actually don't think an undo/redo stack is that difficult.

I agree, even though we all know the devil is in the details. The code

required to "replay" a specific command in the stack could become large

given the number of objects and properties we have. It would be tempting to

use reflection in this situation but I am not sure it would work in low

trust scenarios. Saving the entire chart template could become large if the

user modifies a lot of properties.

We have discussed supporting an undo/redo stack but we think it is really

worth in some of our extensions (like OLAP) where you can easily get lost

after executing a couple of actions and want to go back. In the case of a

normal chart it is not clear if supporting an undo stack is necessary as the

changes you do in the chart are really cosmetic (color changes, gallery,

etc.)

>> Also, is there an estimate or range of how large this data object is?

We do not have any numbers as it depends on the number of series, the

existence of per-point attributes, titles, etc.

You can easily get a more accurate estimate by doing

Chart1.Export(FileFormat.BinaryTemplate,stream) and get the stream size.

As always we appreciate your feedback and welcome any ideas/suggestions that

would help us improve our product.

--

JC

Software FX

"Greg" <greg@nowhere.com> wrote in message

news:E%23K2V3a9EHA.3492@webserver3.softwarefx.com...

>I actually don't think an undo/redo stack is that difficult. The way I

>suggest handling of situations when multiple things change is to simply put

>multiple actions in a single transaction. i.e. Record Begin transaction

>command; record do this, record do that, record do another, record End

>transaction command.

>

> If your developers would like to discuss this, I'll be glad to.

>

> As for your personalization, I do not see documentation saying that I can

> record this information to a memory (which I could store to my own undo

> stack). Also, is there an estimate or range of how large this data object

> is?

>

> Thanks,

> Greg

>

>

> "SoftwareFX Support" <noreply@softwarefx.com> wrote in message

> news:yUM2W$Q9EHA.3492@webserver3.softwarefx.com...

>> The Personalization menu allow you to revert back to the original chart

>> (before you started to make changes) and it also allows you to save the

>> chart's settings at an specific point in time (and later restore it).

>>

>> There is no way of storing the specific changes made to the chart for

>> every user action, this would require a very complex API to identify the

>> myriad of changes that can be made by the user, some of which are hard to

>> express in terms of "properties" (for example the user dragged a point

>> changing its X and Y value).

>>

>> There are several events fired to allow you to maintain a "dirty" state

>> if you want to provide your users whit the option for saving the chart

>> before closing the form (InternalCommand, DataChangedByUser, etc.). You

>> could save the chart before these changes occur using the Export method

>> and although you won't be able to tell what changed you will be able to

>> revert the changes by Importing the previously saved template.

>>

>> --

>> FP

>> Software FX

>>

>

>

Link to comment
Share on other sites

To clarify my comments:

I did not mean that are incapable of implementing multi-level undo-redo, I

have personally implemented this in several occasions, it is simply a matter

of cost-benefit. At this point, we consider that the resources (man hours)

for developing this feature can be put to better use developing other

features that will have a greater impact in the quality of our product.

Your request is certainly noted and we strive to satisfy all of our

customers, I was just trying to be honest and instead of saying "sure we

will add this in the next version" I wanted to give you some insight on what

the reasons are for this feature not being there.

As JC said, for the kind of operation you can do through the Chart FX UI, we

feel the one level undo provided by Personalization is adequate for most of

our users, this may change as the product evolves.

--

FP

Software FX, Inc.

Link to comment
Share on other sites

I will try the export to a memory stream (without data) to see how large 

this is. For my interest, it is precisely the ability for the user to undo

each individual "cosmetic" change that is my interest. If I have to

re-create your user editors in order to maintain my undo/redo state, I'll

lose a significant advantage of your system.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...