#ifndef ABSTRACTS_H
#define ABSTRACTS_H

#include "Command.h"

namespace MM
{
    class Cloneable_command : public Command 
    {
    public:
        virtual Command *               clone   () const =0;
    };

    class Cloneable_command_bool : public Command_1 <bool>
    {
    public:
        virtual Command_1 <bool> *       clone   () const =0;
    };

    class Show_protocol         : public Cloneable_command {};
    class Show_information      : public Cloneable_command {};
    class Show_monitor          : public Cloneable_command {};
    class Show_geometry         : public Cloneable_command {};
    class Show_model_movement   : public Cloneable_command {};
    class Set_Z_viewpoint       : public Cloneable_command {};

    class Open                  : public Cloneable_command {};
    class Add                   : public Cloneable_command {};
    class Pull_on               : public Cloneable_command {};
    class Save                  : public Cloneable_command {};
    class Save_as               : public Cloneable_command {};
    class Save_all              : public Cloneable_command {};
    class Synchonize_folders    : public Cloneable_command_bool {};
    class Exit                  : public Cloneable_command {};

    class Contents              : public Cloneable_command {};
    class Discuss               : public Cloneable_command {};
    class About                 : public Cloneable_command {};

    class Select                : public Cloneable_command {};

    //class Add_model_dialog : public Cloneable_command {};

}//MM

#endif //ABSTRACTS_H

