# HG changeset patch # User mikael # Date 1114023985 0 # Node ID 9e6b7897ec372643b66602ec0bc04e24df6c564a # Parent 9a4aa2797f027aa2a062b59d4fdddaf613c0435c [/trunk] Changeset 109 by mikael * Work on compl.* integration. No big change yet... diff -r 9a4aa2797f02 -r 9e6b7897ec37 mcabber/src/TODO --- a/mcabber/src/TODO Tue Apr 19 20:09:54 2005 +0000 +++ b/mcabber/src/TODO Wed Apr 20 19:06:25 2005 +0000 @@ -18,6 +18,7 @@ - /add [Name] - /del [jid] - /move [\] + - /nick (== rename $@) - /rename [\] Name - /info [jid] - /request_auth [jid] diff -r 9a4aa2797f02 -r 9e6b7897ec37 mcabber/src/commands.c --- a/mcabber/src/commands.c Tue Apr 19 20:09:54 2005 +0000 +++ b/mcabber/src/commands.c Wed Apr 20 19:06:25 2005 +0000 @@ -19,10 +19,13 @@ * USA */ +#include + #include "commands.h" #include "jabglue.h" #include "roster.h" #include "screen.h" +#include "compl.h" #include "utf8.h" #include "utils.h" @@ -30,11 +33,60 @@ // Command structure typedef struct { char name[32]; - char *help; // ? - guint completion_flags; + const char *help; + guint completion_flags[2]; void *(*func)(); } cmd; +static GSList *Commands; + +// cmd_add() +// Adds a command to the commands list and to the CMD completion list +void cmd_add(const char *name, const char *help, + guint flags_row1, guint flags_row2, void *(*f)()) +{ + cmd *n_cmd = g_new0(cmd, 1); + strncpy(n_cmd->name, name, 32-1); + n_cmd->help = help; + n_cmd->completion_flags[0] = flags_row1; + n_cmd->completion_flags[1] = flags_row2; + n_cmd->func = f; + g_slist_append(Commands, n_cmd); + // Add to completion CMD category + compl_add_category_word(COMPL_CMD, name); +} + +// cmd_init() +// ... +void cmd_init(void) +{ + guint cflags[4]; + + //cmd_add("add"); + //cmd_add("clear"); + //cmd_add("del"); + //cmd_add("group"); + //cmd_add("info"); + //cmd_add("move"); + //cmd_add("nick"); + cmd_add("quit", "Exit the software", 0, 0, NULL); + //cmd_add("rename"); + //cmd_add("request_auth"); + cmd_add("say", "Say something to the selected buddy", 0, 0, NULL); + //cmd_add("search"); + //cmd_add("send_auth"); + cmd_add("status", "Show or set your status", COMPL_STATUS, 0, NULL); + + // Status category + compl_add_category_word(COMPL_STATUS, "online"); + compl_add_category_word(COMPL_STATUS, "avail"); + compl_add_category_word(COMPL_STATUS, "invisible"); + compl_add_category_word(COMPL_STATUS, "free"); + compl_add_category_word(COMPL_STATUS, "dnd"); + compl_add_category_word(COMPL_STATUS, "busy"); + compl_add_category_word(COMPL_STATUS, "notavail"); + compl_add_category_word(COMPL_STATUS, "away"); +} // send_message(msg) // Write the message in the buddy's window and send the message on diff -r 9a4aa2797f02 -r 9e6b7897ec37 mcabber/src/compl.c --- a/mcabber/src/compl.c Tue Apr 19 20:09:54 2005 +0000 +++ b/mcabber/src/compl.c Wed Apr 20 19:06:25 2005 +0000 @@ -122,9 +122,9 @@ /* Categories functions */ -// compl_add_category_command(categ, command) -// Adds command as a possible completion in category categ. -void compl_add_category_command(guint categ, char *command) +// compl_add_category_word(categ, command) +// Adds a keyword as a possible completion in category categ. +void compl_add_category_word(guint categ, const char *word) { GSList *sl_cat; category *cat; @@ -141,9 +141,11 @@ cat = (category*)sl_cat->data; // TODO Check word does not already exist - cat->words = g_slist_append(cat->words, g_strdup(command)); // TODO sort + cat->words = g_slist_append(cat->words, g_strdup(word)); // TODO sort } +// compl_get_category_list() +// Returns a slist of all words in the categories specified by the given flags GSList *compl_get_category_list(guint cat_flags) { GSList *sl_cat; @@ -199,35 +201,4 @@ done_completion(); } } - -int main() -{ - compl_add_category_command(COMPL_CMD, "add"); - compl_add_category_command(COMPL_CMD, "clear"); - compl_add_category_command(COMPL_CMD, "del"); - compl_add_category_command(COMPL_CMD, "group"); - compl_add_category_command(COMPL_CMD, "info"); - compl_add_category_command(COMPL_CMD, "move"); - compl_add_category_command(COMPL_CMD, "rename"); - compl_add_category_command(COMPL_CMD, "request_auth"); - compl_add_category_command(COMPL_CMD, "say"); - compl_add_category_command(COMPL_CMD, "search"); - compl_add_category_command(COMPL_CMD, "send_auth"); - compl_add_category_command(COMPL_CMD, "status"); - compl_add_category_command(COMPL_STATUS, "online"); - compl_add_category_command(COMPL_STATUS, "avail"); - compl_add_category_command(COMPL_STATUS, "invisible"); - compl_add_category_command(COMPL_STATUS, "free"); - compl_add_category_command(COMPL_STATUS, "dnd"); - compl_add_category_command(COMPL_STATUS, "busy"); - compl_add_category_command(COMPL_STATUS, "notavail"); - compl_add_category_command(COMPL_STATUS, "away"); - - //test_dump_categories(); - - test_comp(COMPL_STATUS, "d"); - test_comp(COMPL_CMD, "s"); - - return 0; -} */ diff -r 9a4aa2797f02 -r 9e6b7897ec37 mcabber/src/compl.h --- a/mcabber/src/compl.h Tue Apr 19 20:09:54 2005 +0000 +++ b/mcabber/src/compl.h Wed Apr 20 19:06:25 2005 +0000 @@ -10,7 +10,7 @@ #define COMPL_STATUS 16 // Not implemented yet #define COMPL_FILENAME 32 // Not implemented yet -void compl_add_category_command(guint, char *command); +void compl_add_category_word(guint, const char *command); void new_completion(char *prefix, GSList *compl_cat); void done_completion(void); diff -r 9a4aa2797f02 -r 9e6b7897ec37 mcabber/src/screen.c --- a/mcabber/src/screen.c Tue Apr 19 20:09:54 2005 +0000 +++ b/mcabber/src/screen.c Wed Apr 20 19:06:25 2005 +0000 @@ -10,6 +10,7 @@ #include "screen.h" #include "hbuf.h" #include "commands.h" +#include "compl.h" #include "roster.h" #include "parsecfg.h" #include "lang.h"