1 // Copyright (c) Warwick Allison, 1999.
2 // Qt4 conversion copyright (c) Ray Chason, 2012-2014.
3 // NetHack may be freely redistributed. See license for details.
5 // qt4streq.cpp -- string requestor
18 #include <QtGui/QtGui>
19 #if QT_VERSION >= 0x050000
20 #include <QtWidgets/QtWidgets>
25 namespace nethack_qt4 {
28 void centerOnMain(QWidget *);
31 NetHackQtStringRequestor::NetHackQtStringRequestor(QWidget *parent, const char* p, const char* cancelstr) :
33 prompt(QString::fromLatin1(p),this),
36 cancel=new QPushButton(cancelstr,this);
37 connect(cancel,SIGNAL(clicked()),this,SLOT(reject()));
39 okay=new QPushButton("Okay",this);
40 connect(okay,SIGNAL(clicked()),this,SLOT(accept()));
41 connect(&input,SIGNAL(returnPressed()),this,SLOT(accept()));
42 okay->setDefault(true);
44 setFocusPolicy(Qt::StrongFocus);
47 void NetHackQtStringRequestor::resizeEvent(QResizeEvent*)
52 int h=(height()-margin*2-gutter);
54 if (prompt.text().size() > 16) {
56 prompt.setGeometry(margin,margin,width()-margin*2,h);
57 input.setGeometry(width()*1/5,margin+h+gutter,
58 (width()-margin-2-gutter)*4/5,h);
61 prompt.setGeometry(margin,margin,(width()-margin*2-gutter)*2/5,h);
62 input.setGeometry(prompt.geometry().right()+gutter,margin,
63 (width()-margin-2-gutter)*3/5,h);
66 cancel->setGeometry(margin,input.geometry().bottom()+gutter,
67 (width()-margin*2-gutter)/2,h);
68 okay->setGeometry(cancel->geometry().right()+gutter,cancel->geometry().y(),
72 void NetHackQtStringRequestor::SetDefault(const char* d)
77 bool NetHackQtStringRequestor::Get(char* buffer, int maxchar)
79 input.setMaxLength(maxchar);
80 if (prompt.text().size() > 16) {
81 resize(fontMetrics().width(prompt.text())+50,fontMetrics().height()*6);
83 resize(fontMetrics().width(prompt.text())*2+50,fontMetrics().height()*4);
87 input.setText(buffer);
95 str_copy(buffer,input.text().toLatin1().constData(),maxchar);
102 } // namespace nethack_qt4