citra-qt: Add support for copying the command list contents to clipboard.

master
Tony Wasserka 2015-05-27 16:32:02 +07:00
parent 7673cdfdae
commit 7fd03750bd
2 changed files with 31 additions and 1 deletions

@ -2,6 +2,8 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <QApplication>
#include <QClipboard>
#include <QLabel> #include <QLabel>
#include <QListView> #include <QListView>
#include <QMainWindow> #include <QMainWindow>
@ -304,16 +306,24 @@ GPUCommandListWidget::GPUCommandListWidget(QWidget* parent) : QDockWidget(tr("Pi
this, SLOT(OnCommandDoubleClicked(const QModelIndex&))); this, SLOT(OnCommandDoubleClicked(const QModelIndex&)));
toggle_tracing = new QPushButton(tr("Start Tracing")); toggle_tracing = new QPushButton(tr("Start Tracing"));
QPushButton* copy_all = new QPushButton(tr("Copy All"));
connect(toggle_tracing, SIGNAL(clicked()), this, SLOT(OnToggleTracing())); connect(toggle_tracing, SIGNAL(clicked()), this, SLOT(OnToggleTracing()));
connect(this, SIGNAL(TracingFinished(const Pica::DebugUtils::PicaTrace&)), connect(this, SIGNAL(TracingFinished(const Pica::DebugUtils::PicaTrace&)),
model, SLOT(OnPicaTraceFinished(const Pica::DebugUtils::PicaTrace&))); model, SLOT(OnPicaTraceFinished(const Pica::DebugUtils::PicaTrace&)));
connect(copy_all, SIGNAL(clicked()), this, SLOT(CopyAllToClipboard()));
command_info_widget = new QWidget; command_info_widget = new QWidget;
QVBoxLayout* main_layout = new QVBoxLayout; QVBoxLayout* main_layout = new QVBoxLayout;
main_layout->addWidget(list_widget); main_layout->addWidget(list_widget);
main_layout->addWidget(toggle_tracing); {
QHBoxLayout* sub_layout = new QHBoxLayout;
sub_layout->addWidget(toggle_tracing);
sub_layout->addWidget(copy_all);
main_layout->addLayout(sub_layout);
}
main_layout->addWidget(command_info_widget); main_layout->addWidget(command_info_widget);
main_widget->setLayout(main_layout); main_widget->setLayout(main_layout);
@ -330,3 +340,21 @@ void GPUCommandListWidget::OnToggleTracing() {
toggle_tracing->setText(tr("Start Tracing")); toggle_tracing->setText(tr("Start Tracing"));
} }
} }
void GPUCommandListWidget::CopyAllToClipboard() {
QClipboard* clipboard = QApplication::clipboard();
QString text;
QAbstractItemModel* model = (QAbstractListModel*)list_widget->model();
for (int row = 0; row < model->rowCount({}); ++row) {
for (int col = 0; col < model->columnCount({}); ++col) {
QModelIndex index = model->index(row, col);
text += model->data(index).value<QString>();
text += '\t';
}
text += '\n';
}
clipboard->setText(text);
}

@ -49,6 +49,8 @@ public slots:
void SetCommandInfo(const QModelIndex&); void SetCommandInfo(const QModelIndex&);
void CopyAllToClipboard();
signals: signals:
void TracingFinished(const Pica::DebugUtils::PicaTrace&); void TracingFinished(const Pica::DebugUtils::PicaTrace&);