mirror of https://github.com/bsnes-emu/bsnes.git
69 lines
1.7 KiB
C++
69 lines
1.7 KiB
C++
void pComboBox::append(const string &text) {
|
|
locked = true;
|
|
qtComboBox->addItem(QString::fromUtf8(text));
|
|
locked = false;
|
|
}
|
|
|
|
Geometry pComboBox::minimumGeometry() {
|
|
unsigned maximumWidth = 0;
|
|
for(auto &text : comboBox.state.text) maximumWidth = max(maximumWidth, pFont::geometry(qtWidget->font(), text).width);
|
|
Geometry geometry = pFont::geometry(qtWidget->font(), " ");
|
|
return { 0, 0, maximumWidth + 32, geometry.height + 12 };
|
|
}
|
|
|
|
void pComboBox::modify(unsigned row, const string &text) {
|
|
qtComboBox->setItemText(row, text);
|
|
}
|
|
|
|
void pComboBox::remove(unsigned row) {
|
|
locked = true;
|
|
unsigned position = selection();
|
|
qtComboBox->removeItem(row);
|
|
if(position == row) qtComboBox->setCurrentIndex(0);
|
|
locked = false;
|
|
}
|
|
|
|
void pComboBox::reset() {
|
|
locked = true;
|
|
while(qtComboBox->count()) qtComboBox->removeItem(0);
|
|
locked = false;
|
|
}
|
|
|
|
unsigned pComboBox::selection() {
|
|
signed index = qtComboBox->currentIndex();
|
|
return index >= 0 ? index : 0;
|
|
}
|
|
|
|
void pComboBox::setSelection(unsigned row) {
|
|
locked = true;
|
|
qtComboBox->setCurrentIndex(row);
|
|
locked = false;
|
|
}
|
|
|
|
void pComboBox::constructor() {
|
|
qtWidget = qtComboBox = new QComboBox;
|
|
connect(qtComboBox, SIGNAL(currentIndexChanged(int)), SLOT(onChange()));
|
|
|
|
pWidget::synchronizeState();
|
|
unsigned selection = comboBox.state.selection;
|
|
locked = true;
|
|
for(auto &text : comboBox.state.text) append(text);
|
|
locked = false;
|
|
setSelection(selection);
|
|
}
|
|
|
|
void pComboBox::destructor() {
|
|
delete qtComboBox;
|
|
qtWidget = qtComboBox = 0;
|
|
}
|
|
|
|
void pComboBox::orphan() {
|
|
destructor();
|
|
constructor();
|
|
}
|
|
|
|
void pComboBox::onChange() {
|
|
comboBox.state.selection = selection();
|
|
if(locked == false && comboBox.onChange) comboBox.onChange();
|
|
}
|