Warning, file /education/kalzium/src/tablesdialog.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2006 Carsten Niehaus <cniehaus@kde.org> 0003 SPDX-FileCopyrightText: 2007 Ian Monroe <ian@monroe.nu> 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "tablesdialog.h" 0008 0009 #include <QApplication> 0010 #include <QClipboard> 0011 #include <QContextMenuEvent> 0012 #include <QHeaderView> 0013 #include <QIcon> 0014 #include <QMenu> 0015 #include <QVBoxLayout> 0016 0017 #include <KLocalizedString> 0018 0019 TablesDialog::TablesDialog(QWidget *parent) 0020 : KPageDialog(parent) 0021 { 0022 setFaceType(List); 0023 setStandardButtons(QDialogButtonBox::Close); 0024 0025 // setButtons(Help | Close); 0026 // setDefaultButton(Close); 0027 0028 createGreekSymbolTable(); 0029 createNumbersTable(); 0030 } 0031 0032 void TablesDialog::createGreekSymbolTable() 0033 { 0034 auto frame = new QWidget(); 0035 KPageWidgetItem *item = addPage(frame, i18n("Greek alphabet")); 0036 item->setHeader(i18n("Greek alphabet")); 0037 item->setIcon(QIcon::fromTheme(QStringLiteral("numbers"))); 0038 auto layout = new QVBoxLayout(frame); 0039 layout->setContentsMargins(0, 0, 0, 0); 0040 0041 QTableWidget *table = new MyTableWidget(frame); 0042 table->verticalHeader()->hide(); 0043 0044 table->setColumnCount(3); 0045 table->setRowCount(24); 0046 table->setHorizontalHeaderLabels( 0047 QStringList() << i18n("Uppercase") << i18n("Lowercase") 0048 << i18nc("The name of the greek letter in your language. For example 'Alpha' for the first letter. ", "Name")); 0049 0050 layout->addWidget(table); 0051 table->setItem(0, 0, new MyWidgetItem(QString(QChar(913)))); // capital Alpha 0052 table->setItem(1, 0, new MyWidgetItem(QString(QChar(914)))); 0053 table->setItem(2, 0, new MyWidgetItem(QString(QChar(915)))); 0054 table->setItem(3, 0, new MyWidgetItem(QString(QChar(916)))); 0055 table->setItem(4, 0, new MyWidgetItem(QString(QChar(917)))); 0056 table->setItem(5, 0, new MyWidgetItem(QString(QChar(918)))); 0057 table->setItem(6, 0, new MyWidgetItem(QString(QChar(919)))); 0058 table->setItem(7, 0, new MyWidgetItem(QString(QChar(920)))); 0059 table->setItem(8, 0, new MyWidgetItem(QString(QChar(921)))); 0060 table->setItem(9, 0, new MyWidgetItem(QString(QChar(922)))); 0061 table->setItem(10, 0, new MyWidgetItem(QString(QChar(923)))); 0062 table->setItem(11, 0, new MyWidgetItem(QString(QChar(924)))); 0063 table->setItem(12, 0, new MyWidgetItem(QString(QChar(925)))); 0064 table->setItem(13, 0, new MyWidgetItem(QString(QChar(926)))); 0065 table->setItem(14, 0, new MyWidgetItem(QString(QChar(927)))); 0066 table->setItem(15, 0, new MyWidgetItem(QString(QChar(928)))); 0067 table->setItem(16, 0, new MyWidgetItem(QString(QChar(929)))); 0068 table->setItem(17, 0, new MyWidgetItem(QString(QChar(931)))); 0069 table->setItem(18, 0, new MyWidgetItem(QString(QChar(932)))); 0070 table->setItem(19, 0, new MyWidgetItem(QString(QChar(933)))); 0071 table->setItem(20, 0, new MyWidgetItem(QString(QChar(934)))); 0072 table->setItem(21, 0, new MyWidgetItem(QString(QChar(935)))); 0073 table->setItem(22, 0, new MyWidgetItem(QString(QChar(936)))); 0074 table->setItem(23, 0, new MyWidgetItem(QString(QChar(937)))); 0075 0076 // small letters 0077 table->setItem(0, 1, new MyWidgetItem(QString(QChar(945)))); // small alpha 0078 table->setItem(1, 1, new MyWidgetItem(QString(QChar(946)))); 0079 table->setItem(2, 1, new MyWidgetItem(QString(QChar(947)))); 0080 table->setItem(3, 1, new MyWidgetItem(QString(QChar(948)))); 0081 table->setItem(4, 1, new MyWidgetItem(QString(QChar(949)))); 0082 table->setItem(5, 1, new MyWidgetItem(QString(QChar(950)))); 0083 table->setItem(6, 1, new MyWidgetItem(QString(QChar(951)))); 0084 table->setItem(7, 1, new MyWidgetItem(QString(QChar(952)))); 0085 table->setItem(8, 1, new MyWidgetItem(QString(QChar(953)))); 0086 table->setItem(9, 1, new MyWidgetItem(QString(QChar(954)))); 0087 table->setItem(10, 1, new MyWidgetItem(QString(QChar(955)))); 0088 table->setItem(11, 1, new MyWidgetItem(QString(QChar(956)))); 0089 table->setItem(12, 1, new MyWidgetItem(QString(QChar(957)))); 0090 table->setItem(13, 1, new MyWidgetItem(QString(QChar(958)))); 0091 table->setItem(14, 1, new MyWidgetItem(QString(QChar(959)))); 0092 table->setItem(15, 1, new MyWidgetItem(QString(QChar(960)))); 0093 table->setItem(16, 1, new MyWidgetItem(QString(QChar(961)))); 0094 // there are two greek letters for sigma 0095 table->setItem(17, 1, new MyWidgetItem(QString(QChar(962)) + ", " + QString(QChar(963)))); 0096 table->setItem(18, 1, new MyWidgetItem(QString(QChar(964)))); 0097 table->setItem(19, 1, new MyWidgetItem(QString(QChar(965)))); 0098 table->setItem(20, 1, new MyWidgetItem(QString(QChar(966)))); 0099 table->setItem(21, 1, new MyWidgetItem(QString(QChar(967)))); 0100 table->setItem(22, 1, new MyWidgetItem(QString(QChar(968)))); 0101 table->setItem(23, 1, new MyWidgetItem(QString(QChar(969)))); 0102 0103 // english names 0104 table->setItem(0, 2, new MyWidgetItem(i18n("alpha"))); 0105 table->setItem(1, 2, new MyWidgetItem(i18n("beta"))); 0106 table->setItem(2, 2, new MyWidgetItem(i18n("gamma"))); 0107 table->setItem(3, 2, new MyWidgetItem(i18n("delta"))); 0108 table->setItem(4, 2, new MyWidgetItem(i18n("epsilon"))); 0109 table->setItem(5, 2, new MyWidgetItem(i18n("zeta"))); 0110 table->setItem(6, 2, new MyWidgetItem(i18n("eta"))); 0111 table->setItem(7, 2, new MyWidgetItem(i18n("theta"))); 0112 table->setItem(8, 2, new MyWidgetItem(i18n("iota"))); 0113 table->setItem(9, 2, new MyWidgetItem(i18n("kappa"))); 0114 table->setItem(10, 2, new MyWidgetItem(i18n("lambda"))); 0115 table->setItem(11, 2, new MyWidgetItem(i18n("mu"))); 0116 table->setItem(12, 2, new MyWidgetItem(i18n("nu"))); 0117 table->setItem(13, 2, new MyWidgetItem(i18n("xi"))); 0118 table->setItem(14, 2, new MyWidgetItem(i18n("omicron"))); 0119 table->setItem(15, 2, new MyWidgetItem(i18n("pi"))); 0120 table->setItem(16, 2, new MyWidgetItem(i18n("rho"))); 0121 table->setItem(17, 2, new MyWidgetItem(i18n("sigma"))); 0122 table->setItem(18, 2, new MyWidgetItem(i18n("tau"))); 0123 table->setItem(19, 2, new MyWidgetItem(i18n("upsilon"))); 0124 table->setItem(20, 2, new MyWidgetItem(i18n("phi"))); 0125 table->setItem(21, 2, new MyWidgetItem(i18n("chi"))); 0126 table->setItem(22, 2, new MyWidgetItem(i18n("psi"))); 0127 table->setItem(23, 2, new MyWidgetItem(i18n("omega"))); 0128 0129 table->resizeColumnsToContents(); 0130 frame->setMinimumWidth(qMax(table->columnWidth(0) + table->columnWidth(1) + table->columnWidth(2), table->horizontalHeader()->sizeHint().width()) + 25); 0131 } 0132 0133 void TablesDialog::createNumbersTable() 0134 { 0135 auto frame = new QWidget(); 0136 KPageWidgetItem *item = addPage(frame, i18n("Numbers")); 0137 item->setHeader(i18n("Numeric Prefixes and Roman Numerals")); 0138 item->setIcon(QIcon::fromTheme(QStringLiteral("numbers"))); 0139 auto layout = new QVBoxLayout(frame); 0140 layout->setContentsMargins(0, 0, 0, 0); 0141 0142 QTableWidget *table = new MyTableWidget(frame); 0143 table->verticalHeader()->hide(); 0144 0145 table->setColumnCount(3); 0146 table->setRowCount(28); 0147 table->setHorizontalHeaderLabels(QStringList() << i18n("Number") << i18nc("For example 'Mono' for 1 and 'Tri' for 3", "Prefix") << i18n("Roman Numerals")); 0148 0149 layout->addWidget(table); 0150 0151 table->setItem(0, 0, new MyWidgetItem(i18n("0.5"))); 0152 table->setItem(1, 0, new MyWidgetItem(i18n("1"))); 0153 table->setItem(2, 0, new MyWidgetItem(i18n("1.5"))); 0154 table->setItem(3, 0, new MyWidgetItem(i18n("2"))); 0155 table->setItem(4, 0, new MyWidgetItem(i18n("2.5"))); 0156 table->setItem(5, 0, new MyWidgetItem(i18n("3"))); 0157 table->setItem(6, 0, new MyWidgetItem(i18n("4"))); 0158 table->setItem(7, 0, new MyWidgetItem(i18n("5"))); 0159 table->setItem(8, 0, new MyWidgetItem(i18n("6"))); 0160 table->setItem(9, 0, new MyWidgetItem(i18n("7"))); 0161 table->setItem(10, 0, new MyWidgetItem(i18n("8"))); 0162 table->setItem(11, 0, new MyWidgetItem(i18n("9"))); 0163 table->setItem(12, 0, new MyWidgetItem(i18n("10"))); 0164 table->setItem(13, 0, new MyWidgetItem(i18n("11"))); 0165 table->setItem(14, 0, new MyWidgetItem(i18n("12"))); 0166 table->setItem(15, 0, new MyWidgetItem(i18n("13"))); 0167 table->setItem(16, 0, new MyWidgetItem(i18n("14"))); 0168 table->setItem(17, 0, new MyWidgetItem(i18n("15"))); 0169 table->setItem(18, 0, new MyWidgetItem(i18n("16"))); 0170 table->setItem(19, 0, new MyWidgetItem(i18n("17"))); 0171 table->setItem(20, 0, new MyWidgetItem(i18n("18"))); 0172 table->setItem(21, 0, new MyWidgetItem(i18n("19"))); 0173 table->setItem(22, 0, new MyWidgetItem(i18n("20"))); 0174 table->setItem(23, 0, new MyWidgetItem(i18n("40"))); 0175 table->setItem(24, 0, new MyWidgetItem(i18n("50"))); 0176 table->setItem(25, 0, new MyWidgetItem(i18n("60"))); 0177 table->setItem(26, 0, new MyWidgetItem(i18n("90"))); 0178 table->setItem(27, 0, new MyWidgetItem(i18n("100"))); 0179 0180 // greek names of the numbers 0181 table->setItem(0, 1, new MyWidgetItem(QStringLiteral("hemi"))); 0182 table->setItem(1, 1, new MyWidgetItem(QStringLiteral("mono"))); 0183 table->setItem(2, 1, new MyWidgetItem(QStringLiteral("sesqui"))); 0184 table->setItem(3, 1, new MyWidgetItem(QStringLiteral("di, bi"))); 0185 table->setItem(4, 1, new MyWidgetItem(QStringLiteral("hemipenta"))); 0186 table->setItem(5, 1, new MyWidgetItem(QStringLiteral("tri"))); 0187 table->setItem(6, 1, new MyWidgetItem(QStringLiteral("tetra"))); 0188 table->setItem(7, 1, new MyWidgetItem(QStringLiteral("penta"))); 0189 table->setItem(8, 1, new MyWidgetItem(QStringLiteral("hexa"))); 0190 table->setItem(9, 1, new MyWidgetItem(QStringLiteral("hepta"))); 0191 table->setItem(10, 1, new MyWidgetItem(QStringLiteral("octa"))); 0192 table->setItem(11, 1, new MyWidgetItem(QStringLiteral("nona, ennea"))); 0193 table->setItem(12, 1, new MyWidgetItem(QStringLiteral("deca"))); 0194 table->setItem(13, 1, new MyWidgetItem(QStringLiteral("hendeca, undeca"))); 0195 table->setItem(14, 1, new MyWidgetItem(QStringLiteral("dodeca"))); 0196 table->setItem(15, 1, new MyWidgetItem(QStringLiteral("trideca"))); 0197 table->setItem(16, 1, new MyWidgetItem(QStringLiteral("tetradeca"))); 0198 table->setItem(17, 1, new MyWidgetItem(QStringLiteral("pentadeca"))); 0199 table->setItem(18, 1, new MyWidgetItem(QStringLiteral("hexadeca"))); 0200 table->setItem(19, 1, new MyWidgetItem(QStringLiteral("heptadeca"))); 0201 table->setItem(20, 1, new MyWidgetItem(QStringLiteral("octadeca"))); 0202 table->setItem(21, 1, new MyWidgetItem(QStringLiteral("nonadeca"))); 0203 table->setItem(22, 1, new MyWidgetItem(QStringLiteral("eicosa"))); 0204 table->setItem(23, 1, new MyWidgetItem(QStringLiteral("tetraconta"))); 0205 table->setItem(24, 1, new MyWidgetItem(QStringLiteral("pentaconta"))); 0206 table->setItem(25, 1, new MyWidgetItem(QStringLiteral("hexaconta"))); 0207 table->setItem(26, 1, new MyWidgetItem(QStringLiteral("nonaconta"))); 0208 table->setItem(27, 1, new MyWidgetItem(QStringLiteral("hecta"))); 0209 0210 // roman symbols 0211 table->setItem(1, 2, new MyWidgetItem(QStringLiteral("I"))); 0212 table->setItem(3, 2, new MyWidgetItem(QStringLiteral("II"))); 0213 table->setItem(5, 2, new MyWidgetItem(QStringLiteral("III"))); 0214 table->setItem(6, 2, new MyWidgetItem(QStringLiteral("IV"))); 0215 table->setItem(7, 2, new MyWidgetItem(QStringLiteral("V"))); 0216 table->setItem(8, 2, new MyWidgetItem(QStringLiteral("VI"))); 0217 table->setItem(9, 2, new MyWidgetItem(QStringLiteral("VII"))); 0218 table->setItem(10, 2, new MyWidgetItem(QStringLiteral("VIII"))); 0219 table->setItem(11, 2, new MyWidgetItem(QStringLiteral("IX"))); 0220 table->setItem(12, 2, new MyWidgetItem(QStringLiteral("X"))); 0221 table->setItem(13, 2, new MyWidgetItem(QStringLiteral("XI"))); 0222 table->setItem(14, 2, new MyWidgetItem(QStringLiteral("XII"))); 0223 table->setItem(15, 2, new MyWidgetItem(QStringLiteral("XIII"))); 0224 table->setItem(16, 2, new MyWidgetItem(QStringLiteral("XIV"))); 0225 table->setItem(17, 2, new MyWidgetItem(QStringLiteral("XV"))); 0226 table->setItem(18, 2, new MyWidgetItem(QStringLiteral("XVI"))); 0227 table->setItem(19, 2, new MyWidgetItem(QStringLiteral("XVII"))); 0228 table->setItem(20, 2, new MyWidgetItem(QStringLiteral("XVIII"))); 0229 table->setItem(21, 2, new MyWidgetItem(QStringLiteral("XIV"))); 0230 table->setItem(22, 2, new MyWidgetItem(QStringLiteral("XX"))); 0231 table->setItem(23, 2, new MyWidgetItem(QStringLiteral("XL"))); 0232 table->setItem(24, 2, new MyWidgetItem(QStringLiteral("L"))); 0233 table->setItem(25, 2, new MyWidgetItem(QStringLiteral("LX"))); 0234 table->setItem(26, 2, new MyWidgetItem(QStringLiteral("XC"))); 0235 table->setItem(27, 2, new MyWidgetItem(QStringLiteral("C"))); 0236 0237 table->resizeColumnsToContents(); 0238 frame->setMinimumWidth(qMax(table->columnWidth(0) + table->columnWidth(1) + table->columnWidth(2), table->horizontalHeader()->sizeHint().width()) + 25); 0239 } 0240 0241 TablesDialog::~TablesDialog() = default; 0242 0243 MyTableWidget::MyTableWidget(QWidget *parent) 0244 : QTableWidget(parent) 0245 { 0246 } 0247 0248 void MyTableWidget::contextMenuEvent(QContextMenuEvent *event) 0249 { 0250 auto menu = QMenu((QWidget *)sender()); 0251 menu.addAction(i18n("&Copy"), this, &MyTableWidget::copyToClipboard, QKeySequence(Qt::Key_C | Qt::CTRL)); 0252 menu.exec(event->globalPos()); 0253 } 0254 0255 void MyTableWidget::copyToClipboard() 0256 { 0257 QApplication::clipboard()->setText(currentItem()->data(QTableWidgetItem::Type).toString()); 0258 }