16class ArrangerObjectSelectionOperator :
public QObject
21 QML_EXTENDED_NAMESPACE (zrythm::commands)
24 using SelectedObjectsVector =
25 std::vector<structure::arrangement::ArrangerObjectUuidReference>;
26 using ArrangerObjectOwnerPtrVariant = to_pointer_variant<wrap_variant_t<
27 structure::arrangement::ArrangerObjectVariant,
29 using ObjectOwnerProvider = std::function<ArrangerObjectOwnerPtrVariant (
30 structure::arrangement::ArrangerObjectPtrVariant)>;
32 explicit ArrangerObjectSelectionOperator (
34 QItemSelectionModel &selectionModel,
35 ObjectOwnerProvider objectOwnerProvider,
37 QObject * parent =
nullptr);
39 Q_INVOKABLE
bool moveByTicks (
double tick_delta);
41 Q_INVOKABLE
bool moveNotesByPitch (
int pitch_delta);
43 Q_INVOKABLE
bool changeVelocities (
int velocity_delta);
45 Q_INVOKABLE
bool moveAutomationPointsByDelta (
double delta);
47 Q_INVOKABLE
bool resizeObjects (
48 commands::ResizeType type,
49 commands::ResizeDirection direction,
52 Q_INVOKABLE
bool deleteObjects ();
54 Q_INVOKABLE
bool cloneObjects ();
57 auto extractSelectedObjects ()
const -> SelectedObjectsVector;
59 static bool validateHorizontalMovement (
60 const SelectedObjectsVector &objects,
63 validateVerticalMovement (
const SelectedObjectsVector &objects,
double delta);
64 static bool validateResize (
65 const SelectedObjectsVector &objects,
66 commands::ResizeType type,
67 commands::ResizeDirection direction,
69 static bool validateBoundsResize (
70 structure::arrangement::ArrangerObjectPtrVariant obj_var,
71 commands::ResizeDirection direction,
73 static bool validateFadesResize (
75 commands::ResizeDirection direction,
78 bool process_vertical_move (
double delta);
82 QItemSelectionModel &selection_model_;
83 ObjectOwnerProvider object_owner_provider_;