New key codes to stylecode selection

This commit is contained in:
Stas Degteff
2005-09-27 18:30:31 +00:00
parent cdcef282fc
commit b47bb3f0cd
10 changed files with 231 additions and 92 deletions

View File

@@ -141,6 +141,11 @@ CmdKey DefaultKeyset[] = {
{ Key_S_Lft , KK_EditBlockLeft , KT_E },
{ Key_S_Rgt , KK_EditBlockRight , KT_E },
#endif
{ Key_C_N , KK_EditSCodeNormal , KT_E },
{ Key_C_B , KK_EditSCodeBold , KT_E },
{ Key_C_I , KK_EditSCodeItalic , KT_E },
{ Key_C_L , KK_EditSCodeUnderline , KT_E },
{ Key_C_R , KK_EditSCodeReverse , KT_E },
{ Key_Esc , KK_FileAbort , KT_F },
{ Key_A_X , KK_FileAskExit , KT_F },
@@ -521,6 +526,7 @@ tglobalkey globalkeys[] = {
{ CRC_HEADERTOGGLELOCAL , KK_HeaderToggleLocal , KT_H }, // 0x47A1
{ CRC_ADDRESSBOOKQUIT , KK_AddressbookQuit , KT_B }, // 0x47C7
{ CRC_READCHANGEATTRS , KK_ReadChangeAttrs , KT_R }, // 0x47F8
{ CRC_EDITSCODEITALIC , KK_EditSCodeItalic , KT_E }, // 0x487F
{ CRC_READSEARCH , KK_ReadSearch , KT_R }, // 0x48EF
{ CRC_READMSGPGDN , KK_ReadMsgPgDn , KT_R }, // 0x4908
{ CRC_READSTRIPHTML , KK_ReadStripHTML , KT_R }, // 0x499A
@@ -615,6 +621,7 @@ tglobalkey globalkeys[] = {
{ CRC_HEADERLOOKUP , KK_HeaderLookup , KT_H }, // 0x64F2
{ CRC_AREAGOTOPREV , KK_AreaGotoPrev , KT_A }, // 0x6534
{ CRC_EDITDELLEFT , KK_EditDelLeft , KT_E }, // 0x6552
{ CRC_EDITSCODEBOLD , KK_EditSCodeBold , KT_E }, // 0x657D
{ CRC_EDITSAVEMSG , KK_EditSaveMsg , KT_E }, // 0x660C
{ CRC_K_CGMUL , Key_C_StrG , 0 }, // 0x66CA
{ CRC_NODESELECT , KK_NodeSelect , KT_N }, // 0x6A64
@@ -736,6 +743,7 @@ tglobalkey globalkeys[] = {
#if !defined(__UNIX__) || defined(__USE_NCURSES__)
{ CRC_K_SHOME , Key_S_Home , 0 }, // 0xAF9D
#endif
{ CRC_EDITSCODEUNDERLINE , KK_EditSCodeUnderline , KT_E }, // 0xB1D9
{ CRC_READTOGGLEQUOTE , KK_ReadToggleQuote , KT_R }, // 0xB293
{ CRC_EDITUNDO , KK_EditUndo , KT_E }, // 0xB295
{ CRC_READDIRQUOTEMSG , KK_ReadDirQuoteMsg , KT_R }, // 0xB351
@@ -808,6 +816,7 @@ tglobalkey globalkeys[] = {
{ CRC_EDITSPELLCHECK , KK_EditSpellCheck , KT_E }, // 0xE167
{ CRC_AREASCAN , KK_AreaScan , KT_A }, // 0xE440
{ CRC_EDITGOWORDLEFT , KK_EditGoWordLeft , KT_E }, // 0xE48C
{ CRC_EDITSCODENORMAL , KK_EditSCodeNormal , KT_E }, // 0xE4CE
{ CRC_READMOVECOMMENTMSG , KK_ReadMoveCommentMsg , KT_R }, // 0xE4E7
{ CRC_READGOTOREPLY1ST , KK_ReadGotoReply1st , KT_R }, // 0xE54F
{ CRC_READTOGGLEHEXDUMP , KK_ReadToggleHexdump , KT_R }, // 0xE6D5
@@ -845,6 +854,7 @@ tglobalkey globalkeys[] = {
{ CRC_READCHANGEMSG , KK_ReadChangeMsg , KT_R }, // 0xF99F
{ CRC_K_ABSPACE , Key_A_BS , 0 }, // 0xF9D7
{ CRC_EDITCUT , KK_EditCut , KT_E }, // 0xFAE6
{ CRC_EDITSCODEREVERSE , KK_EditSCodeReverse , KT_E }, // 0xFC0E
{ CRC_K_CF9 , Key_C_F9 , 0 }, // 0xFD02
{ CRC_K_CF8 , Key_C_F8 , 0 }, // 0xFD03
{ CRC_K_CF3 , Key_C_F3 , 0 }, // 0xFD08

View File

@@ -112,6 +112,11 @@ const word CRC_EDITQUITNOW = 0x80BA;
const word CRC_EDITREFLOW = 0x13F9;
const word CRC_EDITSAVEFILE = 0x64A4;
const word CRC_EDITSAVEMSG = 0x660C;
const word CRC_EDITSCODENORMAL = 0xE4CE;
const word CRC_EDITSCODEBOLD = 0x657D;
const word CRC_EDITSCODEITALIC = 0x487F;
const word CRC_EDITSCODEUNDERLINE = 0xB1D9;
const word CRC_EDITSCODEREVERSE = 0xFC0E;
const word CRC_EDITSOUNDKILL = 0xA9A7;
const word CRC_EDITSPELLCHECK = 0xE167;
const word CRC_EDITTAB = 0x8C26;

View File

@@ -2025,6 +2025,86 @@ void IEclass::ToggleCase() {
}
// ------------------------------------------------------------------
void IEclass::SCodeChange(gkey key)
{
GFTRK("EditSCodeChange");
char _ch = ' ';
switch (key)
{
case KK_EditSCodeBold: _ch = '*'; break;
case KK_EditSCodeUnderline: _ch = '_'; break;
case KK_EditSCodeItalic: _ch = '/'; break;
case KK_EditSCodeReverse: _ch = '#'; break;
}
if (strchr(CFG->stylecodepunct, currline->txt[col]))
{
if (col && !strchr(CFG->stylecodepunct, currline->txt[col-1]))
GoLeft();
else if (!strchr(CFG->stylecodepunct, currline->txt[col+1]))
GoRight();
else
{
if (isspace(currline->txt[col]) && (key != KK_EditSCodeNormal))
{
if ((col > 0) && !isspace(currline->txt[col-1]))
insertchar(' ');
insertchar(_ch);
insertchar(_ch);
GoLeft();
}
GFTRK(NULL);
return;
}
}
uint beg = col;
uint end = col;
while ((beg > 0) && !strchr(CFG->stylecodepunct, currline->txt[beg-1]))
beg--;
while (!strchr(CFG->stylecodepunct, currline->txt[end+1]))
end++;
bool replace = false;
char c1 = currline->txt[beg];
char c2 = currline->txt[end];
if ((_ch == c1) && (c1 == c2))
{
GFTRK(NULL);
return;
}
if ((_ch != c1) && (c1 == c2) &&
((c1 == '*') || (c1 == '/') || (c1 == '_') || (c1 == '#')))
replace = true;
while ((col > 0) && !strchr(CFG->stylecodepunct, currline->txt[col-1]))
GoLeft();
if (replace) DelChar();
if (_ch != ' ') insertchar(_ch);
while (!strchr(CFG->stylecodepunct, currline->txt[col+1]))
GoRight();
if (replace) DelChar();
else GoRight();
if (_ch != ' ') insertchar(_ch);
GoLeft();
GFTRK(NULL);
}
// ------------------------------------------------------------------
void IEclass::LookupCursor() {
@@ -2249,6 +2329,11 @@ noselecting:
case KK_EditUnDelete: UnDelete(); break;
case KK_EditUndo: Undo->PlayItem(); break;
case KK_EditZapQuoteBelow: ZapQuoteBelow(); break;
case KK_EditSCodeNormal:
case KK_EditSCodeBold:
case KK_EditSCodeItalic:
case KK_EditSCodeUnderline:
case KK_EditSCodeReverse: SCodeChange(__key); break;
// Block functions
case KK_EditAnchor: BlockAnchor(); break;

View File

@@ -399,6 +399,7 @@ public:
void SpellCheck ();
void Tab ();
void ToggleCase ();
void SCodeChange(gkey key);
void ToggleInsert ();
void ToLower ();
void ToUpper ();

View File

@@ -174,6 +174,11 @@ const gkey KK_EditBlockPgUp = 0xFF02;
const gkey KK_EditDelete = 0xFF03;
const gkey KK_EditUndo = 0xFF04;
const gkey KK_EditDeleteSOL = 0xFF05;
const gkey KK_EditSCodeNormal = 0xFF08;
const gkey KK_EditSCodeBold = 0xFF09;
const gkey KK_EditSCodeItalic = 0xFF0A;
const gkey KK_EditSCodeUnderline = 0xFF0B;
const gkey KK_EditSCodeReverse = 0xFF0C;
const gkey KK_FileAbort = 0xFF10;
const gkey KK_FileAskExit = 0xFF11;