ギコナビ
Revision | dc1ba8ccb38283df9d56c040ab09773e10a53010 (tree) |
---|---|
Time | 2006-07-30 10:09:54 |
Author | cvs2git <cvs2git> |
Commiter | cvs2git |
This commit was manufactured by cvs2svn to create tag 'v1_53_0_668'.
@@ -1,5 +1,5 @@ | ||
1 | 1 | object GikoForm: TGikoForm |
2 | - Left = 241 | |
2 | + Left = 422 | |
3 | 3 | Top = 68 |
4 | 4 | HorzScrollBar.Visible = False |
5 | 5 | VertScrollBar.Visible = False |
@@ -159,7 +159,7 @@ object GikoForm: TGikoForm | ||
159 | 159 | object ToolBar1: TToolBar |
160 | 160 | Left = 2 |
161 | 161 | Top = 4 |
162 | - Width = 15 | |
162 | + Width = 16 | |
163 | 163 | Height = 18 |
164 | 164 | Align = alNone |
165 | 165 | AutoSize = True |
@@ -346,7 +346,7 @@ object GikoForm: TGikoForm | ||
346 | 346 | end> |
347 | 347 | EdgeBorders = [ebLeft, ebTop, ebRight] |
348 | 348 | EdgeInner = esLowered |
349 | - OnContextPopup = MainCoolBarContextPopup | |
349 | + OnContextPopup = ListCoolBarContextPopup | |
350 | 350 | OnBandInfo = ListCoolBarBandInfo |
351 | 351 | OnChevronClick = ListCoolBarChevronClick |
352 | 352 | object ListToolBar: TToolBar |
@@ -573,7 +573,7 @@ object GikoForm: TGikoForm | ||
573 | 573 | end> |
574 | 574 | EdgeBorders = [ebLeft, ebTop, ebRight] |
575 | 575 | EdgeInner = esLowered |
576 | - OnContextPopup = MainCoolBarContextPopup | |
576 | + OnContextPopup = BrowserCoolBarContextPopup | |
577 | 577 | OnBandInfo = BrowserCoolBarBandInfo |
578 | 578 | OnChevronClick = BrowserCoolBarChevronClick |
579 | 579 | object BrowserToolBar: TToolBar |
@@ -971,7 +971,7 @@ object GikoForm: TGikoForm | ||
971 | 971 | OnResize = AddressToolBarResize |
972 | 972 | object AddressComboBox: TComboBox |
973 | 973 | Left = 0 |
974 | - Top = 0 | |
974 | + Top = 1 | |
975 | 975 | Width = 177 |
976 | 976 | Height = 20 |
977 | 977 | DropDownCount = 20 |
@@ -508,6 +508,12 @@ type | ||
508 | 508 | State: TDragState; var Accept: Boolean); |
509 | 509 | procedure FavoriteTreeViewEndDrag(Sender, Target: TObject; X, |
510 | 510 | 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); | |
511 | 517 | procedure FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject); |
512 | 518 | procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint; |
513 | 519 | var Handled: Boolean); |
@@ -543,8 +549,6 @@ type | ||
543 | 549 | procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton; |
544 | 550 | Shift: TShiftState; X, Y: Integer); |
545 | 551 | procedure GetResURLMenuClick(Sender: TObject); |
546 | - procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint; | |
547 | - var Handled: Boolean); | |
548 | 552 | private |
549 | 553 | { Private é¾ } |
550 | 554 | FEnabledCloseButton: Boolean; |
@@ -643,6 +647,8 @@ type | ||
643 | 647 | procedure TreeDoubleClick( Node : TTreeNode ); |
644 | 648 | /// eÉ éLrlbgE BBS j [ðZbg^XV |
645 | 649 | procedure SetBBSMenu; |
650 | + /// ^uæ¾ | |
651 | + procedure GetTabURLs(AStringList: TStringList); | |
646 | 652 | /// ListColumnPopupMenu ACeÌNbNCxg |
647 | 653 | procedure ListColumnPopupMenuOnClick( Sender : TObject ); |
648 | 654 | //! ièݶñÝè |
@@ -771,6 +777,10 @@ type | ||
771 | 777 | procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar ); |
772 | 778 | //ListViewÅIð³êÄ¢éACeðæ¾·é |
773 | 779 | procedure SelectListItem(List: TList); |
780 | + /// ^uÛ¶ | |
781 | + procedure SaveTabURLs; | |
782 | + /// ^uÇÝoµ | |
783 | + procedure LoadTabURLs; | |
774 | 784 | //wèµ½XðRs[·é |
775 | 785 | procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean); |
776 | 786 | // |
@@ -1436,9 +1446,7 @@ begin | ||
1436 | 1446 | |
1437 | 1447 | //FormCrete©çÚ®B |
1438 | 1448 | if GikoSys.Setting.TabAutoLoadSave then begin |
1439 | - GikoDM.TabsOpenAction.Tag := 1; | |
1440 | - GikoDM.TabsOpenAction.Execute; | |
1441 | - GikoDM.TabsOpenAction.Tag := 0; | |
1449 | + GikoDM.TabAutoLoadAction.Execute; | |
1442 | 1450 | end; |
1443 | 1451 | |
1444 | 1452 | //ActionListÌGroupIndexð³Éß· |
@@ -1460,7 +1468,7 @@ begin | ||
1460 | 1468 | end; |
1461 | 1469 | |
1462 | 1470 | if GikoSys.Setting.TabAutoLoadSave then begin |
1463 | - GikoDM.TabsSaveAction.Execute; | |
1471 | + GikoDM.TabAutoSaveAction.Execute; | |
1464 | 1472 | end; |
1465 | 1473 | |
1466 | 1474 | if (SearchDialog <> nil) then begin |
@@ -1811,6 +1819,8 @@ begin | ||
1811 | 1819 | RoundList.LoadRoundThreadFile; |
1812 | 1820 | |
1813 | 1821 | LockWindowUpdate(0); |
1822 | + // | |
1823 | + GikoDM.TabsOpenAction.Execute; | |
1814 | 1824 | end; |
1815 | 1825 | |
1816 | 1826 | {! |
@@ -6391,6 +6401,35 @@ begin | ||
6391 | 6401 | |
6392 | 6402 | end; |
6393 | 6403 | |
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; | |
6394 | 6433 | procedure TGikoForm.SetListViewBackGroundColor(value: TColor); |
6395 | 6434 | begin |
6396 | 6435 | if FListViewBackGroundColor <> value then begin |
@@ -6877,6 +6916,89 @@ begin | ||
6877 | 6916 | end; |
6878 | 6917 | end; |
6879 | 6918 | |
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ÉÝè AhXÌÝè̽ßÌJÄÑ | |
6983 | + if BrowserTab.Tabs.Count > 0 then begin | |
6984 | + BrowserTab.OnChange(nil); | |
6985 | + end; | |
6986 | + end else begin | |
6987 | + // óÌt@CÌêCobNAbvðíµÈ¢½ßÉí | |
6988 | + DeleteFile(fileName); | |
6989 | + end; | |
6990 | + except | |
6991 | + on EFOpenError do ShowMessage('^ut@CªJ¯Ü¹ñ'); | |
6992 | + end; | |
6993 | + end; | |
6994 | + finally | |
6995 | + URLs.Free; | |
6996 | + GikoSys.Setting.BrowserTabAppend := GikoTab; | |
6997 | + end; | |
6998 | + | |
6999 | +end; | |
7000 | + | |
7001 | + | |
6880 | 7002 | /// ListView ÌJ¨æÑÊuÌÛ¶ |
6881 | 7003 | procedure TGikoForm.ActiveListColumnSave; |
6882 | 7004 | var |
@@ -7672,30 +7794,6 @@ begin | ||
7672 | 7794 | end; |
7673 | 7795 | end; |
7674 | 7796 | |
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 | - | |
7699 | 7797 | initialization |
7700 | 7798 | OleInitialize(nil); |
7701 | 7799 | finalization |
@@ -1079,6 +1079,18 @@ object GikoDM: TGikoDM | ||
1079 | 1079 | OnExecute = BrowsBoradHeadActionExecute |
1080 | 1080 | OnUpdate = LogFolderOpenActionUpdate |
1081 | 1081 | 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 | |
1082 | 1094 | object JumpToNumOfResAction: TAction |
1083 | 1095 | Category = #12473#12524#12483#12489 |
1084 | 1096 | Caption = #25351#23450#12375#12383#30058#21495#12398#12524#12473#12395#39131#12406 |
@@ -192,6 +192,8 @@ type | ||
192 | 192 | TabsSaveAction: TAction; |
193 | 193 | TabsOpenAction: TAction; |
194 | 194 | BrowsBoradHeadAction: TAction; |
195 | + TabAutoSaveAction: TAction; | |
196 | + TabAutoLoadAction: TAction; | |
195 | 197 | JumpToNumOfResAction: TAction; |
196 | 198 | FavoriteTreeViewCollapseAction: TAction; |
197 | 199 | RightTabCloseAction: TAction; |
@@ -306,6 +308,8 @@ type | ||
306 | 308 | procedure SelectItemSaveForDatExecute(Sender: TObject); |
307 | 309 | procedure TabsSaveActionExecute(Sender: TObject); |
308 | 310 | procedure TabsOpenActionExecute(Sender: TObject); |
311 | + procedure TabAutoSaveActionExecute(Sender: TObject); | |
312 | + procedure TabAutoLoadActionExecute(Sender: TObject); | |
309 | 313 | procedure BeLogInOutActionExecute(Sender: TObject); |
310 | 314 | procedure BeLogInOutActionUpdate(Sender: TObject); |
311 | 315 | procedure KokomadeActionExecute(Sender: TObject); |
@@ -425,8 +429,6 @@ type | ||
425 | 429 | { Public é¾ } |
426 | 430 | procedure RepaintStatusBar; |
427 | 431 | function EditorFormExists(): boolean; |
428 | - procedure GetTabURLs(AStringList: TStringList); | |
429 | - procedure OpenURLs(AStringList: TStringList); | |
430 | 432 | published |
431 | 433 | { Published é¾ } |
432 | 434 | //! TActionÅGetActiveContentªnilÈOÅLøÉÈé |
@@ -2137,107 +2139,34 @@ end; | ||
2137 | 2139 | //! ^uÌÔðÛ¶ |
2138 | 2140 | // ************************************************************************* |
2139 | 2141 | procedure TGikoDM.TabsSaveActionExecute(Sender: TObject); |
2140 | -const | |
2141 | - Filename = 'tab.sav'; | |
2142 | - bFilename = '~tab.sav'; | |
2143 | -var | |
2144 | - SaveStringList: TStringList; | |
2145 | 2142 | 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; | |
2160 | 2144 | end; |
2161 | 2145 | // ************************************************************************* |
2162 | -//! uEU^uÉÝè³êÄ¢éXbhÌURLæ¾ | |
2146 | +//! ^uÌÔð³ | |
2163 | 2147 | // ************************************************************************* |
2164 | -procedure TGikoDM.GetTabURLs(AStringList: TStringList); | |
2165 | -var | |
2166 | - rec : TBrowserRecord; | |
2167 | - i : Integer; | |
2148 | +procedure TGikoDM.TabsOpenActionExecute(Sender: TObject); | |
2168 | 2149 | 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ÂêXV©çÄÎê½Æ«Í1ÉÈÁÄ¢é | |
2152 | + if (GikoForm.BrowserTab.Tabs.Count = 0) | |
2153 | + and (TabsOpenAction.Tag = 0) then begin | |
2154 | + ShowMessage('\¦·é^uª èܹñB'); | |
2176 | 2155 | end; |
2177 | 2156 | end; |
2178 | 2157 | // ************************************************************************* |
2179 | -//! wè³ê½URLðJ«CæªÌ^uÉtH[JX·é | |
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ÉÝè AhXÌÝè̽ßÌ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; | |
2207 | 2163 | end; |
2208 | 2164 | // ************************************************************************* |
2209 | -//! ^uÌÔð³ | |
2165 | +//! ^uÌÔð©®³ | |
2210 | 2166 | // ************************************************************************* |
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); | |
2217 | 2168 | 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ÌêCobNAbvðíµÈ¢½ßÉí | |
2226 | - SysUtils.DeleteFile(fileName); | |
2227 | - end else begin | |
2228 | - OpenURLs(URLs); | |
2229 | - end; | |
2230 | - except | |
2231 | - on EFOpenError do ShowMessage('^ut@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; | |
2241 | 2170 | end; |
2242 | 2171 | // ************************************************************************* |
2243 | 2172 | //! Be2chÉOC/OAEg·é |
@@ -2753,13 +2753,7 @@ function TGikoSys.GetSameIDResAnchor(const AID : string; ThreadItem: TThreadItem | ||
2753 | 2753 | var |
2754 | 2754 | i: integer; |
2755 | 2755 | body: TStringList; |
2756 | - Res: TResRec; | |
2757 | - ResLink : TResLinkRec; | |
2758 | 2756 | begin |
2759 | - // bodyÈOÍgpµÈ¢ÌÅú»µÈ¢ | |
2760 | - Res.FBody := ''; | |
2761 | - Res.FType := glt2chNew; | |
2762 | - | |
2763 | 2757 | Result := ''; |
2764 | 2758 | if (not IsNoValidID(AID)) and |
2765 | 2759 | (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin |
@@ -2768,20 +2762,21 @@ begin | ||
2768 | 2762 | GetSameIDRes(AID, ThreadItem, body); |
2769 | 2763 | if (limited) and (body.Count > 20) then begin |
2770 | 2764 | for i := body.Count - 20 to body.Count - 1 do begin |
2771 | - Res.FBody := Res.FBody + '>' + body[i] + ' '; | |
2765 | + Result := Result + '>' + body[i] + ' '; | |
2772 | 2766 | end; |
2773 | 2767 | end else begin |
2774 | 2768 | for i := 0 to body.Count - 1 do begin |
2775 | - Res.FBody := Res.FBody + '>' + body[i] + ' '; | |
2769 | + Result := Result + '>' + body[i] + ' '; | |
2776 | 2770 | end; |
2777 | 2771 | end; |
2778 | 2772 | finally |
2779 | 2773 | body.Free; |
2780 | 2774 | 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); | |
2785 | 2780 | end; |
2786 | 2781 | end; |
2787 | 2782 |
@@ -2842,13 +2837,7 @@ function TGikoSys.GetSameIDResAnchor(AIDNum : Integer; ThreadItem: TThreadItem; | ||
2842 | 2837 | var |
2843 | 2838 | i: integer; |
2844 | 2839 | body: TStringList; |
2845 | - Res: TResRec; | |
2846 | - ResLink : TResLinkRec; | |
2847 | 2840 | begin |
2848 | - // bodyÈOÍgpµÈ¢ÌÅú»µÈ¢ | |
2849 | - Res.FBody := ''; | |
2850 | - Res.FType := glt2chNew; | |
2851 | - | |
2852 | 2841 | Result := ''; |
2853 | 2842 | if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin |
2854 | 2843 | body := TStringList.Create; |
@@ -2856,20 +2845,21 @@ begin | ||
2856 | 2845 | GetSameIDRes(AIDNum, ThreadItem, body); |
2857 | 2846 | if (limited) and (body.Count > 20) then begin |
2858 | 2847 | for i := body.Count - 20 to body.Count - 1 do begin |
2859 | - Res.FBody := Res.FBody + '>' + body[i] + ' '; | |
2848 | + Result := Result + '>' + body[i] + ' '; | |
2860 | 2849 | end; |
2861 | 2850 | end else begin |
2862 | 2851 | for i := 0 to body.Count - 1 do begin |
2863 | - Res.FBody := Res.FBody + '>' + body[i] + ' '; | |
2852 | + Result := Result + '>' + body[i] + ' '; | |
2864 | 2853 | end; |
2865 | 2854 | end; |
2866 | 2855 | finally |
2867 | 2856 | body.Free; |
2868 | 2857 | 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); | |
2873 | 2863 | end; |
2874 | 2864 | end; |
2875 | 2865 |
@@ -60,20 +60,16 @@ type | ||
60 | 60 | procedure CreateDefaultHTML (html:TBufferedWebBrowser; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string ); |
61 | 61 | procedure ConvertResAnchor(PRes: PResRec); |
62 | 62 | 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; | |
64 | 64 | function addResAnchor(PAddRes: PResRec; PResLink : PResLinkRec; dat : boolean; |
65 | 65 | 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 | - | |
71 | 66 | public |
72 | 67 | { Public é¾ } |
73 | 68 | procedure AddAnchorTag(PRes: PResRec); |
74 | 69 | function LoadFromSkin(fileName: string; ThreadItem: TThreadItem; SizeByte: Integer): string; |
75 | 70 | function SkinedRes(const skin: string; PRes: PResRec; const No: string): string; |
76 | 71 | 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; | |
77 | 73 | procedure CreateHTML2(Browser: TWebBrowser; ThreadItem: TThreadItem; var sTitle: string); |
78 | 74 | procedure CreateHTML3(var html: TStringList; ThreadItem: TThreadItem; var sTitle: string); |
79 | 75 | //X|bvAbvÌì¬ |
@@ -356,9 +352,6 @@ begin | ||
356 | 352 | end else |
357 | 353 | Result := AID; |
358 | 354 | end; |
359 | -//! XAJ[ÌXÔðª·é | |
360 | -// Text = '1-9' -> st = '1'; et = '9' | |
361 | -// Text = '10' -> st = '10'; et = '10' | |
362 | 355 | procedure THTMLCreate.separateNumber(var st: String; var et: String; const Text:String; const Separator: String); |
363 | 356 | var |
364 | 357 | p : Integer; |
@@ -372,58 +365,54 @@ begin | ||
372 | 365 | et := Text; |
373 | 366 | end; |
374 | 367 | end; |
375 | -//! XAJ[ª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 | - | |
414 | 368 | procedure THTMLCreate.ConvRes( PRes : PResRec; PResLink : PResLinkRec; DatToHTML: boolean = false); |
415 | 369 | const |
416 | 370 | GT = '>'; |
371 | + SN = '0123456789'; | |
417 | 372 | //õÎÛ̶ñS |
418 | 373 | TOKEN : array[0..5] of string = (GT+GT, GT, '', '', '<a ', '<A '); |
419 | 374 | var |
420 | 375 | i : integer; |
421 | 376 | s : string; |
377 | + sw: boolean; | |
378 | + cm: boolean; | |
422 | 379 | No: string; |
380 | + oc : string; | |
423 | 381 | pos, pmin : integer; |
424 | 382 | j : integer; |
383 | + ch : string; | |
425 | 384 | db : boolean; |
385 | + len : integer; | |
426 | 386 | 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 | + | |
427 | 416 | begin |
428 | 417 | //s É{¶ðSüêé |
429 | 418 | s := PRes.FBody; |
@@ -482,22 +471,43 @@ begin | ||
482 | 471 | end; |
483 | 472 | // XAJ[ªÜÜêÄ¢½ç,ª±ÀèAJ[Ƶĵ¤ |
484 | 473 | 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¹©`FbN | |
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; | |
486 | 495 | end; |
487 | 496 | end else begin |
488 | 497 | //½©µç©Â©Á½p^[ |
489 | 498 | j := Length(TOKEN[i]) + 1; |
499 | + oc := ''; | |
500 | + No := ''; | |
501 | + sw := false; | |
490 | 502 | db := false; |
491 | - No := getNumberString(s, j, db, Length(s) ); | |
503 | + len := Length(s); | |
504 | + getNumberString; | |
492 | 505 | //I[ÜÅsÁÄÌI¹©`FbN |
493 | - if j <= Length(s) then begin | |
506 | + if j <= len then begin | |
494 | 507 | if db then j := j - 2 |
495 | 508 | else j := j - 1; |
496 | 509 | end; |
497 | 510 | addResAnchor(PRes, PResLink, DatToHTML, s, j, No); |
498 | - | |
499 | - // , ª±ÀèXAJ[Ƶķé | |
500 | - appendResAnchor(PRes, PResLink, DatToHTML, s ); | |
501 | 511 | end; |
502 | 512 | end; |
503 | 513 | if Length(s) > 0 then begin |
@@ -506,7 +516,8 @@ begin | ||
506 | 516 | end; |
507 | 517 | function THTMLCreate.checkComma( |
508 | 518 | const s : String; |
509 | - var j : Integer | |
519 | + var j : Integer; | |
520 | + var No : String | |
510 | 521 | ) : boolean; |
511 | 522 | var |
512 | 523 | bType : TMbcsByteType; |
@@ -521,38 +532,10 @@ begin | ||
521 | 532 | Inc(j) |
522 | 533 | else |
523 | 534 | Inc(j, 2); |
535 | + No := ''; | |
524 | 536 | end; |
525 | 537 | end; |
526 | 538 | 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¹©`FbN | |
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 | - | |
556 | 539 | function THTMLCreate.addResAnchor( |
557 | 540 | PAddRes: PResRec; PResLink : PResLinkRec; dat : boolean; |
558 | 541 | var s : String; j : Integer; const No: String) : string; |
@@ -579,6 +562,186 @@ begin | ||
579 | 562 | Delete(s, 1, j - 1); |
580 | 563 | end; |
581 | 564 | |
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 = '>'; | |
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¹©`FbN | |
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 | + //ÊðNA | |
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 | + //ÇêÅqbgµ½©Û¶ | |
675 | + i := j; | |
676 | + //ŬlðXV | |
677 | + pmin := pos; | |
678 | + end; | |
679 | + end; | |
680 | + end; | |
681 | + | |
682 | + //qbgµ½¶ñÌêÂèOÜÅÊÉRs[ | |
683 | + Result := Result + Copy(s, 1, pmin - 1); | |
684 | + Delete(s, 1, pmin - 1); | |
685 | + | |
686 | + if i = 6 then begin | |
687 | + //qbgȵ | |
688 | + end else if (i = 4) or (i = 5) then begin | |
689 | + //'<a ' or '<A' Åqbg '</a>' or '</A>' ÜÅRs[ | |
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 | + //ÇêÅqbgµ½©Û¶ | |
710 | + i := j; | |
711 | + //ŬlðXV | |
712 | + pmin := pos; | |
713 | + end; | |
714 | + end; | |
715 | + end; | |
716 | + // XAJ[ªÜÜêÄ¢½ç,ª±ÀèAJ[Ƶĵ¤ | |
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; | |
582 | 745 | |
583 | 746 | procedure THTMLCreate.ConvertResAnchor(PRes: PResRec); |
584 | 747 | const |
@@ -1468,8 +1631,7 @@ begin | ||
1468 | 1631 | finally |
1469 | 1632 | dirs.Free; |
1470 | 1633 | end; |
1471 | -end; | |
1472 | -{! | |
1634 | +end;{! | |
1473 | 1635 | \brief datt@CÌêCðªð |
1474 | 1636 | \param Line datt@Cð\¬·é 1 s |
1475 | 1637 | \return Xîñ |
@@ -61,7 +61,6 @@ var | ||
61 | 61 | Item: TNewBoardItem; |
62 | 62 | URL : String; |
63 | 63 | protocol, host, path, document, port, bookmark: String; |
64 | - TabURLs: TStringList; | |
65 | 64 | begin |
66 | 65 | try |
67 | 66 | MessageMemo.Clear; |
@@ -82,16 +81,12 @@ begin | ||
82 | 81 | if FAbort then |
83 | 82 | Exit; |
84 | 83 | 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; | |
95 | 90 | end else |
96 | 91 | MessageMemo.Lines.Add('_E[hª¸sµÜµ½[' + IntToStr(Item.FResponseCode) + ']'); |
97 | 92 | finally |
@@ -112,12 +112,8 @@ LICENSE | ||
112 | 112 | @IE7(beta)ðCXg[·éÆXAJ[Ì|bvAbvÅ\¦³êÈ¢sïÌC³ |
113 | 113 | @µ½çÎJBBSÂXVªA®ìµÈ¢sïÌC³ |
114 | 114 | @^uÌ©®Û¶ÅA^uªÈ¢óÔàÛ¶·éæ¤ÉdlðÏX |
115 | -@ÂêXVð·éÆA^uÌÛ¶t@CªXV³êésïÌC³ | |
116 | 115 | @ñ\ñ¼ÌÏXª½f³êÈ¢sïÌC³ |
117 | 116 | @ðíɺ¤sïÌC³ |
118 | -@J}ÅA±·éXAJ[ÉNªÝè³êÈ¢sïÌC³ | |
119 | -@ | |
120 | - | |
121 | 117 | |
122 | 118 | 2006/06/18 |
123 | 119 | Version ÊÞÀ52 |