]> granicus.if.org Git - nethack/commitdiff
Qt click-to-command
authorPatR <rankin@nethack.org>
Wed, 7 Oct 2020 11:19:55 +0000 (04:19 -0700)
committerPatR <rankin@nethack.org>
Wed, 7 Oct 2020 11:19:55 +0000 (04:19 -0700)
Consolidate some recently added duplicated code.

win/Qt/qt_inv.cpp
win/Qt/qt_main.cpp
win/Qt/qt_main.h
win/Qt/qt_stat.cpp

index b6e408af61a7143d091c5b39e9df77cc24541f75..5379a33fa0b89425f4954f10a200b1ff869c6e6d 100644 (file)
@@ -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 <NetHackQtMainWindow *> (main))->DollClickToKeys(cmdbuf);
+    (static_cast <NetHackQtMainWindow *> (main))->FuncAsCommand(doprinuse);
 #endif
 }
 
index 6378f48e113d5c0b40b0cfc9e13f2ea95ca1c8db..40276b19576847fae5df65bfbb5daae6b8339fff 100644 (file)
@@ -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)
index b21c60cfce4d8759d9f70749f6ead6c1136e7e7f..17719fabbb31010815216f5e7e3d2a2a8a54ffc2 100644 (file)
@@ -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:
index 7da64cfc67f8045ddc6b01906c29cdd0581831b7..6d200fe10097971a40f140638c81709e63b63cdd 100644 (file)
@@ -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 <NetHackQtMainWindow *> (main))->DollClickToKeys(cmdbuf);
+    (static_cast <NetHackQtMainWindow *> (main))->FuncAsCommand(doattributes);
 }
 
 } // namespace nethack_qt_