Progress cursor

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Progress cursor

Paul Baumann

It would be nice if the cursor could indicate the progress being made. VW has progress dialogs but sometimes you want something that is window or application specific (like a cursor that is for the window it is over). If showing a wait cursor, and 0-1 progress complete value is given, then show a pie around the cursor to indicate the percentage complete. Note that this is different than typical spinner or flasher type cursors that suggest activity but not progress.

 

Hopefully somebody will have fun implementing it. Probably only a day or two of work to implement this in VW. Probably a dozen ways it could be implemented too. The cursor object (or your wrapper of a cursor) should probably hold the progress value so that something like "CurrentCursor progressValue: 5/100" can be sent from nested contexts and the cursor active for that context will get the progress value.

 

Paul Baumann



This message may contain confidential information and is intended for specific recipients unless explicitly noted otherwise. If you have reason to believe you are not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of IntercontinentalExchange, Inc. (ICE), its subsidiaries or affiliates, and does not constitute a contract or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding message is desired.

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: Progress cursor

andre
It would be nice if the cursor could indicate the progress being made. VW has progress dialogs but sometimes you want something that is window or application specific (like a cursor that is for the window it is over).

Why not show progress information in a special "progress notification area" on the main window, e.g. in the bottom right corner of the status bar. The mouse is a pointing device and I would rather not abuse it as a H.U.D.

This can be easily implemented catching the ResetIncrementNotification, IncrementNotification and MessageNotification signals in a method like #showProgressWhile: aBlock. I'm willing to share the code, if anyone is interested.

Andre


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: Progress cursor

Paul Baumann

Hi Andres,

 

I prefer the "progress notification area" (PNA) style over a progress dialog. A dialog only has an advantage in that screen space is reclaimed once the dialog closes; however, modal dialogs are a workaround to a problem that a PNA avoids entirely. There were problems with how VW originally implemented the PNA shown on the transcript window (that have hopefully been fixed by now). PNA is nice for displaying a message along with progress.

 

Changing the cursor takes no additional window space and is not obscured by other windows. A progress cursor only makes sense for the cursors that emphasize activity over position (like #wait, #database, #write, #quickGarbage, #compactMemory, #bull, #read, #blank, etc.). I wouldn't want  a pointer cursor to have a pie around it either.

 

I'd be interested in a framework that does as I've described.

 

Several years ago I'd reported problems with the PNA in the VW transcript window. It was slowness caused by an accumulation of deferred UI work. I recall Travis was able to reproduce it to confirm it using an example that loaded code from store. Your *Notification framework seems like it might be intended as an alternative to #uiEvent for forked processes that would normally be used to avoid problems like these. Too often application code fails to coordinate UI events that originate from background processing. For example, the VW cursor gets stuck when a background process attempts to do cursor changes and it is not the windowProcess (the correction being code like "[Cursor normal show] fork"). Some code wants to show a cursor for every single thing it does (often in place of just tuning the slowness away), and all those cursor changes start to cause a problem when work is later refactored to be done in a background process.

 

The solution for cursor changes is more simple than a notification framework, (in methods like #showProgressWhile:) if activeProcess is not the windowProcess then skip the cursor display. All the overhead of events and notifications can be skipped when this ui activity is clearly not being under control of the windowProcess. The windowProcess may be busy or waiting for a long time and a background process intended to run independent of it. This trick is better than accumulating deferred work or acting as the windowProcess when it is not. Ignore cursor changes that are not done as the windowProcess; it is more practical than an error and more efficient (and useful) than deferring the work. If anything is done, it would only be to invalidate a region or update data which the windowProcess would cleanup later.

 

Paul Baumann

 

 

From: andre [mailto:[hidden email]]
Sent: Wednesday, August 01, 2012 09:03
To: Paul Baumann
Cc: [hidden email]
Subject: Re: [vwnc] Progress cursor

 

It would be nice if the cursor could indicate the progress being made. VW has progress dialogs but sometimes you want something that is window or application specific (like a cursor that is for the window it is over).

 

Why not show progress information in a special "progress notification area" on the main window, e.g. in the bottom right corner of the status bar. The mouse is a pointing device and I would rather not abuse it as a H.U.D.

 

This can be easily implemented catching the ResetIncrementNotification, IncrementNotification and MessageNotification signals in a method like #showProgressWhile: aBlock. I'm willing to share the code, if anyone is interested.

 

Andre

 



This message may contain confidential information and is intended for specific recipients unless explicitly noted otherwise. If you have reason to believe you are not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of IntercontinentalExchange, Inc. (ICE), its subsidiaries or affiliates, and does not constitute a contract or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding message is desired.

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc