Mercurial > hg
changeset 187:4ce9ff808baa
[/trunk] Changeset 199 by mikael
* Add the "/buffer" command (/buffer clear, /buffer top, /buffer bottom)
author | mikael |
---|---|
date | Fri, 06 May 2005 09:35:40 +0000 |
parents | 888ad9f15346 |
children | 7604e3cdbb86 |
files | mcabber/src/TODO mcabber/src/commands.c mcabber/src/compl.h mcabber/src/screen.c mcabber/src/screen.h |
diffstat | 5 files changed, 83 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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 <hide_offline|show_offline|top|bottom> + next_message (Ctrl-q?) + - /buffer <clear|top|bottom> - /group <expand|shrink|toggle> - /say blabla - /say_to <jid> blabla
--- 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"); +} +
--- 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);
--- 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, ...)