Mercurial > hg > easyhg
changeset 105:1928f9b408e6
* Better-behaved comment dialog; avoid empty comments. Also ignore signals from closing ptys
author | Chris Cannam |
---|---|
date | Thu, 25 Nov 2010 17:21:32 +0000 |
parents | af314dd436d5 |
children | 729438d70af8 |
files | common.cpp common.h confirmcommentdialog.cpp confirmcommentdialog.h main.cpp |
diffstat | 5 files changed, 80 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/common.cpp Thu Nov 25 14:30:40 2010 +0000 +++ b/common.cpp Thu Nov 25 17:21:32 2010 +0000 @@ -37,6 +37,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> +#include <signal.h> #endif QString findExecutable(QString name) @@ -182,6 +183,17 @@ #endif } +void installSignalHandlers() +{ +#ifndef Q_OS_WIN32 + sigset_t sgnals; + sigemptyset (&sgnals); + sigaddset(&sgnals, SIGHUP); + sigaddset(&sgnals, SIGCONT); + pthread_sigmask(SIG_BLOCK, &sgnals, 0); +#endif +} + FolderStatus getFolderStatus(QString path) { if (path != "/" && path.endsWith("/")) {
--- a/common.h Thu Nov 25 14:30:40 2010 +0000 +++ b/common.h Thu Nov 25 17:21:32 2010 +0000 @@ -50,6 +50,8 @@ extern void loseControllingTerminal(); +void installSignalHandlers(); + /** * Status used in testing whether a folder argument (received from the * user) is valid for particular uses.
--- a/confirmcommentdialog.cpp Thu Nov 25 14:30:40 2010 +0000 +++ b/confirmcommentdialog.cpp Thu Nov 25 17:21:32 2010 +0000 @@ -24,6 +24,46 @@ #include <QTextEdit> #include <QDialogButtonBox> +ConfirmCommentDialog::ConfirmCommentDialog(QWidget *parent, + QString title, + QString introText, + QString initialComment) : + QDialog(parent) +{ + setWindowTitle(title); + + QGridLayout *layout = new QGridLayout; + setLayout(layout); + QLabel *label = new QLabel(introText); + layout->addWidget(label, 0, 0); + + m_textEdit = new QTextEdit; + m_textEdit->setAcceptRichText(false); + m_textEdit->document()->setPlainText(initialComment); + m_textEdit->setMinimumWidth(360); + connect(m_textEdit, SIGNAL(textChanged()), this, SLOT(commentChanged())); + layout->addWidget(m_textEdit, 1, 0); + + QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Ok | + QDialogButtonBox::Cancel); + layout->addWidget(bbox, 2, 0); + m_ok = bbox->button(QDialogButtonBox::Ok); + m_ok->setEnabled(initialComment != ""); + + connect(bbox, SIGNAL(accepted()), this, SLOT(accept())); + connect(bbox, SIGNAL(rejected()), this, SLOT(reject())); +} + +void ConfirmCommentDialog::commentChanged() +{ + m_ok->setEnabled(getComment() != ""); +} + +QString ConfirmCommentDialog::getComment() const +{ + return m_textEdit->document()->toPlainText(); +} + bool ConfirmCommentDialog::confirmFilesAction(QWidget *parent, QString title, QString introText, @@ -82,22 +122,12 @@ comment = QInputDialog::getText(parent, title, introText, QLineEdit::Normal, comment, &ok); } else { - QDialog *d = new QDialog(parent); - d->setWindowTitle(title); - QGridLayout *layout = new QGridLayout; - d->setLayout(layout); - QLabel *label = new QLabel(introText); - layout->addWidget(label, 0, 0); - QTextEdit *textEdit = new QTextEdit; - textEdit->setAcceptRichText(false); - layout->addWidget(textEdit, 1, 0); - QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Ok | - QDialogButtonBox::Cancel); - layout->addWidget(bbox, 2, 0); - QObject::connect(bbox, SIGNAL(accepted()), d, SLOT(accept())); - QObject::connect(bbox, SIGNAL(rejected()), d, SLOT(reject())); + ConfirmCommentDialog *d = new ConfirmCommentDialog(parent, + title, + introText, + comment); if (d->exec() == QDialog::Accepted) { - comment = textEdit->document()->toPlainText(); + comment = d->getComment(); ok = true; } }
--- a/confirmcommentdialog.h Thu Nov 25 14:30:40 2010 +0000 +++ b/confirmcommentdialog.h Thu Nov 25 17:21:32 2010 +0000 @@ -18,12 +18,17 @@ #ifndef CONFIRMCOMMENTDIALOG_H #define CONFIRMCOMMENTDIALOG_H +#include <QDialog> #include <QWidget> #include <QString> #include <QStringList> +#include <QTextEdit> +#include <QPushButton> -class ConfirmCommentDialog +class ConfirmCommentDialog : public QDialog { + Q_OBJECT + public: static bool confirmFilesAction(QWidget *parent, QString title, @@ -45,6 +50,19 @@ QString &comment, bool longComment); +private slots: + void commentChanged(); + +private: + ConfirmCommentDialog(QWidget *parent, + QString title, + QString introText, + QString initialComment); + + QString getComment() const; + + QTextEdit *m_textEdit; + QPushButton *m_ok; }; #endif // CONFIRMCOMMENTDIALOG_H