GUI: added PatchDialogGroupSelector dialog (to navigate through patch groups and toggle the checked status)
This commit is contained in:
parent
8abdc33bb4
commit
b5ddd709ce
|
@ -76,7 +76,8 @@ SOURCES += \
|
|||
Src/QHexEdit/QHexEdit.cpp \
|
||||
Src/QHexEdit/QHexEditPrivate.cpp \
|
||||
Src/QHexEdit/XByteArray.cpp \
|
||||
Src/Gui/PatchDialog.cpp
|
||||
Src/Gui/PatchDialog.cpp \
|
||||
Src/Gui/PatchDialogGroupSelector.cpp
|
||||
|
||||
|
||||
HEADERS += \
|
||||
|
@ -131,7 +132,8 @@ HEADERS += \
|
|||
Src/QHexEdit/QHexEdit.h \
|
||||
Src/QHexEdit/QHexEditPrivate.h \
|
||||
Src/QHexEdit/XByteArray.h \
|
||||
Src/Gui/PatchDialog.h
|
||||
Src/Gui/PatchDialog.h \
|
||||
Src/Gui/PatchDialogGroupSelector.h
|
||||
|
||||
|
||||
INCLUDEPATH += \
|
||||
|
@ -161,7 +163,8 @@ FORMS += \
|
|||
Src/Gui/AppearanceDialog.ui \
|
||||
Src/Gui/CloseDialog.ui \
|
||||
Src/Gui/HexEditDialog.ui \
|
||||
Src/Gui/PatchDialog.ui
|
||||
Src/Gui/PatchDialog.ui \
|
||||
Src/Gui/PatchDialogGroupSelector.ui
|
||||
|
||||
INCLUDEPATH += $$PWD/Src/Bridge
|
||||
|
||||
|
|
|
@ -13,7 +13,16 @@ PatchDialog::PatchDialog(QWidget *parent) :
|
|||
|
||||
connect(Bridge::getBridge(), SIGNAL(updatePatches()), this, SLOT(updatePatches()));
|
||||
|
||||
mGroupSelector = new PatchDialogGroupSelector(parent);
|
||||
mGroupSelector->setGroup(0);
|
||||
connect(mGroupSelector, SIGNAL(rejected()), this, SLOT(showNormal()));
|
||||
connect(mGroupSelector, SIGNAL(rejected()), this, SLOT(setFocus()));
|
||||
connect(mGroupSelector, SIGNAL(groupToggle()), this, SLOT(groupToggle()));
|
||||
connect(mGroupSelector, SIGNAL(groupPrevious()), this, SLOT(groupPrevious()));
|
||||
connect(mGroupSelector, SIGNAL(groupNext()), this, SLOT(groupNext()));
|
||||
|
||||
mPatches = new PatchMap();
|
||||
mIsWorking = false;
|
||||
}
|
||||
|
||||
PatchDialog::~PatchDialog()
|
||||
|
@ -21,7 +30,7 @@ PatchDialog::~PatchDialog()
|
|||
delete ui;
|
||||
}
|
||||
|
||||
bool PatchDialog::isPartOfPreviousGroup(PatchInfoList & patchList, int index)
|
||||
bool PatchDialog::isPartOfPreviousGroup(const PatchInfoList & patchList, int index)
|
||||
{
|
||||
if(!index)
|
||||
return true;
|
||||
|
@ -33,9 +42,43 @@ bool PatchDialog::isPartOfPreviousGroup(PatchInfoList & patchList, int index)
|
|||
return false;
|
||||
}
|
||||
|
||||
bool PatchDialog::isGroupEnabled(const PatchInfoList & patchList, int group)
|
||||
{
|
||||
for(int i=0; i<patchList.size(); i++)
|
||||
if(patchList.at(i).second.group == group && !patchList.at(i).second.checked)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PatchDialog::hasPreviousGroup(const PatchInfoList & patchList, int group)
|
||||
{
|
||||
for(int i=0; i<patchList.size(); i++)
|
||||
if(patchList.at(i).second.group < group)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PatchDialog::hasNextGroup(const PatchInfoList & patchList, int group)
|
||||
{
|
||||
for(int i=0; i<patchList.size(); i++)
|
||||
if(patchList.at(i).second.group > group)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
int_t PatchDialog::getGroupAddress(const PatchInfoList & patchList, int group)
|
||||
{
|
||||
for(int i=0; i<patchList.size(); i++)
|
||||
if(patchList.at(i).second.group == group)
|
||||
return patchList.at(i).first.addr;
|
||||
return -1;
|
||||
}
|
||||
|
||||
void PatchDialog::updatePatches()
|
||||
{
|
||||
mIsAdding=true;
|
||||
if(this->isVisible())
|
||||
mGroupSelector->reject();
|
||||
mIsWorking=true;
|
||||
//clear GUI
|
||||
ui->listModules->clear();
|
||||
ui->listPatches->clear();
|
||||
|
@ -54,7 +97,7 @@ void PatchDialog::updatePatches()
|
|||
if(!DbgFunctions()->PatchEnum(patches, 0))
|
||||
{
|
||||
delete [] patches;
|
||||
mIsAdding=false;
|
||||
mIsWorking=false;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -93,7 +136,89 @@ void PatchDialog::updatePatches()
|
|||
}
|
||||
ui->listModules->addItem(i.key());
|
||||
}
|
||||
mIsAdding=false;
|
||||
mIsWorking=false;
|
||||
}
|
||||
|
||||
void PatchDialog::groupToggle()
|
||||
{
|
||||
int group=mGroupSelector->group();
|
||||
if(mIsWorking || !ui->listModules->selectedItems().size())
|
||||
return;
|
||||
QString mod = ui->listModules->selectedItems().at(0)->text();
|
||||
PatchMap::iterator found = mPatches->find(mod);
|
||||
if(found == mPatches->end()) //not found
|
||||
return;
|
||||
PatchInfoList & curPatchList = found.value();
|
||||
bool enabled = !isGroupEnabled(curPatchList, group);
|
||||
Qt::CheckState checkState = enabled ? Qt::Checked : Qt::Unchecked;
|
||||
mIsWorking=true;
|
||||
for(int i=0; i<curPatchList.size(); i++)
|
||||
{
|
||||
if(curPatchList.at(i).second.group!=group)
|
||||
continue;
|
||||
ui->listPatches->item(i)->setCheckState(checkState);
|
||||
curPatchList[i].second.checked=enabled;
|
||||
}
|
||||
mIsWorking=false;
|
||||
int_t groupStart = getGroupAddress(curPatchList, group);
|
||||
if(!groupStart)
|
||||
return;
|
||||
QString color = enabled ? "#00DD00" : "red";
|
||||
QString addrText = QString("%1").arg(groupStart, sizeof(int_t)*2, 16, QChar('0')).toUpper();
|
||||
QString title = "<font color='" + color + "'><b>" + QString().sprintf("%d:", group) + addrText + "</b></font>";
|
||||
mGroupSelector->setGroupTitle(title);
|
||||
DbgCmdExecDirect(QString("disasm "+addrText).toUtf8().constData());
|
||||
DbgCmdExecDirect(QString("dump "+addrText).toUtf8().constData());
|
||||
}
|
||||
|
||||
void PatchDialog::groupPrevious()
|
||||
{
|
||||
int group=mGroupSelector->group();
|
||||
if(!ui->listModules->selectedItems().size())
|
||||
return;
|
||||
QString mod = ui->listModules->selectedItems().at(0)->text();
|
||||
PatchMap::iterator found = mPatches->find(mod);
|
||||
if(found == mPatches->end()) //not found
|
||||
return;
|
||||
PatchInfoList & curPatchList = found.value();
|
||||
if(!hasPreviousGroup(curPatchList, group))
|
||||
return;
|
||||
group--;
|
||||
QString color = isGroupEnabled(curPatchList, group) ? "#00DD00" : "red";
|
||||
QString addrText = QString("%1").arg(getGroupAddress(curPatchList, group), sizeof(int_t)*2, 16, QChar('0')).toUpper();
|
||||
QString title = "<font color='" + color + "'><b>" + QString().sprintf("%d:", group) + addrText + "</b></font>";
|
||||
mGroupSelector->setGroupTitle(title);
|
||||
mGroupSelector->setGroup(group);
|
||||
mGroupSelector->setPreviousEnabled(hasPreviousGroup(curPatchList, group));
|
||||
mGroupSelector->setNextEnabled(hasNextGroup(curPatchList, group));
|
||||
mGroupSelector->showNormal();
|
||||
DbgCmdExecDirect(QString("disasm "+addrText).toUtf8().constData());
|
||||
DbgCmdExecDirect(QString("dump "+addrText).toUtf8().constData());
|
||||
}
|
||||
|
||||
void PatchDialog::groupNext()
|
||||
{
|
||||
int group=mGroupSelector->group();
|
||||
if(!ui->listModules->selectedItems().size())
|
||||
return;
|
||||
QString mod = ui->listModules->selectedItems().at(0)->text();
|
||||
PatchMap::iterator found = mPatches->find(mod);
|
||||
if(found == mPatches->end()) //not found
|
||||
return;
|
||||
PatchInfoList & curPatchList = found.value();
|
||||
if(!hasNextGroup(curPatchList, group))
|
||||
return;
|
||||
group++;
|
||||
QString color = isGroupEnabled(curPatchList, group) ? "#00DD00" : "red";
|
||||
QString addrText = QString("%1").arg(getGroupAddress(curPatchList, group), sizeof(int_t)*2, 16, QChar('0')).toUpper();
|
||||
QString title = "<font color='" + color + "'><b>" + QString().sprintf("%d:", group) + addrText + "</b></font>";
|
||||
mGroupSelector->setGroupTitle(title);
|
||||
mGroupSelector->setGroup(group);
|
||||
mGroupSelector->setPreviousEnabled(hasPreviousGroup(curPatchList, group));
|
||||
mGroupSelector->setNextEnabled(hasNextGroup(curPatchList, group));
|
||||
mGroupSelector->showNormal();
|
||||
DbgCmdExecDirect(QString("disasm "+addrText).toUtf8().constData());
|
||||
DbgCmdExecDirect(QString("dump "+addrText).toUtf8().constData());
|
||||
}
|
||||
|
||||
void PatchDialog::on_listModules_itemSelectionChanged()
|
||||
|
@ -104,8 +229,8 @@ void PatchDialog::on_listModules_itemSelectionChanged()
|
|||
PatchMap::iterator found = mPatches->find(mod);
|
||||
if(found == mPatches->end()) //not found
|
||||
return;
|
||||
mIsAdding=true;
|
||||
PatchInfoList patchList = found.value();
|
||||
mIsWorking=true;
|
||||
PatchInfoList & patchList = found.value();
|
||||
ui->listPatches->clear();
|
||||
for(int i=0; i<patchList.size(); i++)
|
||||
{
|
||||
|
@ -115,12 +240,12 @@ void PatchDialog::on_listModules_itemSelectionChanged()
|
|||
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
|
||||
item->setCheckState(Qt::Unchecked);
|
||||
}
|
||||
mIsAdding=false;
|
||||
mIsWorking=false;
|
||||
}
|
||||
|
||||
void PatchDialog::on_listPatches_itemChanged(QListWidgetItem *item) //checkbox changed
|
||||
{
|
||||
if(mIsAdding || !ui->listModules->selectedItems().size())
|
||||
if(mIsWorking || !ui->listModules->selectedItems().size())
|
||||
return;
|
||||
QString mod = ui->listModules->selectedItems().at(0)->text();
|
||||
PatchMap::iterator found = mPatches->find(mod);
|
||||
|
@ -133,17 +258,26 @@ void PatchDialog::on_listPatches_itemChanged(QListWidgetItem *item) //checkbox c
|
|||
return;
|
||||
patch.second.checked = checked;
|
||||
//check state changed
|
||||
if((QApplication::keyboardModifiers() & Qt::ControlModifier) == Qt::ControlModifier)
|
||||
return; //control held down -> do not check/uncheck group
|
||||
mIsAdding=true;
|
||||
//check/uncheck the complete group
|
||||
for(int i=0; i<curPatchList.size(); i++)
|
||||
if(curPatchList.at(i).second.group==patch.second.group)
|
||||
{
|
||||
curPatchList[i].second.checked=checked;
|
||||
ui->listPatches->item(i)->setCheckState(item->checkState());
|
||||
}
|
||||
mIsAdding=false;
|
||||
if((QApplication::keyboardModifiers() & Qt::ControlModifier) != Qt::ControlModifier)
|
||||
{
|
||||
mIsWorking=true;
|
||||
//check/uncheck the complete group
|
||||
for(int i=0; i<curPatchList.size(); i++)
|
||||
if(curPatchList.at(i).second.group==patch.second.group)
|
||||
{
|
||||
curPatchList[i].second.checked=checked;
|
||||
ui->listPatches->item(i)->setCheckState(item->checkState());
|
||||
}
|
||||
mIsWorking=false;
|
||||
}
|
||||
int group = mGroupSelector->group();
|
||||
QString color = isGroupEnabled(curPatchList, group) ? "#00DD00" : "red";
|
||||
QString addrText = QString("%1").arg(getGroupAddress(curPatchList, group), sizeof(int_t)*2, 16, QChar('0')).toUpper();
|
||||
QString title = "<font color='" + color + "'><b>" + QString().sprintf("%d:", group) + addrText + "</b></font>";
|
||||
mGroupSelector->setGroupTitle(title);
|
||||
mGroupSelector->setPreviousEnabled(hasPreviousGroup(curPatchList, group));
|
||||
mGroupSelector->setNextEnabled(hasNextGroup(curPatchList, group));
|
||||
mGroupSelector->show();
|
||||
}
|
||||
|
||||
void PatchDialog::on_btnSelectAll_clicked()
|
||||
|
@ -154,14 +288,14 @@ void PatchDialog::on_btnSelectAll_clicked()
|
|||
PatchMap::iterator found = mPatches->find(mod);
|
||||
if(found == mPatches->end()) //not found
|
||||
return;
|
||||
mIsAdding=true;
|
||||
mIsWorking=true;
|
||||
PatchInfoList & curPatchList = found.value();
|
||||
for(int i=0; i<curPatchList.size(); i++)
|
||||
{
|
||||
ui->listPatches->item(i)->setCheckState(Qt::Checked);
|
||||
curPatchList[i].second.checked=true;
|
||||
}
|
||||
mIsAdding=false;
|
||||
mIsWorking=false;
|
||||
}
|
||||
|
||||
void PatchDialog::on_btnDeselectAll_clicked()
|
||||
|
@ -172,14 +306,14 @@ void PatchDialog::on_btnDeselectAll_clicked()
|
|||
PatchMap::iterator found = mPatches->find(mod);
|
||||
if(found == mPatches->end()) //not found
|
||||
return;
|
||||
mIsAdding=true;
|
||||
mIsWorking=true;
|
||||
PatchInfoList & curPatchList = found.value();
|
||||
for(int i=0; i<curPatchList.size(); i++)
|
||||
{
|
||||
ui->listPatches->item(i)->setCheckState(Qt::Unchecked);
|
||||
curPatchList[i].second.checked=false;
|
||||
}
|
||||
mIsAdding=false;
|
||||
mIsWorking=false;
|
||||
}
|
||||
|
||||
void PatchDialog::on_btnRestoreSelected_clicked()
|
||||
|
@ -191,7 +325,7 @@ void PatchDialog::on_btnRestoreSelected_clicked()
|
|||
PatchMap::iterator found = mPatches->find(mod);
|
||||
if(found == mPatches->end()) //not found
|
||||
return;
|
||||
mIsAdding=true;
|
||||
mIsWorking=true;
|
||||
PatchInfoList & curPatchList = found.value();
|
||||
int removed=0;
|
||||
int total=curPatchList.size();
|
||||
|
@ -203,7 +337,7 @@ void PatchDialog::on_btnRestoreSelected_clicked()
|
|||
removed++;
|
||||
}
|
||||
}
|
||||
mIsAdding=false;
|
||||
mIsWorking=false;
|
||||
updatePatches();
|
||||
if(removed!=total)
|
||||
ui->listModules->setCurrentRow(selModIdx);
|
||||
|
@ -220,17 +354,35 @@ void PatchDialog::on_listPatches_itemSelectionChanged()
|
|||
return;
|
||||
PatchInfoList & curPatchList = found.value();
|
||||
PatchPair & patch = curPatchList[ui->listPatches->row(ui->listPatches->selectedItems().at(0))]; //selected item
|
||||
int group=patch.second.group;
|
||||
int_t groupStart = 0;
|
||||
for(int i=0; i<curPatchList.size(); i++)
|
||||
if(curPatchList.at(i).second.group==group)
|
||||
{
|
||||
groupStart = curPatchList.at(i).first.addr;
|
||||
break;
|
||||
}
|
||||
int_t groupStart = getGroupAddress(curPatchList, patch.second.group);
|
||||
if(!groupStart)
|
||||
return;
|
||||
QString addrText = QString("%1").arg(groupStart, sizeof(int_t)*2, 16, QChar('0')).toUpper();
|
||||
DbgCmdExecDirect(QString("disasm "+addrText).toUtf8().constData());
|
||||
DbgCmdExecDirect(QString("dump "+addrText).toUtf8().constData());
|
||||
}
|
||||
|
||||
void PatchDialog::on_btnPickGroups_clicked()
|
||||
{
|
||||
if(!ui->listModules->selectedItems().size())
|
||||
return;
|
||||
QString mod = ui->listModules->selectedItems().at(0)->text();
|
||||
PatchMap::iterator found = mPatches->find(mod);
|
||||
if(found == mPatches->end()) //not found
|
||||
return;
|
||||
PatchInfoList & curPatchList = found.value();
|
||||
if(!curPatchList.size())
|
||||
return;
|
||||
this->showMinimized();
|
||||
|
||||
int group = mGroupSelector->group();
|
||||
QString color = isGroupEnabled(curPatchList, group) ? "#00DD00" : "red";
|
||||
QString addrText = QString("%1").arg(getGroupAddress(curPatchList, group), sizeof(int_t)*2, 16, QChar('0')).toUpper();
|
||||
QString title = "<font color='" + color + "'><b>" + QString().sprintf("%d:", group) + addrText + "</b></font>";
|
||||
mGroupSelector->setGroupTitle(title);
|
||||
mGroupSelector->setPreviousEnabled(hasPreviousGroup(curPatchList, group));
|
||||
mGroupSelector->setNextEnabled(hasNextGroup(curPatchList, group));
|
||||
mGroupSelector->show();
|
||||
DbgCmdExecDirect(QString("disasm "+addrText).toUtf8().constData());
|
||||
DbgCmdExecDirect(QString("dump "+addrText).toUtf8().constData());
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <QDialog>
|
||||
#include "Bridge.h"
|
||||
#include "PatchDialogGroupSelector.h"
|
||||
|
||||
namespace Ui {
|
||||
class PatchDialog;
|
||||
|
@ -34,18 +35,27 @@ public:
|
|||
private:
|
||||
Ui::PatchDialog *ui;
|
||||
PatchMap* mPatches;
|
||||
bool mIsAdding;
|
||||
PatchDialogGroupSelector* mGroupSelector;
|
||||
bool mIsWorking;
|
||||
|
||||
bool isPartOfPreviousGroup(PatchInfoList & patchList, int index);
|
||||
bool isPartOfPreviousGroup(const PatchInfoList & patchList, int index);
|
||||
bool isGroupEnabled(const PatchInfoList & patchList, int group);
|
||||
bool hasPreviousGroup(const PatchInfoList & patchList, int group);
|
||||
bool hasNextGroup(const PatchInfoList & patchList, int group);
|
||||
int_t getGroupAddress(const PatchInfoList & patchList, int group);
|
||||
|
||||
private slots:
|
||||
void updatePatches();
|
||||
void groupToggle();
|
||||
void groupPrevious();
|
||||
void groupNext();
|
||||
void on_listModules_itemSelectionChanged();
|
||||
void on_listPatches_itemChanged(QListWidgetItem *item);
|
||||
void on_btnSelectAll_clicked();
|
||||
void on_btnDeselectAll_clicked();
|
||||
void on_btnRestoreSelected_clicked();
|
||||
void on_listPatches_itemSelectionChanged();
|
||||
void on_btnPickGroups_clicked();
|
||||
};
|
||||
|
||||
#endif // PATCHDIALOG_H
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="">
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>230</x>
|
||||
|
@ -113,7 +113,7 @@
|
|||
<item>
|
||||
<widget class="QPushButton" name="btnPickGroups">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Pick Groups</string>
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
#include "PatchDialogGroupSelector.h"
|
||||
#include "ui_PatchDialogGroupSelector.h"
|
||||
|
||||
PatchDialogGroupSelector::PatchDialogGroupSelector(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::PatchDialogGroupSelector)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
setWindowFlags(Qt::Dialog | Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::MSWindowsFixedSizeDialogHint);
|
||||
setFixedSize(this->size()); //fixed size
|
||||
setModal(false); //non-modal window
|
||||
|
||||
mGroup = 0;
|
||||
}
|
||||
|
||||
PatchDialogGroupSelector::~PatchDialogGroupSelector()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void PatchDialogGroupSelector::keyPressEvent(QKeyEvent* event)
|
||||
{
|
||||
if(event->modifiers() != Qt::NoModifier)
|
||||
return;
|
||||
if(event->key() == Qt::Key_Space)
|
||||
on_btnToggle_clicked();
|
||||
else if(event->key() == Qt::Key_BracketLeft)
|
||||
on_btnPrevious_clicked();
|
||||
else if(event->key() == Qt::Key_BracketRight)
|
||||
on_btnNext_clicked();
|
||||
}
|
||||
|
||||
void PatchDialogGroupSelector::setGroupTitle(const QString &title)
|
||||
{
|
||||
ui->lblTitle->setText(title);
|
||||
}
|
||||
|
||||
void PatchDialogGroupSelector::setPreviousEnabled(bool enable)
|
||||
{
|
||||
ui->btnPrevious->setEnabled(enable);
|
||||
}
|
||||
|
||||
void PatchDialogGroupSelector::setNextEnabled(bool enable)
|
||||
{
|
||||
ui->btnNext->setEnabled(enable);
|
||||
}
|
||||
|
||||
void PatchDialogGroupSelector::setGroup(int group)
|
||||
{
|
||||
mGroup = group;
|
||||
}
|
||||
|
||||
int PatchDialogGroupSelector::group()
|
||||
{
|
||||
return mGroup;
|
||||
}
|
||||
|
||||
void PatchDialogGroupSelector::on_btnToggle_clicked()
|
||||
{
|
||||
emit groupToggle();
|
||||
}
|
||||
|
||||
void PatchDialogGroupSelector::on_btnPrevious_clicked()
|
||||
{
|
||||
if(ui->btnPrevious->isEnabled())
|
||||
emit groupPrevious();
|
||||
}
|
||||
|
||||
void PatchDialogGroupSelector::on_btnNext_clicked()
|
||||
{
|
||||
if(ui->btnNext->isEnabled())
|
||||
emit groupNext();
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
#ifndef PATCHDIALOGGROUPSELECTOR_H
|
||||
#define PATCHDIALOGGROUPSELECTOR_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QKeyEvent>
|
||||
|
||||
namespace Ui {
|
||||
class PatchDialogGroupSelector;
|
||||
}
|
||||
|
||||
class PatchDialogGroupSelector : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit PatchDialogGroupSelector(QWidget *parent = 0);
|
||||
~PatchDialogGroupSelector();
|
||||
void setGroupTitle(const QString & title);
|
||||
void setPreviousEnabled(bool enable);
|
||||
void setNextEnabled(bool enable);
|
||||
void setGroup(int group);
|
||||
int group();
|
||||
|
||||
signals:
|
||||
void groupToggle();
|
||||
void groupPrevious();
|
||||
void groupNext();
|
||||
|
||||
private slots:
|
||||
void on_btnToggle_clicked();
|
||||
void on_btnPrevious_clicked();
|
||||
void on_btnNext_clicked();
|
||||
|
||||
protected:
|
||||
void keyPressEvent(QKeyEvent* event);
|
||||
|
||||
private:
|
||||
Ui::PatchDialogGroupSelector *ui;
|
||||
int mGroup;
|
||||
};
|
||||
|
||||
#endif // PATCHDIALOGGROUPSELECTOR_H
|
|
@ -0,0 +1,89 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>PatchDialogGroupSelector</class>
|
||||
<widget class="QDialog" name="PatchDialogGroupSelector">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>191</width>
|
||||
<height>71</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Group Selector</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="../../resource.qrc">
|
||||
<normaloff>:/icons/images/patch.png</normaloff>:/icons/images/patch.png</iconset>
|
||||
</property>
|
||||
<widget class="QWidget" name="">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>171</width>
|
||||
<height>51</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="lblTitle">
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Courier New</family>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0000000000000000</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::RichText</enum>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnToggle">
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Toggle</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnPrevious">
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Previous</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnNext">
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Next</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="../../resource.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
Loading…
Reference in New Issue