[gcalctool] Rework memory UI (work in progress)



commit 73b491d8837101e0ad0414473b61acb0de8c5cad
Author: Robert Ancell <robert ancell canonical com>
Date:   Wed Jan 5 14:33:46 2011 +1100

    Rework memory UI (work in progress)

 data/buttons-advanced.ui    |   59 +-
 data/buttons-financial.ui   | 2318 +++++++++++++++++++++----------------------
 data/buttons-programming.ui |   42 +-
 src/Makefile.am             |    2 +
 src/math-buttons.c          |  173 +---
 src/math-equation.c         |    8 +-
 src/math-variable-popup.c   |  289 ++++++
 src/math-variable-popup.h   |   48 +
 src/math-variables.c        |   13 +-
 src/math-variables.h        |    6 +-
 10 files changed, 1523 insertions(+), 1435 deletions(-)
---
diff --git a/data/buttons-advanced.ui b/data/buttons-advanced.ui
index fa45249..328d2e0 100644
--- a/data/buttons-advanced.ui
+++ b/data/buttons-advanced.ui
@@ -591,70 +591,25 @@
           </packing>
         </child>
         <child>
-          <object class="GtkButton" id="calc_recall_button">
+          <object class="GtkButton" id="calc_memory_button">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="receives_default">True</property>
             <property name="focus_on_click">False</property>
             <child internal-child="accessible">
-              <object class="AtkObject" id="calc_recall_button-atkobject">
-                <property name="AtkObject::accessible-name" translatable="yes" comments="Accessible name for the recall value button">Recall</property>
+              <object class="AtkObject" id="calc_memory_button-atkobject">
+                <property name="AtkObject::accessible-name" translatable="yes" comments="Accessible name for the memory button">Memory</property>
               </object>
             </child>
-            <signal name="clicked" handler="recall_cb" swapped="no"/>
-            <child>
-              <object class="GtkHBox" id="hbox19">
-                <property name="visible">True</property>
-                <child>
-                  <object class="GtkLabel" id="label22">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes" comments="The label on the memory recall button">â?? R</property>
-                  </object>
-                  <packing>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkArrow" id="arrow13">
-                    <property name="visible">True</property>
-                    <property name="arrow_type">down</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="left_attach">4</property>
-            <property name="right_attach">5</property>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-            <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="calc_store_button">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="focus_on_click">False</property>
-            <child internal-child="accessible">
-              <object class="AtkObject" id="calc_store_button-atkobject">
-                <property name="AtkObject::accessible-name" translatable="yes" comments="Accessible name for the store value button">Store</property>
-              </object>
-            </child>
-            <signal name="clicked" handler="store_cb" swapped="no"/>
+            <signal name="clicked" handler="memory_cb" swapped="no"/>
             <child>
               <object class="GtkHBox" id="hbox20">
                 <property name="visible">True</property>
                 <child>
                   <object class="GtkLabel" id="label23">
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes" comments="The label on the memory store button">â?? R</property>
+                    <property name="label" translatable="yes" comments="The label on the memory button">&lt;i&gt;x&lt;/i&gt;</property>
+                    <property name="use_markup">True</property>
                   </object>
                   <packing>
                     <property name="position">0</property>
@@ -674,7 +629,7 @@
             </child>
           </object>
           <packing>
-            <property name="left_attach">5</property>
+            <property name="left_attach">4</property>
             <property name="right_attach">6</property>
             <property name="top_attach">2</property>
             <property name="bottom_attach">3</property>
diff --git a/data/buttons-financial.ui b/data/buttons-financial.ui
index 5a9b3aa..5de18ba 100644
--- a/data/buttons-financial.ui
+++ b/data/buttons-financial.ui
@@ -2,842 +2,576 @@
 <interface>
   <requires lib="gtk+" version="2.16"/>
   <!-- interface-naming-policy toplevel-contextual -->
-  <object class="GtkWindow" id="window1">
-    <child>
-      <object class="GtkVBox" id="button_panel">
+  <object class="GtkDialog" id="term_dialog">
+    <property name="border_width">6</property>
+    <property name="title" translatable="yes" comments="Title of Payment Period dialog">Payment Period</property>
+    <property name="resizable">False</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="finc_response_cb" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox9">
         <property name="visible">True</property>
-        <property name="spacing">6</property>
         <child>
-          <object class="GtkHBox" id="hbox1">
-            <property name="visible">True</property>
-            <property name="spacing">6</property>
-            <child>
-              <object class="GtkHBox" id="hbox2">
-                <property name="visible">True</property>
-                <child>
-                  <object class="GtkComboBox" id="source_currency_combo">
-                    <property name="visible">True</property>
-                    <property name="focus_on_click">False</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkLabel" id="label1">
-                    <property name="visible">True</property>
-                    <property name="xalign">1</property>
-                    <property name="label" translatable="yes" comments="This is between the currency selector dropdowns, for example: [USD] in [EUR]"> in </property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkComboBox" id="target_currency_combo">
-                    <property name="visible">True</property>
-                    <property name="focus_on_click">False</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="currency_label">
-                <property name="visible">True</property>
-                <property name="xalign">1</property>
-                <property name="label" comments="Example content">$100 = â?¬120</property>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="currency_label-atkobject">
-                    <property name="AtkObject::accessible-name">currency_label</property>
-                    <property name="AtkObject::accessible-description">Displays a currency conversion</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkTable" id="button_table">
+          <object class="GtkTable" id="table9">
             <property name="visible">True</property>
+            <property name="border_width">6</property>
             <property name="n_rows">4</property>
-            <property name="n_columns">10</property>
-            <property name="homogeneous">True</property>
-            <child>
-              <object class="GtkButton" id="calc_store_button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="focus_on_click">False</property>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="calc_store_button-atkobject">
-                    <property name="AtkObject::accessible-name" translatable="yes" comments="Accessible name for the store value button">Store</property>
-                  </object>
-                </child>
-                <signal name="clicked" handler="store_cb"/>
-                <child>
-                  <object class="GtkHBox" id="hbox20">
-                    <property name="visible">True</property>
-                    <property name="spacing">3</property>
-                    <child>
-                      <object class="GtkLabel" id="label23">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes" comments="The label on the memory store button">â?? R</property>
-                      </object>
-                      <packing>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkArrow" id="arrow14">
-                        <property name="visible">True</property>
-                        <property name="arrow_type">down</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="left_attach">5</property>
-                <property name="right_attach">6</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-              </packing>
-            </child>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">6</property>
+            <property name="row_spacing">6</property>
             <child>
-              <object class="GtkButton" id="calc_recall_button">
+              <object class="GtkEntry" id="term_pint">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="focus_on_click">False</property>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="calc_recall_button-atkobject">
-                    <property name="AtkObject::accessible-name" translatable="yes" comments="Accessible name for the recall value button">Recall</property>
-                  </object>
-                </child>
-                <signal name="clicked" handler="recall_cb"/>
-                <child>
-                  <object class="GtkHBox" id="hbox19">
-                    <property name="visible">True</property>
-                    <property name="spacing">3</property>
-                    <child>
-                      <object class="GtkLabel" id="label22">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes" comments="The label on the memory recall button">â?? R</property>
-                      </object>
-                      <packing>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkArrow" id="arrow13">
-                        <property name="visible">True</property>
-                        <property name="arrow_type">down</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">4</property>
-                <property name="right_attach">5</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_logarithm_button">
-                <property name="label">log</property>
+              <object class="GtkEntry" id="term_fv">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="button_cb"/>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">6</property>
-                <property name="right_attach">7</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
                 <property name="top_attach">2</property>
                 <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_4_button">
-                <property name="label">4</property>
+              <object class="GtkEntry" id="term_pmt">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="digit_cb"/>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
                 <property name="top_attach">1</property>
                 <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="calc_7_button">
-                <property name="label">7</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="digit_cb"/>
-              </object>
-              <packing>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_8_button">
-                <property name="label">8</property>
+              <object class="GtkLabel" id="label43">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Payment Period Dialog: Label before periodic interest rate input">Periodic Interest _Rate:</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="digit_cb"/>
+                <property name="mnemonic_widget">term_pint</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_9_button">
-                <property name="label">9</property>
+              <object class="GtkLabel" id="label44">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Payment Period Dialog: Label before future value input">Future _Value:</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="digit_cb"/>
+                <property name="mnemonic_widget">term_fv</property>
               </object>
               <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_5_button">
-                <property name="label">5</property>
+              <object class="GtkLabel" id="label45">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Payment Period Dialog: Label before periodic payment input">_Periodic Payment:</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="digit_cb"/>
+                <property name="mnemonic_widget">term_pmt</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
                 <property name="top_attach">1</property>
                 <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="calc_6_button">
-                <property name="label">6</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="digit_cb"/>
-              </object>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="calc_divide_button">
-                <property name="label">÷</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="button_cb"/>
-              </object>
-              <packing>
-                <property name="left_attach">3</property>
-                <property name="right_attach">4</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_1_button">
-                <property name="label">1</property>
+              <object class="GtkLabel" id="label46">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="digit_cb"/>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Payment Period Dialog: Description of calculation">Calculates the number of payment periods that are necessary during the term of an ordinary annuity, to accumulate a future value, at a periodic interest rate.</property>
+                <property name="wrap">True</property>
               </object>
               <packing>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="right_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area9">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="calc_2_button">
-                <property name="label">2</property>
+              <object class="GtkButton" id="button17">
+                <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="digit_cb"/>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_0_button">
-                <property name="label">0</property>
-                <property name="width_request">50</property>
+              <object class="GtkButton" id="button18">
+                <property name="label" translatable="yes" comments="Payment Period Dialog: Button to calculate result">C_alculate</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="digit_cb"/>
               </object>
               <packing>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
               </packing>
             </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">button17</action-widget>
+      <action-widget response="-5">button18</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="syd_dialog">
+    <property name="border_width">6</property>
+    <property name="title" translatable="yes" comments="Title of Sum-of-the-Years'-Digits Depreciation dialog">Sum-of-the-Years'-Digits Depreciation</property>
+    <property name="resizable">False</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="finc_response_cb" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox8">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkTable" id="table8">
+            <property name="visible">True</property>
+            <property name="border_width">6</property>
+            <property name="n_rows">5</property>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">6</property>
+            <property name="row_spacing">6</property>
             <child>
-              <object class="GtkButton" id="calc_numeric_point_button">
-                <property name="label" comments="Label is set in gtk.c to comply with LC flags">.</property>
+              <object class="GtkLabel" id="label37">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Label before period input">_Period:</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="numeric_point_cb"/>
+                <property name="mnemonic_widget">syd_period</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="top_attach">4</property>
+                <property name="bottom_attach">5</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_percentage_button">
-                <property name="label">%</property>
+              <object class="GtkLabel" id="label38">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Label before life input">_Life:</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="button_cb"/>
+                <property name="mnemonic_widget">syd_life</property>
               </object>
               <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
                 <property name="top_attach">3</property>
                 <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_3_button">
-                <property name="label">3</property>
+              <object class="GtkLabel" id="label39">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Label before salvage input">_Salvage:</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="digit_cb"/>
+                <property name="mnemonic_widget">syd_salvage</property>
               </object>
               <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
                 <property name="top_attach">2</property>
                 <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_multiply_button">
-                <property name="label">Ã?</property>
+              <object class="GtkLabel" id="label40">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Label before cost input">_Cost:</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="button_cb"/>
+                <property name="mnemonic_widget">syd_cost</property>
               </object>
               <packing>
-                <property name="left_attach">3</property>
-                <property name="right_attach">4</property>
                 <property name="top_attach">1</property>
                 <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_subtract_button">
-                <property name="label">â??</property>
+              <object class="GtkEntry" id="syd_cost">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="subtract_cb"/>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">3</property>
-                <property name="right_attach">4</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_add_button">
-                <property name="label">+</property>
+              <object class="GtkEntry" id="syd_salvage">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="button_cb"/>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">3</property>
-                <property name="right_attach">4</property>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_result_button">
-                <property name="label" translatable="yes" comments="Label on the solve button (clicking this solves the displayed calculation)">=</property>
+              <object class="GtkEntry" id="syd_life">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="solve_cb"/>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">4</property>
-                <property name="right_attach">6</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
                 <property name="top_attach">3</property>
                 <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_start_group_button">
-                <property name="label">(</property>
+              <object class="GtkEntry" id="syd_period">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="button_cb"/>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">4</property>
-                <property name="right_attach">5</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">4</property>
+                <property name="bottom_attach">5</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_end_group_button">
-                <property name="label">)</property>
+              <object class="GtkLabel" id="label41">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="button_cb"/>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Description of calculation">Calculates the depreciation allowance on an asset for a specified period of time, using the Sum-of-the-Years'-Digits method. This method of depreciation accelerates the rate of depreciation, so that more depreciation expense occurs in earlier periods than in later ones. The useful life is the number of periods, typically years, over which an asset is depreciated. </property>
+                <property name="wrap">True</property>
               </object>
               <packing>
-                <property name="left_attach">5</property>
-                <property name="right_attach">6</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="right_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area8">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="calc_clear_button">
+              <object class="GtkButton" id="button15">
+                <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="clear_cb"/>
-                <child>
-                  <object class="GtkImage" id="image2">
-                    <property name="visible">True</property>
-                    <property name="stock">gtk-clear</property>
-                  </object>
-                </child>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
               </object>
               <packing>
-                <property name="left_attach">5</property>
-                <property name="right_attach">6</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_finc_compounding_term_button">
-                <property name="label" translatable="yes" comments="Calculates the number of compounding periods necessary to increase an investment of present value pv to a future value of fv, at a fixed interest rate of int per compounding period. See also: http://en.wikipedia.org/wiki/Compound_interest";>Ctrm</property>
+              <object class="GtkButton" id="button16">
+                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Calculate result button">C_alculate</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="finc_cb"/>
               </object>
               <packing>
-                <property name="left_attach">7</property>
-                <property name="right_attach">8</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
               </packing>
             </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">button15</action-widget>
+      <action-widget response="-5">button16</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="sln_dialog">
+    <property name="border_width">6</property>
+    <property name="title" translatable="yes" comments="Title of Straight-Line Depreciation dialog">Straight-Line Depreciation</property>
+    <property name="resizable">False</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="finc_response_cb" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox7">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkTable" id="table7">
+            <property name="visible">True</property>
+            <property name="border_width">6</property>
+            <property name="n_rows">4</property>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">6</property>
+            <property name="row_spacing">6</property>
             <child>
-              <object class="GtkButton" id="calc_finc_double_declining_depreciation_button">
-                <property name="label" translatable="yes" comments="Calculates the depreciation allowance on an asset for a specified period of time, using the double-declining balance method. See also: http://en.wikipedia.org/wiki/Depreciation";>Ddb</property>
+              <object class="GtkLabel" id="label33">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Straight-Line Depreciation Dialog: Label before cost input">_Cost:</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="finc_cb"/>
+                <property name="mnemonic_widget">sln_cost</property>
               </object>
               <packing>
-                <property name="left_attach">8</property>
-                <property name="right_attach">9</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_finc_future_value_button">
-                <property name="label" translatable="yes" comments="Calculates the future value of an investment based on a series of equal payments, each of amount pmt, at a periodic interest rate of int, over the number of payment periods in the term. See also: http://en.wikipedia.org/wiki/Future_value";>Fv</property>
+              <object class="GtkLabel" id="label34">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Straight-Line Depreciation Dialog: Label before salvage input">_Salvage:</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="finc_cb"/>
+                <property name="mnemonic_widget">sln_salvage</property>
               </object>
               <packing>
-                <property name="left_attach">9</property>
-                <property name="right_attach">10</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_finc_term_button">
-                <property name="label" translatable="yes" comments="Calculates the number of payment periods that are necessary during the term of an ordinary annuity, to accumulate a future value of fv, at a periodic interest rate of int. Each payment is equal to amount pmt. See also: http://en.wikipedia.org/wiki/Annuity_(finance_theory)">Term</property>
+              <object class="GtkLabel" id="label35">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Straight-Line Depreciation Dialog: Label before life input">_Life:</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="finc_cb"/>
+                <property name="mnemonic_widget">sln_life</property>
               </object>
               <packing>
-                <property name="left_attach">8</property>
-                <property name="right_attach">9</property>
                 <property name="top_attach">3</property>
                 <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="calc_finc_sum_of_the_years_digits_depreciation_button">
-                <property name="label" translatable="yes" comments="Calculates the depreciation allowance on an asset for a specified period of time, using the Sum-Of-The-Years'-Digits method. This method of depreciation accelerates the rate of depreciation, so that more depreciation expense occurs in earlier periods than in later ones. The depreciable cost is cost - salvage. The useful life is the number of periods, typically years, over which an asset is depreciated. See also: http://en.wikipedia.org/wiki/Depreciation";>Syd</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="finc_cb"/>
-              </object>
-              <packing>
-                <property name="left_attach">9</property>
-                <property name="right_attach">10</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_finc_straight_line_depreciation_button">
-                <property name="label" translatable="yes" comments="Calculates the straight-line depreciation of an asset for one period. The depreciable cost is cost - salvage. The straight-line method of depreciation divides the depreciable cost evenly over the useful life of an asset. The useful life is the number of periods, typically years, over which an asset is depreciated. See also: http://en.wikipedia.org/wiki/Depreciation";>Sln</property>
+              <object class="GtkEntry" id="sln_life">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="finc_cb"/>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">8</property>
-                <property name="right_attach">9</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_finc_periodic_interest_rate_button">
-                <property name="label" translatable="yes" comments="Calculates the periodic interest necessary to increase an investment of present value pv to a future value of fv, over the number of compounding periods in term. See also: http://en.wikipedia.org/wiki/Interest                                      ">Rate</property>
+              <object class="GtkEntry" id="sln_salvage">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="finc_cb"/>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">7</property>
-                <property name="right_attach">8</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
                 <property name="top_attach">2</property>
                 <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="calc_finc_present_value_button">
-                <property name="label" translatable="yes" comments="Calculates the present value of an investment based on a series of equal payments, each of amount pmt, discounted at a periodic interest rate of int, over the number of payment periods in the term. See also: http://en.wikipedia.org/wiki/Present_value";>Pv</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="finc_cb"/>
-              </object>
-              <packing>
-                <property name="left_attach">9</property>
-                <property name="right_attach">10</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="calc_finc_periodic_payment_button">
-                <property name="label" translatable="yes" comments="Calculates the amount of the periodic payment of a loan, where payments are made at the end of each payment period. See also: http://en.wikipedia.org/wiki/Amortization_schedule";>Pmt</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="finc_cb"/>
-              </object>
-              <packing>
-                <property name="left_attach">8</property>
-                <property name="right_attach">9</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_finc_gross_profit_margin_button">
-                <property name="label" translatable="yes" comments="Calculates the resale price of a product, based on the product cost and the wanted gross profit margin. See also: http://en.wikipedia.org/wiki/Gross_profit_margin";>Gpm</property>
+              <object class="GtkEntry" id="sln_cost">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="finc_cb"/>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">7</property>
-                <property name="right_attach">8</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
                 <property name="top_attach">1</property>
                 <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_undo_button">
+              <object class="GtkLabel" id="label32">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <child>
-                  <object class="GtkImage" id="image1">
-                    <property name="visible">True</property>
-                    <property name="stock">gtk-undo</property>
-                  </object>
-                </child>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Straight-Line Depreciation Dialog: Description of calculation">Calculates the straight-line depreciation of an asset for one period. The straight-line method of depreciation divides the depreciable cost evenly over the useful life of an asset. The useful life is the number of periods, typically years, over which an asset is depreciated. </property>
+                <property name="wrap">True</property>
               </object>
               <packing>
-                <property name="left_attach">4</property>
-                <property name="right_attach">5</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="right_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
               </packing>
             </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area7">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="calc_x_pow_y_button">
+              <object class="GtkButton" id="button13">
+                <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="focus_on_click">False</property>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="calc_x_pow_y_button-atkobject">
-                    <property name="AtkObject::accessible-name" translatable="yes" comments="Accessible name for the exponentiation (x to the power of y) button">Exponent</property>
-                  </object>
-                </child>
-                <signal name="clicked" handler="button_cb"/>
-                <child>
-                  <object class="GtkLabel" id="x_pow_y_label">
-                    <property name="visible">True</property>
-                    <property name="label">&lt;i&gt;x&lt;/i&gt;&lt;sup&gt;&lt;i&gt;y&lt;/i&gt;&lt;/sup&gt;</property>
-                    <property name="use_markup">True</property>
-                  </object>
-                </child>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
               </object>
               <packing>
-                <property name="left_attach">6</property>
-                <property name="right_attach">7</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_root_button">
-                <property name="label">â??</property>
+              <object class="GtkButton" id="button14">
+                <property name="label" translatable="yes" comments="Straight-Line Depreciation Dialog: Calculate button">C_alculate</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
                 <property name="use_underline">True</property>
-                <property name="focus_on_click">False</property>
-                <signal name="clicked" handler="button_cb"/>
               </object>
               <packing>
-                <property name="left_attach">6</property>
-                <property name="right_attach">7</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
               </packing>
             </child>
-            <child>
-              <placeholder/>
-            </child>
-            <child>
-              <placeholder/>
-            </child>
-            <child>
-              <placeholder/>
-            </child>
           </object>
           <packing>
-            <property name="position">1</property>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
           </packing>
         </child>
       </object>
     </child>
+    <action-widgets>
+      <action-widget response="-6">button13</action-widget>
+      <action-widget response="-5">button14</action-widget>
+    </action-widgets>
   </object>
-  <object class="GtkDialog" id="ctrm_dialog">
+  <object class="GtkDialog" id="rate_dialog">
     <property name="border_width">6</property>
-    <property name="title" translatable="yes" comments="Title of Compounding Term dialog">Compounding Term</property>
+    <property name="title" translatable="yes" comments="Title of Periodic Interest Rate dialog">Periodic Interest Rate</property>
     <property name="resizable">False</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="finc_response_cb"/>
+    <signal name="response" handler="finc_response_cb" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox1">
+      <object class="GtkVBox" id="dialog-vbox6">
         <property name="visible">True</property>
         <child>
-          <object class="GtkTable" id="table1">
+          <object class="GtkTable" id="table6">
             <property name="visible">True</property>
             <property name="border_width">6</property>
             <property name="n_rows">4</property>
@@ -845,60 +579,55 @@
             <property name="column_spacing">6</property>
             <property name="row_spacing">6</property>
             <child>
-              <object class="GtkEntry" id="ctrm_pint">
+              <object class="GtkLabel" id="label28">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Periodic Interest Rate Dialog: Description of calculation">Calculates the periodic interest necessary to increase an investment to a future value, over the number of compounding periods. </property>
+                <property name="wrap">True</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="ctrm_fv">
+              <object class="GtkLabel" id="label29">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Periodic Interest Rate Dialog: Label before future value input">_Future Value:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">rate_fv</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="ctrm_pv">
+              <object class="GtkLabel" id="label30">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Periodic Interest Rate Dialog: Label before present value input">Present _Value:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">rate_pv</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label5">
+              <object class="GtkLabel" id="label31">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Compounding Term Dialog: Label before present value input">Present _Value:</property>
+                <property name="label" translatable="yes" comments="Periodic Interest Rate Dialog: Label before term input">_Term:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">ctrm_pv</property>
+                <property name="mnemonic_widget">rate_n</property>
               </object>
               <packing>
                 <property name="top_attach">3</property>
@@ -908,44 +637,50 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label6">
+              <object class="GtkEntry" id="rate_fv">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Compounding Term Dialog: Label before periodic interest rate input">Periodic Interest _Rate:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">ctrm_pint</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
                 <property name="top_attach">1</property>
                 <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label9">
+              <object class="GtkEntry" id="rate_pv">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes" comments="Compounding Term Dialog: Description of calculation">Calculates the number of compounding periods necessary to increase an investment of present value to a future value, at a fixed interest rate per compounding period.</property>
-                <property name="wrap">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
+                <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label16">
+              <object class="GtkEntry" id="rate_n">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Compounding Term Dialog: Label before future value input">_Future Value:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">ctrm_fv</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_FILL</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
                 <property name="y_options"></property>
               </packing>
             </child>
@@ -955,11 +690,11 @@
           </packing>
         </child>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area1">
+          <object class="GtkHButtonBox" id="dialog-action_area6">
             <property name="visible">True</property>
             <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="button1">
+              <object class="GtkButton" id="button11">
                 <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -974,8 +709,8 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="button2">
-                <property name="label" translatable="yes" comments="Compounding Term Dialog: Calculate button">C_alculate</property>
+              <object class="GtkButton" id="button12">
+                <property name="label" translatable="yes" comments="Periodic Interest Rate Dialog: Calculate button">C_alculate</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
@@ -998,21 +733,21 @@
       </object>
     </child>
     <action-widgets>
-      <action-widget response="-6">button1</action-widget>
-      <action-widget response="-5">button2</action-widget>
+      <action-widget response="-6">button11</action-widget>
+      <action-widget response="-5">button12</action-widget>
     </action-widgets>
   </object>
-  <object class="GtkDialog" id="ddb_dialog">
+  <object class="GtkDialog" id="pv_dialog">
     <property name="border_width">6</property>
-    <property name="title" translatable="yes" comments="Title of Double-Declining Depreciation dialog">Double-Declining Depreciation</property>
+    <property name="title" translatable="yes" comments="Title of Present Value dialog">Present Value</property>
     <property name="resizable">False</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="finc_response_cb"/>
+    <signal name="response" handler="finc_response_cb" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox2">
+      <object class="GtkVBox" id="dialog-vbox5">
         <property name="visible">True</property>
         <child>
-          <object class="GtkTable" id="table2">
+          <object class="GtkTable" id="table5">
             <property name="visible">True</property>
             <property name="border_width">6</property>
             <property name="n_rows">4</property>
@@ -1020,9 +755,10 @@
             <property name="column_spacing">6</property>
             <property name="row_spacing">6</property>
             <child>
-              <object class="GtkLabel" id="label7">
+              <object class="GtkLabel" id="label36">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes" comments="Double-Declining Depreciation Dialog: Description of calculation">Calculates the depreciation allowance on an asset for a specified period of time, using the double-declining balance method.</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Present Value Dialog: Description of calculation">Calculates the present value of an investment based on a series of equal payments discounted at a periodic interest rate over the number of payment periods in the term. </property>
                 <property name="wrap">True</property>
               </object>
               <packing>
@@ -1032,12 +768,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label8">
+              <object class="GtkLabel" id="label24">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Double-Declining Depreciation Dialog: Label before cost input">C_ost:</property>
+                <property name="label" translatable="yes" comments="Present Value Dialog: Label before periodic payment input">_Periodic Payment:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">ddb_cost</property>
+                <property name="mnemonic_widget">pv_pmt</property>
               </object>
               <packing>
                 <property name="top_attach">1</property>
@@ -1047,12 +783,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label10">
+              <object class="GtkLabel" id="label25">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Double-Declining Depreciation Dialog: Label before life input">_Life:</property>
+                <property name="label" translatable="yes" comments="Present Value Dialog: Label before periodic interest rate input">Periodic Interest _Rate:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">ddb_life</property>
+                <property name="mnemonic_widget">pv_pint</property>
               </object>
               <packing>
                 <property name="top_attach">2</property>
@@ -1062,28 +798,27 @@
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="ddb_life">
+              <object class="GtkLabel" id="label26">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Present Value Dialog: Label before number of periods input">_Number of Periods:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">pv_n</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
+                <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="ddb_cost">
+              <object class="GtkEntry" id="pv_pmt">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -1094,27 +829,28 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label11">
+              <object class="GtkEntry" id="pv_pint">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Double-Declining Depreciation Dialog: Label before period input">_Period:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">ddb_period</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_FILL</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="ddb_period">
+              <object class="GtkEntry" id="pv_n">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -1130,11 +866,11 @@
           </packing>
         </child>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area2">
+          <object class="GtkHButtonBox" id="dialog-action_area5">
             <property name="visible">True</property>
             <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="button3">
+              <object class="GtkButton" id="button9">
                 <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -1149,8 +885,8 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="button4">
-                <property name="label" translatable="yes" comments="Double-Declining Depreciation Dialog: Calculate button">C_alculate</property>
+              <object class="GtkButton" id="button10">
+                <property name="label" translatable="yes" comments="Present Value Dialog: Calculate button">C_alculate</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
@@ -1173,21 +909,21 @@
       </object>
     </child>
     <action-widgets>
-      <action-widget response="-6">button3</action-widget>
-      <action-widget response="-5">button4</action-widget>
+      <action-widget response="-6">button9</action-widget>
+      <action-widget response="-5">button10</action-widget>
     </action-widgets>
   </object>
-  <object class="GtkDialog" id="fv_dialog">
+  <object class="GtkDialog" id="pmt_dialog">
     <property name="border_width">6</property>
-    <property name="title" translatable="yes" comments="Title of Future Value dialog">Future Value</property>
+    <property name="title" translatable="yes" comments="Title of Periodic Payment dialog">Periodic Payment</property>
     <property name="resizable">False</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="finc_response_cb"/>
+    <signal name="response" handler="finc_response_cb" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox3">
+      <object class="GtkVBox" id="dialog-vbox4">
         <property name="visible">True</property>
         <child>
-          <object class="GtkTable" id="table3">
+          <object class="GtkTable" id="table4">
             <property name="visible">True</property>
             <property name="border_width">6</property>
             <property name="n_rows">4</property>
@@ -1195,9 +931,10 @@
             <property name="column_spacing">6</property>
             <property name="row_spacing">6</property>
             <child>
-              <object class="GtkLabel" id="label12">
+              <object class="GtkLabel" id="label17">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes" comments="Future Value Dialog: Description of calculation">Calculates the future value of an investment based on a series of equal payments at a periodic interest rate over the number of payment periods in the term.</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Periodic Payment Dialog: Description of calculation">Calculates the amount of the periodic payment of a loan, where payments are made at the end of each payment period. </property>
                 <property name="wrap">True</property>
               </object>
               <packing>
@@ -1207,12 +944,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label13">
+              <object class="GtkLabel" id="label18">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Future Value Dialog: Label before periodic payment input">_Periodic Payment:</property>
+                <property name="label" translatable="yes" comments="Periodic Payment Dialog: Label before principal input">_Principal:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">fv_pmt</property>
+                <property name="mnemonic_widget">pmt_prin</property>
               </object>
               <packing>
                 <property name="top_attach">1</property>
@@ -1222,12 +959,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label14">
+              <object class="GtkLabel" id="label19">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Future Value Dialog: Label before periodic interest rate input">Periodic Interest _Rate:</property>
+                <property name="label" translatable="yes" comments="Periodic Payment Dialog: Label before periodic interest rate input">Periodic Interest _Rate:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">fv_pint</property>
+                <property name="mnemonic_widget">pmt_pint</property>
               </object>
               <packing>
                 <property name="top_attach">2</property>
@@ -1237,12 +974,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label15">
+              <object class="GtkLabel" id="label21">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Future Value Dialog: Label before number of periods input">_Number of Periods:</property>
+                <property name="label" translatable="yes" comments="Periodic Payment Dialog: Label before term input">_Term:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">fv_n</property>
+                <property name="mnemonic_widget">pmt_n</property>
               </object>
               <packing>
                 <property name="top_attach">3</property>
@@ -1252,28 +989,28 @@
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="fv_n">
+              <object class="GtkEntry" id="pmt_prin">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="fv_pint">
+              <object class="GtkEntry" id="pmt_pint">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -1284,18 +1021,18 @@
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="fv_pmt">
+              <object class="GtkEntry" id="pmt_n">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
                 <property name="y_options"></property>
               </packing>
             </child>
@@ -1305,11 +1042,11 @@
           </packing>
         </child>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area3">
+          <object class="GtkHButtonBox" id="dialog-action_area4">
             <property name="visible">True</property>
             <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="button5">
+              <object class="GtkButton" id="button7">
                 <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -1324,8 +1061,8 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="button6">
-                <property name="label" translatable="yes" comments="Future Value Dialog: Calculate button">C_alculate</property>
+              <object class="GtkButton" id="button8">
+                <property name="label" translatable="yes" comments="Periodic Payment Dialog: Calculate button">C_alculate</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
@@ -1348,8 +1085,8 @@
       </object>
     </child>
     <action-widgets>
-      <action-widget response="-6">button5</action-widget>
-      <action-widget response="-5">button6</action-widget>
+      <action-widget response="-6">button7</action-widget>
+      <action-widget response="-5">button8</action-widget>
     </action-widgets>
   </object>
   <object class="GtkDialog" id="gpm_dialog">
@@ -1357,7 +1094,7 @@
     <property name="title" translatable="yes" comments="Title of Gross Profit Margin dialog">Gross Profit Margin</property>
     <property name="resizable">False</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="finc_response_cb"/>
+    <signal name="response" handler="finc_response_cb" swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox10">
         <property name="visible">True</property>
@@ -1416,7 +1153,7 @@
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -1432,7 +1169,7 @@
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -1495,17 +1232,17 @@
       <action-widget response="-5">button20</action-widget>
     </action-widgets>
   </object>
-  <object class="GtkDialog" id="pmt_dialog">
+  <object class="GtkDialog" id="fv_dialog">
     <property name="border_width">6</property>
-    <property name="title" translatable="yes" comments="Title of Periodic Payment dialog">Periodic Payment</property>
+    <property name="title" translatable="yes" comments="Title of Future Value dialog">Future Value</property>
     <property name="resizable">False</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="finc_response_cb"/>
+    <signal name="response" handler="finc_response_cb" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox4">
+      <object class="GtkVBox" id="dialog-vbox3">
         <property name="visible">True</property>
         <child>
-          <object class="GtkTable" id="table4">
+          <object class="GtkTable" id="table3">
             <property name="visible">True</property>
             <property name="border_width">6</property>
             <property name="n_rows">4</property>
@@ -1513,10 +1250,9 @@
             <property name="column_spacing">6</property>
             <property name="row_spacing">6</property>
             <child>
-              <object class="GtkLabel" id="label17">
+              <object class="GtkLabel" id="label12">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Periodic Payment Dialog: Description of calculation">Calculates the amount of the periodic payment of a loan, where payments are made at the end of each payment period. </property>
+                <property name="label" translatable="yes" comments="Future Value Dialog: Description of calculation">Calculates the future value of an investment based on a series of equal payments at a periodic interest rate over the number of payment periods in the term.</property>
                 <property name="wrap">True</property>
               </object>
               <packing>
@@ -1526,12 +1262,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label18">
+              <object class="GtkLabel" id="label13">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Periodic Payment Dialog: Label before principal input">_Principal:</property>
+                <property name="label" translatable="yes" comments="Future Value Dialog: Label before periodic payment input">_Periodic Payment:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">pmt_prin</property>
+                <property name="mnemonic_widget">fv_pmt</property>
               </object>
               <packing>
                 <property name="top_attach">1</property>
@@ -1541,12 +1277,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label19">
+              <object class="GtkLabel" id="label14">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Periodic Payment Dialog: Label before periodic interest rate input">Periodic Interest _Rate:</property>
+                <property name="label" translatable="yes" comments="Future Value Dialog: Label before periodic interest rate input">Periodic Interest _Rate:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">pmt_pint</property>
+                <property name="mnemonic_widget">fv_pint</property>
               </object>
               <packing>
                 <property name="top_attach">2</property>
@@ -1556,12 +1292,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label21">
+              <object class="GtkLabel" id="label15">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Periodic Payment Dialog: Label before term input">_Term:</property>
+                <property name="label" translatable="yes" comments="Future Value Dialog: Label before number of periods input">_Number of Periods:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">pmt_n</property>
+                <property name="mnemonic_widget">fv_n</property>
               </object>
               <packing>
                 <property name="top_attach">3</property>
@@ -1571,28 +1307,28 @@
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="pmt_prin">
+              <object class="GtkEntry" id="fv_n">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="pmt_pint">
+              <object class="GtkEntry" id="fv_pint">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -1603,18 +1339,18 @@
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="pmt_n">
+              <object class="GtkEntry" id="fv_pmt">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
                 <property name="y_options"></property>
               </packing>
             </child>
@@ -1624,11 +1360,11 @@
           </packing>
         </child>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area4">
+          <object class="GtkHButtonBox" id="dialog-action_area3">
             <property name="visible">True</property>
             <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="button7">
+              <object class="GtkButton" id="button5">
                 <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -1643,8 +1379,8 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="button8">
-                <property name="label" translatable="yes" comments="Periodic Payment Dialog: Calculate button">C_alculate</property>
+              <object class="GtkButton" id="button6">
+                <property name="label" translatable="yes" comments="Future Value Dialog: Calculate button">C_alculate</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
@@ -1667,21 +1403,21 @@
       </object>
     </child>
     <action-widgets>
-      <action-widget response="-6">button7</action-widget>
-      <action-widget response="-5">button8</action-widget>
+      <action-widget response="-6">button5</action-widget>
+      <action-widget response="-5">button6</action-widget>
     </action-widgets>
   </object>
-  <object class="GtkDialog" id="pv_dialog">
+  <object class="GtkDialog" id="ddb_dialog">
     <property name="border_width">6</property>
-    <property name="title" translatable="yes" comments="Title of Present Value dialog">Present Value</property>
+    <property name="title" translatable="yes" comments="Title of Double-Declining Depreciation dialog">Double-Declining Depreciation</property>
     <property name="resizable">False</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="finc_response_cb"/>
+    <signal name="response" handler="finc_response_cb" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox5">
+      <object class="GtkVBox" id="dialog-vbox2">
         <property name="visible">True</property>
         <child>
-          <object class="GtkTable" id="table5">
+          <object class="GtkTable" id="table2">
             <property name="visible">True</property>
             <property name="border_width">6</property>
             <property name="n_rows">4</property>
@@ -1689,10 +1425,9 @@
             <property name="column_spacing">6</property>
             <property name="row_spacing">6</property>
             <child>
-              <object class="GtkLabel" id="label36">
+              <object class="GtkLabel" id="label7">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Present Value Dialog: Description of calculation">Calculates the present value of an investment based on a series of equal payments discounted at a periodic interest rate over the number of payment periods in the term. </property>
+                <property name="label" translatable="yes" comments="Double-Declining Depreciation Dialog: Description of calculation">Calculates the depreciation allowance on an asset for a specified period of time, using the double-declining balance method.</property>
                 <property name="wrap">True</property>
               </object>
               <packing>
@@ -1702,12 +1437,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label24">
+              <object class="GtkLabel" id="label8">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Present Value Dialog: Label before periodic payment input">_Periodic Payment:</property>
+                <property name="label" translatable="yes" comments="Double-Declining Depreciation Dialog: Label before cost input">C_ost:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">pv_pmt</property>
+                <property name="mnemonic_widget">ddb_cost</property>
               </object>
               <packing>
                 <property name="top_attach">1</property>
@@ -1717,12 +1452,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label25">
+              <object class="GtkLabel" id="label10">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Present Value Dialog: Label before periodic interest rate input">Periodic Interest _Rate:</property>
+                <property name="label" translatable="yes" comments="Double-Declining Depreciation Dialog: Label before life input">_Life:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">pv_pint</property>
+                <property name="mnemonic_widget">ddb_life</property>
               </object>
               <packing>
                 <property name="top_attach">2</property>
@@ -1732,27 +1467,28 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label26">
+              <object class="GtkEntry" id="ddb_life">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Present Value Dialog: Label before number of periods input">_Number of Periods:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">pv_n</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_FILL</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="pv_pmt">
+              <object class="GtkEntry" id="ddb_cost">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -1763,28 +1499,27 @@
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="pv_pint">
+              <object class="GtkLabel" id="label11">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Double-Declining Depreciation Dialog: Label before period input">_Period:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">ddb_period</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
+                <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="pv_n">
+              <object class="GtkEntry" id="ddb_period">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="invisible_char">â??</property>
                 <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -1800,11 +1535,11 @@
           </packing>
         </child>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area5">
+          <object class="GtkHButtonBox" id="dialog-action_area2">
             <property name="visible">True</property>
             <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="button9">
+              <object class="GtkButton" id="button3">
                 <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -1819,8 +1554,8 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="button10">
-                <property name="label" translatable="yes" comments="Present Value Dialog: Calculate button">C_alculate</property>
+              <object class="GtkButton" id="button4">
+                <property name="label" translatable="yes" comments="Double-Declining Depreciation Dialog: Calculate button">C_alculate</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
@@ -1843,21 +1578,21 @@
       </object>
     </child>
     <action-widgets>
-      <action-widget response="-6">button9</action-widget>
-      <action-widget response="-5">button10</action-widget>
+      <action-widget response="-6">button3</action-widget>
+      <action-widget response="-5">button4</action-widget>
     </action-widgets>
   </object>
-  <object class="GtkDialog" id="rate_dialog">
+  <object class="GtkDialog" id="ctrm_dialog">
     <property name="border_width">6</property>
-    <property name="title" translatable="yes" comments="Title of Periodic Interest Rate dialog">Periodic Interest Rate</property>
+    <property name="title" translatable="yes" comments="Title of Compounding Term dialog">Compounding Term</property>
     <property name="resizable">False</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="finc_response_cb"/>
+    <signal name="response" handler="finc_response_cb" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox6">
+      <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
         <child>
-          <object class="GtkTable" id="table6">
+          <object class="GtkTable" id="table1">
             <property name="visible">True</property>
             <property name="border_width">6</property>
             <property name="n_rows">4</property>
@@ -1865,55 +1600,60 @@
             <property name="column_spacing">6</property>
             <property name="row_spacing">6</property>
             <child>
-              <object class="GtkLabel" id="label28">
+              <object class="GtkEntry" id="ctrm_pint">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Periodic Interest Rate Dialog: Description of calculation">Calculates the periodic interest necessary to increase an investment to a future value, over the number of compounding periods. </property>
-                <property name="wrap">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
+                <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label29">
+              <object class="GtkEntry" id="ctrm_fv">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Periodic Interest Rate Dialog: Label before future value input">_Future Value:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">rate_fv</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label30">
+              <object class="GtkEntry" id="ctrm_pv">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Periodic Interest Rate Dialog: Label before present value input">Present _Value:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">rate_pv</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">â??</property>
+                <property name="text">0</property>
+                <signal name="activate" handler="finc_activate_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_FILL</property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label31">
+              <object class="GtkLabel" id="label5">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Periodic Interest Rate Dialog: Label before term input">_Term:</property>
+                <property name="label" translatable="yes" comments="Compounding Term Dialog: Label before present value input">Present _Value:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">rate_n</property>
+                <property name="mnemonic_widget">ctrm_pv</property>
               </object>
               <packing>
                 <property name="top_attach">3</property>
@@ -1923,50 +1663,44 @@
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="rate_fv">
+              <object class="GtkLabel" id="label6">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Compounding Term Dialog: Label before periodic interest rate input">Periodic Interest _Rate:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">ctrm_pint</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
                 <property name="top_attach">1</property>
                 <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="rate_pv">
+              <object class="GtkLabel" id="label9">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="label" translatable="yes" comments="Compounding Term Dialog: Description of calculation">Calculates the number of compounding periods necessary to increase an investment of present value to a future value, at a fixed interest rate per compounding period.</property>
+                <property name="wrap">True</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="rate_n">
+              <object class="GtkLabel" id="label16">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes" comments="Compounding Term Dialog: Label before future value input">_Future Value:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">ctrm_fv</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
             </child>
@@ -1976,11 +1710,11 @@
           </packing>
         </child>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area6">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
             <property name="visible">True</property>
             <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="button11">
+              <object class="GtkButton" id="button1">
                 <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -1995,8 +1729,8 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="button12">
-                <property name="label" translatable="yes" comments="Periodic Interest Rate Dialog: Calculate button">C_alculate</property>
+              <object class="GtkButton" id="button2">
+                <property name="label" translatable="yes" comments="Compounding Term Dialog: Calculate button">C_alculate</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
@@ -2019,567 +1753,787 @@
       </object>
     </child>
     <action-widgets>
-      <action-widget response="-6">button11</action-widget>
-      <action-widget response="-5">button12</action-widget>
+      <action-widget response="-6">button1</action-widget>
+      <action-widget response="-5">button2</action-widget>
     </action-widgets>
   </object>
-  <object class="GtkDialog" id="sln_dialog">
-    <property name="border_width">6</property>
-    <property name="title" translatable="yes" comments="Title of Straight-Line Depreciation dialog">Straight-Line Depreciation</property>
-    <property name="resizable">False</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="finc_response_cb"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox7">
+  <object class="GtkWindow" id="window1">
+    <child>
+      <object class="GtkVBox" id="button_panel">
         <property name="visible">True</property>
+        <property name="spacing">6</property>
         <child>
-          <object class="GtkTable" id="table7">
+          <object class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkHBox" id="hbox2">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkComboBox" id="source_currency_combo">
+                    <property name="visible">True</property>
+                    <property name="focus_on_click">False</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="xalign">1</property>
+                    <property name="label" translatable="yes" comments="This is between the currency selector dropdowns, for example: [USD] in [EUR]"> in </property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBox" id="target_currency_combo">
+                    <property name="visible">True</property>
+                    <property name="focus_on_click">False</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="currency_label">
+                <property name="visible">True</property>
+                <property name="xalign">1</property>
+                <property name="label" comments="Example content">$100 = â?¬120</property>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="currency_label-atkobject">
+                    <property name="AtkObject::accessible-name">currency_label</property>
+                    <property name="AtkObject::accessible-description">Displays a currency conversion</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkTable" id="button_table">
             <property name="visible">True</property>
-            <property name="border_width">6</property>
             <property name="n_rows">4</property>
-            <property name="n_columns">2</property>
-            <property name="column_spacing">6</property>
-            <property name="row_spacing">6</property>
+            <property name="n_columns">10</property>
+            <property name="homogeneous">True</property>
             <child>
-              <object class="GtkLabel" id="label33">
+              <object class="GtkButton" id="calc_memory_button">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Straight-Line Depreciation Dialog: Label before cost input">_Cost:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">sln_cost</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="focus_on_click">False</property>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="calc_memory_button-atkobject">
+                    <property name="AtkObject::accessible-name" translatable="yes" comments="Accessible name for the memory value button">Memory</property>
+                  </object>
+                </child>
+                <signal name="clicked" handler="memory_cb" swapped="no"/>
+                <child>
+                  <object class="GtkHBox" id="hbox20">
+                    <property name="visible">True</property>
+                    <property name="spacing">3</property>
+                    <child>
+                      <object class="GtkLabel" id="label23">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes" comments="The label on the memory button">&lt;i&gt;x&lt;/i&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkArrow" id="arrow14">
+                        <property name="visible">True</property>
+                        <property name="arrow_type">down</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
               </object>
               <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="left_attach">4</property>
+                <property name="right_attach">6</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label34">
+              <object class="GtkButton" id="calc_logarithm_button">
+                <property name="label">log</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Straight-Line Depreciation Dialog: Label before salvage input">_Salvage:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">sln_salvage</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="button_cb" swapped="no"/>
               </object>
               <packing>
+                <property name="left_attach">6</property>
+                <property name="right_attach">7</property>
                 <property name="top_attach">2</property>
                 <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label35">
+              <object class="GtkButton" id="calc_4_button">
+                <property name="label">4</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Straight-Line Depreciation Dialog: Label before life input">_Life:</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">sln_life</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="digit_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="sln_life">
+              <object class="GtkButton" id="calc_7_button">
+                <property name="label">7</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="digit_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="sln_salvage">
+              <object class="GtkButton" id="calc_8_button">
+                <property name="label">8</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="digit_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="sln_cost">
+              <object class="GtkButton" id="calc_9_button">
+                <property name="label">9</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="digit_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="calc_5_button">
+                <property name="label">5</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="digit_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
                 <property name="top_attach">1</property>
                 <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label32">
+              <object class="GtkButton" id="calc_6_button">
+                <property name="label">6</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Straight-Line Depreciation Dialog: Description of calculation">Calculates the straight-line depreciation of an asset for one period. The straight-line method of depreciation divides the depreciable cost evenly over the useful life of an asset. The useful life is the number of periods, typically years, over which an asset is depreciated. </property>
-                <property name="wrap">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="digit_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="right_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area7">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="button13">
-                <property name="label">gtk-cancel</property>
+              <object class="GtkButton" id="calc_divide_button">
+                <property name="label">÷</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="button_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
+                <property name="left_attach">3</property>
+                <property name="right_attach">4</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="button14">
-                <property name="label" translatable="yes" comments="Straight-Line Depreciation Dialog: Calculate button">C_alculate</property>
+              <object class="GtkButton" id="calc_1_button">
+                <property name="label">1</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="digit_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">button13</action-widget>
-      <action-widget response="-5">button14</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkDialog" id="syd_dialog">
-    <property name="border_width">6</property>
-    <property name="title" translatable="yes" comments="Title of Sum-of-the-Years'-Digits Depreciation dialog">Sum-of-the-Years'-Digits Depreciation</property>
-    <property name="resizable">False</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="finc_response_cb"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox8">
-        <property name="visible">True</property>
-        <child>
-          <object class="GtkTable" id="table8">
-            <property name="visible">True</property>
-            <property name="border_width">6</property>
-            <property name="n_rows">5</property>
-            <property name="n_columns">2</property>
-            <property name="column_spacing">6</property>
-            <property name="row_spacing">6</property>
             <child>
-              <object class="GtkLabel" id="label37">
+              <object class="GtkButton" id="calc_2_button">
+                <property name="label">2</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Label before period input">_Period:</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">syd_period</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="digit_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="top_attach">4</property>
-                <property name="bottom_attach">5</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label38">
+              <object class="GtkButton" id="calc_0_button">
+                <property name="label">0</property>
+                <property name="width_request">50</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Label before life input">_Life:</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">syd_life</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="digit_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="top_attach">3</property>
                 <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label39">
+              <object class="GtkButton" id="calc_numeric_point_button">
+                <property name="label" comments="Label is set in gtk.c to comply with LC flags">.</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Label before salvage input">_Salvage:</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">syd_salvage</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="numeric_point_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label40">
+              <object class="GtkButton" id="calc_percentage_button">
+                <property name="label">%</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Label before cost input">_Cost:</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">syd_cost</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="button_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="syd_cost">
+              <object class="GtkButton" id="calc_3_button">
+                <property name="label">3</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="digit_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="calc_multiply_button">
+                <property name="label">Ã?</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="button_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="left_attach">3</property>
+                <property name="right_attach">4</property>
                 <property name="top_attach">1</property>
                 <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="syd_salvage">
+              <object class="GtkButton" id="calc_subtract_button">
+                <property name="label">â??</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="subtract_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
+                <property name="left_attach">3</property>
+                <property name="right_attach">4</property>
                 <property name="top_attach">2</property>
                 <property name="bottom_attach">3</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="syd_life">
+              <object class="GtkButton" id="calc_add_button">
+                <property name="label">+</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="button_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
+                <property name="left_attach">3</property>
+                <property name="right_attach">4</property>
                 <property name="top_attach">3</property>
                 <property name="bottom_attach">4</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="syd_period">
+              <object class="GtkButton" id="calc_result_button">
+                <property name="label" translatable="yes" comments="Label on the solve button (clicking this solves the displayed calculation)">=</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="solve_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">4</property>
-                <property name="bottom_attach">5</property>
-                <property name="y_options"></property>
+                <property name="left_attach">4</property>
+                <property name="right_attach">6</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label41">
+              <object class="GtkButton" id="calc_start_group_button">
+                <property name="label">(</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Description of calculation">Calculates the depreciation allowance on an asset for a specified period of time, using the Sum-of-the-Years'-Digits method. This method of depreciation accelerates the rate of depreciation, so that more depreciation expense occurs in earlier periods than in later ones. The useful life is the number of periods, typically years, over which an asset is depreciated. </property>
-                <property name="wrap">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="button_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="right_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="left_attach">4</property>
+                <property name="right_attach">5</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area8">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="button15">
-                <property name="label">gtk-cancel</property>
+              <object class="GtkButton" id="calc_end_group_button">
+                <property name="label">)</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="button_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
+                <property name="left_attach">5</property>
+                <property name="right_attach">6</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="button16">
-                <property name="label" translatable="yes" comments="Sum-of-the-Years'-Digits Depreciation Dialog: Calculate result button">C_alculate</property>
+              <object class="GtkButton" id="calc_clear_button">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="clear_cb" swapped="no"/>
+                <child>
+                  <object class="GtkImage" id="image2">
+                    <property name="visible">True</property>
+                    <property name="stock">gtk-clear</property>
+                  </object>
+                </child>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
+                <property name="left_attach">5</property>
+                <property name="right_attach">6</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">button15</action-widget>
-      <action-widget response="-5">button16</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkDialog" id="term_dialog">
-    <property name="border_width">6</property>
-    <property name="title" translatable="yes" comments="Title of Payment Period dialog">Payment Period</property>
-    <property name="resizable">False</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="finc_response_cb"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox9">
-        <property name="visible">True</property>
-        <child>
-          <object class="GtkTable" id="table9">
-            <property name="visible">True</property>
-            <property name="border_width">6</property>
-            <property name="n_rows">4</property>
-            <property name="n_columns">2</property>
-            <property name="column_spacing">6</property>
-            <property name="row_spacing">6</property>
             <child>
-              <object class="GtkEntry" id="term_pint">
+              <object class="GtkButton" id="calc_finc_compounding_term_button">
+                <property name="label" translatable="yes" comments="Calculates the number of compounding periods necessary to increase an investment of present value pv to a future value of fv, at a fixed interest rate of int per compounding period. See also: http://en.wikipedia.org/wiki/Compound_interest";>Ctrm</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="finc_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">3</property>
-                <property name="bottom_attach">4</property>
-                <property name="y_options"></property>
+                <property name="left_attach">7</property>
+                <property name="right_attach">8</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="term_fv">
+              <object class="GtkButton" id="calc_finc_double_declining_depreciation_button">
+                <property name="label" translatable="yes" comments="Calculates the depreciation allowance on an asset for a specified period of time, using the double-declining balance method. See also: http://en.wikipedia.org/wiki/Depreciation";>Ddb</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="finc_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="y_options"></property>
+                <property name="left_attach">8</property>
+                <property name="right_attach">9</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="term_pmt">
+              <object class="GtkButton" id="calc_finc_future_value_button">
+                <property name="label" translatable="yes" comments="Calculates the future value of an investment based on a series of equal payments, each of amount pmt, at a periodic interest rate of int, over the number of payment periods in the term. See also: http://en.wikipedia.org/wiki/Future_value";>Fv</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">â??</property>
-                <property name="text">0</property>
-                <signal name="activate" handler="finc_activate_cb"/>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="finc_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
+                <property name="left_attach">9</property>
+                <property name="right_attach">10</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label43">
+              <object class="GtkButton" id="calc_finc_term_button">
+                <property name="label" translatable="yes" comments="Calculates the number of payment periods that are necessary during the term of an ordinary annuity, to accumulate a future value of fv, at a periodic interest rate of int. Each payment is equal to amount pmt. See also: http://en.wikipedia.org/wiki/Annuity_(finance_theory)">Term</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Payment Period Dialog: Label before periodic interest rate input">Periodic Interest _Rate:</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">term_pint</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="finc_cb" swapped="no"/>
               </object>
               <packing>
+                <property name="left_attach">8</property>
+                <property name="right_attach">9</property>
                 <property name="top_attach">3</property>
                 <property name="bottom_attach">4</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label44">
+              <object class="GtkButton" id="calc_finc_sum_of_the_years_digits_depreciation_button">
+                <property name="label" translatable="yes" comments="Calculates the depreciation allowance on an asset for a specified period of time, using the Sum-Of-The-Years'-Digits method. This method of depreciation accelerates the rate of depreciation, so that more depreciation expense occurs in earlier periods than in later ones. The depreciable cost is cost - salvage. The useful life is the number of periods, typically years, over which an asset is depreciated. See also: http://en.wikipedia.org/wiki/Depreciation";>Syd</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Payment Period Dialog: Label before future value input">Future _Value:</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">term_fv</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="finc_cb" swapped="no"/>
               </object>
               <packing>
+                <property name="left_attach">9</property>
+                <property name="right_attach">10</property>
                 <property name="top_attach">2</property>
                 <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label45">
+              <object class="GtkButton" id="calc_finc_straight_line_depreciation_button">
+                <property name="label" translatable="yes" comments="Calculates the straight-line depreciation of an asset for one period. The depreciable cost is cost - salvage. The straight-line method of depreciation divides the depreciable cost evenly over the useful life of an asset. The useful life is the number of periods, typically years, over which an asset is depreciated. See also: http://en.wikipedia.org/wiki/Depreciation";>Sln</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Payment Period Dialog: Label before periodic payment input">_Periodic Payment:</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">term_pmt</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="finc_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="left_attach">8</property>
+                <property name="right_attach">9</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="calc_finc_periodic_interest_rate_button">
+                <property name="label" translatable="yes" comments="Calculates the periodic interest necessary to increase an investment of present value pv to a future value of fv, over the number of compounding periods in term. See also: http://en.wikipedia.org/wiki/Interest                                      ">Rate</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="finc_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="left_attach">7</property>
+                <property name="right_attach">8</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="calc_finc_present_value_button">
+                <property name="label" translatable="yes" comments="Calculates the present value of an investment based on a series of equal payments, each of amount pmt, discounted at a periodic interest rate of int, over the number of payment periods in the term. See also: http://en.wikipedia.org/wiki/Present_value";>Pv</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="finc_cb" swapped="no"/>
               </object>
               <packing>
+                <property name="left_attach">9</property>
+                <property name="right_attach">10</property>
                 <property name="top_attach">1</property>
                 <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label46">
+              <object class="GtkButton" id="calc_finc_periodic_payment_button">
+                <property name="label" translatable="yes" comments="Calculates the amount of the periodic payment of a loan, where payments are made at the end of each payment period. See also: http://en.wikipedia.org/wiki/Amortization_schedule";>Pmt</property>
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes" comments="Payment Period Dialog: Description of calculation">Calculates the number of payment periods that are necessary during the term of an ordinary annuity, to accumulate a future value, at a periodic interest rate.</property>
-                <property name="wrap">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="finc_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="right_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="left_attach">8</property>
+                <property name="right_attach">9</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area9">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="button17">
-                <property name="label">gtk-cancel</property>
+              <object class="GtkButton" id="calc_finc_gross_profit_margin_button">
+                <property name="label" translatable="yes" comments="Calculates the resale price of a product, based on the product cost and the wanted gross profit margin. See also: http://en.wikipedia.org/wiki/Gross_profit_margin";>Gpm</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="finc_cb" swapped="no"/>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
+                <property name="left_attach">7</property>
+                <property name="right_attach">8</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="button18">
-                <property name="label" translatable="yes" comments="Payment Period Dialog: Button to calculate result">C_alculate</property>
+              <object class="GtkButton" id="calc_undo_button">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
+                <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <child>
+                  <object class="GtkImage" id="image1">
+                    <property name="visible">True</property>
+                    <property name="stock">gtk-undo</property>
+                  </object>
+                </child>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
+                <property name="left_attach">4</property>
+                <property name="right_attach">5</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="calc_x_pow_y_button">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="focus_on_click">False</property>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="calc_x_pow_y_button-atkobject">
+                    <property name="AtkObject::accessible-name" translatable="yes" comments="Accessible name for the exponentiation (x to the power of y) button">Exponent</property>
+                  </object>
+                </child>
+                <signal name="clicked" handler="button_cb" swapped="no"/>
+                <child>
+                  <object class="GtkLabel" id="x_pow_y_label">
+                    <property name="visible">True</property>
+                    <property name="label">&lt;i&gt;x&lt;/i&gt;&lt;sup&gt;&lt;i&gt;y&lt;/i&gt;&lt;/sup&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">6</property>
+                <property name="right_attach">7</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
               </packing>
             </child>
+            <child>
+              <object class="GtkButton" id="calc_root_button">
+                <property name="label">â??</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <property name="focus_on_click">False</property>
+                <signal name="clicked" handler="button_cb" swapped="no"/>
+              </object>
+              <packing>
+                <property name="left_attach">6</property>
+                <property name="right_attach">7</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
           </object>
           <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>
     </child>
-    <action-widgets>
-      <action-widget response="-6">button17</action-widget>
-      <action-widget response="-5">button18</action-widget>
-    </action-widgets>
   </object>
 </interface>
diff --git a/data/buttons-programming.ui b/data/buttons-programming.ui
index 8e74b51..6996dd6 100644
--- a/data/buttons-programming.ui
+++ b/data/buttons-programming.ui
@@ -2458,42 +2458,14 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_recall_button">
+              <object class="GtkButton" id="calc_numeric_point_button">
+                <property name="label" comments="Label is set in gtk.c to comply with LC flags">.</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
                 <property name="focus_on_click">False</property>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="calc_recall_button-atkobject">
-                    <property name="AtkObject::accessible-name" translatable="yes" comments="Accessible name for the recall value button">Recall</property>
-                  </object>
-                </child>
-                <signal name="clicked" handler="recall_cb"/>
-                <child>
-                  <object class="GtkHBox" id="hbox19">
-                    <property name="visible">True</property>
-                    <property name="spacing">3</property>
-                    <child>
-                      <object class="GtkLabel" id="label22">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes" comments="The label on the memory recall button">â?? R</property>
-                      </object>
-                      <packing>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkArrow" id="arrow13">
-                        <property name="visible">True</property>
-                        <property name="arrow_type">down</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
+                <signal name="clicked" handler="numeric_point_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="left_attach">2</property>
@@ -2503,7 +2475,7 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="calc_store_button">
+              <object class="GtkButton" id="calc_memory_button">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -2513,7 +2485,7 @@
                     <property name="AtkObject::accessible-name" translatable="yes" comments="Accessible name for the store value button">Store</property>
                   </object>
                 </child>
-                <signal name="clicked" handler="store_cb"/>
+                <signal name="clicked" handler="memory_cb"/>
                 <child>
                   <object class="GtkHBox" id="hbox20">
                     <property name="visible">True</property>
@@ -2521,7 +2493,7 @@
                     <child>
                       <object class="GtkLabel" id="label23">
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes" comments="The label on the memory store button">â?? R</property>
+                        <property name="label" translatable="yes" comments="The label on the memory button">x</property>
                       </object>
                       <packing>
                         <property name="position">0</property>
diff --git a/src/Makefile.am b/src/Makefile.am
index c549b14..e0c6ce3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -24,6 +24,8 @@ gcalctool_SOURCES = \
 	math-preferences.h \
 	math-variables.c \
 	math-variables.h \
+	math-variable-popup.c \
+	math-variable-popup.h \
 	math-window.c \
 	math-window.h \
 	math-enums.c \
diff --git a/src/math-buttons.c b/src/math-buttons.c
index 8eaad4d..a10806e 100644
--- a/src/math-buttons.c
+++ b/src/math-buttons.c
@@ -20,6 +20,7 @@
 
 #include "math-buttons.h"
 #include "math-converter.h"
+#include "math-variable-popup.h"
 #include "financial.h"
 #include "currency.h"
 #include "mp-serializer.h"
@@ -231,12 +232,9 @@ static ButtonData button_data[] = {
     {"end_group",          ")", GROUP,
       /* Tooltip for the end group button */
       N_("End Group [)]")},
-    {"store", NULL, MEMORY,
-      /* Tooltip for the assign variable button */
-      N_("Assign Variable")},
-    {"recall", NULL, MEMORY,
-      /* Tooltip for the insert variable button */
-      N_("Insert Variable")},
+    {"memory", NULL, MEMORY,
+      /* Tooltip for the memory button */
+      N_("Memory")},
     {"character", NULL, MEMORY,
       /* Tooltip for the insert character code button */
       N_("Insert Character Code")},
@@ -1057,163 +1055,22 @@ popup_button_menu(GtkWidget *widget, GtkMenu *menu)
 }
 
 
-static void
-save_variable_cb(GtkWidget *widget, MathButtons *buttons)
-{
-  printf("save\n");
-}
-
-
-static void
-delete_variable_cb(GtkWidget *widget, MathButtons *buttons)
-{
-  printf("delete\n");
-}
-
-
-static GtkWidget *
-make_register_menu_item(MathButtons *buttons, const gchar *name, const MPNumber *value, gboolean can_modify, GCallback callback)
-{
-    gchar *text, *mstr;
-    GtkWidget *item, *label;
-
-    if (value) {
-        MpSerializer *serializer = math_equation_get_serializer(buttons->priv->equation);
-        text = mp_serializer_to_string(serializer, value);
-        mstr = g_strdup_printf("<span weight=\"bold\">%s</span> = %s", name, text);
-        g_free(text);
-    }
-    else
-        mstr = g_strdup_printf("<span weight=\"bold\">%s</span>", name);
-    label = gtk_label_new(mstr);
-    gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    g_free(mstr);
-
-    item = gtk_menu_item_new();
-
-    // FIXME: Buttons don't work inside menus...
-    if (0) {//can_modify) {
-        GtkWidget *hbox, *button;
-
-        hbox = gtk_hbox_new(FALSE, 6);
-        gtk_container_add(GTK_CONTAINER(item), hbox);
-
-        gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
-
-        button = gtk_button_new();
-        gtk_button_set_image(GTK_BUTTON(button), gtk_image_new_from_stock(GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU));
-        gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
-        gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, TRUE, 0);
-        g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(delete_variable_cb), buttons);
-
-        button = gtk_button_new();
-        gtk_button_set_image(GTK_BUTTON(button), gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU));
-        gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
-        gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, TRUE, 0);
-        g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(save_variable_cb), buttons);
-    }
-    else
-        gtk_container_add(GTK_CONTAINER(item), label);
-
-    g_object_set_data(G_OBJECT(item), "register_id", g_strdup(name)); // FIXME: Memory leak
-    g_signal_connect(item, "activate", callback, buttons);
-  
-    return item;
-}
-
-
-static void
-store_menu_cb(GtkMenuItem *menu, MathButtons *buttons)
-{
-    math_equation_store(buttons->priv->equation, g_object_get_data(G_OBJECT(menu), "register_id"));
-}
-
-
-void store_cb(GtkWidget *widget, MathButtons *buttons);
-G_MODULE_EXPORT
-void
-store_cb(GtkWidget *widget, MathButtons *buttons)
-{
-    int i;
-    GtkWidget *menu;
-    GtkWidget *item;
-    gchar **names;
-
-    menu = gtk_menu_new();
-    gtk_menu_set_reserve_toggle_size(GTK_MENU(menu), FALSE);
-    set_tint(menu, &buttons->priv->color_memory, 1);
-
-    names = math_variables_get_names(math_equation_get_variables(buttons->priv->equation));
-    if (names[0] == NULL) {
-        item = gtk_menu_item_new_with_label(/* Text shown in store menu when no variables defined */
-                                            _("No variables defined"));
-        gtk_widget_set_sensitive(item, FALSE);
-        gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-    }  
-    for (i = 0; names[i]; i++) {
-        MPNumber *value;
-        value = math_variables_get_value(math_equation_get_variables(buttons->priv->equation), names[i]);
-        item = make_register_menu_item(buttons, names[i], value, TRUE, G_CALLBACK(store_menu_cb));
-        gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-    }
-
-    g_strfreev(names);
-
-    // FIXME
-    //item = gtk_menu_item_new_with_label(_("Add variable"));
-    //gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-
-    gtk_widget_show_all(menu);
-    popup_button_menu(widget, GTK_MENU(menu));
-}
-
-
-static void
-recall_menu_cb(GtkMenuItem *menu, MathButtons *buttons)
-{
-    math_equation_recall(buttons->priv->equation, g_object_get_data(G_OBJECT(menu), "register_id"));  
-}
-
-
-void recall_cb(GtkWidget *widget, MathButtons *buttons);
+void memory_cb(GtkWidget *widget, MathButtons *buttons);
 G_MODULE_EXPORT
 void
-recall_cb(GtkWidget *widget, MathButtons *buttons)
+memory_cb(GtkWidget *widget, MathButtons *buttons)
 {
-    int i;
-    GtkWidget *menu;
-    GtkWidget *item;
-    gchar **names;
-
-    menu = gtk_menu_new();
-    gtk_menu_set_reserve_toggle_size(GTK_MENU(menu), FALSE);
-    set_tint(menu, &buttons->priv->color_memory, 1);
-
-    names = math_variables_get_names(math_equation_get_variables(buttons->priv->equation));
-    if (names[0] == NULL) {
-        item = gtk_menu_item_new_with_label(/* Text shown in recall menu when no variables defined */
-                                            _("No variables defined"));
-        gtk_widget_set_sensitive(item, FALSE);
-        gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-    }  
-    for (i = 0; names[i]; i++) {
-        MPNumber *value;
-        value = math_variables_get_value(math_equation_get_variables(buttons->priv->equation), names[i]);
-        item = make_register_menu_item(buttons, names[i], value, TRUE, G_CALLBACK(recall_menu_cb));
-        gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-    }
-
-    g_strfreev(names);
+    MathVariablePopup *popup;
+    GtkAllocation allocation;
+    gint x, y;
 
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtk_separator_menu_item_new());
-    item = make_register_menu_item(buttons, "ans", math_equation_get_answer(buttons->priv->equation), FALSE, G_CALLBACK(recall_menu_cb));
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-    item = make_register_menu_item(buttons, "rand", NULL, FALSE, G_CALLBACK(recall_menu_cb));
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+    popup = math_variable_popup_new(buttons->priv->equation);
+    set_tint(GTK_WIDGET(popup), &buttons->priv->color_memory, 1);
 
-    gtk_widget_show_all(menu);
-    popup_button_menu(widget, GTK_MENU(menu));
+    gtk_widget_get_allocation(widget, &allocation); 
+    gdk_window_get_root_coords(gtk_widget_get_window(widget), allocation.x, allocation.y, &x, &y);
+    gtk_window_move(GTK_WINDOW(popup), x, y);
+    gtk_widget_show(GTK_WIDGET(popup));
 }
 
 
diff --git a/src/math-equation.c b/src/math-equation.c
index 047f79a..2b87989 100644
--- a/src/math-equation.c
+++ b/src/math-equation.c
@@ -881,7 +881,7 @@ math_equation_store(MathEquation *equation, const gchar *name)
     if (!math_equation_get_number(equation, &t))
         math_equation_set_status(equation, _("No sane value to store"));
     else
-        math_variables_set_value(equation->priv->variables, name, &t);
+        math_variables_set(equation->priv->variables, name, &t);
 }
 
 
@@ -1033,7 +1033,7 @@ variable_is_defined(const char *name, void *data)
     }
     g_free(lower_name);
 
-    return math_variables_get_value(equation->priv->variables, name) != NULL;
+    return math_variables_get(equation->priv->variables, name) != NULL;
 }
 
 
@@ -1054,7 +1054,7 @@ get_variable(const char *name, MPNumber *z, void *data)
     else if (strcmp(lower_name, "ans") == 0)
         mp_set_from_mp(&equation->priv->state.ans, z);
     else {
-        t = math_variables_get_value(equation->priv->variables, name);
+        t = math_variables_get(equation->priv->variables, name);
         if (t)
             mp_set_from_mp(t, z);
         else
@@ -1072,7 +1072,7 @@ set_variable(const char *name, const MPNumber *x, void *data)
 {
     MathEquation *equation = data;
     /* FIXME: Don't allow writing to built-in variables, e.g. ans, rand, sin, ... */
-    math_variables_set_value(equation->priv->variables, name, x);
+    math_variables_set(equation->priv->variables, name, x);
 }
 
 
diff --git a/src/math-variable-popup.c b/src/math-variable-popup.c
new file mode 100644
index 0000000..a42add3
--- /dev/null
+++ b/src/math-variable-popup.c
@@ -0,0 +1,289 @@
+/*  Copyright (c) 2008-2009 Robert Ancell
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ *  General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ *  02111-1307, USA.
+ */
+
+#include <glib/gi18n.h>
+
+#include "math-variable-popup.h"
+
+enum {
+    PROP_0,
+    PROP_EQUATION
+};
+
+struct MathVariablePopupPrivate
+{
+    MathEquation *equation;
+
+    GtkWidget *vbox;
+    GtkWidget *variable_name_entry;
+    GtkWidget *add_variable_button;
+};
+
+G_DEFINE_TYPE (MathVariablePopup, math_variable_popup, GTK_TYPE_WINDOW);
+
+MathVariablePopup *
+math_variable_popup_new(MathEquation *equation)
+{
+    return g_object_new(math_variable_popup_get_type(), "type", GTK_WINDOW_POPUP, "equation", equation, NULL);
+}
+
+//FIXME
+static void
+variable_focus_out_event_cb(GtkWidget *widget, GdkEventFocus *event, MathVariablePopup *popup)
+{
+    gtk_widget_destroy(widget);
+}
+
+
+static void
+insert_variable_cb(GtkWidget *widget, MathVariablePopup *popup)
+{
+    const gchar *name;
+
+    name = g_object_get_data(G_OBJECT(widget), "variable_name");
+    math_equation_insert(popup->priv->equation, name);
+
+    gtk_widget_destroy(gtk_widget_get_toplevel(widget));
+}
+
+
+static void
+add_variable_cb(GtkWidget *widget, MathVariablePopup *popup)
+{
+    const gchar *name;
+    MPNumber z;
+
+    name = gtk_entry_get_text(GTK_ENTRY(popup->priv->variable_name_entry));
+    if (name[0] == '\0')
+        return;
+
+    if (math_equation_get_number(popup->priv->equation, &z))
+        math_variables_set(math_equation_get_variables(popup->priv->equation), name, &z);
+    else if (math_equation_is_result(popup->priv->equation))
+        math_variables_set(math_equation_get_variables(popup->priv->equation), name, math_equation_get_answer(popup->priv->equation));
+    else
+        g_warning("Can't add variable %s, the display is not a number", name);
+
+    gtk_widget_destroy(gtk_widget_get_toplevel(widget));
+}
+
+
+static void
+save_variable_cb(GtkWidget *widget, MathVariablePopup *popup)
+{
+    const gchar *name;
+    MPNumber z;
+
+    name = g_object_get_data(G_OBJECT(widget), "variable_name");
+    if (math_equation_get_number(popup->priv->equation, &z))    
+        math_variables_set(math_equation_get_variables(popup->priv->equation), name, &z);
+    else if (math_equation_is_result(popup->priv->equation))
+        math_variables_set(math_equation_get_variables(popup->priv->equation), name, math_equation_get_answer(popup->priv->equation));
+    else
+        g_warning("Can't save variable %s, the display is not a number", name);
+
+    gtk_widget_destroy(gtk_widget_get_toplevel(widget));
+}
+
+
+static void
+delete_variable_cb(GtkWidget *widget, MathVariablePopup *popup)
+{
+    const gchar *name;
+
+    name = g_object_get_data(G_OBJECT(widget), "variable_name");  
+    math_variables_delete(math_equation_get_variables(popup->priv->equation), name);
+
+    gtk_widget_destroy(gtk_widget_get_toplevel(widget));
+}
+
+
+static GtkWidget *
+make_variable_entry(MathVariablePopup *popup, const gchar *name, const MPNumber *value, gboolean writable)
+{
+    GtkWidget *hbox, *button, *label;
+    gchar *text;
+
+    hbox = gtk_hbox_new(FALSE, 6);
+
+    if (value)
+    {
+        gchar *value_text = mp_serializer_to_string(math_equation_get_serializer(popup->priv->equation), value);
+        text = g_strdup_printf("<b>%s</b> = %s", name, value_text);
+        g_free (value_text);
+    }
+    else
+        text = g_strdup_printf("<b>%s</b>", name);
+
+    button = gtk_button_new();
+    g_object_set_data(G_OBJECT(button), "variable_name", g_strdup(name)); // FIXME: These will all leak memory
+    g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(insert_variable_cb), popup);
+    gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
+    gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
+    gtk_widget_show(button);
+
+    label = gtk_label_new(text);
+    g_free(text);
+    gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
+    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+    gtk_container_add(GTK_CONTAINER(button), label);
+    gtk_widget_show(label);
+
+    if (writable)
+    {
+        GtkWidget *image;
+
+        button = gtk_button_new();
+        g_object_set_data(G_OBJECT(button), "variable_name", g_strdup(name));
+        image = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_BUTTON);
+        gtk_container_add(GTK_CONTAINER(button), image);
+        gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, TRUE, 0);
+        g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(save_variable_cb), popup);
+        gtk_widget_show(image);
+        gtk_widget_show(button);
+
+        button = gtk_button_new();
+        g_object_set_data(G_OBJECT(button), "variable_name", g_strdup(name));
+        image = gtk_image_new_from_stock(GTK_STOCK_DELETE, GTK_ICON_SIZE_BUTTON);
+        gtk_container_add(GTK_CONTAINER(button), image);
+        gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, TRUE, 0);
+        g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(delete_variable_cb), popup);
+        gtk_widget_show(image);
+        gtk_widget_show(button);
+    }
+
+    return hbox;
+}
+
+
+static void
+math_variable_popup_set_property(GObject      *object,
+                                 guint         prop_id,
+                                 const GValue *value,
+                                 GParamSpec   *pspec)
+{
+    MathVariablePopup *self;
+    gchar **names;
+    int i;
+    GtkWidget *entry, *image;
+
+    self = MATH_VARIABLE_POPUP(object);
+
+    switch (prop_id) {
+    case PROP_EQUATION:
+        self->priv->equation = g_value_get_object(value);
+
+        names = math_variables_get_names(math_equation_get_variables(self->priv->equation));
+        for (i = 0; names[i]; i++) {
+            MPNumber *value;
+
+            value = math_variables_get(math_equation_get_variables(self->priv->equation), names[i]);
+            entry = make_variable_entry(self, names[i], value, TRUE);
+            gtk_widget_show(entry);
+            gtk_box_pack_start(GTK_BOX(self->priv->vbox), entry, FALSE, TRUE, 0);
+        }
+        g_strfreev(names);
+
+        entry = gtk_hbox_new(FALSE, 6);
+        gtk_widget_show(entry);
+
+        // FIXME: Set add button sensitivity based on text being present
+        // FIXME: Show greyed "variable name" text to give user a hint how to use
+        // FIXME: Activate on enter
+        self->priv->variable_name_entry = gtk_entry_new();
+        gtk_box_pack_start(GTK_BOX(entry), self->priv->variable_name_entry, TRUE, TRUE, 0);
+        gtk_widget_show(self->priv->variable_name_entry);
+
+        self->priv->add_variable_button = gtk_button_new();
+        gtk_widget_set_sensitive(self->priv->add_variable_button, FALSE);
+        g_signal_connect(G_OBJECT(self->priv->add_variable_button), "clicked", G_CALLBACK(add_variable_cb), self);
+        image = gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_BUTTON);
+        gtk_container_add(GTK_CONTAINER(self->priv->add_variable_button), image);
+        gtk_box_pack_start(GTK_BOX(entry), self->priv->add_variable_button, FALSE, TRUE, 0);
+        gtk_widget_show(image);
+        gtk_widget_show(self->priv->add_variable_button);
+        gtk_box_pack_end(GTK_BOX(self->priv->vbox), entry, FALSE, TRUE, 0);
+
+        entry = make_variable_entry(self, "rand", NULL, FALSE);
+        gtk_widget_show(entry);
+        gtk_box_pack_end(GTK_BOX(self->priv->vbox), entry, FALSE, TRUE, 0);
+
+        entry = make_variable_entry(self, "ans", math_equation_get_answer(self->priv->equation), FALSE);
+        gtk_widget_show(entry);
+        gtk_box_pack_end(GTK_BOX(self->priv->vbox), entry, FALSE, TRUE, 0);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+        break;
+    }
+}
+
+
+static void
+math_variable_popup_get_property(GObject    *object,
+                                 guint       prop_id,
+                                 GValue     *value,
+                                 GParamSpec *pspec)
+{
+    MathVariablePopup *self;
+
+    self = MATH_VARIABLE_POPUP(object);
+
+    switch (prop_id) {
+    case PROP_EQUATION:
+        g_value_set_object(value, self->priv->equation);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+        break;
+    }
+}
+
+
+static void
+math_variable_popup_class_init(MathVariablePopupClass *klass)
+{
+    GObjectClass *object_class = G_OBJECT_CLASS(klass);
+
+    object_class->get_property = math_variable_popup_get_property;
+    object_class->set_property = math_variable_popup_set_property;
+
+    g_type_class_add_private(klass, sizeof(MathVariablePopupPrivate));
+
+    g_object_class_install_property(object_class,
+                                    PROP_EQUATION,
+                                    g_param_spec_object("equation",
+                                                        "equation",
+                                                        "Equation being controlled",
+                                                        math_equation_get_type(),
+                                                        G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+}
+
+
+static void
+math_variable_popup_init(MathVariablePopup *popup)
+{
+    popup->priv = G_TYPE_INSTANCE_GET_PRIVATE(popup, math_variable_popup_get_type(), MathVariablePopupPrivate);
+
+    gtk_container_set_border_width(GTK_CONTAINER(popup), 6);
+    g_signal_connect(G_OBJECT(popup), "focus-out-event", G_CALLBACK(variable_focus_out_event_cb), popup); // FIXME
+
+    popup->priv->vbox = gtk_vbox_new(TRUE, 6);
+    gtk_container_add(GTK_CONTAINER(popup), popup->priv->vbox);
+    gtk_widget_show(popup->priv->vbox);
+}
diff --git a/src/math-variable-popup.h b/src/math-variable-popup.h
new file mode 100644
index 0000000..4c6e1b3
--- /dev/null
+++ b/src/math-variable-popup.h
@@ -0,0 +1,48 @@
+/*  Copyright (c) 2008-2009 Robert Ancell
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ *  General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ *  02111-1307, USA.
+ */
+
+#ifndef MATH_VARIABLE_POPUP_H
+#define MATH_VARIABLE_POPUP_H
+
+#include <gtk/gtk.h>
+#include "math-equation.h"
+
+G_BEGIN_DECLS
+
+#define MATH_VARIABLE_POPUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), math_variable_popup_get_type(), MathVariablePopup))
+
+typedef struct MathVariablePopupPrivate MathVariablePopupPrivate;
+
+typedef struct
+{
+    GtkWindow parent_instance;
+    MathVariablePopupPrivate *priv;
+} MathVariablePopup;
+
+typedef struct
+{
+    GtkWindowClass parent_class;
+} MathVariablePopupClass;
+
+GType math_variable_popup_get_type(void);
+
+MathVariablePopup *math_variable_popup_new(MathEquation *equation);
+
+G_END_DECLS
+
+#endif /* MATH_VARIABLE_POPUP_H */
diff --git a/src/math-variables.c b/src/math-variables.c
index 1d9becc..e450969 100644
--- a/src/math-variables.c
+++ b/src/math-variables.c
@@ -132,9 +132,10 @@ math_variables_get_names(MathVariables *variables)
 
 
 void
-math_variables_set_value(MathVariables *variables, const char *name, const MPNumber *value)
+math_variables_set(MathVariables *variables, const char *name, const MPNumber *value)
 {
     MPNumber *t;
+
     t = g_malloc(sizeof(MPNumber));
     mp_set_from_mp(value, t);
     g_hash_table_insert(variables->priv->registers, g_strdup(name), t);
@@ -143,12 +144,20 @@ math_variables_set_value(MathVariables *variables, const char *name, const MPNum
 
 
 MPNumber *
-math_variables_get_value(MathVariables *variables, const char *name)
+math_variables_get(MathVariables *variables, const char *name)
 {
     return g_hash_table_lookup(variables->priv->registers, name);
 }
 
 
+void
+math_variables_delete(MathVariables *variables, const char *name)
+{
+    g_hash_table_remove(variables->priv->registers, name);
+    registers_save(variables);
+}
+
+
 static void
 math_variables_class_init (MathVariablesClass *klass)
 {
diff --git a/src/math-variables.h b/src/math-variables.h
index 53f507e..82df2aa 100644
--- a/src/math-variables.h
+++ b/src/math-variables.h
@@ -45,9 +45,11 @@ MathVariables *math_variables_new(void);
 
 gchar **math_variables_get_names(MathVariables *variables);
 
-void math_variables_set_value(MathVariables *variables, const char *name, const MPNumber *value);
+void math_variables_set(MathVariables *variables, const char *name, const MPNumber *value);
 
-MPNumber *math_variables_get_value(MathVariables *variables, const char *name);
+MPNumber *math_variables_get(MathVariables *variables, const char *name);
+
+void math_variables_delete(MathVariables *variables, const char *name);
 
 G_END_DECLS
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]