diff --git a/src/drivers/Qt/ppuViewer.cpp b/src/drivers/Qt/ppuViewer.cpp index 488500b7..e23a057e 100644 --- a/src/drivers/Qt/ppuViewer.cpp +++ b/src/drivers/Qt/ppuViewer.cpp @@ -35,6 +35,8 @@ #include #include #include +#include +#include #include "../../types.h" #include "../../fceu.h" @@ -1719,8 +1721,8 @@ void tilePaletteView_t::contextMenuEvent(QContextMenuEvent *event) { QAction *act; QMenu menu(this); - //QMenu *subMenu; - //char stmp[64]; + QMenu *subMenu; + char stmp[128]; QPoint p; p = convPixToCell( event->pos() ); @@ -1739,9 +1741,74 @@ void tilePaletteView_t::contextMenuEvent(QContextMenuEvent *event) connect( act, SIGNAL(triggered(void)), this, SLOT(exportPaletteFileDialog(void)) ); 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()); } //---------------------------------------------------- +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) { int ret, useNativeFileDialogVal; @@ -1796,7 +1863,7 @@ void tilePaletteView_t::openColorPicker(void) { nesPalettePickerDialog *dialog; - dialog = new nesPalettePickerDialog( (palIdx*4) + selBox, this ); + dialog = new nesPalettePickerDialog( (palIdx << 2) + selBox, this ); dialog->show(); } @@ -1840,7 +1907,7 @@ void tilePaletteView_t::paintEvent(QPaintEvent *event) i = w / 4; j = h / 4; - p2 = palIdx * 4; + p2 = palIdx << 2; yy = 0; xx = 0; for (x=0; x < 4; x++) diff --git a/src/drivers/Qt/ppuViewer.h b/src/drivers/Qt/ppuViewer.h index 0f3573b9..ac4faf4a 100644 --- a/src/drivers/Qt/ppuViewer.h +++ b/src/drivers/Qt/ppuViewer.h @@ -133,6 +133,8 @@ class tilePaletteView_t : public QWidget private slots: void openColorPicker(void); void exportPaletteFileDialog(void); + void copyColor2ClipBoardHex(void); + void copyColor2ClipBoardRGB(void); }; class ppuTileView_t : public QWidget