annotate src/hgignoredialog.cpp @ 415:6d7dad48b13c ignore

Make HgIgnoreDialog _look_ plausible (still doesn't do anything though!)
author Chris Cannam
date Thu, 16 Jun 2011 14:32:35 +0100
parents 939701b848e5
children 8df07172d6da
rev   line source
Chris@414 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@414 2
Chris@414 3 /*
Chris@414 4 EasyMercurial
Chris@414 5
Chris@414 6 Based on hgExplorer by Jari Korhonen
Chris@414 7 Copyright (c) 2010 Jari Korhonen
Chris@414 8 Copyright (c) 2011 Chris Cannam
Chris@414 9 Copyright (c) 2011 Queen Mary, University of London
Chris@414 10
Chris@414 11 This program is free software; you can redistribute it and/or
Chris@414 12 modify it under the terms of the GNU General Public License as
Chris@414 13 published by the Free Software Foundation; either version 2 of the
Chris@414 14 License, or (at your option) any later version. See the file
Chris@414 15 COPYING included with this distribution for more information.
Chris@414 16 */
Chris@414 17
Chris@414 18 #include "hgignoredialog.h"
Chris@414 19 #include "common.h"
Chris@414 20 #include "debug.h"
Chris@414 21
Chris@415 22 #include <QGridLayout>
Chris@415 23 #include <QRadioButton>
Chris@415 24 #include <QLabel>
Chris@415 25 #include <QDialogButtonBox>
Chris@415 26 #include <QPushButton>
Chris@415 27
Chris@415 28 HgIgnoreDialog::HgIgnoreDialog(QWidget *parent,
Chris@415 29 QString title,
Chris@415 30 QString introText,
Chris@415 31 QString question,
Chris@415 32 QStringList options,
Chris@415 33 QString okButtonText) :
Chris@415 34 QDialog(parent)
Chris@415 35 {
Chris@415 36 setWindowTitle(title);
Chris@415 37
Chris@415 38 QGridLayout *layout = new QGridLayout;
Chris@415 39 setLayout(layout);
Chris@415 40
Chris@415 41 int row = 0;
Chris@415 42
Chris@415 43 QLabel *label = new QLabel(QString("%1%2").arg(introText).arg(question));
Chris@415 44 label->setWordWrap(true);
Chris@415 45 layout->addWidget(label, row++, 0, 1, 2);
Chris@415 46
Chris@415 47 if (!options.empty()) {
Chris@415 48 layout->addWidget(new QLabel(" "), row, 0);
Chris@415 49 layout->setColumnStretch(1, 10);
Chris@415 50 bool first = true;
Chris@415 51 foreach (QString option, options) {
Chris@415 52 QRadioButton *b = new QRadioButton(option);
Chris@415 53 layout->addWidget(b, row++, 1);
Chris@415 54 b->setChecked(first);
Chris@415 55 first = false;
Chris@415 56 }
Chris@415 57 }
Chris@415 58
Chris@415 59 QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Ok |
Chris@415 60 QDialogButtonBox::Cancel);
Chris@415 61 layout->addWidget(bbox, row++, 0, 1, 2);
Chris@415 62 bbox->button(QDialogButtonBox::Ok)->setDefault(true);
Chris@415 63 bbox->button(QDialogButtonBox::Ok)->setText(okButtonText);
Chris@415 64 bbox->button(QDialogButtonBox::Cancel)->setAutoDefault(false);
Chris@415 65
Chris@415 66 connect(bbox, SIGNAL(accepted()), this, SLOT(accept()));
Chris@415 67 connect(bbox, SIGNAL(rejected()), this, SLOT(reject()));
Chris@415 68 }
Chris@415 69
Chris@414 70 HgIgnoreDialog::IgnoreType
Chris@415 71 HgIgnoreDialog::confirmIgnore(QWidget *parent,
Chris@415 72 QStringList files, QStringList suffixes)
Chris@414 73 {
Chris@415 74 QString intro = "<qt><h3>";
Chris@415 75 intro += tr("Ignore files");
Chris@415 76 intro += "</h3><p>";
Chris@414 77
Chris@414 78 if (files.size() < 10) {
Chris@415 79 intro += tr("You have asked to ignore the following files:</p><p>");
Chris@415 80 intro += "<code>&nbsp;&nbsp;&nbsp;"
Chris@415 81 + files.join("<br>&nbsp;&nbsp;&nbsp;") + "</code>";
Chris@414 82 } else {
Chris@415 83 intro += tr("You have asked to ignore %n file(s).", "", files.size());
Chris@414 84 }
Chris@414 85
Chris@415 86 intro += "</p></qt>";
Chris@415 87
Chris@414 88 if (suffixes.size() > 0) {
Chris@414 89
Chris@415 90 QStringList options;
Chris@415 91 options << tr("Ignore these files only");
Chris@415 92 options << tr("Ignore files with these names in any subdirectory");
Chris@414 93
Chris@415 94 if (suffixes.size() > 1) {
Chris@415 95 options << tr("Ignore all files with these extensions:\n%1")
Chris@415 96 .arg(suffixes.join(", "));
Chris@415 97 } else {
Chris@415 98 options << tr("Ignore all files with the extension \"%1\"")
Chris@415 99 .arg(suffixes[0]);
Chris@415 100 }
Chris@414 101
Chris@415 102 HgIgnoreDialog d(parent, tr("Ignore files"),
Chris@415 103 intro, tr("<p>Please choose whether to:</p>"),
Chris@415 104 options, tr("Ignore"));
Chris@415 105
Chris@415 106 if (d.exec() == QDialog::Accepted) {
Chris@415 107
Chris@415 108 //...
Chris@415 109
Chris@415 110 }
Chris@414 111
Chris@415 112 } else {
Chris@415 113
Chris@415 114 QStringList options;
Chris@415 115 options << tr("Ignore these files only");
Chris@415 116 options << tr("Ignore files with these names in any subdirectory");
Chris@415 117
Chris@415 118 HgIgnoreDialog d(parent, tr("Ignore files"),
Chris@415 119 intro, tr("<p>Please choose whether to:</p>"),
Chris@415 120 options, tr("Ignore"));
Chris@415 121
Chris@415 122 if (d.exec() == QDialog::Accepted) {
Chris@415 123
Chris@415 124 //...
Chris@415 125
Chris@415 126 }
Chris@415 127 }
Chris@414 128
Chris@414 129
Chris@414 130 return IgnoreNothing;
Chris@414 131 }
Chris@414 132