Index: kcalc.kcfg
===================================================================
--- kcalc.kcfg	(HEAD)
+++ kcalc.kcfg	(working copy)
@@ -119,6 +119,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">
Index: kcalc.cpp
===================================================================
--- kcalc.cpp	(HEAD)
+++ kcalc.cpp	(working copy)
@@ -155,6 +155,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);
@@ -208,6 +211,10 @@
     action_mode_numeral_->setActionGroup(modeGroup);
     action_mode_numeral_->setText(i18n("Numeral System Mode"));
     connect(action_mode_numeral_, SIGNAL(toggled(bool)), SLOT(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_, SIGNAL(toggled(bool)), SLOT(slotSetUniversalMode()));
 
     // settings menu
     action_constants_show_ = actionCollection()->add<KToggleAction>(QLatin1String( "show_constants" ));
@@ -1586,6 +1593,18 @@
     KCalcSettings::setCalculatorMode(KCalcSettings::EnumCalculatorMode::numeral);
 }
 
+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());
+    showScienceButtons(true);
+    showStatButtons(true);
+    showLogicButtons(true);
+    KCalcSettings::setCalculatorMode(KCalcSettings::EnumCalculatorMode::universal);
+}
+
 void KCalculator::showStatButtons(bool toggled)
 {
     if (toggled) {
Index: kcalcui.rc
===================================================================
--- kcalcui.rc	(HEAD)
+++ kcalcui.rc	(working copy)
@@ -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"/>
Index: kcalc.h
===================================================================
--- kcalc.h	(HEAD)
+++ kcalc.h	(working copy)
@@ -150,6 +150,7 @@
     void slotSetScienceMode();
     void slotSetStatisticMode();
     void slotSetNumeralMode();
+    void slotSetUniversalMode();
 
     void slotConstantsShow(bool toggled);
     void slotBitsetshow(bool toggled);
@@ -256,6 +257,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_;

