29 #include <QApplication>
35 #include <kaboutdata.h>
36 #include <kacceleratormanager.h>
38 #include <kactioncollection.h>
39 #include <kapplication.h>
40 #include <kbuttongroup.h>
41 #include <kcmdlineargs.h>
42 #include <kcolorbutton.h>
43 #include <kcolormimedata.h>
45 #include <kconfigdialog.h>
48 #include <kglobalsettings.h>
51 #include <knumvalidator.h>
52 #include <kpushbutton.h>
53 #include <kstandardaction.h>
54 #include <kstatusbar.h>
55 #include <ktoggleaction.h>
57 #include <kxmlguifactory.h>
66 const char description[] = I18N_NOOP(
"KDE Calculator");
68 const int maxprecision = 1000;
87 central->setLayoutDirection(Qt::LeftToRight);
88 setCentralWidget(central);
89 KAcceleratorManager::setNoAccel(central);
104 base_choose_group_ =
new QButtonGroup(
this);
105 base_choose_group_->setExclusive(
true);
106 base_choose_group_->addButton(hexRadio, HexMode);
107 base_choose_group_->addButton(decRadio, DecMode);
108 base_choose_group_->addButton(octRadio, OctMode);
109 base_choose_group_->addButton(binRadio, BinMode);
110 connect(base_choose_group_, SIGNAL(buttonClicked(
int)),
113 angle_choose_group_ =
new QButtonGroup(
this);
114 angle_choose_group_->setExclusive(
true);
115 angle_choose_group_->addButton(degRadio, DegMode);
116 angle_choose_group_->addButton(radRadio, RadMode);
117 angle_choose_group_->addButton(gradRadio, GradMode);
118 connect(angle_choose_group_, SIGNAL(buttonClicked(
int)),
122 constants_menu_ = createConstantsMenu();
123 menuBar()->insertMenu((menuBar()->actions)()[2], constants_menu_);
131 connect(calc_display, SIGNAL(changedText(QString)), SLOT(setCaption(QString)));
134 calc_display->changeSettings();
139 setFixedSize(minimumSize());
146 switch (calculatorMode) {
148 action_mode_science_->setChecked(
true);
151 action_mode_statistic_->setChecked(
true);
154 action_mode_numeral_->setChecked(
true);
158 action_mode_simple_->setChecked(
true);
165 connect(KGlobalSettings::self(), SIGNAL(kdisplayPaletteChanged()), SLOT(
setColors()));
166 connect(KGlobalSettings::self(), SIGNAL(kdisplayFontChanged()), SLOT(
setFonts()));
168 calc_display->setFocus();
184 void KCalculator::setupMainActions() {
187 KStandardAction::quit(
this, SLOT(close()), actionCollection());
190 KStandardAction::undo(calc_display, SLOT(slotHistoryBack()), actionCollection());
191 KStandardAction::redo(calc_display, SLOT(slotHistoryForward()), actionCollection());
192 KStandardAction::cut(calc_display, SLOT(slotCut()), actionCollection());
193 KStandardAction::copy(calc_display, SLOT(slotCopy()), actionCollection());
194 KStandardAction::paste(calc_display, SLOT(slotPaste()), actionCollection());
197 QActionGroup *modeGroup =
new QActionGroup(
this);
199 action_mode_simple_ = actionCollection()->add<KToggleAction>(QLatin1String(
"mode_simple"));
200 action_mode_simple_->setActionGroup(modeGroup);
201 action_mode_simple_->setText(i18n(
"Simple Mode"));
204 action_mode_science_ = actionCollection()->add<KToggleAction>(QLatin1String(
"mode_science"));
205 action_mode_science_->setActionGroup(modeGroup);
206 action_mode_science_->setText(i18n(
"Science Mode"));
209 action_mode_statistic_ = actionCollection()->add<KToggleAction>(QLatin1String(
"mode_statistics"));
210 action_mode_statistic_->setActionGroup(modeGroup);
211 action_mode_statistic_->setText(i18n(
"Statistic Mode"));
214 action_mode_numeral_ = actionCollection()->add<KToggleAction>(QLatin1String(
"mode_numeral"));
215 action_mode_numeral_->setActionGroup(modeGroup);
216 action_mode_numeral_->setText(i18n(
"Numeral System Mode"));
220 action_constants_show_ = actionCollection()->add<KToggleAction>(QLatin1String(
"show_constants"));
221 action_constants_show_->setText(i18n(
"Constants &Buttons"));
222 action_constants_show_->setChecked(
true);
223 connect(action_constants_show_, SIGNAL(toggled(
bool)), SLOT(
slotConstantsShow(
bool)));
225 action_bitset_show_ = actionCollection()->add<KToggleAction>(QLatin1String(
"show_bitset"));
226 action_bitset_show_->setText(i18n(
"Show B&it Edit"));
227 action_bitset_show_->setChecked(
true);
228 connect(action_bitset_show_, SIGNAL(toggled(
bool)), SLOT(
slotBitsetshow(
bool)));
230 KStandardAction::preferences(
this, SLOT(
showSettings()), actionCollection());
231 KStandardAction::keyBindings(guiFactory(), SLOT(configureShortcuts()), actionCollection());
249 void KCalculator::setupStatusbar() {
252 statusBar()->insertPermanentFixedItem(QLatin1String(
" NORM "), ShiftField);
253 statusBar()->setItemAlignment(ShiftField, Qt::AlignCenter);
255 statusBar()->insertPermanentFixedItem(QLatin1String(
" HEX "), BaseField);
256 statusBar()->setItemAlignment(BaseField, Qt::AlignCenter);
258 statusBar()->insertPermanentFixedItem(QLatin1String(
" DEG "), AngleField);
259 statusBar()->setItemAlignment(AngleField, Qt::AlignCenter);
261 statusBar()->insertPermanentFixedItem(QLatin1String(
" \xa0\xa0 "), MemField);
262 statusBar()->setItemAlignment(MemField, Qt::AlignCenter);
269 void KCalculator::setupNumberKeys() {
271 num_button_group_ =
new QButtonGroup(
this);
272 connect(num_button_group_, SIGNAL(buttonClicked(
int)), SLOT(
slotNumberclicked(
int)));
274 num_button_group_->addButton(pb0, 0);
275 num_button_group_->addButton(pb1, 1);
276 num_button_group_->addButton(pb2, 2);
277 num_button_group_->addButton(pb3, 3);
278 num_button_group_->addButton(pb4, 4);
279 num_button_group_->addButton(pb5, 5);
280 num_button_group_->addButton(pb6, 6);
281 num_button_group_->addButton(pb7, 7);
282 num_button_group_->addButton(pb8, 8);
283 num_button_group_->addButton(pb9, 9);
284 num_button_group_->addButton(pbA, 0xA);
285 num_button_group_->addButton(pbB, 0xB);
286 num_button_group_->addButton(pbC, 0xC);
287 num_button_group_->addButton(pbD, 0xD);
288 num_button_group_->addButton(pbE, 0xE);
289 num_button_group_->addButton(pbF, 0xF);
290 connect(
this, SIGNAL(
switchShowAccels(
bool)), pb0, SLOT(slotSetAccelDisplayMode(
bool)));
291 connect(
this, SIGNAL(
switchShowAccels(
bool)), pb1, SLOT(slotSetAccelDisplayMode(
bool)));
292 connect(
this, SIGNAL(
switchShowAccels(
bool)), pb2, SLOT(slotSetAccelDisplayMode(
bool)));
293 connect(
this, SIGNAL(
switchShowAccels(
bool)), pb3, SLOT(slotSetAccelDisplayMode(
bool)));
294 connect(
this, SIGNAL(
switchShowAccels(
bool)), pb4, SLOT(slotSetAccelDisplayMode(
bool)));
295 connect(
this, SIGNAL(
switchShowAccels(
bool)), pb5, SLOT(slotSetAccelDisplayMode(
bool)));
296 connect(
this, SIGNAL(
switchShowAccels(
bool)), pb6, SLOT(slotSetAccelDisplayMode(
bool)));
297 connect(
this, SIGNAL(
switchShowAccels(
bool)), pb7, SLOT(slotSetAccelDisplayMode(
bool)));
298 connect(
this, SIGNAL(
switchShowAccels(
bool)), pb8, SLOT(slotSetAccelDisplayMode(
bool)));
299 connect(
this, SIGNAL(
switchShowAccels(
bool)), pb9, SLOT(slotSetAccelDisplayMode(
bool)));
300 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbA, SLOT(slotSetAccelDisplayMode(
bool)));
301 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbB, SLOT(slotSetAccelDisplayMode(
bool)));
302 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbC, SLOT(slotSetAccelDisplayMode(
bool)));
303 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbD, SLOT(slotSetAccelDisplayMode(
bool)));
304 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbE, SLOT(slotSetAccelDisplayMode(
bool)));
305 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbF, SLOT(slotSetAccelDisplayMode(
bool)));
312 void KCalculator::setupRightKeypad() {
315 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbShift, SLOT(slotSetAccelDisplayMode(
bool)));
317 pbBackspace->setShortcut(QKeySequence(Qt::Key_Backspace));
318 new QShortcut(Qt::Key_PageUp, pbBackspace, SLOT(animateClick()));
320 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbBackspace, SLOT(slotSetAccelDisplayMode(
bool)));
322 pbClear->setShortcut(QKeySequence(Qt::Key_Escape));
323 new QShortcut(Qt::Key_PageUp, pbClear, SLOT(animateClick()));
325 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbClear, SLOT(slotSetAccelDisplayMode(
bool)));
327 pbAllClear->setShortcut(QKeySequence(Qt::Key_Delete));
328 new QShortcut(Qt::Key_PageDown, pbAllClear, SLOT(animateClick()));
330 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbAllClear, SLOT(slotSetAccelDisplayMode(
bool)));
332 pbParenOpen->setShortcut(QKeySequence(Qt::Key_ParenLeft));
334 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbParenOpen, SLOT(slotSetAccelDisplayMode(
bool)));
336 pbParenClose->setShortcut(QKeySequence(Qt::Key_ParenRight));
338 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbParenClose, SLOT(slotSetAccelDisplayMode(
bool)));
340 pbMemRecall->setDisabled(
true);
342 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbMemRecall, SLOT(slotSetAccelDisplayMode(
bool)));
345 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbMemClear, SLOT(slotSetAccelDisplayMode(
bool)));
347 pbMemPlusMinus->addMode(
ModeNormal, i18nc(
"Add display to memory",
"M+"), i18n(
"Add display to memory"));
348 pbMemPlusMinus->addMode(
ModeShift, i18nc(
"Subtract from memory",
"M\xe2\x88\x92"), i18n(
"Subtract from memory"));
350 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbMemPlusMinus, SLOT(slotSetAccelDisplayMode(
bool)));
354 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbMemStore, SLOT(slotSetAccelDisplayMode(
bool)));
356 pbPercent->setShortcut(QKeySequence(Qt::Key_Percent));
358 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbPercent, SLOT(slotSetAccelDisplayMode(
bool)));
360 pbPlusMinus->setShortcut(QKeySequence(Qt::Key_Backslash));
362 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbPlusMinus, SLOT(slotSetAccelDisplayMode(
bool)));
369 void KCalculator::setupNumericKeypad() {
371 pbCube->addMode(
ModeNormal, i18nc(
"Third power",
"x<sup>3</sup>"), i18n(
"Third power"));
372 pbCube->addMode(
ModeShift, QLatin1String(
"<sup>3</sup>√x"), i18n(
"Cube root"));
374 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbCube, SLOT(slotSetAccelDisplayMode(
bool)));
377 pbDivision->setShortcut(QKeySequence(Qt::Key_Slash));
378 new QShortcut(Qt::Key_division, pbDivision, SLOT(animateClick()));
380 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbDivision, SLOT(slotSetAccelDisplayMode(
bool)));
382 pbMultiplication->setShortcut(QKeySequence(Qt::Key_Asterisk));
383 new QShortcut(Qt::Key_X, pbMultiplication, SLOT(animateClick()));
384 new QShortcut(Qt::Key_multiply, pbMultiplication, SLOT(animateClick()));
386 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbMultiplication, SLOT(slotSetAccelDisplayMode(
bool)));
388 pbMinus->setShortcut(QKeySequence(Qt::Key_Minus));
390 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbMinus, SLOT(slotSetAccelDisplayMode(
bool)));
392 pbPlus->setShortcut(QKeySequence(Qt::Key_Plus));
394 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbPlus, SLOT(slotSetAccelDisplayMode(
bool)));
396 pbPeriod->setText(KGlobal::locale()->decimalSymbol());
397 pbPeriod->setShortcut(KGlobal::locale()->decimalSymbol());
409 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbPeriod, SLOT(slotSetAccelDisplayMode(
bool)));
411 pbEqual->setShortcut(QKeySequence(Qt::Key_Enter));
412 new QShortcut(Qt::Key_Equal, pbEqual, SLOT(animateClick()));
413 new QShortcut(Qt::Key_Return, pbEqual, SLOT(animateClick()));
415 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbEqual, SLOT(slotSetAccelDisplayMode(
bool)));
422 void KCalculator::setupLogicKeys() {
424 logic_buttons_.append(pbAND);
425 logic_buttons_.append(pbOR);
426 logic_buttons_.append(pbXOR);
427 logic_buttons_.append(pbLsh);
428 logic_buttons_.append(pbRsh);
429 logic_buttons_.append(pbCmp);
431 pbAND->setShortcut(QKeySequence(Qt::Key_Ampersand));
432 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbAND, SLOT(slotSetAccelDisplayMode(
bool)));
435 pbOR->setShortcut(QKeySequence(Qt::Key_Bar));
436 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbOR, SLOT(slotSetAccelDisplayMode(
bool)));
439 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbXOR, SLOT(slotSetAccelDisplayMode(
bool)));
442 pbLsh->setShortcut(QKeySequence(Qt::Key_Less));
443 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbLsh, SLOT(slotSetAccelDisplayMode(
bool)));
446 pbRsh->setShortcut(QKeySequence(Qt::Key_Greater));
447 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbRsh, SLOT(slotSetAccelDisplayMode(
bool)));
450 pbCmp->setShortcut(QKeySequence(Qt::Key_AsciiTilde));
451 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbCmp, SLOT(slotSetAccelDisplayMode(
bool)));
459 void KCalculator::setupScientificKeys() {
461 scientific_buttons_.append(pbHyp);
462 scientific_buttons_.append(pbSin);
463 scientific_buttons_.append(pbCos);
464 scientific_buttons_.append(pbTan);
465 scientific_buttons_.append(pbLog);
466 scientific_buttons_.append(pbLn);
468 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbHyp, SLOT(slotSetAccelDisplayMode(
bool)));
469 connect(pbHyp, SIGNAL(toggled(
bool)), SLOT(
slotHyptoggled(
bool)));
471 pbSin->addMode(
ModeNormal, i18nc(
"Sine",
"Sin"), i18n(
"Sine"));
472 pbSin->addMode(
ModeShift, i18nc(
"Arc sine",
"Asin"), i18n(
"Arc sine"));
473 pbSin->addMode(
ModeHyperbolic, i18nc(
"Hyperbolic sine",
"Sinh"), i18n(
"Hyperbolic sine"));
475 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbSin, SLOT(slotSetAccelDisplayMode(
bool)));
479 pbCos->addMode(
ModeNormal, i18nc(
"Cosine",
"Cos"), i18n(
"Cosine"));
480 pbCos->addMode(
ModeShift, i18nc(
"Arc cosine",
"Acos"), i18n(
"Arc cosine"));
481 pbCos->addMode(
ModeHyperbolic, i18nc(
"Hyperbolic cosine",
"Cosh"), i18n(
"Hyperbolic cosine"));
483 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbCos, SLOT(slotSetAccelDisplayMode(
bool)));
487 pbTan->addMode(
ModeNormal, i18nc(
"Tangent",
"Tan"), i18n(
"Tangent"));
488 pbTan->addMode(
ModeShift, i18nc(
"Arc tangent",
"Atan"), i18n(
"Arc tangent"));
489 pbTan->addMode(
ModeHyperbolic, i18nc(
"Hyperbolic tangent",
"Tanh"), i18n(
"Hyperbolic tangent"));
491 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbTan, SLOT(slotSetAccelDisplayMode(
bool)));
495 pbLog->addMode(
ModeNormal, i18nc(
"Logarithm to base 10",
"Log"), i18n(
"Logarithm to base 10"));
496 pbLog->addMode(
ModeShift, i18nc(
"10 to the power of x",
"10<sup>x</sup>"), i18n(
"10 to the power of x"));
497 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbLog, SLOT(slotSetAccelDisplayMode(
bool)));
500 pbLn->addMode(
ModeNormal, i18nc(
"Natural log",
"Ln"), i18n(
"Natural log"));
501 pbLn->addMode(
ModeShift, i18nc(
"Exponential function",
"e<sup>x</sup>"), i18n(
"Exponential function"));
502 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbLn, SLOT(slotSetAccelDisplayMode(
bool)));
511 void KCalculator::setupStatisticKeys() {
513 stat_buttons_.append(pbNData);
514 stat_buttons_.append(pbMean);
515 stat_buttons_.append(pbSd);
516 stat_buttons_.append(pbMed);
517 stat_buttons_.append(pbDat);
518 stat_buttons_.append(pbCSt);
520 pbNData->addMode(
ModeNormal, i18nc(
"Number of data entered",
"N"), i18n(
"Number of data entered"));
521 pbNData->addMode(
ModeShift, QString::fromUtf8(
"\xce\xa3") + QLatin1Char(
'x'), i18n(
"Sum of all data items"));
522 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbNData, SLOT(slotSetAccelDisplayMode(
bool)));
526 pbMean->addMode(
ModeNormal, i18nc(
"Mean",
"Mea"), i18n(
"Mean"));
527 pbMean->addMode(
ModeShift, QString::fromUtf8(
"\xce\xa3") + QLatin1String(
"x<sup>2</sup>"), i18n(
"Sum of all data items squared"));
528 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbMean, SLOT(slotSetAccelDisplayMode(
bool)));
532 pbSd->addMode(
ModeNormal, QString::fromUtf8(
"\xcf\x83") + QLatin1String(
"<sub>N</sub>"), i18n(
"Standard deviation"));
533 pbSd->addMode(
ModeShift, QString::fromUtf8(
"\xcf\x83") + QLatin1String(
"<sub>N-1</sub>"), i18n(
"Sample standard deviation"));
534 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbSd, SLOT(slotSetAccelDisplayMode(
bool)));
538 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbMed, SLOT(slotSetAccelDisplayMode(
bool)));
541 pbDat->addMode(
ModeNormal, i18nc(
"Enter data",
"Dat"), i18n(
"Enter data"));
542 pbDat->addMode(
ModeShift, i18nc(
"Delete last data item",
"CDat"), i18n(
"Delete last data item"));
543 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbDat, SLOT(slotSetAccelDisplayMode(
bool)));
547 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbCSt, SLOT(slotSetAccelDisplayMode(
bool)));
555 void KCalculator::setupConstantsKeys() {
557 const_buttons_.append(pbC1);
558 const_buttons_.append(pbC2);
559 const_buttons_.append(pbC3);
560 const_buttons_.append(pbC4);
561 const_buttons_.append(pbC5);
562 const_buttons_.append(pbC6);
564 pbC1->setButtonNumber(0);
565 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbC1, SLOT(slotSetAccelDisplayMode(
bool)));
569 pbC2->setButtonNumber(1);
570 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbC2, SLOT(slotSetAccelDisplayMode(
bool)));
574 pbC3->setButtonNumber(2);
575 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbC3, SLOT(slotSetAccelDisplayMode(
bool)));
579 pbC4->setButtonNumber(3);
580 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbC4, SLOT(slotSetAccelDisplayMode(
bool)));
584 pbC5->setButtonNumber(4);
585 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbC5, SLOT(slotSetAccelDisplayMode(
bool)));
589 pbC6->setButtonNumber(5);
590 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbC6, SLOT(slotSetAccelDisplayMode(
bool)));
601 void KCalculator::setupMiscKeys() {
603 pbMod->addMode(
ModeNormal, i18nc(
"Modulo",
"Mod"), i18n(
"Modulo"));
604 pbMod->addMode(
ModeShift, i18nc(
"Integer division",
"IntDiv"), i18n(
"Integer division"));
606 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbMod, SLOT(slotSetAccelDisplayMode(
bool)));
607 pbMod->setShortcut(QKeySequence(Qt::Key_Colon));
610 pbReci->addMode(
ModeNormal, i18nc(
"Reciprocal",
"1/x"), i18n(
"Reciprocal"));
611 pbReci->addMode(
ModeShift, i18nc(
"n Choose m",
"nCm"), i18n(
"n Choose m"));
613 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbReci, SLOT(slotSetAccelDisplayMode(
bool)));
616 pbFactorial->addMode(
ModeNormal, i18nc(
"Factorial",
"x!"), i18n(
"Factorial"));
617 pbFactorial->setShortcut(QKeySequence(Qt::Key_Exclam));
618 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbFactorial, SLOT(slotSetAccelDisplayMode(
bool)));
621 pbSquare->addMode(
ModeNormal, i18nc(
"Square",
"x<sup>2</sup>"), i18n(
"Square"));
622 pbSquare->addMode(
ModeShift, QLatin1String(
"√x"), i18n(
"Square root"));
623 pbSquare->setShortcut(QKeySequence(Qt::Key_BracketLeft));
624 new QShortcut(Qt::Key_twosuperior, pbSquare, SLOT(animateClick()));
625 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbSquare, SLOT(slotSetAccelDisplayMode(
bool)));
629 pbPower->addMode(
ModeNormal, i18nc(
"x to the power of y",
"x<sup>y</sup>"), i18n(
"x to the power of y"));
630 pbPower->addMode(
ModeShift, i18nc(
"x to the power of 1/y",
"x<sup>1/y</sup>"), i18n(
"x to the power of 1/y"));
631 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbPower, SLOT(slotSetAccelDisplayMode(
bool)));
633 pbPower->setShortcut(QKeySequence(Qt::Key_AsciiCircum));
636 pbEE->addMode(
ModeNormal, QLatin1String(
"x<small>" "\xb7" "10</small><sup>y</sup>"), i18n(
"Exponent"));
637 connect(
this, SIGNAL(
switchShowAccels(
bool)), pbEE, SLOT(slotSetAccelDisplayMode(
bool)));
646 void KCalculator::setupKeys() {
650 setupNumericKeypad();
652 setupScientificKeys();
653 setupStatisticKeys();
654 setupConstantsKeys();
659 function_button_list_.append(pbHyp);
660 function_button_list_.append(pbShift);
661 function_button_list_.append(pbEE);
662 function_button_list_.append(pbSin);
663 function_button_list_.append(pbPlusMinus);
664 function_button_list_.append(pbCos);
665 function_button_list_.append(pbReci);
666 function_button_list_.append(pbTan);
667 function_button_list_.append(pbFactorial);
668 function_button_list_.append(pbLog);
669 function_button_list_.append(pbSquare);
670 function_button_list_.append(pbLn);
671 function_button_list_.append(pbPower);
672 function_button_list_.append(pbCube);
674 mem_button_list_.append(pbMemRecall);
675 mem_button_list_.append(pbMemPlusMinus);
676 mem_button_list_.append(pbMemStore);
677 mem_button_list_.append(pbMemClear);
678 mem_button_list_.append(pbClear);
679 mem_button_list_.append(pbAllClear);
681 operation_button_list_.append(pbMultiplication);
682 operation_button_list_.append(pbParenOpen);
683 operation_button_list_.append(pbParenClose);
684 operation_button_list_.append(pbAND);
685 operation_button_list_.append(pbDivision);
686 operation_button_list_.append(pbOR);
687 operation_button_list_.append(pbXOR);
688 operation_button_list_.append(pbPlus);
689 operation_button_list_.append(pbMinus);
690 operation_button_list_.append(pbLsh);
691 operation_button_list_.append(pbRsh);
692 operation_button_list_.append(pbPeriod);
693 operation_button_list_.append(pbEqual);
694 operation_button_list_.append(pbPercent);
695 operation_button_list_.append(pbCmp);
696 operation_button_list_.append(pbMod);
703 void KCalculator::updateGeometry() {
705 const QSize em = pbAND->fontMetrics().size(0, QLatin1String(
"M"));
706 int margin = QApplication::style()->pixelMetric(QStyle::PM_ButtonMargin, 0, 0);
707 margin = qMax(qMin(margin / 2, 3), 3);
710 foreach(QObject *obj, leftPad->children()) {
711 if (
KCalcButton *
const button = qobject_cast<KCalcButton *>(obj)) {
712 button->setFixedWidth(em.width() * 4 + margin * 2);
713 button->installEventFilter(
this);
718 foreach(QObject *obj, rightPad->children()) {
721 if (button && button != pbShift) {
722 button->setFixedWidth(em.width() * 3 + margin * 2);
723 button->installEventFilter(
this);
728 foreach(QObject *obj, numericPad->children()) {
729 if (
KCalcButton *
const button = qobject_cast<KCalcButton *>(obj)) {
732 button->setFixedWidth(em.width() * 3 + margin * 2);
734 button->installEventFilter(
this);
745 QString val = const_chosen.
value;
747 calc_display->setAmount(
KNumber(val));
762 current_base = calc_display->setBase(
NumBase(2));
763 statusBar()->changeItem(QLatin1String(
"BIN"), BaseField);
764 calc_display->setStatusText(BaseField, QLatin1String(
"Bin"));
767 current_base = calc_display->setBase(
NumBase(8));
768 statusBar()->changeItem(QLatin1String(
"OCT"), BaseField);
769 calc_display->setStatusText(BaseField, QLatin1String(
"Oct"));
772 current_base = calc_display->setBase(
NumBase(10));
773 statusBar()->changeItem(QLatin1String(
"DEC"), BaseField);
774 calc_display->setStatusText(BaseField, QLatin1String(
"Dec"));
777 current_base = calc_display->setBase(
NumBase(16));
778 statusBar()->changeItem(QLatin1String(
"HEX"), BaseField);
779 calc_display->setStatusText(BaseField, QLatin1String(
"Hex"));
782 statusBar()->changeItem(QLatin1String(
"Error"), BaseField);
783 calc_display->setStatusText(BaseField, QLatin1String(
"Error"));
788 for (
int i = 0; i < current_base; ++i) {
789 (num_button_group_->buttons()[i])->setEnabled(
true);
793 for (
int i = current_base; i < 16; ++i) {
794 (num_button_group_->buttons()[i])->setEnabled(
false);
798 pbPeriod->setEnabled(current_base ==
NB_DECIMAL);
806 btn->setEnabled(
false);
810 btn->setEnabled(
true);
821 void KCalculator::keyPressEvent(QKeyEvent *e) {
828 if(e->key() == Qt::Key_Period && e->modifiers() & Qt::KeypadModifier) {
829 pbPeriod->animateClick();
834 if (((e->modifiers() & Qt::NoModifier) == 0) || (e->modifiers() & Qt::ShiftModifier)) {
836 case Qt::Key_Backspace:
837 calc_display->deleteLastDigit();
842 if (e->key() == Qt::Key_Control) {
851 void KCalculator::keyReleaseEvent(QKeyEvent *e) {
853 if (e->key() == Qt::Key_Control) {
868 statusBar()->changeItem(QLatin1String(
"DEG"), AngleField);
869 calc_display->setStatusText(AngleField, QLatin1String(
"Deg"));
872 statusBar()->changeItem(QLatin1String(
"RAD"), AngleField);
873 calc_display->setStatusText(AngleField, QLatin1String(
"Rad"));
876 statusBar()->changeItem(QLatin1String(
"GRA"), AngleField);
877 calc_display->setStatusText(AngleField, QLatin1String(
"Gra"));
880 angle_mode_ = RadMode;
891 calc_display->newCharacter(QLatin1Char(
'e'));
905 statusBar()->changeItem(i18nc(
"Second button functions are active",
"SHIFT"), ShiftField);
906 calc_display->setStatusText(ShiftField, i18n(
"Shift"));
908 statusBar()->changeItem(i18nc(
"Normal button functions are active",
"NORM"), ShiftField);
909 calc_display->setStatusText(ShiftField, QString());
934 calc_display->setAmount(memory_num_);
946 memory_num_ = calc_display->getAmount();
947 calc_display->setStatusText(MemField, QLatin1String(
"M"));
948 statusBar()->changeItem(QLatin1String(
"M"), MemField);
949 pbMemRecall->setEnabled(
true);
958 calc_display->enterDigit(number_clicked);
970 core.
SinHyp(calc_display->getAmount());
977 switch (angle_mode_) {
979 core.
SinDeg(calc_display->getAmount());
982 core.
SinRad(calc_display->getAmount());
985 core.
SinGrad(calc_display->getAmount());
989 switch (angle_mode_) {
991 core.
ArcSinDeg(calc_display->getAmount());
994 core.
ArcSinRad(calc_display->getAmount());
1026 bool tmp_shift_mode = shift_mode_;
1029 if (!tmp_shift_mode) {
1030 memory_num_ += calc_display->getAmount();
1032 memory_num_ -= calc_display->getAmount();
1035 pbShift->setChecked(
false);
1036 statusBar()->changeItem(i18n(
"M"), MemField);
1037 calc_display->setStatusText(MemField, i18n(
"M"));
1038 pbMemRecall->setEnabled(
true);
1050 core.
CosHyp(calc_display->getAmount());
1057 switch (angle_mode_) {
1059 core.
CosDeg(calc_display->getAmount());
1062 core.
CosRad(calc_display->getAmount());
1065 core.
CosGrad(calc_display->getAmount());
1069 switch (angle_mode_) {
1071 core.
ArcCosDeg(calc_display->getAmount());
1074 core.
ArcCosRad(calc_display->getAmount());
1101 KNumber tmp_num = calc_display->getAmount();
1103 calc_display->setAmount(tmp_num);
1123 switch (angle_mode_) {
1135 switch (angle_mode_) {
1161 QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
1162 core.
Factorial(calc_display->getAmount());
1163 QApplication::restoreOverrideCursor();
1174 core.
Log10(calc_display->getAmount());
1176 core.
Exp10(calc_display->getAmount());
1189 core.
Square(calc_display->getAmount());
1204 core.
Cube(calc_display->getAmount());
1206 core.
CubeRoot(calc_display->getAmount());
1219 core.
Ln(calc_display->getAmount());
1221 core.
Exp(calc_display->getAmount());
1235 pbShift->setChecked(
false);
1241 KNumber tmp_num = calc_display->getAmount();
1243 calc_display->setAmount(tmp_num);
1254 statusBar()->changeItem(QLatin1String(
" \xa0\xa0 "), MemField);
1255 calc_display->setStatusText(MemField, QString());
1256 pbMemRecall->setDisabled(
true);
1265 calc_display->deleteLastDigit();
1294 core.
ParenOpen(calc_display->getAmount());
1405 calc_display->newCharacter(KGlobal::locale()->decimalSymbol()[0]);
1472 pbShift->setChecked(
false);
1488 pbShift->setChecked(
false);
1504 pbShift->setChecked(
false);
1525 pbShift->setChecked(
false);
1541 pbShift->setChecked(
false);
1543 statusBar()->showMessage(i18n(
"Last stat item erased"), 3000);
1557 statusBar()->showMessage(i18n(
"Stat mem cleared"), 3000);
1559 pbShift->setChecked(
false);
1570 if(
KCalcConstButton *btn = qobject_cast<KCalcConstButton*>(const_buttons_[button])) {
1574 QString val = btn->constant();
1576 calc_display->setAmount(
KNumber(val));
1579 pbShift->setChecked(
false);
1582 QString val = calc_display->text();
1587 btn->setLabelAndTooltip();
1591 calc_display->setAmount(calc_display->getAmount());
1606 if (KConfigDialog::showDialog(QLatin1String(
"settings"))) {
1611 KConfigDialog *
const dialog =
new KConfigDialog(
this, QLatin1String(
"settings"),
KCalcSettings::self());
1612 dialog->showButtonSeparator(
true);
1616 general->kcfg_Precision->setMaximum(maxprecision);
1617 dialog->addPage(general, i18n(
"General"), QLatin1String(
"accessories-calculator"), i18n(
"General Settings"));
1621 dialog->addPage(fonts, i18n(
"Font"), QLatin1String(
"preferences-desktop-font"), i18n(
"Select Display Font"));
1625 dialog->addPage(color, i18n(
"Colors"), QLatin1String(
"format-fill-color"), i18n(
"Button & Display Colors"));
1635 constants_->pushButton0->setMenu(tmp_menu);
1639 constants_->pushButton1->setMenu(tmp_menu);
1643 constants_->pushButton2->setMenu(tmp_menu);
1647 constants_->pushButton3->setMenu(tmp_menu);
1651 constants_->pushButton4->setMenu(tmp_menu);
1655 constants_->pushButton5->setMenu(tmp_menu);
1657 dialog->addPage(constants_, i18n(
"Constants"), QLatin1String(
"preferences-kcalc-constants"), i18n(
"Define Constants"));
1660 connect(dialog, SIGNAL(settingsChanged(QString)), SLOT(
updateSettings()));
1676 constants_->kcfg_valueConstant0->setText(chosen_const.
value);
1677 constants_->kcfg_nameConstant0->setText(chosen_const.
label);
1685 constants_->kcfg_valueConstant1->setText(chosen_const.
value);
1686 constants_->kcfg_nameConstant1->setText(chosen_const.
label);
1694 constants_->kcfg_valueConstant2->setText(chosen_const.
value);
1695 constants_->kcfg_nameConstant2->setText(chosen_const.
label);
1703 constants_->kcfg_valueConstant3->setText(chosen_const.
value);
1704 constants_->kcfg_nameConstant3->setText(chosen_const.
label);
1712 constants_->kcfg_valueConstant4->setText(chosen_const.
value);
1713 constants_->kcfg_nameConstant4->setText(chosen_const.
label);
1721 constants_->kcfg_valueConstant5->setText(chosen_const.
value);
1722 constants_->kcfg_nameConstant5->setText(chosen_const.
label);
1731 action_constants_show_->setChecked(
false);
1732 action_constants_show_->setEnabled(
false);
1733 action_bitset_show_->setChecked(
false);
1734 action_bitset_show_->setEnabled(
false);
1735 showMemButtons(
false);
1736 showScienceButtons(
false);
1737 showStatButtons(
false);
1738 showLogicButtons(
false);
1744 pbFactorial->hide();
1748 pbBackspace->hide();
1752 delete constants_menu_;
1753 constants_menu_ = 0;
1764 action_constants_show_->setEnabled(
true);
1766 action_bitset_show_->setChecked(
false);
1767 action_bitset_show_->setEnabled(
false);
1773 pbFactorial->show();
1777 pbBackspace->show();
1781 showMemButtons(
true);
1782 showScienceButtons(
true);
1783 showStatButtons(
false);
1784 showLogicButtons(
false);
1786 if(!constants_menu_) {
1787 constants_menu_ = createConstantsMenu();
1788 menuBar()->insertMenu((menuBar()->actions)()[2], constants_menu_);
1800 action_constants_show_->setEnabled(
true);
1802 action_bitset_show_->setChecked(
false);
1803 action_bitset_show_->setEnabled(
false);
1809 pbFactorial->show();
1813 pbBackspace->show();
1817 showMemButtons(
true);
1818 showScienceButtons(
true);
1819 showStatButtons(
true);
1820 showLogicButtons(
false);
1822 if(!constants_menu_) {
1823 constants_menu_ = createConstantsMenu();
1824 menuBar()->insertMenu((menuBar()->actions)()[2], constants_menu_);
1836 action_constants_show_->setChecked(
false);
1837 action_constants_show_->setEnabled(
false);
1838 action_bitset_show_->setEnabled(
true);
1845 pbFactorial->show();
1849 pbBackspace->show();
1853 showMemButtons(
true);
1854 showScienceButtons(
false);
1855 showStatButtons(
false);
1856 showLogicButtons(
true);
1858 if(!constants_menu_) {
1859 constants_menu_ = createConstantsMenu();
1860 menuBar()->insertMenu((menuBar()->actions)()[2], constants_menu_);
1870 void KCalculator::showMemButtons(
bool toggled) {
1891 void KCalculator::showStatButtons(
bool toggled) {
1908 void KCalculator::showScienceButtons(
bool toggled) {
1920 statusBar()->setItemFixed(AngleField, -1);
1930 statusBar()->changeItem(QString(), AngleField);
1931 statusBar()->setItemFixed(AngleField, 0);
1932 calc_display->setStatusText(AngleField, QString());
1940 void KCalculator::showLogicButtons(
bool toggled) {
1943 mBitset->setEnabled(
true);
1944 connect(mBitset, SIGNAL(valueChanged(quint64)),
this, SLOT(
slotBitsetChanged(quint64)));
1952 statusBar()->setItemFixed(BaseField, -1);
1958 for (
int i = 10; i < 16; ++i) {
1959 (num_button_group_->button(i))->show();
1962 mBitset->setEnabled(
false);
1963 disconnect(mBitset, SIGNAL(valueChanged(quint64)),
this, SLOT(
slotBitsetChanged(quint64)));
1971 decRadio->animateClick(0);
1977 statusBar()->changeItem(QString(), BaseField);
1978 statusBar()->setItemFixed(BaseField, 0);
1979 calc_display->setStatusText(BaseField, QString());
1980 for (
int i = 10; i < 16; ++i) {
1981 (num_button_group_->button(i))->hide();
2011 mBitset->setVisible(toggled);
2024 if (
KCalcConstButton *
const constbtn = qobject_cast<KCalcConstButton*>(btn)) {
2025 constbtn->setLabelAndTooltip();
2037 calc_display->setAmount(
KNumber(value));
2062 disconnect(calc_display, SIGNAL(changedText(QString)),
this, 0);
2065 connect(calc_display, SIGNAL(changedText(QString)), SLOT(setCaption(QString)));
2067 setCaption(QString());
2070 calc_display->changeSettings();
2078 void KCalculator::updateDisplay(UpdateFlags flags) {
2083 calc_display->update();
2086 pbShift->setChecked(
false);
2096 calc_display->changeSettings();
2098 KColorScheme schemeButtons(QPalette::Active, KColorScheme::Button);
2099 const QColor defaultColor = schemeButtons.background().color();
2110 const QString sheet = QLatin1String(
"KPushButton { background-color: %1 }");
2113 for (
int i = 0; i < 10; ++i) {
2114 (num_button_group_->button(i))->setStyleSheet(sheet.arg(numPal.name()));
2119 btn->setStyleSheet(sheet.arg(funcPal.name()));
2124 btn->setStyleSheet(sheet.arg(statPal.name()));
2128 for (
int i = 10; i < 16; ++i) {
2129 (num_button_group_->button(i))->setStyleSheet(sheet.arg(hexPal.name()));
2134 btn->setStyleSheet(sheet.arg(memPal.name()));
2139 btn->setStyleSheet(sheet.arg(opPal.name()));
2149 foreach(QObject *obj, leftPad->children()) {
2150 if (
KCalcButton *
const button = qobject_cast<KCalcButton*>(obj)) {
2155 foreach(QObject *obj, numericPad->children()) {
2156 if (
KCalcButton *
const button = qobject_cast<KCalcButton*>(obj)) {
2161 foreach(QObject *obj, rightPad->children()) {
2162 if (
KCalcButton *
const button = qobject_cast<KCalcButton*>(obj)) {
2174 void KCalculator::setPrecision() {
2184 void KCalculator::setAngle() {
2187 btn->animateClick(0);
2195 void KCalculator::setBase() {
2197 btn->animateClick(0);
2205 bool KCalculator::eventFilter(QObject *o, QEvent *e) {
2207 switch (e->type()) {
2208 case QEvent::DragEnter: {
2209 QDragEnterEvent *
const ev =
reinterpret_cast<QDragEnterEvent *
>(e);
2210 ev->setAccepted(KColorMimeData::canDecode(ev->mimeData()));
2213 case QEvent::DragLeave: {
2216 case QEvent::Drop: {
2222 QDropEvent *
const ev =
reinterpret_cast<QDropEvent *
>(e);
2223 QColor c = KColorMimeData::fromMimeData(ev->mimeData());
2226 QString cn = c.name();
2227 QString sheet = QLatin1String(
"background-color: %1");
2229 QList<QAbstractButton*> *list;
2230 const int num_but = num_button_group_->buttons().indexOf(calcButton);
2231 if (num_but != -1) {
2234 for (
int i = 0; i < 10; ++i) {
2235 (num_button_group_->buttons()[i])->setStyleSheet(sheet.arg(cn));
2238 for (
int i = 10; i < 16; ++i) {
2239 (num_button_group_->buttons()[i])->setStyleSheet(sheet.arg(cn));
2243 }
else if (function_button_list_.contains(calcButton)) {
2244 list = &function_button_list_;
2245 }
else if (stat_button_list_.contains(calcButton)) {
2246 list = &stat_button_list_;
2247 }
else if (mem_button_list_.contains(calcButton)) {
2248 list = &mem_button_list_;
2249 }
else if (operation_button_list_.contains(calcButton)) {
2250 list = &operation_button_list_;
2255 for (
int i = 0; i < list->size(); ++i) {
2256 list->at(i)->setStyleSheet(sheet.arg(cn));
2263 return KXmlGuiWindow::eventFilter(o, e);
2270 #include "kcalc.moc"
2276 extern "C" KDE_EXPORT
int kdemain(
int argc,
char *argv[]) {
2278 KAboutData aboutData(
"kcalc",
2283 KAboutData::License_GPL,
2285 "© 2008-2013, Evan Teran\n"
2286 "© 2000-2008, The KDE Team\n"
2287 "© 2003-2005, Klaus Niederkr" "\xc3\xbc" "ger\n"
2288 "© 1996-2000, Bernd Johannes Wuebben"),
2290 "http://utils.kde.org/projects/kcalc");
2293 aboutData.addAuthor(ki18n(
"Klaus Niederkr" "\xc3\xbc" "ger"), KLocalizedString(),
"kniederk@math.uni-koeln.de");
2294 aboutData.addAuthor(ki18n(
"Bernd Johannes Wuebben"), KLocalizedString(),
"wuebben@kde.org");
2295 aboutData.addAuthor(ki18n(
"Evan Teran"), ki18n(
"Maintainer"),
"eteran@alum.rit.edu");
2296 aboutData.addAuthor(ki18n(
"Espen Sand"), KLocalizedString(),
"espen@kde.org");
2297 aboutData.addAuthor(ki18n(
"Chris Howells"), KLocalizedString(),
"howells@kde.org");
2298 aboutData.addAuthor(ki18n(
"Aaron J. Seigo"), KLocalizedString(),
"aseigo@olympusproject.org");
2299 aboutData.addAuthor(ki18n(
"Charles Samuels"), KLocalizedString(),
"charles@altair.dhs.org");
2301 aboutData.addAuthor(ki18n(
"Ren" "\xc3\xa9" " M" "\xc3\xa9" "rou"), KLocalizedString(),
"ochominutosdearco@yahoo.es");
2302 aboutData.addAuthor(ki18n(
"Michel Marti"), KLocalizedString(),
"mma@objectxp.com");
2303 aboutData.addAuthor(ki18n(
"David Johnson"), KLocalizedString(),
"david@usermode.org");
2305 aboutData.setProgramIconName(QLatin1String(
"accessories-calculator"));
2307 KCmdLineArgs::init(argc, argv, &aboutData);
2312 setlocale(LC_NUMERIC,
"C");
2318 app.setTopWidget(calc);
void CosGrad(const KNumber &input)
void Square(const KNumber &input)
void Complement(const KNumber &input)
static QColor operationButtonsColor()
Get The color of operation buttons.
void slotSetStatisticMode()
static QColor statButtonsColor()
Get The color of statistical buttons.
static void setBaseMode(uint v)
Set Numeric base.
void SquareRoot(const KNumber &input)
void slotChooseScientificConst4(const science_constant &)
void AreaSinHyp(const KNumber &input)
static void setShowConstants(bool v)
Set Whether to show constant buttons.
void CosDeg(const KNumber &input)
static QColor memoryButtonsColor()
Get The color of memory buttons.
void enterOperation(const KNumber &num, Operation func)
void StatSumSquares(const KNumber &input)
void slotBitsetChanged(quint64)
void slotRightShiftclicked()
static bool showBitset()
Get Whether to show the bit edit widget.
void TangensDeg(const KNumber &input)
static QString decimalSeparator()
void slotStatStdDevclicked()
static void setGroupSeparator(const QString &ch)
static const KNumber Zero
void slotConstantsShow(bool toggled)
void Reciprocal(const KNumber &input)
void TangensHyp(const KNumber &input)
void CubeRoot(const KNumber &input)
void slotPercentclicked()
static QColor hexButtonsColor()
Get The color of hex buttons.
void ParenOpen(const KNumber &input)
void Exp(const KNumber &input)
void slotConstantToDisplay(const science_constant &const_chosen)
static QColor functionButtonsColor()
Get The color of function buttons.
void slotBackspaceclicked()
void SinRad(const KNumber &input)
void StatMedian(const KNumber &input)
void slotStatClearDataclicked()
void slotStatDataInputclicked()
void TangensRad(const KNumber &input)
void slotStatNumclicked()
void slotFactorialclicked()
void slotDivisionclicked()
void StatMean(const KNumber &input)
void slotMultiplicationclicked()
void slotStatMedianclicked()
static void setDefaultFloatPrecision(int precision)
void Cube(const KNumber &input)
void SinHyp(const KNumber &input)
void StatStdSample(const KNumber &input)
void SinDeg(const KNumber &input)
void ArcCosGrad(const KNumber &input)
void ArcSinDeg(const KNumber &input)
void ArcTangensDeg(const KNumber &input)
static void setAngleMode(uint v)
Set Degrees, radians or grads.
void ArcCosDeg(const KNumber &input)
void SinGrad(const KNumber &input)
void slotChooseScientificConst5(const science_constant &)
static void setShowBitset(bool v)
Set Whether to show the bit edit widget.
void CosHyp(const KNumber &input)
void slotMemStoreclicked()
void switchShowAccels(bool)
void slotParenCloseclicked()
void slotConstclicked(int)
void slotLeftShiftclicked()
void slotSetNumeralMode()
void slotAngleSelected(int mode)
void AreaTangensHyp(const KNumber &input)
static QColor numberButtonsColor()
Get The color of number buttons.
void CosRad(const KNumber &input)
void Log10(const KNumber &input)
void StatSum(const KNumber &input)
void Factorial(const KNumber &input)
void slotChooseScientificConst0(const science_constant &)
void ArcSinGrad(const KNumber &input)
void ArcSinRad(const KNumber &input)
void StatClearAll(const KNumber &input)
static QFont buttonFont()
Get The font to use for the buttons.
void AreaCosHyp(const KNumber &input)
KCalculator(QWidget *parent=0)
void TangensGrad(const KNumber &input)
void slotAllClearclicked()
void slotMemClearclicked()
static void setCalculatorMode(EnumCalculatorMode::type v)
Set CalculatorMode.
KDE_EXPORT int kdemain(int argc, char *argv[])
static void setDecimalSeparator(const QString &ch)
static EnumCalculatorMode::type calculatorMode()
Get CalculatorMode.
static void setValueConstant(int i, const QString &v)
Set List of user programmable constants.
static bool showConstants()
Get Whether to show constant buttons.
void StatDataDel(const KNumber &input)
void ParenClose(KNumber input)
void slotBaseSelected(int base)
void slotSetScienceMode()
void slotStatMeanclicked()
static uint precision()
Get Maximum number of digits displayed.
void ArcCosRad(const KNumber &input)
void slotChooseScientificConst1(const science_constant &)
void ArcTangensRad(const KNumber &input)
void switchMode(ButtonModeFlags, bool)
static uint baseMode()
Get Numeric base.
void slotParenOpenclicked()
static uint angleMode()
Get Degrees, radians or grads.
void slotChooseScientificConst2(const science_constant &)
void slotChooseScientificConst3(const science_constant &)
void slotBitsetshow(bool toggled)
void slotPlusMinusclicked()
void slotUpdateBitset(const KNumber &)
void InvertSign(const KNumber &input)
void StatStdDeviation(const KNumber &input)
void StatDataNew(const KNumber &input)
void slotMemRecallclicked()
void slotMemPlusMinusclicked()
static bool captionResult()
Get Whether to show the result in the window title.
void slotHyptoggled(bool flag)
static KCalcSettings * self()
void slotNumberclicked(int number_clicked)
void Exp10(const KNumber &input)
void StatCount(const KNumber &input)
void slotShifttoggled(bool myboolean)
void ArcTangensGrad(const KNumber &input)
void Ln(const KNumber &input)