Mercurial > hg
annotate mcabber/src/screen.h @ 930:a75f7a13df7b
UTF-8 terminal support (Reimar Döffinger)
This is a patch from Reimar Döffinger, slightly modified,
which makes mcabber work better on UTF-8 terminals.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sat, 08 Jul 2006 09:40:05 +0200 |
parents | 78f4971578dd |
children | 97e6a6da2b2c |
rev | line source |
---|---|
24 | 1 #ifndef __SCREEN_H__ |
2 #define __SCREEN_H__ 1 | |
3 | |
4 #include <ncurses.h> | |
173 | 5 #include <glib.h> |
24 | 6 |
374
bd5638c21834
Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents:
370
diff
changeset
|
7 #include "logprint.h" |
bd5638c21834
Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents:
370
diff
changeset
|
8 |
761
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
9 // 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
|
10 #define PREFIX_WIDTH 17 |
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
11 |
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
12 #define INPUTLINE_LENGTH 1024 |
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
13 |
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
14 // 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
|
15 // in a multi-line message. Should be < 1000 |
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
16 // 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
|
17 #define MULTILINE_MAX_LINE_NUMBER 299 |
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
18 |
739
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
19 enum colors { |
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
20 COLOR_GENERAL = 3, |
785
7e0562e3bc83
Replace color_highlight with color_msgout
Mikael Berthe <mikael@lilotux.net>
parents:
779
diff
changeset
|
21 COLOR_MSGOUT, |
739
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
22 COLOR_STATUS, |
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
23 COLOR_ROSTER, |
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
24 COLOR_ROSTERSEL, |
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
25 COLOR_ROSTERSELNMSG, |
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
26 COLOR_ROSTERNMSG, |
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
27 COLOR_max |
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
28 }; |
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
29 |
0d5fb1d9077c
Allow "bright" text colors
Mikael Berthe <mikael@lilotux.net>
parents:
730
diff
changeset
|
30 int COLOR_ATTRIB[COLOR_max]; |
24 | 31 |
761
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
32 extern int update_roster; |
24 | 33 |
761
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
34 typedef struct { |
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
35 int value; |
930
a75f7a13df7b
UTF-8 terminal support (Reimar Döffinger)
Mikael Berthe <mikael@lilotux.net>
parents:
891
diff
changeset
|
36 int utf8; |
761
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
37 enum { |
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
38 MKEY_META = 1, |
763 | 39 MKEY_EQUIV, |
40 MKEY_CTRL_PGUP, | |
41 MKEY_CTRL_PGDOWN, | |
765
72626e9d60bd
Create init_keycodes(), add 2 screen escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
763
diff
changeset
|
42 MKEY_SHIFT_PGUP, |
72626e9d60bd
Create init_keycodes(), add 2 screen escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
763
diff
changeset
|
43 MKEY_SHIFT_PGDOWN, |
763 | 44 MKEY_CTRL_SHIFT_PGUP, |
794
32d5298f9f8d
Add a few keycode sequences
Mikael Berthe <mikael@lilotux.net>
parents:
785
diff
changeset
|
45 MKEY_CTRL_SHIFT_PGDOWN, |
32d5298f9f8d
Add a few keycode sequences
Mikael Berthe <mikael@lilotux.net>
parents:
785
diff
changeset
|
46 MKEY_CTRL_HOME, |
32d5298f9f8d
Add a few keycode sequences
Mikael Berthe <mikael@lilotux.net>
parents:
785
diff
changeset
|
47 MKEY_CTRL_END, |
32d5298f9f8d
Add a few keycode sequences
Mikael Berthe <mikael@lilotux.net>
parents:
785
diff
changeset
|
48 MKEY_CTRL_INS, |
826
3a3c7a017904
Add Ctrl-Shift-{Home,End} key code sequences
Mikael Berthe <mikael@lilotux.net>
parents:
807
diff
changeset
|
49 MKEY_CTRL_DEL, |
3a3c7a017904
Add Ctrl-Shift-{Home,End} key code sequences
Mikael Berthe <mikael@lilotux.net>
parents:
807
diff
changeset
|
50 MKEY_CTRL_SHIFT_HOME, |
3a3c7a017904
Add Ctrl-Shift-{Home,End} key code sequences
Mikael Berthe <mikael@lilotux.net>
parents:
807
diff
changeset
|
51 MKEY_CTRL_SHIFT_END |
761
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
52 } mcode; |
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
53 } keycode; |
276
627925d885de
Limit the number of lines in multi-line messages
Mikael Berthe <mikael@lilotux.net>
parents:
267
diff
changeset
|
54 |
761
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
55 void scr_Getch(keycode *kcode); |
4532a9fe0e8c
Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents:
739
diff
changeset
|
56 int process_key(keycode kcode); |
24 | 57 |
779
057ffe7c43dc
Initialize locale charset earlier
Mikael Berthe <mikael@lilotux.net>
parents:
765
diff
changeset
|
58 void scr_InitLocaleCharSet(void); |
24 | 59 void scr_InitCurses(void); |
374
bd5638c21834
Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents:
370
diff
changeset
|
60 void scr_TerminateCurses(void); |
151 | 61 void scr_DrawMainWindow(unsigned int fullinit); |
81 | 62 void scr_DrawRoster(void); |
724
264375fe7159
Fix a roster refresh issue
Mikael Berthe <mikael@lilotux.net>
parents:
723
diff
changeset
|
63 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
|
64 void scr_UpdateChatStatus(int forceupdate); |
707
b26a0bde4cdb
Add /roster hide|show|toggle
Mikael Berthe <mikael@lilotux.net>
parents:
701
diff
changeset
|
65 void scr_RosterVisibility(int status); |
184 | 66 void scr_WriteIncomingMessage(const char *jidfrom, const char *text, |
190 | 67 time_t timestamp, guint prefix); |
50 | 68 void scr_WriteOutgoingMessage(const char *jidto, const char *text); |
24 | 69 void scr_ShowBuddyWindow(void); |
514
979eb0fe2969
Show status changes in buddy window, if it is open
Mikael Berthe <mikael@lilotux.net>
parents:
508
diff
changeset
|
70 bool 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
|
71 inline void scr_UpdateBuddyWindow(void); |
129 | 72 inline void scr_set_chatmode(int enable); |
807
f6cda389db48
Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents:
794
diff
changeset
|
73 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
|
74 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
|
75 void scr_setmsgflag_if_needed(const char *jid, int special); |
238 | 76 void scr_append_multiline(const char *line); |
724
264375fe7159
Fix a roster refresh issue
Mikael Berthe <mikael@lilotux.net>
parents:
723
diff
changeset
|
77 inline const char *scr_get_multiline(void); |
807
f6cda389db48
Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents:
794
diff
changeset
|
78 inline const char *scr_get_multimode_subj(void); |
24 | 79 |
675
ae7016aae014
New "beep_on_message" option
Mikael Berthe <mikael@lilotux.net>
parents:
654
diff
changeset
|
80 inline void scr_Beep(void); |
24 | 81 |
322
da138cdebf04
Implement auto-away mode
Mikael Berthe <mikael@lilotux.net>
parents:
314
diff
changeset
|
82 void scr_CheckAutoAway(bool activity); |
da138cdebf04
Implement auto-away mode
Mikael Berthe <mikael@lilotux.net>
parents:
314
diff
changeset
|
83 |
104 | 84 // For commands... |
108 | 85 void scr_RosterTop(void); |
86 void scr_RosterBottom(void); | |
377
00809e3e327e
Add "/roster up" and "/roster down"
Mikael Berthe <mikael@lilotux.net>
parents:
374
diff
changeset
|
87 void scr_RosterUp(void); |
00809e3e327e
Add "/roster up" and "/roster down"
Mikael Berthe <mikael@lilotux.net>
parents:
374
diff
changeset
|
88 void scr_RosterDown(void); |
265 | 89 void scr_RosterSearch(char *); |
480 | 90 void scr_RosterJumpJid(char *); |
361
51ff319947c3
Code cleanup/optimization
Mikael Berthe <mikael@lilotux.net>
parents:
336
diff
changeset
|
91 void scr_BufferTopBottom(int topbottom); |
369
499170ed71c9
Rename some buffer commands, for homogeneity
Mikael Berthe <mikael@lilotux.net>
parents:
364
diff
changeset
|
92 void scr_BufferClear(void); |
873
ee39f6d94d43
Add /buffer {scroll_lock|scroll_unlock|toggle_scroll}
Mikael Berthe <mikael@lilotux.net>
parents:
866
diff
changeset
|
93 void scr_BufferScrollLock(int lock); |
866 | 94 void scr_BufferPurge(void); |
370
dd9e2eb52916
Add /buffer search_{backward,forward}
Mikael Berthe <mikael@lilotux.net>
parents:
369
diff
changeset
|
95 void scr_BufferSearch(int direction, const char *text); |
462 | 96 void scr_BufferPercent(int pc); |
464 | 97 void scr_BufferDate(time_t t); |
236 | 98 void scr_RosterUnreadMessage(int); |
330 | 99 void scr_RosterJumpAlternate(void); |
508
5a2132ba2220
Add "/buffer up" and "/buffer down"
Mikael Berthe <mikael@lilotux.net>
parents:
480
diff
changeset
|
100 void scr_BufferScrollUpDown(int updown, unsigned int nblines); |
104 | 101 |
24 | 102 #endif |
576 | 103 |
580 | 104 /* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */ |