17class ArrangerObjectSelectionOperator :
public QObject
22 QML_EXTENDED_NAMESPACE (zrythm::commands)
25 using SelectedObjectsVector =
26 std::vector<structure::arrangement::ArrangerObjectUuidReference>;
27 using ArrangerObjectOwnerPtrVariant =
29 structure::arrangement::ArrangerObjectVariant,
31 using ObjectOwnerProvider = std::function<ArrangerObjectOwnerPtrVariant (
32 structure::arrangement::ArrangerObjectPtrVariant)>;
34 explicit ArrangerObjectSelectionOperator (
36 QItemSelectionModel &selectionModel,
37 ObjectOwnerProvider objectOwnerProvider,
39 QObject * parent =
nullptr);
41 Q_INVOKABLE
bool moveByTicks (
double tick_delta);
43 Q_INVOKABLE
bool moveNotesByPitch (
int pitch_delta);
45 Q_INVOKABLE
bool changeVelocities (
int velocity_delta);
47 Q_INVOKABLE
bool moveAutomationPointsByDelta (
double delta);
49 Q_INVOKABLE
bool resizeObjects (
50 commands::ResizeType type,
51 commands::ResizeDirection direction,
54 Q_INVOKABLE
bool deleteObjects ();
56 Q_INVOKABLE
bool cloneObjects ();
58 Q_INVOKABLE
bool toggleMute ();
76 auto extractSelectedObjects () const -> SelectedObjectsVector;
78 static
bool validateHorizontalMovement (
79 const SelectedObjectsVector &objects,
82 validateVerticalMovement (const SelectedObjectsVector &objects,
double delta);
83 static
bool validateResize (
84 const SelectedObjectsVector &objects,
85 commands::ResizeType type,
86 commands::ResizeDirection direction,
88 static
bool validateBoundsResize (
89 structure::arrangement::ArrangerObjectPtrVariant obj_var,
90 commands::ResizeDirection direction,
92 static
bool validateFadesResize (
93 structure::arrangement::ArrangerObjectPtrVariant obj_var,
94 commands::ResizeDirection direction,
97 bool process_vertical_move (
double delta);
100 undo::UndoStack &undo_stack_;
101 QItemSelectionModel &selection_model_;
102 ObjectOwnerProvider object_owner_provider_;
103 structure::arrangement::ArrangerObjectFactory &object_factory_;