Hi Gary.<br><br>Please find attached the links to the "fixed" rpms.<br>Please "--upgrade --force --nodeps" on the dx3ng143 image, on which you have been testing.<br><br><a href="http://people.sugarlabs.org/ajay/root/multi-select/sugar-0.94.1-31.dx3.noarch.rpm">http://people.sugarlabs.org/ajay/root/multi-select/sugar-0.94.1-31.dx3.noarch.rpm</a><br>
<a href="http://people.sugarlabs.org/ajay/root/multi-select/sugar-toolkit-0.94.0-20120805.dx3.fc14.i386.rpm">http://people.sugarlabs.org/ajay/root/multi-select/sugar-toolkit-0.94.0-20120805.dx3.fc14.i386.rpm</a><br><br><br>
For brevity, the patches are at ::<br><a href="http://git.sugarlabs.org/dextrose/mainline/commit/38a261887ed44756147bae44277642252cae628f">http://git.sugarlabs.org/dextrose/mainline/commit/38a261887ed44756147bae44277642252cae628f</a><br>
<a href="http://git.sugarlabs.org/dextrose/mainline/commit/0c71cf00dfb8fe507627109748b5539e0eeba87f">http://git.sugarlabs.org/dextrose/mainline/commit/0c71cf00dfb8fe507627109748b5539e0eeba87f</a><br><br><br><br>Following are the changes/fixes ::<br>
All courtesy you :)<br><br><br><br><br>a)<br>'Select none' renamed as 'Deselect all'.<br><br><br><br>b)<br>Now, a text-widget has been added to the top of EditToolBar.<br>This serves the following two purposes ::<br>
<br> * The widget is supposed to display only one line, at ANY time.<br><br> * Usually, while in "multi-select" mode, it will display "<x> of 97 selected", where "x" is the number of entries currently selected,<br>
and 97 is assumed to be the total number of entries.<br><br> Here, as we select/deselect by single-click, or "select all"/"deselect all" button, the update happens consequently.<br><br> So, as is obvious, this modification helps show the number of selected entries, even when entries are selected/deselected one at a time<br>
(previously, the status was shown, only when "select all" or "deselect all" was done).<br><br> * During batch-copy, or batch-erase, this widget shows the running status of the entry currently being processed.<br>
<br><br><br>c)<br>Due to b), the progress-statuses are now NOT shown as alerts; rather as texts in the text-widget.<br><br><br><br>d)<br>However, any errors (such as "Entries without a file cannot be copied") are continued to be shown as alerts.<br>
<br><br><br>e)<br>Other than the progress-texts, and error-alerts, the only other notification shown are the confirmation-alerts before beginning<br>with the "Batch-Copy" and "Batch-Erase".<br><br><br>
<br>f)<br>During Batch-Operations (almost exclusively Batch-Copy), if an error occurs, users are presented with two options ::<br><br> * "Stop" - This stops the batch-operation there and then.<br><br> * "Continue" - Proceed forward with the next journal entry.<br>
<br><br><br>g)<br>As seen in f), the "Ok" of the error-alert has been replaced (only textually) by "Continue".<br><br><br><br>h)<br>There were exceptions of the form "KeyError: 'keep'" occuring in logs. <br>
This was due to some cases, wherein "keep" property was not present in a particular journal entry.<br><br>So now, as a fix, we first check if "keep" is a valid metadata-key. If yes, we read its value to gauge favorite-status.<br>
Else, we assume that the journal-entry is an unfavorite by default.<br><br><br><br>i)<br>VERY IMPORTANT NOTE ::<br><br>Renaming a journal-entry (by clicking and modifying the contents of the title-cell, has been disabled functionally.<br>
This is because, the following happens when a rename is done in the "Documents" view ::<br><br> * Initially, the UID is same as the path of the entry in "Documents".<br><br> * User changes the name. The change is written on the DS, and the UID changed.<br>
<br> * Now, since refresh is inhibited in multi-select view, we need to fetch the new value of the title from the DS.<br> This requires the UID, through which the UID could be fetched. Since the name of the "Documents" journal-entry has<br>
changed, so has its UID. But in the memory, the old UID still resides. Fetching the "new" title from the "old" UID does not<br> work.<br><br> Now, I tried disabling the renaming while rendering the listview, but that could not be done, as rendering th listview requires<br>
knowing whether we are in multi-select mode, while multi-select mode is set, after the listview is rendered. So, we are in a catch-22<br> situation.<br><br>So, the way it works now in multi-select mode ::<br><br>
* User is apparently able to edit the title, but that is all what happens.<br> There is no efective change - neither in backend, nor in frontend.<br><br>In the normal view, the renaming works as usual.<br><br><br>
======================================================<br><br><br>PENDING CHANGES ::<br><br>a)<br>As explained in point i) above, the renaming will not work, while in multi-select mode (however, the bug you reported wherein trying to rename in<br>
"Documents" folder renders the UI unusable, has been duly fixed (of course, by not allowing the renaming to happen).<br><br>If this is indeed required, this will be a major change in the way we deal with UIDs for non-journal mount-points. But given that renaming is affected only in multi-select mode (renaming does not work at all in multi-select; while it works as usual in normal-mode), I am a bit sceptical to regarding this.<br>
<br><br><br>b)<br>A solution to the following bug ::<br><br><b>UNRESOLVED BUG. Tick-box slow/erratic behaviour in dx3ng143 with
latest rpm fixes image on XO1, still needs mouse movement to redraw.
This is also an issue when using the "Select all" toobar button, as the
list view tick-boxes do not update until after the "Select all. You have
selected N entries. (Ok)" dialogue is clicked.</b><br><br>still eludes me :(<br><br>This is an important issue, since (although there is no unusable UX, or any such major workflow blocker), the select/deselect "visual" "feedback" is an important thing, that should be conveyed as soon as possible. Though Gary's feedback on adding a text-widget on the top EditToolBar, does help show the number of entries selected, and thus gives a "textual" "feedback" :)<br>
<br>I would request all sugar-devel members to please post a solution to the issue, for which the discussion is going on, in the thread ::<br><a href="http://lists.sugarlabs.org/archive/sugar-devel/2012-July/038626.html">http://lists.sugarlabs.org/archive/sugar-devel/2012-July/038626.html</a><br>
<br><br><br>Thanks and Regards,<br>Ajay<br><br><br><br><br><br><br><br><div class="gmail_quote">On Sat, Aug 4, 2012 at 9:59 PM, Gary Martin <span dir="ltr"><<a href="mailto:garycmartin@googlemail.com" target="_blank">garycmartin@googlemail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF"><div>Hi Ajay,<div class="im"><br><br>On 4 Aug 2012, at 10:21, Ajay Garg <<a href="mailto:ajay@activitycentral.com" target="_blank">ajay@activitycentral.com</a>> wrote:<br>
<br></div></div><div class="im"><div></div><blockquote type="cite"><div><span>On Fri, Aug 3, 2012 at 8:53 PM, Ajay Garg <span dir="ltr"><<a href="mailto:ajay@activitycentral.com" target="_blank">ajay@activitycentral.com</a>></span> wrote:</span><br>
<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Thanks a ton Gary.<br>This is REALLY useful :)<br></blockquote></div></div></blockquote><div><br></div></div><div>Fab :)</div><div><div class="h5"><br><blockquote type="cite"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Please find the comments inline.<br><br><br><div class="gmail_quote"><div>On Fri, Aug 3, 2012 at 6:29 PM, Gary Martin <span dir="ltr"><<a href="mailto:garycmartin@googlemail.com" target="_blank">garycmartin@googlemail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Ajay/Anish,<br>
<div><div><br>
On 18 Jul 2012, at 11:57, Anish Mangal <<a href="mailto:anish@activitycentral.com" target="_blank">anish@activitycentral.com</a>> wrote:<br>
<br>
> I would like to propose the long-discussed-finally-implemented ;-)<br>
> journal entry batch operation and multi selection feature for<br>
> inclusion in sugar-0.98. All the necessary and relevant details should<br>
> be present in the associated feature page:<br>
><br>
> <a href="http://wiki.sugarlabs.org/go/Features/Multi_selection_screenshots" target="_blank">http://wiki.sugarlabs.org/go/Features/Multi_selection_screenshots</a><br>
><br>
> AFAIK, This feature was initially brought up in discussions in EDUJam<br>
> in 2011 and an initial implementation was made by Martin Abente. The<br>
> current implementation, done by Ajay, has been derived from that<br>
> keeping the UI experience largely the same while significantly<br>
> speeding up operations like select/deselect.<br>
><br>
> Should you have any design related questions about this, feel free to<br>
> reply to this thread.<br>
<br>
</div></div>At last Tuesday's design meeting we didn't make it back around to this agenda item, so here's my feedback/notes after testing the DX3 image with the new rpms:<br>
<br>
- FIXED. Once in multi-select mode, the favourite stars no longer visibly updates, though changes update later once multi-select mode is exited.<br></blockquote></div><div><br>Great !!<br><br><br> <br></div><div>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
- FIXED. Auto deselection after batch operation.<br></blockquote></div><div><br>Great !!<br><br><br> <br></div><div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
- UNRESOLVED BUG. Tick-box slow/erratic behaviour in dx3ng143 with latest rpm fixes image on XO1, still needs mouse movement to redraw. This is also an issue when using the "Select all" toobar button, as the list view tick-boxes do not update until after the "Select all. You have selected N entries. (Ok)" dialogue is clicked.<br>
</blockquote></div><div><br>Yep.. this is becoming a real pain.<br>I have tried the solutions listed at <a href="http://lists.sugarlabs.org/archive/sugar-devel/2012-July/038626.html" target="_blank">http://lists.sugarlabs.org/archive/sugar-devel/2012-July/038626.html</a>, but none seem to work :-\<br>
Anyways, I am still trying ..<br><br>[Ajay ACTION 1] : Fix this.<br><br><br> <br></div><div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
- NEW BUG. Renaming an entry while in multi-select mode does not display the name change, only updates the name displayed after multi-select mode is exited.<br></blockquote></div><div><br>Thanks. Reproduced the bug at my side.<br>
<br>[Ajay ACTION 2] : Will fix.<br><br><br> <br></div><div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
- NEW BUG. If you rename while in multi-select and then try to copy, the entry can't be copied and raises an error "Entries without a filename cannot be copied."<br></blockquote></div><div><br>Hmm.. I think this is a false-negative.<br>
I tried the following ::<br><br> * Entered "multi-select" mode.<br><br> * Selected an entry (by ticking the check-box).<br><br> * Re-named the entry (however, the rename was not immediately visible, due to the above bug).<br>
<br> * Copied the entry to "Documents".<br><br> * Exited "multi-select" mode.<br><br> * Clicked "Documents" icon.<br><br> * The entry (WITH THE MODIFIED NAME) was present.<br>
<br>I guess the error message "Entries without a file cannot be copied" occurred on an entry, that would have anyways given this message, even if you hadn't renamed the entry.<br><br>[Gary ACTION 1] : Please let me know if you still face the error :)<br>
</div></div></blockquote></div></div></blockquote><div><br></div></div></div><div>OK, sorry I must have missed an extra step (I can't reproduce this just now). Will email you if I can find a reliable way to reproduce it.</div>
<div><br></div><div>However, I seem to have found a more nasty bug, while trying to test... Switch to the Journal Documents view; select an item; rename the selected item; the selected item will be deselected – though you'll still be in multi-select mode (but with nothing selected); click the toolbar button Select none; Journal will now be in a bad/unusable state, spinning busy cursor, can't escape multi select mode, shell log shows tracebacks IOError: Couldn't open metadata directory. I needed to restart Sugar to get back to normal. I'll post some shell logs in a separate email to you.</div>
<div class="im"><br><blockquote type="cite"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><div>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
- UNRESOLVED DESIGN QUESTION. Should filters continue to work once in multi-select mode e.g: Filter for star favourite items in Journal; multi select all stared items; un-favourite some entries while in multi-select mode. Should they be removed from the multi-select view, or stay? Currently they stay, but this causes a visual 'jump' when exiting multi-select mode as the initial filter is re-applied to the view. Same issue if filtering the Journal by title, and you rename some entries while in multi-select mode.<br>
</blockquote></div><div><br>Well, I would say not to effect the change during multi-select mode, because of the following reasons ::<br><br> * Currently, the code is tightly bound to having the "current" listmodel entries in the cache. <br>
A re-fresh, would cause the cached entries to be re-distributed, requiring a very major code change.<br><br> * The original motive of "allowing" the user to set/unset favorite status, and rename entry, is to help the user do the processing on the entry,<br>
as she selects the entry. So, I guess it would be ok to effect the filters of these "secondary" features, AFTER the original action (copy, <br> erase) is completed, and "multi-select" mode exited.<br>
<br>[Gary ACTION 2] : Anyhow, please let me know if you think otherwise :)<br> <br> <br><br></div><div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
- FEEDBACK. In multi-select mode the toolbar button string 'Select none' would be better renamed as 'Deselect all'.<br></blockquote></div><div><br>Ok.<br><br>[Ajay ACTION 3] : Will fix.<br><br><br><br></div>
<div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
- TESTING. A loaded Journal with ~100 items, and a USB stick with 900+ items was tested. Selecting individual items one by one is reasonable (ignoring the above unresolved redraw/event bug). Batch selecting, deselecting, erasing operations are pretty quick (batch feedback progress is helpful especially for the 900+ item case). Batch copying is the slowest operation (as to be expected), feedback progress here is essential for even a few items.<br>
</blockquote></div><div><br>[Gary ACTION 3] : Ok, so we show the progress for all = "Select", "Deselect", "Copy", "Erase", right?<br></div></div></blockquote></div></div></blockquote>
<div><br></div></div><div>Yes, but in the primary title bar as a text widget.</div><div><div class="h5"><br><blockquote type="cite"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
- FEEDBACK. In the primary multi-select toolbar, add a separator and text widget to show how many items are selected, and how many are in the current multi-select view e.g. "Selected 3 of 123" so the current multi-select state is always visible to the user. This same widget can be used for progress feedback during batch operations e.g. "Copying 9 of 22: <title>", "Erasing 3 of 15: <title>", "Deselecting 5 of 17". This removes the need for all progress alerts during batch operations, see below.<br>
</blockquote></div><div><br>Gary, please clarify a bit more.<br>For eg, if a user wishes to do batch-copy on 15 entries (out of 97 entries), so would the snapshots be like ::<br><br><br><First row of text widget> Selected 15 of 97<br>
<Second row of text widget> Copying 1 of 15 <title><br><br><br>
<First row of text widget> Selected 15 of 97<br>
<Second row of text widget> Copying 2 of 15 <title><br><br><br>
<First row of text widget> Selected 15 of 97<br>
<Second row of text widget> Copying 3 of 15 <title><br><br><br>
<First row of text widget> Selected 15 of 97<br>
<Second row of text widget> Copying 4 of 15 <title><br><br>..<br>..<br>..<br>..<br><br><br>
<First row of text widget> Selected 15 of 97<br>
<Second row of text widget> Copying 14 of 15 <title><br><br><br>
<First row of text widget> Selected 15 of 97<br>
<Second row of text widget> Copying 15 of 15 <title><br><br><br><br>OR WOULD IT BE SIMPLY<br><br><br><br>
<First row of text widget> Copying 1 of 15 <title><br>
<br>
<br>
<First row of text widget> Copying 2 of 15 <title><br>
<br>
<br>
<First row of text widget> Copying 3 of 15 <title><br>
<br>
<br>
<First row of text widget> Copying 4 of 15 <title><br>
<br>
..<br>
..<br>
..<br>
..<br>
<br>
<br> <First row of text widget> Copying 14 of 15 <title><br>
<br>
<br> <First row of text widget> Copying 15 of 15 <title><br><br><br>[Gary ACTION 4] : Please clarify.<br></div></div></blockquote><div><br><br>I think I understood what is required.<br><br>* The widget is supposed to display only one line, at ANY time.<br>
<br>* Usually, while in "multi-select" mode, it will display "<x> of 97 selected", where "x" is the number of entries currently selected.<br> Here, as we select/deselect by single-click, or "select all" / "deselect all" button, the update happens consequently.<br>
<br> So, as is obvious, this modification helps show the number of selected entries, even when entries are selected/deselected one at a time<br> (previously, the status was shown, only when "select all" or "deselect all" was done).<br>
<br>* During batch-copy, or batch-erase, this widget shows the running status of the entry currently being processed.<br><br>* This seems to be a sleeker design, as it does do away with showing the running status as an alert.<br>
After all, alerts are meant to convey a potentially major action ..<br><br><br>So, modified action for Gary :D ::<br> [Gary ACTION 4] : Please confirm, as to if my understanding is correct.<br></div></div></div>
</blockquote><div><br></div></div></div><div>Yes, that's it! :)</div><div><br></div><div>Regards,</div><div>--Gary</div><div><div class="h5"><br><blockquote type="cite"><div><div class="gmail_quote"><div><br><br>Sorry for the inconvenience.<br>
<br>Thanks and Regards,<br>Ajay<br><br><br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><div><br><br><br></div><div>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
- FEEDBACK. {confirmation_before, progress, confirmation_after}<br>
... select_none {N, N, N}<br>
... select_all {N, N, N}<br>
... erase {Y, N, N}<br>
... copying {Y, N, N}<br></blockquote></div><div><br>Ok. Got it :)<br><br>[Ajay ACTION 4] : Will make the changes.<br><br><br> <br></div><div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
- FEEDBACK. We should allow a user to abort a batch operation when an error occurs. Use cases, encountering many errors during a batch operation when a volume runs out of space, or becomes unavailable. One solution on other platforms is a check box for in the error dialogues "[√] Apply to all" (to ignore future errors of this type during this batch process), and/or an additional button "Stop". I'd suggest our batch operation errors dialogues add a "Stop" button to allow aborting the batch process, and that the current "Ok" button is renamed "Continue" to be more clear.<br>
</blockquote></div><div><br>Ok.<br>So,<br> * [Ajay ACTION 5] : We add a "Stop" button, which occurs on any error alert message. <br> If the user clicks the "Stop" button, the batch-operations ends there ans then.<br>
<br> * [Ajay ACTION 6] : "Ok" button will be renamed to "Continue" button.<br> <br></div><div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
- UNRESOLVED DESIGN QUESTION. Do we want to allow a user to abort a batch operation while it is in progress? Use case, copying/erasing many items over a slow network, or usb device, and deciding if it is not worth the wait. I think, for now, we can avoid this extra UI work as the batch features do provide the option to cancel before they begin. We should revisit this if it turns out to be a frustration for users. The UI design would likely be to add the cancel icon (X) to the primary toolbar while a batch operation is in progress.<br>
</blockquote></div><div><br>+1.<br>Anish too had suggested the same, but then we forfeited the idea, as this would make this (unnecessarily?) complex.<br><br>Anyways, in-field experiences are the real teachers :D :D<br><br>
<br>
</div><div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Regards,<br>
--Gary<br>
<div><div>_______________________________________________<br>
Sugar-devel mailing list<br>
<a href="mailto:Sugar-devel@lists.sugarlabs.org" target="_blank">Sugar-devel@lists.sugarlabs.org</a><br>
<a href="http://lists.sugarlabs.org/listinfo/sugar-devel" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
</div></div></blockquote></div></div><br><br>Gary, waiting for your responses :)<br><br>Thanks again.<br><br>Thanks and Regards,<br>Ajay<br>
</blockquote></div><br>
</div></blockquote></div></div></div></blockquote></div><br>