ScriptConsts, DateUtils, BottleChainRule, BottleChainEvent,
SakuraSeekerInstance, HEditor, HTSearch, heClasses, heFountain,
SakuraScriptFountain, SppList, SurfacePreview, XDOM_2_3_J3, SsPlayTime,
- RegexUtils, StrReplace, StrReplaceDialog, IdAntiFreezeBase;
+ RegexUtils, StrReplace, StrReplaceDialog, ReplacePresetEditor;
type
TSurfacePreviewType = (spHint, spEditor);
mnUndo: TMenuItem;
mnRedo: TMenuItem;
N9: TMenuItem;
+ mnPresetReplaceRoot: TMenuItem;
procedure actConfirmExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure SetAdded(const Value: boolean);
procedure mnConstClick(Sender: TObject);
procedure mnConstGroupClick(Sender: TObject);
+ procedure mnPresetReplaceClick(Sender: TObject);
property Added: boolean read FAdded write SetAdded;
property Sleeping: boolean read FSleeping write SetSleeping;
property StatusText: String read FStatusText write SetStatusText;
procedure UpdateIfGhostBox;
function BuildMenuConditionCheck(const IfGhost, Ghost: String): boolean;
procedure BuildMenu(Root: TMenuItem; Simple: boolean);
+ procedure BuildReplaceMenu(Root: TMenuItem);
procedure PlaySound(const FileName: String);
//TBottleSstp\8aÖ\8cW\83C\83x\83\93\83g\83n\83\93\83h\83\89
procedure BottleSstpResendCountChange(Sender: TObject);
FSppDir := ExtractFileDir(Application.ExeName)+'\spp';
Spps.LoadFromDirectory(FSppDir);
ConstructMenu(false);
+ BuildReplaceMenu(mnPresetReplaceRoot);
Str := TStringList.Create;
try
Str.LoadFromFile(ExtractFilePath(Application.ExeName)+'defrule.txt');
BottleChainRuleList := StringToComponent(Str.Text) as TBottleChainRuleList;
except
- Showmessage('defrule.txt\93Ç\82Ý\8d\9e\82Ý\92\86\82É\92v\96½\93I\83G\83\89\81[\82ª\94\90¶\82µ\82Ü\82µ\82½\81Bdefrule.txt\82ð\8dÄ\83C\83\93\83X\83g\81[\83\8b\82µ\82Ä\82\82¾\82³\82¢\81B');
+ ShowMessage('defrule.txt\93Ç\82Ý\8d\9e\82Ý\92\86\82É\92v\96½\93I\83G\83\89\81[\82ª\94\90¶\82µ\82Ü\82µ\82½\81Bdefrule.txt\82ð\8dÄ\83C\83\93\83X\83g\81[\83\8b\82µ\82Ä\82\82¾\82³\82¢\81B');
Application.Terminate;
Application.ProcessMessages;
Exit;
frmSetting := nil;
end;
//
+ BuildReplaceMenu(mnPresetReplaceRoot);
UpdateLayout;
tabChannel.Repaint;
frmLog.UpdateWindow;
if ScriptConstList.GetMenuByID(Root.Items[i].Tag).IfGhost <> '' then
Root.Items[i].Free;
end;
- end else begin
+ end else
// \91S\95\94\8dí\8f\9c
- for i := Root.Count-1 downto 0 do begin
- Root.Items[i].Free;
- end;
- end;
+ Root.Clear;
count := -1;
for i := 0 to ScriptConstList.Count-1 do begin
end;
Menu1 := TMenuItem.Create(Root);
- Menu1.Caption := ScriptConstList[i][j].Caption;
- Menu1.Hint := ScriptConstList[i][j].Caption;
- Menu1.AutoHotkeys := maManual;
- Menu1.Tag := ScriptConstList[i][j].ID;
- Menu1.OnClick := mnConstGroupClick;
+ with Menu1 do
+ begin
+ Caption := ScriptConstList[i][j].Caption;
+ Hint := ScriptConstList[i][j].Caption;
+ AutoHotkeys := maManual;
+ Tag := ScriptConstList[i][j].ID;
+ OnClick := mnConstGroupClick;
+ end;
if not Simple then begin
Root.Add(Menu1);
Inc(FBeginConnectFailCount);
end;
+procedure TfrmSender.BuildReplaceMenu(Root: TMenuItem);
+var
+ i: integer;
+ Presets: TReplacePresetCollection;
+ NewItem: TMenuItem;
+begin
+ Root.Clear;
+ Presets := Pref.ReplacePresets.Presets;
+ for i := 0 to Presets.Count-1 do
+ begin
+ NewItem := TMenuItem.Create(Root);
+ with NewItem do
+ begin
+ Caption := Presets[i].Title;
+ ShortCut := Presets[i].ShortCut;
+ AutoHotkeys := maManual;
+ Hint := Presets[i].Pairs.StringExpression;
+ Tag := i;
+ OnClick := mnPresetReplaceClick;
+ end;
+ Root.Add(NewItem);
+ end;
+end;
+
+procedure TfrmSender.mnPresetReplaceClick(Sender: TObject);
+var
+ Preset: TReplacePreset;
+ Lines, New: string;
+begin
+ // \83v\83\8a\83Z\83b\83g\92u\8a·\82ð\8eÀ\8ds
+ Preset := Pref.ReplacePresets.Presets[(Sender as TMenuItem).Tag];
+ Lines := memScript.Lines.Text;
+ New := Preset.Pairs.ExecuteReplace(Lines);
+ if New <> Lines then
+ begin
+ memScript.SelectAll;
+ memScript.SelText := New;
+ end;
+end;
+
end.