mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-09-16 16:30:26 +02:00
2021-03-16 Fred Gleason <fredg@paravelsystems.com>
* Implemented basic marker limit interlocking in 'RDMarkerView'. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
4e997f9461
commit
5e9682f1d2
@ -21271,3 +21271,5 @@
|
|||||||
* Added a 'RDMarkerReadout' class.
|
* Added a 'RDMarkerReadout' class.
|
||||||
2021-03-15 Fred Gleason <fredg@paravelsystems.com>
|
2021-03-15 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Implemented saving marker positions in 'RDMarkerDialog'.
|
* Implemented saving marker positions in 'RDMarkerDialog'.
|
||||||
|
2021-03-16 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Implemented basic marker limit interlocking in 'RDMarkerView'.
|
||||||
|
@ -3611,6 +3611,30 @@ Out</translation>
|
|||||||
<source>Fade Down</source>
|
<source>Fade Down</source>
|
||||||
<translation type="obsolete">Zeslabit</translation>
|
<translation type="obsolete">Zeslabit</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Talk Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Segue Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Hook Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Up Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Down Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Delete Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDMatrixListModel</name>
|
<name>RDMatrixListModel</name>
|
||||||
|
@ -3600,6 +3600,30 @@ Out</translation>
|
|||||||
<source>Fade Down</source>
|
<source>Fade Down</source>
|
||||||
<translation type="obsolete">Ausfaden</translation>
|
<translation type="obsolete">Ausfaden</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Talk Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Segue Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Hook Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Up Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Down Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Delete Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDMatrixListModel</name>
|
<name>RDMatrixListModel</name>
|
||||||
|
@ -3587,6 +3587,30 @@ Todo</translation>
|
|||||||
<source>Fade Down</source>
|
<source>Fade Down</source>
|
||||||
<translation type="obsolete">Fade de salida</translation>
|
<translation type="obsolete">Fade de salida</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Talk Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Segue Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Hook Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Up Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Down Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Delete Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDMatrixListModel</name>
|
<name>RDMatrixListModel</name>
|
||||||
|
@ -2997,6 +2997,30 @@ Out</source>
|
|||||||
<source>No such cart/cut!</source>
|
<source>No such cart/cut!</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Talk Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Segue Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Hook Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Up Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Down Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Delete Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDMatrixListModel</name>
|
<name>RDMatrixListModel</name>
|
||||||
|
@ -3550,6 +3550,30 @@ ut</translation>
|
|||||||
<source>Fade Down</source>
|
<source>Fade Down</source>
|
||||||
<translation type="obsolete">Ton ut</translation>
|
<translation type="obsolete">Ton ut</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Talk Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Segue Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Hook Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Up Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Down Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Delete Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDMatrixListModel</name>
|
<name>RDMatrixListModel</name>
|
||||||
|
@ -3550,6 +3550,30 @@ ut</translation>
|
|||||||
<source>Fade Down</source>
|
<source>Fade Down</source>
|
||||||
<translation type="obsolete">Ton ut</translation>
|
<translation type="obsolete">Ton ut</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Talk Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Segue Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Hook Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Up Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Down Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Delete Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDMatrixListModel</name>
|
<name>RDMatrixListModel</name>
|
||||||
|
@ -3590,6 +3590,30 @@ Mínimo</translation>
|
|||||||
<source>Fade Down</source>
|
<source>Fade Down</source>
|
||||||
<translation type="obsolete">Fade Down</translation>
|
<translation type="obsolete">Fade Down</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Talk Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Segue Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Hook Markers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Up Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Add Fade Down Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Delete Marker</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDMatrixListModel</name>
|
<name>RDMatrixListModel</name>
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include <QGraphicsLineItem>
|
#include <QGraphicsLineItem>
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
#include <QGraphicsSceneMouseEvent>
|
#include <QGraphicsSceneMouseEvent>
|
||||||
|
#include <QMouseEvent>
|
||||||
#include <QPen>
|
#include <QPen>
|
||||||
#include <QPolygonF>
|
#include <QPolygonF>
|
||||||
|
|
||||||
@ -104,6 +105,8 @@ void RDMarkerHandle::setRange(int min,int max)
|
|||||||
|
|
||||||
void RDMarkerHandle::mousePressEvent(QGraphicsSceneMouseEvent *e)
|
void RDMarkerHandle::mousePressEvent(QGraphicsSceneMouseEvent *e)
|
||||||
{
|
{
|
||||||
|
RDMarkerView *view=static_cast<RDMarkerView *>(d_marker_view);
|
||||||
|
|
||||||
if(e->button()==Qt::LeftButton) {
|
if(e->button()==Qt::LeftButton) {
|
||||||
e->accept();
|
e->accept();
|
||||||
if(d_peers.size()==0) {
|
if(d_peers.size()==0) {
|
||||||
@ -116,6 +119,11 @@ void RDMarkerHandle::mousePressEvent(QGraphicsSceneMouseEvent *e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(e->button()==Qt::RightButton) {
|
||||||
|
e->ignore();
|
||||||
|
view->processRightClick(d_role,e->screenPos());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -128,9 +136,16 @@ void RDMarkerHandle::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
|
|||||||
//
|
//
|
||||||
int corr=0;
|
int corr=0;
|
||||||
int x=pos().x()-LEFT_MARGIN;
|
int x=pos().x()-LEFT_MARGIN;
|
||||||
if(x<d_minimum) {
|
if((d_minimum>=0)&&(x<d_minimum)) {
|
||||||
corr=d_minimum-x;
|
corr=d_minimum-x;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if((d_maximum>=0)&&(x>d_maximum)) {
|
||||||
|
corr=d_maximum-x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// printf("x: %d d_minimum: %d corr: %d lastPos: %d\n",x,d_minimum,corr,
|
||||||
|
// e->lastPos().x());
|
||||||
|
|
||||||
//
|
//
|
||||||
// Update the Marker Graphics
|
// Update the Marker Graphics
|
||||||
@ -140,29 +155,17 @@ void RDMarkerHandle::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
|
|||||||
QGraphicsItem *peer=d_peers.at(i);
|
QGraphicsItem *peer=d_peers.at(i);
|
||||||
peer->setPos(peer->pos().x()+dx,peer->pos().y());
|
peer->setPos(peer->pos().x()+dx,peer->pos().y());
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
qreal dx=e->pos().rx()-e->lastPos().rx();
|
|
||||||
for(int i=0;i<d_peers.size();i++) {
|
|
||||||
QGraphicsItem *peer=d_peers.at(i);
|
|
||||||
peer->setPos(peer->pos().rx()+dx,peer->pos().ry());
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
//
|
//
|
||||||
// Send Position
|
// Send Position
|
||||||
//
|
//
|
||||||
view->updatePosition(d_role,x-corr);
|
view->updatePosition(d_role,x+corr);
|
||||||
// view->updatePosition(d_role,pos().x()-LEFT_MARGIN);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void RDMarkerHandle::mouseReleaseEvent(QGraphicsSceneMouseEvent *e)
|
void RDMarkerHandle::mouseReleaseEvent(QGraphicsSceneMouseEvent *e)
|
||||||
{
|
{
|
||||||
RDMarkerView *view=static_cast<RDMarkerView *>(d_marker_view);
|
// RDMarkerView *view=static_cast<RDMarkerView *>(d_marker_view);
|
||||||
|
|
||||||
//
|
|
||||||
// Send Position
|
|
||||||
//
|
|
||||||
// view->updatePosition(d_role,pos().x()-LEFT_MARGIN);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -305,6 +308,7 @@ RDMarkerView::RDMarkerView(int width,int height,QWidget *parent)
|
|||||||
d_height=height;
|
d_height=height;
|
||||||
d_scene=NULL;
|
d_scene=NULL;
|
||||||
d_sample_rate=rda->system()->sampleRate();
|
d_sample_rate=rda->system()->sampleRate();
|
||||||
|
d_right_margin=0;
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
d_view=new QGraphicsView(this);
|
d_view=new QGraphicsView(this);
|
||||||
@ -321,6 +325,25 @@ RDMarkerView::RDMarkerView(int width,int height,QWidget *parent)
|
|||||||
d_pointer_fields.push_back("HOOK_END_POINT");
|
d_pointer_fields.push_back("HOOK_END_POINT");
|
||||||
d_pointer_fields.push_back("FADEUP_POINT");
|
d_pointer_fields.push_back("FADEUP_POINT");
|
||||||
d_pointer_fields.push_back("FADEDOWN_POINT");
|
d_pointer_fields.push_back("FADEDOWN_POINT");
|
||||||
|
|
||||||
|
//
|
||||||
|
// The Main Mouse Menu
|
||||||
|
//
|
||||||
|
d_main_menu=new QMenu(this);
|
||||||
|
connect(d_main_menu,SIGNAL(aboutToShow()),this,SLOT(updateMenuData()));
|
||||||
|
d_delete_marker_action=d_main_menu->
|
||||||
|
addAction(tr("Delete Marker"),this,SLOT(deleteMarkerData()));
|
||||||
|
d_main_menu->addSeparator();
|
||||||
|
d_add_talk_action=d_main_menu->
|
||||||
|
addAction(tr("Add Talk Markers"),this,SLOT(addTalkData()));
|
||||||
|
d_add_segue_action=d_main_menu->
|
||||||
|
addAction(tr("Add Segue Markers"),this,SLOT(addSegueData()));
|
||||||
|
d_add_hook_action=d_main_menu->
|
||||||
|
addAction(tr("Add Hook Markers"),this,SLOT(addHookData()));
|
||||||
|
d_add_fadeup_action=d_main_menu->
|
||||||
|
addAction(tr("Add Fade Up Marker"),this,SLOT(addFadeupData()));
|
||||||
|
d_add_fadedown_action=d_main_menu->
|
||||||
|
addAction(tr("Add Fade Down Marker"),this,SLOT(addFadedownData()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -331,6 +354,7 @@ RDMarkerView::~RDMarkerView()
|
|||||||
}
|
}
|
||||||
delete d_wave_factory;
|
delete d_wave_factory;
|
||||||
delete d_view;
|
delete d_view;
|
||||||
|
delete d_main_menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -370,6 +394,28 @@ bool RDMarkerView::hasUnsavedChanges() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::processRightClick(RDMarkerHandle::PointerRole role,
|
||||||
|
const QPointF &pos)
|
||||||
|
{
|
||||||
|
d_deleting_roles.push_back(role);
|
||||||
|
if((role==RDMarkerHandle::SegueStart)||
|
||||||
|
(role==RDMarkerHandle::TalkStart)||
|
||||||
|
(role==RDMarkerHandle::HookStart)) {
|
||||||
|
d_deleting_roles.push_back((RDMarkerHandle::PointerRole)(role+1));
|
||||||
|
}
|
||||||
|
if((role==RDMarkerHandle::SegueEnd)||
|
||||||
|
(role==RDMarkerHandle::TalkEnd)||
|
||||||
|
(role==RDMarkerHandle::HookEnd)) {
|
||||||
|
d_deleting_roles.push_back((RDMarkerHandle::PointerRole)(role-1));
|
||||||
|
}
|
||||||
|
d_marker_menu_used=true;
|
||||||
|
d_main_menu->setGeometry(pos.x(),pos.y(),
|
||||||
|
d_main_menu->sizeHint().width(),
|
||||||
|
d_main_menu->sizeHint().height());
|
||||||
|
d_main_menu->exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void RDMarkerView::updatePosition(RDMarkerHandle::PointerRole role, int offset)
|
void RDMarkerView::updatePosition(RDMarkerHandle::PointerRole role, int offset)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@ -413,6 +459,7 @@ bool RDMarkerView::setCut(QString *err_msg,unsigned cartnum,int cutnum)
|
|||||||
{
|
{
|
||||||
d_cart_number=cartnum;
|
d_cart_number=cartnum;
|
||||||
d_cut_number=cutnum;
|
d_cut_number=cutnum;
|
||||||
|
d_right_margin=LEFT_MARGIN; // Default value
|
||||||
if(!LoadCutData()) {
|
if(!LoadCutData()) {
|
||||||
*err_msg=tr("No such cart/cut!");
|
*err_msg=tr("No such cart/cut!");
|
||||||
return false;
|
return false;
|
||||||
@ -458,12 +505,119 @@ void RDMarkerView::clear()
|
|||||||
}
|
}
|
||||||
for(int i=0;i<RDMarkerHandle::LastRole;i++) {
|
for(int i=0;i<RDMarkerHandle::LastRole;i++) {
|
||||||
d_pointers[i]=-1;
|
d_pointers[i]=-1;
|
||||||
|
for(int j=0;j<2;j++) {
|
||||||
|
d_handles[i][j]=NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
d_shrink_factor=1;
|
d_shrink_factor=1;
|
||||||
d_max_shrink_factor=1;
|
d_max_shrink_factor=1;
|
||||||
d_pad_size=0;
|
d_pad_size=0;
|
||||||
d_audio_gain=900;
|
d_audio_gain=900;
|
||||||
d_has_unsaved_changes=false;
|
d_has_unsaved_changes=false;
|
||||||
|
d_marker_menu_used=false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::updateMenuData()
|
||||||
|
{
|
||||||
|
bool can_add=
|
||||||
|
(Msec(d_mouse_pos)>=d_pointers[RDMarkerHandle::CutStart])&&
|
||||||
|
(Msec(d_mouse_pos)<d_pointers[RDMarkerHandle::CutEnd]);
|
||||||
|
bool can_delete=
|
||||||
|
d_marker_menu_used&&
|
||||||
|
(!d_deleting_roles.contains(RDMarkerHandle::CutStart))&&
|
||||||
|
(!d_deleting_roles.contains(RDMarkerHandle::CutEnd));
|
||||||
|
if(can_delete) {
|
||||||
|
can_add=false;
|
||||||
|
}
|
||||||
|
|
||||||
|
d_delete_marker_action->setEnabled(can_delete);
|
||||||
|
d_add_fadedown_action->
|
||||||
|
setEnabled(can_add&&(d_pointers[RDMarkerHandle::FadeDown]<0));
|
||||||
|
d_add_fadeup_action->
|
||||||
|
setEnabled(can_add&&(d_pointers[RDMarkerHandle::FadeUp]<0));
|
||||||
|
d_add_hook_action->
|
||||||
|
setEnabled(can_add&&(d_pointers[RDMarkerHandle::HookStart]<0));
|
||||||
|
d_add_segue_action->
|
||||||
|
setEnabled(can_add&&(d_pointers[RDMarkerHandle::SegueStart]<0));
|
||||||
|
d_add_talk_action->
|
||||||
|
setEnabled(can_add&&(d_pointers[RDMarkerHandle::TalkStart]<0));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::addTalkData()
|
||||||
|
{
|
||||||
|
d_pointers[RDMarkerHandle::TalkStart]=Msec(d_mouse_pos);
|
||||||
|
d_pointers[RDMarkerHandle::TalkEnd]=Msec(d_mouse_pos);
|
||||||
|
|
||||||
|
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::TalkStart,60);
|
||||||
|
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::TalkEnd,60);
|
||||||
|
|
||||||
|
emit pointerValueChanged(RDMarkerHandle::TalkStart,
|
||||||
|
d_pointers[RDMarkerHandle::TalkStart]);
|
||||||
|
emit pointerValueChanged(RDMarkerHandle::TalkEnd,
|
||||||
|
d_pointers[RDMarkerHandle::TalkEnd]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::addSegueData()
|
||||||
|
{
|
||||||
|
d_pointers[RDMarkerHandle::SegueStart]=Msec(d_mouse_pos);
|
||||||
|
d_pointers[RDMarkerHandle::SegueEnd]=Msec(d_mouse_pos);
|
||||||
|
|
||||||
|
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::SegueStart,40);
|
||||||
|
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::SegueEnd,40);
|
||||||
|
|
||||||
|
emit pointerValueChanged(RDMarkerHandle::SegueStart,
|
||||||
|
d_pointers[RDMarkerHandle::SegueStart]);
|
||||||
|
emit pointerValueChanged(RDMarkerHandle::SegueEnd,
|
||||||
|
d_pointers[RDMarkerHandle::SegueEnd]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::addHookData()
|
||||||
|
{
|
||||||
|
d_pointers[RDMarkerHandle::HookStart]=Msec(d_mouse_pos);
|
||||||
|
d_pointers[RDMarkerHandle::HookEnd]=Msec(d_mouse_pos);
|
||||||
|
|
||||||
|
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::HookStart,100);
|
||||||
|
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::HookEnd,100);
|
||||||
|
|
||||||
|
emit pointerValueChanged(RDMarkerHandle::HookStart,
|
||||||
|
d_pointers[RDMarkerHandle::HookStart]);
|
||||||
|
emit pointerValueChanged(RDMarkerHandle::HookEnd,
|
||||||
|
d_pointers[RDMarkerHandle::HookEnd]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::addFadeupData()
|
||||||
|
{
|
||||||
|
d_pointers[RDMarkerHandle::FadeUp]=Msec(d_mouse_pos);
|
||||||
|
|
||||||
|
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::FadeUp,80);
|
||||||
|
|
||||||
|
emit pointerValueChanged(RDMarkerHandle::FadeUp,
|
||||||
|
d_pointers[RDMarkerHandle::FadeUp]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::addFadedownData()
|
||||||
|
{
|
||||||
|
d_pointers[RDMarkerHandle::FadeDown]=Msec(d_mouse_pos);
|
||||||
|
|
||||||
|
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::FadeDown,80);
|
||||||
|
|
||||||
|
emit pointerValueChanged(RDMarkerHandle::FadeDown,
|
||||||
|
d_pointers[RDMarkerHandle::FadeDown]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::deleteMarkerData()
|
||||||
|
{
|
||||||
|
for(int i=0;i<d_deleting_roles.size();i++) {
|
||||||
|
RemoveMarker(d_deleting_roles.at(i));
|
||||||
|
}
|
||||||
|
d_deleting_roles.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -476,24 +630,141 @@ void RDMarkerView::updateInterlocks()
|
|||||||
|
|
||||||
d_handles[RDMarkerHandle::CutEnd][i]->
|
d_handles[RDMarkerHandle::CutEnd][i]->
|
||||||
setMinimum(d_handles[RDMarkerHandle::CutStart][i]->pos().x()-LEFT_MARGIN);
|
setMinimum(d_handles[RDMarkerHandle::CutStart][i]->pos().x()-LEFT_MARGIN);
|
||||||
// d_handles[RDMarkerHandle::CutStart][i]->
|
d_handles[RDMarkerHandle::CutEnd][i]->
|
||||||
// setMaximum();
|
setMaximum(d_right_margin-LEFT_MARGIN);
|
||||||
|
|
||||||
|
/*
|
||||||
|
if(d_handles[RDMarkerHandle::TalkStart][i]!=NULL) {
|
||||||
|
d_handles[RDMarkerHandle::TalkStart][i]->
|
||||||
|
setMinimum(d_handles[RDMarkerHandle::CutStart][i]->
|
||||||
|
pos().x()-LEFT_MARGIN);
|
||||||
|
d_handles[RDMarkerHandle::TalkStart][i]->
|
||||||
|
setMaximum(d_handles[RDMarkerHandle::TalkEnd][i]->
|
||||||
|
pos().x()-LEFT_MARGIN);
|
||||||
|
|
||||||
|
d_handles[RDMarkerHandle::TalkEnd][i]->
|
||||||
|
setMinimum(d_handles[RDMarkerHandle::TalkStart][i]->
|
||||||
|
pos().x()-LEFT_MARGIN);
|
||||||
|
d_handles[RDMarkerHandle::TalkEnd][i]->
|
||||||
|
setMaximum(d_handles[RDMarkerHandle::CutEnd][i]->
|
||||||
|
pos().x()-LEFT_MARGIN);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
InterlockMarkerPair(RDMarkerHandle::TalkStart);
|
||||||
|
InterlockMarkerPair(RDMarkerHandle::SegueStart);
|
||||||
|
InterlockMarkerPair(RDMarkerHandle::HookStart);
|
||||||
|
InterlockMarkerPair(RDMarkerHandle::FadeUp);
|
||||||
|
|
||||||
|
// printf("d_right_margin: %d\n",d_right_margin);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::InterlockMarkerPair(RDMarkerHandle::PointerRole start_marker)
|
||||||
|
{
|
||||||
|
for(int i=0;i<2;i++) {
|
||||||
|
if(d_handles[start_marker][i]!=NULL) {
|
||||||
|
d_handles[start_marker][i]->
|
||||||
|
setMinimum(d_handles[RDMarkerHandle::CutStart][i]->
|
||||||
|
pos().x()-LEFT_MARGIN);
|
||||||
|
if(d_handles[start_marker+1][i]==NULL) {
|
||||||
|
d_handles[start_marker][i]->
|
||||||
|
setMaximum(d_handles[RDMarkerHandle::CutEnd][i]->
|
||||||
|
pos().x()-LEFT_MARGIN);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
d_handles[start_marker][i]->
|
||||||
|
setMaximum(d_handles[start_marker+1][i]->
|
||||||
|
pos().x()-LEFT_MARGIN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(d_handles[start_marker+1][i]!=NULL) {
|
||||||
|
if(d_handles[start_marker][i]==NULL) {
|
||||||
|
d_handles[start_marker+1][i]->
|
||||||
|
setMinimum(d_handles[RDMarkerHandle::CutStart][i]->
|
||||||
|
pos().x()-LEFT_MARGIN);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
d_handles[start_marker+1][i]->
|
||||||
|
setMinimum(d_handles[start_marker][i]->
|
||||||
|
pos().x()-LEFT_MARGIN);
|
||||||
|
}
|
||||||
|
d_handles[start_marker+1][i]->
|
||||||
|
setMaximum(d_handles[RDMarkerHandle::CutEnd][i]->
|
||||||
|
pos().x()-LEFT_MARGIN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void RDMarkerView::resizeEvent(QResizeEvent *e)
|
void RDMarkerView::resizeEvent(QResizeEvent *e)
|
||||||
{
|
{
|
||||||
d_view->setGeometry(0,0,size().width(),size().height());
|
d_view->setGeometry(0,0,size().width(),size().height());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::mousePressEvent(QMouseEvent *e)
|
||||||
|
{
|
||||||
|
if((e->x()<=LEFT_MARGIN)||(e->x()>d_right_margin)) {
|
||||||
|
QWidget::mousePressEvent(e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
d_mouse_pos=e->x()-LEFT_MARGIN;
|
||||||
|
switch(e->button()) {
|
||||||
|
/*
|
||||||
|
case Qt::LeftButton:
|
||||||
|
left_button_pressed=true;
|
||||||
|
if(edit_cue_point!=RDEditAudio::Play) {
|
||||||
|
ignore_pause=true;
|
||||||
|
PositionCursor(cursor);
|
||||||
|
ignore_pause=false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ignore_pause=true;
|
||||||
|
rda->cae()->positionPlay(edit_handle,GetTime(cursor));
|
||||||
|
ignore_pause=false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Qt::MidButton:
|
||||||
|
center_button_pressed=true;
|
||||||
|
ignore_pause=true;
|
||||||
|
rda->cae()->positionPlay(edit_handle,GetTime(cursor));
|
||||||
|
ignore_pause=false;
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
case Qt::RightButton:
|
||||||
|
if(d_marker_menu_used) {
|
||||||
|
d_marker_menu_used=false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
d_main_menu->setGeometry(e->globalX(),e->globalY(),
|
||||||
|
d_main_menu->sizeHint().width(),
|
||||||
|
d_main_menu->sizeHint().height());
|
||||||
|
d_main_menu->exec();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int RDMarkerView::Frame(int msec) const
|
int RDMarkerView::Frame(int msec) const
|
||||||
{
|
{
|
||||||
return (int)((int64_t)msec*(int64_t)d_sample_rate/(d_shrink_factor*1152000));
|
return (int)((int64_t)msec*(int64_t)d_sample_rate/(d_shrink_factor*1152000));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int RDMarkerView::Msec(int frame) const
|
||||||
|
{
|
||||||
|
return (int)((int64_t)frame*d_shrink_factor*1152000/(int64_t)d_sample_rate);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool RDMarkerView::LoadCutData()
|
bool RDMarkerView::LoadCutData()
|
||||||
{
|
{
|
||||||
QString sql;
|
QString sql;
|
||||||
@ -536,12 +807,13 @@ void RDMarkerView::WriteWave()
|
|||||||
d_scene->addRect(0,0,LEFT_MARGIN,d_height-20,QPen(Qt::gray),QBrush(Qt::gray));
|
d_scene->addRect(0,0,LEFT_MARGIN,d_height-20,QPen(Qt::gray),QBrush(Qt::gray));
|
||||||
d_scene->addPixmap(wavemap)->setPos(LEFT_MARGIN,0);
|
d_scene->addPixmap(wavemap)->setPos(LEFT_MARGIN,0);
|
||||||
d_scene->addRect(LEFT_MARGIN+wavemap.width(),0,d_pad_size,d_height-20,QPen(Qt::gray),QBrush(Qt::gray));
|
d_scene->addRect(LEFT_MARGIN+wavemap.width(),0,d_pad_size,d_height-20,QPen(Qt::gray),QBrush(Qt::gray));
|
||||||
|
d_right_margin=LEFT_MARGIN+wavemap.width();
|
||||||
|
|
||||||
//
|
//
|
||||||
// Markers
|
// Markers
|
||||||
//
|
//
|
||||||
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::FadeUp,100);
|
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::FadeUp,100);
|
||||||
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::FadeDown,100);
|
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::FadeDown,100);
|
||||||
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::HookStart,80);
|
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::HookStart,80);
|
||||||
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::HookEnd,80);
|
DrawMarker(RDMarkerHandle::End,RDMarkerHandle::HookEnd,80);
|
||||||
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::TalkStart,60);
|
DrawMarker(RDMarkerHandle::Start,RDMarkerHandle::TalkStart,60);
|
||||||
@ -577,3 +849,21 @@ void RDMarkerView::DrawMarker(RDMarkerHandle::PointerType type,
|
|||||||
d_handles[role][1]=m_item;
|
d_handles[role][1]=m_item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMarkerView::RemoveMarker(RDMarkerHandle::PointerRole role)
|
||||||
|
{
|
||||||
|
d_pointers[role]=-1;
|
||||||
|
QList<QGraphicsItem *> items=d_scene->items();
|
||||||
|
for(int i=items.size()-1;i>=0;i--) {
|
||||||
|
QGraphicsItem *item=items.at(i);
|
||||||
|
if(item->toolTip().contains(RDMarkerHandle::pointerRoleText(role))) {
|
||||||
|
d_scene->removeItem(item);
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int i=0;i<2;i++) {
|
||||||
|
d_handles[role][i]=NULL;
|
||||||
|
}
|
||||||
|
emit pointerValueChanged(role,-1);
|
||||||
|
}
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
#include <QGraphicsView>
|
#include <QGraphicsView>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
#include <QMenu>
|
||||||
|
|
||||||
#include <rdcut.h>
|
#include <rdcut.h>
|
||||||
#include <rdwavefactory.h>
|
#include <rdwavefactory.h>
|
||||||
@ -79,7 +80,10 @@ class RDMarkerView : public QWidget
|
|||||||
int shrinkFactor() const;
|
int shrinkFactor() const;
|
||||||
int pointerValue(RDMarkerHandle::PointerRole role);
|
int pointerValue(RDMarkerHandle::PointerRole role);
|
||||||
bool hasUnsavedChanges() const;
|
bool hasUnsavedChanges() const;
|
||||||
void updatePosition(RDMarkerHandle::PointerRole role, int offset);
|
|
||||||
|
void processRightClick(RDMarkerHandle::PointerRole role,
|
||||||
|
const QPointF &pos);
|
||||||
|
void updatePosition(RDMarkerHandle::PointerRole role,int offset);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setAudioGain(int lvl);
|
void setAudioGain(int lvl);
|
||||||
@ -92,16 +96,29 @@ class RDMarkerView : public QWidget
|
|||||||
signals:
|
signals:
|
||||||
void pointerValueChanged(RDMarkerHandle::PointerRole role,int msec);
|
void pointerValueChanged(RDMarkerHandle::PointerRole role,int msec);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void updateMenuData();
|
||||||
|
void addTalkData();
|
||||||
|
void addSegueData();
|
||||||
|
void addHookData();
|
||||||
|
void addFadeupData();
|
||||||
|
void addFadedownData();
|
||||||
|
void deleteMarkerData();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void updateInterlocks();
|
virtual void updateInterlocks();
|
||||||
void resizeEvent(QResizeEvent *e);
|
void resizeEvent(QResizeEvent *e);
|
||||||
|
void mousePressEvent(QMouseEvent *e);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int Frame(int msec) const;
|
int Frame(int msec) const;
|
||||||
|
int Msec(int frame) const;
|
||||||
|
void InterlockMarkerPair(RDMarkerHandle::PointerRole start_marker);
|
||||||
bool LoadCutData();
|
bool LoadCutData();
|
||||||
void WriteWave();
|
void WriteWave();
|
||||||
void DrawMarker(RDMarkerHandle::PointerType type,
|
void DrawMarker(RDMarkerHandle::PointerType type,
|
||||||
RDMarkerHandle::PointerRole role,int handle_pos);
|
RDMarkerHandle::PointerRole role,int handle_pos);
|
||||||
|
void RemoveMarker(RDMarkerHandle::PointerRole role);
|
||||||
QGraphicsView *d_view;
|
QGraphicsView *d_view;
|
||||||
QGraphicsScene *d_scene;
|
QGraphicsScene *d_scene;
|
||||||
unsigned d_cart_number;
|
unsigned d_cart_number;
|
||||||
@ -114,11 +131,23 @@ class RDMarkerView : public QWidget
|
|||||||
int d_audio_gain;
|
int d_audio_gain;
|
||||||
unsigned d_sample_rate;
|
unsigned d_sample_rate;
|
||||||
unsigned d_channels;
|
unsigned d_channels;
|
||||||
|
int d_mouse_pos;
|
||||||
|
int d_right_margin;
|
||||||
QStringList d_pointer_fields;
|
QStringList d_pointer_fields;
|
||||||
RDWaveFactory *d_wave_factory;
|
RDWaveFactory *d_wave_factory;
|
||||||
bool d_has_unsaved_changes;
|
bool d_has_unsaved_changes;
|
||||||
int d_pointers[RDMarkerHandle::LastRole];
|
int d_pointers[RDMarkerHandle::LastRole];
|
||||||
RDMarkerHandle *d_handles[RDMarkerHandle::LastRole][2];
|
RDMarkerHandle *d_handles[RDMarkerHandle::LastRole][2];
|
||||||
|
int d_audio_end;
|
||||||
|
QMenu *d_main_menu;
|
||||||
|
QAction *d_add_fadedown_action;
|
||||||
|
QAction *d_add_fadeup_action;
|
||||||
|
QAction *d_add_hook_action;
|
||||||
|
QAction *d_add_segue_action;
|
||||||
|
QAction *d_add_talk_action;
|
||||||
|
QList<RDMarkerHandle::PointerRole> d_deleting_roles;
|
||||||
|
QAction *d_delete_marker_action;
|
||||||
|
bool d_marker_menu_used;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user