+
+ // Loop until the user either selects a macro to display,
+ // or makes no request:
+ while (request != No_Request)
+ {
+ switch (request)
+ {
+ case DisplayMacro_Request:
+ currentMacro = userRequestMacro;
+ userRequestMacro = 0;
+
+ ui->macroNameLabel->setText(currentMacro->getName());
+
+ // Turn on the "new" button
+ ui->addButton->setEnabled(true);
+
+ currentMacro->populateList(ui->macroListWidget);
+
+ return;
+
+ case NewMacro_Request:
+ emd.clear();
+ if (emd.exec() == QDialog::Accepted)
+ {
+ // Create the new macro:
+ currentMacro = new PIRMacro(
+ mainWindow->getUserPack(),
+ emd.getText(),
+ emd.getKey(),
+ emd.getButtonID(),
+ mainWindow);
+
+ ui->macroNameLabel->setText(emd.getText());
+
+ // Turn on the "new" button
+ ui->addButton->setEnabled(true);
+
+ mainWindow->updateUserButtons();
+
+ ui->macroListWidget->clear();
+
+ mainWindow->storeMacros();
+
+ return;
+ }
+ break;
+
+ case EditMacro_Request:
+ emd.setup(userRequestMacro);
+ if (emd.exec() == QDialog::Accepted)
+ {
+ // Store the changes:
+ userRequestMacro->setName(emd.getText());
+ userRequestMacro->setKey(emd.getKey());
+ userRequestMacro->setButtonID(emd.getButtonID());
+
+ mainWindow->updateUserButtons();
+
+ mainWindow->storeMacros();
+ }
+ userRequestMacro = 0;
+ break;
+
+ case DeleteMacro_Request:
+ dmd.setup(userRequestMacro);
+ if (dmd.exec() == QDialog::Accepted)
+ {
+ if (currentMacro == userRequestMacro)
+ {
+ currentMacro = 0;
+ ui->macroNameLabel->setText("No Macro Selected");
+ ui->addButton->setEnabled(false);
+ ui->macroListWidget->clear();
+ }
+
+ // Delete the macro:
+ delete userRequestMacro;
+
+ // Make sure no dangling buttons exist:
+ mainWindow->updateUserButtons();
+
+ mainWindow->storeMacros();
+
+ smd.resetIndices();
+ }
+ userRequestMacro = 0;
+ break;
+
+ default:
+ break;
+ }
+
+ // Return to the selector dialog:
+ request = No_Request;
+ smd.exec();
+ }