00001
00022 #ifndef _GAIM_CMDS_H_
00023 #define _GAIM_CMDS_H_
00024
00025 #include "conversation.h"
00026
00027
00028
00029
00032 typedef enum _GaimCmdPriority GaimCmdPriority;
00033 typedef enum _GaimCmdFlag GaimCmdFlag;
00034 typedef enum _GaimCmdStatus GaimCmdStatus;
00035 typedef enum _GaimCmdRet GaimCmdRet;
00036
00037 enum _GaimCmdStatus {
00038 GAIM_CMD_STATUS_OK,
00039 GAIM_CMD_STATUS_FAILED,
00040 GAIM_CMD_STATUS_NOT_FOUND,
00041 GAIM_CMD_STATUS_WRONG_ARGS,
00042 GAIM_CMD_STATUS_WRONG_PRPL,
00043 GAIM_CMD_STATUS_WRONG_TYPE,
00044 };
00045
00046 enum _GaimCmdRet {
00047 GAIM_CMD_RET_OK,
00048 GAIM_CMD_RET_FAILED,
00049 GAIM_CMD_RET_CONTINUE,
00050 };
00051
00052 #define GAIM_CMD_FUNC(func) ((GaimCmdFunc)func)
00053
00054 typedef GaimCmdRet (*GaimCmdFunc)(GaimConversation *, const gchar *cmd,
00055 gchar **args, gchar **error, void *data);
00056 typedef guint GaimCmdId;
00057
00058 enum _GaimCmdPriority {
00059 GAIM_CMD_P_VERY_LOW = -1000,
00060 GAIM_CMD_P_LOW = 0,
00061 GAIM_CMD_P_DEFAULT = 1000,
00062 GAIM_CMD_P_PRPL = 2000,
00063 GAIM_CMD_P_PLUGIN = 3000,
00064 GAIM_CMD_P_ALIAS = 4000,
00065 GAIM_CMD_P_HIGH = 5000,
00066 GAIM_CMD_P_VERYHIGH = 6000,
00067 };
00068
00069 enum _GaimCmdFlag {
00070 GAIM_CMD_FLAG_IM = 0x01,
00071 GAIM_CMD_FLAG_CHAT = 0x02,
00072 GAIM_CMD_FLAG_PRPL_ONLY = 0x04,
00073 GAIM_CMD_FLAG_ALLOW_WRONG_ARGS = 0x08,
00074 };
00075
00076
00079 #ifdef __cplusplus
00080 extern "C" {
00081 #endif
00082
00083
00084
00085
00125 GaimCmdId gaim_cmd_register(const gchar *cmd, const gchar *args, GaimCmdPriority p, GaimCmdFlag f,
00126 const gchar *prpl_id, GaimCmdFunc func, const gchar *helpstr, void *data);
00127
00137 void gaim_cmd_unregister(GaimCmdId id);
00138
00157 GaimCmdStatus gaim_cmd_do_command(GaimConversation *conv, const gchar *cmdline,
00158 const gchar *markup, gchar **errormsg);
00159
00171 GList *gaim_cmd_list(GaimConversation *conv);
00172
00185 GList *gaim_cmd_help(GaimConversation *conv, const gchar *cmd);
00186
00189 #ifdef __cplusplus
00190 }
00191 #endif
00192
00193 #endif