void ControlRulerWidget::setSegments(RosegardenDocument *document, std::vector<Segment *> segments) { m_document = document; // m_segments = segments; // connect(m_document, SIGNAL(pointerPositionChanged(timeT)), // this, SLOT(slotPointerPositionChanged(timeT))); Composition &comp = document->getComposition(); Track *track = comp.getTrackById(segments[0]->getTrack()); Instrument *instr = document->getStudio(). getInstrumentById(track->getInstrument()); if (instr) { Device *device = instr->getDevice(); // Cast to a Controllable if possible, otherwise leave c NULL. Controllable *c = dynamic_cast<MidiDevice *>(device); if (!c) { c = dynamic_cast<SoftSynthDevice *>(device); } if (c) { m_controlList = &(c->getControlParameters()); } } SegmentSelection selection; selection.insert(segments.begin(), segments.end()); delete m_scale; setRulerScale(new SegmentsRulerScale(&m_document->getComposition(), selection, 0, Note(Note::Shortest).getDuration() / 2.0)); // This is single segment code setSegment(segments[0]); }
void ControlRulerWidget::setRulerScale(RulerScale *scale) { setRulerScale(scale, 0); }