GNOME Bugzilla – Bug 151469
Make it easier to edit track names & artists
Last modified: 2014-09-04 10:09:12 UTC
Distribution: Fedora Core release 2 (Tettnang) Package: sound-juicer Severity: enhancement Version: GNOME2.6. unspecified Gnome-Distributor: Red Hat, Inc Synopsis: Enhacement to user interaction when naming songs Bugzilla-Product: sound-juicer Bugzilla-Component: interface Bugzilla-Version: unspecified Description: Currently when naming songs manually (I'm either at home off-line or there is an authenticated web proxy in the way) the user interaction is sub-optimal. I have to: repeat: press 'enter' to select 'name mode', type name, press 'enter' again, press 'down arrow', until done names. It would be very nice if I could: Press 'enter' to enter 'name mode' repeat: type name press enter until done names. This could be implemented by moving the focus to the song title (or artist if I'm naming a compilation album) directly below the name I just entered. It would also be nice if there was a visual difference between the fields I can edit (artist, title) and those I can not (track, duration). Tim ------- Bug moved to this database by unknown@bugzilla.gnome.org 2004-08-30 21:27 ------- Unknown platform unknown. Setting to default platform "Other". Unknown milestone "unknown" in product "sound-juicer". Setting to default milestone for this product, '---' Setting to default status "UNCONFIRMED". Setting qa contact to the default for this product. This bug either had no qa contact or an invalid one.
yes, it would eb a nice nice feature ! i'm also very annonyed by having to click. Just pressing 'enter' should valid the song entry and switch to the next title entry.
Another idea: Make it possible to move horisontally using TAB, and vertically using the. up/down arrow keys.
*** Bug 333000 has been marked as a duplicate of this bug. ***
*** Bug 333814 has been marked as a duplicate of this bug. ***
Other people (see dups) would like to see tab go to the next field, return to automatically jump to the next row, and so on.
*** Bug 366333 has been marked as a duplicate of this bug. ***
Created attachment 134362 [details] [review] support for F2 to iniate renaming in tracklist Gnome HIG recommends using F2 for renaming operation. This small patch adds support for it.
Created attachment 249172 [details] [review] Improve editing of tracks This series of patches enables the user to edit the same field for multiple tracks at once, making it much quicker to edit common Artists & Composers. Additionally it adds keybindings to [Shift]Tab and [Page]Up/Down when editing to quickly accept the current changes and start editing another field. This make it much quicker to edit track titles as the user just presses down each time, rather than having to confirm the change with Enter, move to the next field and then press Space or Enter to start editing again. The initialization code for the editable treeview columns is all the same so it makes sense to use a helper function.
Created attachment 249173 [details] [review] Fix playback with multiple track selection Prepare support for multiple selections. Only change seek_to_track if there is a single track selected.
Created attachment 249174 [details] [review] Edit extract column of multiple tracks at once Allowing the user to select multiple rows at once makes it much quicker to edit common fields. Prepare the way by implementing this for the extract column.
Created attachment 249175 [details] [review] Edit text of multiple tracks at once This is the final step in allowing the user to select and edit multiple rows at once. Implement editing for text fields of all selected rows and activate multiple selections on the track listview. This makes it much quicker to edit a common Artist/Composer for a subset of tracks.
Created attachment 249176 [details] [review] Tab moves to next column when editing When editing tracks it is a pain to have to press enter to start and end editing and then move cell with the cursor. Fix this by binding Tab/<Shift>Tab to move to the next/previous activatable cell when editing/activated. Once the user stops editing with Enter/Escape Tab/<Shift>Tab will focus the next/previous widget as normal so it is still possible to quickly move the focus past the track list with keyboard navigation.
Created attachment 249177 [details] [review] Continue editing with [Page]Up/Down When editing accept changes and move up/down and restart editing when the user presses [Page]Up/Down. This makes it much easier to edit the track titles as the user just presses Down to get to the next one and start editing rather than Enter-Down-Enter.
*** Bug 638823 has been marked as a duplicate of this bug. ***
Created attachment 265692 [details] [review] I've rebased these patches as some of them no longer applied. The only other change is that the shared state between the various callbacks is now in stored a single global structure which simplifies things a little. Refactor treeview initialization The initialization code for the editable treeview columns is all the same so it makes sense to use a helper function.
Created attachment 265693 [details] [review] Fix playback with multiple track selection Prepare support for multiple selections. Only change seek_to_track if there is a single track selected.
Created attachment 265694 [details] [review] Edit extract column of multiple tracks at once Allowing the user to select multiple rows at once makes it much quicker to edit common fields. Prepare the way by implementing this for the extract column.
Created attachment 265695 [details] [review] Edit text of multiple tracks at once This is the final step in allowing the user to select and edit multiple rows at once. Implement editing for text fields of all selected rows and activate multiple selections on the track listview. This makes it much quicker to edit a common Artist/Composer for a subset of tracks.
Created attachment 265696 [details] [review] Tab moves to next column when editing When editing tracks it is a pain to have to press enter to start and end editing and then move cell with the cursor. Fix this by binding Tab/<Shift>Tab to move to the next/previous activatable cell when editing/activated. Once the user stops editing with Enter/Escape Tab/<Shift>Tab will focus the next/previous widget as normal so it is still possible to quickly move the focus past the track list with keyboard navigation.
Created attachment 265697 [details] [review] Continue editing with [Page]Up/Down When editing accept changes and move up/down and restart editing when the user presses [Page]Up/Down. This makes it much easier to edit the track titles as the user just presses Down to get to the next one and start editing rather than Enter-Down-Enter.
Review of attachment 265694 [details] [review]: ::: src/sj-main.c @@ +1693,3 @@ /* extract is the old state here, so toggle */ extract = !extract; + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (track_listview)); no_of_tracks_selected = 0; could be done here
Review of attachment 265694 [details] [review]: (NB: the patch would have been smaller with the breaking of long lines done in a separate patch)
Comment on attachment 265696 [details] [review] Tab moves to next column when editing After using this again, I think it could be improved, changing the behaviour of Tab depending on whether a cell is being edited or not is confusing, it would be better if Tab always moved to the next cell and Control-Tab moved from the treeview to the next widget.
(In reply to comment #23) > Review of attachment 265694 [details] [review]: > > (NB: the patch would have been smaller with the breaking of long lines done in > a separate patch) Sorry I'll remember that for the future. Thanks for looking at these >::: src/sj-main.c >@@ +1693,3 @@ > /* extract is the old state here, so toggle */ > extract = !extract; >+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (track_listview)); > >no_of_tracks_selected = 0; could be done here I'm afraid I don't understand, are you saying we don't need gtk_tree_model_foreach (GTK_TREE_MODEL (track_store), (GtkTreeModelForeachFunc)extract_available_foreach, &extract); gtk_widget_set_sensitive (extract_button, extract); as we can just do gtk_widget_set_sensitive (extract_button, no_of_selected_tracks > 0);
Created attachment 281666 [details] [review] Edit extract column of multiple tracks at once I've reworked this to count the number of tracks to be extracted correctly and to avoid changing the selected rows if the current row is part of the selection. Allowing the user to select multiple rows at once makes it much quicker to edit common fields. Prepare the way by implementing this for the extract column. As it is possible to activate a cell that is not in the selection take care to only update the selected rows if the activated cell is selected.
Created attachment 281667 [details] [review] Edit text of multiple tracks at once This is the final step in allowing the user to select and edit multiple rows at once. Implement editing for text fields of all selected rows and activate multiple selections on the track listview. This makes it much quicker to edit a common Artist/Composer for a subset of tracks. As it is possible to activate (and therefore start editing) a cell that is not in the selection take care to only update the selected rows if the activated cell is selected.
Created attachment 281668 [details] [review] Add SjTreeView This is a subclass of GtkTreeView where horizontal movements skip columns that are not activatable/editable. Tab moves to the next activatable/editable wrapping if necessary. Control-Tab moves the keyboard focus to the next widget. With a suitable cell renderer moving cells while editing is also possible so the user does not need to press 'Enter' to confirm the changes, then move and then press 'Enter' again to start editing the new cell.
Created attachment 281669 [details] [review] Add vertical movement to SjTreeView When trying to move vertically check if it's possible to move before stopping editing. If the current cell is being edited start editing the next cell after moving.
Created attachment 281670 [details] [review] Focus default cell before moving cursor If GtkTreeView::move-cursor is called when the cursor isn't currently set then focus the default cell. This avoids the cursor being moved before it is shown.
Created attachment 281671 [details] [review] Add SjCellRendererText This is a subclass of GtkCellRendererText which accepts changes without confirmation and does not stop editing when the toplevel loses focus. This means that the user no longer loses their changes if they forget to press 'Enter' when they have finished editing. This raises the required GLib version to 2.38 for G_DEFINE_TYPE_WITH_PRIVATE
Created attachment 281672 [details] [review] Add movement keys to SjCellRendererText I'm not sure about having enter move down, it might be better to have it stop editing instead. Allow the user to move cells while editing. This makes editing much quicker as the user no longer has to press 'Enter' to confirm their changes, then move and then press 'Enter' again to start editing the new cell. [Shift]Tab - move to the [previous]next activatable/editable column [Page]Up - move up a [page]row [Page]Down - move down a [page]row Enter - move down a row if possible, move the keyboard focus to the next widget if not Control-Enter - stop editing Control-Home - move to the top of the current column Control-End - move to the bottom if the current column Control-Tab - move the keyboard focus to the next widget
Created attachment 281673 [details] [review] Use SjTreeView and SjCellRendererText Use the new widgets to improve the editing of track details.
Created attachment 281674 [details] [review] Duration label should not be selectable This improves the keyboard navigation as tab now jumps straight from the disc number entry to the track listview.
Created attachment 281675 [details] [review] Move focus when 'Enter' is pressed When the user presses enter in a GtkEntry move the focus to the next widget as recommended in GNOME HIG when there is no default widget.
As there are a lot of patches to keep track of I've push the whole series to wip/better-editing
Created attachment 282544 [details] [review] Add SjTreeView::play-cursor-row and SjTreeView::play-row As SjTreeView::move-cursor restricts keyboard cursor movements to activatable/editable columns it's no longer possible to play the track under the treeview cursor with the keyboard. Add two signals to fix this: 'play-row' for playing the specified path and 'play-cursor-row' for playing the cursor row. 'play-cursor-row' is bound to Control-Space.
Created attachment 282545 [details] [review] 'play-row' should toggle playback when path is already playing If the track currently being played is the same as the one requested by 'play-row' then toggle playback rather than rewinding to the start of the track.
Created attachment 282546 [details] [review] fixup! Add SjTreeView
Attachment 265692 [details] pushed as ef8473f - Refactor treeview initialization Attachment 265693 [details] pushed as 3ee9f26 - Fix playback with multiple track selection Attachment 281666 [details] pushed as 58891f0 - Edit extract column of multiple tracks at once Attachment 281667 [details] pushed as b38838a - Edit text of multiple tracks at once Attachments 281668 and 282546 pushed as 23405d3 - Add SjTreeView Attachment 281669 [details] pushed as 3052213 - Add vertical movement to SjTreeView Attachment 281670 [details] pushed as abf793e - Focus default cell before moving cursor Attachment 281671 [details] pushed as 94e562c - Add SjCellRendererText Attachment 281672 [details] pushed as 372c001 - Add movement keys to SjCellRendererText Attachment 281673 [details] pushed as b98e954 - Use SjTreeView and SjCellRendererText Attachment 281674 [details] pushed as 9141899 - Duration label should not be selectable Attachment 281675 [details] pushed as d05202b - Move focus when 'Enter' is pressed Attachment 282544 [details] pushed as efd8fb1 - Add SjTreeView::play-cursor-row and SjTreeView::play-row Attachment 282545 [details] pushed as dd76687 - 'play-row' should toggle playback when path is already playing
*** Bug 735711 has been marked as a duplicate of this bug. ***