From eb4288e6085c48b00fae9d0369e52cfd9a8cf509 Mon Sep 17 00:00:00 2001 From: PatR Date: Wed, 7 Oct 2020 04:19:55 -0700 Subject: [PATCH] Qt click-to-command Consolidate some recently added duplicated code. --- win/Qt/qt_inv.cpp | 9 ++------- win/Qt/qt_main.cpp | 19 +++++++++++++------ win/Qt/qt_main.h | 5 +++-- win/Qt/qt_stat.cpp | 9 +-------- 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/win/Qt/qt_inv.cpp b/win/Qt/qt_inv.cpp index b6e408af6..5379a33fa 100644 --- a/win/Qt/qt_inv.cpp +++ b/win/Qt/qt_inv.cpp @@ -167,17 +167,12 @@ QSize NetHackQtInvUsageWindow::sizeHint(void) const } } -// ENHANCED_PAPERDOLL - clicking on the PaperDoll runs #seeall +// ENHANCED_PAPERDOLL - clicking on the PaperDoll runs #seeall ('*') void NetHackQtInvUsageWindow::mousePressEvent(QMouseEvent *event UNUSED) { #ifdef ENHANCED_PAPERDOLL - char cmdbuf[32]; - Strcpy(cmdbuf, "#"); - (void) cmdname_from_func(doprinuse, &cmdbuf[1], FALSE); - // queue up #seeall as if user had typed it; we don't execute doprinuse() - // directly because the program might not be ready for the next command QWidget *main = NetHackQtBind::mainWidget(); - (static_cast (main))->DollClickToKeys(cmdbuf); + (static_cast (main))->FuncAsCommand(doprinuse); #endif } diff --git a/win/Qt/qt_main.cpp b/win/Qt/qt_main.cpp index 6378f48e1..40276b195 100644 --- a/win/Qt/qt_main.cpp +++ b/win/Qt/qt_main.cpp @@ -982,19 +982,26 @@ void NetHackQtMainWindow::doGuidebook(bool) } #endif +void NetHackQtMainWindow::doKeys(const char *cmds) +{ + keysink.Put(cmds); + qApp->exit(); +} + void NetHackQtMainWindow::doKeys(const QString& k) { /* [this should probably be using toLocal8Bit(); toAscii() is not offered as an alternative...] */ - keysink.Put(k.toLatin1().constData()); - qApp->exit(); + doKeys(k.toLatin1().constData()); } -// ENHANCED_PAPERDOLL - player clicked on PaperDoll window -void NetHackQtMainWindow::DollClickToKeys(const char *cmds) +// queue up the command name for a function, as if user had typed it +void NetHackQtMainWindow::FuncAsCommand(int NDECL((*func))) { - keysink.Put(cmds); - qApp->exit(); + char cmdbuf[32]; + Strcpy(cmdbuf, "#"); + (void) cmdname_from_func(func, &cmdbuf[1], FALSE); + doKeys(cmdbuf); } void NetHackQtMainWindow::AddMessageWindow(NetHackQtMessageWindow* window) diff --git a/win/Qt/qt_main.h b/win/Qt/qt_main.h index b21c60cfc..17719fabb 100644 --- a/win/Qt/qt_main.h +++ b/win/Qt/qt_main.h @@ -49,9 +49,9 @@ public: void fadeHighlighting(bool before_key); - // these are unconditional in case qt_main.h comes before qt_set.h + void FuncAsCommand(int NDECL((*func))); + // this is unconditional in case qt_main.h comes before qt_set.h void resizePaperDoll(bool); // ENHANCED_PAPERDOLL - void DollClickToKeys(const char *); // ENHANCED_PAPERDOLL public slots: void doMenuItem(QAction *); @@ -59,6 +59,7 @@ public slots: void doAbout(bool); void doQuit(bool); //RLC void doGuidebook(bool); + void doKeys(const char *); void doKeys(const QString&); protected: diff --git a/win/Qt/qt_stat.cpp b/win/Qt/qt_stat.cpp index 7da64cfc6..6d200fe10 100644 --- a/win/Qt/qt_stat.cpp +++ b/win/Qt/qt_stat.cpp @@ -606,15 +606,8 @@ void NetHackQtStatusWindow::checkTurnEvents() // clicking on status window runs #attributes (^X) void NetHackQtStatusWindow::mousePressEvent(QMouseEvent *event UNUSED) { - // same code as NetHackQtInvUsageWindow::mousePressEvent except for func - char cmdbuf[32]; - Strcpy(cmdbuf, "#"); - (void) cmdname_from_func(doattributes, &cmdbuf[1], FALSE); - // queue up #attribues as if user had typed it; we don't execute - // doattributes() directly because the program might not be ready - // for a command right now QWidget *main = NetHackQtBind::mainWidget(); - (static_cast (main))->DollClickToKeys(cmdbuf); + (static_cast (main))->FuncAsCommand(doattributes); } } // namespace nethack_qt_ -- 2.50.1