mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2026-01-16 17:41:20 +01:00
2020-08-04 Fred Gleason <fredg@paravelsystems.com>
* Added a 'Log Render Options' dialog to rdcastmanager(1). Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
223
rdcastmanager/render_dialog.cpp
Normal file
223
rdcastmanager/render_dialog.cpp
Normal file
@@ -0,0 +1,223 @@
|
||||
// render_dialog.cpp
|
||||
//
|
||||
// Render Log Dialog for Rivendell.
|
||||
//
|
||||
// (C) Copyright 2020 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#include <qfiledialog.h>
|
||||
|
||||
#include <qlineedit.h>
|
||||
#include <qmessagebox.h>
|
||||
#include <qpushbutton.h>
|
||||
|
||||
#include <rdconf.h>
|
||||
|
||||
#include "render_dialog.h"
|
||||
|
||||
RenderDialog::RenderDialog(QWidget *parent)
|
||||
: RDDialog(parent)
|
||||
{
|
||||
d_start_line=NULL;
|
||||
d_end_line=NULL;
|
||||
|
||||
setWindowTitle("RDCastManager - "+tr("Log Render Options"));
|
||||
|
||||
//
|
||||
// Fix the Window Size
|
||||
//
|
||||
setMinimumSize(sizeHint());
|
||||
setMaximumSize(sizeHint());
|
||||
|
||||
//
|
||||
// Dialogs
|
||||
//
|
||||
d_log_dialog=new LogDialog(this);
|
||||
|
||||
//
|
||||
// Start Time
|
||||
//
|
||||
d_start_time_box=new QComboBox(this);
|
||||
connect(d_start_time_box,SIGNAL(activated(int)),
|
||||
this,SLOT(startTimeActivatedData(int)));
|
||||
d_start_time_box->insertItem(tr("[now]"));
|
||||
d_start_time_box->insertItem(tr("As Specified"));
|
||||
d_start_time_label=new QLabel(tr("Virtual Start Time")+":",this);
|
||||
d_start_time_label->setFont(labelFont());
|
||||
d_start_time_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
d_start_time_edit=new QTimeEdit(this);
|
||||
d_start_time_edit->setDisplayFormat("hh:mm:ss");
|
||||
d_start_time_edit->setDisabled(true);
|
||||
|
||||
//
|
||||
// Ignore STOP
|
||||
//
|
||||
d_ignorestop_box=new QComboBox(this);
|
||||
d_ignorestop_box->insertItem(0,tr("Stop Rendering"));
|
||||
d_ignorestop_box->insertItem(1,tr("Treat as PLAY"));
|
||||
d_ignorestop_label=new QLabel(tr("At STOP transition")+":",this);
|
||||
d_ignorestop_label->setFont(labelFont());
|
||||
d_ignorestop_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
|
||||
//
|
||||
// Select Log Events
|
||||
//
|
||||
d_select_label_label=new QLabel(tr("Selected Log Events"),this);
|
||||
d_select_label_label->setFont(labelFont());
|
||||
d_select_label_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
d_select_label=new QLabel(this);
|
||||
d_select_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
|
||||
d_select_label->setFrameStyle(QFrame::Plain);
|
||||
d_select_label->setFrameShape(QFrame::Box);
|
||||
d_select_label->setLineWidth(1);
|
||||
d_select_label->setMidLineWidth(1);
|
||||
d_select_button=new QPushButton(tr("Select"),this);
|
||||
d_select_button->setFont(subButtonFont());
|
||||
connect(d_select_button,SIGNAL(clicked()),this,SLOT(selectData()));
|
||||
|
||||
//
|
||||
// OK Button
|
||||
//
|
||||
d_ok_button=new QPushButton(tr("OK"),this);
|
||||
d_ok_button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50);
|
||||
d_ok_button->setFont(buttonFont());
|
||||
d_ok_button->setDefault(true);
|
||||
connect(d_ok_button,SIGNAL(clicked()),this,SLOT(okData()));
|
||||
|
||||
//
|
||||
// Cancel Button
|
||||
//
|
||||
d_cancel_button=new QPushButton(tr("&Cancel"),this);
|
||||
d_cancel_button->
|
||||
setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50);
|
||||
d_cancel_button->setFont(buttonFont());
|
||||
connect(d_cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
|
||||
}
|
||||
|
||||
|
||||
RenderDialog::~RenderDialog()
|
||||
{
|
||||
delete d_log_dialog;
|
||||
}
|
||||
|
||||
|
||||
QSize RenderDialog::sizeHint() const
|
||||
{
|
||||
return QSize(500,145);
|
||||
}
|
||||
|
||||
|
||||
int RenderDialog::exec(RDLogEvent *log,QTime *start_time,
|
||||
bool *ignore_stops,int *start_line,int *end_line)
|
||||
{
|
||||
d_log=log;
|
||||
d_start_time=start_time;
|
||||
d_start_time_edit->setDisabled(start_time->isNull());
|
||||
d_ignore_stops=ignore_stops;
|
||||
if(*ignore_stops) {
|
||||
d_ignorestop_box->setCurrentIndex(1);
|
||||
}
|
||||
else {
|
||||
d_ignorestop_box->setCurrentIndex(0);
|
||||
}
|
||||
d_start_line=start_line;
|
||||
d_modified_start_line=*start_line;
|
||||
d_modified_end_line=*end_line;
|
||||
d_end_line=end_line;
|
||||
UpdateLogEventsSelection();
|
||||
|
||||
return QDialog::exec();
|
||||
}
|
||||
|
||||
|
||||
void RenderDialog::startTimeActivatedData(int n)
|
||||
{
|
||||
d_start_time_edit->setEnabled(n==1);
|
||||
}
|
||||
|
||||
|
||||
void RenderDialog::selectData()
|
||||
{
|
||||
if(d_log_dialog->exec(d_log,&d_modified_start_line,&d_modified_end_line)) {
|
||||
UpdateLogEventsSelection();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RenderDialog::okData()
|
||||
{
|
||||
if(d_start_time_box->currentIndex()==0) {
|
||||
*d_start_time=QTime();
|
||||
}
|
||||
else {
|
||||
*d_start_time=d_start_time_edit->time();
|
||||
}
|
||||
*d_ignore_stops=d_ignorestop_box->currentIndex();
|
||||
*d_start_line=d_modified_start_line;
|
||||
*d_end_line=d_modified_end_line;
|
||||
|
||||
done(true);
|
||||
}
|
||||
|
||||
|
||||
void RenderDialog::cancelData()
|
||||
{
|
||||
done(false);
|
||||
}
|
||||
|
||||
|
||||
void RenderDialog::closeEvent(QCloseEvent *e)
|
||||
{
|
||||
cancelData();
|
||||
}
|
||||
|
||||
|
||||
void RenderDialog::resizeEvent(QResizeEvent *e)
|
||||
{
|
||||
d_start_time_label->setGeometry(10,2,135,20);
|
||||
d_start_time_box->setGeometry(150,2,160,20);
|
||||
d_start_time_edit->setGeometry(315,2,80,20);
|
||||
|
||||
d_ignorestop_label->setGeometry(10,24,135,20);
|
||||
d_ignorestop_box->setGeometry(150,24,160,20);
|
||||
|
||||
d_select_label_label->setGeometry(10,46,135,20);
|
||||
d_select_label->setGeometry(150,46,160,20);
|
||||
d_select_button->setGeometry(315,43,70,24);
|
||||
|
||||
d_ok_button->setGeometry(size().width()-180,size().height()-60,80,50);
|
||||
d_cancel_button->setGeometry(size().width()-90,size().height()-60,80,50);
|
||||
}
|
||||
|
||||
|
||||
void RenderDialog::UpdateLogEventsSelection()
|
||||
{
|
||||
if((d_modified_start_line==0)&&(d_modified_end_line==(d_log->size()-1))) {
|
||||
d_select_label->setText(tr("All lines"));
|
||||
}
|
||||
else {
|
||||
if(d_modified_start_line==d_modified_end_line) {
|
||||
d_select_label->setText(tr("Line")+
|
||||
QString().sprintf(" %d",d_modified_start_line));
|
||||
}
|
||||
else {
|
||||
d_select_label->setText(tr("Lines")+
|
||||
QString().sprintf(" %d ",d_modified_start_line)+
|
||||
tr("through")+
|
||||
QString().sprintf(" %d",d_modified_end_line));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user