]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/ButtonPolicies.C
John's KDE FormRef patch
[lyx.git] / src / frontends / ButtonPolicies.C
index 418df35b5660cf2db094cc5d33271dd55277365d..11d833394829ac5e3da3ff5d3521fa20cc1be4bc 100644 (file)
  */
 
 #include <config.h>
+
 #include "ButtonPolicies.h"
 #include "debug.h"
 
 
-// Helper function
-inline void nextState(ButtonPolicy::State & state,
+/// Helper function
+static inline
+void nextState(ButtonPolicy::State & state,
               ButtonPolicy::SMInput in,
-              ButtonPolicy::StateMachine s_m,
+              ButtonPolicy::StateMachine const & s_m,
               char const * function_name = "nextState")
 {
        ButtonPolicy::State tmp = s_m[state][in];
@@ -46,8 +48,9 @@ inline void nextState(ButtonPolicy::State & state,
 
 PreferencesPolicy::PreferencesPolicy()
        : state_(INITIAL),
-         outputs_(APPLIED+1, OKAY | APPLY | CANCEL | UNDO_ALL),
-         state_machine_(APPLIED+1, StateArray(SMI_TOTAL, BOGUS))
+         outputs_(APPLIED + 1, ButtonPolicy::ALL_BUTTONS),
+         state_machine_(APPLIED + 1,
+                        StateArray(SMI_TOTAL, ButtonPolicy::BOGUS))
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
@@ -118,13 +121,14 @@ void PreferencesPolicy::input(SMInput input)
 
 OkCancelPolicy::OkCancelPolicy()
        : state_(INITIAL),
-         outputs_(INVALID+1, OKAY | APPLY | CANCEL | UNDO_ALL),
-         state_machine_(INVALID+1, StateArray(SMI_TOTAL, BOGUS))
+         outputs_(INVALID + 1, ButtonPolicy::ALL_BUTTONS),
+         state_machine_(INVALID + 1,
+                        StateArray(SMI_TOTAL, ButtonPolicy::BOGUS))
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = OKAY | CANCEL;
-       outputs_[INVALID] = CANCEL;
+       outputs_[VALID] = UNDO_ALL | OKAY | CANCEL;
+       outputs_[INVALID] = UNDO_ALL | CANCEL;
 
        // Build the state machine one state at a time
        // NOTE:  Since CANCEL and HIDE always go to INITIAL they are
@@ -142,11 +146,13 @@ OkCancelPolicy::OkCancelPolicy()
        state_machine_[VALID][SMI_READ_WRITE] = VALID;
        state_machine_[VALID][SMI_INVALID] = INVALID;
        state_machine_[VALID][SMI_OKAY] = INITIAL;
+       state_machine_[VALID][SMI_UNDO_ALL] = INITIAL;
        // State::INVALID
        state_machine_[INVALID][SMI_VALID] = VALID;
        state_machine_[INVALID][SMI_INVALID] = INVALID;
        state_machine_[INVALID][SMI_READ_ONLY] = INVALID;
        state_machine_[INVALID][SMI_READ_WRITE] = INVALID;
+       state_machine_[INVALID][SMI_UNDO_ALL] = INITIAL;
 }
 
 
@@ -168,16 +174,17 @@ void OkCancelPolicy::input(SMInput input)
 
 OkCancelReadOnlyPolicy::OkCancelReadOnlyPolicy()
        : state_(INITIAL),
-         outputs_(RO_INVALID+1, OKAY | APPLY | CANCEL | UNDO_ALL),
-         state_machine_(RO_INVALID+1, StateArray(SMI_TOTAL, BOGUS))
+         outputs_(RO_INVALID + 1, ButtonPolicy::ALL_BUTTONS),
+         state_machine_(RO_INVALID + 1,
+                        StateArray(SMI_TOTAL, ButtonPolicy::BOGUS))
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = OKAY | CANCEL;
-       outputs_[INVALID] = CANCEL;
+       outputs_[VALID] = UNDO_ALL | OKAY | CANCEL;
+       outputs_[INVALID] = UNDO_ALL | CANCEL;
        outputs_[RO_INITIAL] = CLOSE;
-       outputs_[RO_VALID] = CANCEL;
-       outputs_[RO_INVALID] = CANCEL;
+       outputs_[RO_VALID] = UNDO_ALL | CANCEL;
+       outputs_[RO_INVALID] = UNDO_ALL | CANCEL;
 
        // Build the state machine one state at a time
        // NOTE:  Since CANCEL and HIDE always go to INITIAL they are
@@ -194,11 +201,13 @@ OkCancelReadOnlyPolicy::OkCancelReadOnlyPolicy()
        state_machine_[VALID][SMI_READ_WRITE] = VALID;
        state_machine_[VALID][SMI_INVALID] = INVALID;
        state_machine_[VALID][SMI_OKAY] = INITIAL;
+       state_machine_[VALID][SMI_UNDO_ALL] = INITIAL;
        state_machine_[VALID][SMI_READ_ONLY] = RO_VALID;
        // State::INVALID
        state_machine_[INVALID][SMI_INVALID] = INVALID;
        state_machine_[INVALID][SMI_READ_WRITE] = INVALID;
        state_machine_[INVALID][SMI_VALID] = VALID;
+       state_machine_[INVALID][SMI_UNDO_ALL] = INITIAL;
        state_machine_[INVALID][SMI_READ_ONLY] = RO_INVALID;
        // State::RO_INITIAL
        state_machine_[RO_INITIAL][SMI_READ_ONLY] = RO_INITIAL;
@@ -210,11 +219,13 @@ OkCancelReadOnlyPolicy::OkCancelReadOnlyPolicy()
        state_machine_[RO_VALID][SMI_READ_ONLY] = RO_VALID;
        state_machine_[RO_VALID][SMI_INVALID] = RO_INVALID;
        state_machine_[RO_VALID][SMI_READ_WRITE] = VALID;
+       state_machine_[RO_VALID][SMI_UNDO_ALL] = RO_INITIAL;
        // State::RO_INVALID
        state_machine_[RO_INVALID][SMI_READ_ONLY] = RO_INVALID;
        state_machine_[RO_INVALID][SMI_INVALID] = RO_INVALID;
        state_machine_[RO_INVALID][SMI_VALID] = RO_VALID;
        state_machine_[RO_INVALID][SMI_READ_WRITE] = INVALID;
+       state_machine_[RO_INVALID][SMI_UNDO_ALL] = RO_INITIAL;
 }
 
 
@@ -238,16 +249,17 @@ void OkCancelReadOnlyPolicy::input(SMInput input)
 
 NoRepeatedApplyReadOnlyPolicy::NoRepeatedApplyReadOnlyPolicy()
        : state_(INITIAL),
-         outputs_(RO_INVALID+1, OKAY | APPLY | CANCEL | UNDO_ALL),
-         state_machine_(RO_INVALID+1, StateArray(SMI_TOTAL, BOGUS))
+         outputs_(RO_INVALID + 1, ButtonPolicy::ALL_BUTTONS),
+         state_machine_(RO_INVALID + 1,
+                        StateArray(SMI_TOTAL, ButtonPolicy::BOGUS))
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = OKAY | APPLY | CANCEL;
-       outputs_[INVALID] = CANCEL;
+       outputs_[VALID] = UNDO_ALL | OKAY | APPLY | CANCEL;
+       outputs_[INVALID] = UNDO_ALL | CANCEL;
        outputs_[RO_INITIAL] = CLOSE;
-       outputs_[RO_VALID] = CANCEL;
-       outputs_[RO_INVALID] = CANCEL;
+       outputs_[RO_VALID] = UNDO_ALL | CANCEL;
+       outputs_[RO_INVALID] = UNDO_ALL | CANCEL;
 
        // Build the state machine one state at a time
        // NOTE:  Since CANCEL and HIDE always go to INITIAL they are
@@ -265,11 +277,13 @@ NoRepeatedApplyReadOnlyPolicy::NoRepeatedApplyReadOnlyPolicy()
        state_machine_[VALID][SMI_INVALID] = INVALID;
        state_machine_[VALID][SMI_OKAY] = INITIAL;
        state_machine_[VALID][SMI_APPLY] = INITIAL;
+       state_machine_[VALID][SMI_UNDO_ALL] = INITIAL;
        state_machine_[VALID][SMI_READ_ONLY] = RO_VALID;
        // State::INVALID
        state_machine_[INVALID][SMI_INVALID] = INVALID;
        state_machine_[INVALID][SMI_READ_WRITE] = INVALID;
        state_machine_[INVALID][SMI_VALID] = VALID;
+       state_machine_[INVALID][SMI_UNDO_ALL] = INITIAL;
        state_machine_[INVALID][SMI_READ_ONLY] = RO_INVALID;
        // State::RO_INITIAL
        state_machine_[RO_INITIAL][SMI_READ_ONLY] = RO_INITIAL;
@@ -281,11 +295,13 @@ NoRepeatedApplyReadOnlyPolicy::NoRepeatedApplyReadOnlyPolicy()
        state_machine_[RO_VALID][SMI_READ_ONLY] = RO_VALID;
        state_machine_[RO_VALID][SMI_INVALID] = RO_INVALID;
        state_machine_[RO_VALID][SMI_READ_WRITE] = VALID;
+       state_machine_[RO_VALID][SMI_UNDO_ALL] = RO_INITIAL;
        // State::RO_INVALID
        state_machine_[RO_INVALID][SMI_INVALID] = RO_INVALID;
        state_machine_[RO_INVALID][SMI_READ_ONLY] = RO_INVALID;
        state_machine_[RO_INVALID][SMI_VALID] = RO_VALID;
        state_machine_[RO_INVALID][SMI_READ_WRITE] = INVALID;
+       state_machine_[RO_INVALID][SMI_UNDO_ALL] = RO_INITIAL;
 }
 
 
@@ -309,18 +325,19 @@ void NoRepeatedApplyReadOnlyPolicy::input(SMInput input)
 
 OkApplyCancelReadOnlyPolicy::OkApplyCancelReadOnlyPolicy()
        : state_(INITIAL),
-         outputs_(RO_APPLIED+1, OKAY | APPLY | CANCEL | UNDO_ALL),
-         state_machine_(RO_APPLIED+1, StateArray(SMI_TOTAL, BOGUS))
+         outputs_(RO_APPLIED + 1, ButtonPolicy::ALL_BUTTONS),
+         state_machine_(RO_APPLIED + 1,
+                        StateArray(SMI_TOTAL, ButtonPolicy::BOGUS))
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = OKAY | APPLY | CANCEL;
-       outputs_[INVALID] = CANCEL;
+       outputs_[VALID] = UNDO_ALL | OKAY | APPLY | CANCEL;
+       outputs_[INVALID] = UNDO_ALL | CANCEL;
        outputs_[APPLIED] = OKAY | APPLY | CLOSE;
        outputs_[RO_INITIAL] = CLOSE;
-       outputs_[RO_VALID] = CANCEL;
-       outputs_[RO_INVALID] = CANCEL;
-       outputs_[RO_APPLIED] = CANCEL;
+       outputs_[RO_VALID] = UNDO_ALL | CANCEL;
+       outputs_[RO_INVALID] = UNDO_ALL | CANCEL;
+       outputs_[RO_APPLIED] = CLOSE;
 
        // Build the state machine one state at a time
        // NOTE:  Since CANCEL and HIDE always go to INITIAL they are
@@ -337,12 +354,14 @@ OkApplyCancelReadOnlyPolicy::OkApplyCancelReadOnlyPolicy()
        state_machine_[VALID][SMI_READ_WRITE] = VALID;
        state_machine_[VALID][SMI_INVALID] = INVALID;
        state_machine_[VALID][SMI_OKAY] = INITIAL;
+       state_machine_[VALID][SMI_UNDO_ALL] = INITIAL;
        state_machine_[VALID][SMI_APPLY] = APPLIED;
        state_machine_[VALID][SMI_READ_ONLY] = RO_VALID;
        // State::INVALID
        state_machine_[INVALID][SMI_INVALID] = INVALID;
        state_machine_[INVALID][SMI_READ_WRITE] = INVALID;
        state_machine_[INVALID][SMI_VALID] = VALID;
+       state_machine_[INVALID][SMI_UNDO_ALL] = INITIAL;
        state_machine_[INVALID][SMI_READ_ONLY] = RO_INVALID;
        // State::APPLIED
        state_machine_[APPLIED][SMI_APPLY] = APPLIED;
@@ -361,11 +380,13 @@ OkApplyCancelReadOnlyPolicy::OkApplyCancelReadOnlyPolicy()
        state_machine_[RO_VALID][SMI_READ_ONLY] = RO_VALID;
        state_machine_[RO_VALID][SMI_INVALID] = RO_INVALID;
        state_machine_[RO_VALID][SMI_READ_WRITE] = VALID;
+       state_machine_[RO_VALID][SMI_UNDO_ALL] = RO_INITIAL;
        // State::RO_INVALID
        state_machine_[RO_INVALID][SMI_INVALID] = RO_INVALID;
        state_machine_[RO_INVALID][SMI_READ_ONLY] = RO_INVALID;
        state_machine_[RO_INVALID][SMI_VALID] = RO_VALID;
        state_machine_[RO_INVALID][SMI_READ_WRITE] = INVALID;
+       state_machine_[RO_INVALID][SMI_UNDO_ALL] = RO_INITIAL;
        // State::RO_APPLIED
        state_machine_[RO_APPLIED][SMI_READ_ONLY] = RO_APPLIED;
        state_machine_[RO_APPLIED][SMI_INVALID] = RO_INVALID;
@@ -394,13 +415,14 @@ void OkApplyCancelReadOnlyPolicy::input(SMInput input)
 
 OkApplyCancelPolicy::OkApplyCancelPolicy()
        : state_(INITIAL),
-         outputs_(APPLIED+1, OKAY | APPLY | CANCEL | UNDO_ALL),
-         state_machine_(APPLIED+1, StateArray(SMI_TOTAL, BOGUS))
+         outputs_(APPLIED + 1, ButtonPolicy::ALL_BUTTONS),
+         state_machine_(APPLIED + 1,
+                        StateArray(SMI_TOTAL, ButtonPolicy::BOGUS))
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = OKAY | APPLY | CANCEL;
-       outputs_[INVALID] = CANCEL;
+       outputs_[VALID] = UNDO_ALL | OKAY | APPLY | CANCEL;
+       outputs_[INVALID] = UNDO_ALL | CANCEL;
        outputs_[APPLIED] = OKAY | APPLY | CLOSE;
 
        // Build the state machine one state at a time
@@ -419,12 +441,14 @@ OkApplyCancelPolicy::OkApplyCancelPolicy()
        state_machine_[VALID][SMI_READ_WRITE] = VALID;
        state_machine_[VALID][SMI_INVALID] = INVALID;
        state_machine_[VALID][SMI_OKAY] = INITIAL;
+       state_machine_[VALID][SMI_UNDO_ALL] = INITIAL;
        state_machine_[VALID][SMI_APPLY] = APPLIED;
        // State::INVALID
        state_machine_[INVALID][SMI_INVALID] = INVALID;
        state_machine_[INVALID][SMI_READ_ONLY] = INVALID;
        state_machine_[INVALID][SMI_READ_WRITE] = INVALID;
        state_machine_[INVALID][SMI_VALID] = VALID;
+       state_machine_[INVALID][SMI_UNDO_ALL] = INITIAL;
        // State::APPLIED
        state_machine_[APPLIED][SMI_APPLY] = APPLIED;
        state_machine_[APPLIED][SMI_READ_ONLY] = APPLIED;
@@ -455,13 +479,14 @@ void OkApplyCancelPolicy::input(SMInput input)
 
 NoRepeatedApplyPolicy::NoRepeatedApplyPolicy()
        : state_(INITIAL),
-         outputs_(INVALID+1, OKAY | APPLY | CANCEL | UNDO_ALL),
-         state_machine_(INVALID+1, StateArray(SMI_TOTAL, BOGUS))
+         outputs_(INVALID + 1, ButtonPolicy::ALL_BUTTONS),
+         state_machine_(INVALID + 1,
+                        StateArray(SMI_TOTAL, ButtonPolicy::BOGUS))
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = OKAY | APPLY | CANCEL;
-       outputs_[INVALID] = CANCEL;
+       outputs_[VALID] = UNDO_ALL | OKAY | APPLY | CANCEL;
+       outputs_[INVALID] = UNDO_ALL | CANCEL;
 
        // Build the state machine one state at a time
        // NOTE:  Since CANCEL and HIDE always go to INITIAL they are
@@ -480,11 +505,13 @@ NoRepeatedApplyPolicy::NoRepeatedApplyPolicy()
        state_machine_[VALID][SMI_INVALID] = INVALID;
        state_machine_[VALID][SMI_OKAY] = INITIAL;
        state_machine_[VALID][SMI_APPLY] = INITIAL;
+       state_machine_[VALID][SMI_UNDO_ALL] = INITIAL;
        // State::INVALID
        state_machine_[INVALID][SMI_INVALID] = INVALID;
        state_machine_[INVALID][SMI_READ_ONLY] = INVALID;
        state_machine_[INVALID][SMI_READ_WRITE] = INVALID;
        state_machine_[INVALID][SMI_VALID] = VALID;
+       state_machine_[INVALID][SMI_UNDO_ALL] = INITIAL;
 }