New keywords, cleanup, other changes

This commit is contained in:
Alexander S. Aganichev 2001-03-17 21:17:57 +00:00
parent b6cb2cc5af
commit 0fe26ddd91
29 changed files with 855 additions and 1089 deletions

View File

@ -12,6 +12,61 @@ ______________________________________________________________________
Notes for GoldED+ 1.1.5, March xx 2001
______________________________________________________________________
! Message lister redesigned. Should be quicker if you roll up and down
but consumes more memory.
+ Added tonn of configuration keywords to goldkeys.cfg:
Keyword Default Assignment
AddressbookPack Alt-P
AddressbookDelete Del
AddressbookSelect Enter
AddressbookAdd Ins
AddressbookQuit Esc
HeaderToggleScanned Alt-4
HeaderToggleGroupmsg Alt-2
HeaderToggleZonegate Alt-G
HeaderToggleHubhost Alt-V
HeaderToggleRetrecreq Alt-M
HeaderToggleCrash Alt-C
HeaderToggleLocked Alt-L
HeaderToggleReceived Alt-R
HeaderToggleLocal Alt-W
HeaderToggleRetrec Alt-N
HeaderToggleFreq Alt-F
HeaderLookup Shift-F10
HeaderToggleImm Alt-I
HeaderToggleAttrWin Alt-F1
HeaderAddressbook F10
HeaderToggleArcsent Alt-B
HeaderToggleHold Alt-H
HeaderToggleAudit Alt-Q
HeaderToggleXmail Alt-X
HeaderToggleTrunc Alt-T
HeaderToggleUpdreq Alt-U
HeaderClearAttrib Alt-Z
HeaderToggleKill Alt-K
HeaderToggleTransit Alt-J
HeaderToggleCfmrecreq Alt-Y
HeaderToggleOrphan Alt-O
HeaderToggleFile Alt-A
HeaderToggleDelsent Alt-E
HeaderToggleDirect Alt-D
HeaderToggleReserved Alt-1
HeaderTogglePvt Alt-P
HeaderToggleSent Alt-S
! READuserbase renamed to READaddressbook.
! Changed default values for the following keywords:
Keyword New Default Old Default
ASKDELORIG NO YES
STYLECODES YES HIDE
QUOTEWRAPHARD NO YES
- Fixed leading space macroses in date/time format strings.
- Fixed double recoding of header during forward, quote-reply, and

View File

@ -708,7 +708,7 @@ CfgGed::CfgGed() {
gedhandshake = true;
goldbaseuserno = 0;
happybirthday = 0;
hidestylies = true;
hidestylies = false;
hudsonsizewarn = 16000000L;
hudsonuserno = 0;
ignorecharset = false;
@ -731,7 +731,7 @@ CfgGed::CfgGed() {
quotebufmode = QBUF_ASK;
quotectrl = CI_TEAR|CI_ORIG;
quotemargin = 70;
quotewraphard = true;
quotewraphard = false;
ra2usersbbs = 0;
replylink = 0;
replylinklist = 0;
@ -783,7 +783,7 @@ CfgGed::CfgGed() {
switches.set(areakeeplast, true);
switches.set(arealistgroupid, true);
switches.set(arealistpagebar, true);
switches.set(askdelorig, true);
switches.set(askdelorig, false);
switches.set(beepcomment, true);
switches.set(beepnoises, true);
switches.set(dispautonext, true);

View File

@ -52,7 +52,7 @@ CmdKey DefaultKeyset[] = {
{ Key_Ent , KK_AreaSelect , KT_A },
{ Key_Rgt , KK_AreaSelect , KT_A },
{ Key_A_R , KK_AreaSelectMarks , KT_A },
{ Key_A_F8 , KK_AreaShowDel , KT_R },
{ Key_A_F8 , KK_AreaShowDel , KT_A },
{ Key_A_T , KK_AreaToggle , KT_A },
{ Key_Ins , KK_AreaToggle , KT_A },
{ Key_C_Z , KK_AreaTouchNetscan , KT_A },
@ -167,13 +167,15 @@ CmdKey DefaultKeyset[] = {
{ Key_BS , KK_ListGotoBookMark , KT_M },
{ Key_S , KK_ListMarkingOptions , KT_M },
{ Key_A_S , KK_ListMarkingOptions , KT_M },
{ Key_A_F9 , KK_ListMarkingOptions , KT_R },
{ Key_A_F9 , KK_ListMarkingOptions , KT_M },
{ Key_C_Q , KK_ListQuitNow , KT_M },
{ Key_Ent , KK_ListSelect , KT_M },
{ Key_Tab , KK_ListToggleBookMark , KT_M },
{ Key_C_D , KK_ListToggleDate , KT_M },
{ Key_Space , KK_ListToggleMark , KT_M },
{ Key_C_B , KK_ListToggleWideSubj , KT_M },
{ Key_C_PgUp , KK_ListGotoNext , KT_M },
{ Key_C_PgDn , KK_ListGotoNext , KT_M },
{ Key_Esc , KK_NodeAbort , KT_N },
{ Key_A_X , KK_NodeAskExit , KT_N },
@ -304,16 +306,55 @@ CmdKey DefaultKeyset[] = {
{ Key_T , KK_ReadToggleTwits , KT_R },
{ Key_A_T , KK_ReadToggleTwits , KT_R },
{ Key_C_Z , KK_ReadTouchNetscan , KT_R },
{ Key_A_F10 , KK_ReadUserbase , KT_R },
{ Key_A_F10 , KK_ReadAddressbook , KT_R },
{ Key_C_X , KK_ReadUUDecode , KT_R },
{ Key_W , KK_ReadWriteMsg , KT_R },
{ Key_A_W , KK_ReadWriteMsg , KT_R },
{ Key_F7 , KK_ReadWriteMsg , KT_R },
{ 0xFFFF , 0xFFFF , 0xFF }
{ Key_Esc , KK_AddressbookQuit , KT_B },
{ Key_Ins , KK_AddressbookAdd , KT_B },
{ Key_Ent , KK_AddressbookSelect , KT_B },
{ Key_Del , KK_AddressbookDelete , KT_B },
{ Key_A_P , KK_AddressbookPack , KT_B },
{ Key_A_4 , KK_HeaderToggleScanned , KT_H },
{ Key_A_2 , KK_HeaderToggleGroupmsg , KT_H },
{ Key_A_G , KK_HeaderToggleZonegate , KT_H },
{ Key_A_V , KK_HeaderToggleHubhost , KT_H },
{ Key_A_M , KK_HeaderToggleRetrecreq, KT_H },
{ Key_A_C , KK_HeaderToggleCrash , KT_H },
{ Key_A_L , KK_HeaderToggleLocked , KT_H },
{ Key_A_R , KK_HeaderToggleReceived , KT_H },
{ Key_A_W , KK_HeaderToggleLocal , KT_H },
{ Key_A_N , KK_HeaderToggleRetrec , KT_H },
{ Key_A_F , KK_HeaderToggleFreq , KT_H },
{ Key_S_F10 , KK_HeaderLookup , KT_H },
{ Key_A_I , KK_HeaderToggleImm , KT_H },
{ Key_A_F1 , KK_HeaderToggleAttrWin , KT_H },
{ Key_F10 , KK_HeaderAddressbook , KT_H },
{ Key_A_B , KK_HeaderToggleArcsent , KT_H },
{ Key_A_H , KK_HeaderToggleHold , KT_H },
{ Key_A_Q , KK_HeaderToggleAudit , KT_H },
{ Key_A_X , KK_HeaderToggleXmail , KT_H },
{ Key_A_T , KK_HeaderToggleTrunc , KT_H },
{ Key_A_U , KK_HeaderToggleUpdreq , KT_H },
{ Key_A_Z , KK_HeaderClearAttrib , KT_H },
{ Key_A_K , KK_HeaderToggleKill , KT_H },
{ Key_A_J , KK_HeaderToggleTransit , KT_H },
{ Key_A_Y , KK_HeaderToggleCfmrecreq, KT_H },
{ Key_A_O , KK_HeaderToggleOrphan , KT_H },
{ Key_A_A , KK_HeaderToggleFile , KT_H },
{ Key_A_E , KK_HeaderToggleDelsent , KT_H },
{ Key_A_D , KK_HeaderToggleDirect , KT_H },
{ Key_A_1 , KK_HeaderToggleReserved , KT_H },
{ Key_A_P , KK_HeaderTogglePvt , KT_H },
{ Key_A_S , KK_HeaderToggleSent , KT_H },
{ 0xFFFF , 0xFFFF , 0xFF }
};
// ------------------------------------------------------------------
// must be sorted by crc_token
@ -322,6 +363,7 @@ tglobalkey globalkeys[] = {
{ CRC_READADDRESSBOOKADD , KK_ReadAddressbookAdd , KT_R }, // 0x00FA
{ CRC_LISTDOSSHELL , KK_ListDosShell , KT_M }, // 0x0130
{ CRC_EDITGOLEFT , KK_EditGoLeft , KT_E }, // 0x043B
{ CRC_HEADERTOGGLESCANNED , KK_HeaderToggleScanned , KT_H }, // 0x0459
{ CRC_READTOGGLEHIDDEN , KK_ReadToggleHidden , KT_R }, // 0x04CE
{ CRC_EDITIMPORTTEXT , KK_EditImportText , KT_E }, // 0x0586
#if not defined(__UNIX__) or defined(__USE_NCURSES__)
@ -334,6 +376,7 @@ tglobalkey globalkeys[] = {
{ CRC_AREASELECTMARKS , KK_AreaSelectMarks , KT_A }, // 0x0AC3
{ CRC_K_ALEFT , Key_A_Lft , 0 }, // 0x0B39
{ CRC_READCHANGECHARSIN , KK_ReadChangeCharsIn , KT_R }, // 0x0B87
{ CRC_HEADERTOGGLEGROUPMSG , KK_HeaderToggleGroupmsg , KT_H }, // 0x0C51
{ CRC_K_AF4 , Key_A_F4 , 0 }, // 0x0EF0
{ CRC_K_AF5 , Key_A_F5 , 0 }, // 0x0EF1
{ CRC_K_AF6 , Key_A_F6 , 0 }, // 0x0EF2
@ -349,6 +392,7 @@ tglobalkey globalkeys[] = {
{ CRC_FILEUNMARKALL , KK_FileUnMarkAll , KT_F }, // 0x121A
{ CRC_K_SPACE , Key_Space , 0 }, // 0x1281
{ CRC_EDITREFLOW , KK_EditReflow , KT_E }, // 0x13F9
{ CRC_HEADERTOGGLEZONEGATE , KK_HeaderToggleZonegate , KT_H }, // 0x140B
{ CRC_K_AF12 , Key_A_F12 , 0 }, // 0x14FC
{ CRC_K_AF10 , Key_A_F10 , 0 }, // 0x14FE
{ CRC_K_AF11 , Key_A_F11 , 0 }, // 0x14FF
@ -379,12 +423,18 @@ tglobalkey globalkeys[] = {
{ CRC_K_CRIGHT , Key_C_Rgt , 0 }, // 0x20EC
{ CRC_EDITBLOCKRIGHT , KK_EditBlockRight , KT_E }, // 0x20F9
{ CRC_AREAJUMP , KK_AreaJump , KT_A }, // 0x2342
{ CRC_HEADERTOGGLEHUBHOST , KK_HeaderToggleHubhost , KT_H }, // 0x2505
{ CRC_K_CPGUP , Key_C_PgUp , 0 }, // 0x2603
{ CRC_READGOTOPREVUNREAD , KK_ReadGotoPrevUnread , KT_R }, // 0x27EA
{ CRC_READTOGGLEREALMSGNO , KK_ReadToggleRealMsgno , KT_R }, // 0x2A3B
{ CRC_ADDRESSBOOKADD , KK_AddressbookAdd , KT_B }, // 0x2C5C
{ CRC_HEADERTOGGLERETRECREQ , KK_HeaderToggleRetrecreq, KT_H }, // 0x2CF1
{ CRC_HEADERTOGGLECRASH , KK_HeaderToggleCrash , KT_H }, // 0x2CF9
{ CRC_ADDRESSBOOKDELETE , KK_AddressbookDelete , KT_B }, // 0x2D4A
{ CRC_AREADOSSHELL , KK_AreaDosShell , KT_A }, // 0x2DED
{ CRC_K_DOWN , Key_Dwn , 0 }, // 0x2F6D
{ CRC_READNEWMSG , KK_ReadNewMsg , KT_R }, // 0x30CA
{ CRC_HEADERTOGGLELOCKED , KK_HeaderToggleLocked , KT_H }, // 0x312D
{ CRC_NODEGOTOFIRST , KK_NodeGotoFirst , KT_N }, // 0x321B
{ CRC_READUNDEFINE , KK_ReadUndefine , KT_R }, // 0x329D
{ CRC_K_ADOWN , Key_A_Dwn , 0 }, // 0x32C0
@ -392,6 +442,7 @@ tglobalkey globalkeys[] = {
{ CRC_K_CF10 , Key_C_F10 , 0 }, // 0x3482
{ CRC_K_CF11 , Key_C_F11 , 0 }, // 0x3483
{ CRC_K_CHOME , Key_C_Home , 0 }, // 0x35C4
{ CRC_HEADERTOGGLERECEIVED , KK_HeaderToggleReceived , KT_H }, // 0x36B9
{ CRC_K_CPGDN , Key_C_PgDn , 0 }, // 0x371D
{ CRC_EDITCOPYABOVECHAR , KK_EditCopyAboveChar , KT_E }, // 0x380C
{ CRC_LISTSELECT , KK_ListSelect , KT_M }, // 0x3829
@ -457,6 +508,8 @@ tglobalkey globalkeys[] = {
{ CRC_K_F8 , Key_F8 , 0 }, // 0x4638
{ CRC_K_F9 , Key_F9 , 0 }, // 0x4639
{ CRC_READTOGGLEKLUDGE , KK_ReadToggleKludge , KT_R }, // 0x46AB
{ CRC_HEADERTOGGLELOCAL , KK_HeaderToggleLocal , KT_H }, // 0x47A1
{ CRC_ADDRESSBOOKQUIT , KK_AddressbookQuit , KT_B }, // 0x47C7
{ CRC_READCHANGEATTRS , KK_ReadChangeAttrs , KT_R }, // 0x47F8
{ CRC_READSEARCH , KK_ReadSearch , KT_R }, // 0x48EF
{ CRC_READMSGPGDN , KK_ReadMsgPgDn , KT_R }, // 0x4908
@ -490,6 +543,7 @@ tglobalkey globalkeys[] = {
{ CRC_K_CLEFT , Key_C_Lft , 0 }, // 0x535B
{ CRC_K_UP , Key_Up , 0 }, // 0x5550
{ CRC_K_END , Key_End , 0 }, // 0x5625
{ CRC_HEADERTOGGLERETREC , KK_HeaderToggleRetrec , KT_H }, // 0x56EA
{ CRC_K_ATAB , Key_A_Tab , 0 }, // 0x56FF
{ CRC_READMSGPGUP , KK_ReadMsgPgUp , KT_R }, // 0x5816
{ CRC_AREATOUCHNETSCAN , KK_AreaTouchNetscan , KT_A }, // 0x58C1
@ -541,8 +595,10 @@ tglobalkey globalkeys[] = {
{ CRC_KK_AUTO , Key_Auto , 0 }, // 0x60E2
{ CRC_READFINDHEADER , KK_ReadFindHeader , KT_R }, // 0x6343
{ CRC_K_PGUP , Key_PgUp , 0 }, // 0x63CC
{ CRC_HEADERTOGGLEFREQ , KK_HeaderToggleFreq , KT_H }, // 0x63D9
{ CRC_EDITABORT , KK_EditAbort , KT_E }, // 0x6468
{ CRC_EDITSAVEFILE , KK_EditSaveFile , KT_E }, // 0x64A4
{ CRC_HEADERLOOKUP , KK_HeaderLookup , KT_H }, // 0x64F2
{ CRC_AREAGOTOPREV , KK_AreaGotoPrev , KT_A }, // 0x6534
{ CRC_EDITDELLEFT , KK_EditDelLeft , KT_E }, // 0x6552
{ CRC_EDITSAVEMSG , KK_EditSaveMsg , KT_E }, // 0x660C
@ -556,9 +612,12 @@ tglobalkey globalkeys[] = {
{ CRC_FILEUNMARK , KK_FileUnMark , KT_F }, // 0x6D1B
{ CRC_EDITTOLOWER , KK_EditToLower , KT_E }, // 0x6D85
{ CRC_K_AHOME , Key_A_Home , 0 }, // 0x6DA6
{ CRC_HEADERTOGGLEIMM , KK_HeaderToggleImm , KT_H }, // 0x6E15
{ CRC_LISTTOGGLEDATE , KK_ListToggleDate , KT_M }, // 0x6F1F
{ CRC_K_APGDN , Key_A_PgDn , 0 }, // 0x6F7F
{ CRC_HEADERTOGGLEATTRWIN , KK_HeaderToggleAttrWin , KT_H }, // 0x6F95
{ CRC_K_HOME , Key_Home , 0 }, // 0x700B
{ CRC_ADDRESSBOOKSELECT , KK_AddressbookSelect , KT_B }, // 0x70D1
{ CRC_EDITGOPGUP , KK_EditGoPgUp , KT_E }, // 0x7163
{ CRC_READMSGLINEUP , KK_ReadMsgLineUp , KT_R }, // 0x7238
{ CRC_EDITHEADER , KK_EditHeader , KT_E }, // 0x726F
@ -567,6 +626,7 @@ tglobalkey globalkeys[] = {
{ CRC_READGOTOMSGNO , KK_ReadGotoMsgno , KT_R }, // 0x73F7
{ CRC_READCHANGEUSERNAME , KK_ReadChangeUsername , KT_R }, // 0x7438
{ CRC_READSTEALTAGLINE , KK_ReadStealTagline , KT_R }, // 0x7480
{ CRC_HEADERADDRESSBOOK , KK_HeaderAddressbook , KT_H }, // 0x76FC
{ CRC_EDITUNDEFINE , KK_EditUndefine , KT_E }, // 0x7873
{ CRC_LISTGOTOFIRST , KK_ListGotoFirst , KT_M }, // 0x7925
{ CRC_K_CEND , Key_C_End , 0 }, // 0x7B95
@ -583,13 +643,16 @@ tglobalkey globalkeys[] = {
{ CRC_EDITMACRO , KK_EditMacro , KT_E }, // 0x85CD
{ CRC_K_ENTER , Key_Ent , 0 }, // 0x87BD
{ CRC_EDITGOTOPLINE , KK_EditGoTopLine , KT_E }, // 0x87C2
{ CRC_HEADERTOGGLEARCSENT , KK_HeaderToggleArcsent , KT_H }, // 0x88A7
{ CRC_EDITBLOCKPGDN , KK_EditBlockPgDn , KT_E }, // 0x895B
{ CRC_EDITASKEXIT , KK_EditAskExit , KT_E }, // 0x89AF
{ CRC_HEADERTOGGLEHOLD , KK_HeaderToggleHold , KT_H }, // 0x8A5F
{ CRC_EDITBLOCKHOME , KK_EditBlockHome , KT_E }, // 0x8B82
{ CRC_READDELETEMSG , KK_ReadDeleteMsg , KT_R }, // 0x8BCE
{ CRC_EDITTAB , KK_EditTab , KT_E }, // 0x8C26
{ CRC_K_KEY5 , Key_5 , 0 }, // 0x9062
{ CRC_EDITPASTE , KK_EditPaste , KT_E }, // 0x90C4
{ CRC_HEADERTOGGLEAUDIT , KK_HeaderToggleAudit , KT_H }, // 0x91B7
{ CRC_EDITGOBOTLINE , KK_EditGoBotLine , KT_E }, // 0x92DD
{ CRC_EXTERNUTIL18 , KK_ExternUtil18 , KT_R }, // 0x94B0
{ CRC_EXTERNUTIL19 , KK_ExternUtil19 , KT_R }, // 0x94B1
@ -611,6 +674,7 @@ tglobalkey globalkeys[] = {
{ CRC_EXTERNUTIL05 , KK_ExternUtil05 , KT_R }, // 0x95BD
{ CRC_EXTERNUTIL06 , KK_ExternUtil06 , KT_R }, // 0x95BE
{ CRC_EXTERNUTIL07 , KK_ExternUtil07 , KT_R }, // 0x95BF
{ CRC_HEADERTOGGLEXMAIL , KK_HeaderToggleXmail , KT_H }, // 0x9622
{ CRC_AREABOARDNOS , KK_AreaBoardnos , KT_A }, // 0x96EA
{ CRC_EXTERNUTIL20 , KK_ExternUtil20 , KT_R }, // 0x97B8
{ CRC_EXTERNUTIL21 , KK_ExternUtil21 , KT_R }, // 0x97B9
@ -636,12 +700,14 @@ tglobalkey globalkeys[] = {
{ CRC_FILEMENU , KK_FileMenu , KT_F }, // 0xA4B2
{ CRC_READASKEXIT , KK_ReadAskExit , KT_R }, // 0xA500
{ CRC_AREAJUMPNEXTMATCH , KK_AreaJumpNextMatch , KT_A }, // 0xA556
{ CRC_HEADERTOGGLETRUNC , KK_HeaderToggleTrunc , KT_H }, // 0xA5B4
{ CRC_READTOGGLEBOOKMARK , KK_ReadToggleBookMark , KT_R }, // 0xA7E2
{ CRC_EDITSOUNDKILL , KK_EditSoundkill , KT_E }, // 0xA9A7
{ CRC_AREAQUITNOW , KK_AreaQuitNow , KT_A }, // 0xAAC4
{ CRC_READNEWAREA , KK_ReadNewArea , KT_R }, // 0xAB5E
{ CRC_AREAMENU , KK_AreaMenu , KT_A }, // 0xABE1
{ CRC_READQUITNOW , KK_ReadQuitNow , KT_R }, // 0xAC15
{ CRC_HEADERTOGGLEUPDREQ , KK_HeaderToggleUpdreq , KT_H }, // 0xAC35
{ CRC_EDITDELLINE , KK_EditDelLine , KT_E }, // 0xACCF
#if not defined(__UNIX__) or defined(__USE_NCURSES__)
{ CRC_K_SPGDN , Key_S_PgDn , 0 }, // 0xAD44
@ -661,13 +727,18 @@ tglobalkey globalkeys[] = {
{ CRC_AREADROPMSGMARKS , KK_AreaDropMsgMarks , KT_A }, // 0xB90C
{ CRC_K_CINS , Key_C_Ins , 0 }, // 0xBA0E
{ CRC_READGOTONEXTUNREAD , KK_ReadGotoNextUnread , KT_R }, // 0xBA34
{ CRC_READADDRESSBOOK , KK_ReadAddressbook , KT_R }, // 0xBAC1
#if not defined(__UNIX__) or defined(__USE_NCURSES__)
{ CRC_K_SPGUP , Key_S_PgUp , 0 }, // 0xBC5A
#endif
{ CRC_FILEABORT , KK_FileAbort , KT_F }, // 0xBCED
{ CRC_READCHANGETAGLINE , KK_ReadChangeTagline , KT_R }, // 0xBDD2
{ CRC_READQUOTEMSG , KK_ReadQuoteMsg , KT_R }, // 0xBE00
{ CRC_HEADERCLEARATTRIB , KK_HeaderClearAttrib , KT_H }, // 0xBED5
{ CRC_READCOPYMOVEFORWARD , KK_ReadCopyMoveForward , KT_R }, // 0xBFAF
{ CRC_HEADERTOGGLEKILL , KK_HeaderToggleKill , KT_H }, // 0xBFC2
{ CRC_HEADERTOGGLETRANSIT , KK_HeaderToggleTransit , KT_H }, // 0xC112
{ CRC_HEADERTOGGLECFMRECREQ , KK_HeaderToggleCfmrecreq, KT_H }, // 0xC12D
{ CRC_READTOGGLEROT13 , KK_ReadToggleROT13 , KT_R }, // 0xC157
{ CRC_EDITTOGGLECASE , KK_EditToggleCase , KT_E }, // 0xC282
{ CRC_FILEGOTOLAST , KK_FileGotoLast , KT_F }, // 0xC40A
@ -680,12 +751,16 @@ tglobalkey globalkeys[] = {
#if not defined(__UNIX__) or defined(__USE_NCURSES__)
{ CRC_K_SLEFT , Key_S_Lft , 0 }, // 0xC902
#endif
{ CRC_HEADERTOGGLEORPHAN , KK_HeaderToggleOrphan , KT_H }, // 0xC98A
{ CRC_HEADERTOGGLEFILE , KK_HeaderToggleFile , KT_H }, // 0xC997
{ CRC_NODEGOTOLAST , KK_NodeGotoLast , KT_N }, // 0xCA13
{ CRC_FILEGOTOFIRST , KK_FileGotoFirst , KT_F }, // 0xCAD5
{ CRC_HEADERTOGGLEDELSENT , KK_HeaderToggleDelsent , KT_H }, // 0xCD4B
{ CRC_LISTTOGGLEBOOKMARK , KK_ListToggleBookMark , KT_M }, // 0xCFA0
{ CRC_READTOGGLEMARKREAD , KK_ReadToggleMarkRead , KT_R }, // 0xCFAE
{ CRC_LISTQUITNOW , KK_ListQuitNow , KT_M }, // 0xD037
{ CRC_FILEMARKALL , KK_FileMarkAll , KT_F }, // 0xD115
{ CRC_HEADERTOGGLEDIRECT , KK_HeaderToggleDirect , KT_H }, // 0xD1D2
{ CRC_AREAWRITEGOLDLAST , KK_AreaWriteGoldlast , KT_A }, // 0xD353
{ CRC_LISTTOGGLEMARK , KK_ListToggleMark , KT_M }, // 0xD389
{ CRC_EDITTOUPPER , KK_EditToUpper , KT_E }, // 0xD3DD
@ -734,10 +809,12 @@ tglobalkey globalkeys[] = {
{ CRC_K_SDOWN , Key_S_Dwn , 0 }, // 0xF0FB
#endif
{ CRC_READCHANGEXLATIMPORT , KK_ReadChangeXlatImport , KT_R }, // 0xF169
{ CRC_HEADERTOGGLERESERVED , KK_HeaderToggleReserved , KT_H }, // 0xF297
{ CRC_READTOGGLESTYLES , KK_ReadToggleStyles , KT_R }, // 0xF47E
{ CRC_EDITBLOCKEND , KK_EditBlockEnd , KT_E }, // 0xF55B
{ CRC_EDITTABREVERSE , KK_EditTabReverse , KT_E }, // 0xF5B6
{ CRC_READUSERBASE , KK_ReadUserbase , KT_R }, // 0xF736
{ CRC_HEADERTOGGLEPVT , KK_HeaderTogglePvt , KT_H }, // 0xF614
{ CRC_HEADERTOGGLESENT , KK_HeaderToggleSent , KT_H }, // 0xF68C
{ CRC_K_RIGHT , Key_Rgt , 0 }, // 0xF78D
{ CRC_EDITIMPORTQUOTEBUF , KK_EditImportQuotebuf , KT_E }, // 0xF797
{ CRC_READMACRO , KK_ReadMacro , KT_R }, // 0xF7D8
@ -759,6 +836,7 @@ tglobalkey globalkeys[] = {
{ CRC_READCHANGEORIGIN , KK_ReadChangeOrigin , KT_R }, // 0xFD2C
{ CRC_FILEDOSSHELL , KK_FileDosShell , KT_F }, // 0xFE9D
{ CRC_EDITLOOKUPDEST , KK_EditLookupDest , KT_E }, // 0xFEC4
{ CRC_ADDRESSBOOKPACK , KK_AddressbookPack , KT_B }, // 0xFF55
{ CRC_AREAMACRO , KK_AreaMacro , KT_A }, // 0xFFA7
};
@ -1032,6 +1110,8 @@ int ReadKeysCfg(int force) {
case KT_M: ListKeys++; if(ListKeys == 1) ListKey = ck; break;
case KT_N: NodeKeys++; if(NodeKeys == 1) NodeKey = ck; break;
case KT_R: ReadKeys++; if(ReadKeys == 1) ReadKey = ck; break;
case KT_B: AddressbookKeys++; if(AddressbookKeys == 1) AddressbookKey = ck; break;
case KT_H: HeaderKeys++; if(HeaderKeys == 1) HeaderKey = ck; break;
}
ck++;
}

View File

@ -204,6 +204,7 @@ const word CRC_NODEQUITNOW = 0xE780;
const word CRC_NODESELECT = 0x6A64;
const word CRC_NODEUNDEFINE = 0x5E32;
const word CRC_READADDRESSBOOK = 0xBAC1;
const word CRC_READADDRESSBOOKADD = 0x00FA;
const word CRC_READASKEXIT = 0xA500;
const word CRC_READCHANGEAKA = 0x2015;
@ -287,10 +288,48 @@ const word CRC_READTOGGLETWITS = 0x5FD1;
const word CRC_READTOUCHNETSCAN = 0x4BF3;
const word CRC_READTOUCHSEMAPHORE = 0x6B1D;
const word CRC_READUNDEFINE = 0x329D;
const word CRC_READUSERBASE = 0xF736;
const word CRC_READUUDECODE = 0x4F0B;
const word CRC_READWRITEMSG = 0x73AC;
const word CRC_ADDRESSBOOKQUIT = 0x47C7;
const word CRC_ADDRESSBOOKADD = 0x2C5C;
const word CRC_ADDRESSBOOKSELECT = 0x70D1;
const word CRC_ADDRESSBOOKDELETE = 0x2D4A;
const word CRC_ADDRESSBOOKPACK = 0xFF55;
const word CRC_HEADERADDRESSBOOK = 0x76FC;
const word CRC_HEADERLOOKUP = 0x64F2;
const word CRC_HEADERTOGGLEATTRWIN = 0x6F95;
const word CRC_HEADERTOGGLERESERVED = 0xF297;
const word CRC_HEADERTOGGLEGROUPMSG = 0x0C51;
const word CRC_HEADERTOGGLESCANNED = 0x0459;
const word CRC_HEADERTOGGLEFILE = 0xC997;
const word CRC_HEADERTOGGLEARCSENT = 0x88A7;
const word CRC_HEADERTOGGLECRASH = 0x2CF9;
const word CRC_HEADERTOGGLEDIRECT = 0xD1D2;
const word CRC_HEADERTOGGLEDELSENT = 0xCD4B;
const word CRC_HEADERTOGGLEFREQ = 0x63D9;
const word CRC_HEADERTOGGLEZONEGATE = 0x140B;
const word CRC_HEADERTOGGLEHOLD = 0x8A5F;
const word CRC_HEADERTOGGLEIMM = 0x6E15;
const word CRC_HEADERTOGGLETRANSIT = 0xC112;
const word CRC_HEADERTOGGLEKILL = 0xBFC2;
const word CRC_HEADERTOGGLELOCKED = 0x312D;
const word CRC_HEADERTOGGLERETRECREQ= 0x2CF1;
const word CRC_HEADERTOGGLERETREC = 0x56EA;
const word CRC_HEADERTOGGLEORPHAN = 0xC98A;
const word CRC_HEADERTOGGLEPVT = 0xF614;
const word CRC_HEADERTOGGLEAUDIT = 0x91B7;
const word CRC_HEADERTOGGLERECEIVED = 0x36B9;
const word CRC_HEADERTOGGLESENT = 0xF68C;
const word CRC_HEADERTOGGLETRUNC = 0xA5B4;
const word CRC_HEADERTOGGLEUPDREQ = 0xAC35;
const word CRC_HEADERTOGGLEHUBHOST = 0x2505;
const word CRC_HEADERTOGGLELOCAL = 0x47A1;
const word CRC_HEADERTOGGLEXMAIL = 0x9622;
const word CRC_HEADERTOGGLECFMRECREQ= 0xC12D;
const word CRC_HEADERCLEARATTRIB = 0xBED5;
const word CRC_K_F1 = 0x4631;
const word CRC_K_F2 = 0x4632;
const word CRC_K_F3 = 0x4633;

View File

@ -551,6 +551,7 @@ struct MLst {
time_t arrived;
time_t received;
char goldmark;
bool initialized;
};

View File

@ -836,8 +836,10 @@ Line* IEclass::wrapit(Line** __currline, uint* __curr_col, uint* __curr_row, boo
displine(_thisline, _thisrow);
}
_thislen = _thisline->txt.length();
// If we are on the cursor line, check if the cursor char was wrapped
if(_thisrow == _cursrow and _thisline->txt.length() <= _curscol) {
if((_thisrow == _cursrow) and (_thislen <= _curscol) and not ((_thislen == _curscol) and (_thisline->txt[_curscol] != ' '))) {
_curscol = _quotelen + ((_curscol > _wrappos) ? _curscol-_wrappos : 0);
_cursrow++;
UndoItem* i = Undo->last_item;
@ -1018,14 +1020,9 @@ void IEclass::DelChar() {
GetQuotestr(_nextline->txt.c_str(), _dummybuf, &_quotelen);
}
// Copy the next line's text to this line
// Skip past the next line's quote string and blanks, if any
const char* _nextptr = _nextline->txt.c_str()+_quotelen;
if(not ((_nextline->type & GLINE_QUOT) and (col == 0))) {
while(*_nextptr == ' ')
_nextptr++;
}
_thisline->txt += _nextptr;
// Copy the next line's text to this line without quote string
const char *_nexttext = _nextline->txt.c_str()+_quotelen;
_thisline->txt += _nexttext + strspn(_nexttext, " ");
Undo->PushItem(EDIT_UNDO_CUT_TEXT|batch_mode, _thisline, col);
@ -1054,10 +1051,12 @@ void IEclass::DelChar() {
// Make sure the line type still is correct
setlinetype(_thisline);
uint _thisrow = row;
// Rewrap this line
wrapdel(&currline, &col, &row, false);
refresh(currline, row);
refresh(_thisline, _thisrow);
GFTRK(NULL);
}
@ -1453,7 +1452,7 @@ void IEclass::DeleteEOL() {
GFTRK("EditDeleteEOL");
bool _has_linefeed = currline->txt.find('\n') != currline->txt.npos ? true : false;
bool _has_linefeed = (currline->txt.find('\n') != currline->txt.npos) ? true : false;
Undo->PushItem(EDIT_UNDO_DEL_TEXT, currline);

View File

@ -345,7 +345,6 @@ void FileSelect(GMsg* msg, char* title, FileSpec* fspec) {
if((strpbrk(fbuf, "*?")) or done) {
winop = true;
ChgAttrs(NO, msg);
vcurhide();
wopen_(6,0, MAX_POS+3, MAXCOL, W_BMENU, C_MENUB, C_MENUW, C_MENUPB);
@ -419,7 +418,6 @@ void FileSelect(GMsg* msg, char* title, FileSpec* fspec) {
if(winop) {
wclose();
ChgAttrs(YES, msg);
vcurshow();
}

View File

@ -56,7 +56,9 @@ int ListKeys = 0;
int NodeKeys = 0;
int EditKeys = 0;
int FileKeys = 0;
list<CmdKey>::iterator AreaKey, ReadKey, ListKey, NodeKey, EditKey, FileKey;
int AddressbookKeys = 0;
int HeaderKeys = 0;
list<CmdKey>::iterator AreaKey, ReadKey, ListKey, NodeKey, EditKey, FileKey, AddressbookKey, HeaderKey;
int inforow = 18;

View File

@ -100,8 +100,8 @@ extern char m_title[];
extern int m_titlepos;
extern int m_titleattr;
extern int AreaKeys, ReadKeys, ListKeys, NodeKeys, EditKeys, FileKeys;
extern list<CmdKey>::iterator AreaKey, ReadKey, ListKey, NodeKey, EditKey, FileKey;
extern int AreaKeys, ReadKeys, ListKeys, NodeKeys, EditKeys, FileKeys, AddressbookKeys, HeaderKeys;
extern list<CmdKey>::iterator AreaKey, ReadKey, ListKey, NodeKey, EditKey, FileKey, AddressbookKey, HeaderKey;
extern int inforow;

View File

@ -58,18 +58,29 @@ public:
bool GMsgHeaderEdit::handle_other_keys(gkey& key) {
gkey kk;
if(key < KK_Commands) {
key = key_tolower(key);
kk = SearchKey(key, HeaderKey, HeaderKeys);
if(kk)
key = kk;
}
if(ProcessAttrs(key) == true)
return true;
switch(key) {
case Key_F10:
case KK_HeaderAddressbook:
vcurhide();
ChgAttrs(NO, msg);
lookup_addressbook(msg, get_field(id_to_name)->buf, get_field(id_to_addr)->buf, true);
ChgAttrs(YES, msg);
get_field(id_to_name)->draw();
get_field(id_to_addr)->draw();
current->update();
vcurshow();
break;
case Key_S_F10:
return true;
case KK_HeaderLookup:
{
Addr addr,addr2;
INam buf;
@ -110,6 +121,7 @@ bool GMsgHeaderEdit::handle_other_keys(gkey& key) {
}
}
return true;
default:
if(PlayMacro(key, 0))
return true;
@ -414,7 +426,7 @@ int EditHeaderinfo(int mode, GMsgHeaderView &view) {
break;
}
ChgAttrs(true, msg);
ChgAttrs(YES, msg);
whelpdef(CFG->helpged, Key_F1, C_HELPB, C_HELPW, C_HELPQ, C_HELPS, NULL);
vcurshow();
@ -430,7 +442,7 @@ int EditHeaderinfo(int mode, GMsgHeaderView &view) {
hedit.run(H_Header);
vcurhide();
ChgAttrs(false, msg);
ChgAttrs(NO, msg);
if(not hedit.dropped and not gkbd.quitall) {

View File

@ -304,19 +304,58 @@ const gkey KK_ReadToggleStyles = 0xFF9B;
const gkey KK_ReadToggleTwits = 0xFF9C;
const gkey KK_ReadTouchNetscan = 0xFF9D;
const gkey KK_ReadTouchSemaphore = 0xFF9E;
const gkey KK_ReadUserbase = 0xFF9F;
const gkey KK_ReadAddressbook = 0xFF9F;
const gkey KK_ReadUUDecode = 0xFFA0;
const gkey KK_ReadWriteMsg = 0xFFA1;
const gkey KK_ReadDirQuoteMsg = 0xFFA2;
const gkey KK_ReadMoveDirQuoteMsg = 0xFFA3;
const gkey KK_AreaUndefine = 0xFFB0;
const gkey KK_EditUndefine = 0xFFB1;
const gkey KK_FileUndefine = 0xFFB2;
const gkey KK_ListUndefine = 0xFFB3;
const gkey KK_NodeUndefine = 0xFFB4;
const gkey KK_ReadUndefine = 0xFFB5;
const gkey KK_ZzzzLast = 0xFFB6;
const gkey KK_AddressbookQuit = 0xFFB0;
const gkey KK_AddressbookAdd = 0xFFB1;
const gkey KK_AddressbookSelect = 0xFFB2;
const gkey KK_AddressbookDelete = 0xFFB3;
const gkey KK_AddressbookPack = 0xFFB4;
const gkey KK_HeaderAddressbook = 0xFFC0;
const gkey KK_HeaderLookup = 0xFFC1;
const gkey KK_HeaderToggleAttrWin = 0xFFC2;
const gkey KK_HeaderClearAttrib = 0xFFC3;
const gkey KK_HeaderToggleReserved = 0xFFC4;
const gkey KK_HeaderToggleGroupmsg = 0xFFC5;
const gkey KK_HeaderToggleScanned = 0xFFC6;
const gkey KK_HeaderToggleFile = 0xFFC7;
const gkey KK_HeaderToggleArcsent = 0xFFC8;
const gkey KK_HeaderToggleCrash = 0xFFC9;
const gkey KK_HeaderToggleDirect = 0xFFCA;
const gkey KK_HeaderToggleDelsent = 0xFFCB;
const gkey KK_HeaderToggleFreq = 0xFFCC;
const gkey KK_HeaderToggleZonegate = 0xFFCD;
const gkey KK_HeaderToggleHold = 0xFFCE;
const gkey KK_HeaderToggleImm = 0xFFCF;
const gkey KK_HeaderToggleTransit = 0xFFD0;
const gkey KK_HeaderToggleKill = 0xFFD1;
const gkey KK_HeaderToggleLocked = 0xFFD2;
const gkey KK_HeaderToggleRetrecreq= 0xFFD3;
const gkey KK_HeaderToggleRetrec = 0xFFD4;
const gkey KK_HeaderToggleOrphan = 0xFFD5;
const gkey KK_HeaderTogglePvt = 0xFFD6;
const gkey KK_HeaderToggleAudit = 0xFFD7;
const gkey KK_HeaderToggleReceived = 0xFFD8;
const gkey KK_HeaderToggleSent = 0xFFD9;
const gkey KK_HeaderToggleTrunc = 0xFFDA;
const gkey KK_HeaderToggleUpdreq = 0xFFDB;
const gkey KK_HeaderToggleHubhost = 0xFFDC;
const gkey KK_HeaderToggleLocal = 0xFFDD;
const gkey KK_HeaderToggleXmail = 0xFFDE;
const gkey KK_HeaderToggleCfmrecreq= 0xFFDF;
const gkey KK_AreaUndefine = 0xFFE0;
const gkey KK_EditUndefine = 0xFFE1;
const gkey KK_FileUndefine = 0xFFE2;
const gkey KK_ListUndefine = 0xFFE3;
const gkey KK_NodeUndefine = 0xFFE4;
const gkey KK_ReadUndefine = 0xFFE5;
const gkey KK_ZzzzLast = 0xFFE6;
// ------------------------------------------------------------------
@ -329,6 +368,8 @@ const int KT_M = 8; // Msg lister
const int KT_N = 16; // Node browser
const int KT_R = 32; // Reader (+ external utils)
const int KT_F = 64; // File browser
const int KT_B = 128; // Addressbook browser
const int KT_H = 256; // Header editor
// ------------------------------------------------------------------

View File

@ -433,51 +433,145 @@ static void toggle_dispattrwindow() {
// ------------------------------------------------------------------
void ChgAttrs(int mode, GMsg* __msg) {
bool ProcessAttrs(gkey &key) {
static KBnd* k1;
switch(key) {
case KK_HeaderToggleScanned:
toggle_scanned();
return true;
case KK_HeaderToggleGroupmsg:
toggle_groupmsg();
return true;
case KK_HeaderToggleZonegate:
toggle_zonegate();
return true;
case KK_HeaderToggleHubhost:
toggle_hubhost();
return true;
case KK_HeaderToggleRetrecreq:
toggle_retrecreq();
return true;
case KK_HeaderToggleCrash:
toggle_crash();
return true;
case KK_HeaderToggleLocked:
toggle_locked();
return true;
case KK_HeaderToggleReceived:
toggle_received();
return true;
case KK_HeaderToggleLocal:
toggle_local();
return true;
case KK_HeaderToggleRetrec:
toggle_retrec();
return true;
case KK_HeaderToggleFreq:
toggle_freq();
return true;
case KK_HeaderToggleImm:
toggle_imm();
return true;
case KK_HeaderToggleAttrWin:
toggle_dispattrwindow();
return true;
case KK_HeaderToggleArcsent:
toggle_arcsent();
return true;
case KK_HeaderToggleHold:
toggle_hold();
return true;
case KK_HeaderToggleAudit:
toggle_audit();
return true;
case KK_HeaderToggleXmail:
toggle_xmail();
return true;
case KK_HeaderToggleTrunc:
toggle_trunc();
return true;
case KK_HeaderToggleUpdreq:
toggle_updreq();
return true;
case KK_HeaderClearAttrib:
clear_attrib();
return true;
case KK_HeaderToggleKill:
toggle_kill();
return true;
case KK_HeaderToggleTransit:
toggle_transit();
return true;
case KK_HeaderToggleCfmrecreq:
toggle_cfmrecreq();
return true;
case KK_HeaderToggleOrphan:
toggle_orphan();
return true;
case KK_HeaderToggleFile:
toggle_file();
return true;
case KK_HeaderToggleDelsent:
toggle_delsent();
return true;
case KK_HeaderToggleDirect:
toggle_direct();
return true;
case KK_HeaderToggleReserved:
toggle_reserved();
return true;
case KK_HeaderTogglePvt:
toggle_pvt();
return true;
case KK_HeaderToggleSent:
toggle_sent();
return true;
}
return false;
}
// ------------------------------------------------------------------
void ChgAttrs(int mode, GMsg* __msg) {
if(mode) {
MenuMsgPtr = __msg;
if(EDIT->HeaderAttrs() or (mode == ALWAYS))
DispAttrWindow(true);
k1 = chgonkey(NULL);
setonkey(Key_A_F1, toggle_dispattrwindow, 0);
setonkey(Key_A_1, toggle_reserved , 0);
setonkey(Key_A_2, toggle_groupmsg , 0);
setonkey(Key_A_4, toggle_scanned , 0);
setonkey(Key_A_A, toggle_file , 0);
setonkey(Key_A_B, toggle_arcsent , 0);
setonkey(Key_A_C, toggle_crash , 0);
setonkey(Key_A_D, toggle_direct , 0);
setonkey(Key_A_E, toggle_delsent , 0);
setonkey(Key_A_F, toggle_freq , 0);
setonkey(Key_A_G, toggle_zonegate , 0);
setonkey(Key_A_H, toggle_hold , 0);
setonkey(Key_A_I, toggle_imm , 0);
setonkey(Key_A_J, toggle_transit , 0);
setonkey(Key_A_K, toggle_kill , 0);
setonkey(Key_A_L, toggle_locked , 0);
setonkey(Key_A_M, toggle_retrecreq , 0);
setonkey(Key_A_N, toggle_retrec , 0);
setonkey(Key_A_O, toggle_orphan , 0);
setonkey(Key_A_P, toggle_pvt , 0);
setonkey(Key_A_Q, toggle_audit , 0);
setonkey(Key_A_R, toggle_received , 0);
setonkey(Key_A_S, toggle_sent , 0);
setonkey(Key_A_T, toggle_trunc , 0);
setonkey(Key_A_U, toggle_updreq , 0);
setonkey(Key_A_V, toggle_hubhost , 0);
setonkey(Key_A_W, toggle_local , 0);
setonkey(Key_A_X, toggle_xmail , 0);
setonkey(Key_A_Y, toggle_cfmrecreq , 0);
setonkey(Key_A_Z, clear_attrib , 0);
}
else {
DispAttrWindow(false);
freonkey();
chgonkey(k1);
}
}
@ -490,9 +584,23 @@ void AskAttributes(GMsg* __msg) {
update_statusline(LNG->ChangeAttrs);
whelpdef(CFG->helpged, Key_F1, C_HELPB, C_HELPW, C_HELPQ, C_HELPS, NULL);
whelppcat(H_Attributes);
getxch();
gkey key;
do {
gkey kk;
key = getxch();
if(key < KK_Commands) {
key = key_tolower(key);
kk = SearchKey(key, HeaderKey, HeaderKeys);
if(kk)
key = kk;
}
}
while(ProcessAttrs(key) == true);
whelpop();
ChgAttrs(false, __msg);
ChgAttrs(NO, __msg);
}

File diff suppressed because it is too large Load Diff

View File

@ -742,9 +742,6 @@ static int browse_nodelist(GMsg* msg, char* title, int topline) {
NodelistBrowser* browser = new NodelistBrowser;
throw_new(browser);
if(topline == 0)
ChgAttrs(NO, msg); // Close the attributes menu
browser->btype = W_BMENU;
browser->battr = C_MENUB;
browser->wattr = C_MENUW;
@ -770,9 +767,6 @@ static int browse_nodelist(GMsg* msg, char* title, int topline) {
delete browser;
if(topline == 0)
ChgAttrs(YES, msg); // Turn on the attributes menu again
return (not aborted);
}

View File

@ -183,6 +183,7 @@ void InvalidateControlInfo(GMsg *msg);
void DispHeadAttrs(GMsg* msg);
void AskAttributes(GMsg* msg);
bool ProcessAttrs(gkey &key);
void ChgAttrs(int mode, GMsg* msg);
int ChangeAka();
int ChangeCharsIn();
@ -197,7 +198,6 @@ int ChangeXlatImport();
// ------------------------------------------------------------------
// GEMLST prototypes
uint MsgBrowser(GMsg* msg);
void MsgThreadlist();

View File

@ -713,7 +713,7 @@ void Reader() {
}
break;
case KK_ReadUserbase:
case KK_ReadAddressbook:
edit_addressbook(msg);
break;

View File

@ -606,11 +606,20 @@ void guserbase::update_screen(bool force) {
bool guserbase::handle_key() {
gkey kk;
if(key < KK_Commands) {
key = key_tolower(key);
kk = SearchKey(key, AddressbookKey, AddressbookKeys);
if(kk)
key = kk;
}
switch(key) {
case Key_Esc:
case KK_AddressbookQuit:
aborted = true;
return false;
case Key_Ins: // Add new entry
case KK_AddressbookAdd:
{
clear_entry(&entry);
lock();
@ -629,7 +638,7 @@ bool guserbase::handle_key() {
center(CFG->displistcursor);
}
break;
case Key_Ent: // Select/Edit entry
case KK_AddressbookSelect:
if(not select_list) {
if(not entry.is_deleted) {
lock();
@ -645,7 +654,7 @@ bool guserbase::handle_key() {
aborted = false;
return false;
}
case Key_Del: // Soft-Delete Entry
case KK_AddressbookDelete:
lock();
refresh_maximum_index();
read_entry(index);
@ -654,7 +663,7 @@ bool guserbase::handle_key() {
unlock();
update_screen();
break;
case Key_A_P: // Pack Addressbook
case KK_AddressbookPack:
pack_addressbook();
index = position = 0;
update_screen();

View File

@ -256,7 +256,7 @@ void w_progress(int mode, int attr, long pos, long size, const char* title) {
goto oops; // Oops, someone forgot to open the window..
if((pos*58/size) != (prev_pos*58/size)) {
force_update:
wpropbar(PROP_BARGRAPH, 1, 0, -59, 1, attr, pos, size);
wpropbar(1, 0, 59, attr, pos, size);
}
prev_pos = pos;
break;

View File

@ -1594,8 +1594,9 @@ int setonkey(gkey keycode, VfvCP func, gkey pass) {
gkey key_tolower(gkey __keycode) {
if(isupper(KCodAsc(__keycode)))
return (gkey)(__keycode + 'a' - 'A');
byte &ascii = KCodAsc(__keycode);
if(isupper(ascii))
ascii = tolower(ascii);
return __keycode;
}

View File

@ -35,13 +35,6 @@
#include <gdefs.h>
#if defined(__USE_NCURSES__)
#include <gcurses.h>
#else
#define ACS_BOARD '°'
#ifndef __linux__
#define ACS_BLOCK 'Û'
#else
#define ACS_BLOCK ' '
#endif
#endif
#if defined(__WIN32__)
#include <windows.h>
@ -196,7 +189,7 @@ struct __int10_ah1b_statebuf {
#endif
#define INTENSE 8
#if defined(__UNIX__) and not defined(__USE_NCURSES__)
#if defined(__UNIX__) && !defined(__USE_NCURSES__)
#define ACSET BLINK
#else
#define ACSET 0
@ -345,15 +338,11 @@ public:
extern GVid *gvid;
#if defined(__UNIX__) and not defined(__USE_NCURSES__)
extern bool gvid_xterm;
#endif
// ------------------------------------------------------------------
// Box characters table
#if not defined(__USE_NCURSES__)
#if !defined(__USE_NCURSES__)
extern char* __box_table[];
#define _box_table(i,j) (__box_table[i][j])

View File

@ -177,7 +177,6 @@ inline gdma gdmaptr(int col, int row) {
// ------------------------------------------------------------------
extern int gvid_stdout;
extern bool gvid_xterm;
extern const char* gvid_acs_enable;
extern const char* gvid_acs_disable;
int gvid_last_attr = 0;

View File

@ -92,7 +92,6 @@ GVid *gvid;
#elif defined(__UNIX__)
int gvid_stdout = -1;
bool gvid_xterm = false;
const char* gvid_acs_enable;
const char* gvid_acs_disable;
@ -401,26 +400,31 @@ int GVid::detectadapter() {
adapter = V_VGA;
#elif defined(__UNIX__)
#elif defined(__linux__)
for(int n=0; n<8; n++)
__box_table[n] = __box_table[8];
gvid_acs_enable = "\016";
gvid_acs_disable = "\017";
gvid_stdout = fileno(stdout);
adapter = V_VGA;
#elif defined(__UNIX__) // code below should not be normally used...
bool gvid_xterm = false;
const char* term = getenv("TERM");
#ifndef __linux__
if(term and strneql(term, "xterm", 5)) {
#endif
gvid_xterm = true;
for(int n=0; n<8; n++)
__box_table[n] = __box_table[8];
#ifndef __linux__
}
#endif
#ifndef __linux__
gvid_acs_enable = gvid_xterm ? "\033)0\033(B\016" : "\033[11m";
gvid_acs_disable = gvid_xterm ? "\033(B\033)B\017" : "\033[10m";
#else
gvid_acs_enable = gvid_xterm ? "\016" : "";
gvid_acs_disable = gvid_xterm ? "\017" : "";
#endif
gvid_stdout = fileno(stdout);

View File

@ -380,10 +380,11 @@ int wprintvs (int wrow, int wcol, int attr, const vchar* str);
int wprintns (int wrow, int wcol, int attr, const char* str, uint len, vchar fill=' ', int fill_attr=-1);
int wprintsf (int wrow, int wcol, int attr, const char* format, const char* str);
int wprintws (int wrow, int wcol, vatch* buf, uint len);
void wpropbar (int mode, int xx, int yy, long len, long barlen, int attr, long pos, long size);
void wpropbar (int xx, int yy, long len, int attr, long pos, long size);
int wputc (vchar ch);
int wputs (const char* str);
int wputx (int wrow, int wcol, int attr, vchar chr, uint len);
int wputy (int wrow, int wcol, int attr, vchar chr, uint len);
int wreadcur (int* wrow, int* wcol);
int wscroll (int count, int direc);
void wscrollbar (int orientation, uint total, uint maxpos, uint pos, int sadd=0);

View File

@ -309,14 +309,14 @@ int wshadow(int attr) {
// read current screen characters/attributes and save in shadow's buffer
vatch tmp[2];
*q = vgetw(crow, ccol);
#ifndef __linux__
#if defined(__USE_NCURSES__) || !defined(__UNIX__)
tmp[0] = vsattr(*q, attr);
#else
tmp[0] = vsattr(' ', attr);
#endif
q++;
*q = vgetw(crow, ccol + 1);
#ifndef __linux__
#if defined(__USE_NCURSES__) || !defined(__UNIX__)
tmp[1] = vsattr(*q, attr);
#else
tmp[1] = vsattr(' ', attr);
@ -339,7 +339,7 @@ int wshadow(int attr) {
// read attribs/chars and store in buffers
*q = vgetw(crow, ccol++);
#ifndef __linux__
#if defined(__USE_NCURSES__) || !defined(__UNIX__)
*wptr++ = vsattr(*q, attr);
#else
*wptr++ = vsattr(' ', attr);
@ -918,6 +918,16 @@ int wputx(int wrow, int wcol, int attr, vchar chr, uint len) {
}
// ------------------------------------------------------------------
int wputy(int wrow, int wcol, int attr, vchar chr, uint len) {
const int &border = gwin.active->border;
vputy(gwin.active->srow+wrow+border,gwin.active->scol+wcol+border,attr,chr,len);
return gwin.werrno=W_NOERROR;
}
// ------------------------------------------------------------------
// Displays a string inside active window
@ -1882,83 +1892,32 @@ int wmessage(const char* str, int border, int leftofs, int attr) {
// ------------------------------------------------------------------
// Proportion bar
void wpropbar(int mode, int xx, int yy, long len, long barlen, int attr, long pos, long size) {
void wpropbar(int xx, int yy, long len, int attr, long pos, long size) {
// mode = PROP_PAGE or PROP_BARGRAPH.
// xx, yy = start position in window.
// len = length (in chars) of progress field.
// attr = color to use for progress field.
// pos = present position.
// size = total size of field.
#ifndef __linux__
const vchar _fld = ACS_BOARD;
const vchar _bar = ACS_BLOCK;
const vchar barchar = _box_table(gwin.active->btype, 13);
#ifdef __UNIX__ // prefferable under xterm
const vchar thumbchar = ' ';
int thumbattr = revsattr(attr);
#else
const vchar _fld = ' ';
const vchar _bar = _box_table(gwin.active->btype, 13);
const vchar thumbchar = '\xDB';
int thumbattr = attr;
#endif
const vchar _up = '\x18';
const vchar _dwn = '\x19';
int dir=0, x, y;
long first, width, length;
long thumblen = (pos*len)/size;
if(len > 0)
dir = 1; // Vertical
else
len = -len; // Horizontal
if(not barlen)
length = size-len;
else
length = size;
if((size > len) or (mode!=PROP_PAGE)) {
if(not barlen)
barlen = (len*len)/size;
if(not barlen)
barlen = 1;
width = len-barlen;
first = (pos*width)/length;
}
else {
first = 0;
barlen = len;
}
if(dir) {
if(mode==PROP_PAGE) {
if(pos > 0)
wprintc(yy,xx,revsattr(attr),_up);
else
wprintc(yy,xx,revsattr(attr),' ');
if(pos+len < size)
wprintc(yy+(int)len-1,xx,revsattr(attr),_dwn);
else
wprintc(yy+(int)len-1,xx,revsattr(attr),' ');
}
for(y=yy+(mode==PROP_PAGE); y<(yy+first); y++) {
wprintc(y,xx,attr|ACSET,mode==PROP_BARGRAPH?_bar:_fld);
}
for(; y<(yy+first+barlen); y++) {
wprintc(y,xx,attr|ACSET,_bar);
}
for(; y<(yy+len-(mode==PROP_PAGE)); y++) {
wprintc(y,xx,attr|ACSET,_fld);
}
}
else {
for(x=xx; x<(xx+first); x++) {
wprintc(yy,x,attr|ACSET,mode==PROP_BARGRAPH?_bar:_fld);
}
for(; x<(xx+first+barlen); x++) {
wprintc(yy,x,attr|ACSET,_bar);
}
for(; x<(xx+len); x++) {
wprintc(yy,x,attr|ACSET,_fld);
}
int x = xx;
if(thumblen != 0) {
wputx(yy, x, thumbattr|ACSET, thumbchar, thumblen);
x += thumblen;
}
if(thumblen != len)
wputx(yy, x, attr|ACSET, barchar, len-thumblen);
}
@ -2044,85 +2003,78 @@ int wtitle(const char* str, int tpos, int tattr) {
void wscrollbar(int orientation, uint total, uint maxpos, uint pos, int sadd) {
int attr = (gwin.active->sbattr == -1) ? gwin.active->battr : gwin.active->sbattr;
int invattr = revsattr(attr);
const vchar barchar = _box_table(gwin.active->btype, 13);
const vchar thumbchar = ACS_BLOCK;
const vchar arrowupchar = '\x18';
const vchar arrowdownchar = '\x19';
const vchar arrowleftchar = '\x1B';
const vchar arrowrightchar = '\x1A';
int attr = (gwin.active->sbattr == -1) ? gwin.active->battr : gwin.active->sbattr;
#ifdef __linux__
int thumbattr = revsattr(attr);
#ifdef __UNIX__ // prefferable under xterm
const vchar thumbchar = ' ';
int thumbattr = revsattr(attr);
#else
const vchar thumbchar = '\xDB';
int thumbattr = attr;
#endif
int srow, scol;
uint visiblelen, barlen;
uint maxthumbpos, thumbpos, thumblen;
if(maxpos == 0)
maxpos = 1;
if(orientation == W_VERT) {
srow = gwin.active->srow + gwin.active->border + sadd;
scol = gwin.active->ecol;
uint visiblelen;
if(orientation == W_VERT)
visiblelen = (gwin.active->erow - (gwin.active->srow+sadd)) + 1 - (gwin.active->border?2:0);
}
else {
srow = gwin.active->erow;
scol = gwin.active->scol + gwin.active->border + sadd;
else
visiblelen = (gwin.active->ecol - (gwin.active->scol+sadd)) + 1 - (gwin.active->border?2:0) - 2;
}
barlen = visiblelen - 2;
thumblen = (visiblelen*barlen) / total;
uint barlen = visiblelen - 2;
uint thumblen = (visiblelen*barlen) / total;
if(thumblen == 0)
thumblen = 1;
else if(thumblen > barlen)
thumblen = barlen;
maxthumbpos = barlen - thumblen;
thumbpos = (pos*maxthumbpos) / maxpos;
uint maxthumbpos = barlen - thumblen;
uint thumbpos = (pos*maxthumbpos) / maxpos;
uint thumbdiv = (pos*maxthumbpos) % maxpos;
if((thumbdiv >= (maxpos/2)) and (maxpos > 1))
thumbpos++;
if(thumbpos > maxthumbpos)
thumbpos = maxthumbpos;
barlen -= thumbpos + thumblen;
if(orientation == W_VERT) {
register int row = srow;
register int erow1 = srow + thumbpos + 1;
register int erow2 = erow1 + thumblen;
register int erow3 = srow + barlen + 1;
vputc(row++, scol, revsattr(attr), arrowupchar);
while(row < erow1)
vputc(row++, scol, attr|ACSET, barchar);
while(row < erow2)
#ifdef __linux__
vputc(row++, scol, thumbattr|ACSET, thumbchar);
#else
vputc(row++, scol, attr|ACSET, thumbchar);
#endif
while(row < erow3)
vputc(row++, scol, attr|ACSET, barchar);
vputc(row, scol, revsattr(attr), arrowdownchar);
uint scol = gwin.active->ecol - gwin.active->scol - gwin.active->border;
vputc((sadd++)+gwin.active->srow+gwin.active->border, gwin.active->ecol, invattr|ACSET, arrowupchar);
if(thumbpos != 0) {
wputy(sadd, scol, attr|ACSET, barchar, thumbpos);
sadd += thumbpos;
}
if(thumblen != 0) {
wputy(sadd, scol, thumbattr|ACSET, thumbchar, thumblen);
sadd += thumblen;
}
if(barlen != 0) {
wputy(sadd, scol, attr|ACSET, barchar, barlen);
sadd += barlen;
}
vputc(sadd+gwin.active->srow+gwin.active->border, gwin.active->ecol, invattr|ACSET, arrowdownchar);
}
else {
register int col = scol;
register int ecol1 = scol + thumbpos + 1;
register int ecol2 = ecol1 + thumblen;
register int ecol3 = scol + barlen + 1;
vputc(srow, col++, revsattr(attr), arrowleftchar);
while(col < ecol1)
vputc(srow, col++, attr|ACSET, barchar);
while(col < ecol2)
#ifdef __linux__
vputc(srow, col++, thumbattr|ACSET, thumbchar);
#else
vputc(srow, col++, attr|ACSET, thumbchar);
#endif
while(col < ecol3)
vputc(srow, col++, attr|ACSET, barchar);
vputc(srow, col, revsattr(attr), arrowrightchar);
uint srow = gwin.active->erow - gwin.active->srow - gwin.active->border;
vputc(gwin.active->erow, (sadd++)+gwin.active->scol+gwin.active->border, invattr|ACSET, arrowleftchar);
if(thumbpos != 0) {
wputx(srow, sadd, attr|ACSET, barchar, thumbpos);
sadd += thumbpos;
}
if(thumblen != 0) {
wputx(srow, sadd, thumbattr|ACSET, thumbchar, thumblen);
sadd += thumblen;
}
if(barlen != 0) {
wputx(srow, sadd, attr|ACSET, barchar, barlen);
sadd += barlen;
}
vputc(gwin.active->erow, sadd+gwin.active->scol+gwin.active->border, invattr|ACSET, arrowrightchar);
}
}

View File

@ -34,233 +34,6 @@
#include <gwinpick.h>
// ------------------------------------------------------------------
int Picker(PInf* p, Pick* pick) {
int keyok;
gkey keycode, newkey;
#ifdef GOLD_MOUSE
gmou.HideCursor();
#endif
// Open and initialize
if(pick->open)
pick->open(p);
if(p->helpcat)
whelppcat(p->helpcat);
do {
// Display selection bar
wgotoxy(p->pos, 0);
p->type = PICK_BAR;
pick->disp(p);
p->type = PICK_DISP;
// Handle keyboard and delay function
if(pick->dodelayed)
pick->dodelayed(p);
#ifdef GOLD_MOUSE
gmou.ShowCursor();
#endif
keyok = YES;
do {
newkey = keycode = getxchtick();
if(newkey == Key_Tick)
pick->dokey(p, &keycode);
} while(newkey == Key_Tick);
do {
#ifdef GOLD_MOUSE
gmou.HideCursor();
#endif
newkey = 0;
switch(keycode) {
case Key_Up:
case Key_Dwn:
case Key_PgUp:
case Key_PgDn:
case Key_Home:
case Key_End:
if(pick->precursor)
pick->precursor(p);
break;
}
switch(keycode) {
case Key_Up:
p->direction = -1;
if(p->pos) {
pick->disp(p);
p->pos--;
p->idx--;
}
else if(p->idx > p->minidx) {
pick->disp(p);
p->idx--;
pick->scroll(p, SDOWN);
}
else if(p->listwrap)
newkey = Key_End;
break;
case Key_Dwn:
p->direction = 1;
if(p->pos < p->maxpos) {
if(p->idx < p->maxidx) {
pick->disp(p);
p->pos++;
p->idx++;
}
else if(p->listwrap)
newkey = Key_Home;
}
else if(p->idx < p->maxidx) {
pick->disp(p);
p->idx++;
pick->scroll(p, SUP);
}
else if(p->listwrap)
newkey = Key_Home;
break;
case Key_PgUp:
p->direction = -1;
if(p->pos) {
pick->disp(p);
p->idx -= p->pos;
p->pos = 0;
}
else if(p->idx > p->minidx) {
p->idx -= (p->idx >= p->maxpos) ? p->maxpos : p->idx;
pick->page(p);
}
break;
case Key_PgDn:
p->direction = 1;
if(p->pos < p->maxpos) {
if(p->idx == p->maxidx) {
if(p->maxpos < p->maxidx) {
p->pos = p->maxpos;
p->idx = p->maxidx;
pick->page(p);
}
}
else if(p->idx + (p->maxpos-p->pos) >= p->maxidx) {
pick->disp(p);
p->pos += p->maxidx-p->idx;
p->idx = p->maxidx;
}
else if(p->pos != p->maxpos) {
pick->disp(p);
p->idx += p->maxpos-p->pos;
p->pos = p->maxpos;
}
}
else if(p->idx < p->maxidx) {
if(p->idx+p->maxpos > p->maxidx) {
p->pos = p->maxidx-p->idx;
p->idx = p->maxidx;
pick->page(p);
}
else {
p->idx += p->maxpos;
p->pos = p->maxpos;
pick->page(p);
}
}
break;
case Key_Home:
p->direction = -1;
if(p->idx > p->minidx) {
if((p->idx - p->pos) <= p->minidx) {
pick->disp(p);
p->idx = p->minidx;
p->pos = 0;
}
else {
p->pos = 0;
p->idx = p->minidx;
pick->page(p);
}
}
break;
case Key_End:
p->direction = 1;
if(p->idx < p->maxidx) {
if(p->idx + (p->maxpos-p->pos) >= p->maxidx) {
pick->disp(p);
p->pos += p->maxidx-p->idx;
p->idx = p->maxidx;
}
else {
p->pos = (p->maxidx-p->idx) < p->maxpos ? p->maxidx-p->idx : p->maxpos;
p->idx = p->maxidx;
pick->page(p);
}
}
else if(p->pos < p->maxpos) {
if(p->maxpos < p->maxidx) {
p->pos = p->maxpos;
p->idx = p->maxidx;
pick->page(p);
}
}
break;
case Key_C_Up:
p->direction = -1;
if(p->idx - p->pos) {
p->idx--;
pick->page(p);
}
break;
case Key_C_Dwn:
p->direction = 1;
if(p->idx < p->maxidx) {
p->idx++;
pick->page(p);
}
break;
default:
keyok = pick->dokey(p, &keycode);
newkey = keycode;
}
if(newkey)
keycode = newkey;
} while(newkey);
} while(keyok);
#ifdef GOLD_MOUSE
gmou.HideCursor();
#endif
// Close and clean
if(p->helpcat)
whelpop();
if(pick->close)
pick->close(p);
#ifdef GOLD_MOUSE
gmou.ShowCursor();
#endif
return p->retval;
}
// ------------------------------------------------------------------
gwinpick::gwinpick() {

View File

@ -46,66 +46,6 @@ const int LIST_NEARTOP = 1;
const int LIST_TOP = 2;
// ------------------------------------------------------------------
// Picker info
struct PInf {
PInf() : ypos(row), xpos(column), ylen(height), xlen(width) {}
uint& ypos;
uint& xpos;
uint& ylen;
uint& xlen;
uint row; //ypos; // Window Starting Row
uint column; //xpos; // Window Starting Column
uint height; //ylen; // Window Height
uint width; //xlen; // Window Width
int btype; // Window Border Type
int battr; // Window Border Color
int wattr; // Window Color
int tattr; // Window Title Color
int sattr; // Window Selection Bar Color
int hattr; // Window Highlight Color
int loattr; // Window LoAttr Color
int sbattr; // Window Scrollbar Color
char* title; // Window Title
int helpcat; // Window Help Category
uint maxidx; // List Entries - 1
uint minidx; // Minimum index in the list
uint maxpos; // Display Pos
uint idx; // List Index
uint pos; // Display Pos
long delay; // Ticks until delay
int type; // Bar or Disp
int retval; // Return value
bool aborted; // True if aborted
bool listwrap; // True if wrap-around is supported
int direction; // 1 if next, -1 if previous
};
// ------------------------------------------------------------------
// Picker definable functions
struct Pick {
void (*open) (PInf*); // Called after window is opened
void (*close) (PInf*); // Called after window is closed
void (*precursor)(PInf*); // Called before any cursor movement
void (*dodelayed)(PInf*); // Called after a delay
void (*disp) (PInf*); // Display line
void (*page) (PInf*); // Display page
void (*scroll) (PInf*, int); // Scroll list (direction)
int (*dokey) (PInf*, gkey*); // Called with key (&keycode)
};
// ------------------------------------------------------------------
// Prototypes
int Picker(PInf* p, Pick* pick);
// ------------------------------------------------------------------
class gwinpick {

View File

@ -188,8 +188,6 @@ public:
void restore_field();
void delete_left_word();
void delete_right_word();
void clear_to_end_field();
void clear_to_end_form();
void go_left_word();
void go_right_word();
void enter_char(char ch);

View File

@ -516,20 +516,6 @@ void gwinput::delete_right_word() {
}
// ------------------------------------------------------------------
void gwinput::clear_to_end_field() {
}
// ------------------------------------------------------------------
void gwinput::clear_to_end_form() {
}
// ------------------------------------------------------------------
void gwinput::go_left_word() {
@ -619,8 +605,6 @@ bool gwinput::handle_key(gkey key) {
case Key_C_R: restore_field(); break;
case Key_C_BS: delete_left_word(); break;
case Key_C_T: delete_right_word(); break;
case Key_C_U: clear_to_end_field(); break;
case Key_C_Y: clear_to_end_form(); break;
case Key_C_Lft: go_left_word(); break;
case Key_C_Rgt: go_right_word(); break;
default:

View File

@ -50,9 +50,10 @@ void gareafile::ReadAreasBBS(char* tag) {
// Read each AREAS.BBS
while(ptr) {
if(*ptr != '-') {
int echos_before = echolist.Echos();
GetAreasBBS(ptr, origin, options);
echos = echolist.Echos();
for(int n=0; n<echos; n++) {
for(int n=echos_before; n<echos; n++) {
echolist.GetEcho(n, &echoid, &path, &desc);
aa.reset();
aa.type = GMB_ECHO;