]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/controllers/ButtonPolicies.C
Move the external dialog to the new scheme.
[lyx.git] / src / frontends / controllers / ButtonPolicies.C
index fc18daa2a398c2cc2197e6ae2035b2c17e54ab26..393606b4401edad0c99b1ddf1e965bb25abc8fd3 100644 (file)
@@ -1,19 +1,11 @@
-// -*- C++ -*-
-/* ButtonPolicies.C
- * Provides a state machine implementation of the various button policies
- * used by the dialogs.
- * Author: Allan Rae <rae@lyx.org>
- * This file is part of
- * ======================================================
+/**
+ * \file ButtonPolicies.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- *           LyX, The Document Processor
+ * \author Allan Rae
  *
- *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
- *
- *           This file Copyright 2000
- *           Allan Rae
- * ======================================================
+ * Full author contact details are available in file CREDITS
  */
 
 #include <config.h>
@@ -35,6 +27,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 {
@@ -61,8 +58,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
@@ -87,13 +84,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;
@@ -108,7 +105,7 @@ void PreferencesPolicy::input(SMInput input)
        //lyxerr << "PreferencesPolicy::input" << endl;
        // CANCEL and HIDE always take us to INITIAL for all cases.
        // Note that I didn't put that special case in the helper function
-       // because it doesn't belong there.  Some other 
+       // because it doesn't belong there.  Some other
        // This is probably optimising for the wrong case since it occurs as the
        // dialog will be hidden.  It would have saved a little memory in the
        // state machine if I could have gotten map working. ARRae 20000813
@@ -135,8 +132,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
@@ -154,13 +151,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;
 }
 
 
@@ -168,7 +165,7 @@ OkCancelPolicy::OkCancelPolicy()
 void OkCancelPolicy::input(SMInput input)
 {
        //lyxerr << "OkCancelPolicy::input" << endl;
-       
+
        // CANCEL and HIDE always take us to INITIAL for all cases
        if (SMI_CANCEL == input
            || SMI_HIDE == input) {
@@ -190,11 +187,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
@@ -211,13 +208,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;
@@ -229,20 +226,20 @@ 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;
 }
 
 
 void OkCancelReadOnlyPolicy::input(SMInput input)
 {
        //lyxerr << "OkCancelReadOnlyPolicy::input" << endl;
-       
+
        // CANCEL and HIDE always take us to INITIAL for all cases
        if (SMI_CANCEL == input
            || SMI_HIDE == input) {
@@ -267,11 +264,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
@@ -289,13 +286,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;
@@ -307,20 +304,20 @@ 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;
 }
 
 
 void NoRepeatedApplyReadOnlyPolicy::input(SMInput input)
 {
        //lyxerr << "NoReapeatedApplyReadOnlyPolicy::input" << endl;
-       
+
        // CANCEL and HIDE always take us to INITIAL for all cases
        if (SMI_CANCEL == input
            || SMI_HIDE == input) {
@@ -345,12 +342,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
@@ -368,14 +365,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;
@@ -394,13 +391,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;
@@ -412,7 +409,7 @@ OkApplyCancelReadOnlyPolicy::OkApplyCancelReadOnlyPolicy()
 void OkApplyCancelReadOnlyPolicy::input(SMInput input)
 {
        //lyxerr << "OkApplyCancelReadOnlyPolicy::input" << endl;
-       
+
        // CANCEL and HIDE always take us to INITIAL for all cases
        if (SMI_CANCEL == input
            || SMI_HIDE == input) {
@@ -437,8 +434,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
@@ -457,14 +454,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;
@@ -478,7 +475,7 @@ OkApplyCancelPolicy::OkApplyCancelPolicy()
 void OkApplyCancelPolicy::input(SMInput input)
 {
        //lyxerr << "OkApplyCancelPolicy::input" << endl;
-       
+
        // CANCEL and HIDE always take us to INITIAL for all cases
        if (SMI_CANCEL == input
            || SMI_HIDE == input) {
@@ -503,8 +500,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
@@ -523,20 +520,20 @@ 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;
 }
 
 
 void NoRepeatedApplyPolicy::input(SMInput input)
 {
        //lyxerr << "NoRepeatedApplyPolicy::input" << endl;
-       
+
        // CANCEL and HIDE always take us to INITIAL for all cases
        if (SMI_CANCEL == input
            || SMI_HIDE == input) {