From 2a2459b1258af0bbde1b17f9d593c176841811fd Mon Sep 17 00:00:00 2001 From: h677 Date: Sat, 12 Aug 2006 10:31:10 +0000 Subject: [PATCH] =?utf8?q?=E3=82=B9=E3=83=AC=E3=83=83=E3=83=89=E3=81=AB?= =?utf8?q?=E5=90=AB=E3=81=BE=E3=82=8C=E3=82=8B=E7=94=BB=E5=83=8F=E3=81=AE?= =?utf8?q?=E3=83=AA=E3=83=B3=E3=82=AF=E3=81=AEURL=E3=82=92=E5=8F=96?= =?utf8?q?=E5=BE=97=E3=81=99=E3=82=8B=E3=82=A2=E3=82=AF=E3=82=B7=E3=83=A7?= =?utf8?q?=E3=83=B3=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- GikoDataModule.dfm | 14 +++++++ GikoDataModule.pas | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++ gikoNavi.res | Bin 4292 -> 4292 bytes 3 files changed, 128 insertions(+) diff --git a/GikoDataModule.dfm b/GikoDataModule.dfm index 16b74b6..73236cd 100644 --- a/GikoDataModule.dfm +++ b/GikoDataModule.dfm @@ -1285,6 +1285,20 @@ object GikoDM: TGikoDM Hint = #12479#12473#12463#12488#12524#12452#12395#26684#32013#12377#12427 OnExecute = StoredTaskTrayActionExecute end + object AllImageLinkToClipbordAction: TAction + Category = #12473#12524#12483#12489 + Caption = #12452#12513#12540#12472#12522#12531#12463'URL'#21462#24471 + Hint = #12377#12409#12390#12398#12524#12473#12363#12425#12452#12513#12540#12472#12408#12398#12522#12531#12463'URL'#12434#12463#12522#12483#12503#12508#12540#12489#12395#12467#12500#12540#12377#12427 + OnExecute = AllImageLinkToClipbordActionExecute + OnUpdate = DependActiveCntentLogActionUpdate + end + object NewImageLinkToClipBoardAction: TAction + Category = #12473#12524#12483#12489 + Caption = #26032#30528#12524#12473#12452#12513#12540#12472#12522#12531#12463'URL'#21462#24471 + Hint = #26032#30528#12524#12473#12363#12425#12452#12513#12540#12472#12408#12398#12522#12531#12463'URL'#12434#12463#12522#12483#12503#12508#12540#12489#12395#12467#12500#12540#12377#12427 + OnExecute = NewImageLinkToClipBoardActionExecute + OnUpdate = DependActiveCntentLogActionUpdate + end end object ToobarImageList: TImageList Left = 44 diff --git a/GikoDataModule.pas b/GikoDataModule.pas index 8c4aeea..893d398 100644 --- a/GikoDataModule.pas +++ b/GikoDataModule.pas @@ -227,6 +227,8 @@ type VKRightAction: TAction; VKLeftAction: TAction; StoredTaskTrayAction: TAction; + AllImageLinkToClipbordAction: TAction; + NewImageLinkToClipBoardAction: TAction; procedure EditNGActionExecute(Sender: TObject); procedure ReloadActionExecute(Sender: TObject); procedure GoFowardActionExecute(Sender: TObject); @@ -426,6 +428,8 @@ type procedure StoredTaskTrayActionExecute(Sender: TObject); procedure LeftTabSelectActionUpdate(Sender: TObject); procedure RightmostTabSelectActionUpdate(Sender: TObject); + procedure NewImageLinkToClipBoardActionExecute(Sender: TObject); + procedure AllImageLinkToClipbordActionExecute(Sender: TObject); private { Private éŒ¾ } procedure ClearResFilter; @@ -443,6 +447,9 @@ type procedure ClearNameTextAllEditor(); procedure MoveURLWithHistory(URL : String); procedure BackToHistory(item: TMoveHistoryItem); + function GetActiveThreadLinks : IHTMLElementCollection; + procedure GetImageLinkURLs(links : IHTMLElementCollection; + URLs : TStringList; const Start: Integer); public { Public éŒ¾ } procedure RepaintStatusBar; @@ -4216,7 +4223,114 @@ begin StoredTaskTrayAction.Tag := -1; end; +{ +\breif ƒŠƒ“ƒNƒCƒ[ƒWŽæ“¾ +ƒCƒ[ƒW‚́C*.jpg, *.jpeg, *.gif, *.png +} +procedure TGikoDM.AllImageLinkToClipbordActionExecute(Sender: TObject); +var + links : IHTMLElementCollection; + urls : TStringList; +begin + links := GetActiveThreadLinks; + if (links <> nil) then begin + urls := TStringList.Create; + try + GetImageLinkURLs(links, urls, 0); + Clipboard.SetTextBuf(urls.GetText); + finally + urls.Free; + end; + end; +end; +{ +\breif V’…ƒŒƒX‚̃Šƒ“ƒNƒCƒ[ƒWŽæ“¾ +ƒCƒ[ƒW‚́C*.jpg, *.jpeg, *.gif, *.png +} +procedure TGikoDM.NewImageLinkToClipBoardActionExecute(Sender: TObject); +var + links : IHTMLElementCollection; + urls : TStringList; + ThreadItem : TThreadItem; +begin + ThreadItem := GikoForm.GetActiveContent; + links := GetActiveThreadLinks; + if (ThreadItem <> nil) and (links <> nil) then begin + urls := TStringList.Create; + try + GetImageLinkURLs(links, urls, + (ThreadItem.Count - ThreadItem.NewResCount + 1) ); + Clipboard.SetTextBuf(urls.GetText); + finally + urls.Free; + end; + end; +end; +{ +\brief Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚Ì‚·‚ׂẴŠƒ“ƒN‚ðŽæ“¾‚·‚éB +\return IHTMLElementCollection ƒŠƒ“ƒN‚̃RƒŒƒNƒVƒ‡ƒ“ +} +function TGikoDM.GetActiveThreadLinks : IHTMLElementCollection; +var + browser : TWebBrowser; +begin + Result := nil; + if (GikoForm.GetActiveContent <> nil) then begin + if (GikoForm.BrowserTab.Tabs.Count > 0) and + (GikoForm.BrowserTab.TabIndex >= 0) then begin + browser := TBrowserRecord(GikoForm.BrowserTab.Tabs + .Objects[GikoForm.BrowserTab.TabIndex]).Browser; + if (browser <> nil) then begin + try + Result := IHTMLDocument2(browser.Document).links; + except + Result := nil; + end; + end; + + end; + end; +end; +{ +\brief ƒCƒ[ƒW‚ւ̃Šƒ“ƒN‚ÌURL‚ðŽæ“¾‚·‚é +\param links Žæ“¾‚·‚郊ƒ“ƒN‚Ì‘S‘̂̃RƒŒƒNƒVƒ‡ƒ“ +\param URLs Žæ“¾‚µ‚½URL‚Ì•Û‘¶æ +\param Start Ý’肵‚½ƒŒƒX”ԍ†ˆÈ~‚ðŽæ“¾( > 0) +} +procedure TGikoDM.GetImageLinkURLs(links : IHTMLElementCollection; + URLs : TStringList; const Start: Integer); +var + index ,i : Integer; + item : IHTMLElement; + url, ext : string; +begin + if (links <> nil) then begin + index := 0; + for i := 0 to links.length - 1 do begin + item := links.item(i, 0) as IHTMLElement; + if (item <> nil) then begin + url := item.getAttribute('href', 0); + // ƒŒƒX‚̔ԍ†‚ðXV + if (Pos('menu:', url) > 0) then begin + index := StrToInt64Def( + Copy(url, 5, Length(url)), index + 1 + ); + end else begin + // ŠJŽnƒŒƒX”ԍ†ˆÈ~‚©ƒ`ƒFƒbƒN + if (index >= Start) then begin + ext := ExtractFileExt( AnsiLowerCase(url) ); + // jpg,jpeg,gif,png‚ðƒ`ƒFƒbƒN + if (ext = '.jpg') or (ext = '.jpeg') or + (ext = '.gif') or (ext = '.png') then begin + urls.Add(url) + end; + end; + end; + end; + end; + end; +end; end. diff --git a/gikoNavi.res b/gikoNavi.res index 02a1ca7d4c754eb4471f723cdced2a3d942f66b7..03a939a179a876d893a4ad8fcab301c838ba1457 100644 GIT binary patch delta 28 kcmX@2ctml-8(z+(ObiTW42%p*Cx7Mr%V@s&Gv7r<0FsmnPyhe` delta 28 kcmX@2ctml-8(z*OObiTW42%p*CV%Dq%V@UwGv7r<0FrJBO#lD@ -- 2.11.0