# HG changeset patch # User mikael # Date 1115372140 0 # Node ID 4ce9ff808baa35b7f09000f6123e24f70410c803 # Parent 888ad9f15346cf05c29091dd50b3c2d1b36974cf [/trunk] Changeset 199 by mikael * Add the "/buffer" command (/buffer clear, /buffer top, /buffer bottom) diff -r 888ad9f15346 -r 4ce9ff808baa mcabber/src/TODO --- a/mcabber/src/TODO Thu May 05 20:50:50 2005 +0000 +++ b/mcabber/src/TODO Fri May 06 09:35:40 2005 +0000 @@ -22,6 +22,7 @@ * Commands! :-) - /roster + next_message (Ctrl-q?) + - /buffer - /group - /say blabla - /say_to blabla diff -r 888ad9f15346 -r 4ce9ff808baa mcabber/src/commands.c --- a/mcabber/src/commands.c Thu May 05 20:50:50 2005 +0000 +++ b/mcabber/src/commands.c Fri May 06 09:35:40 2005 +0000 @@ -32,11 +32,12 @@ // Commands callbacks void do_roster(char *arg); -void do_clear(char *arg); void do_status(char *arg); void do_add(char *arg); void do_group(char *arg); void do_say(char *arg); +void do_buffer(char *arg); +void do_clear(char *arg); // Global variable for the commands list static GSList *Commands; @@ -63,6 +64,8 @@ void cmd_init(void) { cmd_add("add", "Add a jabber user", COMPL_JID, 0, &do_add); + cmd_add("buffer", "Manipulate current buddy's buffer (chat window)", + COMPL_BUFFER, 0, &do_buffer); cmd_add("clear", "Clear the dialog window", 0, 0, &do_clear); //cmd_add("del"); cmd_add("group", "Change group display settings", COMPL_GROUP, 0, &do_group); @@ -96,6 +99,11 @@ compl_add_category_word(COMPL_ROSTER, "show_offline"); compl_add_category_word(COMPL_ROSTER, "top"); + // Roster category + compl_add_category_word(COMPL_BUFFER, "bottom"); + compl_add_category_word(COMPL_BUFFER, "clear"); + compl_add_category_word(COMPL_BUFFER, "top"); + // Group category compl_add_category_word(COMPL_GROUP, "expand"); compl_add_category_word(COMPL_GROUP, "shrink"); @@ -239,11 +247,6 @@ scr_LogPrint("Unrecognized parameter!"); } -void do_clear(char *arg) -{ - scr_Clear(); -} - void do_status(char *arg) { enum imstatus st; @@ -341,3 +344,20 @@ send_message(arg); } +void do_buffer(char *arg) +{ + if (!strcasecmp(arg, "top")) { + scr_BufferTop(); + } else if (!strcasecmp(arg, "bottom")) { + scr_BufferBottom(); + } else if (!strcasecmp(arg, "clear")) { + scr_Clear(); + } else + scr_LogPrint("Unrecognized parameter!"); +} + +void do_clear(char *arg) // Alias for "/buffer clear" +{ + do_buffer("clear"); +} + diff -r 888ad9f15346 -r 4ce9ff808baa mcabber/src/compl.h --- a/mcabber/src/compl.h Thu May 05 20:50:50 2005 +0000 +++ b/mcabber/src/compl.h Fri May 06 09:35:40 2005 +0000 @@ -10,7 +10,8 @@ #define COMPL_STATUS 16 #define COMPL_FILENAME 32 // Not implemented yet #define COMPL_ROSTER 64 -#define COMPL_GROUP 128 +#define COMPL_BUFFER 128 +#define COMPL_GROUP 256 void compl_add_category_word(guint, const char *command); GSList *compl_get_category_list(guint cat_flags); diff -r 888ad9f15346 -r 4ce9ff808baa mcabber/src/screen.c --- a/mcabber/src/screen.c Thu May 05 20:50:50 2005 +0000 +++ b/mcabber/src/screen.c Fri May 06 09:35:40 2005 +0000 @@ -922,6 +922,58 @@ doupdate(); } +// scr_BufferTop() +// Jump to the head of the current buddy window +void scr_BufferTop(void) +{ + const gchar *jid; + window_entry_t *win_entry; + + // Get win_entry + if (!current_buddy) return; + jid = CURRENT_JID; + if (!jid) return; + win_entry = scr_SearchWindow(jid); + + if (!win_entry) return; + + win_entry->cleared = FALSE; + win_entry->top = g_list_first(win_entry->hbuf); + + // Refresh the window + scr_UpdateWindow(win_entry); + + // Finished :) + update_panels(); + doupdate(); +} + +// scr_BufferBottom() +// Jump to the end of the current buddy window +void scr_BufferBottom(void) +{ + const gchar *jid; + window_entry_t *win_entry; + + // Get win_entry + if (!current_buddy) return; + jid = CURRENT_JID; + if (!jid) return; + win_entry = scr_SearchWindow(jid); + + if (!win_entry) return; + + win_entry->cleared = FALSE; + win_entry->top = NULL; + + // Refresh the window + scr_UpdateWindow(win_entry); + + // Finished :) + update_panels(); + doupdate(); +} + // scr_LogPrint(...) // Display a message in the log window. void scr_LogPrint(const char *fmt, ...) diff -r 888ad9f15346 -r 4ce9ff808baa mcabber/src/screen.h --- a/mcabber/src/screen.h Thu May 05 20:50:50 2005 +0000 +++ b/mcabber/src/screen.h Fri May 06 09:35:40 2005 +0000 @@ -40,6 +40,8 @@ // For commands... void scr_RosterTop(void); void scr_RosterBottom(void); +void scr_BufferTop(void); +void scr_BufferBottom(void); void scr_Clear(void); #endif