+end;
+
+procedure TEditorForm.SpaceToNBSPActionExecute(Sender: TObject);
+begin
+ GikoSys.Setting.SpaceToNBSP := SpaceToNBSPAction.Checked;
+ if EditorPage.ActivePage = PreviewTab then
+ Preview;
+end;
+
+procedure TEditorForm.AmpToCharRefActionExecute(Sender: TObject);
+begin
+ GikoSys.Setting.AmpToCharRef := AmpToCharRefAction.Checked;
+ if EditorPage.ActivePage = PreviewTab then
+ Preview;
+end;
+
+procedure TEditorForm.BoardTopClick(Sender: TObject);
+var
+ ini: TIniFile;
+begin
+ ini := TIniFile.Create(GikoSys.Setting.GetFileName);
+ try
+ BoardtopTab.TabVisible := BoardTop.Checked;
+ ini.WriteBool('EditorForm', 'BoardTopTab', BoardtopTab.TabVisible);
+ finally
+ ini.Free;
+ end;
+end;
+
+
+procedure TEditorForm.GetSETTINGTXTActionExecute(Sender: TObject);
+var
+ URL, RefURL: string;
+ settingBody: TStringList;
+ tmpBoard: TBoard;
+begin
+ InitIdHTTP(Indy);
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+
+ if tmpBoard = nil then Exit;
+
+ RefURL := tmpBoard.URL;
+ if RefURL[Length(RefURL)] <> '/' then
+ URL := RefURL + '/' + 'SETTING.TXT'
+ else
+ URL := RefURL + 'SETTING.TXT';
+
+ Indy.Request.LastModified := tmpBoard.SETTINGTXTTime;
+ Indy.Request.Referer := RefURL;
+ Screen.Cursor := crHourGlass;
+ settingBody := TStringList.Create;
+ try
+ StatusBar.Panels[0].Text := 'SETTING.TXT\83_\83E\83\93\83\8d\81[\83h\92\86';
+ try
+ settingBody.Text := Indy.Get(URL);
+ if( Indy.ResponseCode = 200 ) then begin
+ settingBody.SaveToFile(tmpBoard.GetSETTINGTXTFileName);
+ tmpBoard.SETTINGTXTTime := Indy.Response.LastModified;
+ tmpBoard.IsSETTINGTXT := true;
+ tmpBoard.TitlePictureURL := GetTitlePictureURL(settingBody, tmpBoard);
+ tmpBoard.Modified := true;
+ StatusBar.Panels[0].Text := 'SETTING.TXT\8eæ\93¾\8a®\97¹(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ except
+ on E: EIdException do begin
+ if( AnsiPos('304', E.Message) > 0 ) then
+ StatusBar.Panels[0].Text := 'SETTING.TXT\8dX\90V\96³\82µ(' + IntToStr(Indy.ResponseCode) + ')'
+ else
+ StatusBar.Panels[0].Text := 'SETTING.TXT\8eæ\93¾\83G\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ end;
+ finally
+ settingBody.Free;
+ Screen.Cursor := crDefault;
+ end;
+ ShowBoardInformation(tmpBoard, BoardInformationMemo);
+end;
+
+procedure TEditorForm.ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
+var
+ body: TStringList;
+begin
+ AMemo.Clear;
+ AMemo.Lines.Add('[SETTING.TXT]');
+ if ABoard.IsSETTINGTXT then begin
+ if FileExists(ABoard.GetSETTINGTXTFileName) then begin
+ AMemo.Lines.Add(DateTimeToStr(ABoard.SETTINGTXTTime) + ' \8dX\90V');
+ body := TStringList.Create;
+ try
+ body.LoadFromFile(ABoard.GetSETTINGTXTFileName);
+ AMemo.Lines.AddStrings(body);
+ finally
+ body.Free;
+ end;
+ end else begin
+ ABoard.IsSETTINGTXT := false;
+ ABoard.SETTINGTXTTime := ZERO_DATE;
+ AMemo.Lines.Add('Local\82É\95Û\91¶\82³\82ê\82½SETTING.TXT\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ');
+ AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8dÄ\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B');
+ end;
+ end else begin
+ AMemo.Lines.Add('SETTING.TXT\82ð\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B');
+ AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B');
+ end;
+end;
+function TEditorForm.GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
+//BBS_TITLE_PICTURE=
+//BBS_FIGUREHEAD=
+var
+ i: Integer;
+ tmp: string;
+begin
+ Result := '';
+ for i := 0 to body.Count - 1 do begin
+ if (AnsiPos('BBS_TITLE_PICTURE=', body[i]) > 0) or
+ (AnsiPos('BBS_FIGUREHEAD=', body[i]) > 0) then begin
+ tmp := body[i];
+ Delete(tmp, 1, AnsiPos('=', tmp));
+ if AnsiPos('../', tmp) > 0 then begin
+ tmp := CustomStringReplace(tmp, '../', GikoSys.UrlToServer(ABoard.URL));
+ end;
+ Result := tmp;
+ Exit;
+ end;
+ end;
+end;
+
+procedure TEditorForm.GetTitlePictureActionUpdate(Sender: TObject);
+begin
+ if FThreadItem = nil then
+ GetTitlePictureAction.Enabled := FBoard.IsSETTINGTXT
+ else
+ GetTitlePictureAction.Enabled := FThreadItem.ParentBoard.IsSETTINGTXT;
+
+end;
+
+procedure TEditorForm.GetTitlePictureActionExecute(Sender: TObject);
+var
+ memStream: TMemoryStream;
+ tmpBoard: TBoard;
+begin
+ InitIdHTTP(Indy);
+ memStream := TMemoryStream.Create;
+ try
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+
+ Indy.Request.Referer := tmpBoard.URL;
+ if tmpBoard.TitlePictureURL <> '' then begin
+ StatusBar.Panels[0].Text := '\94Â\83g\83b\83v\89æ\91\9c\83_\83E\83\93\83\8d\81[\83h\92\86';
+ Screen.Cursor := crHourGlass;
+ try
+ Indy.Get(tmpBoard.TitlePictureURL, memStream);
+ if Indy.ResponseCode = 200 then begin
+ memStream.SaveToFile(tmpBoard.GetTitlePictureFileName);
+ ShowTitlePicture();
+ tmpBoard.Modified := true;
+ end;
+ except
+ end;
+ end;
+ finally
+ Screen.Cursor := crDefault;
+ StatusBar.Panels[0].Text := '\94Â\83g\83b\83v\89æ\91\9c (' + IntToStr(Indy.ResponseCode) + ')';
+ memStream.Free;
+ end;
+
+end;
+procedure TEditorForm.ShowTitlePicture();
+var
+ tmpBoard: TBoard;
+ s: String;
+begin
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+
+ if FileExists(tmpBoard.GetTitlePictureFileName) then begin
+ TitlePictureBrowser.Navigate(tmpBoard.GetTitlePictureFileName);
+ end else begin
+ s := '\94Â\83g\83b\83v\89æ\91\9c\96¢\8eæ\93¾\82Å\82·\81B<br>\83\81\83j\83\85\81[\82æ\82è\8eæ\93¾\82µ\82Ä\82\82¾\82³\82¢\81B';
+ SetContent(s, TitlePictureBrowser);
+ end;
+end;
+
+function TEditorForm.GetFusianaName(body: TStringList; ABoard: TBoard): String;
+var
+ i: Integer;
+ tmp: string;
+begin
+ for i := 0 to body.Count - 1 do begin
+ if (AnsiPos('BBS_NONAME_NAME=', body[i]) > 0) then begin
+ tmp := body[i];
+ Delete(tmp, 1, AnsiPos('=', tmp));
+ Result := tmp;
+ Exit;
+ end;
+ end;
+end;
+
+procedure TEditorForm.GetHeadTXTActionExecute(Sender: TObject);
+var
+ URL, RefURL: string;
+ settingBody: TStringList;
+ tmpBoard: TBoard;
+ wDoc, WTex: OLEVariant;
+begin
+ InitIdHTTP(Indy);
+ if FThreadItem = nil then
+ tmpBoard := FBoard
+ else
+ tmpBoard := FThreadItem.ParentBoard;
+
+ if tmpBoard = nil then Exit;
+
+ RefURL := tmpBoard.URL;
+ if RefURL[Length(RefURL)] <> '/' then
+ URL := RefURL + '/' + 'head.txt'
+ else
+ URL := RefURL + 'head.txt';
+
+ if FileExists(tmpBoard.GETHEADTXTFileName) then
+ Indy.Request.LastModified := tmpBoard.HEADTXTTime
+ else
+ Indy.Request.LastModified := ZERO_DATE;
+
+ Indy.Request.Referer := RefURL;
+ Screen.Cursor := crHourGlass;
+ settingBody := TStringList.Create;
+ try
+ StatusBar.Panels[0].Text := 'head.txt\83_\83E\83\93\83\8d\81[\83h\92\86';
+ try
+ settingBody.Text := Indy.Get(URL);
+ if( Indy.ResponseCode = 200 ) then begin
+ settingBody.Insert(0, '<HTML lang="ja"><HEAD>');
+ settingBody.Insert(1, '<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">');
+ settingBody.Insert(2, '<TITLE>' + tmpBoard.Title + '</TITLE>');
+ settingBody.Insert(3, '<base href="' + RefURL + '"></HEAD><BODY>');
+ settingBody.Add('</BODY></HTML>');
+ settingBody.SaveToFile(tmpBoard.GETHEADTXTFileName);
+ tmpBoard.HEADTXTTime := Indy.Response.LastModified;
+ tmpBoard.IsHEADTXT := true;
+ tmpBoard.Modified := true;
+ StatusBar.Panels[0].Text := 'head.txt\8eæ\93¾\8a®\97¹(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ except
+ on E: EIdException do begin
+ if( AnsiPos('304', E.Message) > 0 ) then
+ StatusBar.Panels[0].Text := 'head.txt\8dX\90V\96³\82µ(' + IntToStr(Indy.ResponseCode) + ')'
+ else
+ StatusBar.Panels[0].Text := 'head.txt\8eæ\93¾\83G\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
+ end;
+ end;
+ finally
+ settingBody.Free;
+ Screen.Cursor := crDefault;
+ end;
+ if tmpBoard.IsHEADTXT then begin
+ WebBrowser1.Navigate(tmpBoard.GETHEADTXTFileName);
+ wDoc := WebBrowser1.Document;
+ wTex := wDoc.body.createTextRange;
+ Memo1.Text := wTex.text;
+ end;
+
+end;
+
+end.