00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #pragma once
00021
00022 #include "Types.h"
00023
00024 #include "OLCEditor.h"
00025 #include "CommandInfoObject.h"
00026 #include "CommandTable.h"
00027
00028 class EditorChannel : public OLCEditor
00029 {
00030 public:
00031 typedef CommandInfoObject<EditorChannel> ChannelCommand;
00033 EditorChannel(UBSocket* sock);
00034 ~EditorChannel(void);
00035
00036 void OnFocus();
00037
00038 std::string name() { return "Channel"; };
00039 std::string prompt() { return "Channel> "; };
00040
00041 std::string lookup(const std::string& action);
00042 void dispatch(const std::string& action, const std::string& argument);
00043
00044 SavablePtr getEditing();
00045 TableImplPtr getTable();
00046 KeysPtr addNew();
00047 std::vector<std::string> getList();
00048 std::vector<std::string> getCommands();
00049 void setEditing(KeysPtr keys);
00050
00051 void editName(const std::string& argument);
00052 void editDescription(const std::string& argument);
00053 void editNeedLogin(const std::string& argument);
00054 void showChannel(const std::string& argument);
00055 void saveChannel(const std::string& argument);
00056
00057 private:
00058 CommandTable<EditorChannel> m_commands;
00059 mud::ChannelPtr m_channel;
00060
00061 enum E_TARGET
00062 {
00063 M_NONE,
00064 M_DESCRIPTION,
00065 M_NEEDLOGIN,
00066 };
00067
00068 std::string m_value;
00069 bool m_yesno;
00070
00071 EditorChannel::E_TARGET m_target;
00072
00073 EditorChannel(const EditorChannel& rhs);
00074 EditorChannel operator=(const EditorChannel& rhs);
00075 };