diff options
| author | erdgeist <> | 2012-02-27 00:06:17 +0000 |
|---|---|---|
| committer | erdgeist <> | 2012-02-27 00:06:17 +0000 |
| commit | 7dbafe3f0fa465949ef66d800a8cbd0b191c9519 (patch) | |
| tree | 45ad89dfee0154b76d2473a3d71ffbb0222bf7b4 /vchat-ui.c | |
| parent | f434f9cd4eabfcad3a90711494febbfd89e4ed5f (diff) | |
Complete rewrite of user handling. HEADS UP\!
Diffstat (limited to 'vchat-ui.c')
| -rwxr-xr-x | vchat-ui.c | 113 |
1 files changed, 14 insertions, 99 deletions
| @@ -30,9 +30,11 @@ | |||
| 30 | #include <readline/history.h> | 30 | #include <readline/history.h> |
| 31 | #include <openssl/pem.h> | 31 | #include <openssl/pem.h> |
| 32 | #include <regex.h> | 32 | #include <regex.h> |
| 33 | #include "vchat.h" | ||
| 34 | #include <wchar.h> | 33 | #include <wchar.h> |
| 35 | 34 | ||
| 35 | #include "vchat.h" | ||
| 36 | #include "vchat-user.h" | ||
| 37 | |||
| 36 | /* version of this module */ | 38 | /* version of this module */ |
| 37 | char *vchat_ui_version = "$Id$"; | 39 | char *vchat_ui_version = "$Id$"; |
| 38 | 40 | ||
| @@ -667,37 +669,6 @@ shrinkprivwin (void) { | |||
| 667 | } | 669 | } |
| 668 | } | 670 | } |
| 669 | 671 | ||
| 670 | /* nick completion callback for readline */ | ||
| 671 | static char ** | ||
| 672 | vcccomplete (char *text, int start, int end) | ||
| 673 | { | ||
| 674 | char **matches; | ||
| 675 | matches = (char **) NULL; | ||
| 676 | /* are we at start of line, with no characters typed? message completion */ | ||
| 677 | if (start == 0 && end == 0) | ||
| 678 | { | ||
| 679 | #ifdef OLDREADLINE | ||
| 680 | matches = completion_matches (text, (CPFunction *) ul_mnickcomp); | ||
| 681 | #else | ||
| 682 | matches = rl_completion_matches (text, (rl_compentry_func_t *) ul_mnickcomp); | ||
| 683 | #endif | ||
| 684 | rl_attempted_completion_over = 1; | ||
| 685 | } | ||
| 686 | /* start of line? get matches for channel! */ | ||
| 687 | else if (start == 0) | ||
| 688 | { | ||
| 689 | #ifdef OLDREADLINE | ||
| 690 | matches = completion_matches (text, (CPFunction *) ul_cnickcomp); | ||
| 691 | #else | ||
| 692 | matches = rl_completion_matches (text, (rl_compentry_func_t *) ul_cnickcomp); | ||
| 693 | #endif | ||
| 694 | /* no, we want no 'normal' completion if started typing on the beginning | ||
| 695 | * of the line */ | ||
| 696 | rl_attempted_completion_over = 1; | ||
| 697 | } | ||
| 698 | return (matches); | ||
| 699 | } | ||
| 700 | |||
| 701 | /* clear message window */ | 672 | /* clear message window */ |
| 702 | void | 673 | void |
| 703 | clearpriv () | 674 | clearpriv () |
| @@ -1057,10 +1028,6 @@ drawwin (WINDOW *win, struct sb_data *sb ) | |||
| 1057 | } | 1028 | } |
| 1058 | } | 1029 | } |
| 1059 | 1030 | ||
| 1060 | #ifdef OLDREADLINE | ||
| 1061 | typedef int rl_command_func_t __P((int, int)); | ||
| 1062 | #endif | ||
| 1063 | |||
| 1064 | /* initialize curses and display */ | 1031 | /* initialize curses and display */ |
| 1065 | void | 1032 | void |
| 1066 | initui (void) | 1033 | initui (void) |
| @@ -1224,9 +1191,6 @@ initui (void) | |||
| 1224 | rl_generic_bind (ISFUNC, "\\M-[5~", (void *)scrollup, keymap); | 1191 | rl_generic_bind (ISFUNC, "\\M-[5~", (void *)scrollup, keymap); |
| 1225 | rl_generic_bind (ISFUNC, "\\M-[6~", (void *)scrolldown, keymap); | 1192 | rl_generic_bind (ISFUNC, "\\M-[6~", (void *)scrolldown, keymap); |
| 1226 | 1193 | ||
| 1227 | // rl_bind_keyseq( "\\M-[5~", (rl_command_func_t *)scrollup ); | ||
| 1228 | // rl_bind_keyseq( "\\M-[6~", (rl_command_func_t *)scrolldown ); | ||
| 1229 | |||
| 1230 | /* bind TAB to menu complete from readline */ | 1194 | /* bind TAB to menu complete from readline */ |
| 1231 | rl_bind_key ('\t', (rl_command_func_t *) rl_menu_complete); | 1195 | rl_bind_key ('\t', (rl_command_func_t *) rl_menu_complete); |
| 1232 | 1196 | ||
| @@ -1235,66 +1199,17 @@ initui (void) | |||
| 1235 | 1199 | ||
| 1236 | /* set up nick completion functions .. */ | 1200 | /* set up nick completion functions .. */ |
| 1237 | rl_ignore_completion_duplicates = 0; | 1201 | rl_ignore_completion_duplicates = 0; |
| 1238 | #ifdef OLDREADLINE | 1202 | rl_sort_completion_matches = 0; |
| 1239 | rl_completion_entry_function = (Function *) ul_nickcomp; | 1203 | rl_attempted_completion_function = (rl_completion_func_t *) ul_complete_user; |
| 1240 | rl_attempted_completion_function = vcccomplete; | ||
| 1241 | #else | ||
| 1242 | rl_completion_entry_function = (rl_compentry_func_t *) ul_nickcomp; | ||
| 1243 | rl_attempted_completion_function = (rl_completion_func_t *) vcccomplete; | ||
| 1244 | #endif | ||
| 1245 | 1204 | ||
| 1246 | /* .. and 'line completed' callback */ | 1205 | /* .. and 'line completed' callback */ |
| 1247 | #ifdef OLDREADLINE | ||
| 1248 | rl_callback_handler_install ("", linecomplete); | ||
| 1249 | #else | ||
| 1250 | rl_callback_handler_install ("", (rl_vcpfunc_t *) linecomplete); | 1206 | rl_callback_handler_install ("", (rl_vcpfunc_t *) linecomplete); |
| 1251 | #endif | ||
| 1252 | |||
| 1253 | 1207 | ||
| 1254 | if( getintoption(CF_PRIVCOLLAPS) ) | 1208 | if( getintoption(CF_PRIVCOLLAPS) ) |
| 1255 | toggleprivwin(); | 1209 | toggleprivwin(); |
| 1256 | 1210 | ||
| 1257 | /* | 1211 | resize(0); |
| 1258 | writeout( ">> Ctrl-X <<"); | ||
| 1259 | |||
| 1260 | if (errstr[0] != '\0') { | ||
| 1261 | writeout(errstr); | ||
| 1262 | writeout( " "); | ||
| 1263 | } | ||
| 1264 | |||
| 1265 | writeout (vchat_cl_version); | ||
| 1266 | writeout (vchat_ui_version); | ||
| 1267 | writeout (vchat_io_version); | ||
| 1268 | writeout (vchat_us_version); | ||
| 1269 | writeout (vchat_cm_version); | ||
| 1270 | showout( ); | ||
| 1271 | */ | ||
| 1272 | |||
| 1273 | resize(0); | ||
| 1274 | } | ||
| 1275 | |||
| 1276 | /* render colorized line to window */ | ||
| 1277 | /* DOES NOT WRAP !!! | ||
| 1278 | CURRENTLY UNUSED | ||
| 1279 | Enable, when needed | ||
| 1280 | |||
| 1281 | static void | ||
| 1282 | writecolorized( WINDOW *win, char *string) { | ||
| 1283 | ncurs_attr old_att, new_att; | ||
| 1284 | int i; | ||
| 1285 | |||
| 1286 | WATTR_GET( win, old_att ); | ||
| 1287 | new_att = old_att; | ||
| 1288 | for( i = 0; string[ i ]; i++ ) | ||
| 1289 | if( string[ i ] == 1 ) { | ||
| 1290 | docolorize( string[++i], &new_att, old_att); | ||
| 1291 | } else { | ||
| 1292 | WATTR_SET( win, new_att ); | ||
| 1293 | waddch( win, string[ i ] ); | ||
| 1294 | } | ||
| 1295 | WATTR_SET( win, old_att ); | ||
| 1296 | } | 1212 | } |
| 1297 | */ | ||
| 1298 | 1213 | ||
| 1299 | /* render consoleline to screen */ | 1214 | /* render consoleline to screen */ |
| 1300 | void | 1215 | void |
| @@ -1403,18 +1318,18 @@ exitui (void) | |||
| 1403 | void | 1318 | void |
| 1404 | nickprompt (void) | 1319 | nickprompt (void) |
| 1405 | { | 1320 | { |
| 1406 | if (nick) | 1321 | char * newnick = 0; |
| 1322 | |||
| 1323 | if (own_nick_get()) | ||
| 1407 | return; | 1324 | return; |
| 1408 | 1325 | ||
| 1409 | /* prompt user for nick unless he enters one */ | 1326 | /* prompt user for nick unless he enters one */ |
| 1410 | consoleline("Please enter your nickname:"); | 1327 | consoleline("Please enter your nickname:"); |
| 1411 | while (!nick || !nick[0]) | 1328 | while (!newnick) |
| 1412 | { | 1329 | newnick = readline(""); |
| 1413 | if (nick) | 1330 | |
| 1414 | free (nick); | 1331 | own_nick_set(newnick); |
| 1415 | nick = readline(""); | 1332 | setstroption(CF_NICK,newnick); |
| 1416 | } | ||
| 1417 | setstroption(CF_NICK,nick); | ||
| 1418 | 1333 | ||
| 1419 | /* try to get readlines stats clean again */ | 1334 | /* try to get readlines stats clean again */ |
| 1420 | //rl_free_line_state (); | 1335 | //rl_free_line_state (); |
