[/trunk] Changeset 199 by mikael
* Add the "/buffer" command (/buffer clear, /buffer top, /buffer bottom)
--- 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, ...)
--- 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