--- kcalc-16.12.3/kcalc.cpp	2017-03-04 11:22:39.000000000 +0100
+++ /tmp/kcalc/kcalc.cpp	2017-05-15 17:19:51.390727683 +0200
@@ -140,6 +140,9 @@
 	case KCalcSettings::EnumCalculatorMode::numeral:
 		action_mode_numeral_->setChecked(true);
 		break;
+	case KCalcSettings::EnumCalculatorMode::universal:
+		action_mode_universal_->setChecked(true);
+		break;
 	case KCalcSettings::EnumCalculatorMode::simple:
 	default:
 		action_mode_simple_->setChecked(true);
@@ -199,6 +202,11 @@
 	action_mode_numeral_->setText(i18n("Numeral System Mode"));
 	connect(action_mode_numeral_, &KToggleAction::toggled, this, &KCalculator::slotSetNumeralMode);
 
+	action_mode_universal_ = actionCollection()->add<KToggleAction>(QLatin1String("mode_universal"));
+	action_mode_universal_->setActionGroup(modeGroup);
+	action_mode_universal_->setText(i18n("Universal Mode"));
+	connect(action_mode_universal_, &KToggleAction::toggled, this, &KCalculator::slotSetUniversalMode);
+
 	// settings menu
 	action_constants_show_ = actionCollection()->add<KToggleAction>(QLatin1String("show_constants"));
 	action_constants_show_->setText(i18n("Constants &Buttons"));
@@ -1834,6 +1842,22 @@
 }
 
 //------------------------------------------------------------------------------
+// Name: slotSetUniversalMode
+// Desc: sets the calculator to universal ("all buttons") mode
+//------------------------------------------------------------------------------
+void KCalculator::slotSetUniversalMode() {
+	action_constants_show_->setEnabled(true);
+	action_constants_show_->setChecked(KCalcSettings::showConstants());
+	action_bitset_show_->setEnabled(true);
+	action_bitset_show_->setChecked(KCalcSettings::showBitset());
+	showMemButtons(true);
+	showScienceButtons(true);
+	showStatButtons(true);
+	showLogicButtons(true);
+	KCalcSettings::setCalculatorMode(KCalcSettings::EnumCalculatorMode::universal);
+}
+
+//------------------------------------------------------------------------------
 // Name: showMemButtons
 // Desc: hides or shows the memory buttons
 //------------------------------------------------------------------------------
--- kcalc-16.12.3/kcalc.h	2017-03-04 11:22:39.000000000 +0100
+++ /tmp/kcalc/kcalc.h	2017-05-15 16:59:46.439813627 +0200
@@ -158,6 +158,7 @@
     void slotSetScienceMode();
     void slotSetStatisticMode();
     void slotSetNumeralMode();
+    void slotSetUniversalMode();
 
     void slotConstantsShow(bool toggled);
     void slotBitsetshow(bool toggled);
@@ -269,6 +270,7 @@
     KToggleAction *action_mode_science_;
     KToggleAction *action_mode_statistic_;
     KToggleAction *action_mode_numeral_;
+    KToggleAction *action_mode_universal_;
 
     QList<QAbstractButton*> function_button_list_;
     QList<QAbstractButton*> stat_button_list_;
--- kcalc-16.12.3/kcalc.kcfg	2017-03-04 11:22:39.000000000 +0100
+++ /tmp/kcalc/kcalc.kcfg	2017-05-15 16:59:46.438813626 +0200
@@ -121,6 +121,10 @@
           <label>Numeral System Mode</label>
           <whatsthis>Mode with logic buttons and selectable base. Optional bit edit available.</whatsthis>
         </choice>
+        <choice name="universal">
+          <label>Universal Mode</label>
+          <whatsthis>Mode with all available buttons enabled</whatsthis>
+        </choice>
       </choices>
     </entry>
     <entry name="ShowBitset" type="Bool">
--- kcalc-16.12.3/kcalcui.rc	2017-03-04 11:22:39.000000000 +0100
+++ /tmp/kcalc/kcalcui.rc	2017-05-15 16:59:46.439813627 +0200
@@ -1,11 +1,12 @@
 <!DOCTYPE kpartgui>
-<kpartgui name="kcalc" version="20">
+<kpartgui name="kcalc" version="21">
 <MenuBar>
   <Menu name="settings" noMerge="1"><text>&amp;Settings</text>
     <Action name="mode_simple"/>
     <Action name="mode_science"/>
     <Action name="mode_statistics"/>
     <Action name="mode_numeral"/>
+    <Action name="mode_universal"/>
     <Separator/>
     <Action name="show_constants"/>
     <Action name="show_bitset"/>
