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 moveAutomationPointsByDelta (
double delta);
45 Q_INVOKABLE
bool resizeObjects (
46 commands::ResizeType type,
47 commands::ResizeDirection direction,
50 Q_INVOKABLE
bool deleteObjects ();
52 Q_INVOKABLE
bool cloneObjects ();
55 auto extractSelectedObjects ()
const -> SelectedObjectsVector;
57 static bool validateHorizontalMovement (
58 const SelectedObjectsVector &objects,
61 validateVerticalMovement (
const SelectedObjectsVector &objects,
double delta);
62 static bool validateResize (
63 const SelectedObjectsVector &objects,
64 commands::ResizeType type,
65 commands::ResizeDirection direction,
67 static bool validateBoundsResize (
68 structure::arrangement::ArrangerObjectPtrVariant obj_var,
69 commands::ResizeDirection direction,
71 static bool validateFadesResize (
73 commands::ResizeDirection direction,
76 bool process_vertical_move (
double delta);
80 QItemSelectionModel &selection_model_;
81 ObjectOwnerProvider object_owner_provider_;