wth is going on?!?

This commit is contained in:
mysticbbs 2013-08-31 00:38:55 -04:00
parent 46777d7727
commit 91545dce6e
1 changed files with 109 additions and 53 deletions

View File

@ -11,6 +11,20 @@ Uses
Const Const
fseMaxCutText = 60; fseMaxCutText = 60;
GlyphTypeMax = 10;
GlyphTypeStr : Array[1..10] of String[10] = (
('纶坷倌趁戳'),
('松蝗纪禾故'),
('颜冈就称迪'),
('抑酚侥呵缎'),
('锱呜阻闆湙'),
('<27>辈圻茌撖'),
('<06> '),
(''),
('<27><><EFBFBD>霁'),
('<27>耵蹶濅<E8B9B6>')
);
Type Type
TEditorANSI = Class TEditorANSI = Class
Owner : Pointer; Owner : Pointer;
@ -31,6 +45,7 @@ Type
InsertMode : Boolean; InsertMode : Boolean;
DrawMode : Boolean; DrawMode : Boolean;
GlyphMode : Boolean; GlyphMode : Boolean;
GlyphPtr : Byte;
WrapMode : Boolean; WrapMode : Boolean;
ClearEOL : Boolean; ClearEOL : Boolean;
LastLine : LongInt; LastLine : LongInt;
@ -44,6 +59,8 @@ Type
Done : Boolean; Done : Boolean;
Subject : String; Subject : String;
Template : String; Template : String;
DrawTemplate : String;
SavedInsert : Boolean;
MaxMsgLines : Word; MaxMsgLines : Word;
MaxMsgCols : Byte; MaxMsgCols : Byte;
@ -81,7 +98,8 @@ Type
Function Edit : Boolean; Function Edit : Boolean;
Procedure Quote; Procedure Quote;
Procedure QuoteWindow; Procedure QuoteWindow;
Procedure Commands; Procedure EditorCommands;
Procedure DrawCommands;
Procedure MessageUpload; Procedure MessageUpload;
End; End;
@ -114,6 +132,7 @@ Begin
InsertMode := True; InsertMode := True;
DrawMode := False; DrawMode := False;
GlyphMode := False; GlyphMode := False;
GlyphPtr := 6;
WrapMode := True; WrapMode := True;
ClearEOL := RowSize >= 79; ClearEOL := RowSize >= 79;
LastLine := 1; LastLine := 1;
@ -387,7 +406,7 @@ Begin
Session.io.AnsiColor (Session.io.ScreenInfo[3].A); Session.io.AnsiColor (Session.io.ScreenInfo[3].A);
Session.io.AnsiGotoXY (Session.io.ScreenInfo[3].X, Session.io.ScreenInfo[3].Y); Session.io.AnsiGotoXY (Session.io.ScreenInfo[3].X, Session.io.ScreenInfo[3].Y);
If InsertMode Then Session.io.BufAddStr('INS') else Session.io.BufAddStr('OVR'); { ++lang++ } If InsertMode Then Session.io.BufAddStr('INS') Else Session.io.BufAddStr('OVR'); { ++lang++ }
End; End;
Procedure TEditorANSI.ReDrawTemplate (Reset: Boolean); Procedure TEditorANSI.ReDrawTemplate (Reset: Boolean);
@ -398,9 +417,23 @@ Begin
TBBSCore(Owner).io.AllowArrow := True; TBBSCore(Owner).io.AllowArrow := True;
Session.io.PromptInfo[2] := Subject; If DrawMode Then Begin
// temp until we show file
Session.io.ScreenInfo[1].Y := 3;
Session.io.ScreenInfo[2].Y := 24;
Session.io.OutFile (Template, True, 0); Session.io.AnsiColor(7);
Session.io.AnsiClear;
WriteXY (1, 1, 7, 'Draw Mode ESC/Menu - Insert: ' + Session.io.OutON(InsertMode) + ' GlyphMode: ' + Session.io.OutON(GlyphMode) + ' Set: ');
WriteXY (53, 1, CurAttr, GlyphTypeStr[GlyphPtr]);
WriteXY (1, 2, 8, strRep('-', 79));
End Else Begin
Session.io.PromptInfo[2] := Subject;
Session.io.OutFile (Template, True, 0);
ToggleInsert (False);
End;
WinX1 := 1; WinX1 := 1;
WinX2 := MaxMsgCols; //79 WinX2 := MaxMsgCols; //79
@ -431,8 +464,6 @@ Begin
End; End;
DrawPage (1, WinSize, False); DrawPage (1, WinSize, False);
ToggleInsert (False);
End; End;
Procedure TEditorANSI.LocateCursor; Procedure TEditorANSI.LocateCursor;
@ -446,17 +477,6 @@ Begin
While TopLine + CurY - 1 > LastLine Do While TopLine + CurY - 1 > LastLine Do
Dec (CurY); Dec (CurY);
(*
If Not DrawMode Then Begin
If (CurX > 1) and (CurX = CurLength + 1) Then
CurAttr := ANSI.Data[CurLine][CurX - 1].Attr
Else
CurAttr := ANSI.Data[CurLine][CurX].Attr;
If CurAttr = 0 Then CurAttr := 7;
End;
*)
// With TBBSCore(Owner).io Do Begin // With TBBSCore(Owner).io Do Begin
// AnsiGotoXY (1, 1); // AnsiGotoXY (1, 1);
// BufAddStr ('X:' + strI2S(CurX) + ' Y:' + strI2S(CurY) + ' CL:' + strI2S(CurLine) + ' TopL:' + strI2S(TopLine) + ' Last:' + strI2S(LastLine) + ' Len:' + strI2S(GetLineLength(ANSI.Data[CurLine], 80)) + ' Row:' + strI2S(RowSize) + ' '); // BufAddStr ('X:' + strI2S(CurX) + ' Y:' + strI2S(CurY) + ' CL:' + strI2S(CurLine) + ' TopL:' + strI2S(TopLine) + ' Last:' + strI2S(LastLine) + ' Len:' + strI2S(GetLineLength(ANSI.Data[CurLine], 80)) + ' Row:' + strI2S(RowSize) + ' ');
@ -688,16 +708,20 @@ Procedure TEditorANSI.DoChar (Ch: Char);
Var Var
CharAttr : Byte; CharAttr : Byte;
Begin Begin
If (Session.io.ScreenInfo[6].A <> 0) and (Pos(Ch, '0123456789') > 0) Then CharAttr := CurAttr;
CharAttr := Session.io.ScreenInfo[6].A
Else If DrawMode Then Begin
If (Session.io.ScreenInfo[5].A <> 0) and (Pos(Ch, '.,!@#$%^&*()_+-=~`''"?;:<>\/[]{}|') > 0) Then If (Ch in ['0'..'9']) And GlyphMode Then
CharAttr := Session.io.ScreenInfo[5].A Ch := GlyphTypeStr[GlyphPtr][strS2I(Ch) + 1]
Else End Else
If (Session.io.ScreenInfo[4].A <> 0) and (Ch = UpCase(Ch)) Then If (Session.io.ScreenInfo[6].A <> 0) and (Pos(Ch, '0123456789') > 0) Then
CharAttr := Session.io.ScreenInfo[4].A CharAttr := Session.io.ScreenInfo[6].A
Else Else
CharAttr := CurAttr; If (Session.io.ScreenInfo[5].A <> 0) and (Pos(Ch, '.,!@#$%^&*()_+-=~`''"?;:<>\/[]{}|') > 0) Then
CharAttr := Session.io.ScreenInfo[5].A
Else
If (Session.io.ScreenInfo[4].A <> 0) and (Ch = UpCase(Ch)) Then
CharAttr := Session.io.ScreenInfo[4].A;
If InsertMode Then Begin If InsertMode Then Begin
Move (ANSI.Data[CurLine][CurX], ANSI.Data[CurLine][CurX + 1], SizeOf(RecAnsiBufferChar) * (CurLength - CurX + 1)); Move (ANSI.Data[CurLine][CurX], ANSI.Data[CurLine][CurX + 1], SizeOf(RecAnsiBufferChar) * (CurLength - CurX + 1));
@ -813,8 +837,13 @@ Begin
If Not LineDown(True) Then If Not LineDown(True) Then
DrawPage (CurY - 1, WinSize, True); DrawPage (CurY - 1, WinSize, True);
End; End;
End Else End Else Begin
LineDown(True); If CurLine = LastLine Then
InsertLine (CurLine + 1);
If Not LineDown(True) Then
DrawPage (CurY - 1, WinSize, True);
End;
End; End;
Procedure TEditorANSI.Quote; Procedure TEditorANSI.Quote;
@ -1142,7 +1171,7 @@ Begin
End; End;
End; End;
Procedure TEditorANSI.Commands; Procedure TEditorANSI.EditorCommands;
Var Var
Ch : Char; Ch : Char;
Str : String; Str : String;
@ -1153,7 +1182,11 @@ Begin
Repeat Repeat
Session.io.OutFull (Session.GetPrompt(354)); Session.io.OutFull (Session.GetPrompt(354));
{$IFDEF TESTEDITOR}
Ch := Session.io.OneKey ('?ACDHQRSTU', True);
{$ELSE}
Ch := Session.io.OneKey ('?ACHQRSTU', True); Ch := Session.io.OneKey ('?ACHQRSTU', True);
{$ENDIF}
Case Ch of Case Ch of
'?' : Session.io.OutFullLn (Session.GetPrompt(355)); '?' : Session.io.OutFullLn (Session.GetPrompt(355));
@ -1162,9 +1195,17 @@ Begin
Exit; Exit;
End Else Begin End Else Begin
Done := Session.io.GetYN(Session.GetPrompt(356), False); Done := Session.io.GetYN(Session.GetPrompt(356), False);
Exit; Exit;
End; End;
'C' : Exit; 'C' : Exit;
'D' : Begin
DrawMode := True;
SavedInsert := InsertMode;
InsertMode := False;
Exit;
End;
'H' : Begin 'H' : Begin
Session.io.OutFile ('fshelp', True, 0); Session.io.OutFile ('fshelp', True, 0);
Exit; Exit;
@ -1196,6 +1237,32 @@ Begin
Until Done; Until Done;
End; End;
Procedure TEditorANSI.DrawCommands;
Var
Ch : Char;
Begin
Repeat
Session.io.OutFull ('|CR|09Draw Commands (?/Help): ');
Ch := Session.io.OneKey ('?GQ', True);
Case Ch of
'?' : Session.io.OutFullLn ('|CR(Q)uit Draw Mode (G)lyph Mode');
'G' : Begin
GlyphMode := Not GlyphMode;
Exit;
End;
'Q' : Begin
DrawMode := False;
InsertMode := SavedInsert;
Exit;
End;
End;
Until False;
End;
Procedure TEditorANSI.MessageUpload; Procedure TEditorANSI.MessageUpload;
Var Var
FN : String[100]; FN : String[100];
@ -1334,21 +1401,11 @@ Begin
End; End;
End Else End Else
Case Ch of Case Ch of
(*
^A : Begin
If Forced Then
Session.io.OutFull (Session.GetPrompt(307))
Else
Done := Session.io.GetYN(Session.GetPrompt(356), False);
If Not Done Then ReDrawTemplate(False);
End;
*)
^B : ReformParagraph; ^B : ReformParagraph;
^F : CurX := 1; ^F : CurX := 1;
^G : CurX := CurLength + 1; ^G : CurX := CurLength + 1;
^H : DoBackSpace; ^H : DoBackSpace;
^I : Begin ^I : If CurLength < RowSize Then Begin
If (CurX < RowSize) and (CurX MOD 5 = 0) Then If (CurX < RowSize) and (CurX MOD 5 = 0) Then
DoChar(' '); DoChar(' ');
@ -1379,7 +1436,7 @@ Begin
Session.io.OutFile('fshelp', True, 0); Session.io.OutFile('fshelp', True, 0);
ReDrawTemplate(False); ReDrawTemplate(False);
End; End;
^Q : Begin ^Q : If Not DrawMode Then Begin
If Session.User.ThisUser.UseLBQuote Then If Session.User.ThisUser.UseLBQuote Then
QuoteWindow QuoteWindow
Else Else
@ -1410,24 +1467,23 @@ Begin
End; End;
^Z, ^Z,
^[ : Begin ^[ : Begin
Commands; If DrawMode Then
DrawCommands
Else
EditorCommands;
If (Not Save) and (Not Done) Then ReDrawTemplate(False); If (Not Save) and (Not Done) Then ReDrawTemplate(False);
Session.io.AllowArrow := True;
End; End;
#32.. #32..
#254 : If (CurLength >= RowSize) and (GetWrapPos(ANSI.Data[CurLine], RowSize, RowSize) = 0) Then Begin #254 : If (CurLength >= RowSize) and (GetWrapPos(ANSI.Data[CurLine], RowSize, RowSize) = 0) And InsertMode Then Begin
// dont do anything // dont do anything
End Else End Else
If (CurX = 1) and (Ch = '/') Then Begin If (CurX = 1) and (Ch = '/') and (Not DrawMode) Then Begin
Commands; EditorCommands;
If (Not Save) and (Not Done) Then ReDrawTemplate(False); If (Not Save) and (Not Done) Then ReDrawTemplate(False);
End Else
Session.io.AllowArrow := True; DoChar(Ch);
End Else
DoChar(Ch);
End; End;
Until Done; Until Done;