MSHTML_TLB,
{$IFEND}
ComCtrls, BrowserRecord, Graphics, Messages, Setting, Dialogs,
- ActiveX;
+ ActiveX, GikoSystem, MoveHistoryItem, HistoryList;
const
CAPTION_NAME: string = '\83M\83R\83i\83r';
type
+
TGikoDM = class(TDataModule)
GikoFormActionList: TActionList;
OnlyAHundredResAction: TAction;
TabsSaveAction: TAction;
TabsOpenAction: TAction;
BrowsBoradHeadAction: TAction;
- TabAutoSaveAction: TAction;
- TabAutoLoadAction: TAction;
JumpToNumOfResAction: TAction;
FavoriteTreeViewCollapseAction: TAction;
RightTabCloseAction: TAction;
LiveItemAction: TAction;
FavoriteTreeViewItemNameCopyAction: TAction;
CloseAllEditorAction: TAction;
+ PrevMoveHistory: TAction;
+ NextMoveHistory: TAction;
+ ClickActiveElementAction: TAction;
+ VKDownAction: TAction;
+ VKUpAction: TAction;
+ VKRightAction: TAction;
+ VKLeftAction: TAction;
+ StoredTaskTrayAction: TAction;
+ AllImageLinkToClipbordAction: TAction;
+ NewImageLinkToClipBoardAction: TAction;
+ SetForcusForAddresBarAction: TAction;
+ NewBoardSearchAction: TAction;
+ NGWordEditFormAction: TAction;
+ ScrollPageDownAction: TAction;
+ ScrollPageUpAction: TAction;
+ AllLinkToClipboardAction: TAction;
+ NewLinkToClipboardAction: TAction;
+ AddIDtoNGWord0Action: TAction;
+ AddIDtoNGWord1Action: TAction;
+ ExtractSameIDAction: TAction;
+ ShowTabListAction: TAction;
procedure EditNGActionExecute(Sender: TObject);
procedure ReloadActionExecute(Sender: TObject);
procedure GoFowardActionExecute(Sender: TObject);
procedure SelectItemSaveForDatExecute(Sender: TObject);
procedure TabsSaveActionExecute(Sender: TObject);
procedure TabsOpenActionExecute(Sender: TObject);
- procedure TabAutoSaveActionExecute(Sender: TObject);
- procedure TabAutoLoadActionExecute(Sender: TObject);
procedure BeLogInOutActionExecute(Sender: TObject);
procedure BeLogInOutActionUpdate(Sender: TObject);
procedure KokomadeActionExecute(Sender: TObject);
procedure FavoriteTreeViewItemNameCopyActionExecute(Sender: TObject);
procedure CloseAllEditorActionExecute(Sender: TObject);
procedure CloseAllEditorActionUpdate(Sender: TObject);
+ procedure PrevMoveHistoryUpdate(Sender: TObject);
+ procedure PrevMoveHistoryExecute(Sender: TObject);
+ procedure NextMoveHistoryUpdate(Sender: TObject);
+ procedure NextMoveHistoryExecute(Sender: TObject);
+ procedure ClickActiveElementActionExecute(Sender: TObject);
+ procedure VKDownActionExecute(Sender: TObject);
+ procedure VKUpActionExecute(Sender: TObject);
+ procedure VKRightActionExecute(Sender: TObject);
+ procedure VKLeftActionExecute(Sender: TObject);
+ procedure StoredTaskTrayActionExecute(Sender: TObject);
+ procedure LeftTabSelectActionUpdate(Sender: TObject);
+ procedure RightmostTabSelectActionUpdate(Sender: TObject);
+ procedure NewImageLinkToClipBoardActionExecute(Sender: TObject);
+ procedure AllImageLinkToClipbordActionExecute(Sender: TObject);
+ procedure SetForcusForAddresBarActionExecute(Sender: TObject);
+ procedure NewBoardSearchActionExecute(Sender: TObject);
+ procedure ScrollPageDownActionExecute(Sender: TObject);
+ procedure ScrollPageUpActionExecute(Sender: TObject);
+ procedure AllLinkToClipboardActionExecute(Sender: TObject);
+ procedure NewLinkToClipboardActionExecute(Sender: TObject);
+ procedure AddIDtoNGWord0ActionExecute(Sender: TObject);
+ procedure AddIDtoNGWord1ActionExecute(Sender: TObject);
+ procedure ExtractSameIDActionExecute(Sender: TObject);
+ procedure ShowTabListActionExecute(Sender: TObject);
+ procedure BoardIEActionUpdate(Sender: TObject);
private
{ Private \90é\8c¾ }
procedure ClearResFilter;
procedure ClearSelectComboBox;
procedure ClearMailAllEditor();
procedure ClearNameTextAllEditor();
+ procedure MoveURLWithHistory(URL : String);
+ procedure BackToHistory(item: TMoveHistoryItem);
+ function GetActiveThreadLinks : IHTMLElementCollection;
+ procedure GetLinkURLs(links : IHTMLElementCollection;
+ URLs : TStringList; const Start: Integer; Exts : TStringList);
public
{ Public \90é\8c¾ }
procedure RepaintStatusBar;
function EditorFormExists(): boolean;
+ procedure GetTabURLs(AStringList: TStringList);
+ procedure OpenURLs(AStringList: TStringList);
published
{ Published \90é\8c¾ }
//! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82Å\97L\8cø\82É\82È\82é
uses
Windows, Math, Clipbrd,
- Giko, GikoSystem, GikoUtil, BoardGroup,
+ Giko, GikoUtil, BoardGroup,
FavoriteArrange, Favorite, MojuUtils,
Editor, ListSelect, Search, Option, Round,
KeySetting, Gesture, Kotehan, ToolBarSetting,
GikoBayesian, About, ShellAPI,
RoundName, RoundData, Menus, ListViewUtils,
ThreadControl, GikoMessage, InputAssist,
- DefaultFileManager, Forms;
+ DefaultFileManager, Forms, NewBoardURL;
const
MSG_ERROR : string = '\83G\83\89\81[';
//! \83A\83h\83\8c\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83A\83h\83\8c\83X\82Ö\88Ú\93®\82·\82é
// *************************************************************************
procedure TGikoDM.MoveToActionExecute(Sender: TObject);
-var
- URL: string;
- idx: Integer;
begin
//\83A\83h\83\8c\83X\83R\83\93\83{\83{\83b\83N\83X\82©\82çURL\82ð\8eæ\93¾
- URL := Trim(GikoForm.AddressComboBox.Text);
//URL\82É\88Ú\93®
- GikoForm.MoveToURL(URL);
- //\88È\89º\81A\97\9a\97ð\82Ì\8f\88\97\9d
- idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
- if idx = -1 then begin
- GikoForm.AddressComboBox.Items.Insert(0, URL);
- if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
- GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
- end else begin
- GikoForm.AddressComboBox.Items.Delete(idx);
- GikoForm.AddressComboBox.Items.Insert(0, URL);
- end;
+ MoveURLWithHistory( Trim(GikoForm.AddressComboBox.Text) );
end;
// *************************************************************************
//! \82¨\8bC\82É\93ü\82è\82Ì\92Ç\89Á\83_\83C\83A\83\8d\83O\82ð\8aJ\82
end;
end;
// *************************************************************************
+//! \8d¶\82Ì\83^\83u\82ð\91I\91ð\82·\82é\82ÌUpdate\83C\83x\83\93\83g
+// *************************************************************************
+procedure TGikoDM.LeftTabSelectActionUpdate(Sender: TObject);
+begin
+ if ( not GikoSys.Setting.LoopBrowserTabs ) then begin
+ LeftmostTabSelectActionUpdate(Sender);
+ end else begin
+ TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
+ end;
+end;
+
+// *************************************************************************
//! \83^\83u\82Ì\90\94\82ª\82P\88È\8fã\82Å\81A\83^\83u\82Ì\83C\83\93\83f\83b\83N\83X\82ª\82O\88È\8aO\82Å\97L\8cø\82É\82È\82éUpdate\83C\83x\83\93\83g
// *************************************************************************
procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject);
end else if GikoForm.BrowserTab.TabIndex > 0 then begin
GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1;
GikoForm.BrowserTab.OnChange(nil);
- end;
+ end else begin
+ if (GikoSys.Setting.LoopBrowserTabs) and
+ (GikoForm.BrowserTab.TabIndex = 0) then begin
+ GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
+ GikoForm.BrowserTab.OnChange(nil);
+ end;
+ end;
end;
end;
// *************************************************************************
end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin
GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1;
GikoForm.BrowserTab.OnChange(nil);
- end;
+ end else begin
+ if (GikoSys.Setting.LoopBrowserTabs) and
+ (GikoForm.BrowserTab.TabIndex = (GikoForm.BrowserTab.Tabs.Count - 1)) then begin
+ GikoForm.BrowserTab.TabIndex := 0;
+ GikoForm.BrowserTab.OnChange(nil);
+ end;
+ end;
end;
end;
// *************************************************************************
-//! \83^\83u\82Ì\90\94\82ª\82P\88È\8fã\82Å\81A\83^\83u\82ª\89E\92[\88È\8aO\82Å\97L\8cø\82É\82È\82éUpdate\83C\83x\83\93\83g
+//! \89E\82Ì\83^\83u\82ð\91I\91ð\82·\82éUpdate\83C\83x\83\93\83g
// *************************************************************************
procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject);
begin
- TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
- and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
+ if ( not GikoSys.Setting.LoopBrowserTabs ) then begin
+ RightmostTabSelectActionUpdate(Sender);
+ end else begin
+ TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
+ end;
end;
+
// *************************************************************************
//! \88ê\94Ô\89E\82Ì\83^\83u\82ð\91I\91ð\82·\82é
// *************************************************************************
end;
end;
// *************************************************************************
+//! \88ê\94Ô\89E\82Ì\83^\83u\82ð\91I\91ð\82·\82é\82ÌUpdate\83C\83x\83\93\83g
+// *************************************************************************
+procedure TGikoDM.RightmostTabSelectActionUpdate(Sender: TObject);
+begin
+ TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
+ and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
+
+end;
+// *************************************************************************
//! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á
// *************************************************************************
procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject);
GikoForm.DeleteHistory(ThreadItem);
GikoForm.DeleteTab(ThreadItem);
ThreadItem.DeleteLogFile;
-
- GikoForm.TreeView.Refresh; // UnRead \82Ì\95\\8e¦\82ð\8dX\90V
end;
+ GikoForm.TreeView.Refresh; // UnRead \82Ì\95\\8e¦\82ð\8dX\90V
GikoForm.ListView.Refresh;
finally
List.Free;
//! \83^\83u\82Ì\8f\87\94Ô\82ð\95Û\91¶
// *************************************************************************
procedure TGikoDM.TabsSaveActionExecute(Sender: TObject);
+const
+ Filename = 'tab.sav';
+ bFilename = '~tab.sav';
+var
+ SaveStringList: TStringList;
begin
- GikoForm.SaveTabURLs;
+ SaveStringList := TStringList.Create;
+ try
+ GetTabURLs(SaveStringList);
+ try
+ if FileExists( GikoSys.GetAppDir + Filename) then begin
+ CopyFile(PChar(GikoSys.GetAppDir + Filename),
+ PChar(GikoSys.GetAppDir + bFilename), False);
+ end;
+ except
+ end;
+ SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename);
+ finally
+ SaveStringList.Free;
+ end;
end;
// *************************************************************************
-//! \83^\83u\82Ì\8f\87\94Ô\82ð\95\9c\8c³
+//! \83u\83\89\83E\83U\83^\83u\82É\90Ý\92è\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\8eæ\93¾
// *************************************************************************
-procedure TGikoDM.TabsOpenActionExecute(Sender: TObject);
-begin
- GikoForm.LoadTabURLs;
- // TabsOpenAction.Tag\82Í\81C\94Â\88ê\97\97\8dX\90V\82©\82ç\8cÄ\82Î\82ê\82½\82Æ\82«\82Í1\82É\82È\82Á\82Ä\82¢\82é
- if (GikoForm.BrowserTab.Tabs.Count = 0)
- and (TabsOpenAction.Tag = 0) then begin
- ShowMessage('\95\\8e¦\82·\82é\83^\83u\82ª\82 \82è\82Ü\82¹\82ñ\81B');
+procedure TGikoDM.GetTabURLs(AStringList: TStringList);
+var
+ rec : TBrowserRecord;
+ i : Integer;
+begin
+ for i := 0 to GikoForm.BrowserTab.Tabs.Count -1 do begin
+ try
+ rec := TBrowserRecord( GikoForm.BrowserTab.Tabs.Objects[ i ] );
+ if( rec <> nil) and (rec.Thread <> nil) then
+ AStringList.Add( rec.Thread.URL );
+ except
+ end;
end;
end;
// *************************************************************************
-//! \83^\83u\82Ì\8f\87\94Ô\82ð\8e©\93®\95Û\91¶
+//! \8ew\92è\82³\82ê\82½URL\82ð\8aJ\82«\81C\90æ\93ª\82Ì\83^\83u\82É\83t\83H\81[\83J\83X\82·\82é
// *************************************************************************
-procedure TGikoDM.TabAutoSaveActionExecute(Sender: TObject);
-begin
- GikoForm.SaveTabURLs;
+procedure TGikoDM.OpenURLs(AStringList: TStringList);
+var
+ GikoTab : TGikoTabAppend;
+ i, bound : Integer;
+ item : TThreadItem;
+begin
+ if (AStringList <> nil) then begin
+ GikoTab := GikoSys.Setting.BrowserTabAppend;
+ try
+ bound := AStringList.Count - 1;
+ if bound > -1 then begin
+ GikoSys.Setting.BrowserTabAppend := gtaLast;
+ for i := 0 to bound do begin
+ item := BBSsFindThreadFromURL( AStringList[ i ] );
+ if item <> nil then
+ GikoForm.InsertBrowserTab( item, false );
+ end;
+ //\8dÅ\8f\89\82Ì\82P\96\87\82É\90Ý\92è
+ if (GikoSys.Setting.URLDisplay) and
+ (GikoForm.BrowserTab.Tabs.Count > 0) then begin
+ GikoForm.AddressComboBox.Text :=
+ TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[0]).Thread.URL;
+ end;
+ end;
+ finally
+ GikoSys.Setting.BrowserTabAppend := GikoTab;
+ end;
+ end;
end;
// *************************************************************************
-//! \83^\83u\82Ì\8f\87\94Ô\82ð\8e©\93®\95\9c\8c³
+//! \83^\83u\82Ì\8f\87\94Ô\82ð\95\9c\8c³
// *************************************************************************
-procedure TGikoDM.TabAutoLoadActionExecute(Sender: TObject);
+procedure TGikoDM.TabsOpenActionExecute(Sender: TObject);
+const
+ TABFILE = 'tab.sav';
+var
+ URLs : TStringList;
+ fileName : string;
begin
- GikoForm.LoadTabURLs;
+ URLs := TStringList.Create();
+ try
+ fileName := GikoSys.GetAppDir + TABFILE;
+ if FileExists(fileName) then begin
+ try
+ URLs.LoadFromFile(fileName);
+ if (URLs.Count = 0) then begin
+ // \8bó\82Ì\83t\83@\83C\83\8b\82Ì\8fê\8d\87\81C\83o\83b\83N\83A\83b\83v\82ð\8dí\8f\9c\82µ\82È\82¢\82½\82ß\82É\8dí\8f\9c
+ SysUtils.DeleteFile(fileName);
+ end else begin
+ OpenURLs(URLs);
+ end;
+ except
+ on EFOpenError do ShowMessage('\83^\83u\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ');
+ end;
+ end;
+ finally
+ URLs.Free;
+ end;
+
+ if (GikoForm.BrowserTab.Tabs.Count = 0) and
+ (TabsOpenAction.Tag <> 1) then begin
+ ShowMessage('\95\\8e¦\82·\82é\83^\83u\82ª\82 \82è\82Ü\82¹\82ñ\81B');
+ end;
end;
// *************************************************************************
//! Be2ch\82É\83\8d\83O\83C\83\93/\83\8d\83O\83A\83E\83g\82·\82é
ThreadItem: TThreadItem;
begin
No := GikoForm.KokoPopupMenu.Tag;
- if No = 0 then Exit;
- ThreadItem := GikoForm.GetActiveContent;
- if ThreadItem = nil then Exit;
+ if No = 0
+ then Exit;
+ ThreadItem := GikoForm.GetActiveContent(True);
+ if not Assigned(ThreadItem) then
+ Exit;
ThreadItem.Kokomade := No;
- GikoForm.ActiveContent.Thread.ScrollTop :=
- OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
+ GikoForm.ActiveContent.Thread.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
GikoForm.ActiveContent.Repaint := true;
GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
//INFO 2005/11/19 \88ê\92U\89B\95Á\81A\95K\97v\82È\82çGikoForm\82Ì\95û\82É\83\81\83\\83b\83h\82ð\92Ç\89Á\82·\82é
var
ThreadItem: TThreadItem;
begin
- ThreadItem := GikoForm.GetActiveContent;
+ ThreadItem := GikoForm.GetActiveContent(True);
if ThreadItem = nil then Exit;
ThreadItem.Kokomade := -1;
- GikoForm.ActiveContent.Thread.ScrollTop :=
- OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
+ GikoForm.ActiveContent.Thread.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
GikoForm.ActiveContent.Repaint := true;
GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
//INFO 2005/11/19 \88ê\92U\89B\95Á\81A\95K\97v\82È\82çGikoForm\82Ì\95û\82É\83\81\83\\83b\83h\82ð\92Ç\89Á\82·\82é
begin
Number := GikoForm.KokoPopupMenu.Tag;
if Number = 0 then Exit;
- Item := GikoForm.GetActiveContent;
+ Item := GikoForm.GetActiveContent(True);
if Item = nil then Exit;
Editor := TEditorForm.Create(GikoForm);
//! \91I\91ð\82µ\82½\83\8c\83X\82ð\83R\83s\81[\82·\82é
// *************************************************************************
procedure TGikoDM.SameIDResAnchorActionExecute(Sender: TObject);
+const
+ LIMIT = 20;
var
ThreadItem : TThreadItem;
- No, count, rc : Integer;
- body : string;
- limited: boolean;
+ No : Integer;
+ AID: string;
begin
No := GikoForm.KokoPopupMenu.Tag;
if No = 0 then Exit;
- ThreadItem := GikoForm.GetActiveContent;
+ ThreadItem := GikoForm.GetActiveContent(True);
if ThreadItem = nil then Exit;
- count := GikoSys.GetSameIDResCount(No, GikoForm.ActiveContent.Thread);
- limited := false;
- if count > 20 then begin
- rc := GikoUtil.MsgBox(GikoForm.Handle,
- '20\8cÂ\88È\8fã\82 \82è\82Ü\82·\82ª\81A\82·\82×\82Ä\95\\8e¦\82µ\82Ü\82·\82©\81H',
- 'ID\83|\83b\83v\83A\83b\83v\8cx\8d\90',
- MB_YESNO or MB_ICONQUESTION);
- limited := rc <> ID_YES;
- end;
- body := GikoSys.GetSameIDResAnchor(No, ThreadItem, limited);
- GikoForm.ActiveContent.IDAnchorPopup(body);
+
+ AID := GikoSys.GetResID(No, ThreadItem);
+ if not IsNoValidID(AID) then begin
+ GikoForm.ShowSameIDAncher(AID);
+ end;
end;
// *************************************************************************
//! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\81@\81i\92Ê\8fí\81j
begin
IndividualForm := TIndividualAbonForm.Create(GikoForm);
try
- ThreadItem := GikoForm.GetActiveContent;
- ThreadItem.ScrollTop :=
- OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
+ ThreadItem := GikoForm.GetActiveContent(True);
+ ThreadItem.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
ReadList := TStringList.Create;
begin
IndividualForm := TIndividualAbonForm.Create(GikoForm);
try
- ThreadItem := GikoForm.GetActiveContent;
- ThreadItem.ScrollTop :=
- OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
+ ThreadItem := GikoForm.GetActiveContent(True);
+ ThreadItem.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
if (IndividualForm.ShowModal = mrOK) then begin
// *************************************************************************
procedure TGikoDM.UpFolderActionUpdate(Sender: TObject);
begin
- UpFolderAction.Enabled := not (GikoForm.GetActiveList is TBBS);
+ UpFolderAction.Enabled := not (GikoForm.GetActiveList is TBBS) and
+ (GikoForm.GetActiveList <> BoardGroup.SpecialBBS.Items[0].Items[0]);
end;
// *************************************************************************
//! \95\\8e¦\81@\95\\8e¦\83\8a\83X\83g\82Ì\83\82\81[\83h\95Ï\8dX
try
GikoForm.SelectListItem(List);
for i := 0 to List.Count - 1 do begin
- if TObject(List[i]) is TBoard then
+ if TObject(List[i]) is TCategory then
+ s := s + TCategory(List[i]).Title + #13#10
+ else if TObject(List[i]) is TBoard then
s := s + TBoard(List[i]).Title + #13#10
else if TObject(List[i]) is TThreadItem then
s := s + TThreadItem(List[i]).Title + #13#10;
// *************************************************************************
procedure TGikoDM.SelectItemNameCopyActionUpdate(Sender: TObject);
begin
- if ((GikoForm.GetActiveList is TBoard) or
+ if ((GikoForm.GetActiveList is TBBS) or
+ (GikoForm.GetActiveList is TBoard) or
(GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then
TAction(Sender).Enabled := True
else
begin
if (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0) then
TAction(Sender).Enabled := True
- else if GikoForm.GetActiveList is TBoard then
- TAction(Sender).Enabled := True
- else
+ else if GikoForm.GetActiveList is TBoard then begin
+ TAction(Sender).Enabled :=
+ (GikoForm.GetActiveList <> BoardGroup.SpecialBBS.Items[0].Items[0]);
+ end else
TAction(Sender).Enabled := False;
end;
// *************************************************************************
// *************************************************************************
procedure TGikoDM.SetFocusForBrowserActionExecute(Sender: TObject);
begin
- GikoForm.ActiveContent.Browser.SetFocus;
+ GikoForm.ActiveContent.Browser.SetFocus;
end;
// *************************************************************************
//! \83u\83\89\83E\83U\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82éUpdate\83C\83x\83\93\83g
end;
end;
// *************************************************************************
-//! WebBrowser\82Ì\8c\9f\8dõ\83_\83C\83A\83\8d\83O\82ð\8cÄ\82Ñ\8fo\82·
-// *************************************************************************
-procedure OpenFindDialog(Browser: TWebbrowser);
-const
- CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
- HTMLID_FIND = 1;
-var
- CmdTarget : IOleCommandTarget;
- vaIn, vaOut: OleVariant;
- PtrGUID: PGUID;
-begin
- if Browser.Document <> nil then begin
- New(PtrGUID);
- PtrGUID^ := CGID_WebBrowser;
- try
- Browser.Document.QueryInterface(IOleCommandTarget, CmdTarget);
- if CmdTarget <> nil then begin
- try
- CmdTarget.Exec(PtrGUID, HTMLID_FIND, 0, vaIn, vaOut);
- finally
- CmdTarget._Release;
- end;
- end;
- except
- end;
- Dispose(PtrGUID);
- end;
-end;
-
-// *************************************************************************
//! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\8c\9f\8dõ\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
// *************************************************************************
procedure TGikoDM.OpenFindDialogActionExecute(Sender: TObject);
begin
if( GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) then begin
- OpenFindDialog(GikoForm.ActiveContent.Browser);
+ GikoForm.ActiveContent.OpenFindDialog;
end;
end;
end;
end;
+// *************************************************************************
+//! \83\8a\83\93\83N\97\9a\97ð\82ð\96ß\82é\82Ì\8dX\90V\8f\88\97\9d
+// *************************************************************************
+procedure TGikoDM.PrevMoveHistoryUpdate(Sender: TObject);
+begin
+ PrevMoveHistory.Enabled :=
+ (MoveHisotryManager.HisotryIndex > 0)
+end;
+// *************************************************************************
+//! \83\8a\83\93\83N\97\9a\97ð\82ð\96ß\82é
+// *************************************************************************
+procedure TGikoDM.PrevMoveHistoryExecute(Sender: TObject);
+begin
+ if ( GikoForm.BrowserTab.TabIndex >= 0 ) then begin
+ BackToHistory(MoveHisotryManager.getPrevItem
+ (TBrowserRecord(GikoForm.BrowserTab.Tabs
+ .Objects[GikoForm.BrowserTab.TabIndex])));
+ end else begin
+ BackToHistory(MoveHisotryManager.getPrevItem( nil ) );
+ end;
+end;
+//! \83\8a\83\93\83N\97\9a\97ð\8f\88\97\9d
+procedure TGikoDM.BackToHistory(item: TMoveHistoryItem);
+var
+ browser : TWebBrowser;
+ doc : IHTMLDocument2;
+begin
+ if ( item <> nil ) then begin
+ if ( GikoForm.GetActiveContent = item.ThreadItem ) then begin
+ browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
+ .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
+ if (browser <> nil) then begin
+ try
+ doc := browser.ControlInterface.Document as IHTMLDocument2;
+ (doc.body as IHTMLElement2).ScrollTop := item.ScrollTop;
+ except
+ end;
+ end;
+ end else begin
+ //URL\82É\88Ú\93®
+ MoveURLWithHistory(item.ThreadItem.URL);
+ end;
+ end;
+end;
+//! \97\9a\97ð\8f\88\97\9d\82Â\82«URL\88Ú\93®
+procedure TGikoDM.MoveURLWithHistory(URL : String);
+var
+ idx : Integer;
+begin
+ //URL\82É\88Ú\93®
+ GikoForm.MoveToURL(URL);
+ //\88È\89º\81A\97\9a\97ð\82Ì\8f\88\97\9d
+ idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
+ if idx = -1 then begin
+ GikoForm.AddressComboBox.Items.Insert(0, URL);
+ if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
+ GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
+ end else begin
+ GikoForm.AddressComboBox.Items.Delete(idx);
+ GikoForm.AddressComboBox.Items.Insert(0, URL);
+ end;
+end;
+// *************************************************************************
+//! \83\8a\83\93\83N\97\9a\97ð\82ð\90i\82Þ\82Ì\8dX\90V\8f\88\97\9d
+// *************************************************************************
+procedure TGikoDM.NextMoveHistoryUpdate(Sender: TObject);
+begin
+ NextMoveHistory.Enabled :=
+ (MoveHisotryManager.HisotryIndex < MoveHisotryManager.Count - 1);
+end;
+// *************************************************************************
+//! \83\8a\83\93\83N\97\9a\97ð\82ð\90i\82Þ
+// *************************************************************************
+procedure TGikoDM.NextMoveHistoryExecute(Sender: TObject);
+begin
+ BackToHistory(MoveHisotryManager.getNextItem);
+end;
+// *************************************************************************
+//! \83A\83N\83e\83B\83u\97v\91f\82Ì\83N\83\8a\83b\83N
+// *************************************************************************
+procedure TGikoDM.ClickActiveElementActionExecute(Sender: TObject);
+var
+ browser : TWebBrowser;
+ elem : IHTMLElement;
+ doc : IHTMLDocument2;
+begin
+ 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
+ doc := browser.ControlInterface.Document as IHTMLDocument2;
+ if Assigned(doc) then begin
+ elem := doc.activeElement;
+ if Assigned(elem) then begin
+ elem.click;
+ end;
+ end;
+ except
+ end;
+ end;
+
+ end;
+ end;
+end;
+//! \81«\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
+procedure TGikoDM.VKDownActionExecute(Sender: TObject);
+begin
+ keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY, 0);
+ keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
+end;
+//! \81ª\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
+procedure TGikoDM.VKUpActionExecute(Sender: TObject);
+begin
+ keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY, 0);
+ keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
+end;
+//! \81¨\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
+procedure TGikoDM.VKRightActionExecute(Sender: TObject);
+begin
+ keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY, 0);
+ keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
+end;
+//! \81©\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
+procedure TGikoDM.VKLeftActionExecute(Sender: TObject);
+begin
+ keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY, 0);
+ keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
+end;
+//! \83^\83X\83N\83g\83\8c\83C\82É\8ai\94[\82·\82é
+procedure TGikoDM.StoredTaskTrayActionExecute(Sender: TObject);
+begin
+ GikoForm.StoredTaskTray;
+ StoredTaskTrayAction.Tag := -1;
+end;
+
+{
+\breif \83\8a\83\93\83N\83C\83\81\81[\83W\8eæ\93¾
+\83C\83\81\81[\83W\82Í\81C*.jpg, *.jpeg, *.gif, *.png
+}
+procedure TGikoDM.AllImageLinkToClipbordActionExecute(Sender: TObject);
+var
+ links : IHTMLElementCollection;
+ urls, exts : TStringList;
+begin
+ links := GetActiveThreadLinks;
+ if (links <> nil) then begin
+ urls := TStringList.Create;
+ exts := TStringList.Create;
+ try
+ exts.CaseSensitive := False;
+ exts.Sorted := True;
+ exts.Delimiter := ';';
+ exts.DelimitedText := '.gif;.jpg;.jpeg;.png';
+ GetLinkURLs(links, urls, 0, exts);
+ Clipboard.SetTextBuf(urls.GetText);
+ finally
+ exts.Free;
+ urls.Free;
+ end;
+ end;
+end;
+
+{
+\breif \90V\92\85\83\8c\83X\82Ì\83\8a\83\93\83N\83C\83\81\81[\83W\8eæ\93¾
+\83C\83\81\81[\83W\82Í\81C*.jpg, *.jpeg, *.gif, *.png
+}
+procedure TGikoDM.NewImageLinkToClipBoardActionExecute(Sender: TObject);
+var
+ links : IHTMLElementCollection;
+ urls, exts : TStringList;
+ ThreadItem : TThreadItem;
+begin
+ ThreadItem := GikoForm.GetActiveContent;
+ links := GetActiveThreadLinks;
+ if (ThreadItem <> nil) and (links <> nil) then begin
+ urls := TStringList.Create;
+ exts := TStringList.Create;
+ try
+ exts.CaseSensitive := False;
+ exts.Sorted := True;
+ exts.Delimiter := ';';
+ exts.DelimitedText := '.gif;.jpg;.jpeg;.png';
+
+ GetLinkURLs(links, urls,
+ (ThreadItem.Count - ThreadItem.NewResCount + 1), exts );
+ Clipboard.SetTextBuf(urls.GetText);
+ finally
+ exts.Free;
+ urls.Free;
+ end;
+ end;
+end;
+{
+\breif \83\8a\83\93\83NURL\8eæ\93¾
+\91Î\8fÛ\8ag\92£\8eq\82Í\81A\8fÚ\8d×\90Ý\92è\82Å\90Ý\92è\82³\82ê\82Ä\82¢\82é
+}
+procedure TGikoDM.AllLinkToClipboardActionExecute(Sender: TObject);
+var
+ links : IHTMLElementCollection;
+ urls, exts : TStringList;
+begin
+ links := GetActiveThreadLinks;
+ if (links <> nil) then begin
+ urls := TStringList.Create;
+ exts := TStringList.Create;
+ try
+ exts.CaseSensitive := False;
+ exts.Sorted := True;
+ exts.Delimiter := ';';
+ exts.DelimitedText :=
+ MojuUtils.CustomStringReplace(GikoSys.Setting.ExtList, '*', '');
+ GetLinkURLs(links, urls, 0, exts);
+ Clipboard.SetTextBuf(urls.GetText);
+ finally
+ exts.Free;
+ urls.Free;
+ end;
+ end;
+end;
+{
+\breif \90V\92\85\83\8c\83X\83\8a\83\93\83NURL\8eæ\93¾
+\91Î\8fÛ\8ag\92£\8eq\82Í\81A\8fÚ\8d×\90Ý\92è\82Å\90Ý\92è\82³\82ê\82Ä\82¢\82é
+}
+procedure TGikoDM.NewLinkToClipboardActionExecute(Sender: TObject);
+var
+ links : IHTMLElementCollection;
+ urls, exts : TStringList;
+ ThreadItem : TThreadItem;
+begin
+ ThreadItem := GikoForm.GetActiveContent;
+ links := GetActiveThreadLinks;
+ if (ThreadItem <> nil) and (links <> nil) then begin
+ urls := TStringList.Create;
+ exts := TStringList.Create;
+ try
+ exts.CaseSensitive := False;
+ exts.Sorted := True;
+ exts.Delimiter := ';';
+ exts.DelimitedText :=
+ MojuUtils.CustomStringReplace(GikoSys.Setting.ExtList, '*', '');
+ GetLinkURLs(links, urls,
+ (ThreadItem.Count - ThreadItem.NewResCount + 1), exts );
+ Clipboard.SetTextBuf(urls.GetText);
+ finally
+ exts.Free;
+ urls.Free;
+ end;
+ end;
+end;
+
+{
+\brief \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\82·\82×\82Ä\82Ì\83\8a\83\93\83N\82ð\8eæ\93¾\82·\82é\81B
+\return IHTMLElementCollection \83\8a\83\93\83N\82Ì\83R\83\8c\83N\83V\83\87\83\93
+}
+function TGikoDM.GetActiveThreadLinks : IHTMLElementCollection;
+var
+ browser : TWebBrowser;
+ doc : IHTMLDocument2;
+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
+ doc := browser.ControlInterface.Document as IHTMLDocument2;
+ if Assigned(doc) then begin
+ Result := doc.links;
+ end;
+ except
+ Result := nil;
+ end;
+ end;
+
+ end;
+ end;
+end;
+{
+\brief \83\8a\83\93\83N\82ÌURL\82ð\8eæ\93¾\82·\82é
+\param links \8eæ\93¾\82·\82é\83\8a\83\93\83N\82Ì\91S\91Ì\82Ì\83R\83\8c\83N\83V\83\87\83\93
+\param URLs \8eæ\93¾\82µ\82½URL\82Ì\95Û\91¶\90æ
+\param Start \90Ý\92è\82µ\82½\83\8c\83X\94Ô\8d\86\88È\8d~\82ð\8eæ\93¾( > 0)
+\param Exts \8eæ\93¾\82·\82é\83\8a\83\93\83N\82Ì\8ag\92£\8eq
+}
+procedure TGikoDM.GetLinkURLs(links : IHTMLElementCollection;
+ URLs : TStringList; const Start: Integer; Exts : TStringList);
+var
+ index ,i, j : 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);
+ // \83\8c\83X\82Ì\94Ô\8d\86\82ð\8dX\90V
+ if (Pos('menu:', url) > 0) then begin
+ index := StrToInt64Def(
+ Copy(url, 5, Length(url)), index + 1
+ );
+ end else begin
+ // \8aJ\8en\83\8c\83X\94Ô\8d\86\88È\8d~\82©\83`\83F\83b\83N
+ if (index >= Start) then begin
+ ext := ExtractFileExt( AnsiLowerCase(url) );
+ // \8ag\92£\8eq\82ð\83`\83F\83b\83N
+ if Exts.Find(ext, j) then begin
+ urls.Add(url)
+ end;
+ end;
+ end;
+ end;
+ end;
+ end;
+end;
+{
+\brief \83A\83h\83\8c\83X\83o\81[\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
+\param Sender \83C\83x\83\93\83g\82Ì\94\90¶\8c³
+}
+procedure TGikoDM.SetForcusForAddresBarActionExecute(Sender: TObject);
+begin
+ if ( GikoForm.AddressToolBar.Visible ) then begin
+ GikoForm.AddressComboBox.SetFocus;
+ end
+end;
+{
+\brief \88Ú\93]\82µ\82½\94Â\82ÌURL\82ð\8eæ\93¾\82·\82é\83_\83C\83A\83O\83\89\83\80\82ð\95\\8e¦\82·\82é
+}
+procedure TGikoDM.NewBoardSearchActionExecute(Sender: TObject);
+var
+ form : TNewBoardURLForm;
+ Msg: string;
+begin
+ if (EditorFormExists) then begin
+ Msg := '\83\8c\83X\83G\83f\83B\83^\82ð\91S\82Ä\95Â\82¶\82Ä\82\82¾\82³\82¢';
+ MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP);
+ Exit;
+ end;
+ form := TNewBoardURLForm.Create(Self);
+ try
+ form.ShowModal;
+ finally
+ form.Release;
+ end;
+end;
+//! \83u\83\89\83E\83U\82ð1\83y\81[\83W\95ª\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
+procedure TGikoDM.ScrollPageDownActionExecute(Sender: TObject);
+begin
+ GikoForm.BrowserMovement(GikoForm.BrowserPanel.Height);
+end;
+//! \83u\83\89\83E\83U\82ð1\83y\81[\83W\95ª\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
+procedure TGikoDM.ScrollPageUpActionExecute(Sender: TObject);
+begin
+ GikoForm.BrowserMovement(-GikoForm.BrowserPanel.Height);
+end;
+
+
+//! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é\81i\93§\96¾)
+procedure TGikoDM.AddIDtoNGWord0ActionExecute(Sender: TObject);
+begin
+ GikoForm.AddIDtoNGWord(true);
+end;
+//! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é
+procedure TGikoDM.AddIDtoNGWord1ActionExecute(Sender: TObject);
+begin
+ GikoForm.AddIDtoNGWord(false);
+end;
+//! \83N\83\8a\83b\83v\83{\81[\83h\82Ì\95¶\8e\9a\97ñ\82ðID\82Æ\82µ\82Ä\93¯\88êID\83\8c\83X\83A\83\93\83J\81[\95\\8e¦
+procedure TGikoDM.ExtractSameIDActionExecute(Sender: TObject);
+var
+ ID: String;
+begin
+ ID := Trim(Clipboard.AsText);
+ if (Length(ID) > 0) then begin
+ if not IsNoValidID(ID) then begin
+ GikoForm.ShowSameIDAncher(ID);
+ end;
+ end;
+end;
+//! \83^\83u\82Ì\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82·\82é
+procedure TGikoDM.ShowTabListActionExecute(Sender: TObject);
+var
+ i, j : Integer;
+ sBoard : TSpecialBoard;
+begin
+ sBoard := TSpecialBoard(SpecialBBS.Items[0].Items[0]);
+ sBoard.Clear;
+ for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
+ sBoard.Add(
+ TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Thread);
+ end;
+ GikoForm.SelectTreeNode(sBoard , True );
+end;
+//! TBoard\82©\82Â\93Á\8eê\97p\93r\94Â\82Å\82È\82¢
+procedure TGikoDM.BoardIEActionUpdate(Sender: TObject);
+begin
+ TAction(Sender).Enabled :=
+ (GikoForm.GetActiveList is TBoard) and
+ (GikoForm.GetActiveList <> BoardGroup.SpecialBBS.Items[0].Items[0]);
+end;
+
end.