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 ();
61 auto extractSelectedObjects ()
const -> SelectedObjectsVector;
63 static bool validateHorizontalMovement (
64 const SelectedObjectsVector &objects,
67 validateVerticalMovement (
const SelectedObjectsVector &objects,
double delta);
68 static bool validateResize (
69 const SelectedObjectsVector &objects,
70 commands::ResizeType type,
71 commands::ResizeDirection direction,
73 static bool validateBoundsResize (
74 structure::arrangement::ArrangerObjectPtrVariant obj_var,
75 commands::ResizeDirection direction,
77 static bool validateFadesResize (
79 commands::ResizeDirection direction,
82 bool process_vertical_move (
double delta);
86 QItemSelectionModel &selection_model_;
87 ObjectOwnerProvider object_owner_provider_;