Added palette color copy to clipboard functionality for Qt PPU viewer window.

This commit is contained in:
mjbudd77 2021-05-16 15:20:20 -04:00
parent c1944fa25a
commit c9c7a5105e
2 changed files with 73 additions and 4 deletions

View File

@ -35,6 +35,8 @@
#include <QHeaderView> #include <QHeaderView>
#include <QTreeWidget> #include <QTreeWidget>
#include <QActionGroup> #include <QActionGroup>
#include <QClipboard>
#include <QGuiApplication>
#include "../../types.h" #include "../../types.h"
#include "../../fceu.h" #include "../../fceu.h"
@ -1719,8 +1721,8 @@ void tilePaletteView_t::contextMenuEvent(QContextMenuEvent *event)
{ {
QAction *act; QAction *act;
QMenu menu(this); QMenu menu(this);
//QMenu *subMenu; QMenu *subMenu;
//char stmp[64]; char stmp[128];
QPoint p; QPoint p;
p = convPixToCell( event->pos() ); p = convPixToCell( event->pos() );
@ -1739,9 +1741,74 @@ void tilePaletteView_t::contextMenuEvent(QContextMenuEvent *event)
connect( act, SIGNAL(triggered(void)), this, SLOT(exportPaletteFileDialog(void)) ); connect( act, SIGNAL(triggered(void)), this, SLOT(exportPaletteFileDialog(void)) );
menu.addAction( act ); menu.addAction( act );
if ( palo )
{
int i;
i = palcache[ (palIdx << 2) | selBox ];
subMenu = menu.addMenu( tr("Copy Color to Clipboard") );
sprintf( stmp, "Hex #%02X%02X%02X", palo[i].r, palo[i].g, palo[i].b );
act = new QAction(tr(stmp), &menu);
//act->setShortcut( QKeySequence(tr("G")));
connect( act, SIGNAL(triggered(void)), this, SLOT(copyColor2ClipBoardHex(void)) );
subMenu->addAction( act );
sprintf( stmp, "rgb(%3i,%3i,%3i)", palo[i].r, palo[i].g, palo[i].b );
act = new QAction(tr(stmp), &menu);
//act->setShortcut( QKeySequence(tr("G")));
connect( act, SIGNAL(triggered(void)), this, SLOT(copyColor2ClipBoardRGB(void)) );
subMenu->addAction( act );
}
menu.exec(event->globalPos()); menu.exec(event->globalPos());
} }
//---------------------------------------------------- //----------------------------------------------------
void tilePaletteView_t::copyColor2ClipBoardHex(void)
{
int p;
char txt[64];
QClipboard *clipboard = QGuiApplication::clipboard();
if ( palo == NULL )
{
return;
}
p = palcache[ (palIdx << 2) | selBox ];
sprintf( txt, "#%02X%02X%02X", palo[p].r, palo[p].g, palo[p].b );
clipboard->setText( tr(txt), QClipboard::Clipboard );
if ( clipboard->supportsSelection() )
{
clipboard->setText( tr(txt), QClipboard::Selection );
}
}
//----------------------------------------------------
void tilePaletteView_t::copyColor2ClipBoardRGB(void)
{
int p;
char txt[64];
QClipboard *clipboard = QGuiApplication::clipboard();
if ( palo == NULL )
{
return;
}
p = palcache[ (palIdx << 2) | selBox ];
sprintf( txt, "rgb(%3i,%3i,%3i)", palo[p].r, palo[p].g, palo[p].b );
clipboard->setText( tr(txt), QClipboard::Clipboard );
if ( clipboard->supportsSelection() )
{
clipboard->setText( tr(txt), QClipboard::Selection );
}
}
//----------------------------------------------------
void tilePaletteView_t::exportPaletteFileDialog(void) void tilePaletteView_t::exportPaletteFileDialog(void)
{ {
int ret, useNativeFileDialogVal; int ret, useNativeFileDialogVal;
@ -1796,7 +1863,7 @@ void tilePaletteView_t::openColorPicker(void)
{ {
nesPalettePickerDialog *dialog; nesPalettePickerDialog *dialog;
dialog = new nesPalettePickerDialog( (palIdx*4) + selBox, this ); dialog = new nesPalettePickerDialog( (palIdx << 2) + selBox, this );
dialog->show(); dialog->show();
} }
@ -1840,7 +1907,7 @@ void tilePaletteView_t::paintEvent(QPaintEvent *event)
i = w / 4; i = w / 4;
j = h / 4; j = h / 4;
p2 = palIdx * 4; p2 = palIdx << 2;
yy = 0; yy = 0;
xx = 0; xx = 0;
for (x=0; x < 4; x++) for (x=0; x < 4; x++)

View File

@ -133,6 +133,8 @@ class tilePaletteView_t : public QWidget
private slots: private slots:
void openColorPicker(void); void openColorPicker(void);
void exportPaletteFileDialog(void); void exportPaletteFileDialog(void);
void copyColor2ClipBoardHex(void);
void copyColor2ClipBoardRGB(void);
}; };
class ppuTileView_t : public QWidget class ppuTileView_t : public QWidget