OSDN Git Service

toCheckWarn added, script check for YenT tag and YenH, YenU in synchronized section
authornaru <bottle@mikage.to>
Sun, 9 Mar 2003 09:39:51 +0000 (09:39 +0000)
committernaru <bottle@mikage.to>
Sun, 9 Mar 2003 09:39:51 +0000 (09:39 +0000)
bottleclient/BottleDef.pas
bottleclient/MainForm.pas
bottleclient/SettingForm.dfm
bottleclient/SettingForm.pas

index 2ec498d..70fd339 100755 (executable)
@@ -73,6 +73,8 @@ type
     FAutoJoinChannels: TStrings;
     FFMOName: TStrings;
     FHUTagTo01Tag: boolean;
+    FWarnYenTNotExist: boolean;
+    FWarnScopeChangeInSynchronize: boolean;
     procedure SetColorScript(const Value: boolean);
     procedure SetColorTimeLagValue(const Value: integer);
     procedure SetDblClkInsert(const Value: boolean);
@@ -121,6 +123,8 @@ type
     procedure SetFMOName(const Value: TStrings);
     function GetDefaultScript: String;
     procedure SetHUTagTo01Tag(const Value: boolean);
+    procedure SetWarnScopeChangeInSynchronize(const Value: boolean);
+    procedure SetWarnYenTNotExist(const Value: boolean);
   public
     property NoSendGhostList: boolean read FNoSendGhostList write SetNoSendGhostList;
     property ConfirmOnExit: boolean read FConfirmOnExit write SetConfirmOnExit;
@@ -136,6 +140,8 @@ type
     property ResetIfGhostAfterSend: boolean read FResetIfGhostAfterSend write SetResetIfGhostAfterSend;
     property ClearAfterSend: boolean read FClearAfterSend write SetClearAfterSend;
     property IgnoreFrequentYenS: boolean read FIgnoreFrequentYenS write SetIgnoreFrequentYenS;
+    property WarnYenTNotExist: boolean read FWarnYenTNotExist write SetWarnYenTNotExist;
+    property WarnScopeChangeInSynchronize: boolean read FWarnScopeChangeInSynchronize write SetWarnScopeChangeInSynchronize;
     property WaitScriptEnd: integer read FWaitScriptEnd write SetWaitScriptEnd;
     property StayOnTop: boolean read FStayOnTop write SetStayOnTop;
     property ColorScript: boolean read FColorScript write SetColorScript;
@@ -232,7 +238,8 @@ type
     toWaitScriptEnd,
     toFixMessySurface,
     toWarnMessySurface,
-    toHUTagTo01Tag
+    toHUTagTo01Tag,
+    toWarnCheck
   );
 
   TScriptTransOptions = set of TScriptTransOption;
@@ -297,6 +304,8 @@ begin
     HUTagTo01Tag := FIni.ReadBool('System', 'HUTagTo01Tag', false);
     ResetIfGhostAfterSend := FIni.ReadBool('System', 'ResetIfGhostAfterSend', false);
     ClearAfterSend := FIni.ReadBool('System', 'ClearAfterSend', false);
+    WarnYenTNotExist := FIni.ReadBool('System', 'WarnYenTNotExist', false);
+    WarnScopeChangeInSynchronize := FIni.ReadBool('System', 'WarnScopeChangeInSynchronize', false);
 
     IgnoreFrequentYenS := FIni.ReadBool('System', 'IgnoreFrequentYenS', false);
     WaitScriptEnd := FIni.ReadInteger('System', 'WaitScriptEnd', 0);
@@ -636,6 +645,8 @@ begin
   FIni.WriteBool('System', 'HUTagTo01Tag', HUTagTo01Tag);
   FIni.WriteBool('System', 'ResetIfGhostAfterSend', ResetIfGhostAfterSend);
   FIni.WriteBool('System', 'ClearAfterSend', ClearAfterSend);
+  FIni.WriteBool('System', 'WarnYenTNotExist', WarnYenTNotExist);
+  FIni.WriteBool('System', 'WarnScopeChangeInSynchronize', WarnScopeChangeInSynchronize);
 
   FIni.WriteBool('System', 'IgnoreFrequentYenS', IgnoreFrequentYenS);
   FIni.WriteInteger('System', 'WaitScriptEnd', WaitScriptEnd);
@@ -691,6 +702,17 @@ begin
   FHUTagTo01Tag := Value;
 end;
 
+procedure TBottlePrefs.SetWarnScopeChangeInSynchronize(
+  const Value: boolean);
+begin
+  FWarnScopeChangeInSynchronize := Value;
+end;
+
+procedure TBottlePrefs.SetWarnYenTNotExist(const Value: boolean);
+begin
+  FWarnYenTNotExist := Value;
+end;
+
 { TChannelListItem }
 
 procedure TChannelListItem.SetGhost(const Value: String);
index 446042b..ac5bc56 100755 (executable)
@@ -359,7 +359,10 @@ begin
   if Length(GetScriptText) = 0 then Exit;
   YenETrans;
   Script := GetScriptText;
-  if Pref.IgnoreTimeCritical then Opt := [toIgnoreTimeCritical] else Opt := [];
+  if Pref.IgnoreTimeCritical then
+    Opt := [toIgnoreTimeCritical, toWarnCheck]
+  else
+    Opt := [toWarnCheck];
   if Pref.NoTransUrl then Opt := Opt + [toNoChoice];
   if Pref.HUTagTo01Tag then Opt := Opt + [toHUTagTo01Tag];
   Err := DoTrans(Script, Opt + [toConvertURL, toWarnMessySurface]);
@@ -557,7 +560,7 @@ begin
 
   YenETrans;
   Talk := GetScriptText;
-  Err := DoTrans(Talk, [toWarnMessySurface]);
+  Err := DoTrans(Talk, [toWarnMessySurface, toWarnCheck]);
   if Err <> '' then begin
     MessageDlg(Err, mtWarning, [mbOk], 0);
     Exit;
@@ -1119,121 +1122,145 @@ var Orig, UrlCancel, Mark: String;
     i, j, u, UrlCount: integer;
     LastSurfaceH, LastSurfaceU: integer;
     UnyuTalking: boolean;
-    QuickSection: boolean;
+    QuickSection, Synchronize: boolean;
+    Warnings: TStringList;
 begin
   UrlCount := 0;
   LastSurfaceH := 0;
   LastSurfaceU := 10;
   UnyuTalking := false;
   QuickSection := false;
+  Synchronize := false;
   Orig := SsParser.InputString;
   SsParser.InputString := Script;
   Script := '';
-  for i := 0 to SsParser.Count-1 do begin
-    if SsParser[i] = '\t' then begin
-      if not(toIgnoreTimeCritical in Options) then
-        Script := Script + '\t';
-    end else if SsParser[i] = '\e' then begin
-      Continue;
-    end else if (SsParser.Match(SsParser[i], '\URL%b') > 0) then begin
-      if toConvertURL in Options then begin
-        UrlCount := 0; //\91O\82ÌURL\83^\83O\82Ì\89e\8b¿\82ð\96³\8e\8b\81B
-        for u := 7 downto 1 do begin
-          if (SsParser.Match(SsParser[i],
-              '\URL%b'+StringReplace(StringOfChar('-', u*2),
-              '-', '%b', [rfReplaceAll]))) > 0 then begin
-            for j := 1 to u do begin
-              Url[UrlCount] := SsParser.GetParam(SsParser[i], UrlCount*2+2);
-              UrlName[UrlCount] := SsParser.GetParam(SsParser[i], UrlCount*2+3);
-              if UrlName[UrlCount] = '' then UrlName[UrlCount] := Url[UrlCount];
-              if Pos('http://', Url[UrlCount]) > 0 then Inc(UrlCount);
+  Warnings := TStringList.Create;
+  try
+    for i := 0 to SsParser.Count-1 do begin
+      if SsParser[i] = '\t' then begin
+        if not(toIgnoreTimeCritical in Options) then
+          Script := Script + '\t';
+      end else if SsParser[i] = '\e' then begin
+        Continue;
+      end else if (SsParser.Match(SsParser[i], '\URL%b') > 0) then begin
+        if toConvertURL in Options then begin
+          UrlCount := 0; //\91O\82ÌURL\83^\83O\82Ì\89e\8b¿\82ð\96³\8e\8b\81B
+          for u := 7 downto 1 do begin
+            if (SsParser.Match(SsParser[i],
+                '\URL%b'+StringReplace(StringOfChar('-', u*2),
+                '-', '%b', [rfReplaceAll]))) > 0 then begin
+              for j := 1 to u do begin
+                Url[UrlCount] := SsParser.GetParam(SsParser[i], UrlCount*2+2);
+                UrlName[UrlCount] := SsParser.GetParam(SsParser[i], UrlCount*2+3);
+                if UrlName[UrlCount] = '' then UrlName[UrlCount] := Url[UrlCount];
+                if Pos('http://', Url[UrlCount]) > 0 then Inc(UrlCount);
+              end;
             end;
+            if UrlCount > 0 then UrlCancel := SsParser.GetParam(SsParser[i], 1);
+            if UrlCancel = '' then UrlCancel := '\8ds\82©\82È\82¢\81@\81@\81@\81@';
           end;
-          if UrlCount > 0 then UrlCancel := SsParser.GetParam(SsParser[i], 1);
-          if UrlCancel = '' then UrlCancel := '\8ds\82©\82È\82¢\81@\81@\81@\81@';
-        end;
-        if SsParser.Match(SsParser[i], '\URL%b%b') = 0 then begin //\8aÈ\88Õ\94ÅURL\95Ï\8a·
-          //\8aÈ\88Õ\8c`\8e®\URL\83^\83O\95Ï\8a·
-          Url[0] := SsParser.GetParam(SsParser[i], 1);
-          UrlName[0] := '\8ds\82­\81@\81@\81@\81@\81@\81@';
-          UrlCancel  := '\8ds\82©\82È\82¢\81@\81@\81@\81@';
-          if Pos('http://', Url[0]) > 0 then begin
-            UrlCount := 1;
-            if not QuickSection then
-              Script := Script + '\_q' + Url[0] + '\_q'
-            else
-              Script := Script + Url[0];
+          if SsParser.Match(SsParser[i], '\URL%b%b') = 0 then begin //\8aÈ\88Õ\94ÅURL\95Ï\8a·
+            //\8aÈ\88Õ\8c`\8e®\URL\83^\83O\95Ï\8a·
+            Url[0] := SsParser.GetParam(SsParser[i], 1);
+            UrlName[0] := '\8ds\82­\81@\81@\81@\81@\81@\81@';
+            UrlCancel  := '\8ds\82©\82È\82¢\81@\81@\81@\81@';
+            if Pos('http://', Url[0]) > 0 then begin
+              UrlCount := 1;
+              if not QuickSection then
+                Script := Script + '\_q' + Url[0] + '\_q'
+              else
+                Script := Script + Url[0];
+            end;
+          end;
+        end else Script := Script + SsParser[i];
+      end else begin
+        Mark := SsParser[i];
+        if Mark = '\h' then begin
+          UnyuTalking := false;
+          if toHUTagTo01Tag in Options then Mark := '\0';
+          if Synchronize and Pref.WarnScopeChangeInSynchronize then
+            Warnings.Add('\83V\83\93\83N\83\8d\83i\83C\83Y\83h\83Z\83N\83V\83\87\83\93\92\86\82É\h\82ª\82 \82è\82Ü\82·\81B');
+        end else if Mark = '\u' then begin
+          UnyuTalking := true;
+          if toHUTagTo01Tag in Options then Mark := '\1';
+          if Synchronize and Pref.WarnScopeChangeInSynchronize then
+            Warnings.Add('\83V\83\93\83N\83\8d\83i\83C\83Y\83h\83Z\83N\83V\83\87\83\93\92\86\82É\u\82ª\82 \82è\82Ü\82·\81B');
+        end else if Mark = '\_q' then begin
+          QuickSection := not QuickSection;
+        end else if Mark = '\_s' then begin
+          Synchronize := not Synchronize;
+        end else if SsParser.Match(Mark, '\s%b') > 0 then begin
+          if UnyuTalking then begin
+            LastSurfaceU := StrToIntDef(SsParser.GetParam(Mark, 1),
+                                        LastSurfaceU);
+          end else begin
+            LastSurfaceH := StrToIntDef(SsParser.GetParam(Mark, 1),
+                                        LastSurfaceH);
+          end;
+        end else if SsParser.Match(Mark, '\s%d') > 0 then begin
+          if UnyuTalking then begin
+            LastSurfaceU := StrToIntDef(Mark[3], LastSurfaceU);
+          end else begin
+            LastSurfaceH := StrToIntDef(Mark[3], LastSurfaceH);
           end;
         end;
-      end else Script := Script + SsParser[i];
-    end else begin
-      Mark := SsParser[i];
-      if Mark = '\h' then begin
-        UnyuTalking := false;
-        if toHUTagTo01Tag in Options then Mark := '\0';
-      end else if Mark = '\u' then begin
-        UnyuTalking := true;
-        if toHUTagTo01Tag in Options then Mark := '\1';
-      end else if Mark = '\_q' then begin
-        QuickSection := not QuickSection;
-      end else if SsParser.Match(Mark, '\s%b') > 0 then begin
-        if UnyuTalking then begin
-          LastSurfaceU := StrToIntDef(SsParser.GetParam(Mark, 1),
-                                      LastSurfaceU);
-        end else begin
-          LastSurfaceH := StrToIntDef(SsParser.GetParam(Mark, 1),
-                                      LastSurfaceH);
+        Script := Script + Mark;
+      end;
+    end;
+    if UrlCount > 0 then begin
+      Script := Script + '\h\n';
+      if not (toNoChoice in Options) then begin
+        for i := 0 to UrlCount-1 do begin
+          Script := Script + Format('\q%d[%s][%s]',
+                      [i, SsParser.EscapeParam(Url[i]), UrlName[i]]);
         end;
-      end else if SsParser.Match(Mark, '\s%d') > 0 then begin
-        if UnyuTalking then begin
-          LastSurfaceU := StrToIntDef(Mark[3], LastSurfaceU);
-        end else begin
-          LastSurfaceH := StrToIntDef(Mark[3], LastSurfaceH);
+        Script := Script + Format('\q%d[#cancel][%s]', [UrlCount, UrlCancel]);
+        //Script := Script + '\z'; //\8dÅ\90Vphase\82Å\82Í\8dí\8f\9c
+      end else begin
+        Script := Script + '\h';
+        for i := 0 to UrlCount-1 do begin
+          Script := Script + Format('\n{%s}(%s)', [UrlName[i], Url[i]]);
+          Script := Script + Format('\n{%s}', [UrlCancel]);
         end;
       end;
-      Script := Script + Mark;
     end;
-  end;
-  if UrlCount > 0 then begin
-    Script := Script + '\h\n';
-    if not (toNoChoice in Options) then begin
-      for i := 0 to UrlCount-1 do begin
-        Script := Script + Format('\q%d[%s][%s]',
-                    [i, SsParser.EscapeParam(Url[i]), UrlName[i]]);
-      end;
-      Script := Script + Format('\q%d[#cancel][%s]', [UrlCount, UrlCancel]);
-      //Script := Script + '\z'; //\8dÅ\90Vphase\82Å\82Í\8dí\8f\9c
-    end else begin
-      Script := Script + '\h';
-      for i := 0 to UrlCount-1 do begin
-        Script := Script + Format('\n{%s}(%s)', [UrlName[i], Url[i]]);
-        Script := Script + Format('\n{%s}', [UrlCancel]);
+    //\83X\83N\83\8a\83v\83g\82Ì\8dÅ\8cã\82É\83E\83F\83C\83g\91}\93ü
+    if toWaitScriptEnd in Options then begin
+      i := Pref.WaitScriptEnd;
+      while i > 0 do begin
+        if i > 9 then begin
+          Script := Script + '\w9';
+          Dec(i, 9);
+        end else begin
+          Script := Script + '\w' + IntToStr(i);
+          i := 0;
+        end;
       end;
     end;
-  end;
-  //\83X\83N\83\8a\83v\83g\82Ì\8dÅ\8cã\82É\83E\83F\83C\83g\91}\93ü
-  if toWaitScriptEnd in Options then begin
-    i := Pref.WaitScriptEnd;
-    while i > 0 do begin
-      if i > 9 then begin
-        Script := Script + '\w9';
-        Dec(i, 9);
-      end else begin
-        Script := Script + '\w' + IntToStr(i);
-        i := 0;
+
+    Script := Script + '\e';
+    RegExp.Subst('s/\r\n//gk', Script);
+
+    //\83^\83O\83`\83F\83b\83N\8aÖ\98A
+    for i := 0 to SsParser.Count-1 do begin
+      if SsParser.MarkUpType[i] = mtTagErr then begin
+        Result := '"' + SsParser[i] + '"'#13#10 +
+                  '\82Í\81ASSTP Bottle\82Å\94F\82ß\82ç\82ê\82È\82¢\82©\81A\94F\8e¯\82Å\82«\82È\82¢\83^\83O\82Å\82·\81B';
+        Exit;
       end;
     end;
-  end;
-
-  Script := Script + '\e';
-  RegExp.Subst('s/\r\n//gk', Script);
+    if (SsParser[0] <> '\t') and Pref.WarnYenTNotExist then begin
+      Warnings.Add('\83X\83N\83\8a\83v\83g\82ª\t\82©\82ç\8en\82Ü\82Á\82Ä\82¢\82Ü\82¹\82ñ\81B');
+    end;
 
-  //\83^\83O\83`\83F\83b\83N\8aÖ\98A
-  for i := 0 to SsParser.Count-1 do begin
-    if SsParser.MarkUpType[i] = mtTagErr then begin
-      Result := '"' + SsParser[i] + '"'#13#10 +
-                '\82Í\81ASSTP Bottle\82Å\94F\82ß\82ç\82ê\82È\82¢\82©\81A\94F\8e¯\82Å\82«\82È\82¢\83^\83O\82Å\82·\81B';
+    //\83`\83F\83b\83N
+    if (Warnings.Count > 0) and (toWarnCheck in Options) then begin
+      if MessageDlg(Warnings.Text + #13#10 + '\91\97\90M\82µ\82Ü\82·\82©?', mtWarning,
+                    mbOkCancel, 0) = mrCancel then
+        Result := Warnings.Text;
     end;
+  finally
+    Warnings.Free;
   end;
 
   SsParser.InputString := Orig;
index 1301245..10c6164 100755 (executable)
@@ -281,7 +281,7 @@ object frmSetting: TfrmSetting
         Top = 8
         Width = 353
         Height = 217
-        Images = frmSender.imgIcon
+        Images = ImageList
         Indent = 19
         Options = []
         ReadOnly = True
@@ -303,7 +303,7 @@ object frmSetting: TfrmSetting
           43526164696F4E6F64650114914991F08E8882C995CF8AB782B582C4935D9197
           0D5769746853656C656374696F6E02000100080200000109000D544350435261
           64696F4E6F64650114914991F08E8882C882B582C982B582C4935D91970B4E6F
-          53656C656374696F6E0200010008020000010800000902000001020A00105443
+          53656C656374696F6E0200010008020000010800000902000001020100105443
           5043436865636B426F784E6F646501248DC58FAC89BB8E9E82C982CD837B8367
           838B939E928589B982F096C282E782B382C882A21053696C656E745768656E48
           696464656E02000100080200000108001054435043436865636B426F784E6F64
@@ -311,7 +311,7 @@ object frmSetting: TfrmSetting
           5375726661636502000100080200000108001054435043436865636B426F784E
           6F6465011C5C682C205C7582F05C302C205C3182C995CF8AB782B582C4935D91
           970C4855546167546F3031546167020001000802000001080000090200000102
-          11000D5443504347726F75704E6F6465010A9197904D837B8367838B034F7574
+          00000D5443504347726F75704E6F6465010A9197904D837B8367838B034F7574
           0200011054435043436865636B426F784E6F64650128837B8367838B9197904D
           8CE382C98353815B8358836782F0836683748348838B836782C996DF82B71552
           65736574496647686F7374416674657253656E64020001000802000001080010
@@ -319,8 +319,14 @@ object frmSetting: TfrmSetting
           8358834E838A83768367979382F0834E838A83410E436C656172416674657253
           656E6402000100080200000108001054435043436865636B426F784E6F646501
           269197904D914F82C9836083838393836C838B82C68353815B8358836782F08A
-          6D944682B782E907436F6E6669726D0200010008020000010800000902000001
-          02110000}
+          6D944682B782E907436F6E6669726D02000100080200000108000D5443504347
+          726F75704E6F646501148358834E838A8376836782CC836083468362834E0457
+          61726E0200011054435043436865636B426F784E6F6465012A83568393834E83
+          8D8369834383598368835A834E835683878393928682CC83588352815B837695
+          CF8D581853636F70654368616E6765496E53796E6368726F6E697A6502000100
+          080200000108001054435043436865636B426F784E6F646501148DC58F8982AA
+          5C7482C58E6E82DC82E782C882A20C59656E544E6F7445786973740200010008
+          02000001080000090200000102020000090200000102000000}
       end
     end
     object tstChannel: TTabSheet
@@ -490,4 +496,146 @@ object frmSetting: TfrmSetting
     Left = 8
     Top = 320
   end
+  object ImageList: TImageList
+    Left = 40
+    Top = 320
+    Bitmap = {
+      494C010103000400040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000001000000001002000000000000010
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000808080008080800080808000808080008080800080808000808080008080
+      8000808000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000080808000FFFF0000FFFF0000FFFF000080800000FFFF0000808000008080
+      8000808000000000000000000000000000000000000000000000000000000000
+      0000000000000000FF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008080
+      8000FFFF0000FFFF0000FFFF000080800000FFFF000080800000FFFF00008080
+      0000808080000000000000000000000000000000000000000000000000000000
+      0000000000000000FF000000FF00000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008080
+      8000FFFF0000FFFFFF00FFFFFF00FFFFFF00FFFF0000FFFF0000FFFF0000FFFF
+      000080808000000000000000000000000000000000000000FF000000FF000000
+      FF000000FF000000FF000000FF000000FF000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008080
+      8000FFFF0000FFFFFF00FFFFFF00C0C0C000FFFFFF00FFFFFF00FFFF00008080
+      0000808080000000000000000000000000000000000000000000000000000000
+      0000000000000000FF000000FF00000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF003300CC003300CC00FFFFFF00FFFFFF0000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008080
+      8000FFFF0000FFFFFF00FFFFFF00FFFFFF00C0C0C000FFFFFF00FFFF0000FFFF
+      0000808080000000000000000000000000000000000000000000000000000000
+      0000000000000000FF0000000000800000008000000080000000800000008000
+      000080000000000000000000000000000000000000000000000000000000FFFF
+      FF003300FF003300FF003300CC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008080
+      8000FFFF0000FFFF0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008080
+      0000808080000000000000000000000000000000000000000000000000000000
+      00000000000000000000FF000000FF000000FF00000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000003300
+      FF003300FF003300FF003300FF003300CC00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008080
+      8000FFFF0000FFFF0000FFFFFF00C0C0C000FFFFFF00FFFFFF00FFFF0000FFFF
+      0000808080000000000000000000000000000000000000000000000000000000
+      00000000000080000000FF000000FF000000FF00000000800000008000000080
+      000000800000FF00000080000000000000000000000000000000000000003300
+      FF003300FF00FFFFFF003300FF003300FF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008080
+      8000FFFF0000FFFF0000FFFF0000FFFFFF00FFFFFF00FFFF0000FFFF00008080
+      0000808080000000000000000000000000000000000000000000000000000000
+      000000000000FF000000FF000000FF000000FF00000000800000008000000080
+      00000080000080800000FF000000000000000000000000000000000000003300
+      FF00FFFFFF00FFFFFF00FFFFFF003300FF003300CC00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008080
+      8000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000808080000000000000000000000000000000000000000000000000000000
+      000000000000FF000000FF000000000000000080000000800000008000000080
+      000000800000FF000000FF00000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003300CC00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008080
+      8000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00008080
+      0000808080000000000000000000000000000000000000000000000000000000
+      000000000000FF00000000000000008000000080000000800000008000008000
+      000080800000800000000080000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003300FF003300CC00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008080
+      8000FFFF0000800000008000000080000000800000008000000080000000FFFF
+      0000808080000000000000000000000000000000000000000000000000000000
+      000000000000FF000000C0C0C000000000000000000080000000008000000080
+      0000FF000000008000000080000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003300FF003300CC00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000808080008080800080808000808080008080800080808000808080008080
+      8000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000FF000000FFFFFF00C0C0C000FF000000FF000000FF00
+      0000FF000000008000000080000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003300FF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000808080008080800080808000808080008080800080808000808080008080
+      8000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFFFF00C0C0C000FFFFFF0000000000008000000080
+      000000800000008000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003300
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008000000080000000800000008000000080000000800000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000080800000C0C0C000000000000000
+      000000800000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008000000080000000800000008000000080000000800000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000100000000100010000000000800000000000000000000000
+      000000000000000000000000FFFFFF00F007F3FFFFFF0000F007F1FFC03F0000
+      E00700FFC01F0000E007007FC00F0000E0070007C0070000E007F003C0070000
+      E007F005C0070000E007F801C0070000E007F800C0070000E007F900C0070000
+      E007FA00C0070000E007F980C0070000F00FFC01C0070000F00FFC41C0070000
+      F81FFF33C0070000F81FFFFFC0070000}
+  end
 end
index 4c0d839..a1336f6 100755 (executable)
@@ -5,7 +5,8 @@ interface
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   ComCtrls, StdCtrls, ExtCtrls, BottleDef, Spin,
-  CPCConfigTreeView, ColorSettingFrame, BottleChainListFrame, SakuraSeekerInstance;
+  CPCConfigTreeView, ColorSettingFrame, BottleChainListFrame, SakuraSeekerInstance,
+  ImgList;
 
 type
   TfrmSetting = class(TForm)
@@ -55,6 +56,7 @@ type
     cbxAutoStart: TCheckBox;
     btnUseCurrentJoinChannels: TButton;
     Label6: TLabel;
+    ImageList: TImageList;
     procedure FormClose(Sender: TObject; var Action: TCloseAction);
     procedure edtProxyPortKeyPress(Sender: TObject; var Key: Char);
     procedure ctvBottleNodeChecked(Sender: TObject;
@@ -121,6 +123,8 @@ begin
       (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked := Pref.ResetIfGhostAfterSend;
       (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked := Pref.ClearAfterSend;
       (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked := not Pref.NoConfirm;
+      (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked := Pref.WarnScopeChangeInSynchronize;
+      (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked := Pref.WarnYenTNotExist;
     end;
   except
     on E: Exception do ShowMessage(E.Message);
@@ -176,6 +180,8 @@ begin
       Pref.ResetIfGhostAfterSend := (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked;
       Pref.ClearAfterSend := (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked;
       Pref.NoConfirm := not (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked;
+      Pref.WarnYenTNotExist := (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked;
+      Pref.WarnScopeChangeInSynchronize := (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked;
     end;
   except
     on E: Exception do ShowMessage(E.Message);