17class ArrangerObjectSelectionOperator :
public QObject
22 QML_EXTENDED_NAMESPACE (zrythm::commands)
25 using SelectedObjectsVector =
26 std::vector<structure::arrangement::ArrangerObjectUuidReference>;
27 using ArrangerObjectOwnerPtrVariant = to_pointer_variant<wrap_variant_t<
28 structure::arrangement::ArrangerObjectVariant,
30 using ObjectOwnerProvider = std::function<ArrangerObjectOwnerPtrVariant (
31 structure::arrangement::ArrangerObjectPtrVariant)>;
33 explicit ArrangerObjectSelectionOperator (
35 QItemSelectionModel &selectionModel,
36 ObjectOwnerProvider objectOwnerProvider,
38 QObject * parent =
nullptr);
40 Q_INVOKABLE
bool moveByTicks (
double tick_delta);
42 Q_INVOKABLE
bool moveNotesByPitch (
int pitch_delta);
44 Q_INVOKABLE
bool changeVelocities (
int velocity_delta);
46 Q_INVOKABLE
bool moveAutomationPointsByDelta (
double delta);
48 Q_INVOKABLE
bool resizeObjects (
49 commands::ResizeType type,
50 commands::ResizeDirection direction,
53 Q_INVOKABLE
bool deleteObjects ();
55 Q_INVOKABLE
bool cloneObjects ();
57 Q_INVOKABLE
bool toggleMute ();
60 auto extractSelectedObjects ()
const -> SelectedObjectsVector;
62 static bool validateHorizontalMovement (
63 const SelectedObjectsVector &objects,
66 validateVerticalMovement (
const SelectedObjectsVector &objects,
double delta);
67 static bool validateResize (
68 const SelectedObjectsVector &objects,
69 commands::ResizeType type,
70 commands::ResizeDirection direction,
72 static bool validateBoundsResize (
73 structure::arrangement::ArrangerObjectPtrVariant obj_var,
74 commands::ResizeDirection direction,
76 static bool validateFadesResize (
78 commands::ResizeDirection direction,
81 bool process_vertical_move (
double delta);
85 QItemSelectionModel &selection_model_;
86 ObjectOwnerProvider object_owner_provider_;