Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

command.C

Go to the documentation of this file.
00001 #include "geom/world.H"
00002 #include "geom/command.H"
00003 
00004 /*****************************************************************
00005  * COMMAND:
00006  *****************************************************************/
00007 bool
00008 COMMAND::doit()
00009 {
00010    _is_done = true;
00011    _is_undone = false;
00012    return true;
00013 }
00014 
00015 bool
00016 COMMAND::undoit()
00017 {
00018    _is_done = false;
00019    _is_undone = true;
00020    return true;
00021 }
00022 
00023 bool
00024 COMMAND::clear()
00025 {
00026    if (is_done())
00027       return false;
00028 
00029    _is_done = _is_undone = false;
00030    return true;
00031 }
00032 
00033 /*****************************************************************
00034  * UNDO_CMD:
00035  *****************************************************************/
00036 bool
00037 UNDO_CMD::doit()
00038 {
00039    if (_cmd && _cmd->undoit())
00040       return COMMAND::doit();   // update state in COMMAND
00041    return false;
00042 }
00043 
00044 bool
00045 UNDO_CMD::undoit()
00046 {
00047    if (_cmd && _cmd->doit())
00048       return COMMAND::undoit(); // update state in COMMAND
00049    return false;
00050 }
00051 
00052 bool
00053 UNDO_CMD::clear()
00054 {
00055    if (!COMMAND::clear())       // update state in COMMAND
00056       return false;
00057 
00058    if (_cmd)
00059       _cmd->clear();
00060    return true;
00061 }
00062 
00063 /*****************************************************************
00064  * DISPLAY_CMD:
00065  *****************************************************************/
00066 bool
00067 DISPLAY_CMD::doit()
00068 {
00069    for (int i = 0; i < _gels.num(); i++)
00070       WORLD::display (_gels[i], false);
00071 
00072    return COMMAND::doit();      // update state in COMMAND
00073 }
00074 
00075 bool
00076 DISPLAY_CMD::undoit()
00077 {
00078    // Go in reverse order, in case it matters:
00079    for (int i = _gels.num()-1; i >= 0 ; i--)
00080       WORLD::undisplay(_gels[i], false);
00081 
00082    return COMMAND::undoit();    // update state in COMMAND
00083 }
00084 
00085 /*****************************************************************
00086  * MULTI_CMD:
00087  *****************************************************************/
00088 bool 
00089 MULTI_CMD::doit()
00090 {
00091    for (int i=0; i <_commands.num(); i++) 
00092       _commands[i]->doit();
00093 
00094    return COMMAND::doit();      // update state in COMMAND
00095 }
00096 
00097 bool
00098 MULTI_CMD::undoit() 
00099 {
00100    // undo in reverse order
00101    for (int i=_commands.num()-1; i >= 0; i--) 
00102       _commands[i]->undoit();
00103 
00104    return COMMAND::undoit();    // update state in COMMAND
00105 }
00106 
00107 bool
00108 MULTI_CMD::clear() 
00109 {
00110    if (!COMMAND::clear())       // update state in COMMAND
00111       return false;
00112 
00113    // Clear in reverse order
00114    for (int i=_commands.num()-1; i >= 0; i--) 
00115       _commands[i]->clear();
00116    return true;
00117 }
00118 
00119 /* end of file command.C */

Generated on Mon Sep 18 11:39:29 2006 for jot by  doxygen 1.4.4