Dual list view #44

Open
opened 2025-02-06 19:51:24 +00:00 by Vectornaut · 0 comments
Collaborator

Problem

It's important to have at least one view that lists all elements and constraints. The outline view currently plays this role, but its tree structure gives it several awkward features:

  • Elements are visible at surface level, but constraints are buried.
  • It's easy to sort by element properties, but hard to sort by constraint properties.
  • Each element appears exactly once, but each constraint appears multiple times when all the elements are unfolded.
  • Following interface conventions for outlines would make elements and constraints interfere with each other. For example:
    • By convention, I'd expect a multiple selection to be able to encompass both elements and constraints. (For example, a multiple selection can encompass items at different levels in Inkscape's outline view.) There aren't many operations you could do on a selection like that, so it mostly seems like an opportunity for finger slips.
    • By convention, I'd expect single-selecting a constraint to clear the previous selection, even if the previous selection includes only elements. This would needlessly prevent me from operating on elements and constraints in parallel.

Solution

By creating a dual list view comprising parallel element list and constraint lists, we can put elements and constraints on equal footing while also keeping them from interfering with each other. The lists should be independently sortable and filterable, and we might want them to have independent selection sets too.

We could show the relationships between elements and constraints by sorting or filtering each list according to what's selected in the other list. For example, selecting an element might do one or more of the following:

  • Bring the selected element's constraints to the top of the constraint list.
  • Dim or hide the constraints that don't apply to the selected element.
### Problem It's important to have at least one view that lists all elements and constraints. The outline view currently plays this role, but its tree structure gives it several awkward features: * Elements are visible at surface level, but constraints are buried. * It's easy to sort by element properties, but hard to sort by constraint properties. * Each element appears exactly once, but each constraint appears multiple times when all the elements are unfolded. * Following interface conventions for outlines would make elements and constraints interfere with each other. For example: * By convention, I'd expect a multiple selection to be able to encompass both elements and constraints. (For example, a multiple selection can encompass items at different levels in Inkscape's outline view.) There aren't many operations you could do on a selection like that, so it mostly seems like an opportunity for finger slips. * By convention, I'd expect single-selecting a constraint to clear the previous selection, even if the previous selection includes only elements. This would needlessly prevent me from operating on elements and constraints in parallel. ### Solution By creating a *dual list view* comprising parallel element list and constraint lists, we can put elements and constraints on equal footing while also keeping them from interfering with each other. The lists should be independently sortable and filterable, and we might want them to have independent selection sets too. We could show the relationships between elements and constraints by sorting or filtering each list according to what's selected in the other list. For example, selecting an element might do one or more of the following: * Bring the selected element's constraints to the top of the constraint list. * Dim or hide the constraints that don't apply to the selected element.
Vectornaut added the
enhancement
label 2025-02-06 19:51:24 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: glen/dyna3#44
No description provided.