• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

ギコナビ


Commit MetaInfo

Revisiondc1ba8ccb38283df9d56c040ab09773e10a53010 (tree)
Time2006-07-30 10:09:54
Authorcvs2git <cvs2git>
Commitercvs2git

Log Message

This commit was manufactured by cvs2svn to create tag 'v1_53_0_668'.

Change Summary

Incremental Difference

--- a/Giko.dfm
+++ b/Giko.dfm
@@ -1,5 +1,5 @@
11 object GikoForm: TGikoForm
2- Left = 241
2+ Left = 422
33 Top = 68
44 HorzScrollBar.Visible = False
55 VertScrollBar.Visible = False
@@ -159,7 +159,7 @@ object GikoForm: TGikoForm
159159 object ToolBar1: TToolBar
160160 Left = 2
161161 Top = 4
162- Width = 15
162+ Width = 16
163163 Height = 18
164164 Align = alNone
165165 AutoSize = True
@@ -346,7 +346,7 @@ object GikoForm: TGikoForm
346346 end>
347347 EdgeBorders = [ebLeft, ebTop, ebRight]
348348 EdgeInner = esLowered
349- OnContextPopup = MainCoolBarContextPopup
349+ OnContextPopup = ListCoolBarContextPopup
350350 OnBandInfo = ListCoolBarBandInfo
351351 OnChevronClick = ListCoolBarChevronClick
352352 object ListToolBar: TToolBar
@@ -573,7 +573,7 @@ object GikoForm: TGikoForm
573573 end>
574574 EdgeBorders = [ebLeft, ebTop, ebRight]
575575 EdgeInner = esLowered
576- OnContextPopup = MainCoolBarContextPopup
576+ OnContextPopup = BrowserCoolBarContextPopup
577577 OnBandInfo = BrowserCoolBarBandInfo
578578 OnChevronClick = BrowserCoolBarChevronClick
579579 object BrowserToolBar: TToolBar
@@ -971,7 +971,7 @@ object GikoForm: TGikoForm
971971 OnResize = AddressToolBarResize
972972 object AddressComboBox: TComboBox
973973 Left = 0
974- Top = 0
974+ Top = 1
975975 Width = 177
976976 Height = 20
977977 DropDownCount = 20
--- a/Giko.pas
+++ b/Giko.pas
@@ -508,6 +508,12 @@ type
508508 State: TDragState; var Accept: Boolean);
509509 procedure FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
510510 Y: Integer);
511+ procedure ListCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
512+ var Handled: Boolean);
513+ procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
514+ var Handled: Boolean);
515+ procedure BrowserCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
516+ var Handled: Boolean);
511517 procedure FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
512518 procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint;
513519 var Handled: Boolean);
@@ -543,8 +549,6 @@ type
543549 procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton;
544550 Shift: TShiftState; X, Y: Integer);
545551 procedure GetResURLMenuClick(Sender: TObject);
546- procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
547- var Handled: Boolean);
548552 private
549553 { Private éŒ¾ }
550554 FEnabledCloseButton: Boolean;
@@ -643,6 +647,8 @@ type
643647 procedure TreeDoubleClick( Node : TTreeNode );
644648 /// ŠeŠ‚É‚ ‚éƒLƒƒƒrƒlƒbƒgE BBS ƒƒjƒ…[‚ðƒZƒbƒg^XV
645649 procedure SetBBSMenu;
650+ /// ƒ^ƒuŽæ“¾
651+ procedure GetTabURLs(AStringList: TStringList);
646652 /// ListColumnPopupMenu ƒAƒCƒeƒ€‚̃NƒŠƒbƒNƒCƒxƒ“ƒg
647653 procedure ListColumnPopupMenuOnClick( Sender : TObject );
648654 //! i‚荞‚Ý•¶Žš—ñÝ’è
@@ -771,6 +777,10 @@ type
771777 procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
772778 //ListView‚Å‘I‘ð‚³‚ê‚Ä‚¢‚éƒAƒCƒeƒ€‚ðŽæ“¾‚·‚é
773779 procedure SelectListItem(List: TList);
780+ /// ƒ^ƒu•Û‘¶
781+ procedure SaveTabURLs;
782+ /// ƒ^ƒu“ǂݏo‚µ
783+ procedure LoadTabURLs;
774784 //Žw’肵‚½ƒŒƒX‚ðƒRƒs[‚·‚é
775785 procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
776786 //
@@ -1436,9 +1446,7 @@ begin
14361446
14371447 //FormCrete‚©‚çˆÚ“®B
14381448 if GikoSys.Setting.TabAutoLoadSave then begin
1439- GikoDM.TabsOpenAction.Tag := 1;
1440- GikoDM.TabsOpenAction.Execute;
1441- GikoDM.TabsOpenAction.Tag := 0;
1449+ GikoDM.TabAutoLoadAction.Execute;
14421450 end;
14431451
14441452 //ActionList‚ÌGroupIndex‚ðŒ³‚É–ß‚·
@@ -1460,7 +1468,7 @@ begin
14601468 end;
14611469
14621470 if GikoSys.Setting.TabAutoLoadSave then begin
1463- GikoDM.TabsSaveAction.Execute;
1471+ GikoDM.TabAutoSaveAction.Execute;
14641472 end;
14651473
14661474 if (SearchDialog <> nil) then begin
@@ -1811,6 +1819,8 @@ begin
18111819 RoundList.LoadRoundThreadFile;
18121820
18131821 LockWindowUpdate(0);
1822+ //
1823+ GikoDM.TabsOpenAction.Execute;
18141824 end;
18151825
18161826 {!
@@ -6391,6 +6401,35 @@ begin
63916401
63926402 end;
63936403
6404+procedure TGikoForm.ListCoolBarContextPopup(Sender: TObject;
6405+ MousePos: TPoint; var Handled: Boolean);
6406+begin
6407+
6408+ FToolBarSettingSender := tssList;
6409+ MousePos := ListCoolBar.ClientToScreen( MousePos );
6410+ MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
6411+
6412+end;
6413+
6414+procedure TGikoForm.MainCoolBarContextPopup(Sender: TObject;
6415+ MousePos: TPoint; var Handled: Boolean);
6416+begin
6417+
6418+ FToolBarSettingSender := tssMain;
6419+ MousePos := MainCoolBar.ClientToScreen( MousePos );
6420+ MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
6421+
6422+end;
6423+
6424+procedure TGikoForm.BrowserCoolBarContextPopup(Sender: TObject;
6425+ MousePos: TPoint; var Handled: Boolean);
6426+begin
6427+
6428+ FToolBarSettingSender := tssBrowser;
6429+ MousePos := BrowserCoolBar.ClientToScreen( MousePos );
6430+ MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
6431+
6432+end;
63946433 procedure TGikoForm.SetListViewBackGroundColor(value: TColor);
63956434 begin
63966435 if FListViewBackGroundColor <> value then begin
@@ -6877,6 +6916,89 @@ begin
68776916 end;
68786917 end;
68796918
6919+procedure TGikoForm.GetTabURLs(AStringList: TStringList);
6920+var
6921+ rec : TBrowserRecord;
6922+ i : Integer;
6923+begin
6924+ for i := 0 to BrowserTab.Tabs.Count -1 do begin
6925+ try
6926+ rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] );
6927+ if( rec <> nil) and (rec.Thread <> nil) then
6928+ AStringList.Add( rec.Thread.URL );
6929+ except
6930+ end;
6931+ end;
6932+end;
6933+
6934+procedure TGikoForm.SaveTabURLs;
6935+const
6936+ Filename = 'tab.sav';
6937+ bFilename = '~tab.sav';
6938+var
6939+ SaveStringList: TStringList;
6940+begin
6941+ SaveStringList := TStringList.Create;
6942+ try
6943+ GetTabURLs(SaveStringList);
6944+ try
6945+ if FileExists( GikoSys.GetAppDir + Filename) then begin
6946+ CopyFile(PChar(GikoSys.GetAppDir + Filename),
6947+ PChar(GikoSys.GetAppDir + bFilename), False);
6948+ end;
6949+ except
6950+ end;
6951+ SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename);
6952+ finally
6953+ SaveStringList.Free;
6954+ end;
6955+end;
6956+
6957+procedure TGikoForm.LoadTabURLs;
6958+const
6959+ TABFILE = 'tab.sav';
6960+var
6961+ i, bound : Integer;
6962+ item : TThreadItem;
6963+ URLs : TStringList;
6964+ GikoTab : TGikoTabAppend;
6965+ fileName : string;
6966+begin
6967+ GikoTab := GikoSys.Setting.BrowserTabAppend;
6968+ URLs := TStringList.Create();
6969+ try
6970+ fileName := ExtractFilePath(Application.ExeName) + TABFILE;
6971+ if FileExists(fileName) then begin
6972+ try
6973+ URLs.LoadFromFile(fileName);
6974+ bound := URLs.Count - 1;
6975+ if bound > -1 then begin
6976+ GikoSys.Setting.BrowserTabAppend := gtpLast;
6977+ for i := 0 to bound do begin
6978+ item := BBSsFindThreadFromURL( URLs[ i ] );
6979+ if item <> nil then
6980+ InsertBrowserTab( item, false );
6981+ end;
6982+ //Å‰‚Ì‚P–‡‚ÉÝ’è ƒAƒhƒŒƒX‚̐ݒè‚Ì‚½‚߂̃Jƒ‰ŒÄ‚Ñ
6983+ if BrowserTab.Tabs.Count > 0 then begin
6984+ BrowserTab.OnChange(nil);
6985+ end;
6986+ end else begin
6987+ // ‹ó‚̃tƒ@ƒCƒ‹‚̏ꍇCƒoƒbƒNƒAƒbƒv‚ðíœ‚µ‚È‚¢‚½‚߂ɍ폜
6988+ DeleteFile(fileName);
6989+ end;
6990+ except
6991+ on EFOpenError do ShowMessage('ƒ^ƒuƒtƒ@ƒCƒ‹‚ªŠJ‚¯‚Ü‚¹‚ñ');
6992+ end;
6993+ end;
6994+ finally
6995+ URLs.Free;
6996+ GikoSys.Setting.BrowserTabAppend := GikoTab;
6997+ end;
6998+
6999+end;
7000+
7001+
68807002 /// ListView ‚̃Jƒ‰ƒ€•‚¨‚æ‚шʒu‚Ì•Û‘¶
68817003 procedure TGikoForm.ActiveListColumnSave;
68827004 var
@@ -7672,30 +7794,6 @@ begin
76727794 end;
76737795 end;
76747796
7675-procedure TGikoForm.MainCoolBarContextPopup(Sender: TObject;
7676- MousePos: TPoint; var Handled: Boolean);
7677-var
7678- pos : TPoint;
7679- coolBar: TGikoCoolBar;
7680-begin
7681- Handled := False;
7682- if (Sender <> nil) and (Sender is TGikoCoolBar) then begin
7683- coolBar := TGikoCoolBar(Sender);
7684- if (coolBar = MainCoolBar) then begin
7685- FToolBarSettingSender := tssMain;
7686- end else if (coolBar = ListCoolBar) then begin
7687- FToolBarSettingSender := tssList;
7688- end else if (coolBar = BrowserCoolBar) then begin
7689- FToolBarSettingSender := tssBrowser;
7690- end else begin
7691- FToolBarSettingSender := tssNone;
7692- end;
7693- pos := coolBar.ClientToScreen( MousePos );
7694- MainCoolBarPopupMenu.Popup( pos.X, pos.Y );
7695- Handled := True;
7696- end;
7697-end;
7698-
76997797 initialization
77007798 OleInitialize(nil);
77017799 finalization
--- a/GikoDataModule.dfm
+++ b/GikoDataModule.dfm
@@ -1079,6 +1079,18 @@ object GikoDM: TGikoDM
10791079 OnExecute = BrowsBoradHeadActionExecute
10801080 OnUpdate = LogFolderOpenActionUpdate
10811081 end
1082+ object TabAutoSaveAction: TAction
1083+ Category = #12501#12449#12452#12523
1084+ Caption = #12479#12502#12398#38918#30058#12434#33258#21205#20445#23384
1085+ Hint = #12479#12502#12398#38918#30058#12434#33258#21205#20445#23384
1086+ OnExecute = TabAutoSaveActionExecute
1087+ end
1088+ object TabAutoLoadAction: TAction
1089+ Category = #12501#12449#12452#12523
1090+ Caption = #12479#12502#12398#38918#30058#12434#33258#21205#24489#20803
1091+ Hint = #12479#12502#12398#38918#30058#12434#33258#21205#24489#20803
1092+ OnExecute = TabAutoLoadActionExecute
1093+ end
10821094 object JumpToNumOfResAction: TAction
10831095 Category = #12473#12524#12483#12489
10841096 Caption = #25351#23450#12375#12383#30058#21495#12398#12524#12473#12395#39131#12406
--- a/GikoDataModule.pas
+++ b/GikoDataModule.pas
@@ -192,6 +192,8 @@ type
192192 TabsSaveAction: TAction;
193193 TabsOpenAction: TAction;
194194 BrowsBoradHeadAction: TAction;
195+ TabAutoSaveAction: TAction;
196+ TabAutoLoadAction: TAction;
195197 JumpToNumOfResAction: TAction;
196198 FavoriteTreeViewCollapseAction: TAction;
197199 RightTabCloseAction: TAction;
@@ -306,6 +308,8 @@ type
306308 procedure SelectItemSaveForDatExecute(Sender: TObject);
307309 procedure TabsSaveActionExecute(Sender: TObject);
308310 procedure TabsOpenActionExecute(Sender: TObject);
311+ procedure TabAutoSaveActionExecute(Sender: TObject);
312+ procedure TabAutoLoadActionExecute(Sender: TObject);
309313 procedure BeLogInOutActionExecute(Sender: TObject);
310314 procedure BeLogInOutActionUpdate(Sender: TObject);
311315 procedure KokomadeActionExecute(Sender: TObject);
@@ -425,8 +429,6 @@ type
425429 { Public éŒ¾ }
426430 procedure RepaintStatusBar;
427431 function EditorFormExists(): boolean;
428- procedure GetTabURLs(AStringList: TStringList);
429- procedure OpenURLs(AStringList: TStringList);
430432 published
431433 { Published éŒ¾ }
432434 //! TAction‚ÅGetActiveContent‚ªnilˆÈŠO‚Å—LŒø‚É‚È‚é
@@ -2137,107 +2139,34 @@ end;
21372139 //! ƒ^ƒu‚̏‡”Ô‚ð•Û‘¶
21382140 // *************************************************************************
21392141 procedure TGikoDM.TabsSaveActionExecute(Sender: TObject);
2140-const
2141- Filename = 'tab.sav';
2142- bFilename = '~tab.sav';
2143-var
2144- SaveStringList: TStringList;
21452142 begin
2146- SaveStringList := TStringList.Create;
2147- try
2148- GetTabURLs(SaveStringList);
2149- try
2150- if FileExists( GikoSys.GetAppDir + Filename) then begin
2151- CopyFile(PChar(GikoSys.GetAppDir + Filename),
2152- PChar(GikoSys.GetAppDir + bFilename), False);
2153- end;
2154- except
2155- end;
2156- SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename);
2157- finally
2158- SaveStringList.Free;
2159- end;
2143+ GikoForm.SaveTabURLs;
21602144 end;
21612145 // *************************************************************************
2162-//! ƒuƒ‰ƒEƒUƒ^ƒu‚ɐݒ肳‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ÌURLŽæ“¾
2146+//! ƒ^ƒu‚̏‡”Ԃ𕜌³
21632147 // *************************************************************************
2164-procedure TGikoDM.GetTabURLs(AStringList: TStringList);
2165-var
2166- rec : TBrowserRecord;
2167- i : Integer;
2148+procedure TGikoDM.TabsOpenActionExecute(Sender: TObject);
21682149 begin
2169- for i := 0 to GikoForm.BrowserTab.Tabs.Count -1 do begin
2170- try
2171- rec := TBrowserRecord( GikoForm.BrowserTab.Tabs.Objects[ i ] );
2172- if( rec <> nil) and (rec.Thread <> nil) then
2173- AStringList.Add( rec.Thread.URL );
2174- except
2175- end;
2150+ GikoForm.LoadTabURLs;
2151+ // TabsOpenAction.Tag‚́C”ˆꗗXV‚©‚çŒÄ‚΂ꂽ‚Æ‚«‚Í1‚É‚È‚Á‚Ä‚¢‚é
2152+ if (GikoForm.BrowserTab.Tabs.Count = 0)
2153+ and (TabsOpenAction.Tag = 0) then begin
2154+ ShowMessage('•\Ž¦‚·‚éƒ^ƒu‚ª‚ ‚è‚Ü‚¹‚ñB');
21762155 end;
21772156 end;
21782157 // *************************************************************************
2179-//! Žw’肳‚ꂽURL‚ðŠJ‚«Cæ“ª‚̃^ƒu‚ɃtƒH[ƒJƒX‚·‚é
2180-// *************************************************************************
2181-procedure TGikoDM.OpenURLs(AStringList: TStringList);
2182-var
2183- GikoTab : TGikoTabAppend;
2184- i, bound : Integer;
2185- item : TThreadItem;
2186-begin
2187- if (AStringList <> nil) then begin
2188- GikoTab := GikoSys.Setting.BrowserTabAppend;
2189- try
2190- bound := AStringList.Count - 1;
2191- if bound > -1 then begin
2192- GikoSys.Setting.BrowserTabAppend := gtpLast;
2193- for i := 0 to bound do begin
2194- item := BBSsFindThreadFromURL( AStringList[ i ] );
2195- if item <> nil then
2196- GikoForm.InsertBrowserTab( item, false );
2197- end;
2198- //Å‰‚Ì‚P–‡‚ÉÝ’è ƒAƒhƒŒƒX‚̐ݒè‚Ì‚½‚߂̃Jƒ‰ŒÄ‚Ñ
2199- if GikoForm.BrowserTab.Tabs.Count > 0 then begin
2200- GikoForm.BrowserTab.OnChange(nil);
2201- end;
2202- end;
2203- finally
2204- GikoSys.Setting.BrowserTabAppend := GikoTab;
2205- end;
2206- end;
2158+//! ƒ^ƒu‚̏‡”Ô‚ðŽ©“®•Û‘¶
2159+// *************************************************************************
2160+procedure TGikoDM.TabAutoSaveActionExecute(Sender: TObject);
2161+begin
2162+ GikoForm.SaveTabURLs;
22072163 end;
22082164 // *************************************************************************
2209-//! ƒ^ƒu‚̏‡”Ԃ𕜌³
2165+//! ƒ^ƒu‚̏‡”Ô‚ðŽ©“®•œŒ³
22102166 // *************************************************************************
2211-procedure TGikoDM.TabsOpenActionExecute(Sender: TObject);
2212-const
2213- TABFILE = 'tab.sav';
2214-var
2215- URLs : TStringList;
2216- fileName : string;
2167+procedure TGikoDM.TabAutoLoadActionExecute(Sender: TObject);
22172168 begin
2218- URLs := TStringList.Create();
2219- try
2220- fileName := ExtractFilePath(Application.ExeName) + TABFILE;
2221- if FileExists(fileName) then begin
2222- try
2223- URLs.LoadFromFile(fileName);
2224- if (URLs.Count = 0) then begin
2225- // ‹ó‚̃tƒ@ƒCƒ‹‚̏ꍇCƒoƒbƒNƒAƒbƒv‚ðíœ‚µ‚È‚¢‚½‚߂ɍ폜
2226- SysUtils.DeleteFile(fileName);
2227- end else begin
2228- OpenURLs(URLs);
2229- end;
2230- except
2231- on EFOpenError do ShowMessage('ƒ^ƒuƒtƒ@ƒCƒ‹‚ªŠJ‚¯‚Ü‚¹‚ñ');
2232- end;
2233- end;
2234- finally
2235- URLs.Free;
2236- end;
2237-
2238- if (GikoForm.BrowserTab.Tabs.Count = 0) then begin
2239- ShowMessage('•\Ž¦‚·‚éƒ^ƒu‚ª‚ ‚è‚Ü‚¹‚ñB');
2240- end;
2169+ GikoForm.LoadTabURLs;
22412170 end;
22422171 // *************************************************************************
22432172 //! Be2ch‚ɃƒOƒCƒ“/ƒƒOƒAƒEƒg‚·‚é
--- a/GikoSystem.pas
+++ b/GikoSystem.pas
@@ -2753,13 +2753,7 @@ function TGikoSys.GetSameIDResAnchor(const AID : string; ThreadItem: TThreadItem
27532753 var
27542754 i: integer;
27552755 body: TStringList;
2756- Res: TResRec;
2757- ResLink : TResLinkRec;
27582756 begin
2759- // bodyˆÈŠO‚ÍŽg—p‚µ‚È‚¢‚̂ŏ‰Šú‰»‚µ‚È‚¢
2760- Res.FBody := '';
2761- Res.FType := glt2chNew;
2762-
27632757 Result := '';
27642758 if (not IsNoValidID(AID)) and
27652759 (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
@@ -2768,20 +2762,21 @@ begin
27682762 GetSameIDRes(AID, ThreadItem, body);
27692763 if (limited) and (body.Count > 20) then begin
27702764 for i := body.Count - 20 to body.Count - 1 do begin
2771- Res.FBody := Res.FBody + '&gt;' + body[i] + ' ';
2765+ Result := Result + '&gt;' + body[i] + ' ';
27722766 end;
27732767 end else begin
27742768 for i := 0 to body.Count - 1 do begin
2775- Res.FBody := Res.FBody + '&gt;' + body[i] + ' ';
2769+ Result := Result + '&gt;' + body[i] + ' ';
27762770 end;
27772771 end;
27782772 finally
27792773 body.Free;
27802774 end;
2781- ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
2782- ResLink.FKey := ChangeFileExt(ThreadItem.FileName, '');
2783- HTMLCreater.ConvRes(@Res, @ResLink, false);
2784- Result := Res.FBody;
2775+
2776+ Result := HTMLCreater.ConvRes(
2777+ Result,
2778+ ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''),
2779+ 'bbs', 'key', 'st', 'to', 'nofirst', 'true', false);
27852780 end;
27862781 end;
27872782
@@ -2842,13 +2837,7 @@ function TGikoSys.GetSameIDResAnchor(AIDNum : Integer; ThreadItem: TThreadItem;
28422837 var
28432838 i: integer;
28442839 body: TStringList;
2845- Res: TResRec;
2846- ResLink : TResLinkRec;
28472840 begin
2848- // bodyˆÈŠO‚ÍŽg—p‚µ‚È‚¢‚̂ŏ‰Šú‰»‚µ‚È‚¢
2849- Res.FBody := '';
2850- Res.FType := glt2chNew;
2851-
28522841 Result := '';
28532842 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
28542843 body := TStringList.Create;
@@ -2856,20 +2845,21 @@ begin
28562845 GetSameIDRes(AIDNum, ThreadItem, body);
28572846 if (limited) and (body.Count > 20) then begin
28582847 for i := body.Count - 20 to body.Count - 1 do begin
2859- Res.FBody := Res.FBody + '&gt;' + body[i] + ' ';
2848+ Result := Result + '&gt;' + body[i] + ' ';
28602849 end;
28612850 end else begin
28622851 for i := 0 to body.Count - 1 do begin
2863- Res.FBody := Res.FBody + '&gt;' + body[i] + ' ';
2852+ Result := Result + '&gt;' + body[i] + ' ';
28642853 end;
28652854 end;
28662855 finally
28672856 body.Free;
28682857 end;
2869- ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
2870- ResLink.FKey := ChangeFileExt(ThreadItem.FileName, '');
2871- HTMLCreater.ConvRes(@Res, @ResLink, false);
2872- Result := Res.FBody;
2858+ Result := HTMLCreater.ConvRes(
2859+ Result, ThreadItem.ParentBoard.BBSID,
2860+ ChangeFileExt(ThreadItem.FileName, ''),
2861+ 'bbs', 'key', 'st', 'to', 'nofirst', 'true',
2862+ false);
28732863 end;
28742864 end;
28752865
--- a/HTMLCreate.pas
+++ b/HTMLCreate.pas
@@ -60,20 +60,16 @@ type
6060 procedure CreateDefaultHTML (html:TBufferedWebBrowser; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
6161 procedure ConvertResAnchor(PRes: PResRec);
6262 procedure separateNumber(var st: String; var et: String; const Text, Separator: String);
63- function checkComma(const s : String; var j : Integer) : boolean;
63+ function checkComma(const s : String; var j : Integer; var No : String) : boolean;
6464 function addResAnchor(PAddRes: PResRec; PResLink : PResLinkRec; dat : boolean;
6565 var s : String; j : Integer; const No: String) : string;
66- function appendResAnchor(PAddRes: PResRec; PResLink : PResLinkRec;
67- dat : boolean; var s : String) : string;
68- function getNumberString(const str: String;var index :Integer; var dbCharlen: Boolean;
69- sLen :Integer): String;
70-
7166 public
7267 { Public éŒ¾ }
7368 procedure AddAnchorTag(PRes: PResRec);
7469 function LoadFromSkin(fileName: string; ThreadItem: TThreadItem; SizeByte: Integer): string;
7570 function SkinedRes(const skin: string; PRes: PResRec; const No: string): string;
7671 procedure ConvRes( PRes : PResRec; PResLink : PResLinkRec; DatToHTML: boolean = false); overload;
72+ function ConvRes(const Body, Bbs, Key, ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue : string; DatToHTML: boolean = false): string; overload;
7773 procedure CreateHTML2(Browser: TWebBrowser; ThreadItem: TThreadItem; var sTitle: string);
7874 procedure CreateHTML3(var html: TStringList; ThreadItem: TThreadItem; var sTitle: string);
7975 //ƒŒƒXƒ|ƒbƒvƒAƒbƒv‚̍쐬
@@ -356,9 +352,6 @@ begin
356352 end else
357353 Result := AID;
358354 end;
359-//! ƒŒƒXƒAƒ“ƒJ[‚̃ŒƒX”ԍ†‚𕪊„‚·‚é
360-// Text = '1-9' -> st = '1'; et = '9'
361-// Text = '10' -> st = '10'; et = '10'
362355 procedure THTMLCreate.separateNumber(var st: String; var et: String; const Text:String; const Separator: String);
363356 var
364357 p : Integer;
@@ -372,58 +365,54 @@ begin
372365 et := Text;
373366 end;
374367 end;
375-//! ƒŒƒXƒAƒ“ƒJ[‚ªŽw‚µ‚Ä‚¢‚郌ƒX”ԍ†‚Ì•¶Žš—ñ‚ðŽæ“¾‚·‚é
376-function THTMLCreate.getNumberString(
377- const str: String;
378- var index :Integer; var dbCharlen: Boolean; sLen :Integer)
379-: String;
380-const
381- SN = '0123456789';
382-var
383- ch : String;
384- sw : Boolean;
385-begin
386- Result := '';
387- sw := False;
388- while (index <= sLen) do begin
389- if (ByteType(str, index) = mbSingleByte) then begin
390- //1byte•¶Žš
391- ch := str[index];
392- Inc(index);
393- dbCharlen := false;
394- end else begin
395- //2byte•¶Žš
396- ch := ZenToHan(Copy(str, index, 2));
397- Inc(index, 2);
398- dbCharlen := true;
399- end;
400-
401- if System.Pos(ch, SN) > 0 then begin
402- Result := Result + ch;
403- end else if (ch = '-') then begin
404- if sw then break;
405- if Result = '' then break;
406- Result := Result + ch;
407- sw := true;
408- end else begin
409- break;
410- end;
411- end;
412-end;
413-
414368 procedure THTMLCreate.ConvRes( PRes : PResRec; PResLink : PResLinkRec; DatToHTML: boolean = false);
415369 const
416370 GT = '&gt;';
371+ SN = '0123456789';
417372 //ŒŸõ‘Ώۂ̕¶Žš—ñŒS
418373 TOKEN : array[0..5] of string = (GT+GT, GT, '„„', '„', '<a ', '<A ');
419374 var
420375 i : integer;
421376 s : string;
377+ sw: boolean;
378+ cm: boolean;
422379 No: string;
380+ oc : string;
423381 pos, pmin : integer;
424382 j : integer;
383+ ch : string;
425384 db : boolean;
385+ len : integer;
426386 rink : string;
387+
388+ procedure getNumberString;
389+ begin
390+ while (j <= len) do begin
391+ if (ByteType(s, j) = mbSingleByte) then begin
392+ //1byte•¶Žš
393+ ch := s[j];
394+ Inc(j);
395+ db := false;
396+ end else begin
397+ //2byte•¶Žš
398+ ch := ZenToHan(Copy(s, j, 2));
399+ Inc(j, 2);
400+ db := true;
401+ end;
402+
403+ if System.Pos(ch, SN) > 0 then begin
404+ No := No + ch;
405+ end else if (ch = '-') then begin
406+ if sw then break;
407+ if No = '' then break;
408+ No := No + ch;
409+ sw := true;
410+ end else begin
411+ break;
412+ end;
413+ end;
414+ end;
415+
427416 begin
428417 //s ‚É–{•¶‚ð‘S•”“ü‚ê‚é
429418 s := PRes.FBody;
@@ -482,22 +471,43 @@ begin
482471 end;
483472 // ƒŒƒXƒAƒ“ƒJ[‚ªŠÜ‚Ü‚ê‚Ä‚¢‚½‚ç,‚ª‘±‚­ŒÀ‚èƒAƒ“ƒJ[‚Æ‚µ‚Ĉµ‚¤
484473 if i <= 3 then begin
485- appendResAnchor(PRes, PResLink, DatToHTML, s );
474+ No := '';
475+ j := 1;
476+ len := Length(s);
477+ cm := checkComma(s, j, No);
478+ len := Length(s);
479+ while cm do begin
480+ oc := '';
481+ No := '';
482+ sw := false;
483+ db := false;
484+ getNumberString;
485+ //I’[‚܂ōs‚Á‚Ă̏I—¹‚©ƒ`ƒFƒbƒN
486+ if j <= len then begin
487+ if db then j := j - 2
488+ else j := j - 1;
489+ end;
490+ addResAnchor(PRes, PResLink, DatToHTML, s, j, No);
491+ j := 1;
492+ len := Length(s);
493+ cm := checkComma(s, j, No);
494+ end;
486495 end;
487496 end else begin
488497 //‰½‚©‚µ‚猩‚‚©‚Á‚½ƒpƒ^[ƒ“
489498 j := Length(TOKEN[i]) + 1;
499+ oc := '';
500+ No := '';
501+ sw := false;
490502 db := false;
491- No := getNumberString(s, j, db, Length(s) );
503+ len := Length(s);
504+ getNumberString;
492505 //I’[‚܂ōs‚Á‚Ă̏I—¹‚©ƒ`ƒFƒbƒN
493- if j <= Length(s) then begin
506+ if j <= len then begin
494507 if db then j := j - 2
495508 else j := j - 1;
496509 end;
497510 addResAnchor(PRes, PResLink, DatToHTML, s, j, No);
498-
499- // , ‚ª‘±‚­ŒÀ‚背ƒXƒAƒ“ƒJ[‚Æ‚µ‚ďˆ—‚·‚é
500- appendResAnchor(PRes, PResLink, DatToHTML, s );
501511 end;
502512 end;
503513 if Length(s) > 0 then begin
@@ -506,7 +516,8 @@ begin
506516 end;
507517 function THTMLCreate.checkComma(
508518 const s : String;
509- var j : Integer
519+ var j : Integer;
520+ var No : String
510521 ) : boolean;
511522 var
512523 bType : TMbcsByteType;
@@ -521,38 +532,10 @@ begin
521532 Inc(j)
522533 else
523534 Inc(j, 2);
535+ No := '';
524536 end;
525537 end;
526538 end;
527-function THTMLCreate.appendResAnchor(
528- PAddRes: PResRec; PResLink : PResLinkRec; dat : boolean;
529- var s : String) : string;
530-var
531- No{, ch, oc}: String;
532- len, j : Integer;
533- cm, {sw,} db : Boolean;
534-
535-begin
536- No := '';
537- j := 1;
538- cm := checkComma(s, j);
539- len := Length(s);
540- while cm do begin
541- db := false;
542- No := getNumberString(s, j, db, len );
543-
544- //I’[‚܂ōs‚Á‚Ă̏I—¹‚©ƒ`ƒFƒbƒN
545- if j <= len then begin
546- if db then j := j - 2
547- else j := j - 1;
548- end;
549- addResAnchor(PAddRes, PResLink, dat, s, j, No);
550- j := 1;
551- len := Length(s);
552- cm := checkComma(s, j);
553- end;
554-end;
555-
556539 function THTMLCreate.addResAnchor(
557540 PAddRes: PResRec; PResLink : PResLinkRec; dat : boolean;
558541 var s : String; j : Integer; const No: String) : string;
@@ -579,6 +562,186 @@ begin
579562 Delete(s, 1, j - 1);
580563 end;
581564
565+(*************************************************************************
566+ *
567+ * from HotZonu
568+ *************************************************************************)
569+function THTMLCreate.ConvRes(const Body, Bbs, Key,
570+ ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue : string;
571+ DatToHTML: boolean = false): string;
572+const
573+ GT = '&gt;';
574+ SN = '0123456789';
575+ FORMAT_LINK = '<a href="../test/read.cgi?%s=%s&%s=%s&%s=%s&%s=%s&%s=%s" target="_blank">';
576+ //ŒŸõ‘Ώۂ̕¶Žš—ñŒS
577+ TOKEN : array[0..5] of string = (GT+GT, GT, '„„', '„', '<a ', '<A ');
578+var
579+ i : integer;
580+ s : string;
581+ sw: boolean;
582+ cm: boolean;
583+ No: string;
584+ oc : string;
585+ pos, pmin : integer;
586+ j : integer;
587+ ch : string;
588+ db : boolean;
589+ len : integer;
590+ rink : string;
591+ function addResAnchor(const Left :string) : string;
592+ var
593+ st,et : string;
594+ begin
595+ //I’[‚܂ōs‚Á‚Ă̏I—¹‚©ƒ`ƒFƒbƒN
596+ if j <= len then begin
597+ if db then j := j - 2
598+ else j := j - 1;
599+ end;
600+ //‰½‚à”Žš‚ªŒ©‚‚©‚ç‚È‚¢‚Æ‚«
601+ if No = '' then begin
602+ Result := Left + Copy(s, 1, j - 1);
603+ end else begin
604+ separateNumber(st, et, No, '-');
605+
606+ if not DatToHTML then begin
607+ Result := Left + Format(FORMAT_LINK,
608+ [ParamBBS, Bbs, ParamKey, Key, ParamStart, st, ParamTo, et, ParamNoFirst, ParamTrue]);
609+ end else begin
610+ Result := Left + Format('<a href="#%s">', [st]);
611+ end;
612+ Result := Result + Copy(s, 1, j - 1) + '</a>';
613+ end;
614+ Delete(s, 1, j - 1);
615+ end;
616+
617+ procedure getNumberString;
618+ begin
619+ while (j <= len) do begin
620+ if (ByteType(s, j) = mbSingleByte) then begin
621+ //1byte•¶Žš
622+ ch := s[j];
623+ Inc(j);
624+ db := false;
625+ end else begin
626+ //2byte•¶Žš
627+ ch := ZenToHan(Copy(s, j, 2));
628+ Inc(j, 2);
629+ db := true;
630+ end;
631+
632+ if System.Pos(ch, SN) > 0 then begin
633+ No := No + ch;
634+ end else if (ch = '-') then begin
635+ if sw then break;
636+ if No = '' then break;
637+ No := No + ch;
638+ sw := true;
639+ end else begin
640+ break;
641+ end;
642+ end;
643+ end;
644+
645+ function checkComma : boolean;
646+ begin
647+ j := 1;
648+ len := Length(s);
649+ if ((len > 0) and (s[j] = ',')) or ((len > 1) and (ZenToHan(Copy(s, j ,2)) = ',')) then begin
650+ Result := true;
651+ if (ByteType(s, j) = mbSingleByte) then
652+ Inc(j)
653+ else
654+ Inc(j, 2);
655+ No := '';
656+ end else begin
657+ Result := false;
658+ end;
659+ end;
660+begin
661+ //s ‚É–{•¶‚ð‘S•”“ü‚ê‚é
662+ s := Body;
663+ //Œ‹‰Ê‚ðƒNƒŠƒA
664+ Result := '';
665+
666+ //
667+ while Length(s) > 2 do begin
668+ pmin := Length(s) + 1;
669+ i := Length(token);
670+ for j := 0 to 5 do begin
671+ pos := AnsiPos(TOKEN[j], s);
672+ if pos <> 0 then begin
673+ if pos < pmin then begin
674+ //‚Ç‚ê‚Ńqƒbƒg‚µ‚½‚©•Û‘¶
675+ i := j;
676+ //Å¬’l‚ðXV
677+ pmin := pos;
678+ end;
679+ end;
680+ end;
681+
682+ //ƒqƒbƒg‚µ‚½•¶Žš—ñ‚̈ê‚ÂŽè‘O‚Ü‚ÅŒ‹‰Ê‚ɃRƒs[
683+ Result := Result + Copy(s, 1, pmin - 1);
684+ Delete(s, 1, pmin - 1);
685+
686+ if i = 6 then begin
687+ //ƒqƒbƒg‚È‚µ
688+ end else if (i = 4) or (i = 5) then begin
689+ //'<a ' or '<A' ‚Ńqƒbƒg '</a>' or '</A>' ‚܂ŃRƒs[
690+ pmin := AnsiPos('</a>' , s);
691+ pos := AnsiPos('</A>' , s);
692+ if (pmin <> 0) and (pos <> 0) then begin
693+ if (pmin > pos) then begin
694+ pmin := pos;
695+ end;
696+ end else if (pos <> 0) then begin
697+ pmin := pos;
698+ end;
699+ rink := Copy(s, 1, pmin + 3);
700+ Result := Result + rink;
701+ Delete(s, 1, pmin + 3);
702+
703+ pmin := Length(rink);
704+ i := Length(TOKEN);
705+ for j := 0 to 3 do begin
706+ pos := AnsiPos(TOKEN[j], rink);
707+ if pos <> 0 then begin
708+ if pos < pmin then begin
709+ //‚Ç‚ê‚Ńqƒbƒg‚µ‚½‚©•Û‘¶
710+ i := j;
711+ //Å¬’l‚ðXV
712+ pmin := pos;
713+ end;
714+ end;
715+ end;
716+ // ƒŒƒXƒAƒ“ƒJ[‚ªŠÜ‚Ü‚ê‚Ä‚¢‚½‚ç,‚ª‘±‚­ŒÀ‚èƒAƒ“ƒJ[‚Æ‚µ‚Ĉµ‚¤
717+ if i <= 3 then begin
718+ No := '';
719+ cm := checkComma;
720+ len := Length(s);
721+ while cm do begin
722+ oc := '';
723+ No := '';
724+ sw := false;
725+ db := false;
726+ getNumberString;
727+ Result := addResAnchor(Result);
728+ cm := checkComma;
729+ end;
730+ end;
731+ end else begin
732+ //‰½‚©‚µ‚猩‚‚©‚Á‚½ƒpƒ^[ƒ“
733+ j := Length(TOKEN[i]) + 1;
734+ oc := '';
735+ No := '';
736+ sw := false;
737+ db := false;
738+ len := Length(s);
739+ getNumberString;
740+ Result := addResAnchor(Result);
741+ end;
742+ end;
743+ Result := Result + s;
744+end;
582745
583746 procedure THTMLCreate.ConvertResAnchor(PRes: PResRec);
584747 const
@@ -1468,8 +1631,7 @@ begin
14681631 finally
14691632 dirs.Free;
14701633 end;
1471-end;
1472-{!
1634+end;{!
14731635 \brief datƒtƒ@ƒCƒ‹‚̈ꃉƒCƒ“‚𕪉ð
14741636 \param Line datƒtƒ@ƒCƒ‹‚ð\¬‚·‚é 1 s
14751637 \return ƒŒƒXî•ñ
--- a/NewBoard.pas
+++ b/NewBoard.pas
@@ -61,7 +61,6 @@ var
6161 Item: TNewBoardItem;
6262 URL : String;
6363 protocol, host, path, document, port, bookmark: String;
64- TabURLs: TStringList;
6564 begin
6665 try
6766 MessageMemo.Clear;
@@ -82,16 +81,12 @@ begin
8281 if FAbort then
8382 Exit;
8483 if Item.FContent <> '' then begin
85- TabURLs := TStringList.Create;
86- try
87- GikoDM.GetTabURLs(TabURLs);
88- if (UpdateURL(Item.FContent)) then begin
89- GikoForm.ReloadBBS;
90- end;
91- GikoDM.OpenURLs(TabURLs);
92- finally
93- TabURLs.Free;
94- end;
84+ GikoDM.TabsOpenAction.Tag := 1;
85+ GikoDM.TabsSaveAction.Execute;
86+ if (UpdateURL(Item.FContent)) then begin
87+ GikoForm.ReloadBBS;
88+ end;
89+ GikoDM.TabsOpenAction.Tag := 0;
9590 end else
9691 MessageMemo.Lines.Add('ƒ_ƒEƒ“ƒ[ƒh‚ªŽ¸”s‚µ‚Ü‚µ‚½[' + IntToStr(Item.FResponseCode) + ']');
9792 finally
Binary files a/gikoNavi.res and b/gikoNavi.res differ
--- a/readme/readme.txt
+++ b/readme/readme.txt
@@ -112,12 +112,8 @@ LICENSE
112112 @IE7(beta)‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é‚ƃŒƒXƒAƒ“ƒJ[‚̃|ƒbƒvƒAƒbƒv‚Å•\Ž¦‚³‚ê‚È‚¢•s‹ï‡‚̏C³
113113 @‚µ‚½‚ç‚ÎJBBS”XV‚ªA“®ì‚µ‚È‚¢•s‹ï‡‚̏C³
114114 @ƒ^ƒu‚ÌŽ©“®•Û‘¶‚ŁAƒ^ƒu‚ª‚È‚¢ó‘Ô‚à•Û‘¶‚·‚é‚悤‚ÉŽd—l‚ð•ÏX
115-@”ˆꗗXV‚ð‚·‚é‚ƁAƒ^ƒu‚Ì•Û‘¶ƒtƒ@ƒCƒ‹‚ªXV‚³‚ê‚é•s‹ï‡‚̏C³
116115 @„‰ñ—\–ñ–¼‚̕ύX‚ª”½‰f‚³‚ê‚È‚¢•s‹ï‡‚̏C³
117116 @—š—ðíœ‚É”º‚¤•s‹ï‡‚̏C³
118-@ƒJƒ“ƒ}‚ŘA‘±‚·‚郌ƒXƒAƒ“ƒJ[‚ɃŠƒ“ƒN‚ªÝ’肳‚ê‚È‚¢•s‹ï‡‚̏C³
119-@
120-
121117
122118 2006/06/18
123119 Version ÊÞÀ52