]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/controllers/ButtonPolicies.C
Rob Lahaye's "iconify dialogs with main window if so desired" patch.
[lyx.git] / src / frontends / controllers / ButtonPolicies.C
index 52dfa837f150cb78826c0b213acb7e2737e7faca..a1510d632744401fa920593e8ab1b26b41b61a85 100644 (file)
@@ -1,4 +1,3 @@
-// -*- C++ -*-
 /* ButtonPolicies.C
  * Provides a state machine implementation of the various button policies
  * used by the dialogs.
@@ -9,7 +8,7 @@
  *           LyX, The Document Processor
  *
  *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
+ *           Copyright 1995-2001 The LyX Team.
  *
  *           This file Copyright 2000
  *           Allan Rae
 
 using std::endl;
 
+namespace {
+
 /// Helper function
-static inline
+inline
 void nextState(ButtonPolicy::State & state,
               ButtonPolicy::SMInput in,
               ButtonPolicy::StateMachine const & s_m,
@@ -33,6 +34,11 @@ void nextState(ButtonPolicy::State & state,
        if (ButtonPolicy::SMI_NOOP == in) return;
 
        ButtonPolicy::State tmp = s_m[state][in];
+
+       lyxerr[Debug::GUI] << "Transition from state "
+               << state << " to state " << tmp << " after input "
+               << in << std::endl;
        if (ButtonPolicy::BOGUS != tmp) {
                state = tmp;
        } else {
@@ -45,6 +51,8 @@ void nextState(ButtonPolicy::State & state,
        }
 }
 
+} // namespace anon
+
 
 /*-----------------------------PreferencesPolicy-----------------------------*/
 
@@ -57,8 +65,8 @@ PreferencesPolicy::PreferencesPolicy()
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = UNDO_ALL | OKAY | APPLY | CANCEL;
-       outputs_[INVALID] = UNDO_ALL | CANCEL;
+       outputs_[VALID] = RESTORE | OKAY | APPLY | CANCEL;
+       outputs_[INVALID] = RESTORE | CANCEL;
        outputs_[APPLIED] = OKAY | CLOSE;
 
        // Build the state machine one state at a time
@@ -83,13 +91,13 @@ PreferencesPolicy::PreferencesPolicy()
        state_machine_[VALID][SMI_INVALID] = INVALID;
        state_machine_[VALID][SMI_APPLY] = APPLIED;
        state_machine_[VALID][SMI_OKAY] = INITIAL;
-       state_machine_[VALID][SMI_UNDO_ALL] = INITIAL;
+       state_machine_[VALID][SMI_RESTORE] = 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;
+       state_machine_[INVALID][SMI_RESTORE] = INITIAL;
        // State::APPLIED
        state_machine_[APPLIED][SMI_VALID] = VALID;
        state_machine_[APPLIED][SMI_INVALID] = INVALID;
@@ -131,8 +139,8 @@ OkCancelPolicy::OkCancelPolicy()
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = UNDO_ALL | OKAY | CANCEL;
-       outputs_[INVALID] = UNDO_ALL | CANCEL;
+       outputs_[VALID] = RESTORE | OKAY | CANCEL;
+       outputs_[INVALID] = RESTORE | CANCEL;
 
        // Build the state machine one state at a time
        // NOTE:  Since CANCEL and HIDE always go to INITIAL they are
@@ -150,13 +158,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_machine_[VALID][SMI_RESTORE] = 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;
+       state_machine_[INVALID][SMI_RESTORE] = INITIAL;
 }
 
 
@@ -186,11 +194,11 @@ OkCancelReadOnlyPolicy::OkCancelReadOnlyPolicy()
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = UNDO_ALL | OKAY | CANCEL;
-       outputs_[INVALID] = UNDO_ALL | CANCEL;
+       outputs_[VALID] = RESTORE | OKAY | CANCEL;
+       outputs_[INVALID] = RESTORE | CANCEL;
        outputs_[RO_INITIAL] = CLOSE;
-       outputs_[RO_VALID] = UNDO_ALL | CANCEL;
-       outputs_[RO_INVALID] = UNDO_ALL | CANCEL;
+       outputs_[RO_VALID] = RESTORE | CANCEL;
+       outputs_[RO_INVALID] = RESTORE | CANCEL;
 
        // Build the state machine one state at a time
        // NOTE:  Since CANCEL and HIDE always go to INITIAL they are
@@ -207,13 +215,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_RESTORE] = 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_RESTORE] = INITIAL;
        state_machine_[INVALID][SMI_READ_ONLY] = RO_INVALID;
        // State::RO_INITIAL
        state_machine_[RO_INITIAL][SMI_READ_ONLY] = RO_INITIAL;
@@ -225,13 +233,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_machine_[RO_VALID][SMI_RESTORE] = 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;
+       state_machine_[RO_INVALID][SMI_RESTORE] = RO_INITIAL;
 }
 
 
@@ -263,11 +271,11 @@ NoRepeatedApplyReadOnlyPolicy::NoRepeatedApplyReadOnlyPolicy()
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = UNDO_ALL | OKAY | APPLY | CANCEL;
-       outputs_[INVALID] = UNDO_ALL | CANCEL;
+       outputs_[VALID] = RESTORE | OKAY | APPLY | CANCEL;
+       outputs_[INVALID] = RESTORE | CANCEL;
        outputs_[RO_INITIAL] = CLOSE;
-       outputs_[RO_VALID] = UNDO_ALL | CANCEL;
-       outputs_[RO_INVALID] = UNDO_ALL | CANCEL;
+       outputs_[RO_VALID] = RESTORE | CANCEL;
+       outputs_[RO_INVALID] = RESTORE | CANCEL;
 
        // Build the state machine one state at a time
        // NOTE:  Since CANCEL and HIDE always go to INITIAL they are
@@ -285,13 +293,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_RESTORE] = 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_RESTORE] = INITIAL;
        state_machine_[INVALID][SMI_READ_ONLY] = RO_INVALID;
        // State::RO_INITIAL
        state_machine_[RO_INITIAL][SMI_READ_ONLY] = RO_INITIAL;
@@ -303,13 +311,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_machine_[RO_VALID][SMI_RESTORE] = 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_machine_[RO_INVALID][SMI_RESTORE] = RO_INITIAL;
 }
 
 
@@ -341,12 +349,12 @@ OkApplyCancelReadOnlyPolicy::OkApplyCancelReadOnlyPolicy()
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = UNDO_ALL | OKAY | APPLY | CANCEL;
-       outputs_[INVALID] = UNDO_ALL | CANCEL;
+       outputs_[VALID] = RESTORE | OKAY | APPLY | CANCEL;
+       outputs_[INVALID] = RESTORE | CANCEL;
        outputs_[APPLIED] = OKAY | APPLY | CLOSE;
        outputs_[RO_INITIAL] = CLOSE;
-       outputs_[RO_VALID] = UNDO_ALL | CANCEL;
-       outputs_[RO_INVALID] = UNDO_ALL | CANCEL;
+       outputs_[RO_VALID] = RESTORE | CANCEL;
+       outputs_[RO_INVALID] = RESTORE | CANCEL;
        outputs_[RO_APPLIED] = CLOSE;
 
        // Build the state machine one state at a time
@@ -364,14 +372,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_RESTORE] = 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_RESTORE] = INITIAL;
        state_machine_[INVALID][SMI_READ_ONLY] = RO_INVALID;
        // State::APPLIED
        state_machine_[APPLIED][SMI_APPLY] = APPLIED;
@@ -390,13 +398,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_machine_[RO_VALID][SMI_RESTORE] = 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_machine_[RO_INVALID][SMI_RESTORE] = RO_INITIAL;
        // State::RO_APPLIED
        state_machine_[RO_APPLIED][SMI_READ_ONLY] = RO_APPLIED;
        state_machine_[RO_APPLIED][SMI_INVALID] = RO_INVALID;
@@ -433,8 +441,8 @@ OkApplyCancelPolicy::OkApplyCancelPolicy()
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = UNDO_ALL | OKAY | APPLY | CANCEL;
-       outputs_[INVALID] = UNDO_ALL | CANCEL;
+       outputs_[VALID] = RESTORE | OKAY | APPLY | CANCEL;
+       outputs_[INVALID] = RESTORE | CANCEL;
        outputs_[APPLIED] = OKAY | APPLY | CLOSE;
 
        // Build the state machine one state at a time
@@ -453,14 +461,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_RESTORE] = 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_machine_[INVALID][SMI_RESTORE] = INITIAL;
        // State::APPLIED
        state_machine_[APPLIED][SMI_APPLY] = APPLIED;
        state_machine_[APPLIED][SMI_READ_ONLY] = APPLIED;
@@ -499,8 +507,8 @@ NoRepeatedApplyPolicy::NoRepeatedApplyPolicy()
 {
        // Build the state output map
        outputs_[INITIAL] = CLOSE;
-       outputs_[VALID] = UNDO_ALL | OKAY | APPLY | CANCEL;
-       outputs_[INVALID] = UNDO_ALL | CANCEL;
+       outputs_[VALID] = RESTORE | OKAY | APPLY | CANCEL;
+       outputs_[INVALID] = RESTORE | CANCEL;
 
        // Build the state machine one state at a time
        // NOTE:  Since CANCEL and HIDE always go to INITIAL they are
@@ -519,13 +527,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_machine_[VALID][SMI_RESTORE] = 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;
+       state_machine_[INVALID][SMI_RESTORE] = INITIAL;
 }