本文整理汇总了C++中EventSelection类的典型用法代码示例。如果您正苦于以下问题:C++ EventSelection类的具体用法?C++ EventSelection怎么用?C++ EventSelection使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了EventSelection类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: EventSelection
EventSelection *
SymbolInsertionCommand::getSubsequentSelection()
{
EventSelection *selection = new EventSelection(getSegment());
selection->addEvent(getLastInsertedEvent());
return selection;
}
示例2: EventSelection
// Select exactly the beat-defining events, including any extra notes
// this command inserted.
// @author Tom Breton (Tehom)
EventSelection *
SelectAddEvenNotesCommand::getSubsequentSelection()
{
RG_DEBUG << "SelectAddEvenNotesCommand::getSubsequentSelection" << endl;
EventSelection *selection = new EventSelection(getSegment());
RG_DEBUG << (int)m_beatEventVector.size()
<< "elements in m_beatEventVector"
<< endl;
// Add the beat events we found to the selection
for (BeatEventVector::iterator i = m_beatEventVector.begin();
i != m_beatEventVector.end();
++i) {
BeatEvent &beatEvent = *i;
// Skip ties
selection->addEvent(beatEvent.m_event, false);
}
// Also add any events that we made.
RG_DEBUG << (int)m_eventsAdded.size()
<< "elements in redoEvents"
<< endl;
for (EventVector::const_iterator i = m_eventsAdded.begin();
i != m_eventsAdded.end();
++i) {
Event *e = *i;
// Skip ties
selection->addEvent(e, false);
}
return selection;
}
示例3: setBasicContextHelp
MatrixResizer::FollowMode
MatrixResizer::handleMouseMove(const MatrixMouseEvent *e)
{
if (!e) return NoFollow;
setBasicContextHelp();
if (!m_currentElement || !m_currentViewSegment) return NoFollow;
if (getSnapGrid()->getSnapSetting() != SnapGrid::NoSnap) {
setContextHelp(tr("Hold Shift to avoid snapping to beat grid"));
} else {
clearContextHelp();
}
// snap in the closest direction
timeT snapTime = e->snappedLeftTime;
if (e->snappedRightTime - e->time < e->time - e->snappedLeftTime) {
snapTime = e->snappedRightTime;
}
timeT newDuration = snapTime - m_currentElement->getViewAbsoluteTime();
timeT durationDiff = newDuration - m_currentElement->getViewDuration();
EventSelection* selection = m_scene->getSelection();
if (!selection || selection->getAddedEvents() == 0) return NoFollow;
EventSelection::eventcontainer::iterator it =
selection->getSegmentEvents().begin();
for (; it != selection->getSegmentEvents().end(); ++it) {
MatrixElement *element = 0;
ViewElementList::iterator vi = m_currentViewSegment->findEvent(*it);
if (vi != m_currentViewSegment->getViewElementList()->end()) {
element = static_cast<MatrixElement *>(*vi);
}
if (!element) continue;
timeT t = element->getViewAbsoluteTime();
timeT d = element->getViewDuration();
d = d + durationDiff;
if (d < 0) {
t = t + d;
d = -d;
} else if (d == 0) {
d = getSnapGrid()->getSnapTime(t);
}
element->reconfigure(t, d);
// m_currentStaff->positionElement(element);
// }
}
// m_mParentView->canvas()->update();
return FollowHorizontal;
}
示例4: BasicCommand
CollapseRestsCommand::CollapseRestsCommand
(EventSelection &selection) :
BasicCommand(getGlobalName(),
selection.getSegment(),
selection.getStartTime(),
selection.getEndTime())
{
// nothing else
}
示例5: newP1
/*!!!
void MatrixResizer::slotMatrixScrolled(int newX, int newY)
{
QPoint newP1(newX, newY), oldP1(m_parentView->getCanvasView()->contentsX(),
m_parentView->getCanvasView()->contentsY());
QPoint p(newX, newY);
if (newP1.x() > oldP1.x()) {
p.setX(newX + m_parentView->getCanvasView()->visibleWidth());
}
p = m_mParentView->inverseMapPoint(p);
int newTime = getSnapGrid()->snapX(p.x());
handleMouseMove(newTime, 0, 0);
}
*/
void MatrixResizer::setBasicContextHelp()
{
EventSelection *selection = m_scene->getSelection();
if (selection && selection->getAddedEvents() > 1) {
setContextHelp(tr("Click and drag to resize selected notes"));
} else {
setContextHelp(tr("Click and drag to resize a note"));
}
}
示例6: MacroCommand
CutAndCloseCommand::CutAndCloseCommand(EventSelection &selection,
Clipboard *clipboard) :
MacroCommand(getGlobalName())
{
addCommand(new CutCommand(selection, clipboard));
addCommand(new CloseCommand(&selection.getSegment(),
selection.getEndTime(),
selection.getStartTime()));
}
示例7: int
void
MatrixSelector::setContextHelpFor(const MatrixMouseEvent *e, bool ctrlPressed)
{
QSettings settings;
settings.beginGroup( GeneralOptionsConfigGroup );
if (! qStrToBool( settings.value("toolcontexthelp", "true" ) ) ) {
settings.endGroup();
return;
}
settings.endGroup();
MatrixElement *element = e->element;
if (!element) {
setContextHelp
(tr("Click and drag to select; middle-click and drag to draw new note"));
} else {
// same logic as in handleLeftButtonPress
float x = element->getLayoutX();
float width = element->getWidth();
float resizeStart = int(double(width) * 0.85) + x;
// max size of 10
if ((x + width) - resizeStart > 10) resizeStart = x + width - 10;
EventSelection *s = m_scene->getSelection();
if (e->sceneX > resizeStart) {
if (s && s->getAddedEvents() > 1) {
setContextHelp(tr("Click and drag to resize selected notes"));
} else {
setContextHelp(tr("Click and drag to resize note"));
}
} else {
if (s && s->getAddedEvents() > 1) {
if (!ctrlPressed) {
setContextHelp(tr("Click and drag to move selected notes; hold Ctrl as well to copy"));
} else {
setContextHelp(tr("Click and drag to copy selected notes"));
}
} else {
if (!ctrlPressed) {
setContextHelp(tr("Click and drag to move note; hold Ctrl as well to copy"));
} else {
setContextHelp(tr("Click and drag to copy note"));
}
}
}
}
}
示例8: BasicCommand
BasicSelectionCommand::BasicSelectionCommand(const QString &name,
EventSelection &selection,
bool bruteForceRedo) :
BasicCommand(name,
selection.getSegment(),
selection.getStartTime(),
selection.getEndTime(),
bruteForceRedo)
{
// nothing
}
示例9: BasicCommand
EventUnquantizeCommand::EventUnquantizeCommand(
EventSelection &selection,
Quantizer *quantizer) :
BasicCommand(tr("Unquantize Events"),
selection.getSegment(),
selection.getStartTime(),
selection.getEndTime(),
true), // bruteForceRedo
m_quantizer(quantizer),
m_selection(&selection)
{
// nothing else
}
示例10: Q_ASSERT_X
void
PitchBendSequenceDialog::accept()
{
/* The user has finished the dialog, other than aborting. */
// We don't enable "OK" if the interval isn't sensible, so
// something's badly wrong if this test fails.
Q_ASSERT_X(m_startTime < m_endTime, "accept",
"got a zero or negative time interval");
/* Save current settings. They'll be the defaults next time. */
saveSettings();
// TRANSLATORS: The arg value will be either a controller name or
// Pitchbend, so the resulting text is like "Pitchbend Sequence",
// "Expression Sequence", etc.
QString controllerName(m_control.getName().data());
QString commandName(tr("%1 Sequence").arg(controllerName));
MacroCommand *macro = new MacroCommand(commandName);
if (getReplaceMode() != OnlyAdd) {
// Selection initially contains no event, and we add all the
// relevant ones.
EventSelection *selection = new EventSelection(*m_segment);
for (Segment::const_iterator i = m_segment->findTime(m_startTime);
i != m_segment->findTime(m_endTime);
++i) {
Event *e = *i;
if (m_control.matches(e)) {
selection->addEvent(e, false);
}
}
// EraseCommand takes ownership of "selection".
macro->addCommand(new EraseCommand(*selection));
}
if (getReplaceMode() != OnlyErase) {
if ((getRampMode() == Linear) &&
(getStepSizeCalculation() == StepSizeByCount)) {
addLinearCountedEvents(macro);
} else {
addStepwiseEvents(macro);
}
}
CommandHistory::getInstance()->addCommand(macro);
QDialog::accept();
}
示例11: setBasicContextHelp
void MatrixMover::setBasicContextHelp(bool ctrlPressed)
{
EventSelection *selection = m_scene->getSelection();
if (!selection || selection->getAddedEvents() < 2) {
if (!ctrlPressed) {
setContextHelp(tr("Click and drag to move a note; hold Ctrl as well to copy it"));
} else {
setContextHelp(tr("Click and drag to copy a note"));
}
} else {
if (!ctrlPressed) {
setContextHelp(tr("Click and drag to move selected notes; hold Ctrl as well to copy"));
} else {
setContextHelp(tr("Click and drag to copy selected notes"));
}
}
}
示例12: NamedCommand
CopyCommand::CopyCommand(EventSelection &selection,
Clipboard *clipboard) :
NamedCommand(getGlobalName()),
m_targetClipboard(clipboard)
{
m_sourceClipboard = new Clipboard;
m_savedClipboard = 0;
std::string label = selection.getSegment().getLabel();
m_sourceClipboard->newSegment(&selection)->setLabel(
appendLabel(label, qstrtostr(tr("(excerpt)"))));
}
示例13: getSelection
void
MatrixSelector::setViewCurrentSelection(bool always)
{
if (always) m_previousCollisions.clear();
EventSelection* selection = 0;
bool changed = getSelection(selection);
if (!changed) {
delete selection;
return;
}
if (m_selectionToMerge && selection &&
m_selectionToMerge->getSegment() == selection->getSegment()) {
selection->addFromSelection(m_selectionToMerge);
m_scene->setSelection(selection, true);
} else if (!m_selectionToMerge) {
m_scene->setSelection(selection, true);
}
}
示例14: EventSelection
void
MatrixResizer::handleLeftButtonPress(const MatrixMouseEvent *e)
{
MATRIX_DEBUG << "MatrixResizer::handleLeftButtonPress() : el = "
<< e->element << endl;
if (!e->element) return;
m_currentViewSegment = e->viewSegment;
m_currentElement = e->element;
// Add this element and allow movement
//
EventSelection* selection = m_scene->getSelection();
Event *event = m_currentElement->event();
if (selection) {
EventSelection *newSelection;
if ((e->modifiers & Qt::ShiftModifier) ||
selection->contains(event)) {
newSelection = new EventSelection(*selection);
} else {
newSelection = new EventSelection(m_currentViewSegment->getSegment());
}
newSelection->addEvent(event);
m_scene->setSelection(newSelection, true);
// m_mParentView->canvas()->update();
} else {
m_scene->setSingleSelectedEvent(m_currentViewSegment,
m_currentElement,
true);
// m_mParentView->canvas()->update();
}
}
示例15: BasicCommand
AddIndicationCommand::AddIndicationCommand(std::string indicationType,
EventSelection &selection) :
BasicCommand(getGlobalName(indicationType),
selection.getSegment(),
std::min(selection.getStartTime(), selection.getNotationStartTime()),
std::max(selection.getEndTime(), selection.getNotationEndTime())),
m_indicationType(indicationType),
m_indicationStart(selection.getNotationStartTime()),
m_indicationDuration(selection.getTotalNotationDuration()),
m_lastInsertedEvent(0)
{
if (!canExecute()) {
throw CommandFailed
//!!! need to use text from trunk/src/gui/editors/notation/NotationView.cpp (but this requires an informal human-readable version of the indication name)
(qstrtostr(tr("Can't add identical overlapping indications")));
}
}