mcabber/src/screen.h
author Mikael Berthe <mikael@lilotux.net>
Wed, 01 Nov 2006 21:48:01 +0100
changeset 994 eb416c9633b5
parent 993 0759f4c7da68
child 1055 6eb1efea75d0
permissions -rw-r--r--
Chatstates: decrease the composing timeout
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     1
#ifndef __SCREEN_H__
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     2
#define __SCREEN_H__ 1
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     3
173
09e24917059d [/trunk] Changeset 185 by mikael
mikael
parents: 151
diff changeset
     4
#include <glib.h>
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
     5
935
97e6a6da2b2c Fix ncurses #include (again)
Mikael Berthe <mikael@lilotux.net>
parents: 930
diff changeset
     6
#if HAVE_NCURSESW_NCURSES_H
97e6a6da2b2c Fix ncurses #include (again)
Mikael Berthe <mikael@lilotux.net>
parents: 930
diff changeset
     7
# include <ncursesw/ncurses.h>
936
3e592fb33aab Fix ncurses panel #include too
Mikael Berthe <mikael@lilotux.net>
parents: 935
diff changeset
     8
# include <ncursesw/panel.h>
935
97e6a6da2b2c Fix ncurses #include (again)
Mikael Berthe <mikael@lilotux.net>
parents: 930
diff changeset
     9
#elif HAVE_NCURSES_NCURSES_H
97e6a6da2b2c Fix ncurses #include (again)
Mikael Berthe <mikael@lilotux.net>
parents: 930
diff changeset
    10
# include <ncurses/ncurses.h>
936
3e592fb33aab Fix ncurses panel #include too
Mikael Berthe <mikael@lilotux.net>
parents: 935
diff changeset
    11
# include <ncurses/panel.h>
3e592fb33aab Fix ncurses panel #include too
Mikael Berthe <mikael@lilotux.net>
parents: 935
diff changeset
    12
#else
935
97e6a6da2b2c Fix ncurses #include (again)
Mikael Berthe <mikael@lilotux.net>
parents: 930
diff changeset
    13
# include <ncurses.h>
936
3e592fb33aab Fix ncurses panel #include too
Mikael Berthe <mikael@lilotux.net>
parents: 935
diff changeset
    14
# include <panel.h>
935
97e6a6da2b2c Fix ncurses #include (again)
Mikael Berthe <mikael@lilotux.net>
parents: 930
diff changeset
    15
#endif
97e6a6da2b2c Fix ncurses #include (again)
Mikael Berthe <mikael@lilotux.net>
parents: 930
diff changeset
    16
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 370
diff changeset
    17
#include "logprint.h"
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 370
diff changeset
    18
761
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    19
// Length of the timestamp & flag prefix in the chat buffer window
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    20
#define PREFIX_WIDTH    17
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    21
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    22
#define INPUTLINE_LENGTH  1024
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    23
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    24
// Only used in screen.c; this is the maximum line number
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    25
// in a multi-line message.  Should be < 1000
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    26
// Note: message length is limited by the HBB_BLOCKSIZE size too
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    27
#define MULTILINE_MAX_LINE_NUMBER 299
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    28
991
ef10906691bb Chatstates: add composing timeout
Mikael Berthe <mikael@lilotux.net>
parents: 940
diff changeset
    29
// When chatstates are enabled, timeout (in seconds) before "composing"
ef10906691bb Chatstates: add composing timeout
Mikael Berthe <mikael@lilotux.net>
parents: 940
diff changeset
    30
// becomes "paused" because of user inactivity.
ef10906691bb Chatstates: add composing timeout
Mikael Berthe <mikael@lilotux.net>
parents: 940
diff changeset
    31
// Warning: setting this very low will cause more network traffic.
994
eb416c9633b5 Chatstates: decrease the composing timeout
Mikael Berthe <mikael@lilotux.net>
parents: 993
diff changeset
    32
#define COMPOSING_TIMEOUT 6L
991
ef10906691bb Chatstates: add composing timeout
Mikael Berthe <mikael@lilotux.net>
parents: 940
diff changeset
    33
739
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    34
enum colors {
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    35
  COLOR_GENERAL = 3,
785
7e0562e3bc83 Replace color_highlight with color_msgout
Mikael Berthe <mikael@lilotux.net>
parents: 779
diff changeset
    36
  COLOR_MSGOUT,
739
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    37
  COLOR_STATUS,
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    38
  COLOR_ROSTER,
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    39
  COLOR_ROSTERSEL,
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    40
  COLOR_ROSTERSELNMSG,
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    41
  COLOR_ROSTERNMSG,
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    42
  COLOR_max
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    43
};
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    44
0d5fb1d9077c Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents: 730
diff changeset
    45
int COLOR_ATTRIB[COLOR_max];
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    46
761
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    47
extern int update_roster;
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    48
761
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    49
typedef struct {
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    50
  int value;
930
a75f7a13df7b UTF-8 terminal support (Reimar Döffinger)
Mikael Berthe <mikael@lilotux.net>
parents: 891
diff changeset
    51
  int utf8;
761
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    52
  enum {
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    53
    MKEY_META = 1,
763
6866ee749225 More keycodes
Mikael Berthe <mikael@lilotux.net>
parents: 761
diff changeset
    54
    MKEY_EQUIV,
6866ee749225 More keycodes
Mikael Berthe <mikael@lilotux.net>
parents: 761
diff changeset
    55
    MKEY_CTRL_PGUP,
6866ee749225 More keycodes
Mikael Berthe <mikael@lilotux.net>
parents: 761
diff changeset
    56
    MKEY_CTRL_PGDOWN,
765
72626e9d60bd Create init_keycodes(), add 2 screen escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 763
diff changeset
    57
    MKEY_SHIFT_PGUP,
72626e9d60bd Create init_keycodes(), add 2 screen escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 763
diff changeset
    58
    MKEY_SHIFT_PGDOWN,
763
6866ee749225 More keycodes
Mikael Berthe <mikael@lilotux.net>
parents: 761
diff changeset
    59
    MKEY_CTRL_SHIFT_PGUP,
794
32d5298f9f8d Add a few keycode sequences
Mikael Berthe <mikael@lilotux.net>
parents: 785
diff changeset
    60
    MKEY_CTRL_SHIFT_PGDOWN,
32d5298f9f8d Add a few keycode sequences
Mikael Berthe <mikael@lilotux.net>
parents: 785
diff changeset
    61
    MKEY_CTRL_HOME,
32d5298f9f8d Add a few keycode sequences
Mikael Berthe <mikael@lilotux.net>
parents: 785
diff changeset
    62
    MKEY_CTRL_END,
32d5298f9f8d Add a few keycode sequences
Mikael Berthe <mikael@lilotux.net>
parents: 785
diff changeset
    63
    MKEY_CTRL_INS,
826
3a3c7a017904 Add Ctrl-Shift-{Home,End} key code sequences
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
    64
    MKEY_CTRL_DEL,
3a3c7a017904 Add Ctrl-Shift-{Home,End} key code sequences
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
    65
    MKEY_CTRL_SHIFT_HOME,
3a3c7a017904 Add Ctrl-Shift-{Home,End} key code sequences
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
    66
    MKEY_CTRL_SHIFT_END
761
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    67
  } mcode;
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    68
} keycode;
276
627925d885de Limit the number of lines in multi-line messages
Mikael Berthe <mikael@lilotux.net>
parents: 267
diff changeset
    69
761
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    70
void scr_Getch(keycode *kcode);
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 739
diff changeset
    71
int process_key(keycode kcode);
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    72
939
12fa2ae6445d Get rid of "busy-waiting" (Christof Meerwald)
Mikael Berthe <mikael@lilotux.net>
parents: 936
diff changeset
    73
inline void scr_DoUpdate(void);
12fa2ae6445d Get rid of "busy-waiting" (Christof Meerwald)
Mikael Berthe <mikael@lilotux.net>
parents: 936
diff changeset
    74
779
057ffe7c43dc Initialize locale charset earlier
Mikael Berthe <mikael@lilotux.net>
parents: 765
diff changeset
    75
void scr_InitLocaleCharSet(void);
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    76
void scr_InitCurses(void);
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 370
diff changeset
    77
void scr_TerminateCurses(void);
151
b69c0b7a23e3 [/trunk] Changeset 163 by mikael
mikael
parents: 139
diff changeset
    78
void scr_DrawMainWindow(unsigned int fullinit);
81
0bd578421ce9 [/trunk] Changeset 95 by mikael
mikael
parents: 74
diff changeset
    79
void scr_DrawRoster(void);
724
264375fe7159 Fix a roster refresh issue
Mikael Berthe <mikael@lilotux.net>
parents: 723
diff changeset
    80
void scr_UpdateMainStatus(int forceupdate);
721
9cf31c9b1dc4 Use room topic as a description in the chat status line
Mikael Berthe <mikael@lilotux.net>
parents: 713
diff changeset
    81
void scr_UpdateChatStatus(int forceupdate);
707
b26a0bde4cdb Add /roster hide|show|toggle
Mikael Berthe <mikael@lilotux.net>
parents: 701
diff changeset
    82
void scr_RosterVisibility(int status);
184
b5aa2b9c425a [/trunk] Changeset 196 by mikael
mikael
parents: 173
diff changeset
    83
void scr_WriteIncomingMessage(const char *jidfrom, const char *text,
190
9c2023d60986 [/trunk] Changeset 202 by mikael
mikael
parents: 187
diff changeset
    84
        time_t timestamp, guint prefix);
50
5425ee13dce6 [/trunk] Changeset 66 by mikael
mikael
parents: 47
diff changeset
    85
void scr_WriteOutgoingMessage(const char *jidto,   const char *text);
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    86
void scr_ShowBuddyWindow(void);
935
97e6a6da2b2c Fix ncurses #include (again)
Mikael Berthe <mikael@lilotux.net>
parents: 930
diff changeset
    87
int  scr_BuddyBufferExists(const char *jid);
865
cee8d6be04e1 Improve changeset a3db3ee8b99e, do not enable chatmode when refreshing
Mikael Berthe <mikael@lilotux.net>
parents: 826
diff changeset
    88
inline void scr_UpdateBuddyWindow(void);
129
03be1cc94560 [/trunk] Changeset 142 by mikael
mikael
parents: 108
diff changeset
    89
inline void scr_set_chatmode(int enable);
807
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 794
diff changeset
    90
inline void scr_set_multimode(int enable, char *subject);
724
264375fe7159 Fix a roster refresh issue
Mikael Berthe <mikael@lilotux.net>
parents: 723
diff changeset
    91
inline int  scr_get_multimode(void);
891
78f4971578dd Add a "special" parameter to scr_setmsgflag_if_needed()
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
    92
void scr_setmsgflag_if_needed(const char *jid, int special);
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
    93
void scr_append_multiline(const char *line);
724
264375fe7159 Fix a roster refresh issue
Mikael Berthe <mikael@lilotux.net>
parents: 723
diff changeset
    94
inline const char *scr_get_multiline(void);
807
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 794
diff changeset
    95
inline const char *scr_get_multimode_subj(void);
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    96
675
ae7016aae014 New "beep_on_message" option
Mikael Berthe <mikael@lilotux.net>
parents: 654
diff changeset
    97
inline void scr_Beep(void);
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
    98
991
ef10906691bb Chatstates: add composing timeout
Mikael Berthe <mikael@lilotux.net>
parents: 940
diff changeset
    99
long int scr_GetAutoAwayTimeout(time_t now);
935
97e6a6da2b2c Fix ncurses #include (again)
Mikael Berthe <mikael@lilotux.net>
parents: 930
diff changeset
   100
void scr_CheckAutoAway(int activity);
322
da138cdebf04 Implement auto-away mode
Mikael Berthe <mikael@lilotux.net>
parents: 314
diff changeset
   101
991
ef10906691bb Chatstates: add composing timeout
Mikael Berthe <mikael@lilotux.net>
parents: 940
diff changeset
   102
#if defined JEP0022 || defined JEP0085
ef10906691bb Chatstates: add composing timeout
Mikael Berthe <mikael@lilotux.net>
parents: 940
diff changeset
   103
long int scr_GetChatStatesTimeout(time_t now);
ef10906691bb Chatstates: add composing timeout
Mikael Berthe <mikael@lilotux.net>
parents: 940
diff changeset
   104
#endif
993
0759f4c7da68 Add option 'disable_chatstates'
Mikael Berthe <mikael@lilotux.net>
parents: 991
diff changeset
   105
int chatstates_disabled;
991
ef10906691bb Chatstates: add composing timeout
Mikael Berthe <mikael@lilotux.net>
parents: 940
diff changeset
   106
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 81
diff changeset
   107
// For commands...
108
7fb72bc13732 [/trunk] Changeset 122 by mikael
mikael
parents: 104
diff changeset
   108
void scr_RosterTop(void);
7fb72bc13732 [/trunk] Changeset 122 by mikael
mikael
parents: 104
diff changeset
   109
void scr_RosterBottom(void);
377
00809e3e327e Add "/roster up" and "/roster down"
Mikael Berthe <mikael@lilotux.net>
parents: 374
diff changeset
   110
void scr_RosterUp(void);
00809e3e327e Add "/roster up" and "/roster down"
Mikael Berthe <mikael@lilotux.net>
parents: 374
diff changeset
   111
void scr_RosterDown(void);
265
49e9e02dd6d0 Add "/roster search" command
mikael@frmp8452
parents: 238
diff changeset
   112
void scr_RosterSearch(char *);
480
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 464
diff changeset
   113
void scr_RosterJumpJid(char *);
361
51ff319947c3 Code cleanup/optimization
Mikael Berthe <mikael@lilotux.net>
parents: 336
diff changeset
   114
void scr_BufferTopBottom(int topbottom);
369
499170ed71c9 Rename some buffer commands, for homogeneity
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
   115
void scr_BufferClear(void);
873
ee39f6d94d43 Add /buffer {scroll_lock|scroll_unlock|toggle_scroll}
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
   116
void scr_BufferScrollLock(int lock);
866
b30df2ab457f Add "/buffer purge"
Mikael Berthe <mikael@lilotux.net>
parents: 865
diff changeset
   117
void scr_BufferPurge(void);
370
dd9e2eb52916 Add /buffer search_{backward,forward}
Mikael Berthe <mikael@lilotux.net>
parents: 369
diff changeset
   118
void scr_BufferSearch(int direction, const char *text);
462
d580e87c11ed Add "/buffer %n"
Mikael Berthe <mikael@lilotux.net>
parents: 389
diff changeset
   119
void scr_BufferPercent(int pc);
464
e4840b288be0 Add "/buffer date"
Mikael Berthe <mikael@lilotux.net>
parents: 462
diff changeset
   120
void scr_BufferDate(time_t t);
236
72fd1273f2b7 [/trunk] Changeset 249 by mikael
mikael
parents: 190
diff changeset
   121
void scr_RosterUnreadMessage(int);
330
a9013124ede6 Add "/roster alternate"
Mikael Berthe <mikael@lilotux.net>
parents: 322
diff changeset
   122
void scr_RosterJumpAlternate(void);
508
5a2132ba2220 Add "/buffer up" and "/buffer down"
Mikael Berthe <mikael@lilotux.net>
parents: 480
diff changeset
   123
void scr_BufferScrollUpDown(int updown, unsigned int nblines);
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 81
diff changeset
   124
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
   125
#endif
576
8b3db0b555a1 Add Vim modelines
Mikael Berthe <mikael@lilotux.net>
parents: 515
diff changeset
   126
580
fed6d1e4d7a9 Fix modelines
Mikael Berthe <mikael@lilotux.net>
parents: 576
diff changeset
   127
/* vim: set expandtab cindent cinoptions=>2\:2(0:  For Vim users... */