For Qt GUI, added fractional refresh rate to nametable viewer menu.

This commit is contained in:
mjbudd77 2021-01-29 06:53:32 -05:00
parent 9b0ae8840b
commit ec9da639f5
2 changed files with 102 additions and 28 deletions

View File

@ -120,7 +120,7 @@ ppuNameTableViewerDialog_t::ppuNameTableViewerDialog_t(QWidget *parent)
QGroupBox *frame;
QMenuBar *menuBar;
QMenu *viewMenu, *colorMenu, *subMenu;
QAction *act, *zoomAct[4];
QAction *act, *zoomAct[4], *rateAct[5];
QActionGroup *group;
QLabel *lbl;
QFont font;
@ -216,14 +216,54 @@ ppuNameTableViewerDialog_t::ppuNameTableViewerDialog_t(QWidget *parent)
connect(zoomAct[2], SIGNAL(triggered()), this, SLOT(changeZoom3x(void)) );
connect(zoomAct[3], SIGNAL(triggered()), this, SLOT(changeZoom4x(void)) );
// View -> Compact View Palette
act = new QAction(tr("Toggle Compact"), this);
//act->setShortcut(QKeySequence::Open);
act->setStatusTip(tr("Toggle Compact"));
connect(act, SIGNAL(triggered()), this, SLOT(menuCompactChanged()) );
viewMenu->addSeparator();
// View -> Refresh
act = new QAction(tr("Refresh"), this);
act->setShortcut( QKeySequence(tr("F5") ) );
act->setStatusTip(tr("Refresh"));
connect(act, SIGNAL(triggered()), this, SLOT(forceRefresh()) );
viewMenu->addAction(act);
// View -> Auto Refresh Rate
subMenu = viewMenu->addMenu( tr("Auto Refresh Rate"));
group = new QActionGroup(this);
group->setExclusive(true);
for (int i=0; i<5; i++)
{
char stmp[8];
switch ( i )
{
case 0:
strcpy( stmp, "Full" );
break;
default:
sprintf( stmp, "1/%i", 0x01 << i );
break;
}
rateAct[i] = new QAction(tr(stmp), this);
rateAct[i]->setCheckable(true);
group->addAction(rateAct[i]);
subMenu->addAction(rateAct[i]);
}
rateAct[0]->setChecked( NTViewRefresh == 0 );
rateAct[1]->setChecked( NTViewRefresh == 1 );
rateAct[2]->setChecked( NTViewRefresh == 3 );
rateAct[3]->setChecked( NTViewRefresh == 7 );
rateAct[4]->setChecked( NTViewRefresh == 19 );
connect(rateAct[0], SIGNAL(triggered()), this, SLOT(changeRate1(void)) );
connect(rateAct[1], SIGNAL(triggered()), this, SLOT(changeRate2(void)) );
connect(rateAct[2], SIGNAL(triggered()), this, SLOT(changeRate4(void)) );
connect(rateAct[3], SIGNAL(triggered()), this, SLOT(changeRate8(void)) );
connect(rateAct[4], SIGNAL(triggered()), this, SLOT(changeRate16(void)) );
// Colors
colorMenu = menuBar->addMenu(tr("Colors"));
@ -374,20 +414,7 @@ ppuNameTableViewerDialog_t::ppuNameTableViewerDialog_t(QWidget *parent)
connect( showAttrGridCbox , SIGNAL(stateChanged(int)), this, SLOT(showAttrGridChanged(int)));
connect( showAttrbCbox , SIGNAL(stateChanged(int)), this, SLOT(showAttrbChanged(int)));
connect( ignorePaletteCbox , SIGNAL(stateChanged(int)), this, SLOT(ignorePaletteChanged(int)));
//
// hbox = new QHBoxLayout();
// refreshSlider = new QSlider( Qt::Horizontal );
// hbox->addWidget( new QLabel( tr("Refresh: More") ) );
// hbox->addWidget( refreshSlider );
// hbox->addWidget( new QLabel( tr("Less") ) );
// grid->addLayout( hbox, 0, 1, Qt::AlignRight );
//
// refreshSlider->setMinimum( 0);
// refreshSlider->setMaximum(25);
// refreshSlider->setValue(NTViewRefresh);
//
// connect( refreshSlider, SIGNAL(valueChanged(int)), this, SLOT(refreshSliderChanged(int)));
//
hbox1 = new QHBoxLayout();
hbox = new QHBoxLayout();
@ -483,6 +510,54 @@ void ppuNameTableViewerDialog_t::changeZoom4x(void)
ntView->setViewScale(4);
}
//----------------------------------------------------
void ppuNameTableViewerDialog_t::changeRate( int divider )
{
if ( divider > 0 )
{
int i = 60 / divider;
NTViewRefresh = (60 / i) - 1;
//printf("NTViewRefresh: %i \n", NTViewRefresh );
}
else
{
NTViewRefresh = 1;
}
}
//----------------------------------------------------
void ppuNameTableViewerDialog_t::changeRate1(void)
{
changeRate(1);
}
//----------------------------------------------------
void ppuNameTableViewerDialog_t::changeRate2(void)
{
changeRate(2);
}
//----------------------------------------------------
void ppuNameTableViewerDialog_t::changeRate4(void)
{
changeRate(4);
}
//----------------------------------------------------
void ppuNameTableViewerDialog_t::changeRate8(void)
{
changeRate(8);
}
//----------------------------------------------------
void ppuNameTableViewerDialog_t::changeRate16(void)
{
changeRate(16);
}
//----------------------------------------------------
void ppuNameTableViewerDialog_t::forceRefresh(void)
{
NTViewSkip = 100;
FCEUD_UpdateNTView( -1, true);
}
//----------------------------------------------------
void ppuNameTableViewerDialog_t::updateVisibility(void)
{
@ -673,11 +748,6 @@ void ppuNameTableViewerDialog_t::ignorePaletteChanged(int state)
ignPalAct->setChecked( hidepal );
}
//----------------------------------------------------
void ppuNameTableViewerDialog_t::refreshSliderChanged(int value)
{
NTViewRefresh = value;
}
//----------------------------------------------------
ppuNameTableView_t::ppuNameTableView_t(QWidget *parent)
: QWidget(parent)
{
@ -1351,7 +1421,6 @@ void FCEUD_UpdateNTView(int scanline, bool drawall)
if (oldntmirroring != ntmirroring)
{
//UpdateMirroringButtons();
oldntmirroring = ntmirroring;
}

View File

@ -96,6 +96,7 @@ class ppuNameTableViewerDialog_t : public QDialog
void closeEvent(QCloseEvent *bar);
void openColorPicker( QColor *c );
void changeRate( int divider );
ppuNameTableView_t *ntView;
QScrollArea *scrollArea;
@ -104,7 +105,6 @@ class ppuNameTableViewerDialog_t : public QDialog
QCheckBox *showAttrGridCbox;
QCheckBox *showAttrbCbox;
QCheckBox *ignorePaletteCbox;
QSlider *refreshSlider;
QLineEdit *scanLineEdit;
QTimer *updateTimer;
QLineEdit *ppuAddrLbl;
@ -132,7 +132,6 @@ class ppuNameTableViewerDialog_t : public QDialog
void showTileGridChanged(int state);
void showAttrGridChanged(int state);
void showScrollLinesChanged(int state);
void refreshSliderChanged(int value);
void scanLineChanged( const QString &txt );
void menuScrollLinesChanged( bool checked );
void menuGridLinesChanged( bool checked );
@ -145,6 +144,12 @@ class ppuNameTableViewerDialog_t : public QDialog
void changeZoom2x(void);
void changeZoom3x(void);
void changeZoom4x(void);
void changeRate1(void);
void changeRate2(void);
void changeRate4(void);
void changeRate8(void);
void changeRate16(void);
void forceRefresh(void);
};
int openNameTableViewWindow( QWidget *parent );