Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2

This commit is contained in:
nhmall
2018-09-11 08:23:12 -04:00
21 changed files with 719 additions and 65 deletions
+1
View File
@@ -0,0 +1 @@
*.moc
+10 -6
View File
@@ -18,7 +18,7 @@ extern "C" {
#undef max
#include <QtGui/QtGui>
#include <QStringList>
#include <QtCore/QStringList>
#if QT_VERSION >= 0x050000
#include <QtWidgets/QtWidgets>
#include <QtMultimedia/QSound>
@@ -350,9 +350,9 @@ void NetHackQtBind::qt_display_file(const char *filename, BOOLEAN_P must_exist)
complain = must_exist;
} else {
while (dlb_fgets(buf, BUFSZ, f)) {
if ((cr = index(buf, '\n')) != 0) *cr = 0;
if ((cr = strchr(buf, '\n')) != 0) *cr = 0;
#ifdef MSDOS
if ((cr = index(buf, '\r')) != 0) *cr = 0;
if ((cr = strchr(buf, '\r')) != 0) *cr = 0;
#endif
window->PutStr(ATR_NONE, tabexpand(buf));
}
@@ -508,8 +508,8 @@ char NetHackQtBind::qt_yn_function(const char *question_, const char *choices, C
message = QString("%1 [%2] ").arg(question, choicebuf);
if (def) message += QString("(%1) ").arg(QChar(def));
// escape maps to 'q' or 'n' or default, in that order
yn_esc_map = (index(choices, 'q') ? 'q' :
(index(choices, 'n') ? 'n' : def));
yn_esc_map = (strchr(choices, 'q') ? 'q' :
(strchr(choices, 'n') ? 'n' : def));
} else {
message = question;
}
@@ -542,7 +542,7 @@ char NetHackQtBind::qt_yn_function(const char *question_, const char *choices, C
char ch=NetHackQtBind::qt_nhgetch();
if (ch=='\033') {
result=yn_esc_map;
} else if (choices && !index(choices,ch)) {
} else if (choices && !strchr(choices,ch)) {
if (def && (ch==' ' || ch=='\r' || ch=='\n')) {
result=def;
} else {
@@ -565,6 +565,8 @@ char NetHackQtBind::qt_yn_function(const char *question_, const char *choices, C
else if (def)
message += QString(" %1").arg(def);
NetHackQtBind::qt_putstr(WIN_MESSAGE, ATR_BOLD, message);
return ret;
}
}
@@ -798,6 +800,7 @@ struct window_procs Qt_procs = {
genl_can_suspend_yes,
};
#ifndef WIN32
extern "C" void play_usersound(const char* filename, int volume)
{
#ifdef USER_SOUNDS
@@ -806,3 +809,4 @@ extern "C" void play_usersound(const char* filename, int volume)
#endif
#endif
}
#endif
+14
View File
@@ -66,6 +66,7 @@ NetHackQtExtCmdRequestor::NetHackQtExtCmdRequestor(QWidget *parent) :
pb->setMinimumSize(butw,pb->sizeHint().height());
group->addButton(pb, i+1);
gl->addWidget(pb,i/ncols,i%ncols);
buttons.append(pb);
}
group->addButton(can, 0);
connect(group,SIGNAL(buttonPressed(int)),this,SLOT(done(int)));
@@ -92,6 +93,7 @@ void NetHackQtExtCmdRequestor::keyPressEvent(QKeyEvent *event)
QString promptstr = prompt->text();
if (promptstr != "#")
prompt->setText(promptstr.left(promptstr.size()-1));
enableButtons();
}
else
{
@@ -111,6 +113,7 @@ void NetHackQtExtCmdRequestor::keyPressEvent(QKeyEvent *event)
done(match+1);
else if (matches >= 2)
prompt->setText(promptstr);
enableButtons();
}
}
@@ -131,4 +134,15 @@ int NetHackQtExtCmdRequestor::get()
return result()-1;
}
// Enable only buttons that match the current prompt string
void NetHackQtExtCmdRequestor::enableButtons()
{
QString typedstr = prompt->text().mid(1); // skip the '#'
std::size_t len = typedstr.size();
for (auto b = buttons.begin(); b != buttons.end(); ++b) {
(*b)->setVisible((*b)->text().left(len) == typedstr);
}
}
} // namespace nethack_qt4
+2
View File
@@ -21,6 +21,8 @@ public:
private:
QLabel *prompt;
QVector<QPushButton *> buttons;
void enableButtons();
private slots:
void cancel();