From f0a7e470e164b25353d0432e6d0f405ef8cb0f1d Mon Sep 17 00:00:00 2001 From: mysticbbs Date: Sun, 18 Nov 2012 12:04:59 -0500 Subject: [PATCH] Global message base editor --- mystic/HISTORY.txt | 6 ++ mystic/bbs_ansi_menuform.pas | 68 +++++++++++++++++-- mystic/bbs_cfg_common.pas | 2 +- mystic/bbs_cfg_main.pas | 72 ++++++++++---------- mystic/bbs_cfg_menuedit.pas | 2 +- mystic/bbs_cfg_msgbase.pas | 123 +++++++++++++++++++++++++++++++++-- mystic/bbs_cfg_theme.pas | 6 +- 7 files changed, 230 insertions(+), 49 deletions(-) diff --git a/mystic/HISTORY.txt b/mystic/HISTORY.txt index 73df0e6..dab4154 100644 --- a/mystic/HISTORY.txt +++ b/mystic/HISTORY.txt @@ -4921,3 +4921,9 @@ + Added a message base packer and renumber option to mUtil. This replaces MYSTPACK with the bonus that it also works with Squish (and appears to not be as buggy as MYSTPACK was). + + + Added Global Message Base editor into the Message base editor. Use the + TAB key when in the Message base list to tag areas that you'd like to set + global values for. Then use /G to open the editor. Set the options you'd + like to change to "Yes" and then set the value for that option. Press + CTRL-U when ready to update all tagged bases with the selected values. diff --git a/mystic/bbs_ansi_menuform.pas b/mystic/bbs_ansi_menuform.pas index 07b65cd..13740ea 100644 --- a/mystic/bbs_ansi_menuform.pas +++ b/mystic/bbs_ansi_menuform.pas @@ -10,7 +10,7 @@ Uses bbs_Common; Const - FormMaxItems = 50; + FormMaxItems = 60; Const YesNoStr : Array[False..True] of String[03] = ('No', 'Yes'); @@ -109,7 +109,7 @@ Type Destructor Destroy; Override; Procedure Clear; - Procedure AddNone (HK: Char; D: String; X, Y, DS: Byte; H: String); + Procedure AddNone (HK: Char; D: String; X, Y, FX, FY, DS: Byte; H: String); Procedure AddStr (HK: Char; D: String; X, Y, FX, FY, DS, FS, MX: Byte; P: Pointer; H: String); Procedure AddPipe (HK: Char; D: String; X, Y, FX, FY, DS, FS, MX: Byte; P: Pointer; H: String); Procedure AddPath (HK: Char; D: String; X, Y, FX, FY, DS, FS, MX: Byte; P: Pointer; H: String); @@ -367,11 +367,11 @@ Begin End; End; -Procedure TAnsiMenuForm.AddNone (HK: Char; D: String; X, Y, DS: Byte; H: String); +Procedure TAnsiMenuForm.AddNone (HK: Char; D: String; X, Y, FX, FY, DS: Byte; H: String); Begin If Items = FormMaxItems Then Exit; - AddBasic (HK, D, X, Y, 0, 0, DS, 0, 0, ItemNone, NIL, H); + AddBasic (HK, D, X, Y, FX, FY, DS, 0, 0, ItemNone, NIL, H); End; Procedure TAnsiMenuForm.AddChar (HK: Char; D: String; X, Y, FX, FY, DS, MN, MX: Byte; P: Pointer; H: String); @@ -629,6 +629,7 @@ Var Ch : Char; NewPos : Word; NewXPos : Word; + NewYPos : Word; Begin Session.io.AllowArrow := True; @@ -659,6 +660,36 @@ Begin End; Case Ch of + #72 : Begin + NewPos := 0; + NewYPos := 0; + + For Count := 1 to Items Do + If (ItemData[Count]^.FieldX = ItemData[ItemPos]^.FieldX) and + (ItemData[Count]^.FieldY < ItemData[ItemPos]^.FieldY) and + (ItemData[Count]^.FieldY > NewYPos) Then Begin + NewPos := Count; + NewYPos := ItemData[Count]^.FieldY; + End; + + If NewPos > 0 Then Begin + BarOFF(ItemPos); + ItemPos := NewPos; + BarON; + End Else + If ItemPos > 1 Then Begin + BarOFF(ItemPos); + Dec(ItemPos); + BarON; + End Else + If ExitOnFirst Then Begin + WasFirstExit := True; + Result := Ch; + Break; + End; + End; + +(* #72 : If ItemPos > 1 Then Begin BarOFF(ItemPos); Dec(ItemPos); @@ -669,6 +700,7 @@ Begin Result := Ch; Break; End; +*) #75 : Begin NewPos := 0; NewXPos := 0; @@ -705,6 +737,33 @@ Begin BarON; End; End; + #80 : Begin + NewPos := 0; + + For Count := 1 to Items Do + If (ItemData[Count]^.FieldX = ItemData[ItemPos]^.FieldX) and + (ItemData[Count]^.FieldY > ItemData[ItemPos]^.FieldY) Then Begin + NewPos := Count; + Break; + End; + + If NewPos > 0 Then Begin + BarOFF(ItemPos); + ItemPos := NewPos; + BarON; + End Else + If ItemPos < Items Then Begin + BarOFF(ItemPos); + Inc(ItemPos); + BarON; + End Else + If ExitOnLast Then Begin + WasLastExit := True; + Result := Ch; + Break; + End; + End; +(* #80 : If ItemPos < Items Then Begin BarOFF(ItemPos); Inc(ItemPos); @@ -715,6 +774,7 @@ Begin Result := Ch; Break; End; +*) End; End Else Begin Case Ch of diff --git a/mystic/bbs_cfg_common.pas b/mystic/bbs_cfg_common.pas index e5e3476..9f81768 100644 --- a/mystic/bbs_cfg_common.pas +++ b/mystic/bbs_cfg_common.pas @@ -45,7 +45,7 @@ Begin Box.Open (30, StartY, 51, StartY + Cmds + 1); For Count := 1 to Cmds Do - Form.AddNone (CmdData[Count].Key, ' ' + CmdData[Count].Key + ' ' + CmdData[Count].Desc, 31, StartY + Count, 20, ''); + Form.AddNone (CmdData[Count].Key, ' ' + CmdData[Count].Key + ' ' + CmdData[Count].Desc, 31, StartY + Count, 31, StartY + Count, 20, ''); Result := Form.Execute; diff --git a/mystic/bbs_cfg_main.pas b/mystic/bbs_cfg_main.pas index 853060a..a4d0c24 100644 --- a/mystic/bbs_cfg_main.pas +++ b/mystic/bbs_cfg_main.pas @@ -153,11 +153,11 @@ Begin Case MenuPtr of 0 : Begin - Form.AddNone('C', ' Configuration ', 5, 2, 15, 'BBS configuration settings'); - Form.AddNone('S', ' Servers ', 26, 2, 9, 'Mystic Internet Server (MIS) settings'); - Form.AddNone('E', ' Editors ', 41, 2, 9, 'BBS configuration editors'); - Form.AddNone('I', ' Info ', 56, 2, 6, 'BBS Information and Monitors'); - Form.AddNone('X', ' Exit ' , 69, 2, 6, 'Exit configuration'); + Form.AddNone('C', ' Configuration ', 5, 2, 5, 2, 15, 'BBS configuration settings'); + Form.AddNone('S', ' Servers ', 26, 2, 26, 2, 9, 'Mystic Internet Server (MIS) settings'); + Form.AddNone('E', ' Editors ', 41, 2, 41, 2, 9, 'BBS configuration editors'); + Form.AddNone('I', ' Info ', 56, 2, 56, 2, 6, 'BBS Information and Monitors'); + Form.AddNone('X', ' Exit ' , 69, 2, 69, 2, 6, 'Exit configuration'); Res := Form.Execute; @@ -180,17 +180,17 @@ Begin BoxOpen (4, 4, 33, 16); CoolBoxOpen (3, 'Configuration'); - Form.AddNone ('S', ' S System Paths', 5, 5, 28, ''); - Form.AddNone ('G', ' G General Settings', 5, 6, 28, ''); - Form.AddNone ('L', ' L Login/Matrix Settings', 5, 7, 28, ''); - Form.AddNone ('1', ' 1 New User Settings 1', 5, 8, 28, ''); - Form.AddNone ('2', ' 2 New User Settings 2', 5, 9, 28, ''); - Form.AddNone ('3', ' 3 New User Optional Fields', 5, 10, 28, ''); - Form.AddNone ('F', ' F File Base Settings', 5, 11, 28, ''); - Form.AddNone ('M', ' M Message Base Settings', 5, 12, 28, ''); - Form.AddNone ('E', ' E Echomail Networks', 5, 13, 28, ''); - Form.AddNone ('O', ' O Offline Mail Settings', 5, 14, 28, ''); - Form.AddNone ('C', ' C Console Settings', 5, 15, 28, ''); + Form.AddNone ('S', ' S System Paths', 5, 5, 5, 5, 28, ''); + Form.AddNone ('G', ' G General Settings', 5, 6, 5, 6, 28, ''); + Form.AddNone ('L', ' L Login/Matrix Settings', 5, 7, 5, 7, 28, ''); + Form.AddNone ('1', ' 1 New User Settings 1', 5, 8, 5, 8, 28, ''); + Form.AddNone ('2', ' 2 New User Settings 2', 5, 9, 5, 9, 28, ''); + Form.AddNone ('3', ' 3 New User Optional Fields', 5, 10, 5, 10, 28, ''); + Form.AddNone ('F', ' F File Base Settings', 5, 11, 5, 11, 28, ''); + Form.AddNone ('M', ' M Message Base Settings', 5, 12, 5, 12, 28, ''); + Form.AddNone ('E', ' E Echomail Networks', 5, 13, 5, 13, 28, ''); + Form.AddNone ('O', ' O Offline Mail Settings', 5, 14, 5, 14, 28, ''); + Form.AddNone ('C', ' C Console Settings', 5, 15, 5, 15, 28, ''); Res := Form.Execute; MenuPos[1] := Form.ItemPos; @@ -224,12 +224,12 @@ Begin BoxOpen (25, 4, 53, 11); CoolBoxOpen (24, 'Servers'); - Form.AddNone ('I', ' I Internet Server Options', 26, 5, 27, ''); - Form.AddNone ('1', ' 1 Telnet Server Options', 26, 6, 27, ''); - Form.AddNone ('2', ' 2 FTP Server Options', 26, 7, 27, ''); - Form.AddNone ('3', ' 3 POP3 Server Options', 26, 8, 27, ''); - Form.AddNone ('4', ' 4 SMTP Server Options', 26, 9, 27, ''); - Form.AddNone ('5', ' 5 NNTP Server Options', 26, 10, 27, ''); + Form.AddNone ('I', ' I Internet Server Options', 26, 5, 26, 5, 27, ''); + Form.AddNone ('1', ' 1 Telnet Server Options', 26, 6, 26, 6, 27, ''); + Form.AddNone ('2', ' 2 FTP Server Options', 26, 7, 26, 7, 27, ''); + Form.AddNone ('3', ' 3 POP3 Server Options', 26, 8, 26, 8, 27, ''); + Form.AddNone ('4', ' 4 SMTP Server Options', 26, 9, 26, 9, 27, ''); + Form.AddNone ('5', ' 5 NNTP Server Options', 26, 10, 26, 10, 27, ''); Res := Form.Execute; MenuPos[2] := Form.ItemPos; @@ -258,19 +258,19 @@ Begin BoxOpen (38, 4, 64, 18); CoolBoxOpen (39, 'Editors'); - Form.AddNone ('U', ' U User Editor', 39, 5, 25, ''); - Form.AddNone ('M', ' M Menu Editor', 39, 6, 25, ''); - Form.AddNone ('T', ' T Theme/Prompt Editor', 39, 7, 25, ''); - Form.AddNone ('B', ' B Message Base Editor', 39, 8, 25, ''); - Form.AddNone ('G', ' G Message Group Editor', 39, 9, 25, ''); - Form.AddNone ('F', ' F File Base Editor', 39, 10, 25, ''); - Form.AddNone ('R', ' R File Group Editor', 39, 11, 25, ''); - Form.AddNone ('S', ' S Security Level Editor', 39, 12, 25, ''); - Form.AddNone ('A', ' A Archive Editor', 39, 13, 25, ''); - Form.AddNone ('P', ' P Protocol Editor', 39, 14, 25, ''); - Form.AddNone ('E', ' E Event Editor', 39, 15, 25, ''); - Form.AddNone ('V', ' V Voting Editor', 39, 16, 25, ''); - Form.AddNone ('L', ' L BBS List Editor', 39, 17, 25, ''); + Form.AddNone ('U', ' U User Editor', 39, 5, 39, 5, 25, ''); + Form.AddNone ('M', ' M Menu Editor', 39, 6, 39, 6, 25, ''); + Form.AddNone ('T', ' T Theme/Prompt Editor', 39, 7, 39, 7, 25, ''); + Form.AddNone ('B', ' B Message Base Editor', 39, 8, 39, 8, 25, ''); + Form.AddNone ('G', ' G Message Group Editor', 39, 9, 39, 9, 25, ''); + Form.AddNone ('F', ' F File Base Editor', 39, 10, 39, 10, 25, ''); + Form.AddNone ('R', ' R File Group Editor', 39, 11, 39, 11, 25, ''); + Form.AddNone ('S', ' S Security Level Editor', 39, 12, 39, 12, 25, ''); + Form.AddNone ('A', ' A Archive Editor', 39, 13, 39, 13, 25, ''); + Form.AddNone ('P', ' P Protocol Editor', 39, 14, 39, 14, 25, ''); + Form.AddNone ('E', ' E Event Editor', 39, 15, 39, 15, 25, ''); + Form.AddNone ('V', ' V Voting Editor', 39, 16, 39, 16, 25, ''); + Form.AddNone ('L', ' L BBS List Editor', 39, 17, 39, 17, 25, ''); Res := Form.Execute; MenuPos[3] := Form.ItemPos; @@ -306,7 +306,7 @@ Begin BoxOpen (54, 4, 64, 6); CoolBoxOpen (54, 'Info'); - Form.AddNone ('A', ' A About', 55, 5, 9, ''); + Form.AddNone ('A', ' A About', 55, 5, 55, 5, 9, ''); Res := Form.Execute; MenuPos[4] := Form.ItemPos; diff --git a/mystic/bbs_cfg_menuedit.pas b/mystic/bbs_cfg_menuedit.pas index 7e2b09c..bf52781 100644 --- a/mystic/bbs_cfg_menuedit.pas +++ b/mystic/bbs_cfg_menuedit.pas @@ -275,7 +275,7 @@ Begin VerticalLine (24, 11, 14); - Form.AddNone ('C', ' Command ', 15, 11, 9, Topic + 'Menu command function'); + Form.AddNone ('C', ' Command ', 15, 11, 26, 11, 9, Topic + 'Menu command function'); Form.AddStr ('D', ' Data ' , 18, 12, 26, 12, 6, 40, 160, @Menu.Item[Num]^.CmdData[CmdNum]^.Data, Topic + 'Menu command optional data'); Form.AddStr ('A', ' Access ' , 16, 13, 26, 13, 8, 30, 30, @Menu.Item[Num]^.CmdData[CmdNum]^.Access, Topic + 'Access level to run this command'); Form.AddTog ('G', ' Execute ', 15, 14, 26, 14, 9, 6, 0, 10, 'Selected Up Down Left Right Tab Escape PgUp PgDn Home End', @Menu.Item[Num]^.CmdData[CmdNum]^.JumpID, Topic + '(Grid) Execute command on what Grid event?'); diff --git a/mystic/bbs_cfg_msgbase.pas b/mystic/bbs_cfg_msgbase.pas index 726f0f0..9ce6061 100644 --- a/mystic/bbs_cfg_msgbase.pas +++ b/mystic/bbs_cfg_msgbase.pas @@ -11,6 +11,7 @@ Implementation Uses m_Strings, m_FileIO, + m_Bits, bbs_Ansi_MenuBox, bbs_Ansi_MenuForm, bbs_Cfg_Common, @@ -43,7 +44,7 @@ Begin Form.AddStr ('R', ' Read ACS' , 7, 12, 19, 12, 10, 30, 30, @MBase.ReadACS, Topic + 'Access required to read messages'); Form.AddStr ('P', ' Post ACS' , 7, 13, 19, 13, 10, 30, 30, @MBase.PostACS, Topic + 'Access required to post messages'); Form.AddStr ('Y', ' Sysop ACS' , 6, 14, 19, 14, 11, 30, 30, @MBase.SysopACS, Topic + 'Access required for Sysop access'); - Form.AddNone ('D', ' Net Address' , 4, 15, 13, Topic + 'NetMail Address'); + Form.AddNone ('D', ' Net Address' , 4, 15, 19, 15, 13, Topic + 'NetMail Address'); Form.AddStr ('I', ' Origin' , 9, 16, 19, 16, 8, 30, 50, @MBase.Origin, Topic + 'Message base origin line'); Form.AddStr ('S', ' Sponsor' , 8, 17, 19, 17, 9, 30, 30, @MBase.Sponsor, Topic + 'User name of base''s sponser'); Form.AddStr ('H', ' Header' , 9, 18, 19, 18, 8, 20, 20, @MBase.Header, Topic + 'Display file name of msg header'); @@ -93,8 +94,116 @@ Var MBaseFile : TBufFile; MBase : RecMessageBase; - Procedure GlobalEdit; + Procedure GlobalEdit (Global: RecMessageBase); + Const + ChangeStr = 'Change this value for all tagged bases?'; + Var + GBox : TAnsiMenuBox; + Form : TAnsiMenuForm; + Active : Array[1..26] of Boolean; + Count : LongInt; + Topic : String; Begin + FillChar (Active, SizeOf(Active), 0); + + Topic := '|03(|09Global MsgBase Edit|03) |01-|09> |15'; + GBox := TAnsiMenuBox.Create; + Form := TAnsiMenuForm.Create; + + GBox.Header := ' CTRL-U/Update ESC/Abort '; + + GBox.Open (6, 5, 75, 21); + + VerticalLine (26, 7, 19); + VerticalLine (64, 7, 19); + + For Count := 1 to 13 Do + Form.AddBol ('!', '> ', 8, 6 + Count, 10, 6 + Count, 2, 3, @Active[Count], Topic + ChangeStr); + + Form.AddPath ('!', ' Path' , 20, 7, 28, 7, 6, 16, 80, @Global.Path, Topic + 'Message base storage path'); + Form.AddStr ('L', ' List ACS' , 16, 8, 28, 8, 10, 16, 30, @Global.ListACS, Topic + 'Access required to see in base list'); + Form.AddStr ('R', ' Read ACS' , 16, 9, 28, 9, 10, 16, 30, @Global.ReadACS, Topic + 'Access required to read messages'); + Form.AddStr ('P', ' Post ACS' , 16, 10, 28, 10, 10, 16, 30, @Global.PostACS, Topic + 'Access required to post messages'); + Form.AddStr ('Y', ' Sysop ACS' , 15, 11, 28, 11, 11, 16, 30, @Global.SysopACS, Topic + 'Access required for Sysop access'); + Form.AddNone ('D', ' Net Address' , 13, 12, 28, 12, 13, Topic + 'NetMail Address'); + Form.AddStr ('I', ' Origin' , 18, 13, 28, 13, 8, 16, 50, @Global.Origin, Topic + 'Message base origin line'); + Form.AddStr ('S', ' Sponsor' , 17, 14, 28, 14, 9, 16, 30, @Global.Sponsor, Topic + 'User name of base''s sponser'); + Form.AddStr ('H', ' Header' , 18, 15, 28, 15, 8, 16, 20, @Global.Header, Topic + 'Display file name of msg header'); + Form.AddStr ('T', ' R Template' , 14, 16, 28, 16, 12, 16, 20, @Global.RTemplate, Topic + 'Template for full screen reader'); + Form.AddStr ('M', ' L Template' , 14, 17, 28, 17, 12, 16, 20, @Global.ITemplate, Topic + 'Template for lightbar message list'); + Form.AddTog ('A', ' Base Type' , 15, 18, 28, 18, 11, 9, 0, 3, 'Local EchoMail Newsgroup Netmail', @Global.NetType, Topic + 'Message base type'); + Form.AddTog ('B', ' Base Format' , 13, 19, 28, 19, 13, 6, 0, 1, 'JAM Squish', @Global.BaseType, Topic + 'Message base storage format'); + + For Count := 1 to 13 Do + Form.AddBol ('!', '> ', 45, 6 + Count, 47, 6 + Count, 2, 3, @Active[Count + 13], Topic + ChangeStr); + + Form.AddAttr ('Q', ' Quote Color' , 51, 7, 66, 7, 13, @Global.ColQuote, Topic + 'Color for quoted text'); + Form.AddAttr ('X', ' Text Color' , 52, 8, 66, 8, 12, @Global.ColText, Topic + 'Color for message text'); + Form.AddAttr ('E', ' Tear Color' , 52, 9, 66, 9, 12, @Global.ColTear, Topic + 'Color for tear line'); + Form.AddAttr ('G', ' Origin Color', 50, 10, 66, 10, 14, @Global.ColOrigin, Topic + 'Color for origin line'); + Form.AddAttr ('K', ' Kludge Color', 50, 11, 66, 11, 14, @Global.ColKludge, Topic + 'Color for kludge line'); + Form.AddWord ('M', ' Max Msgs' , 54, 12, 66, 12, 10, 5, 0, 65535, @Global.MaxMsgs, Topic + 'Maximum number of message in base'); + Form.AddWord ('1', ' Max Msg Age' , 51, 13, 66, 13, 13, 5, 0, 65535, @Global.MaxAge, Topic + 'Maximum age (days) to keep messages'); + Form.AddTog ('2', ' New Scan' , 54, 14, 66, 14, 10, 6, 0, 2, 'No Yes Forced', @Global.DefNScan, Topic + 'Newscan default for users'); + Form.AddTog ('3', ' QWK Scan' , 54, 15, 66, 15, 10, 6, 0, 2, 'No Yes Forced', @Global.DefQScan, Topic + 'QWKscan default for users'); + Form.AddBits ('4', ' Real Names' , 52, 16, 66, 16, 12, MBRealNames, @Global.Flags, Topic + 'Use real names in this base?'); + Form.AddBits ('5', ' Autosigs' , 54, 17, 66, 17, 10, MBAutoSigs, @Global.Flags, Topic + 'Allow auto signatures in this base?'); + Form.AddBits ('6', ' Kill Kludge' , 51, 18, 66, 18, 13, MBKillKludge, @Global.Flags, Topic + 'Filter out kludge lines'); + Form.AddBits ('V', ' Private' , 55, 19, 66, 19, 9, MBPrivate, @Global.Flags, Topic + 'Is this a private base?'); + + Form.LoExitChars := #21#27; + + Repeat + Case Form.Execute of + 'D' : Global.NetAddr := Configuration_EchoMailAddress(False); + #21 : If ShowMsgBox(1, 'Update with these settings?') Then Begin + For Count := 1 to List.ListMax Do + If List.List[Count]^.Tagged = 1 Then Begin + MBaseFile.Seek (Count - 1); + MBaseFile.Read (MBase); + + If Active[01] Then MBase.Path := Global.Path; + If Active[02] Then MBase.ListACS := Global.ListACS; + If Active[03] Then MBase.ReadACS := Global.ReadACS; + If Active[04] Then MBase.PostACS := Global.PostACS; + If Active[05] Then MBase.SysopACS := Global.SysopACS; + If Active[06] Then MBase.NetAddr := Global.NetAddr; + If Active[07] Then MBase.Origin := Global.Origin; + If Active[08] Then MBase.Sponsor := Global.Sponsor; + If Active[09] Then MBase.Header := Global.Header; + If Active[10] Then MBase.RTemplate := Global.RTemplate; + If Active[11] Then MBase.ITemplate := Global.ITemplate; + If Active[12] Then MBase.NetType := Global.NetType; + If Active[13] Then MBase.BaseType := Global.BaseType; + + If Active[14] Then MBase.ColQuote := Global.ColQuote; + If Active[15] Then MBase.ColText := Global.ColText; + If Active[16] Then MBase.ColTear := Global.ColTear; + If Active[17] Then MBase.ColOrigin := Global.ColOrigin; + If Active[18] Then MBase.ColKludge := Global.ColKludge; + If Active[19] Then MBase.MaxMsgs := Global.MaxMsgs; + If Active[20] Then MBase.MaxAge := Global.MaxAge; + If Active[21] Then MBase.DefNScan := Global.DefNScan; + If Active[22] Then MBase.DefQScan := Global.DefQScan; + If Active[23] Then BitSet(MBRealNames, SizeOf(MBase.Flags), MBase.Flags, (Global.Flags AND MBRealNames <> 0)); + If Active[24] Then BitSet(MBAutoSigs, SizeOf(MBase.Flags), MBase.Flags, (Global.Flags AND MBAutoSigs <> 0)); + If Active[25] Then BitSet(MBKillKludge, SizeOf(MBase.Flags), MBase.Flags, (Global.Flags AND MBKillKludge <> 0)); + If Active[26] Then BitSet(MBPrivate, SizeOf(MBase.Flags), MBase.Flags, (Global.Flags AND MBPrivate <> 0)); + + MBaseFile.Seek (Count - 1); + MBaseFile.Write (MBase); + End; + + Break; + End; + #27 : Break; + End; + Until False; + + Form.Free; + + GBox.Close; + GBox.Free; End; Procedure MakeList; @@ -240,8 +349,14 @@ Begin End; 'G' : If List.Marked = 0 Then ShowMsgBox(0, 'You must tag areas for global edit') - Else - GlobalEdit; + Else Begin + If List.Picked > 1 Then Begin + MBaseFile.Seek (List.Picked - 1); + MBaseFile.Read (MBase); + End; + + GlobalEdit (MBase); + End; End; #13 : If List.Picked < List.ListMax Then Begin MBaseFile.Seek (List.Picked - 1); diff --git a/mystic/bbs_cfg_theme.pas b/mystic/bbs_cfg_theme.pas index f64058a..f05dd85 100644 --- a/mystic/bbs_cfg_theme.pas +++ b/mystic/bbs_cfg_theme.pas @@ -670,9 +670,9 @@ Begin Form.AddBits ('C', ' Allow ASCII' , 10, 14, 25, 14, 13, ThmAllowASCII, @Theme.Flags, Topic + 'Allow ASCII users to use this theme?'); Form.AddBits ('N', ' Allow ANSI' , 11, 15, 25, 15, 12, ThmAllowANSI, @Theme.Flags, Topic + 'Allow ANSI users to use this theme?'); - Form.AddNone ('1', ' 1: Prompts' , 57, 7, 17, Topic + 'Edit prompts for this theme'); - Form.AddNone ('2', ' 2: Options' , 57, 8, 17, Topic + 'Edit general options for this theme'); - Form.AddNone ('3', ' 3: Percent Bars', 57, 9, 17, Topic + 'Edit percentage bars used in this theme'); + Form.AddNone ('1', ' 1: Prompts' , 57, 7, 57, 7, 17, Topic + 'Edit prompts for this theme'); + Form.AddNone ('2', ' 2: Options' , 57, 8, 57, 8, 17, Topic + 'Edit general options for this theme'); + Form.AddNone ('3', ' 3: Percent Bars', 57, 9, 57, 9, 17, Topic + 'Edit percentage bars used in this theme'); Repeat Case Form.Execute of