OSDN Git Service

refs #19657
[gikonavigoeson/gikonavi.git] / GikoDataModule.pas
1 unit GikoDataModule;
2
3 interface
4
5 uses
6   SysUtils, Classes, ExtActns, StdActns, ActnList, ImgList, Controls,
7 {$IF Defined(DELPRO) }
8         SHDocVw,
9         MSHTML,
10 {$ELSE}
11         SHDocVw_TLB,
12         MSHTML_TLB,
13 {$IFEND}
14   ComCtrls, BrowserRecord, Graphics, Messages, Setting, Dialogs,
15   ActiveX, GikoSystem, MoveHistoryItem, HistoryList;
16
17 const
18         CAPTION_NAME: string = '\83M\83R\83i\83r';
19         USER_SETLINKBAR                                 = WM_USER + 2003;
20
21         ITEM_ICON_SORT1                                 = 12;           //!< \83\\81[\83g\83A\83C\83R\83\93
22         ITEM_ICON_SORT2                                 = 13;           //!< \83\\81[\83g\83A\83C\83R\83\93
23
24         //\83c\81[\83\8b\83o\81[\83A\83C\83R\83\93
25         TOOL_ICON_HEIGHT_MAX            = 16;           //!< \8d\82\82³\8dÅ\91å\83A\83C\83R\83\93
26         TOOL_ICON_HEIGHT_MIN            = 17;           //!< \8d\82\82³\8dÅ\8f¬\83A\83C\83R\83\93
27         TOOL_ICON_HEIGHT_NORMAL = 18;           //!< \8d\82\82³\95W\8f\80\83A\83C\83R\83\93
28         TOOL_ICON_WIDTH_MAX             = 19;           //!< \95\9d\8dÅ\91å\83A\83C\83R\83\93
29         TOOL_ICON_WIDTH_MIN             = 20;           //!< \95\9d\8dÅ\8f¬\83A\83C\83R\83\93
30         TOOL_ICON_WIDTH_NORMAL  = 21;           //!< \95\9d\95W\8f\80\83A\83C\83R\83\93
31
32         TOOL_ICON_FAV_FOLDER            = 30;           //!< \82¨\8bC\82É\93ü\82è\83t\83H\83\8b\83_\83A\83C\83R\83\93
33         TOOL_ICON_FAV_BOARD                     = 31;           //!< \82¨\8bC\82É\93ü\82è\94Â\83A\83C\83R\83\93
34         TOOL_ICON_FAV_THREAD            = 32;           //!< \82¨\8bC\82É\93ü\82è\83X\83\8c\83A\83C\83R\83\93
35
36         //! HTTP
37         PROTOCOL_HTTP : string = 'http://';
38         //! \83M\83R\83i\83r\83T\83C\83g\82ÌURL
39         URL_GIKONAVI: string = 'gikonavi.sourceforge.jp/';
40         //! Monazilla\83T\83C\83g\82ÌURL
41         URL_MONAZILLA: string = 'www.monazilla.org/';
42         //! 2\82¿\82á\82ñ\82Ë\82é\82ÌURL
43         URL_2ch: string = 'www.2ch.net/';
44         //! \83M\83R\83i\83rWiki\82ÌURL
45         URL_Wiki: string = 'sourceforge.jp/projects/gikonavi/wiki/FAQ';
46
47         SELECTCOMBOBOX_NAME: string = ''; // '\83X\83\8c\83b\83h\8di\8d\9e\8c\9f\8dõ';
48         SELECTCOMBOBOX_COLOR: TColor = clWindow;
49
50
51 type
52
53   TGikoDM = class(TDataModule)
54         GikoFormActionList: TActionList;
55         OnlyAHundredResAction: TAction;
56         OnlyKokoResAction: TAction;
57         LoginAction: TAction;
58         NewBoardAction: TAction;
59         LogDeleteAction: TAction;
60         KidokuAction: TAction;
61         StdToolBarVisibleAction: TAction;
62         AddressBarVisibleAction: TAction;
63         LinkBarVisibleAction: TAction;
64         ListToolBarVisibleAction: TAction;
65         SearchAction: TAction;
66         GikoNaviWebPageAction: TAction;
67         MonazillaWebPageAction: TAction;
68         BBS2chWebPageAction: TAction;
69         GikoFolderOpenAction: TAction;
70         AboutAction: TAction;
71         SelectTextClearAction: TAction;
72         NameTextClearAction: TAction;
73         MailTextClearAction: TAction;
74         ExitAction: TAction;
75         ListNameBarVisibleAction: TAction;
76         BrowserToolBarVisibleAction: TAction;
77         BrowserNameBarVisibleAction: TAction;
78         MsgBarVisibleAction: TAction;
79         MsgBarCloseAction: TAction;
80         StatusBarVisibleAction: TAction;
81         CabinetBBSAction: TAction;
82         CabinetHistoryAction: TAction;
83         OnlyNewResAction: TAction;
84         CabinetFavoriteAction: TAction;
85         CabinetVisibleAction: TAction;
86         ListNumberVisibleAction: TAction;
87         UpFolderAction: TAction;
88         CabinetCloseAction: TAction;
89         IconStyle: TAction;
90         LargeIconAction: TAction;
91         SmallIconAction: TAction;
92         ListIconAction: TAction;
93         DetailIconAction: TAction;
94         MidokuAction: TAction;
95         AllSelectAction: TAction;
96         AllItemAction: TAction;
97         LogItemAction: TAction;
98         NewItemAction: TAction;
99         ThreadRangeAction: TAction;
100         SelectItemAction: TAction;
101         StopAction: TAction;
102         OptionAction: TAction;
103         RoundAction: TAction;
104         BrowserMaxAction: TAction;
105         BrowserMinAction: TAction;
106         ScrollTopAction: TAction;
107         ScrollLastAction: TAction;
108         ScrollNewAction: TAction;
109         ScrollKokoAction: TAction;
110         EditorAction: TAction;
111         IEAction: TAction;
112         ShowThreadAction: TAction;
113         ShowBoardAction: TAction;
114         URLCopyAction: TAction;
115         NameCopyAction: TAction;
116         NameURLCopyAction: TAction;
117         ItemReloadAction: TAction;
118         ThreadEditorAction: TAction;
119         BoardIEAction: TAction;
120         SelectItemURLCopyAction: TAction;
121         SelectItemNameCopyAction: TAction;
122         SelectItemNameURLCopyAction: TAction;
123         SelectListReloadAction: TAction;
124         SelectThreadReloadAction: TAction;
125         BrowserTabCloseAction: TAction;
126         NotSelectTabCloseAction: TAction;
127         AllTabCloseAction: TAction;
128         KokomadeAction: TAction;
129         ZenbuAction: TAction;
130         KokoResAction: TAction;
131         TreeSelectBoradReload: TAction;
132         TreeSelectThreadReload: TAction;
133         TreeSelectURLCopy: TAction;
134         SelectReservAction: TAction;
135         SelectNewRoundName: TAction;
136         SelectDeleteRound: TAction;
137         KeySettingAction: TAction;
138         ArrangeAction: TAction;
139         ActiveLogDeleteAction: TAction;
140         TreeSelectNameURLCopy: TAction;
141         PaneInitAction: TAction;
142         LeftmostTabSelectAction: TAction;
143         LeftTabSelectAction: TAction;
144         RightTabSelectAction: TAction;
145         RightmostTabSelectAction: TAction;
146         FavoriteAddAction: TAction;
147         BoardFavoriteAddAction: TAction;
148         ThreadFavoriteAddAction: TAction;
149         TreeSelectFavoriteAddAction: TAction;
150         FavoriteArrangeAction: TAction;
151         MoveToAction: TAction;
152         BrowserTabVisibleAction: TAction;
153         BrowserTabTopAction: TAction;
154         BrowserTabBottomAction: TAction;
155         BrowserTabTabStyleAction: TAction;
156         BrowserTabButtonStyleAction: TAction;
157         BrowserTabFlatStyleAction: TAction;
158         GikoHelpAction: TAction;
159         KotehanAction: TAction;
160         ToolBarSettingAction: TAction;
161         SelectResAction: TAction;
162         AllResAction: TAction;
163         EditNGAction: TAction;
164         ReloadAction: TAction;
165         GoFowardAction: TAction;
166         GoBackAction: TAction;
167         TreeSelectSearchBoardName: TAction;
168         FavoriteTreeViewRenameAction: TAction;
169         FavoriteTreeViewNewFolderAction: TAction;
170         FavoriteTreeViewDeleteAction: TAction;
171         FavoriteTreeViewBrowseFolderAction: TAction;
172         FavoriteTreeViewReloadAction: TAction;
173         FavoriteTreeViewURLCopyAction: TAction;
174         FavoriteTreeViewNameCopyAction: TAction;
175         FavoriteTreeViewNameURLCopyAction: TAction;
176         FavoriteTreeViewLogDeleteAction: TAction;
177         ResRangeAction: TAction;
178         ExportFavoriteFile: TFileSaveAs;
179         FavoriteTreeViewBrowseBoardAction: TAction;
180         FavoriteTreeViewBrowseThreadAction: TAction;
181         UpBoardAction: TAction;
182         KoreCopy: TAction;
183         TreeSelectNameCopy: TAction;
184         SetFocusForBrowserAction: TAction;
185         SetFocusForThreadListAction: TAction;
186         SetFocusForCabinetAction: TAction;
187         FileRun1: TFileRun;
188         ThreadlistMaxAndFocusAction: TAction;
189         BrowserMaxAndFocusAction: TAction;
190         SelectItemSaveForHTML: TAction;
191         SelectItemSaveForDat: TAction;
192         LogFolderOpenAction: TAction;
193         TabsSaveAction: TAction;
194         TabsOpenAction: TAction;
195         BrowsBoradHeadAction: TAction;
196         JumpToNumOfResAction: TAction;
197         FavoriteTreeViewCollapseAction: TAction;
198         RightTabCloseAction: TAction;
199         LeftTabCloseAction: TAction;
200         SameIDResAnchorAction: TAction;
201         IndividualAbon1Action: TAction;
202         IndividualAbon0Action: TAction;
203         AntiIndividualAbonAction: TAction;
204         AntiIndividualAbonDlgAction: TAction;
205         IndividualAbonID1Action: TAction;
206         IndividualAbonID0Action: TAction;
207         MuteAction: TAction;
208         SortActiveColumnAction: TAction;
209         SortNextColumnAction: TAction;
210         SortPrevColumnAction: TAction;
211         BeLogInOutAction: TAction;
212         UnSelectedListViewAction: TAction;
213         WikiFAQWebPageAction: TAction;
214         ToobarImageList: TImageList;
215     SaveDialog: TSaveDialog;
216     ThreadSizeCalcForFileAction: TAction;
217     SetInputAssistAction: TAction;
218     OpenFindDialogAction: TAction;
219     ArchiveItemAction: TAction;
220     LiveItemAction: TAction;
221     FavoriteTreeViewItemNameCopyAction: TAction;
222     CloseAllEditorAction: TAction;
223     PrevMoveHistory: TAction;
224     NextMoveHistory: TAction;
225     ClickActiveElementAction: TAction;
226     VKDownAction: TAction;
227     VKUpAction: TAction;
228     VKRightAction: TAction;
229     VKLeftAction: TAction;
230     StoredTaskTrayAction: TAction;
231     AllImageLinkToClipbordAction: TAction;
232     NewImageLinkToClipBoardAction: TAction;
233     SetForcusForAddresBarAction: TAction;
234     NewBoardSearchAction: TAction;
235     NGWordEditFormAction: TAction;
236     ScrollPageDownAction: TAction;
237     ScrollPageUpAction: TAction;
238     AllLinkToClipboardAction: TAction;
239     NewLinkToClipboardAction: TAction;
240     AddIDtoNGWord0Action: TAction;
241     AddIDtoNGWord1Action: TAction;
242     ExtractSameIDAction: TAction;
243     ShowTabListAction: TAction;
244     DereferenceResAction: TAction;
245     UpdateGikonaviAction: TAction;
246     konoURLPATHAction: TAction;
247     konoURLQueryAction: TAction;
248     PopupMenuSettingAction: TAction;
249         procedure EditNGActionExecute(Sender: TObject);
250         procedure ReloadActionExecute(Sender: TObject);
251         procedure GoFowardActionExecute(Sender: TObject);
252         procedure GoBackActionExecute(Sender: TObject);
253         procedure MoveToActionExecute(Sender: TObject);
254         procedure FavoriteAddActionExecute(Sender: TObject);
255         procedure FavoriteArrangeActionExecute(Sender: TObject);
256         procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject);
257         procedure FavoriteTreeViewRenameActionExecute(Sender: TObject);
258         procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
259         procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject);
260         procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject);
261         procedure FavoriteTreeViewReloadActionExecute(Sender: TObject);
262         procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
263         procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
264         procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
265         procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
266         procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject);
267         procedure OnlyAHundredResActionExecute(Sender: TObject);
268         procedure OnlyKokoResActionExecute(Sender: TObject);
269         procedure OnlyNewResActionExecute(Sender: TObject);
270         procedure BrowserMaxActionExecute(Sender: TObject);
271         procedure BrowserMinActionExecute(Sender: TObject);
272         procedure ScrollTopActionExecute(Sender: TObject);
273         procedure ScrollLastActionExecute(Sender: TObject);
274         procedure ScrollNewActionExecute(Sender: TObject);
275         procedure ScrollKokoActionExecute(Sender: TObject);
276         procedure ScrollKokoActionUpdate(Sender: TObject);
277         procedure EditorActionExecute(Sender: TObject);
278         procedure IEActionExecute(Sender: TObject);
279         procedure ShowThreadActionExecute(Sender: TObject);
280         procedure ShowBoardActionExecute(Sender: TObject);
281         procedure URLCopyActionExecute(Sender: TObject);
282         procedure NameCopyActionExecute(Sender: TObject);
283         procedure NameURLCopyActionExecute(Sender: TObject);
284         procedure ItemReloadActionExecute(Sender: TObject);
285         procedure BrowserTabCloseActionExecute(Sender: TObject);
286         procedure BrowserTabCloseActionUpdate(Sender: TObject);
287         procedure NotSelectTabCloseActionExecute(Sender: TObject);
288         procedure NotSelectTabCloseActionUpdate(Sender: TObject);
289         procedure AllTabCloseActionExecute(Sender: TObject);
290         procedure ActiveLogDeleteActionExecute(Sender: TObject);
291         procedure LeftmostTabSelectActionExecute(Sender: TObject);
292         procedure LeftmostTabSelectActionUpdate(Sender: TObject);
293         procedure LeftTabSelectActionExecute(Sender: TObject);
294         procedure RightTabSelectActionExecute(Sender: TObject);
295         procedure RightTabSelectActionUpdate(Sender: TObject);
296         procedure RightmostTabSelectActionExecute(Sender: TObject);
297         procedure ThreadFavoriteAddActionExecute(Sender: TObject);
298         procedure ThreadFavoriteAddActionUpdate(Sender: TObject);
299         procedure SelectResActionExecute(Sender: TObject);
300         procedure AllResActionExecute(Sender: TObject);
301         procedure ResRangeActionExecute(Sender: TObject);
302         procedure UpBoardActionExecute(Sender: TObject);
303         procedure JumpToNumOfResActionExecute(Sender: TObject);
304         procedure RightTabCloseActionExecute(Sender: TObject);
305         procedure RightTabCloseActionUpdate(Sender: TObject);
306         procedure LeftTabCloseActionExecute(Sender: TObject);
307         procedure DataModuleCreate(Sender: TObject);
308         procedure SearchActionExecute(Sender: TObject);
309         procedure OptionActionExecute(Sender: TObject);
310         procedure RoundActionExecute(Sender: TObject);
311         procedure KeySettingActionExecute(Sender: TObject);
312         procedure KotehanActionExecute(Sender: TObject);
313         procedure ToolBarSettingActionExecute(Sender: TObject);
314         procedure MuteActionExecute(Sender: TObject);
315         procedure TreeSelectBoradReloadExecute(Sender: TObject);
316         procedure TreeSelectThreadReloadExecute(Sender: TObject);
317         procedure TreeSelectURLCopyExecute(Sender: TObject);
318         procedure TreeSelectNameURLCopyExecute(Sender: TObject);
319         procedure TreeSelectFavoriteAddActionExecute(Sender: TObject);
320         procedure TreeSelectSearchBoardNameExecute(Sender: TObject);
321         procedure TreeSelectNameCopyExecute(Sender: TObject);
322         procedure LoginActionExecute(Sender: TObject);
323         procedure NewBoardActionExecute(Sender: TObject);
324         procedure LogDeleteActionExecute(Sender: TObject);
325         procedure LogDeleteActionUpdate(Sender: TObject);
326         procedure SelectTextClearActionExecute(Sender: TObject);
327         procedure NameTextClearActionExecute(Sender: TObject);
328         procedure MailTextClearActionExecute(Sender: TObject);
329         procedure ExitActionExecute(Sender: TObject);
330         procedure ExportFavoriteFileBeforeExecute(Sender: TObject);
331         procedure ExportFavoriteFileAccept(Sender: TObject);
332         procedure SelectItemSaveForHTMLExecute(Sender: TObject);
333         procedure SelectItemSaveForDatExecute(Sender: TObject);
334         procedure TabsSaveActionExecute(Sender: TObject);
335         procedure TabsOpenActionExecute(Sender: TObject);
336         procedure BeLogInOutActionExecute(Sender: TObject);
337         procedure BeLogInOutActionUpdate(Sender: TObject);
338         procedure KokomadeActionExecute(Sender: TObject);
339         procedure ZenbuActionExecute(Sender: TObject);
340         procedure KokoResActionExecute(Sender: TObject);
341         procedure KoreCopyExecute(Sender: TObject);
342         procedure SameIDResAnchorActionExecute(Sender: TObject);
343         procedure IndividualAbon1ActionExecute(Sender: TObject);
344         procedure IndividualAbon0ActionExecute(Sender: TObject);
345         procedure AntiIndividualAbonActionExecute(Sender: TObject);
346         procedure AntiIndividualAbonDlgActionExecute(Sender: TObject);
347         procedure IndividualAbonID1ActionExecute(Sender: TObject);
348         procedure IndividualAbonID0ActionExecute(Sender: TObject);
349         procedure GikoNaviWebPageActionExecute(Sender: TObject);
350         procedure MonazillaWebPageActionExecute(Sender: TObject);
351         procedure BBS2chWebPageActionExecute(Sender: TObject);
352         procedure GikoFolderOpenActionExecute(Sender: TObject);
353         procedure AboutActionExecute(Sender: TObject);
354         procedure GikoHelpActionExecute(Sender: TObject);
355         procedure WikiFAQWebPageActionExecute(Sender: TObject);
356         procedure ListNumberVisibleActionExecute(Sender: TObject);
357         procedure UpFolderActionExecute(Sender: TObject);
358         procedure UpFolderActionUpdate(Sender: TObject);
359         procedure IconStyleExecute(Sender: TObject);
360         procedure AllItemActionExecute(Sender: TObject);
361         procedure LogItemActionExecute(Sender: TObject);
362         procedure NewItemActionExecute(Sender: TObject);
363         procedure ThreadRangeActionExecute(Sender: TObject);
364         procedure SelectItemActionExecute(Sender: TObject);
365         procedure ThreadEditorActionExecute(Sender: TObject);
366         procedure BoardIEActionExecute(Sender: TObject);
367         procedure SelectItemURLCopyActionExecute(Sender: TObject);
368         procedure SelectItemURLCopyActionUpdate(Sender: TObject);
369         procedure SelectItemNameCopyActionExecute(Sender: TObject);
370         procedure SelectItemNameCopyActionUpdate(Sender: TObject);
371         procedure SelectItemNameURLCopyActionExecute(Sender: TObject);
372         procedure SelectListReloadActionExecute(Sender: TObject);
373         procedure SelectListReloadActionUpdate(Sender: TObject);
374         procedure SelectThreadReloadActionExecute(Sender: TObject);
375         procedure SelectThreadReloadActionUpdate(Sender: TObject);
376         procedure SelectReservActionExecute(Sender: TObject);
377         procedure SelectReservActionUpdate(Sender: TObject);
378         procedure SelectNewRoundNameExecute(Sender: TObject);
379         procedure SelectDeleteRoundExecute(Sender: TObject);
380         procedure BoardFavoriteAddActionExecute(Sender: TObject);
381         procedure BoardFavoriteAddActionUpdate(Sender: TObject);
382         procedure LogFolderOpenActionExecute(Sender: TObject);
383         procedure LogFolderOpenActionUpdate(Sender: TObject);
384         procedure BrowsBoradHeadActionExecute(Sender: TObject);
385         procedure SortActiveColumnActionExecute(Sender: TObject);
386         procedure SortNextColumnActionExecute(Sender: TObject);
387         procedure SortPrevColumnActionExecute(Sender: TObject);
388         procedure StdToolBarVisibleActionExecute(Sender: TObject);
389         procedure AddressBarVisibleActionExecute(Sender: TObject);
390         procedure LinkBarVisibleActionExecute(Sender: TObject);
391         procedure ListToolBarVisibleActionExecute(Sender: TObject);
392         procedure ListNameBarVisibleActionExecute(Sender: TObject);
393         procedure BrowserToolBarVisibleActionExecute(Sender: TObject);
394         procedure BrowserNameBarVisibleActionExecute(Sender: TObject);
395         procedure MsgBarVisibleActionExecute(Sender: TObject);
396         procedure MsgBarCloseActionExecute(Sender: TObject);
397         procedure StatusBarVisibleActionExecute(Sender: TObject);
398         procedure CabinetBBSActionExecute(Sender: TObject);
399         procedure CabinetHistoryActionExecute(Sender: TObject);
400         procedure CabinetFavoriteActionExecute(Sender: TObject);
401         procedure CabinetVisibleActionExecute(Sender: TObject);
402         procedure CabinetCloseActionExecute(Sender: TObject);
403         procedure LargeIconActionExecute(Sender: TObject);
404         procedure SmallIconActionExecute(Sender: TObject);
405         procedure ListIconActionExecute(Sender: TObject);
406         procedure DetailIconActionExecute(Sender: TObject);
407         procedure StopActionExecute(Sender: TObject);
408         procedure ArrangeActionExecute(Sender: TObject);
409         procedure PaneInitActionExecute(Sender: TObject);
410         procedure BrowserTabVisibleActionExecute(Sender: TObject);
411         procedure BrowserTabTopActionExecute(Sender: TObject);
412         procedure BrowserTabBottomActionExecute(Sender: TObject);
413         procedure BrowserTabTabStyleActionExecute(Sender: TObject);
414         procedure BrowserTabButtonStyleActionExecute(Sender: TObject);
415         procedure BrowserTabFlatStyleActionExecute(Sender: TObject);
416         procedure SetFocusForBrowserActionExecute(Sender: TObject);
417         procedure SetFocusForBrowserActionUpdate(Sender: TObject);
418         procedure SetFocusForThreadListActionExecute(Sender: TObject);
419         procedure SetFocusForCabinetActionExecute(Sender: TObject);
420         procedure SetFocusForCabinetActionUpdate(Sender: TObject);
421         procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
422         procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
423         procedure UnSelectedListViewActionExecute(Sender: TObject);
424         procedure KidokuActionExecute(Sender: TObject);
425         procedure MidokuActionExecute(Sender: TObject);
426         procedure AllSelectActionExecute(Sender: TObject);
427         procedure AllSelectActionUpdate(Sender: TObject);
428     procedure ThreadSizeCalcForFileActionExecute(Sender: TObject);
429     procedure SetInputAssistActionExecute(Sender: TObject);
430     procedure OpenFindDialogActionExecute(Sender: TObject);
431     procedure ArchiveItemActionExecute(Sender: TObject);
432     procedure LiveItemActionExecute(Sender: TObject);
433     procedure FavoriteTreeViewItemNameCopyActionExecute(Sender: TObject);
434     procedure CloseAllEditorActionExecute(Sender: TObject);
435     procedure CloseAllEditorActionUpdate(Sender: TObject);
436     procedure PrevMoveHistoryUpdate(Sender: TObject);
437     procedure PrevMoveHistoryExecute(Sender: TObject);
438     procedure NextMoveHistoryUpdate(Sender: TObject);
439     procedure NextMoveHistoryExecute(Sender: TObject);
440     procedure ClickActiveElementActionExecute(Sender: TObject);
441     procedure VKDownActionExecute(Sender: TObject);
442     procedure VKUpActionExecute(Sender: TObject);
443     procedure VKRightActionExecute(Sender: TObject);
444     procedure VKLeftActionExecute(Sender: TObject);
445     procedure StoredTaskTrayActionExecute(Sender: TObject);
446     procedure LeftTabSelectActionUpdate(Sender: TObject);
447     procedure RightmostTabSelectActionUpdate(Sender: TObject);
448     procedure NewImageLinkToClipBoardActionExecute(Sender: TObject);
449     procedure AllImageLinkToClipbordActionExecute(Sender: TObject);
450     procedure SetForcusForAddresBarActionExecute(Sender: TObject);
451     procedure NewBoardSearchActionExecute(Sender: TObject);
452     procedure ScrollPageDownActionExecute(Sender: TObject);
453     procedure ScrollPageUpActionExecute(Sender: TObject);
454     procedure AllLinkToClipboardActionExecute(Sender: TObject);
455     procedure NewLinkToClipboardActionExecute(Sender: TObject);
456     procedure AddIDtoNGWord0ActionExecute(Sender: TObject);
457     procedure AddIDtoNGWord1ActionExecute(Sender: TObject);
458     procedure ExtractSameIDActionExecute(Sender: TObject);
459     procedure ShowTabListActionExecute(Sender: TObject);
460     procedure DereferenceResActionExecute(Sender: TObject);
461     procedure UpdateGikonaviActionExecute(Sender: TObject);
462     procedure konoURLPATHActionExecute(Sender: TObject);
463     procedure konoURLQueryActionExecute(Sender: TObject);
464     procedure konoURLQueryActionUpdate(Sender: TObject);
465     procedure PopupMenuSettingActionExecute(Sender: TObject);
466   private
467         { Private \90é\8c¾ }
468         procedure ClearResFilter;
469         procedure SetResRange(range: Integer);
470         procedure SetThreadAreaHorNormal;
471         procedure SetThreadAreaHorizontal(gls : TGikoListState);
472         procedure SetThreadAreaVerNormal;
473         procedure SetThreadAreaVertical(gls : TGikoListState);
474         procedure SetThreadReadProperty(read: Boolean);
475         procedure SelectThreadSaveToFile(dat: Boolean);
476         function GetSortProperties(List: TObject;var vSortOrder: Boolean): Boolean;
477         procedure RecalcThreadSize(limit : Integer);
478         procedure ClearSelectComboBox;
479     procedure ClearMailAllEditor();
480     procedure ClearNameTextAllEditor();
481     procedure MoveURLWithHistory(URL : String; KeyMask: Boolean = False);
482     procedure BackToHistory(item: TMoveHistoryItem);
483     function GetActiveThreadLinks : IHTMLElementCollection;
484     procedure GetLinkURLs(links : IHTMLElementCollection;
485         URLs : TStringList; const Start: Integer; Exts : TStringList);
486   public
487         { Public \90é\8c¾ }
488         procedure RepaintStatusBar;
489     function EditorFormExists(): boolean;
490     procedure GetTabURLs(AStringList: TStringList);
491     procedure OpenURLs(AStringList: TStringList);
492   published
493         { Published \90é\8c¾ }
494         //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82Å\97L\8cø\82É\82È\82é
495         procedure DependActiveCntentActionUpdate(Sender: TObject);
496         //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82©\82Â\83\8d\83O\82ð\8e\9d\82Á\82Ä\82¢\82é\82Æ\97L\8cø\82É\82È\82é
497         procedure DependActiveCntentLogActionUpdate(Sender: TObject);
498         //! TAction\82ÅActiveList\82ªTBoard(\94ñ\93Á\8eê\94Â)\82Å\97L\8cø\82É\82È\82é
499         procedure DependActiveListTBoardActionUpdate(Sender: TObject);
500         //! TAction\82ÅActiveList\82ªTBoard\82Å\97L\8cø\82É\82È\82é
501         procedure DependActiveListTBoardWithSpeciapActionUpdate(Sender: TObject);
502   end;
503
504 var
505   GikoDM: TGikoDM;
506
507
508 implementation
509
510 uses
511         Windows, Math, Clipbrd,
512         Giko, GikoUtil, BoardGroup,
513         FavoriteArrange, Favorite, MojuUtils,
514         Editor, ListSelect, Search, Option, Round,
515         KeySetting, Gesture, Kotehan, ToolBarSetting,
516         ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon,
517         GikoBayesian, About, ShellAPI,
518         RoundName, RoundData, Menus, ListViewUtils,
519         ThreadControl, GikoMessage, InputAssist,
520     DefaultFileManager, Forms, NewBoardURL, UpdateCheck,
521     PopupMenuSetting;
522
523 const
524         MSG_ERROR : string = '\83G\83\89\81[';
525
526 {$R *.dfm}
527 // *************************************************************************
528 //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82Å\97L\8cø\82É\82È\82é
529 // *************************************************************************
530 procedure TGikoDM.DependActiveCntentActionUpdate(Sender: TObject);
531 begin
532         TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil);
533 end;
534 // *************************************************************************
535 //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82©\82Â\83\8d\83O\82ð\8e\9d\82Á\82Ä\82¢\82é
536 // *************************************************************************
537 procedure TGikoDM.DependActiveCntentLogActionUpdate(Sender: TObject);
538 begin
539         TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil)
540                                                                         and (GikoForm.GetActiveContent.IsLogFile);
541 end;
542 // *************************************************************************
543 //! TAction\82ÅActiveList\82ªTBoard(\94ñ\93Á\8eê\94Â)\82Å\97L\8cø\82É\82È\82é
544 // *************************************************************************
545 procedure TGikoDM.DependActiveListTBoardActionUpdate(Sender: TObject);
546 begin
547         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard) and
548         (GikoForm.GetActiveList <> BoardGroup.SpecialBoard);
549 end;
550 // *************************************************************************
551 //! TAction\82ÅActiveList\82ªTBoard\82Å\97L\8cø\82É\82È\82é
552 // *************************************************************************
553 procedure TGikoDM.DependActiveListTBoardWithSpeciapActionUpdate(Sender: TObject);
554 begin
555         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard);
556 end;
557 // *************************************************************************
558 //! NG\83\8f\81[\83h\95Ò\8fW
559 // *************************************************************************
560 procedure TGikoDM.EditNGActionExecute(Sender: TObject);
561 begin
562         //\83e\83L\83X\83g\82É\8aÖ\98A\95t\82¯\82ç\82ê\82½\83A\83v\83\8a\82ÅNG\83\8f\81[\83h\83t\83@\83C\83\8b\82ð\83I\81[\83v\83\93
563         GikoSys.FAbon.EditNGwords;
564 end;
565 // *************************************************************************
566 //! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\8dÄ\93Ç\82Ý\8d\9e\82Ý\81j
567 // *************************************************************************
568 procedure TGikoDM.ReloadActionExecute(Sender: TObject);
569 begin
570         //\83\8a\83\8d\81[\83h\82ð\8eÀ\8ds\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
571         if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
572                 MsgBox(GikoForm.Handle, 'NG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\8dÄ\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½',
573                         MSG_ERROR, MB_OK or MB_ICONEXCLAMATION);
574         end else begin
575                 //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
576                 GikoForm.RepaintAllTabsBrowser();
577         end;
578 end;
579 // *************************************************************************
580 //! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\88ê\82Â\8cã\82ë\81j
581 // *************************************************************************
582 procedure TGikoDM.GoFowardActionExecute(Sender: TObject);
583 begin
584         //\88ê\82Â\8cã\82ë\82Ì\93Ç\82Ý\8d\9e\82Ý\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
585         if GikoSys.FAbon.GoBack =false then begin
586                 MsgBox(GikoForm.Handle, '\88ê\82Â\8cã\82ë\82ÌNG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½',
587                         MSG_ERROR, MB_OK or MB_ICONEXCLAMATION);
588         end else begin
589                 //\83X\83e\81[\83^\83X\82É\95\\8e¦\82³\82ê\82éNG\83\8f\81[\83h\83t\83@\83C\83\8b\96¼\82ð\8dX\90V
590                 RepaintStatusBar;
591                 //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
592                 GikoForm.RepaintAllTabsBrowser();
593         end;
594 end;
595 // *************************************************************************
596 //! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\88ê\82Â\91O\81j
597 // *************************************************************************
598 procedure TGikoDM.GoBackActionExecute(Sender: TObject);
599 begin
600         //\88ê\82Â\8cã\82ë\82Ì\93Ç\82Ý\8d\9e\82Ý\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
601         if GikoSys.FAbon.GoForward =false then begin
602                 MsgBox(GikoForm.Handle, '\88ê\82Â\91O\82ÌNG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½',
603                         MSG_ERROR, MB_OK or MB_ICONEXCLAMATION);
604         end else begin
605                 //\83X\83e\81[\83^\83X\82É\95\\8e¦\82³\82ê\82éNG\83\8f\81[\83h\83t\83@\83C\83\8b\96¼\82ð\8dX\90V
606                 RepaintStatusBar;
607                 //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
608                 GikoForm.RepaintAllTabsBrowser();
609         end;
610 end;
611 // *************************************************************************
612 //! NG\83\8f\81[\83h\82ð\95Ï\8dX\82µ\82½\8cã\82Ì\83X\83e\81[\83^\83X\83o\81[\82Ì\8dX\90V\8f\88\97\9d
613 // *************************************************************************
614 procedure TGikoDM.RepaintStatusBar;
615 var
616         s : String;
617 begin
618         //\83X\83e\81[\83^\83X\82É\95\\8e¦\82³\82ê\82éNG\83\8f\81[\83h\83t\83@\83C\83\8b\96¼\82ð\8dX\90V
619         s := GikoSys.FAbon.NGwordname;
620         GikoForm.StatusBar.Panels.Items[GiKo.NGWORDNAME_PANEL].Text := s;
621         //\83X\83e\81[\83^\83X\82Ì\95\\8e¦\83T\83C\83Y\82Ì\83\8a\83T\83C\83Y
622         GikoForm.StatusBar.Panels[GiKo.NGWORDNAME_PANEL].Width
623                 := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
624         GikoForm.StatusBarResize(nil);
625 end;
626 // *************************************************************************
627 //! \83A\83h\83\8c\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83A\83h\83\8c\83X\82Ö\88Ú\93®\82·\82é
628 // *************************************************************************
629 procedure TGikoDM.MoveToActionExecute(Sender: TObject);
630 begin
631         //\83A\83h\83\8c\83X\83R\83\93\83{\83{\83b\83N\83X\82©\82çURL\82ð\8eæ\93¾
632         //URL\82É\88Ú\93®
633     MoveURLWithHistory( Trim(GikoForm.AddressComboBox.Text) );
634 end;
635 // *************************************************************************
636 //! \82¨\8bC\82É\93ü\82è\82Ì\92Ç\89Á\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
637 // *************************************************************************
638 procedure TGikoDM.FavoriteAddActionExecute(Sender: TObject);
639 begin
640         GikoForm.ShowFavoriteAddDialog(GikoForm.GetActiveContent);
641 end;
642 // *************************************************************************
643 //! \82¨\8bC\82É\93ü\82è\82Ì\90®\97\9d\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
644 // *************************************************************************
645 procedure TGikoDM.FavoriteArrangeActionExecute(Sender: TObject);
646 var
647         Dlg: TFavoriteArrangeDialog;
648 begin
649         Dlg := TFavoriteArrangeDialog.Create(GikoForm);
650         try
651                 Dlg.ShowModal;
652         finally
653                 Dlg.Release;
654         end;
655         //\83\8a\83\93\83N\83o\81[\82É\8dX\90V\82ð\93`\82¦\82é
656         PostMessage( GikoForm.Handle, USER_SETLINKBAR, 0, 0 );
657 end;
658 // *************************************************************************
659 //! \83c\83\8a\81[\82ð\91S\82Ä\95Â\82\82é
660 // *************************************************************************
661 procedure TGikoDM.FavoriteTreeViewCollapseActionExecute(Sender: TObject);
662 var
663         node    : TTreeNode;
664 begin
665         node := GikoForm.FavoriteTreeView.Items.GetFirstNode;
666         try
667                 //\83m\81[\83h\82ª\91±\82­\8cÀ\82è\81@\83m\81[\83h\82ð\8fk\8f¬\82³\82¹\82é
668                 while node <> nil do begin
669                         if node.HasChildren then
670                                 node.Expanded := False;
671                         node := node.GetNext;
672                 end;
673         except
674         end;
675 end;
676 // *************************************************************************
677 //! \82¨\8bC\82É\93ü\82è\82Ì\96¼\91O\82ð\95Ò\8fW\82·\82é
678 // *************************************************************************
679 procedure TGikoDM.FavoriteTreeViewRenameActionExecute(Sender: TObject);
680 var
681         node : TTreeNode;
682 begin
683
684         if GikoForm.ClickNode = nil then
685                 Exit;
686         if GikoForm.ClickNode.IsFirstNode then
687                 Exit;
688         if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then
689                 Exit;
690         GikoForm.FavoriteTreeView.ReadOnly := False;
691         if (GikoForm.TreeType = gttFavorite) and (GikoForm.CabinetPanel.Visible) then begin
692                 node := GikoForm.ClickNode.Parent;
693                 while node <> nil do begin
694                         node.Expanded   := True;
695                         node                                    := node.Parent;
696                 end;
697                 GikoForm.ClickNode.EditText;
698         end else begin
699                 GikoForm.ClickNode.Text := InputBox( '\96¼\91O\82Ì\95Ï\8dX', '\82¨\8bC\82É\93ü\82è\82Ì\90V\82µ\82¢\96¼\91O\82ð\93ü\97Í\82µ\82Ä\82­\82¾\82³\82¢', GikoForm.ClickNode.Text );
700         end;
701         //\8dX\90V\82µ\82½\82±\82Æ\82ð\8b³\82¦\82é
702         FavoriteDM.Modified := true;
703         GikoForm.SetLinkBar;
704 end;
705 // *************************************************************************
706 //! \90V\82µ\82­\82¨\8bC\82É\93ü\82è\82É\83t\83H\83\8b\83_\82ð\8dì\90¬\82·\82é
707 // *************************************************************************
708 procedure TGikoDM.FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
709 var
710         NewFavFolder: TFavoriteFolder;
711         Node: TTreeNode;
712 begin
713
714         if GikoForm.ClickNode = nil then
715                 Exit;
716
717         try
718                 if not (TObject(GikoForm.ClickNode.Data) is TFavoriteFolder) then begin
719                         GikoForm.FavoriteTreeView.Selected := GikoForm.ClickNode.Parent;
720                         GikoForm.ClickNode := GikoForm.ClickNode.Parent;
721                 end;
722
723                 NewFavFolder := TFavoriteFolder.Create;
724                 Node := GikoForm.FavoriteTreeView.Items.AddChildObject(GikoForm.ClickNode, '\90V\82µ\82¢\83t\83H\83\8b\83_', NewFavFolder);
725                 Node.ImageIndex := 14;
726                 Node.SelectedIndex := 14;
727         //                      FClickNode.Selected.Expanded := True;
728                 GikoForm.FavoriteTreeView.Selected := Node;
729                 GikoForm.ClickNode := Node;
730                 //\8dX\90V\82µ\82½\82±\82Æ\82ð\8b³\82¦\82é
731                 FavoriteDM.Modified := true;
732                 FavoriteTreeViewRenameAction.Execute;
733         finally
734         end;
735
736 end;
737 // *************************************************************************
738 //! \82±\82Ì\82¨\8bC\82É\93ü\82è\82ð\8dí\8f\9c\82·\82é
739 // *************************************************************************
740 procedure TGikoDM.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
741 const
742         DEL_LINK_MSG = '\81g\83\8a\83\93\83N\81h\82Í\83\8a\83\93\83N\83o\81[\97p\83t\83H\83\8b\83_\82Å\82·\81B\8dí\8f\9c\82µ\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
743         DEL_MSG = '\81g^0\81h\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
744         DEL_TITLE = '\8dí\8f\9c\8am\94F';
745 begin
746
747         if GikoForm.ClickNode = nil then
748                 Exit;
749         if GikoForm.ClickNode.IsFirstNode then
750                 Exit;
751         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
752                 if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
753                         if MsgBox(GikoForm.Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
754                                 Exit;
755                 end else begin
756                         if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', GikoForm.ClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
757                                 Exit;
758                 end;
759         end;
760
761         GikoForm.ClickNode.Delete;
762         //\8dX\90V\82µ\82½\82±\82Æ\82ð\8b³\82¦\82é
763         FavoriteDM.Modified := true;
764
765         GikoForm.SetLinkBar;
766
767 end;
768 // *************************************************************************
769 //! \82±\82Ì\83t\83H\83\8b\83_\82É\93ü\82Á\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82ð\91S\82Ä\8aJ\82­
770 // *************************************************************************
771 procedure TGikoDM.FavoriteTreeViewBrowseFolderActionExecute(
772   Sender: TObject);
773 begin
774         GikoForm.FavoriteBrowseFolder( GikoForm.ClickNode );
775 end;
776 // *************************************************************************
777 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
778 // *************************************************************************
779 procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject);
780 var
781         FavThread: TFavoriteThreadItem;
782         FavBoard: TFavoriteBoardItem;
783         shiftDown: Boolean;
784 begin
785         if (GikoForm.ClickNode = nil) then Exit;
786
787         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
788
789         if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin
790                 FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
791                 if FavThread.Item <> nil then
792                         GikoForm.DownloadContent(FavThread.Item, shiftDown);
793         end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin
794                 FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
795                 GikoForm.DownloadList(FavBoard.Item, shiftDown);
796         end;
797
798 end;
799 // *************************************************************************
800 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82ÌURL\82ð\83R\83s\81[\82·\82é
801 // *************************************************************************
802 procedure TGikoDM.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
803 begin
804
805         if GikoForm.ClickNode = nil then Exit;
806
807         if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
808                 Clipboard.AsText := TFavoriteItem( GikoForm.ClickNode.Data ).URL + #13#10;
809         end;
810 end;
811 // *************************************************************************
812 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82é
813 // *************************************************************************
814 procedure TGikoDM.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
815 begin
816
817         if GikoForm.ClickNode = nil then Exit;
818
819         if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
820                 Clipboard.AsText :=
821                         TFavoriteItem(GikoForm.ClickNode.Data).GetItemTitle + #13#10;
822         end else begin
823                 Clipboard.AsText :=
824                         GikoForm.ClickNode.Text + #13#10;
825
826         end;
827 end;
828 // *************************************************************************
829 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82Ì\96¼\91O\82ÆURL\82ð\83R\83s\81[\82·\82é
830 // *************************************************************************
831 procedure TGikoDM.FavoriteTreeViewNameURLCopyActionExecute(
832   Sender: TObject);
833 var
834         favItem : TFavoriteItem;
835 begin
836
837         if GikoForm.ClickNode = nil then Exit;
838
839         if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
840                 favItem := TFavoriteItem(GikoForm.ClickNode.Data);
841                 Clipboard.AsText := favItem.GetItemTitle  + #13#10 +
842                                                         favItem.URL + #13#10;
843         end;
844
845 end;
846 // *************************************************************************
847 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\83X\83\8c\83b\83h\82ð\8dí\8f\9c\82·\82é
848 // *************************************************************************
849 procedure TGikoDM.FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
850 const
851         DEL_MSG = '\81g^0\81h\82Ì\83\8d\83O\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
852         DEL_TITLE = '\8dí\8f\9c\8am\94F';
853 var
854         ThreadItem: TThreadItem;
855         FavThread: TFavoriteThreadItem;
856 begin
857
858         if GikoForm.ClickNode = nil then Exit;
859         if not (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then Exit;
860
861         FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
862         ThreadItem := FavThread.Item;
863
864         try
865                 if GikoSys.Setting.DeleteMsg then begin
866                         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
867                                 if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', GikoForm.ClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
868                                         Exit;
869                 end;
870
871                 GikoForm.DeleteHistory(ThreadItem);
872                 GikoForm.DeleteTab(ThreadItem);
873                 ThreadItem.DeleteLogFile;
874
875                 GikoForm.ListView.Refresh;
876         finally
877         end;
878
879 end;
880 // *************************************************************************
881 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
882 // *************************************************************************
883 procedure TGikoDM.FavoriteTreeViewBrowseThreadActionExecute(
884   Sender: TObject);
885 var
886         threadItem      : TThreadItem;
887 begin
888
889         if GikoForm.ClickNode = nil then Exit;
890
891         if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
892
893                 threadItem := TFavoriteThreadItem( GikoForm.ClickNode.Data ).Item;
894                 if threadItem = nil then
895                         Exit;
896                 GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
897
898         end;
899 end;
900 //! \83\8c\83X\82Ì\8di\8d\9e\82Ý\83t\83B\83\8b\83^\81[\82ð\8bó\82É\82·\82é
901 procedure TGikoDM.ClearResFilter;
902 var
903         FilterList : TStringList;
904 begin
905         // \83t\83B\83\8b\83^\95\8e\9a\97ñ\82ð\8bó\82É\82·\82é
906         FilterList := TStringList.Create;
907         try
908                 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
909                 GikoSys.FSelectResFilter.Reverse := False;
910         finally
911                 FilterList.Free;
912         end;
913         GikoForm.SelectResWord := '';
914 end;
915 // *************************************************************************
916 //! \83\8c\83X\82Ì\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
917 // *************************************************************************
918 procedure TGikoDM.SetResRange(range: Integer);
919 begin
920         if GikoSys.ResRange <> range then begin
921                 GikoSys.ResRange        := range;
922                 // \83t\83B\83\8b\83^\95\8e\9a\97ñ\82ð\8bó\82É\82·\82é
923                 ClearResFilter;
924                 GikoForm.RepaintAllTabsBrowser();
925         end;
926 end;
927 // *************************************************************************
928 //! \8dÅ\90V100\83\8c\83X\82Ì\82Ý\95\\8e¦
929 // *************************************************************************
930 procedure TGikoDM.OnlyAHundredResActionExecute(Sender: TObject);
931 begin
932         if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
933                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
934
935         GikoForm.ResRangeMenuSelect     := 100;
936         OnlyAHundredResAction.Checked   := True;
937         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é\81B\90Ý\92è\92l\82©\82ç\82Æ\82Á\82Ä\82­\82é\81B
938     SetResRange(GikoSys.Setting.ResRangeExCount);
939 end;
940 // *************************************************************************
941 //! \96¢\93Ç\83\8c\83X\82Ì\82Ý\95\\8e¦
942 // *************************************************************************
943 procedure TGikoDM.OnlyKokoResActionExecute(Sender: TObject);
944 begin
945         if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
946                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
947
948         GikoForm.ResRangeMenuSelect     := Ord( grrKoko );
949         OnlyKokoResAction.Checked       := True;
950
951         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
952         SetResRange(Ord( grrKoko ));
953 end;
954 // *************************************************************************
955 //! \90V\92\85\83\8c\83X\82Ì\82Ý\95\\8e¦
956 // *************************************************************************
957 procedure TGikoDM.OnlyNewResActionExecute(Sender: TObject);
958 begin
959         if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
960                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
961
962         GikoForm.ResRangeMenuSelect     := Ord( grrNew );
963         OnlyNewResAction.Checked        := True;
964
965         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
966         SetResRange(Ord( grrNew ));
967 end;
968 // *************************************************************************
969 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\92Ê\8fí\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloHorizontal\81@
970 // *************************************************************************
971 procedure TGikoDM.SetThreadAreaHorNormal;
972 begin
973         //\92Ê\8fí\95\\8e¦\82É\82·\82é
974         GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
975         BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
976         BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
977         GikoSys.Setting.ListWidthState := glsNormal;
978 end;
979 // *************************************************************************
980 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\8dÅ\91å/\8dÅ\8f¬\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloHorizontal\81@
981 // *************************************************************************
982 procedure TGikoDM.SetThreadAreaHorizontal(gls : TGikoListState);
983 begin
984         if GikoSys.Setting.ListWidthState = glsNormal then
985                 GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
986         //\8dÅ\91å\95\\8e¦
987         if (gls = glsMax) then begin
988                 GikoForm.ViewPanel.Width := 1;
989                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
990                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
991                 GikoSys.Setting.ListWidthState := glsMax;
992         end else if (gls = glsMin) then begin
993                 GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80;
994                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
995                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
996                 GikoSys.Setting.ListWidthState := glsMin;
997         end;
998 end;
999 // *************************************************************************
1000 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\92Ê\8fí\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloVertical
1001 // *************************************************************************
1002 procedure TGikoDM.SetThreadAreaVerNormal;
1003 begin
1004         //\92Ê\8fí\95\\8e¦\82É\82·\82é
1005         GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
1006         BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1007         BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1008         GikoSys.Setting.ListHeightState := glsNormal;
1009 end;
1010 // *************************************************************************
1011 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\8dÅ\91å/\8dÅ\8f¬\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloVertical
1012 // *************************************************************************
1013 procedure TGikoDM.SetThreadAreaVertical(gls : TGikoListState);
1014 begin
1015         if GikoSys.Setting.ListHeightState = glsNormal then
1016                 GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
1017         if (gls = glsMin) then begin
1018                 GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7;
1019                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1020                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1021                 GikoSys.Setting.ListHeightState := glsMin;
1022         end else if (gls = glsMax) then begin
1023                 GikoForm.ViewPanel.Height := 1;
1024                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1025                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1026                 GikoSys.Setting.ListHeightState := glsMax;
1027         end;
1028 end;
1029 // *************************************************************************
1030 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\82ð\91å\82«\82­\95\\8e¦\82·\82é
1031 // *************************************************************************
1032 procedure TGikoDM.BrowserMaxActionExecute(Sender: TObject);
1033 begin
1034         if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1035                 case GikoSys.Setting.ListWidthState of
1036                         glsMax: begin
1037                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
1038                                 SetThreadAreaHorNormal;
1039                         end;
1040                         glsMin, glsNormal: begin
1041                                 //\8dÅ\91å\95\\8e¦\82É\82·\82é
1042                                 SetThreadAreaHorizontal(glsMax);
1043                         end;
1044                 end;
1045         end else begin
1046                 case GikoSys.Setting.ListHeightState of
1047                         glsMax: begin
1048                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
1049                                 SetThreadAreaVerNormal;
1050                         end;
1051                         glsMin, glsNormal: begin
1052                                 //\8dÅ\91å\95\\8e¦\82É\82·\82é
1053                                 SetThreadAreaVertical(glsMax);
1054                         end;
1055                 end;
1056         end;
1057 end;
1058 // *************************************************************************
1059 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\82ð\8f¬\82³\82­\95\\8e¦\82·\82é
1060 // *************************************************************************
1061 procedure TGikoDM.BrowserMinActionExecute(Sender: TObject);
1062 begin
1063         if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1064                 case GikoSys.Setting.ListWidthState of
1065                         glsMax, glsNormal: begin
1066                                 //\8dÅ\8f¬\95\\8e¦\82É\82·\82é
1067                                 SetThreadAreaHorizontal(glsMin);
1068                         end;
1069                         glsMin: begin
1070                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
1071                                 SetThreadAreaHorNormal;
1072                         end;
1073                 end;
1074         end else begin
1075                 case GikoSys.Setting.ListHeightState of
1076                         glsMax, glsNormal: begin
1077                                 //\8dÅ\8f¬\95\\8e¦\82É\82·\82é
1078                                 SetThreadAreaVertical(glsMin);
1079                         end;
1080                         glsMin: begin
1081                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
1082                                 SetThreadAreaVerNormal;
1083                         end;
1084                 end;
1085         end;
1086 end;
1087 // *************************************************************************
1088 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\90æ\93ª\82Ö\88Ú\93®\82·\82é
1089 // *************************************************************************
1090 procedure TGikoDM.ScrollTopActionExecute(Sender: TObject);
1091 begin
1092         GikoForm.BrowserMovement('top');
1093 end;
1094 // *************************************************************************
1095 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\8dÅ\8cã\82Ö\88Ú\93®\82·\82é
1096 // *************************************************************************
1097 procedure TGikoDM.ScrollLastActionExecute(Sender: TObject);
1098 begin
1099         GikoForm.BrowserMovement('bottom');
1100 end;
1101 // *************************************************************************
1102 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\90V\92\85\82Ö\88Ú\93®\82·\82é
1103 // *************************************************************************
1104 procedure TGikoDM.ScrollNewActionExecute(Sender: TObject);
1105 begin
1106         GikoForm.BrowserMovement('new');
1107 end;
1108 // *************************************************************************
1109 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\83R\83R\82Ü\82Å\93Ç\82ñ\82¾\82Ö\88Ú\93®\82·\82é
1110 // *************************************************************************
1111 procedure TGikoDM.ScrollKokoActionExecute(Sender: TObject);
1112 begin
1113         GikoForm.BrowserMovement('koko');
1114 end;
1115 // *************************************************************************
1116 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\83R\83R\82Ü\82Å\93Ç\82ñ\82¾\82Ö\88Ú\93®\82·\82é\82ÌUpdate\83C\83x\83\93\83g
1117 // *************************************************************************
1118 procedure TGikoDM.ScrollKokoActionUpdate(Sender: TObject);
1119 begin
1120         ScrollKokoAction.Enabled := (GikoForm.GetActiveContent <> nil)
1121                                                                 and (GikoForm.GetActiveContent.IsLogFile)
1122                                                                 and (GikoForm.GetActiveContent.Kokomade <> -1);
1123 end;
1124 // *************************************************************************
1125 //! \83\8c\83X\8f\91\82«\8d\9e\82Ý\83E\83B\83\93\83h\83E\82ð\95\\8e¦\82·\82é
1126 // *************************************************************************
1127 procedure TGikoDM.EditorActionExecute(Sender: TObject);
1128 var
1129         Editor: TEditorForm;
1130         Item: TThreadItem;
1131 begin
1132         Item := GikoForm.GetActiveContent;
1133         if Item = nil then Exit;
1134         Editor := TEditorForm.Create(GikoForm.GetMainForm);
1135         Editor.SetThreadItem(Item);
1136         Editor.Show;
1137         Editor.BodyEdit.SetFocus;
1138 end;
1139 // *************************************************************************
1140 //! \83X\83\8c\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
1141 // *************************************************************************
1142 procedure TGikoDM.IEActionExecute(Sender: TObject);
1143 begin
1144         ShowThreadAction.Execute;
1145 end;
1146 // *************************************************************************
1147 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
1148 // *************************************************************************
1149 procedure TGikoDM.ShowThreadActionExecute(Sender: TObject);
1150 var
1151         ThreadItem: TThreadItem;
1152 begin
1153         ThreadItem := GikoForm.GetActiveContent;
1154         if ThreadItem = nil then Exit;
1155         GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
1156 end;
1157 // *************************************************************************
1158 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\94Â\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
1159 // *************************************************************************
1160 procedure TGikoDM.ShowBoardActionExecute(Sender: TObject);
1161 var
1162         ThreadItem: TThreadItem;
1163 begin
1164         ThreadItem := GikoForm.GetActiveContent;
1165         if ThreadItem = nil then Exit;
1166         GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
1167 end;
1168 // *************************************************************************
1169 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\82ð\83R\83s\81[\82·\82é
1170 // *************************************************************************
1171 procedure TGikoDM.URLCopyActionExecute(Sender: TObject);
1172 var
1173         s: string;
1174 begin
1175         s := '';
1176         if TObject(GikoForm.GetActiveContent) is TBoard then
1177                 s := s + TBoard(GikoForm.GetActiveContent).URL + #13#10
1178         else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1179                 s := s + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1180         if s <> '' then
1181                 Clipboard.AsText := s;
1182 end;
1183 // *************************************************************************
1184 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\96¼\82ð\83R\83s\81[\82·\82é
1185 // *************************************************************************
1186 procedure TGikoDM.NameCopyActionExecute(Sender: TObject);
1187 var
1188         s: string;
1189 begin
1190         s := '';
1191         if TObject(GikoForm.GetActiveContent) is TBoard then
1192                 s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10
1193         else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1194                 s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10;
1195         if s <> '' then
1196                 Clipboard.AsText := s;
1197 end;
1198 // *************************************************************************
1199 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\96¼\82ÆURL\82ð\83R\83s\81[\82·\82é
1200 // *************************************************************************
1201 procedure TGikoDM.NameURLCopyActionExecute(Sender: TObject);
1202 var
1203         s: string;
1204 begin
1205         s := '';
1206         if TObject(GikoForm.GetActiveContent) is TBoard then
1207                 s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10 + TBoard(GikoForm.GetActiveContent).URL + #13#10
1208         else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1209                 s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10 + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1210         if s <> '' then
1211                 Clipboard.AsText := s;
1212 end;
1213 // *************************************************************************
1214 //! \95\\8e¦\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
1215 // *************************************************************************
1216 procedure TGikoDM.ItemReloadActionExecute(Sender: TObject);
1217 var
1218         ThreadItem: TThreadItem;
1219         shiftDown: Boolean;
1220 begin
1221         ThreadItem := GikoForm.GetActiveContent;
1222         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
1223         if ThreadItem <> nil then
1224                 GikoForm.DownloadContent(ThreadItem, shiftDown);
1225 end;
1226 // *************************************************************************
1227 //! \8c»\8dÝ\8aJ\82¢\82Ä\82¢\82é\83^\83u\82ð\95Â\82\82é
1228 // *************************************************************************
1229 procedure TGikoDM.BrowserTabCloseActionExecute(Sender: TObject);
1230 var
1231         idx: Integer;
1232 begin
1233         idx := GikoForm.BrowserTab.TabIndex;
1234         if idx <> -1 then begin
1235                 if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1236                         GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1237                 end;
1238         end;
1239 end;
1240 // *************************************************************************
1241 //! \83^\83u\82ª\82P\82Â\88È\8fã\82 \82ê\82ª\97L\8cø\82É\82·\82éUpdate\83C\83x\83\93\83g
1242 // *************************************************************************
1243 procedure TGikoDM.BrowserTabCloseActionUpdate(Sender: TObject);
1244 begin
1245         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0);
1246 end;
1247 // *************************************************************************
1248 //! \8c»\8dÝ\8aJ\82¢\82Ä\82¢\82é\83^\83u\88È\8aO\82ð\95Â\82\82é
1249 // *************************************************************************
1250 procedure TGikoDM.NotSelectTabCloseActionExecute(Sender: TObject);
1251 var
1252         i: Integer;
1253         idx: Integer;
1254 begin
1255         idx := GikoForm.BrowserTab.TabIndex;
1256         if idx = -1 then Exit;
1257         GikoForm.BrowserTab.Tabs.BeginUpdate;
1258         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto GikoForm.BrowserTab.TabIndex + 1 do begin
1259                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1260                 GikoForm.BrowserTab.Tabs.Delete(i);
1261         end;
1262         if idx > 0 then begin
1263                 for i := GikoForm.BrowserTab.TabIndex - 1 downto 0 do begin
1264                         TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1265                         GikoForm.BrowserTab.Tabs.Delete(i);
1266                 end;
1267         end;
1268         GikoForm.BrowserTab.Tabs.EndUpdate;
1269 end;
1270 // *************************************************************************
1271 //! \83^\83u\82ª\82Q\82Â\88È\8fã\82 \82ê\82ª\97L\8cø\82É\82·\82éUpdate\83C\83x\83\93\83g
1272 // *************************************************************************
1273 procedure TGikoDM.NotSelectTabCloseActionUpdate(Sender: TObject);
1274 begin
1275         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1276 end;
1277 // *************************************************************************
1278 //! \91S\82Ä\82Ì\83^\83u\82ð\95Â\82\82é
1279 // *************************************************************************
1280 procedure TGikoDM.AllTabCloseActionExecute(Sender: TObject);
1281 var
1282         i: Integer;
1283 begin
1284         if GikoSys.Setting.ShowDialogForAllTabClose then
1285                 if(MessageDlg('\91S\82Ä\82Ì\83^\83u\82ð\95Â\82\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then
1286                         Exit;
1287
1288         GikoForm.ActiveContent := nil;
1289         GikoForm.BrowserNullTab.Thread := nil;
1290         GikoForm.BrowserTab.OnChange := nil;
1291         GikoForm.BrowserTab.Tabs.BeginUpdate;
1292         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
1293                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1294         end;
1295         GikoForm.BrowserTab.Tabs.Clear;
1296         GikoForm.BrowserTab.Tabs.EndUpdate;
1297         GikoForm.BrowserTab.OnChange := GikoForm.BrowserTabChange;
1298         GikoForm.SetContent(GikoForm.BrowserNullTab);
1299         GikoForm.Caption := CAPTION_NAME ;
1300 end;
1301 // *************************************************************************
1302 //! \8c»\8dÝ\8aJ\82¢\82Ä\82¢\82é\83^\83u\82Ì\83X\83\8c\83b\83h\82ð\8dí\8f\9c\82·\82é
1303 // *************************************************************************
1304 procedure TGikoDM.ActiveLogDeleteActionExecute(Sender: TObject);
1305 const
1306         DEL_MSG = '\81g^0\81h\82Ì\83\8d\83O\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
1307         DEL_TITLE = '\8dí\8f\9c\8am\94F';
1308 var
1309         idx: Integer;
1310         ThreadItem: TThreadItem;
1311 begin
1312         idx := GikoForm.BrowserTab.TabIndex;
1313         if idx <> -1 then begin
1314                 if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1315                         ThreadItem := TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]).Thread;
1316                         if GikoSys.Setting.DeleteMsg then
1317                                 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
1318                                         if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
1319                                                 Exit;
1320                         GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1321             GikoForm.DeleteHistory(ThreadItem);
1322                         ThreadItem.DeleteLogFile;
1323                         if ThreadItem.ParentBoard = GikoForm.ActiveList then
1324                                 GikoForm.ListView.Refresh;
1325                 end;
1326         end;
1327 end;
1328 // *************************************************************************
1329 //! \88ê\94Ô\8d\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1330 // *************************************************************************
1331 procedure TGikoDM.LeftmostTabSelectActionExecute(Sender: TObject);
1332 begin
1333         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1334                 GikoForm.BrowserTab.TabIndex := 0;
1335                 GikoForm.BrowserTab.OnChange(nil);
1336         end;
1337 end;
1338 // *************************************************************************
1339 //! \8d\82Ì\83^\83u\82ð\91I\91ð\82·\82é\82ÌUpdate\83C\83x\83\93\83g
1340 // *************************************************************************
1341 procedure TGikoDM.LeftTabSelectActionUpdate(Sender: TObject);
1342 begin
1343     if ( not GikoSys.Setting.LoopBrowserTabs ) then begin
1344         LeftmostTabSelectActionUpdate(Sender);
1345     end else begin
1346         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1347     end;
1348 end;
1349
1350 // *************************************************************************
1351 //! \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
1352 // *************************************************************************
1353 procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject);
1354 begin
1355         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1356                                                                 and (GikoForm.BrowserTab.TabIndex <> 0);
1357 end;
1358 // *************************************************************************
1359 //! \8d\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1360 // *************************************************************************
1361 procedure TGikoDM.LeftTabSelectActionExecute(Sender: TObject);
1362 begin
1363         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1364                 if GikoForm.BrowserTab.TabIndex = -1 then begin
1365                         GikoForm.BrowserTab.TabIndex := 0;
1366                         GikoForm.BrowserTab.OnChange(nil);
1367                 end else if GikoForm.BrowserTab.TabIndex > 0 then begin
1368                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1;
1369                         GikoForm.BrowserTab.OnChange(nil);
1370                 end else begin
1371             if (GikoSys.Setting.LoopBrowserTabs) and
1372                 (GikoForm.BrowserTab.TabIndex = 0) then begin
1373                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1374                         GikoForm.BrowserTab.OnChange(nil);
1375             end;
1376         end;
1377         end;
1378 end;
1379 // *************************************************************************
1380 //! \89E\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1381 // *************************************************************************
1382 procedure TGikoDM.RightTabSelectActionExecute(Sender: TObject);
1383 begin
1384         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1385                 if GikoForm.BrowserTab.TabIndex = -1 then begin
1386                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1387                         GikoForm.BrowserTab.OnChange(nil);
1388                 end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin
1389                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1;
1390                         GikoForm.BrowserTab.OnChange(nil);
1391                 end else begin
1392             if (GikoSys.Setting.LoopBrowserTabs) and
1393                 (GikoForm.BrowserTab.TabIndex = (GikoForm.BrowserTab.Tabs.Count - 1)) then begin
1394                         GikoForm.BrowserTab.TabIndex := 0;
1395                         GikoForm.BrowserTab.OnChange(nil);
1396             end;
1397         end;
1398         end;
1399 end;
1400 // *************************************************************************
1401 //! \89E\82Ì\83^\83u\82ð\91I\91ð\82·\82éUpdate\83C\83x\83\93\83g
1402 // *************************************************************************
1403 procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject);
1404 begin
1405     if ( not GikoSys.Setting.LoopBrowserTabs ) then begin
1406         RightmostTabSelectActionUpdate(Sender);
1407     end else begin
1408         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1409     end;
1410 end;
1411
1412 // *************************************************************************
1413 //! \88ê\94Ô\89E\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1414 // *************************************************************************
1415 procedure TGikoDM.RightmostTabSelectActionExecute(Sender: TObject);
1416 begin
1417         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1418                 GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1419                 GikoForm.BrowserTab.OnChange(nil);
1420         end;
1421 end;
1422 // *************************************************************************
1423 //! \88ê\94Ô\89E\82Ì\83^\83u\82ð\91I\91ð\82·\82é\82ÌUpdate\83C\83x\83\93\83g
1424 // *************************************************************************
1425 procedure TGikoDM.RightmostTabSelectActionUpdate(Sender: TObject);
1426 begin
1427         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1428                                                                 and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
1429
1430 end;
1431 // *************************************************************************
1432 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á
1433 // *************************************************************************
1434 procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject);
1435 begin
1436         if TObject(GikoForm.ListView.Selected.Data) is TThreadItem then
1437                 GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data));
1438 end;
1439 // *************************************************************************
1440 //! \83X\83\8c\83b\83h\88ê\97\97\82Å\81A\83X\83\8c\82ª\82P\82Â\88È\8fã\91I\91ð\82³\82ê\82Ä\82¢\82é\97L\8cø\82É\82È\82éUpdate\83C\83x\83\93\83g
1441 // *************************************************************************
1442 procedure TGikoDM.ThreadFavoriteAddActionUpdate(Sender: TObject);
1443 begin
1444         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
1445                                                                         and (GikoForm.ListView.SelCount > 0);
1446 end;
1447 // *************************************************************************
1448 //! \83\8c\83X\82Ì\93à\97e\82ð\8di\82è\8d\9e\82Þ
1449 // *************************************************************************
1450 procedure TGikoDM.SelectResActionExecute(Sender: TObject);
1451 var
1452         Dlg: TListSelectDialog;
1453         FilterList : TStringList;
1454         idx : Integer;
1455 begin
1456         Dlg := TListSelectDialog.Create(GikoForm);
1457         try
1458                 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
1459                 Dlg.SelectComboBox.Text := GikoForm.SelectResWord;
1460                 Dlg.ShowModal;
1461                 if Dlg.ModalResult = mrOK then begin
1462                         SelectResAction.Checked := True;
1463                         if Length( Dlg.SelectComboBox.Text ) = 0 then begin
1464                                 // \8bó\93ü\97Í\82Å OK \82Í\8di\82è\8d\9e\82Ý\89ð\8f\9c\82Æ\93¯\88Ó\8b`
1465                                 ResRangeAction.Execute;
1466                         end else begin
1467                                 GikoSys.ResRange := Ord( grrSelect );
1468
1469                                 // \8dÅ\8cã\82É\90Ý\92è\82µ\82½\82à\82Ì\82ð\8ao\82¦\82Ä\82¨\82­
1470                                 GikoForm.SelectResWord := Dlg.SelectComboBox.Text;
1471
1472                                 // \8c\9f\8dõ\97\9a\97ð\82Ì\8dX\90V
1473                                 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
1474                                 if idx <> -1 then
1475                                         GikoSys.Setting.SelectTextList.Delete(idx);
1476                                 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
1477                                 while Dlg.SelectComboBox.Items.Count > 100 do begin
1478                                         Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
1479                                 end;
1480
1481                                 try
1482                                         if GikoForm.SelectComboBoxPanel.Visible then
1483                                                 GikoForm.SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1484                                 except
1485                                 end;
1486
1487                                 // \83t\83B\83\8b\83^\82Ì\90Ý\92è
1488                                 FilterList := TStringList.Create;
1489                                 try
1490                                         GikoSys.FSelectResFilter.Reverse := True;
1491                                         FilterList.Delimiter := ' '; //\8bæ\90Ø\82è\8eq\82ð\94¼\8ap\83X\83y\81[\83X\82É\90Ý\92è
1492                                         FilterList.DelimitedText := Dlg.SelectComboBox.Text;
1493
1494                                         GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1495                                 finally
1496                                         FilterList.Free;
1497                                 end;
1498                                 GikoForm.RepaintAllTabsBrowser();
1499                         end;
1500                 end else begin
1501                         // \83L\83\83\83\93\83Z\83\8b
1502                         if GikoSys.ResRange <> Ord( grrSelect ) then
1503                                 ResRangeAction.Execute;
1504                 end;
1505         finally
1506                 Dlg.Release;
1507         end;
1508
1509 end;
1510 // *************************************************************************
1511 //! \91S\82Ä\82Ì\83\8c\83X\82ð\95\\8e¦\82·\82é
1512 // *************************************************************************
1513 procedure TGikoDM.AllResActionExecute(Sender: TObject);
1514 begin
1515         if(GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil )
1516                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
1517
1518         GikoForm.ResRangeMenuSelect     := Ord( grrAll );
1519         AllResAction.Checked            := True;
1520
1521         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
1522         SetResRange(Ord( grrAll ));
1523 end;
1524 // *************************************************************************
1525 //! \83\8c\83X\82Ì\95\\8e¦\94Í\88Í\82ð\90Ý\92è
1526 // *************************************************************************
1527 procedure TGikoDM.ResRangeActionExecute(Sender: TObject);
1528 begin
1529         case GikoForm.ResRangeMenuSelect of
1530         Ord( grrAll ):  AllResAction.Execute;
1531         Ord( grrKoko ): OnlyKokoResAction.Execute;
1532         Ord( grrNew ):  OnlyNewResAction.Execute;
1533         100:                    OnlyAHundredResAction.Execute;
1534         end;
1535
1536 end;
1537 // *************************************************************************
1538 //! \82±\82Ì\83X\83\8c\83b\83h\82ð\8aÜ\82Þ\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦
1539 // *************************************************************************
1540 procedure TGikoDM.UpBoardActionExecute(Sender: TObject);
1541 begin
1542         GikoForm.SelectTreeNode( GikoForm.GetActiveContent.ParentBoard, True );
1543 end;
1544 // *************************************************************************
1545 //! \8ew\92è\82µ\82½\94Ô\8d\86\82Ì\83\8c\83X\82É\94ò\82Ô
1546 // *************************************************************************
1547 procedure TGikoDM.JumpToNumOfResActionExecute(Sender: TObject);
1548 var
1549         str: string;
1550         res: integer;
1551 begin
1552         str := '1';
1553         if( InputQuery('\8ew\92è\82µ\82½\94Ô\8d\86\82Ì\83\8c\83X\82É\94ò\82Ô', '\94Ô\8d\86\82ð\93ü\97Í\82µ\82Ä\82­\82¾\82³\82¢', str) ) then begin
1554                 str := ZenToHan(str);
1555                 res := StrToIntDef(str, -1);
1556                 if (res > 0) and (res <= GikoForm.GetActiveContent.Count) then begin
1557                         GikoForm.ActiveContent.Move(IntToStr(res));
1558                         SetFocusForBrowserAction.Execute;
1559                 end else if res > GikoForm.GetActiveContent.Count then begin
1560                         GikoForm.ActiveContent.Move(IntToStr(GikoForm.GetActiveContent.Count));
1561                         SetFocusForBrowserAction.Execute;
1562                 end;
1563         end;
1564 end;
1565 // *************************************************************************
1566 //! \83A\83N\83e\83B\83u\82È\83^\83u\82æ\82è\89E\82ð\95Â\82\82é
1567 // *************************************************************************
1568 procedure TGikoDM.RightTabCloseActionExecute(Sender: TObject);
1569 var
1570         i: Integer;
1571         idx: Integer;
1572 begin
1573         idx := GikoForm.BrowserTab.TabIndex;
1574         if idx = -1 then Exit;
1575         GikoForm.BrowserTab.Tabs.BeginUpdate;
1576         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto idx + 1 do begin
1577                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1578                 GikoForm.BrowserTab.Tabs.Delete(i);
1579         end;
1580         GikoForm.BrowserTab.Tabs.EndUpdate;
1581 end;
1582 // *************************************************************************
1583 //! \83^\83u\82Ì\90\94\82ª\82Q\88È\8fã\82Å\97L\8cø\82ÈUpdate\83C\83x\83\93\83g
1584 // *************************************************************************
1585 procedure TGikoDM.RightTabCloseActionUpdate(Sender: TObject);
1586 begin
1587         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1588 end;
1589 // *************************************************************************
1590 //! \83A\83N\83e\83B\83u\82È\83^\83u\82æ\82è\8d\82ð\95Â\82\82é
1591 // *************************************************************************
1592 procedure TGikoDM.LeftTabCloseActionExecute(Sender: TObject);
1593 var
1594         i: Integer;
1595         idx: Integer;
1596 begin
1597         idx := GikoForm.BrowserTab.TabIndex;
1598         if idx = -1 then Exit;
1599         GikoForm.BrowserTab.Tabs.BeginUpdate;
1600         if idx > 0 then begin
1601                 for i := idx - 1 downto 0 do begin
1602                         TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1603                         GikoForm.BrowserTab.Tabs.Delete(i);
1604                 end;
1605         end;
1606         GikoForm.BrowserTab.Tabs.EndUpdate;
1607 end;
1608 ////////////////////////////////\83X\83\8c\83b\83h\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
1609 procedure TGikoDM.DataModuleCreate(Sender: TObject);
1610 begin
1611     // GikoDM\82æ\82è\82à\91\81\82­\8f\89\8aú\89»\82³\82ê\82é\95K\97v\82ª\82 \82é\83t\83@\83C\83\8b\82ª\82¢\82é\82Æ\82±\82¯\82é\81I\81I
1612     // \8f\89\8aú\89»\8f\87\94Ô\82É\92\8d\88Ó\82·\82é\82±\82Æ\81I\81I
1613     //\8f\89\89ñ\8bN\93®\8e\9e\82Ì\8f\89\8aú\89»\83t\83@\83C\83\8b\90Ý\92è
1614     TDefaultFileManager.CopyDefaultFiles(
1615         GikoSys.GetAppDir + 'defaultFiles.ini');
1616 end;
1617 // *************************************************************************
1618 //! \83\8d\83O\8c\9f\8dõ\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
1619 // *************************************************************************
1620 procedure TGikoDM.SearchActionExecute(Sender: TObject);
1621 var
1622         chk: TObject;
1623 begin
1624
1625         if GikoForm.SearchDialog = nil then begin
1626                 if (GikoForm.GetActiveList is TCategory) or (GikoForm.GetActiveList is TBoard) then
1627                         chk := GikoForm.GetActiveList
1628                 else
1629                         chk := nil;
1630
1631                 GikoForm.SearchDialog := TSearchDialog.Create(GikoForm, chk);
1632                 GikoForm.SearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1633         end;
1634
1635         try
1636                 GikoForm.SearchDialog.Show;
1637         except
1638         end;
1639 end;
1640 // *************************************************************************
1641 //! \83I\83v\83V\83\87\83\93\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
1642 // *************************************************************************
1643 procedure TGikoDM.OptionActionExecute(Sender: TObject);
1644 var
1645         Dlg: TOptionDialog;
1646 begin
1647         Dlg := TOptionDialog.Create(GikoForm);
1648         try
1649                 Dlg.ShowModal;
1650         finally
1651                 Dlg.Release;
1652         end;
1653 end;
1654 // *************************************************************************
1655 //! \8f\84\89ñ\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
1656 // *************************************************************************
1657 procedure TGikoDM.RoundActionExecute(Sender: TObject);
1658 var
1659         Dlg: TRoundDialog;
1660 begin
1661         Dlg := TRoundDialog.Create(GikoForm);
1662         try
1663                 Dlg.ShowModal;
1664         finally
1665                 Dlg.Release;
1666         end;
1667 end;
1668 // *************************************************************************
1669 //! \83L\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
1670 // *************************************************************************
1671 procedure TGikoDM.KeySettingActionExecute(Sender: TObject);
1672 var
1673         Dlg: TKeySettingForm;
1674 begin
1675         Dlg := TKeySettingForm.Create(GikoForm);
1676         try
1677                 if Dlg.ShowModal = mrOk then begin
1678                         GikoSys.SaveKeySetting(GikoFormActionList, Setting.KEY_SETTING_FILE_NAME);
1679                         GikoSys.SaveKeySetting(Dlg.EditorForm.ActionList, Setting.EKEY_SETTING_FILE_NAME);
1680                         GikoSys.Setting.Gestures.SaveGesture( GikoSys.Setting.GetGestureFileName );
1681                 end;
1682
1683         finally
1684                 Dlg.Release;
1685                 MouseGesture.UnHook;
1686                 MouseGesture.OnGestureStart := GikoForm.OnGestureStart;
1687                 MouseGesture.OnGestureMove := GikoForm.OnGestureMove;
1688                 MouseGesture.OnGestureEnd := GikoForm.OnGestureEnd;
1689                 if GikoSys.Setting.GestureEnabled then begin
1690                         GikoSys.Setting.Gestures.ClearGesture;
1691                         GikoSys.Setting.Gestures.LoadGesture(
1692                                 GikoSys.Setting.GetGestureFileName, GikoFormActionList );
1693                         MouseGesture.SetHook( GikoForm.Handle );
1694                 end;
1695         end;
1696 end;
1697 // *************************************************************************
1698 //! \83L\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
1699 // *************************************************************************
1700 procedure TGikoDM.KotehanActionExecute(Sender: TObject);
1701 var
1702         Dlg: TKotehanDialog;
1703 begin
1704         Dlg := TKotehanDialog.Create(GikoForm);
1705         try
1706                 Dlg.ShowModal;
1707         finally
1708                 Dlg.Release;
1709         end;
1710 end;
1711 // *************************************************************************
1712 //! \83c\81[\83\8b\83o\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
1713 // *************************************************************************
1714 procedure TGikoDM.ToolBarSettingActionExecute(Sender: TObject);
1715 var
1716         Dlg: TToolBarSettingDialog;
1717         i: Integer;
1718 begin
1719         Dlg := TToolBarSettingDialog.Create(GikoForm, GikoFormActionList);
1720         try
1721                 Dlg.AddToolBar(GikoForm.StdToolBar, gttStandard);
1722                 Dlg.AddToolBar(GikoForm.ListToolBar, gttList);
1723                 Dlg.AddToolBar(GikoForm.BrowserToolBar, gttBrowser);
1724                 case GikoForm.ToolBarSettingSender of
1725                 tssMain:                Dlg.ToolBarIndex := 0;
1726                 tssList:                Dlg.ToolBarIndex := 1;
1727                 tssBrowser: Dlg.ToolBarIndex := 2;
1728                 end;
1729                 if Dlg.ShowModal = mrOK then begin
1730                         GikoForm.SetToolBarPopup;
1731
1732                         //\8dÅ\93K\95\9d\82ð\8dÄ\90Ý\92è\82·\82é\82½\82ß\82É\93K\93\96\82È\83v\83\8d\83p\83e\83B\82ð\82¢\82\82­\82é
1733                         for i := 0 to GikoForm.MainCoolBar.Bands.Count - 1 do begin
1734                                 GikoForm.MainCoolBar.Bands[i].MinWidth :=
1735                                         GikoForm.MainCoolBar.Bands[i].MinWidth + 1;
1736                                 GikoForm.MainCoolBar.Bands[i].MinWidth :=
1737                                         GikoForm.MainCoolBar.Bands[i].MinWidth - 1;
1738                         end;
1739                         for i := 0 to GikoForm.ListCoolBar.Bands.Count - 1 do begin
1740                                 GikoForm.ListCoolBar.Bands[i].MinWidth :=
1741                                         GikoForm.ListCoolBar.Bands[i].MinWidth + 1;
1742                                 GikoForm.ListCoolBar.Bands[i].MinWidth :=
1743                                         GikoForm.ListCoolBar.Bands[i].MinWidth - 1;
1744                         end;
1745                         for i := 0 to GikoForm.BrowserCoolBar.Bands.Count - 1 do begin
1746                                 GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1747                                         GikoForm.BrowserCoolBar.Bands[i].MinWidth + 1;
1748                                 GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1749                                         GikoForm.BrowserCoolBar.Bands[i].MinWidth - 1;
1750                         end;
1751
1752                         SaveToolBarSetting(GikoForm.StdToolBar);
1753                         SaveToolBarSetting(GikoForm.ListToolBar);
1754                         //ListToolBar\82É\82¢\82é\82©\82à\82µ\82ê\82È\82¢\8di\8d\9e\82ÝComboBox\82ð\94z\92u
1755                         GikoForm.SetSelectComboBox;
1756                         GikoForm.ResetBandInfo( GikoForm.ListCoolBar, GikoForm.ListToolBar );
1757                         SaveToolBarSetting(GikoForm.BrowserToolBar);
1758                 end;
1759         finally
1760                 Dlg.Release;
1761                 GikoForm.ToolBarSettingSender := tssNone;
1762         end;
1763 end;
1764 // *************************************************************************
1765 //! \83~\83\85\81[\83g
1766 // *************************************************************************
1767 procedure TGikoDM.MuteActionExecute(Sender: TObject);
1768 begin
1769         GikoSys.Setting.Mute := not GikoSys.Setting.Mute;
1770 end;
1771 ////////////////////////////////\83c\81[\83\8b\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
1772 // *************************************************************************
1773 //! \83X\83\8c\83b\83h\88ê\97\97\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
1774 // *************************************************************************
1775 procedure TGikoDM.TreeSelectBoradReloadExecute(Sender: TObject);
1776 var
1777         Board: TBoard;
1778         TmpTreeNode: TTreeNode;
1779 begin
1780         TmpTreeNode := GikoForm.ClickNode;
1781         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1782         Board := nil;
1783
1784         if TObject(TmpTreeNode.Data) is TBoard then
1785                 Board := TBoard(TmpTreeNode.Data)
1786         else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
1787                 Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
1788
1789         if Board <> nil then
1790                 GikoForm.DownloadList(Board);
1791 end;
1792 // *************************************************************************
1793 //! \91I\91ð\82³\82ê\82½\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
1794 // *************************************************************************
1795 procedure TGikoDM.TreeSelectThreadReloadExecute(Sender: TObject);
1796 var
1797         ThreadItem: TThreadItem;
1798         TmpTreeNode: TTreeNode;
1799 begin
1800         TmpTreeNode := GikoForm.ClickNode;
1801         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1802         ThreadItem := nil;
1803
1804         if TObject(TmpTreeNode.Data) is TThreadItem then
1805                 ThreadItem := TThreadItem(TmpTreeNode.Data)
1806         else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
1807                 ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
1808
1809         if ThreadItem <> nil then
1810                 GikoForm.DownloadContent(ThreadItem);
1811 end;
1812 // *************************************************************************
1813 //! \91I\91ð\82³\82ê\82½\94Â\82ÌURL\82ð\83R\83s\81[\82·\82é
1814 // *************************************************************************
1815 procedure TGikoDM.TreeSelectURLCopyExecute(Sender: TObject);
1816 var
1817         TmpTreeNode: TTreeNode;
1818         s: string;
1819 begin
1820         TmpTreeNode := GikoForm.ClickNode;
1821         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1822         if TObject(TmpTreeNode.Data) is TBoard then begin
1823                 s := TBoard(TmpTreeNode.Data).URL + #13#10;
1824         end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1825                 s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1826         end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1827                 s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
1828         end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1829                 s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1830         end;
1831         Clipboard.AsText := s;
1832 end;
1833 // *************************************************************************
1834 //! \91I\91ð\82³\82ê\82½\94Â\82Ì\96¼\91O\82ÆURL\82ð\83R\83s\81[\82·\82é
1835 // *************************************************************************
1836 procedure TGikoDM.TreeSelectNameURLCopyExecute(Sender: TObject);
1837 var
1838         TmpTreeNode: TTreeNode;
1839         s: string;
1840 begin
1841         TmpTreeNode := GikoForm.ClickNode;
1842         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1843         if TObject(TmpTreeNode.Data) is TBoard then begin
1844                 s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
1845         end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1846                 s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1847         end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1848                 s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
1849         end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1850                 s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1851         end;
1852         Clipboard.AsText := s;
1853 end;
1854 // *************************************************************************
1855 //! \82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82·\82é
1856 // *************************************************************************
1857 procedure TGikoDM.TreeSelectFavoriteAddActionExecute(Sender: TObject);
1858 begin
1859         GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ClickNode.Data));
1860 end;
1861 // *************************************************************************
1862 //! \94Â\96¼\8c\9f\8dõ
1863 // *************************************************************************
1864 procedure TGikoDM.TreeSelectSearchBoardNameExecute(Sender: TObject);
1865 var
1866         s : String;
1867         msg : String;
1868         CurItem : TTreeNode;
1869         next : boolean;
1870 begin
1871         if InputQuery('\94Â\96¼\8c\9f\8dõ','\94Â\96¼\82Ì\93ü\97Í',s) then begin
1872                 next := true;
1873                 while next do begin
1874                         if GikoForm.TreeView.Selected = nil then
1875                                 CurItem := GikoForm.TreeView.Items.GetFirstNode
1876                         else begin
1877                                 CurItem := GikoForm.TreeView.Selected.GetNext;
1878                                 if CurItem = nil then
1879                                         CurItem := GikoForm.TreeView.Items.GetFirstNode;
1880                         end;
1881                         while CurItem <> nil do begin
1882                                 if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
1883                                         break;
1884                                 end;
1885                                 CurItem := CurItem.GetNext;
1886                         end;
1887                         try
1888                                 if CurItem = nil then begin
1889                                         msg := '\90æ\93ª\82É\96ß\82è\82Ü\82·\82©\81H';
1890                                         if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes     then begin
1891                                                 CurItem := GikoForm.TreeView.Items.GetFirstNode;
1892                                         end else begin
1893                                                 Exit;
1894                                         end;
1895                                         GikoForm.TreeView.Select(CurItem);
1896                                         GikoForm.TreeView.SetFocus;
1897                                 end else begin
1898                                         GikoForm.TreeView.Select(CurItem);
1899                                         GikoForm.TreeView.SetFocus;
1900                                         msg := '\8e\9f\82É\8ds\82«\82Ü\82·\82©\81H';
1901                                         if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes     then begin
1902                                                 next := true;
1903                                         end else begin
1904                                                 next := false;
1905                                         end;
1906                                 end;
1907
1908                         except
1909                                 Exit;
1910                         end;
1911                 end;
1912         end;
1913 end;
1914 // *************************************************************************
1915 //! \91I\91ð\82³\82ê\82½\94Â\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82é
1916 // *************************************************************************
1917 procedure TGikoDM.TreeSelectNameCopyExecute(Sender: TObject);
1918 var
1919         s: string;
1920 begin
1921         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1922         s := GikoForm.ClickNode.Text;
1923         Clipboard.AsText := s;
1924 end;
1925 ////////////////////////////////\83c\83\8a\81[\83|\83b\83v\83A\83b\83v\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
1926 // *************************************************************************
1927 //! \83\8d\83O\83C\83\93\81^\83\8d\83O\83A\83E\83g\82ð\82·\82é
1928 // *************************************************************************
1929 procedure TGikoDM.LoginActionExecute(Sender: TObject);
1930 var
1931         TmpCursor: TCursor;
1932         msg : String;
1933 begin
1934         if GikoSys.Dolib.Connected then begin
1935                 //\83\8d\83O\83A\83E\83g
1936                 GikoSys.Dolib.Disconnect;
1937                 LoginAction.Checked := False;
1938                 GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogout), nil, gmiOK);
1939                 LoginAction.Caption := '\83\8d\83O\83C\83\93(&L)';
1940         end else begin
1941                 TmpCursor := GikoForm.ScreenCursor;
1942                 GikoForm.ScreenCursor := crHourGlass;
1943                 try
1944                         //\92Ê\8fí\83\8d\83O\83C\83\93
1945                         if not GikoSys.Setting.ForcedLogin then begin
1946                                 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1947                                 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1948                                 GikoSys.Dolib.Password := GikoSys.Setting.Password;
1949                                 if GikoSys.Setting.ReadProxy then begin
1950                                         GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1951                                         GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1952                                 end else begin
1953                                         GikoSys.Dolib.ProxyAddress := '';
1954                                         GikoSys.Dolib.ProxyPort := 0;
1955                                 end;
1956                                 if GikoSys.Dolib.Connect then begin
1957                                         LoginAction.Checked := True;
1958                                         GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogin) + GikoSys.Setting.UserID, nil, gmiOK);
1959                                         LoginAction.Caption := '\83\8d\83O\83A\83E\83g(&L)';
1960                                         //LoginToolButton.Style := tbsCheck;
1961                                 end else begin
1962                 //                      MsgBox(Handle, '\83\8d\83O\83C\83\93\8fo\97\88\82Ü\82¹\82ñ\82Å\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONSTOP);
1963                                         GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1964                                         GikoForm.PlaySound('Error');
1965                                         LoginAction.Checked := False;
1966                                         //LoginToolButton.Down := False;
1967                                         ///LoginToolButton.Style := tbsButton;
1968                                 end;
1969                         end else begin
1970                                 msg := '\8b­\90§\83\8d\83O\83C\83\93\83\82\81[\83h\82Å\82Í\81C\83T\81[\83o\82Ì\8fØ\96¾\8f\91\82Ì\97L\8cø\90«\82ð\83`\83F\83b\83N\82µ\82Ü\82¹\82ñ\81B' + #13#10
1971                                                 + '\8bU\91\95\83T\81[\83o\82Ì\8fê\8d\87\81A\82 \82È\82½\82Ì\83p\83X\83\8f\81[\83h\93\90\82Ü\82ê\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B' + #13#10
1972                                                 + '\82±\82Ì\83\82\81[\83h\82Å\83\8d\83O\83C\83\93\82ð\8e\8e\82Ý\82Ü\82·\82©\81H' + #13#10;
1973                                 if MsgBox(GikoForm.Handle, msg, '\8cx\8d\90', MB_YESNO or MB_ICONEXCLAMATION) = IDYES  then begin
1974                                         GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1975                                         GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1976                                         GikoSys.Dolib.Password := GikoSys.Setting.Password;
1977                                         if GikoSys.Setting.ReadProxy then begin
1978                                                 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1979                                                 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1980                                         end else begin
1981                                                 GikoSys.Dolib.ProxyAddress := '';
1982                                                 GikoSys.Dolib.ProxyPort := 0;
1983                                         end;
1984                                         //SSL\8fá\8aQ\97p\8b­\90§\83\8d\83O\83C\83\93
1985                                         GikoSys.Dolib.ForcedConnect;
1986                                         if GikoSys.Dolib.Connect then begin
1987                                                 LoginAction.Checked := True;
1988                                                 GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmForceLogin) + GikoSys.Setting.UserID, nil, gmiOK);
1989                                                 LoginAction.Caption := '\83\8d\83O\83A\83E\83g(&L)';
1990                                                 //LoginToolButton.Style := tbsCheck;
1991                                                 end else begin
1992                         //                      MsgBox(Handle, '\83\8d\83O\83C\83\93\8fo\97\88\82Ü\82¹\82ñ\82Å\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONSTOP);
1993                                                 GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1994                                                 GikoForm.PlaySound('Error');
1995                                                 LoginAction.Checked := False;
1996                                                 //LoginToolButton.Down := False;
1997                                                 //LoginToolButton.Style := tbsButton;
1998                                         end;
1999                                 end else begin
2000                                         LoginAction.Checked := False;
2001                                         //LoginToolButton.Down := False;
2002                                         //LoginToolButton.Style := tbsButton;
2003                                 end;
2004                         end;
2005                 finally
2006                         GikoForm.ScreenCursor := TmpCursor;
2007                 end;
2008         end;
2009 end;
2010 // *************************************************************************
2011 //! \83{\81[\83h\8dX\90V\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
2012 // *************************************************************************
2013 procedure TGikoDM.NewBoardActionExecute(Sender: TObject);
2014 var
2015         Dlg: TNewBoardDialog;
2016         Msg: string;
2017 begin
2018         if (EditorFormExists) then begin
2019                 Msg := '\83\8c\83X\83G\83f\83B\83^\82ð\91S\82Ä\95Â\82\82Ä\82­\82¾\82³\82¢';
2020                 MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP);
2021                 Exit;
2022         end;
2023         Dlg := TNewBoardDialog.Create(GikoForm);
2024         try
2025                 Dlg.ShowModal;
2026         finally
2027                 Dlg.Release;
2028         end;
2029 end;
2030 // *************************************************************************
2031 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\8dí\8f\9c\82·\82é
2032 // *************************************************************************
2033 procedure TGikoDM.LogDeleteActionExecute(Sender: TObject);
2034 const
2035         DEL_MSG = '\81g^0\81h\82Ì\83\8d\83O\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
2036         DEL_SAME_MSG = '\82±\82ê\82ç ^0 \8cÂ\82Ì\83X\83\8c\83b\83h\82Ì\83\8d\83O\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
2037         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2038 var
2039         ThreadItem: TThreadItem;
2040         TmpListItem: TListItem;
2041         List: TList;
2042         i: Integer;
2043 begin
2044         List := TList.Create;
2045         try
2046                 TmpListItem := GikoForm.ListView.Selected;
2047                 while TmpListItem <> nil do begin
2048                         if TObject(TmpListItem.Data) is TThreadItem then begin
2049                                 ThreadItem := TThreadItem(TmpListItem.Data);
2050                                 if ThreadItem.IsLogFile then
2051                                         List.Add(ThreadItem);
2052                         end;
2053                         TmpListItem := GikoForm.ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
2054                 end;
2055
2056                 if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
2057                         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
2058                                 if List.Count = 1 then begin
2059                                         if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', TThreadItem( List[ 0 ] ).Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2060                                                 Exit;
2061                                 end else begin
2062                                         if MsgBox(GikoForm.Handle, StringReplace( DEL_SAME_MSG, '^0', IntToStr( List.Count ), [rfReplaceAll] ), DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> IDYES then
2063                                                 Exit;
2064                                 end;
2065                         end;
2066                 end;
2067
2068                 for i := 0 to List.Count - 1 do begin
2069                         ThreadItem := TThreadItem(List[i]);
2070                         GikoForm.DeleteHistory(ThreadItem);
2071                         GikoForm.DeleteTab(ThreadItem);
2072                         ThreadItem.DeleteLogFile;
2073                 end;
2074         GikoForm.TreeView.Refresh;      // UnRead \82Ì\95\\8e¦\82ð\8dX\90V
2075                 GikoForm.ListView.Refresh;
2076         finally
2077                 List.Free;
2078         end;
2079 end;
2080 // *************************************************************************
2081 //! ActiveList\82ªTBoard\82Å\83X\83\8c\88ê\97\97\82Å\82P\82Â\88È\8fã\91I\91ð\82µ\82Ä\82¢\82é\82Æ\97L\8cø\82É\82È\82éAction\82Å\8b¤\92Ê
2082 // *************************************************************************
2083 procedure TGikoDM.LogDeleteActionUpdate(Sender: TObject);
2084 begin
2085         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
2086                                                                 and (GikoForm.ListView.SelCount > 0);
2087 end;
2088 // *************************************************************************
2089 //! \8di\8d\9e\82Ý\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
2090 // *************************************************************************
2091 procedure TGikoDM.SelectTextClearActionExecute(Sender: TObject);
2092 const
2093         DEL_MSG = '\8di\8d\9e\82Ý\91S\97\9a\97ð\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
2094         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2095 begin
2096         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2097                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2098                         Exit;
2099         GikoSys.Setting.SelectTextList.Clear;
2100         GikoForm.SelectComboBox.Items.Clear;
2101         GikoForm.SelectComboBox.Text := '';
2102         GikoForm.SetListViewType( gvtAll );
2103 end;
2104 // *************************************************************************
2105 //! \83\8c\83X\83G\83f\83B\83^\82Ì\96¼\91O\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
2106 // *************************************************************************
2107 procedure TGikoDM.NameTextClearActionExecute(Sender: TObject);
2108 const
2109         DEL_MSG = '\83\8c\83X\83G\83f\83B\83^\96¼\91O\91S\97\9a\97ð\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
2110         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2111 begin
2112         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2113                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2114                         Exit;
2115         GikoSys.Setting.NameList.Clear;
2116         ClearNameTextAllEditor
2117 end;
2118 // *************************************************************************
2119 //! \83\8c\83X\83G\83f\83B\83^\82Ì\83\81\81[\83\8b\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
2120 // *************************************************************************
2121 procedure TGikoDM.MailTextClearActionExecute(Sender: TObject);
2122 const
2123         DEL_MSG = '\83\8c\83X\83G\83f\83B\83^\83\81\81[\83\8b\91S\97\9a\97ð\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
2124         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2125 begin
2126         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2127                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2128                         Exit;
2129         GikoSys.Setting.MailList.Clear;
2130         ClearMailAllEditor;
2131 end;
2132 // *************************************************************************
2133 //! \83M\83R\83i\83r\82ð\8fI\97¹\82·\82é
2134 // *************************************************************************
2135 procedure TGikoDM.ExitActionExecute(Sender: TObject);
2136 begin
2137         GikoForm.Close;
2138 end;
2139 // *************************************************************************
2140 //! \82¨\8bC\82É\93ü\82è\82Ì\83G\83N\83X\83|\81[\83g\81@\8eÀ\8ds\91O\8f\88\97\9d
2141 // *************************************************************************
2142 procedure TGikoDM.ExportFavoriteFileBeforeExecute(Sender: TObject);
2143 begin
2144         ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
2145 end;
2146 // *************************************************************************
2147 //! \82¨\8bC\82É\93ü\82è\82Ì\83G\83N\83X\83|\81[\83g\81@\8eÀ\8ds\8f\88\97\9d
2148 // *************************************************************************
2149 procedure TGikoDM.ExportFavoriteFileAccept(Sender: TObject);
2150 begin
2151         if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
2152                 ShowMessage('\83t\83@\83C\83\8b\82ð\8fo\97Í\82µ\82Ü\82µ\82½');
2153         end else begin
2154                 ShowMessage('\83t\83@\83C\83\8b\82Ì\8fo\97Í\82É\8e¸\94s\82µ\82Ü\82µ\82½');
2155         end;
2156 end;
2157 // *************************************************************************
2158 //! \91I\91ð\83X\83\8c\83b\83h\82ð\83t\83@\83C\83\8b\82É\95Û\91\82·\82é
2159 // *************************************************************************
2160 procedure TGikoDM.SelectThreadSaveToFile(dat: Boolean);
2161 var
2162         List: TList;
2163         i: Integer;
2164         html: TStringList;
2165         title: string;
2166 begin
2167         List := TList.Create;
2168         try
2169                 GikoForm.ScreenCursor := crHourGlass;
2170                 GikoForm.SelectListItem(List);
2171                 if ((GikoSys.Setting.ListOrientation = gloVertical) and
2172                         (GikoSys.Setting.ListHeightState = glsMax)) or
2173                         ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2174                         (GikoSys.Setting.ListWidthState = glsMax))      then
2175                         ShowMessage('\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82µ\82Ä\82­\82¾\82³\82¢')
2176                 else if(List.Count = 0) then
2177                         ShowMessage('\83X\83\8c\83b\83h\82ð\91I\91ð\82µ\82Ä\82­\82¾\82³\82¢')
2178                 else begin
2179                         if dat then begin
2180                                 SaveDialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðdat\82Ì\82Ü\82Ü\95Û\91¶';
2181                                 SaveDialog.Filter := 'DAT\83t\83@\83C\83\8b(*.dat)|*.dat';
2182                         end else begin
2183                                 SaveDialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91¶';
2184                                 SaveDialog.Filter := 'HTML\83t\83@\83C\83\8b(*.html)|*.html';
2185                         end;
2186                         for i := 0 to List.Count - 1 do begin
2187                                 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2188                                         if dat then begin
2189                                                 SaveDialog.FileName := TThreadItem(List[i]).FileName;
2190                                         end else begin
2191                                                 SaveDialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html';
2192                                         end;
2193                                         if SaveDialog.Execute then begin
2194                                                 if dat then begin
2195                                                         CopyFile(PChar(TThreadItem(List[i]).FilePath),
2196                                                                         PChar(SaveDialog.FileName), true);
2197                                                 end else begin
2198                                                         html := TStringList.Create;
2199                                                         title := TThreadItem(List[i]).Title;
2200                                                         try
2201                                                                 HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title);
2202                                                                 html.SaveToFile(SaveDialog.FileName);
2203                                                                 THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(SaveDialog.FileName));
2204                                                         finally
2205                                                                 html.Free;
2206                                                         end;
2207                                                 end;
2208                                         end;
2209                                 end;
2210                         end;
2211                 end;
2212         finally
2213                 GikoForm.ScreenCursor := crDefault;
2214                 List.Free;
2215         end;
2216 end;
2217 // *************************************************************************
2218 //! \91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91
2219 // *************************************************************************
2220 procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject);
2221 begin
2222         SelectThreadSaveToFile(false);
2223 end;
2224 // *************************************************************************
2225 //! \91I\91ð\83X\83\8c\83b\83h\82ðDAT\8c`\8e®\82Ì\82Ü\82Ü\95Û\91
2226 // *************************************************************************
2227 procedure TGikoDM.SelectItemSaveForDatExecute(Sender: TObject);
2228 begin
2229         SelectThreadSaveToFile(true);
2230 end;
2231 // *************************************************************************
2232 //! \83^\83u\82Ì\8f\87\94Ô\82ð\95Û\91
2233 // *************************************************************************
2234 procedure TGikoDM.TabsSaveActionExecute(Sender: TObject);
2235 const
2236         Filename = 'tab.sav';
2237         bFilename = '~tab.sav';
2238 var
2239         SaveStringList: TStringList;
2240 begin
2241         SaveStringList := TStringList.Create;
2242         try
2243                 GetTabURLs(SaveStringList);
2244         try
2245             if FileExists( GikoSys.GetAppDir + Filename) then begin
2246                 CopyFile(PChar(GikoSys.GetAppDir + Filename),
2247                     PChar(GikoSys.GetAppDir + bFilename), False);
2248             end;
2249         except
2250         end;
2251         SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename);
2252         finally
2253                 SaveStringList.Free;
2254         end;
2255 end;
2256 // *************************************************************************
2257 //! \83u\83\89\83E\83U\83^\83u\82É\90Ý\92è\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\8eæ\93¾
2258 // *************************************************************************
2259 procedure TGikoDM.GetTabURLs(AStringList: TStringList);
2260 var
2261   rec : TBrowserRecord;
2262   i : Integer;
2263 begin
2264     for i := 0 to GikoForm.BrowserTab.Tabs.Count -1 do begin
2265         try
2266             rec := TBrowserRecord( GikoForm.BrowserTab.Tabs.Objects[ i ] );
2267             if( rec <> nil) and (rec.Thread <> nil) then
2268                 AStringList.Add( rec.Thread.URL );
2269         except
2270         end;
2271     end;
2272 end;
2273 // *************************************************************************
2274 //! \8ew\92è\82³\82ê\82½URL\82ð\8aJ\82«\81C\90æ\93ª\82Ì\83^\83u\82É\83t\83H\81[\83J\83X\82·\82é
2275 // *************************************************************************
2276 procedure TGikoDM.OpenURLs(AStringList: TStringList);
2277 var
2278     GikoTab                     : TGikoTabAppend;
2279     i, bound : Integer;
2280         item        : TThreadItem;
2281 begin
2282     if (AStringList <> nil) then begin
2283         GikoTab := GikoSys.Setting.BrowserTabAppend;
2284         try
2285             bound    := AStringList.Count - 1;
2286             if bound > -1 then begin
2287                 GikoSys.Setting.BrowserTabAppend := gtaLast;
2288                 for i := 0 to bound do begin
2289                     item := BBSsFindThreadFromURL( AStringList[ i ] );
2290                     if item <> nil then
2291                         GikoForm.InsertBrowserTab( item, false );
2292                 end;
2293                 //\8dÅ\8f\89\82Ì\82P\96\87\82É\90Ý\92è
2294                 if (GikoSys.Setting.URLDisplay) and
2295                     (GikoForm.BrowserTab.Tabs.Count > 0) then begin
2296                                         GikoForm.AddressComboBox.Text :=
2297                         TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[0]).Thread.URL;
2298                 end;
2299             end;
2300         finally
2301             GikoSys.Setting.BrowserTabAppend := GikoTab;
2302         end;
2303     end;
2304 end;
2305 // *************************************************************************
2306 //! \83^\83u\82Ì\8f\87\94Ô\82ð\95\9c\8c³
2307 // *************************************************************************
2308 procedure TGikoDM.TabsOpenActionExecute(Sender: TObject);
2309 const
2310         TABFILE = 'tab.sav';
2311 var
2312         URLs                            : TStringList;
2313         fileName                : string;
2314 begin
2315     URLs := TStringList.Create();
2316         try
2317         fileName := GikoSys.GetAppDir + TABFILE;
2318                 if FileExists(fileName) then begin
2319                     try
2320                                 URLs.LoadFromFile(fileName);
2321                 if (URLs.Count = 0) then begin
2322                     // \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
2323                     SysUtils.DeleteFile(fileName);
2324                 end else begin
2325                     OpenURLs(URLs);
2326                 end;
2327                 except
2328                         on EFOpenError do ShowMessage('\83^\83u\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ');
2329             end;
2330         end;
2331         finally
2332         URLs.Free;
2333         end;
2334
2335     if (GikoForm.BrowserTab.Tabs.Count = 0) and
2336         (TabsOpenAction.Tag <> 1) then  begin
2337         ShowMessage('\95\\8e¦\82·\82é\83^\83u\82ª\82 \82è\82Ü\82¹\82ñ\81B');
2338     end;
2339 end;
2340 // *************************************************************************
2341 //! Be2ch\82É\83\8d\83O\83C\83\93/\83\8d\83O\83A\83E\83g\82·\82é
2342 // *************************************************************************
2343 procedure TGikoDM.BeLogInOutActionExecute(Sender: TObject);
2344 begin
2345         GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin;
2346 end;
2347 // *************************************************************************
2348 //! Be2ch\82É\83\8d\83O\83C\83\93/\83\8d\83O\83A\83E\83g\82·\82é\82ÌUpdate\83C\83x\83\93\83g
2349 // *************************************************************************
2350 procedure TGikoDM.BeLogInOutActionUpdate(Sender: TObject);
2351 begin
2352         if (GikoSys.Setting.BeUserID <> '') and (GikoSys.Setting.BeCode <> '') then begin
2353                 if (GikoSys.Setting.BeLogin) then BeLogInOutAction.Checked := true
2354                 else BeLogInOutAction.Checked := false;
2355                 BeLogInOutAction.Enabled := true
2356         end else
2357                 BeLogInOutAction.Enabled := false;
2358 end;
2359 ////////////////////////////////\83t\83@\83C\83\8b\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
2360 // *************************************************************************
2361 //! \83R\83R\82Ü\82Å\93Ç\82ñ\82¾
2362 // *************************************************************************
2363 procedure TGikoDM.KokomadeActionExecute(Sender: TObject);
2364 var
2365         No: Integer;
2366         ThreadItem: TThreadItem;
2367 begin
2368         No := GikoForm.KokoPopupMenu.Tag;
2369         if No = 0
2370         then Exit;
2371         ThreadItem := GikoForm.KokoPopupThreadItem;
2372         if not Assigned(ThreadItem) then
2373         Exit;
2374         ThreadItem.Kokomade := No;
2375         GikoForm.ActiveContent.Thread.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
2376         GikoForm.ActiveContent.Repaint := true;
2377         GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
2378         //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é
2379         //Application.ProcessMessages;
2380 end;
2381 // *************************************************************************
2382 //! \91S\95\94\93Ç\82ñ\82¾
2383 // *************************************************************************
2384 procedure TGikoDM.ZenbuActionExecute(Sender: TObject);
2385 var
2386         ThreadItem: TThreadItem;
2387 begin
2388         ThreadItem := GikoForm.GetActiveContent(True);
2389         if ThreadItem = nil then Exit;
2390         ThreadItem.Kokomade := -1;
2391         GikoForm.ActiveContent.Thread.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
2392         GikoForm.ActiveContent.Repaint := true;
2393         GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
2394         //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é
2395         //Application.ProcessMessages;
2396 end;
2397 // *************************************************************************
2398 //! \83R\83R\82É\83\8c\83X
2399 // *************************************************************************
2400 procedure TGikoDM.KokoResActionExecute(Sender: TObject);
2401 var
2402         Editor: TEditorForm;
2403         Item: TThreadItem;
2404         Number: Integer;
2405 begin
2406         Number := GikoForm.KokoPopupMenu.Tag;
2407         if Number = 0 then Exit;
2408         Item := GikoForm.KokoPopupThreadItem;
2409         if Item = nil then Exit;
2410
2411         Editor := TEditorForm.Create(GikoForm);
2412         Editor.SetThreadItem(Item);
2413         Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10;
2414         Editor.Show;
2415         Editor.BodyEdit.SetFocus;
2416 end;
2417 // *************************************************************************
2418 //! \91I\91ð\82µ\82½\83\8c\83X\82ð\83R\83s\81[\82·\82é
2419 // *************************************************************************
2420 procedure TGikoDM.KoreCopyExecute(Sender: TObject);
2421 begin
2422         GikoForm.KonoresCopy(GikoForm.KokoPopupMenu.Tag, true);
2423 end;
2424 // *************************************************************************
2425 //! \91I\91ð\82µ\82½\83\8c\83X\82ð\83R\83s\81[\82·\82é
2426 // *************************************************************************
2427 procedure TGikoDM.SameIDResAnchorActionExecute(Sender: TObject);
2428 const
2429     LIMIT = 20;
2430 var
2431         ThreadItem : TThreadItem;
2432         No : Integer;
2433         AID: string;
2434 begin
2435         No := GikoForm.KokoPopupMenu.Tag;
2436         if No = 0 then Exit;
2437         ThreadItem := GikoForm.KokoPopupThreadItem;
2438         if ThreadItem = nil then Exit;
2439
2440     AID := GikoSys.GetResID(No, ThreadItem);
2441     if not IsNoValidID(AID) then begin
2442         GikoForm.ShowSameIDAncher(AID);
2443     end;
2444 end;
2445 // *************************************************************************
2446 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\81@\81i\92Ê\8fí\81j
2447 // *************************************************************************
2448 procedure TGikoDM.IndividualAbon1ActionExecute(Sender: TObject);
2449 begin
2450         GikoForm.IndividualAbon(GikoForm.KokoPopupMenu.Tag, 1);
2451 end;
2452 // *************************************************************************
2453 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\81@\81i\93§\96¾\81j
2454 // *************************************************************************
2455 procedure TGikoDM.IndividualAbon0ActionExecute(Sender: TObject);
2456 begin
2457         GikoForm.IndividualAbon(GikoForm.KokoPopupMenu.Tag, 0);
2458 end;
2459 // *************************************************************************
2460 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\89ð\8f\9c
2461 // *************************************************************************
2462 procedure TGikoDM.AntiIndividualAbonActionExecute(Sender: TObject);
2463 var
2464         IndividualForm :TIndividualAbonForm;
2465         ThreadItem : TThreadItem;
2466         msg : String;
2467         ReadList                : TStringList;
2468         wordCount               : TWordCount;
2469 begin
2470         IndividualForm := TIndividualAbonForm.Create(GikoForm);
2471         try
2472                 ThreadItem := GikoForm.GetActiveContent(True);
2473                 ThreadItem.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
2474                 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
2475                         if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
2476                                 ReadList                := TStringList.Create;
2477                                 wordCount               := TWordCount.Create;
2478                                 try
2479 {$IFDEF SPAM_FILTER_ENABLED}
2480                                         // \83X\83p\83\80\82ð\89ð\8f\9c
2481                                         ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
2482                                         GikoSys.SpamCountWord( ReadList[ KokoPopupMenu.Tag - 1 ], wordCount );
2483                                         GikoSys.SpamForget( wordCount, True );  // \83X\83p\83\80\82ð\89ð\8f\9c
2484                                         GikoSys.SpamLearn( wordCount, False );  // \83n\83\80\82É\90Ý\92è
2485 {$ENDIF}
2486                                         if IndividualForm.DeleteNG(GikoForm.KokoPopupMenu.Tag) then begin
2487                                                 GikoForm.ActiveContent.Repaint := true;
2488                                                 GikoForm.InsertBrowserTab( ThreadItem, True );
2489                                         end;
2490                                 finally
2491                                         wordCount.Free;
2492                                         ReadList.Free;
2493                                 end;
2494                         end else begin
2495                                 msg := '\82±\82Ì\83X\83\8c\83b\83h\82Å\82Í\8cÂ\95Ê\82 \82Ú\81`\82ñ\82ð\8ds\82Á\82Ä\82Ü\82¹\82ñ';
2496                                 MsgBox(GikoForm.Handle, msg, '\83\81\83b\83Z\81[\83W', MB_OK);
2497                         end;
2498                 end;
2499         finally
2500                 IndividualForm.Release;
2501         end;
2502 end;
2503 // *************************************************************************
2504 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\89ð\8f\9c\83\8c\83X\94Ô\8d\86\8ew\92è\81i\83_\83C\83A\83\8d\83O\95\\8e¦\81j
2505 // *************************************************************************
2506 procedure TGikoDM.AntiIndividualAbonDlgActionExecute(Sender: TObject);
2507 var
2508         IndividualForm :TIndividualAbonForm;
2509         ThreadItem : TThreadItem;
2510         msg : String;
2511         ReadList                : TStringList;
2512         wordCount               : TWordCount;
2513 {$IFDEF SPAM_FILTER_ENABLED}
2514         i : Integer;
2515 {$ENDIF}
2516 begin
2517         IndividualForm := TIndividualAbonForm.Create(GikoForm);
2518         try
2519                 ThreadItem := GikoForm.GetActiveContent(True);
2520                 ThreadItem.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
2521                 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
2522                         if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
2523                                 if (IndividualForm.ShowModal = mrOK) then begin
2524                                         ReadList                := TStringList.Create;
2525                                         wordCount               := TWordCount.Create;
2526                                         try
2527 {$IFDEF SPAM_FILTER_ENABLED}
2528                                                 // \83X\83p\83\80\82ð\89ð\8f\9c
2529                                                 ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
2530                                                 for i := 0 to IndividualForm.DeleteList.Count - 1 do begin
2531                                                         GikoSys.SpamCountWord( ReadList[ StrToInt(IndividualForm.DeleteList[i]) - 1 ], wordCount );
2532                                                         GikoSys.SpamForget( wordCount, True );  // \83X\83p\83\80\82ð\89ð\8f\9c
2533                                                         GikoSys.SpamLearn( wordCount, False );  // \83n\83\80\82É\90Ý\92è
2534                                                 end;
2535 {$ENDIF}
2536                                                 if IndividualForm.FRepaint then begin
2537                                                         GikoForm.ActiveContent.Repaint := true;
2538                                                         GikoForm.InsertBrowserTab( ThreadItem, True );
2539                                                 end;
2540                                         finally
2541                                                 wordCount.Free;
2542                                                 ReadList.Free;
2543                                         end;
2544                                 end;
2545                         end else begin
2546                                 msg := '\82±\82Ì\83X\83\8c\83b\83h\82Å\82Í\8cÂ\95Ê\82 \82Ú\81`\82ñ\82ð\8ds\82Á\82Ä\82Ü\82¹\82ñ';
2547                                 MsgBox(GikoForm.Handle, msg, '\83\81\83b\83Z\81[\83W', MB_OK);
2548                         end;
2549                 end;
2550         finally
2551                 IndividualForm.Release;
2552         end;
2553 end;
2554 // *************************************************************************
2555 //! \82±\82ÌID\82 \82Ú\81`\82ñ\81@\92Ê\8fí
2556 // *************************************************************************
2557 procedure TGikoDM.IndividualAbonID1ActionExecute(Sender: TObject);
2558 begin
2559         GikoForm.IndividualAbonID(1);
2560 end;
2561 // *************************************************************************
2562 //! \82±\82ÌID\82 \82Ú\81`\82ñ\81@\93§\96¾
2563 // *************************************************************************
2564 procedure TGikoDM.IndividualAbonID0ActionExecute(Sender: TObject);
2565 begin
2566         GikoForm.IndividualAbonID(0);
2567 end;
2568 ////////////////////////////////\83u\83\89\83E\83U\83|\83b\83v\83A\83b\83v\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
2569 // *************************************************************************
2570 //! \83M\83R\83i\83r\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2571 // *************************************************************************
2572 procedure TGikoDM.GikoNaviWebPageActionExecute(Sender: TObject);
2573 begin
2574         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_GIKONAVI, gbtAuto);
2575 end;
2576 // *************************************************************************
2577 //! \83\82\83i\83W\83\89\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2578 // *************************************************************************
2579 procedure TGikoDM.MonazillaWebPageActionExecute(Sender: TObject);
2580 begin
2581         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_MONAZILLA, gbtAuto);
2582 end;
2583 // *************************************************************************
2584 //! \82Q\82¿\82á\82ñ\82Ë\82é\83g\83b\83v\83y\81[\83W\82ð\95\\8e¦\82·\82é
2585 // *************************************************************************
2586 procedure TGikoDM.BBS2chWebPageActionExecute(Sender: TObject);
2587 begin
2588         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_2ch, gbtAuto);
2589 end;
2590 // *************************************************************************
2591 //! \83M\83R\83i\83r\82Ì\83t\83H\83\8b\83_\82ð\8aJ\82­
2592 // *************************************************************************
2593 procedure TGikoDM.GikoFolderOpenActionExecute(Sender: TObject);
2594 begin
2595         GikoSys.CreateProcess('explorer.exe', '/e,"' + GikoSys.GetAppDir + '"');
2596 end;
2597 // *************************************************************************
2598 //! \83o\81[\83W\83\87\83\93\8fî\95ñ\82ð\95\\8e¦\82·\82é
2599 // *************************************************************************
2600 procedure TGikoDM.AboutActionExecute(Sender: TObject);
2601 var
2602         Dlg: TAboutDialog;
2603 begin
2604         Dlg := TAboutDialog.Create(GikoForm);
2605         try
2606                 Dlg.ShowModal;
2607         finally
2608                 Dlg.Release;
2609         end;
2610 end;
2611 // *************************************************************************
2612 //! \83M\83R\83i\83r\82Ì\83w\83\8b\83v\82ð\95\\8e¦\82·\82é
2613 // *************************************************************************
2614 procedure TGikoDM.GikoHelpActionExecute(Sender: TObject);
2615 var
2616         FileName: string;
2617 begin
2618         FileName := GikoSys.GetAppDir + 'batahlp.chm';
2619         if not FileExists(FileName) then begin
2620                 MsgBox(
2621                         GikoForm.Handle,
2622                         '\83w\83\8b\83v\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ\82Å\82µ\82½' + #13#10 +
2623                         '\83w\83\8b\83v\83t\83@\83C\83\8b\82ð\83M\83R\83i\83r\82Ì\83t\83H\83\8b\83_\82É\92u\82¢\82Ä\82­\82¾\82³\82¢' + #13#10 +
2624                         '\83w\83\8b\83v\82Í\83M\83R\83i\83r\82Ì\83T\83C\83g\82É\92u\82¢\82Ä\82 \82è\82Ü\82·',
2625                         MSG_ERROR,
2626                         MB_ICONSTOP);
2627                 Exit;
2628         end;
2629         ShellExecute(GikoForm.Handle, 'open', PChar(FileName), '', PChar(GikoSys.GetAppDir), SW_SHOW);
2630 end;
2631 // *************************************************************************
2632 //! \83M\83R\83i\83rWiki\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2633 // *************************************************************************
2634 procedure TGikoDM.WikiFAQWebPageActionExecute(Sender: TObject);
2635 begin
2636         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_Wiki, gbtAuto);
2637 end;
2638 ////////////////////////////////\83w\83\8b\83v\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
2639 // *************************************************************************
2640 //! \83\8a\83X\83g\94Ô\8d\86\95\\8e¦\82ð\95Ï\8dX\82·\82é
2641 // *************************************************************************
2642 procedure TGikoDM.ListNumberVisibleActionExecute(Sender: TObject);
2643 begin
2644         GikoSys.Setting.ListViewNo := ListNumberVisibleAction.Checked;
2645         GikoForm.ListView.Refresh;
2646 end;
2647 // *************************************************************************
2648 //! \8fã\88Ê\83t\83H\83\8b\83_\82É\88Ú\93®\82·\82é
2649 // *************************************************************************
2650 procedure TGikoDM.UpFolderActionExecute(Sender: TObject);
2651 begin
2652         if GikoForm.GetActiveList is TBoard then begin
2653                 if TBoard(GikoForm.GetActiveList).ParentCategory <> nil then
2654                         GikoForm.SelectTreeNode(TBoard(GikoForm.GetActiveList).ParentCategory, True);
2655         end else if GikoForm.GetActiveList is TCategory then begin
2656                 GikoForm.SelectTreeNode(TCategory(GikoForm.GetActiveList).ParenTBBS, True);
2657         end;
2658 end;
2659 // *************************************************************************
2660 //! \8fã\88Ê\83t\83H\83\8b\83_\82É\88Ú\93®\82·\82éUpDate\83C\83x\83\93\83g
2661 // *************************************************************************
2662 procedure TGikoDM.UpFolderActionUpdate(Sender: TObject);
2663 begin
2664         UpFolderAction.Enabled := not (GikoForm.GetActiveList is TBBS) and
2665         (GikoForm.GetActiveList <> BoardGroup.SpecialBoard);
2666 end;
2667 // *************************************************************************
2668 //! \95\\8e¦\81@\95\\8e¦\83\8a\83X\83g\82Ì\83\82\81[\83h\95Ï\8dX
2669 // *************************************************************************
2670 procedure TGikoDM.IconStyleExecute(Sender: TObject);
2671 begin
2672         case GikoForm.ListView.ViewStyle of
2673                 vsIcon: SmallIconAction.Execute;
2674                 vsSmallIcon: ListIconAction.Execute;
2675                 vsList: DetailIconAction.Execute;
2676                 vsReport: LargeIconAction.Execute;
2677         end;
2678 end;
2679 // *************************************************************************
2680 //! SelectComboBox\82Ì\92l\82ð\83N\83\8a\83A\82·\82é
2681 // *************************************************************************
2682 procedure TGikoDM.ClearSelectComboBox;
2683 begin
2684         if GikoForm.SelectComboBoxPanel.Visible then begin
2685                 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2686                 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2687                 GikoForm.ListView.SetFocus;
2688         end;
2689 end;
2690 // *************************************************************************
2691 //! \83X\83\8c\83b\83h\82ð\82·\82×\82Ä\95\\8e¦\82·\82é
2692 // *************************************************************************
2693 procedure TGikoDM.AllItemActionExecute(Sender: TObject);
2694 begin
2695         try
2696                 if GikoForm.ViewType <> gvtAll then
2697                         GikoForm.SetListViewType(gvtAll);
2698                 GikoSys.Setting.ThreadRange := gtrAll;
2699                 AllItemAction.Checked           := True;
2700                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2701                 GikoForm.ModifySelectList;
2702                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2703                 ClearSelectComboBox;
2704         except
2705         end;
2706 end;
2707 // *************************************************************************
2708 //! \83\8d\83O\97L\82è\83X\83\8c\83b\83h\82Ì\82Ý\82ð\95\\8e¦\82·\82é
2709 // *************************************************************************
2710 procedure TGikoDM.LogItemActionExecute(Sender: TObject);
2711 begin
2712         try
2713                 if GikoForm.ViewType <> gvtLog then
2714                         GikoForm.SetListViewType(gvtLog);
2715                 GikoSys.Setting.ThreadRange     := gtrLog;
2716                 LogItemAction.Checked := True;
2717                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2718                 GikoForm.ModifySelectList;
2719                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2720                 ClearSelectComboBox;
2721         except
2722         end;
2723 end;
2724 // *************************************************************************
2725 //! \90V\92\85\83X\83\8c\83b\83h\82Ì\82Ý\95\\8e¦\82·\82é
2726 // *************************************************************************
2727 procedure TGikoDM.NewItemActionExecute(Sender: TObject);
2728 begin
2729         try
2730
2731                 if GikoForm.ViewType <> gvtNew then
2732                         GikoForm.SetListViewType(gvtNew);
2733                 GikoSys.Setting.ThreadRange     := gtrNew;
2734                 NewItemAction.Checked := True;
2735                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2736                 GikoForm.ModifySelectList;
2737                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2738                 ClearSelectComboBox;
2739         except
2740         end;
2741 end;
2742 // *************************************************************************
2743 //! DAT\97\8e\82¿\83X\83\8c\83b\83h\82Ì\82Ý\95\\8e¦\82·\82é
2744 // *************************************************************************
2745 procedure TGikoDM.ArchiveItemActionExecute(Sender: TObject);
2746 begin
2747         try
2748                 if GikoForm.ViewType <> gvtArch then
2749                         GikoForm.SetListViewType(gvtArch);
2750                 GikoSys.Setting.ThreadRange     := gtrArch;
2751                 ArchiveItemAction.Checked := True;
2752                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2753                 GikoForm.ModifySelectList;
2754                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2755                 ClearSelectComboBox;
2756         except
2757         end;
2758 end;
2759 // *************************************************************************
2760 //! \90\91\83X\83\8c\83b\83h\82Ì\82Ý\95\\8e¦\82·\82é
2761 // *************************************************************************
2762 procedure TGikoDM.LiveItemActionExecute(Sender: TObject);
2763 begin
2764         try
2765                 if GikoForm.ViewType <> gvtLive then
2766                         GikoForm.SetListViewType(gvtLive);
2767                 GikoSys.Setting.ThreadRange     := gtrLive;
2768                 LiveItemAction.Checked := True;
2769                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2770                 GikoForm.ModifySelectList;
2771                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2772                 ClearSelectComboBox;
2773         except
2774         end;
2775 end;
2776
2777 // *************************************************************************
2778 //! \83X\83\8c\83b\83h\82Ì\95\\8e¦\94Í\88Í\82ð\90Ý\92è
2779 // *************************************************************************
2780 procedure TGikoDM.ThreadRangeActionExecute(Sender: TObject);
2781 begin
2782         case GikoSys.Setting.ThreadRange of
2783         gtrAll: AllItemAction.Execute;
2784         gtrLog: LogItemAction.Execute;
2785         gtrNew: NewItemAction.Execute;
2786         gtrArch: ArchiveItemAction.Execute;
2787         gtrLive: LiveItemAction.Execute;
2788         end;
2789 end;
2790 // *************************************************************************
2791 //! \83X\83\8c\83b\83h\8di\8d\9e\82Ý\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
2792 // *************************************************************************
2793 procedure TGikoDM.SelectItemActionExecute(Sender: TObject);
2794 var
2795         idx: Integer;
2796         Dlg: TListSelectDialog;
2797 begin
2798         try
2799                 if GikoForm.SelectComboBoxPanel.Visible then begin
2800                         if GikoForm.SelectComboBoxPanel.Left + GikoForm.SelectComboBoxPanel.Width < GikoForm.ListToolBar.Width then begin
2801                                 // SelectComboBox \82ª\82 \82é\8fê\8d\87\82Í\83t\83H\81[\83J\83X\82ð\88Ú\82·
2802                                 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
2803                                         if GikoSys.Setting.ListWidthState = glsMax then
2804                                                 BrowserMinAction.Execute;
2805                                 end else begin
2806                                         if GikoSys.Setting.ListHeightState = glsMax then
2807                                                 BrowserMinAction.Execute;
2808                                 end;
2809                                 GikoForm.SelectComboBox.SetFocus;
2810                                 exit;
2811                         end;
2812                 end;
2813         except
2814         end;
2815
2816         if GikoForm.SelectComboBox.Text = SELECTCOMBOBOX_NAME then begin
2817                 GikoForm.SelectComboBox.Text := '';
2818                 GikoForm.SelectComboBox.Color := clWindow;
2819         end;
2820
2821         AllItemAction.Checked := False;
2822         LogItemAction.Checked := False;
2823         NewItemAction.Checked := False;
2824         //SelectItemAction.Checked := True;
2825         GikoForm.ModifySelectList;
2826         Dlg := TListSelectDialog.Create(GikoForm);
2827         try
2828                 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
2829                 Dlg.SelectComboBox.Text := GikoForm.SelectComboBox.Text;
2830                 Dlg.ShowModal;
2831                 if Dlg.ModalResult = mrCancel then begin
2832                         if Length( GikoForm.SelectComboBox.Text ) = 0 then begin
2833                                 AllItemAction.Checked := True;
2834                                 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2835                                 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2836                         end;
2837
2838                         if GikoForm.GetActiveList is TBoard then
2839                                 GikoForm.SetListViewType(gvtUser, TBoard(GikoForm.GetActiveList).ParentCategory.ParenTBBS.SelectText , Dlg.KubetsuCheckBox.Checked);
2840                 end else begin
2841                         idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
2842                         if idx <> -1 then
2843                                 GikoSys.Setting.SelectTextList.Delete(idx);
2844                         GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
2845                         while Dlg.SelectComboBox.Items.Count > 100 do begin
2846                                 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
2847                         end;
2848
2849                         if Length( Dlg.SelectComboBox.Text ) = 0 then begin
2850                                 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2851                                 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2852                         end else begin
2853                                 GikoForm.SelectComboBox.Text := Dlg.SelectComboBox.Text;
2854                                 GikoForm.SelectComboBox.Color := clWindow;
2855                         end;
2856                         GikoForm.SetListViewType(gvtUser, Dlg.SelectComboBox.Text, Dlg.KubetsuCheckBox.Checked);
2857                 end;
2858         finally
2859                 Dlg.Release;
2860         end;
2861 end;
2862 // *************************************************************************
2863 //! \90V\83X\83\8c\8f\91\82«\8d\9e\82Ý\83E\83B\83\93\83h\83E\82ð\95\\8e¦\82·\82é
2864 // *************************************************************************
2865 procedure TGikoDM.ThreadEditorActionExecute(Sender: TObject);
2866 var
2867         Editor: TEditorForm;
2868 begin
2869         if not (GikoForm.GetActiveList is TBoard) then
2870                 Exit;
2871         Editor := TEditorForm.Create(GikoForm);
2872         Editor.SetBoard(TBoard(GikoForm.GetActiveList));
2873         Editor.Show;
2874         Editor.BodyEdit.SetFocus;
2875 end;
2876 // *************************************************************************
2877 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\94Â\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
2878 // *************************************************************************
2879 procedure TGikoDM.BoardIEActionExecute(Sender: TObject);
2880 var
2881         URL: string;
2882 begin
2883         if GikoForm.GetActiveList is TBoard then begin
2884                 URL := TBoard(GikoForm.GetActiveList).URL;
2885                 GikoSys.OpenBrowser(URL, gbtAuto);
2886         end;
2887 end;
2888 // *************************************************************************
2889 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\82ð\83R\83s\81[\82·\82é
2890 // *************************************************************************
2891 procedure TGikoDM.SelectItemURLCopyActionExecute(Sender: TObject);
2892 var
2893         List: TList;
2894         i: Integer;
2895         s: string;
2896 begin
2897         s := '';
2898         List := TList.Create;
2899         try
2900                 GikoForm.SelectListItem(List);
2901                 for i := 0 to List.Count - 1 do begin
2902                         if TObject(List[i]) is TBoard then
2903                                 s := s + TBoard(List[i]).URL + #13#10
2904                         else if TObject(List[i]) is TThreadItem then
2905                                 s := s + TThreadItem(List[i]).URL + #13#10;
2906                 end;
2907                 if s <> '' then
2908                         Clipboard.AsText := s;
2909         finally
2910                 List.Free;
2911         end;
2912 end;
2913 // *************************************************************************
2914 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\82ð\83R\83s\81[\82·\82éUpdate\83C\83x\83\93\83g
2915 // *************************************************************************
2916 procedure TGikoDM.SelectItemURLCopyActionUpdate(Sender: TObject);
2917 begin
2918         if ((GikoForm.GetActiveList is TBoard) or
2919                 (GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then
2920                 TAction(Sender).Enabled := True
2921         else
2922                 TAction(Sender).Enabled := False;
2923 end;
2924 // *************************************************************************
2925 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82é
2926 // *************************************************************************
2927 procedure TGikoDM.SelectItemNameCopyActionExecute(Sender: TObject);
2928 var
2929         List: TList;
2930         i: Integer;
2931         s: string;
2932 begin
2933         s := '';
2934         List := TList.Create;
2935         try
2936                 GikoForm.SelectListItem(List);
2937                 for i := 0 to List.Count - 1 do begin
2938             if TObject(List[i]) is TCategory then
2939                 s := s + TCategory(List[i]).Title + #13#10
2940                         else if TObject(List[i]) is TBoard then
2941                                 s := s + TBoard(List[i]).Title + #13#10
2942                         else if TObject(List[i]) is TThreadItem then
2943                                 s := s + TThreadItem(List[i]).Title + #13#10;
2944                 end;
2945                 if s <> '' then
2946                         Clipboard.AsText := s;
2947         finally
2948                 List.Free;
2949         end;
2950 end;
2951 // *************************************************************************
2952 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82éUpdate\83C\83x\83\93\83g
2953 // *************************************************************************
2954 procedure TGikoDM.SelectItemNameCopyActionUpdate(Sender: TObject);
2955 begin
2956         if ((GikoForm.GetActiveList is TBBS) or
2957         (GikoForm.GetActiveList is TBoard) or
2958                 (GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then
2959                 TAction(Sender).Enabled := True
2960         else
2961                 TAction(Sender).Enabled := False;
2962 end;
2963 // *************************************************************************
2964 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\96¼\91O\82ÆURL\82ð\83R\83s\81[\82·\82é
2965 // *************************************************************************
2966 procedure TGikoDM.SelectItemNameURLCopyActionExecute(Sender: TObject);
2967 var
2968         List: TList;
2969         i: Integer;
2970         s: string;
2971 begin
2972         s := '';
2973         List := TList.Create;
2974         try
2975                 GikoForm.SelectListItem(List);
2976                 for i := 0 to List.Count - 1 do begin
2977                         if TObject(List[i]) is TBoard then
2978                                 s := s + TBoard(List[i]).Title + #13#10 + TBoard(List[i]).URL + #13#10
2979                         else if TObject(List[i]) is TThreadItem then
2980                                 s := s + TThreadItem(List[i]).Title + #13#10 + TThreadItem(List[i]).URL + #13#10;
2981                 end;
2982                 if s <> '' then
2983                         Clipboard.AsText := s;
2984         finally
2985                 List.Free;
2986         end;
2987 end;
2988 // *************************************************************************
2989 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\88ê\97\97\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
2990 // *************************************************************************
2991 procedure TGikoDM.SelectListReloadActionExecute(Sender: TObject);
2992 var
2993         i: Integer;
2994         List: TList;
2995         msg: string;
2996         shiftDown: Boolean;
2997 begin
2998         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
2999     GikoForm.ActiveListColumnSave;
3000         if GikoForm.GetActiveList is TCategory then begin
3001                 List := TList.Create;
3002                 try
3003                         GikoForm.SelectListItem(List);
3004                         if List.Count > 5 then begin
3005                                 msg := '5\8cÂ\88È\8fã\82Í\8ew\92è\82Å\82«\82Ü\82¹\82ñ' + #13#10
3006                                                  + '\82Q\82¿\82á\82ñ\82Ë\82é\95\89\89×\8cy\8c¸\82É\82²\8b¦\97Í\82­\82¾\82³\82¢';
3007                                 MsgBox(GikoForm.Handle, msg, '\8cx\8d\90', MB_ICONEXCLAMATION);
3008                                 Exit;
3009                         end;
3010                         for i := 0 to List.Count - 1 do begin
3011                                 if TObject(List[i]) is TBoard then
3012                                         GikoForm.DownloadList(TBoard(List[i]), shiftDown);
3013                         end;
3014                 finally
3015                         List.Free;
3016                 end;
3017         end else if GikoForm.GetActiveList is TBoard then begin
3018                 GikoForm.DownloadList(TBoard(GikoForm.GetActiveList), shiftDown);
3019         end;
3020 end;
3021 // *************************************************************************
3022 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\88ê\97\97\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82éUpdate\83C\83x\83\93\83g
3023 // *************************************************************************
3024 procedure TGikoDM.SelectListReloadActionUpdate(Sender: TObject);
3025 begin
3026         if (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0) then
3027                 TAction(Sender).Enabled := True
3028         else if GikoForm.GetActiveList is TBoard then begin
3029                 TAction(Sender).Enabled :=
3030             (GikoForm.GetActiveList <> BoardGroup.SpecialBoard);
3031         end else
3032                 TAction(Sender).Enabled := False;
3033 end;
3034 // *************************************************************************
3035 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
3036 // *************************************************************************
3037 procedure TGikoDM.SelectThreadReloadActionExecute(Sender: TObject);
3038 var
3039         List: TList;
3040         i: Integer;
3041         msg: string;
3042         shiftDown: Boolean;
3043 begin
3044         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
3045         List := TList.Create;
3046         try
3047                 GikoForm.SelectListItem(List);
3048                 if List.Count > 10 then begin
3049                         msg := '10\8cÂ\88È\8fã\82Í\8ew\92è\82Å\82«\82Ü\82¹\82ñ' + #13#10
3050                                          + '\82Q\82¿\82á\82ñ\82Ë\82é\95\89\89×\8cy\8c¸\82É\82²\8b¦\97Í\82­\82¾\82³\82¢';
3051                         MsgBox(GikoForm.Handle, msg, '\8cx\8d\90', MB_ICONEXCLAMATION);
3052                         Exit;
3053                 end;
3054                 for i := 0 to List.Count - 1 do begin
3055                         if TObject(List[i]) is TThreadItem then
3056                                 GikoForm.DownloadContent(TThreadItem(List[i]), shiftDown);
3057                 end;
3058         finally
3059                 List.Free;
3060         end;
3061 end;
3062 // *************************************************************************
3063 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82éUpdate\83C\83x\83\93\83g
3064 // *************************************************************************
3065 procedure TGikoDM.SelectThreadReloadActionUpdate(Sender: TObject);
3066 begin
3067         TAction(Sender).Enabled :=
3068                 (GikoForm.GetActiveList is TBoard) and (GikoForm.ListView.SelCount > 0);
3069 end;
3070 // *************************************************************************
3071 //! \83X\83\8c\83b\83h\8f\84\89ñ\97\\96ñ
3072 // *************************************************************************
3073 procedure TGikoDM.SelectReservActionExecute(Sender: TObject);
3074 begin
3075         //INFO 2005/11/19 \83_\83~\81[\81H\81@by \82à\82\82ã
3076         // \82±\82Ì\83R\83\81\83\93\83g\8dí\8f\9c\82µ\82Ä\82Í\91Ê\96Ú
3077 end;
3078 // *************************************************************************
3079 //! \83X\83\8c\83b\83h\8f\84\89ñ\97\\96ñUpdate\83C\83x\83\93\83g
3080 // *************************************************************************
3081 procedure TGikoDM.SelectReservActionUpdate(Sender: TObject);
3082 var
3083         i: Integer;
3084         List: TList;
3085 begin
3086         if (GikoForm.GetActiveList is TBoard) and (GikoForm.ListView.SelCount > 0) then begin
3087                 List := TList.Create;
3088                 try
3089                         GikoForm.SelectListItem(List);
3090                         for i := 0 to List.Count - 1 do begin
3091                                 if TObject(List[i]) is TThreadItem then begin
3092                                         if TThreadItem(List[i]).IsLogFile then begin
3093                                                 SelectReservAction.Enabled := True;
3094                                                 Exit;
3095                                         end;
3096                                 end;
3097                         end;
3098                         SelectReservAction.Enabled := False;
3099                 finally
3100                         List.Free;
3101                 end;
3102         end else if (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0) then
3103                 SelectReservAction.Enabled := True
3104         else
3105                 SelectReservAction.Enabled := False;
3106 end;
3107 // *************************************************************************
3108 //! \91I\91ð\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82É\90V\82µ\82¢\96¼\91O\82Å\8f\84\89ñ\97\\96ñ
3109 // *************************************************************************
3110 procedure TGikoDM.SelectNewRoundNameExecute(Sender: TObject);
3111 var
3112         s: string;
3113         Dlg: TRoundNameDialog;
3114                 cnt: Integer;
3115
3116 begin
3117         //\8cÄ\82Ñ\8fo\82µ\8c³\82ª\81ATAction\82ÅListView\82É\91I\91ð\82ª\82¢\82È\82¯\82ê\82Î\81AEXIT\82·\82é
3118         if (Sender is TAction) and (GikoForm.ListView.Selected = nil) then
3119                 Exit;
3120
3121         //\93o\98^\8fã\8cÀ\83`\83F\83b\83N
3122         cnt := RoundList.Count[grtBoard];
3123         cnt := cnt + RoundList.Count[grtItem];
3124         if cnt > 500 then begin
3125                         MsgBox(GikoForm.Handle, '\8f\84\89ñ\82Í500\88È\8fã\93o\98^\82Å\82«\82Ü\82¹\82ñ', MSG_ERROR, MB_OK or MB_ICONSTOP);
3126                         Exit;
3127         end;
3128
3129         Dlg := TRoundNameDialog.Create(GikoForm);
3130         try
3131                 Dlg.ShowModal;
3132                 if Dlg.ModalResult <> mrCancel then begin
3133                         s := Trim(Dlg.RoundNameEdit.Text);
3134                         if (Sender is TMenuItem) then begin
3135                                 GikoForm.SetSelectItemRound(True, s, TMenuItem(Sender).Parent.Name);
3136                         end else if (Sender is TAction) then begin
3137                                 if (GikoForm.ListView.Selected <> nil) then begin
3138                                         if (TObject(GikoForm.ListView.Selected.Data) is TThreadItem) then begin
3139                                                 GikoForm.SetSelectItemRound(True, s,
3140                                                         TThreadItem(GikoForm.ListView.Selected.Data).Title);
3141                                         end else if (TObject(GikoForm.ListView.Selected.Data) is TBoard) then begin
3142                                                 GikoForm.SetSelectItemRound(True, s,
3143                                                         TBoard(GikoForm.ListView.Selected.Data).Title);
3144                                         end;
3145                                 end;
3146                         end;
3147                         GikoForm.ListView.Refresh;
3148                 end;
3149         finally
3150                 Dlg.Free;
3151         end;
3152 end;
3153 // *************************************************************************
3154 //! \91I\91ð\82³\82ê\82Ä\82¢\83X\83\8c\83b\83h\82Ì\8f\84\89ñ\82ð\8dí\8f\9c\82·\82é
3155 // *************************************************************************
3156 procedure TGikoDM.SelectDeleteRoundExecute(Sender: TObject);
3157 var
3158         s : String;
3159 begin
3160         if (Sender is TMenuItem) then begin
3161                 try
3162                         GikoForm.SetSelectItemRound(False, '', TMenuItem(Sender).Parent.Name);
3163                 except
3164                 end;
3165         end else if (Sender is TAction) then begin
3166                 try
3167                         if GikoForm.ListView.Selected <> nil then begin
3168                                 if (TObject(GikoForm.ListView.Selected.Data) is TThreadItem) then begin
3169                                         s := TThreadItem(GikoForm.ListView.Selected.Data).Title;
3170                                 end else if (TObject(GikoForm.ListView.Selected.Data) is TBoard) then begin
3171                                         s := TBoard(GikoForm.ListView.Selected.Data).Title;
3172                                 end;
3173                                 GikoForm.SetSelectItemRound(False, '', s);
3174
3175                         end;
3176                 except
3177                 end;
3178         end;
3179         GikoForm.ListView.Refresh;
3180 end;
3181 // *************************************************************************
3182 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82ð\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82·\82é
3183 // *************************************************************************
3184 procedure TGikoDM.BoardFavoriteAddActionExecute(Sender: TObject);
3185 begin
3186         if TObject(GikoForm.ListView.Selected.Data) is TBoard then
3187                 GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data));
3188 end;
3189 // *************************************************************************
3190 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82ð\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82·\82éUpdate\83C\83x\83\93\83g
3191 // *************************************************************************
3192 procedure TGikoDM.BoardFavoriteAddActionUpdate(Sender: TObject);
3193 begin
3194         BoardFavoriteAddAction.Enabled :=
3195                 (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0);
3196 end;
3197 // *************************************************************************
3198 //! Explorer\82ÅLog\83t\83H\83\8b\83_\82ð\8aJ\82­
3199 // *************************************************************************
3200 procedure TGikoDM.LogFolderOpenActionExecute(Sender: TObject);
3201 var
3202         List: TList;
3203 begin
3204         if ((GikoSys.Setting.ListOrientation = gloVertical) and
3205                 (GikoSys.Setting.ListHeightState = glsMax)) or
3206                 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
3207                 (GikoSys.Setting.ListWidthState = glsMax))      then begin
3208                 if(GikoForm.GetActiveContent <> nil) then begin
3209                         GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(GikoForm.GetActiveContent.FilePath) + '"');
3210                 end;
3211         end else if GikoForm.GetActiveList is TCategory then begin
3212                 List := TList.Create;
3213                 try
3214                         GikoForm.SelectListItem(List);
3215                         GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(List[0]).FilePath) + '"');
3216                 finally
3217                         List.Free;
3218                 end;
3219         end else if GikoForm.GetActiveList is TBoard then begin
3220                 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(GikoForm.GetActiveList).FilePath) + '"');
3221         end;
3222
3223 end;
3224 // *************************************************************************
3225 //! ActiveList\82ªTBoard\82©TCategory\82Å\83X\83\8c\88ê\97\97\82Å\82P\82Â\88È\8fã\91I\91ð\82µ\82Ä\82¢\82é\82Æ\97L\8cø\82É\82È\82éActionde\8b¤\92Ê
3226 // *************************************************************************
3227 procedure TGikoDM.LogFolderOpenActionUpdate(Sender: TObject);
3228 begin
3229         if (((GikoForm.GetActiveList is TBoard) and
3230         (GikoForm.GetActiveList <> BoardGroup.SpecialBoard))
3231         or (GikoForm.GetActiveList is TCategory))
3232                 and (GikoForm.ListView.SelCount > 0) then
3233                 TAction(Sender).Enabled := True
3234         else
3235                 TAction(Sender).Enabled := False;
3236 end;
3237 // *************************************************************************
3238 //! Header.txt\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
3239 // *************************************************************************
3240 procedure TGikoDM.BrowsBoradHeadActionExecute(Sender: TObject);
3241 var
3242         RefURL, URL : string;
3243         List : TList;
3244 begin
3245         RefURL := '';
3246         if GikoForm.GetActiveList is TCategory then begin
3247                 List := TList.Create;
3248                 try
3249                         GikoForm.SelectListItem(List);
3250                         RefURL := TBoard(List[0]).URL;
3251                 finally
3252                         List.Free;
3253                 end;
3254         end else if GikoForm.GetActiveList is TBoard then begin
3255                 RefURL := TBoard(GikoForm.GetActiveList).URL
3256         end;
3257         if RefURL <> '' then begin
3258                 if RefURL[Length(RefURL)] <> '/' then
3259                         URL     := RefURL + '/' + 'head.txt'
3260                 else
3261                         URL     := RefURL + 'head.txt';
3262
3263                 GikoForm.MoveToURL(URL);
3264         end else begin
3265                 ShowMessage('\94Â\82ð\93Á\92è\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B');
3266         end;
3267
3268 end;
3269 // *************************************************************************
3270 //! \83X\83\8c\88ê\97\97\82Ì\95\\8e¦\82µ\82Ä\82¢\82é\93à\97e\82É\82µ\82½\82ª\82Á\82Ä\81A\83\\81[\83g\83J\83\89\83\80\82Ì\88Ê\92u\82Æ\95û\8cü\82ð\8eæ\93¾\82·\82é
3271 // *************************************************************************
3272 function TGikoDM.GetSortProperties(List: TObject;
3273  var vSortOrder: Boolean): Boolean;
3274 begin
3275         Result := True;
3276         if (List <> nil) then begin
3277                 if (List is TBBS) then begin
3278                         vSortOrder := GikoSys.Setting.BBSSortOrder;
3279                 end else if (List is TCategory) then begin
3280                         vSortOrder := GikoSys.Setting.CategorySortOrder;
3281                 end else if (List is TBoard) then begin
3282                         vSortOrder := GikoSys.Setting.BoardSortOrder;
3283                 end else begin
3284                         Result := False;
3285                 end;
3286         end else begin
3287                 Result := False;
3288         end;
3289 end;
3290 // *************************************************************************
3291 //! \8c»\8dÝ\82Ì\83J\83\89\83\80\82ð\83\\81[\83g\82·\82é
3292 // *************************************************************************
3293 procedure TGikoDM.SortActiveColumnActionExecute(Sender: TObject);
3294 var
3295         i       : Integer;
3296         so : boolean;
3297 begin
3298         if GetSortProperties(GikoForm.GetActiveList, so) then begin
3299                 for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
3300                         if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
3301                                 (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin
3302                                 so := not so;
3303                                 TListViewUtils.ListViewSort(nil, GikoForm.ListView,
3304                                          GikoForm.ListView.Column[ i ], ListNumberVisibleAction.Checked,
3305                                          so);
3306                                 break;
3307                         end;
3308                 end;
3309         end;
3310 end;
3311 // *************************************************************************
3312 //! \89E\97×\82Ì\83J\83\89\83\80\82ð\83\\81[\83g
3313 // *************************************************************************
3314 procedure TGikoDM.SortNextColumnActionExecute(Sender: TObject);
3315 var
3316         i, id   : Integer;
3317 begin
3318         for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
3319                 if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
3320                         (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin
3321                         id := i + 1;
3322                         if id > GikoForm.ListView.Columns.Count - 1 then
3323                                 id := 0;
3324                         TListViewUtils.ListViewSort( nil, GikoForm.ListView,
3325                                 GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked,
3326                                 id = 0);
3327                         break;
3328                 end;
3329         end;
3330 end;
3331 // *************************************************************************
3332 //! \8d\97×\82Ì\83J\83\89\83\80\82ð\83\\81[\83g
3333 // *************************************************************************
3334 procedure TGikoDM.SortPrevColumnActionExecute(Sender: TObject);
3335 var
3336         i, id   : Integer;
3337 begin
3338         for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
3339                 if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
3340                         (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin
3341                         id := i - 1;
3342                         if id < 0 then
3343                                 id := GikoForm.ListView.Columns.Count - 1;
3344                         TListViewUtils.ListViewSort( nil, GikoForm.ListView,
3345                                 GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked,
3346                                 id = 0);
3347                         break;
3348                 end;
3349         end;
3350 end;
3351 ////////////////////////////////\94Â\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
3352 // *************************************************************************
3353 //! \95W\8f\80\83c\81[\83\8b\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3354 // *************************************************************************
3355 procedure TGikoDM.StdToolBarVisibleActionExecute(Sender: TObject);
3356 var
3357         CoolBand: TCoolBand;
3358 begin
3359         CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.StdToolBar);
3360         if CoolBand = nil then
3361                 Exit;
3362         GikoSys.Setting.StdToolBarVisible := StdToolBarVisibleAction.Checked;
3363         CoolBand.Visible := GikoSys.Setting.StdToolBarVisible;
3364         GikoForm.StdToolBarVisiblePMenu.Checked := GikoSys.Setting.StdToolBarVisible;
3365 end;
3366 // *************************************************************************
3367 //! \83A\83h\83\8c\83X\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3368 // *************************************************************************
3369 procedure TGikoDM.AddressBarVisibleActionExecute(Sender: TObject);
3370 var
3371         CoolBand: TCoolBand;
3372 begin
3373         CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.AddressToolBar);
3374         if CoolBand = nil then
3375                 Exit;
3376         GikoSys.Setting.AddressBarVisible := AddressBarVisibleAction.Checked;
3377         CoolBand.Visible := GikoSys.Setting.AddressBarVisible;
3378         GikoForm.AddressToolBarVisiblePMenu.Checked := GikoSys.Setting.AddressBarVisible;
3379 end;
3380 // *************************************************************************
3381 //! \83\8a\83\93\83N\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3382 // *************************************************************************
3383 procedure TGikoDM.LinkBarVisibleActionExecute(Sender: TObject);
3384 var
3385         CoolBand: TCoolBand;
3386 begin
3387         CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.LinkToolBar);
3388         if CoolBand = nil then
3389                 Exit;
3390         GikoSys.Setting.LinkBarVisible := LinkBarVisibleAction.Checked;
3391         CoolBand.Visible := GikoSys.Setting.LinkBarVisible;
3392         GikoForm.LinkToolBarVisiblePMenu.Checked := GikoSys.Setting.LinkBarVisible;
3393 end;
3394 // *************************************************************************
3395 //! \83\8a\83X\83g\83c\81[\83\8b\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3396 // *************************************************************************
3397 procedure TGikoDM.ListToolBarVisibleActionExecute(Sender: TObject);
3398 var
3399         CoolBand: TCoolBand;
3400 begin
3401         CoolBand := GikoForm.GetCoolBand(GikoForm.ListCoolBar, GikoForm.ListToolBar);
3402         if CoolBand = nil then
3403                 Exit;
3404         CoolBand.Visible := ListToolBarVisibleAction.Checked;
3405         GikoSys.Setting.ListToolBarVisible := ListToolBarVisibleAction.Checked;
3406 end;
3407 // *************************************************************************
3408 //! \83\8a\83X\83g\96¼\8fÌ\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3409 // *************************************************************************
3410 procedure TGikoDM.ListNameBarVisibleActionExecute(Sender: TObject);
3411 var
3412         CoolBand: TCoolBand;
3413 begin
3414         CoolBand := GikoForm.GetCoolBand(GikoForm.ListCoolBar, GikoForm.ListNameToolBar);
3415         if CoolBand = nil then
3416                 Exit;
3417         CoolBand.Visible := ListNameBarVisibleAction.Checked;
3418         GikoSys.Setting.ListNameBarVisible := ListNameBarVisibleAction.Checked;
3419 end;
3420 // *************************************************************************
3421 //! \83u\83\89\83E\83U\83c\81[\83\8b\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3422 // *************************************************************************
3423 procedure TGikoDM.BrowserToolBarVisibleActionExecute(Sender: TObject);
3424 var
3425         CoolBand: TCoolBand;
3426 begin
3427         CoolBand := GikoForm.GetCoolBand(GikoForm.BrowserCoolBar, GikoForm.BrowserToolBar);
3428         if CoolBand = nil then
3429                 Exit;
3430         CoolBand.Visible := BrowserToolBarVisibleAction.Checked;
3431         GikoSys.Setting.BrowserToolBarVisible := BrowserToolBarVisibleAction.Checked;
3432 end;
3433 // *************************************************************************
3434 //! \83u\83\89\83E\83U\96¼\8fÌ\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3435 // *************************************************************************
3436 procedure TGikoDM.BrowserNameBarVisibleActionExecute(Sender: TObject);
3437 var
3438         CoolBand: TCoolBand;
3439 begin
3440         CoolBand := GikoForm.GetCoolBand(GikoForm.BrowserCoolBar, GikoForm.BrowserNameToolBar);
3441         if CoolBand = nil then
3442                 Exit;
3443         CoolBand.Visible := BrowserNameBarVisibleAction.Checked;
3444         GikoSys.Setting.BrowserNameBarVisible := BrowserNameBarVisibleAction.Checked;
3445 end;
3446 // *************************************************************************
3447 //! \83\81\83b\83Z\81[\83W\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3448 // *************************************************************************
3449 procedure TGikoDM.MsgBarVisibleActionExecute(Sender: TObject);
3450 begin
3451         GikoForm.MessageSplitter.Visible := MsgBarVisibleAction.Checked;
3452         GikoForm.MessagePanel.Top :=
3453                 GikoForm.MessageSplitter.Top + GikoForm.MessageSplitter.Height;
3454         GikoForm.MessageSplitter.Top := GikoForm.MessagePanel.Top + 1;
3455         GikoForm.MessagePanel.Visible := MsgBarVisibleAction.Checked;
3456         GikoSys.Setting.MessageBarVisible := MsgBarVisibleAction.Checked;
3457 end;
3458 // *************************************************************************
3459 //! \83\81\83b\83Z\81[\83W\83o\81[\82ð\95Â\82\82é
3460 // *************************************************************************
3461 procedure TGikoDM.MsgBarCloseActionExecute(Sender: TObject);
3462 begin
3463         MsgBarVisibleAction.Execute;
3464 end;
3465 // *************************************************************************
3466 //! \83X\83e\81[\83^\83X\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3467 // *************************************************************************
3468 procedure TGikoDM.StatusBarVisibleActionExecute(Sender: TObject);
3469 begin
3470         GikoForm.StatusBar.Visible := StatusBarVisibleAction.Checked;
3471         GikoSys.Setting.StatusBarVisible := StatusBarVisibleAction.Checked;
3472 end;
3473 // *************************************************************************
3474 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\82ð\8cf\8e¦\94Â\82É\82·\82é
3475 // *************************************************************************
3476 procedure TGikoDM.CabinetBBSActionExecute(Sender: TObject);
3477 begin
3478
3479         if GikoForm.CabinetPanel.Visible then begin
3480                 if GikoForm.TreeType = gtt2ch then begin
3481                         GikoForm.CabinetVisible( False );
3482
3483                         CabinetBBSAction.Checked := False;
3484                 end else begin
3485                         CabinetBBSAction.Checked := True;
3486                 end;
3487         end else begin
3488                 GikoForm.CabinetVisible( True );
3489                 CabinetBBSAction.Checked := True;
3490         end;
3491
3492         if GikoForm.ActiveBBS = nil then
3493                 GikoForm.ShowBBSTree( BBSs[ 0 ] )
3494         else
3495                 GikoForm.ShowBBSTree( GikoForm.ActiveBBS );
3496
3497 end;
3498 // *************************************************************************
3499 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\82ð\97\9a\97ð\83\8a\83X\83g\82É\82·\82é
3500 // *************************************************************************
3501 procedure TGikoDM.CabinetHistoryActionExecute(Sender: TObject);
3502 begin
3503         GikoForm.ShowHistoryTree;
3504 end;
3505 // *************************************************************************
3506 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\82ð\82¨\8bC\82É\93ü\82è\83\8a\83X\83g\82É\82·\82é
3507 // *************************************************************************
3508 procedure TGikoDM.CabinetFavoriteActionExecute(Sender: TObject);
3509 var
3510         i, b : Integer;
3511         item : TMenuItem;
3512 begin
3513
3514         if GikoForm.CabinetPanel.Visible then begin
3515                 if GikoForm.TreeType = gttFavorite then begin
3516                         GikoForm.CabinetVisible( False );
3517                         CabinetFavoriteAction.Checked := False;
3518                 end else begin
3519                         CabinetFavoriteAction.Checked := True;
3520                 end;
3521         end else begin
3522                 GikoForm.CabinetVisible( True );
3523                 CabinetFavoriteAction.Checked := True;
3524         end;
3525
3526         // BBS...BBS, History, Favorite
3527         GikoSys.Setting.CabinetIndex := GikoForm.CabinetSelectPopupMenu.Items.Count - 1;
3528
3529         b := GikoForm.CabinetSelectPopupMenu.Items.Count - 1;
3530         for i := 0 to b do begin
3531                 item := GikoForm.CabinetSelectPopupMenu.Items[ i ];
3532                 if item is TBBSMenuItem then begin
3533                         item.Checked := False;
3534                         // CabinetMenu \82Í CabinetSelectPopupMenu \82Æ\93¯\82\82Æ\8c\88\82ß\82¤\82¿\82µ\82¿\82á\82¤
3535                         GikoForm.CabinetMenu.Items[ i ].Checked := False;
3536                 end;
3537         end;
3538
3539         // \83L\83\83\83r\83l\83b\83g\83c\81[\83\8b\83o\81[\8by\82Ñ\83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\90Ø\91Ö
3540         GikoForm.HistoryToolBar.Hide;
3541         GikoForm.FavoriteToolBar.Show;
3542         GikoForm.TreeView.Visible := False;
3543         GikoForm.FavoriteTreeView.Visible := True;
3544
3545         GikoForm.CabinetSelectToolButton.Caption := '\82¨\8bC\82É\93ü\82è';
3546         GikoForm.TreeType := gttFavorite;
3547
3548         // \83\81\83j\83\85\81[\8by\82Ñ\83{\83^\83\93\82Ì\83`\83F\83b\83N\82ð\90Ý\92è
3549         CabinetBBSAction.Checked := False;
3550         CabinetHistoryAction.Checked := False;
3551
3552         // \82¨\8bC\82É\93ü\82è\82Ì\83c\83\8a\81[\82ð\93W\8aJ
3553         GikoForm.FavoriteTreeView.Items.GetFirstNode.Expanded := True;
3554
3555 end;
3556 // *************************************************************************
3557 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3558 // *************************************************************************
3559 procedure TGikoDM.CabinetVisibleActionExecute(Sender: TObject);
3560 begin
3561         case GikoForm.TreeType of
3562         gttHistory:             CabinetHistoryAction.Execute;
3563         gttFavorite:    CabinetFavoriteAction.Execute;
3564         else
3565                 CabinetBBSAction.Execute;
3566         end;
3567 end;
3568 // *************************************************************************
3569 //! \83L\83\83\83r\83l\83b\83g\82ð\95Â\82\82é
3570 // *************************************************************************
3571 procedure TGikoDM.CabinetCloseActionExecute(Sender: TObject);
3572 begin
3573         //INFO 2005/11/19 \82±\82Ì\83A\83N\83V\83\87\83\93\82É\82Í\89½\82à\90Ý\92è\82³\82ê\82Ä\82¢\82È\82©\82Á\82½\81@\82à\82\82ã
3574 end;
3575 // *************************************************************************
3576 //! \83\8a\83X\83g\82ð\91å\82«\82¢\83A\83C\83R\83\93\95\\8e¦\82É\82·\82é
3577 // *************************************************************************
3578 procedure TGikoDM.LargeIconActionExecute(Sender: TObject);
3579 begin
3580         GikoForm.ListView.ViewStyle := vsIcon;
3581         LargeIconAction.Checked := True;
3582 end;
3583 // *************************************************************************
3584 //! \83\8a\83X\83g\82ð\8f¬\82³\82¢\83A\83C\83R\83\93\95\\8e¦\82É\82·\82é
3585 // *************************************************************************
3586 procedure TGikoDM.SmallIconActionExecute(Sender: TObject);
3587 begin
3588         GikoForm.ListView.ViewStyle := vsSmallIcon;
3589         SmallIconAction.Checked := True;
3590 end;
3591 // *************************************************************************
3592 //! \83\8a\83X\83g\82ð\88ê\97\97\95\\8e¦\82É\82·\82é
3593 // *************************************************************************
3594 procedure TGikoDM.ListIconActionExecute(Sender: TObject);
3595 begin
3596         GikoForm.ListView.ViewStyle := vsList;
3597         ListIconAction.Checked := True;
3598 end;
3599 // *************************************************************************
3600 //! \83\8a\83X\83g\82ð\8fÚ\8d×\95\\8e¦\82É\82·\82é
3601 // *************************************************************************
3602 procedure TGikoDM.DetailIconActionExecute(Sender: TObject);
3603 begin
3604         GikoForm.ListView.ViewStyle := vsReport;
3605         DetailIconAction.Checked := True;
3606 end;
3607 // *************************************************************************
3608 //! \83_\83E\83\93\83\8d\81[\83h\82ð\92\86\8e~\82·\82é
3609 // *************************************************************************
3610 procedure TGikoDM.StopActionExecute(Sender: TObject);
3611 begin
3612         GikoForm.FControlThread.DownloadAbort;
3613         if GikoForm.WorkCount <> 0 then GikoForm.WorkCount := 0;
3614         try
3615                 GikoForm.Animate.Active := False;
3616         except
3617         end;
3618         GikoForm.ScreenCursor := crDefault;
3619 end;
3620 // *************************************************************************
3621 //! \83\8a\83X\83g\82Æ\83u\83\89\83E\83U\82Ì\8fc\89¡\94z\92u\82ð\95Ï\8dX\82·\82é
3622 // *************************************************************************
3623 procedure TGikoDM.ArrangeActionExecute(Sender: TObject);
3624 begin
3625         if ArrangeAction.Checked then begin
3626                 //\8fc
3627                 GikoForm.ViewPanel.Align := alNone;
3628                 GikoForm.ListSplitter.Align := alNone;
3629                 GikoForm.ThreadPanel.Align := alNone;
3630
3631                 GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
3632                 GikoForm.ViewPanel.Align := alLeft;
3633
3634                 GikoForm.ListSplitter.Width := 5;
3635                 GikoForm.ListSplitter.Align := alLeft;
3636
3637                 GikoForm.ViewPanel.Left := -10;
3638
3639                 GikoForm.ThreadPanel.Align := alClient;
3640
3641                 GikoSys.Setting.ListOrientation := gloHorizontal;
3642                 case GikoSys.Setting.ListWidthState of
3643                         glsMax: begin
3644                                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
3645                                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
3646                                 GikoForm.ViewPanel.Width := 1;
3647                         end;
3648                         glsNormal: begin
3649                                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
3650                                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
3651                         end;
3652                         glsMin: begin
3653                                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
3654                                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
3655                                 GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80;
3656                         end;
3657                 end;
3658         end else begin
3659                 //\89¡
3660                 GikoForm.ViewPanel.Align := alNone;
3661                 GikoForm.ListSplitter.Align := alNone;
3662                 GikoForm.ThreadPanel.Align := alNone;
3663
3664                 GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
3665                 GikoForm.ViewPanel.Align := alTop;
3666
3667                 GikoForm.ListSplitter.Height := 5;
3668                 GikoForm.ListSplitter.Align := alTop;
3669
3670                 GikoForm.ViewPanel.Top := -10;
3671
3672                 GikoForm.ThreadPanel.Align := alClient;
3673                 GikoSys.Setting.ListOrientation := gloVertical;
3674                 case GikoSys.Setting.ListHeightState of
3675                         glsMax: begin
3676                                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
3677                                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
3678                                 GikoForm.ViewPanel.Height := 1;
3679                         end;
3680                         glsNormal: begin
3681                                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
3682                                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
3683                         end;
3684                         glsMin: begin
3685                                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
3686                                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
3687                                 GikoForm.ViewPanel.Height :=
3688                                         GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7;
3689                         end;
3690                 end;
3691         end;
3692 end;
3693 // *************************************************************************
3694 //! \83y\83C\83\93\82Ì\83T\83C\83Y\82ð\8f\89\8aú\89»\82·\82é
3695 // *************************************************************************
3696 procedure TGikoDM.PaneInitActionExecute(Sender: TObject);
3697 begin
3698         GikoForm.CabinetPanel.Width := 150;
3699         GikoForm.MessagePanel.Height := 40;
3700
3701         GikoForm.BrowserSizeWidth := 200;
3702         GikoForm.BrowserSizeHeight := 200;
3703         if ArrangeAction.Checked then begin
3704                 GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
3705         end else begin
3706                 GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
3707         end;
3708         if GikoSys.Setting.ListOrientation = gloHorizontal then begin
3709                 if GikoSys.Setting.ListHeightState = glsMax then begin
3710                         BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
3711                         GikoSys.Setting.ListHeightState := glsNormal;
3712                 end;
3713         end else begin
3714                 if GikoSys.Setting.ListWidthState = glsMax then begin
3715                         BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
3716                         GikoSys.Setting.ListWidthState := glsNormal;
3717                 end;
3718         end;
3719 end;
3720 // *************************************************************************
3721 //! \83u\83\89\83E\83U\83^\83u\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3722 // *************************************************************************
3723 procedure TGikoDM.BrowserTabVisibleActionExecute(Sender: TObject);
3724 begin
3725         GikoSys.Setting.BrowserTabVisible := BrowserTabVisibleAction.Checked;
3726         GikoForm.SetBrowserTabState;
3727 end;
3728 // *************************************************************************
3729 //! \83u\83\89\83E\83U\83^\83u\82ð\8fã\82É\95\\8e¦\82·\82é
3730 // *************************************************************************
3731 procedure TGikoDM.BrowserTabTopActionExecute(Sender: TObject);
3732 begin
3733         BrowserTabBottomAction.Checked := False;
3734         BrowserTabTopAction.Checked := True;
3735         GikoSys.Setting.BrowserTabPosition := gtpTop;
3736         GikoForm.SetBrowserTabState;
3737 end;
3738 // *************************************************************************
3739 //! \83u\83\89\83E\83U\83^\83u\82ð\89º\82É\95\\8e¦\82·\82é
3740 // *************************************************************************
3741 procedure TGikoDM.BrowserTabBottomActionExecute(Sender: TObject);
3742 begin
3743         BrowserTabTopAction.Checked := False;
3744         BrowserTabBottomAction.Checked := True;
3745         GikoSys.Setting.BrowserTabPosition := gtpBottom;
3746         GikoForm.SetBrowserTabState;
3747 end;
3748 // *************************************************************************
3749 //! \83u\83\89\83E\83U\83^\83u\82Ì\83X\83^\83C\83\8b\82ð\83^\83u\83X\83^\83C\83\8b\82É\82·\82é
3750 // *************************************************************************
3751 procedure TGikoDM.BrowserTabTabStyleActionExecute(Sender: TObject);
3752 begin
3753         BrowserTabButtonStyleAction.Checked := False;
3754         BrowserTabFlatStyleAction.Checked := False;
3755         BrowserTabTabStyleAction.Checked := True;
3756         GikoSys.Setting.BrowserTabStyle := gtsTab;
3757         GikoForm.SetBrowserTabState;
3758 end;
3759 // *************************************************************************
3760 //! \83u\83\89\83E\83U\83^\83u\82Ì\83X\83^\83C\83\8b\82ð\83{\83^\83\93\83X\83^\83C\83\8b\82É\82·\82é
3761 // *************************************************************************
3762 procedure TGikoDM.BrowserTabButtonStyleActionExecute(Sender: TObject);
3763 begin
3764         BrowserTabTabStyleAction.Checked := False;
3765         BrowserTabFlatStyleAction.Checked := False;
3766         BrowserTabButtonStyleAction.Checked := True;
3767         GikoSys.Setting.BrowserTabStyle := gtsButton;
3768         GikoForm.SetBrowserTabState;
3769 end;
3770 // *************************************************************************
3771 //! \83u\83\89\83E\83U\83^\83u\82Ì\83X\83^\83C\83\8b\82ð\83t\83\89\83b\83g\83{\83^\83\93\83X\83^\83C\83\8b\82É\82·\82é
3772 // *************************************************************************
3773 procedure TGikoDM.BrowserTabFlatStyleActionExecute(Sender: TObject);
3774 begin
3775         BrowserTabFlatStyleAction.Checked := True;
3776         BrowserTabTabStyleAction.Checked := False;
3777         BrowserTabButtonStyleAction.Checked := False;
3778         GikoSys.Setting.BrowserTabStyle := gtsFlat;
3779         GikoForm.SetBrowserTabState;
3780 end;
3781 // *************************************************************************
3782 //! \83u\83\89\83E\83U\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3783 // *************************************************************************
3784 procedure TGikoDM.SetFocusForBrowserActionExecute(Sender: TObject);
3785 begin
3786     GikoForm.ActiveContent.Browser.SetFocus;
3787 end;
3788 // *************************************************************************
3789 //! \83u\83\89\83E\83U\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82éUpdate\83C\83x\83\93\83g
3790 // *************************************************************************
3791 procedure TGikoDM.SetFocusForBrowserActionUpdate(Sender: TObject);
3792 begin
3793         if( GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) and
3794                 (GikoForm.ActiveContent.Browser <> GikoForm.BrowserNullTab.Browser) then
3795                 TAction(Sender).Enabled := true
3796         else
3797                 TAction(Sender).Enabled := false;
3798 end;
3799 // *************************************************************************
3800 //! \83X\83\8c\83b\83h\88ê\97\97\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3801 // *************************************************************************
3802 procedure TGikoDM.SetFocusForThreadListActionExecute(Sender: TObject);
3803 begin
3804         if GikoForm.ActiveContent <> nil then
3805                 GikoForm.WebBrowserClick(GikoForm.ActiveContent.Browser); //\88ê\89ñBrowser\82É\93\96\82Ä\82È\82¢\82Æ\93®\82©\82È\82¢\82Æ\82«\82ª\82 \82é
3806         GikoForm.ListView.SetFocus;
3807
3808         if( GikoForm.ListView.Items.Count > 0 ) and (GikoForm.ListView.ItemFocused = nil) then
3809                 GikoForm.ListView.Items.Item[0].Selected := true; //\91I\91ð\83A\83C\83e\83\80\82ª\96³\82¢\82Æ\82«\82Í\90æ\93ª\82Ì\82ð\91I\91ð\82·\82é
3810
3811         //\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
3812         if (GikoForm.ListView.ItemFocused <> nil) then begin
3813                 GikoForm.ListView.ItemFocused.MakeVisible(False);
3814         end;
3815 end;
3816 // *************************************************************************
3817 //! \83L\83\83\83r\83l\83b\83g\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3818 // *************************************************************************
3819 procedure TGikoDM.SetFocusForCabinetActionExecute(Sender: TObject);
3820 begin
3821         if GikoForm.ActiveContent <> nil then
3822                 GikoForm.WebBrowserClick(GikoForm.ActiveContent.Browser); //\88ê\89ñBrowser\82É\93\96\82Ä\82È\82¢\82Æ\93®\82©\82È\82¢\82Æ\82«\82ª\82 \82é
3823         if GikoForm.TreeView.Visible then begin
3824                 GikoForm.TreeView.SetFocus;
3825                 if(GikoForm.TreeView.Items.Count > 0) and ( GikoForm.TreeView.Selected = nil ) then
3826                         GikoForm.TreeView.Items.Item[0].Selected := true;
3827         end else if GikoForm.FavoriteTreeView.Visible then begin
3828                 GikoForm.FavoriteTreeView.SetFocus;
3829                 if(GikoForm.FavoriteTreeView.Items.Count > 0) and (GikoForm.FavoriteTreeView.Selected = nil) then
3830                         GikoForm.FavoriteTreeView.Items.Item[0].Selected := true;
3831         end;
3832 end;
3833 // *************************************************************************
3834 //! \83L\83\83\83r\83l\83b\83g\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82éUpdate\83C\83x\83\93\83g
3835 // *************************************************************************
3836 procedure TGikoDM.SetFocusForCabinetActionUpdate(Sender: TObject);
3837 begin
3838         SetFocusForCabinetAction.Enabled := GikoForm.CabinetPanel.Visible;
3839 end;
3840 // *************************************************************************
3841 //! \83X\83\8c\83b\83h\88ê\97\97\82ð\8dÅ\91å\89»\82µ\82Ä\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3842 // *************************************************************************
3843 procedure TGikoDM.ThreadlistMaxAndFocusActionExecute(Sender: TObject);
3844 begin
3845         BrowserMinAction.Execute;
3846         SetFocusForThreadListAction.Execute;
3847 end;
3848 // *************************************************************************
3849 //! \83X\83\8c\95\\8e¦\82ð\8dÅ\91å\89»\82µ\82Ä\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3850 // *************************************************************************
3851 procedure TGikoDM.BrowserMaxAndFocusActionExecute(Sender: TObject);
3852 begin
3853         BrowserMaxAction.Execute;
3854         SetFocusForBrowserAction.Execute;
3855 end;
3856 // *************************************************************************
3857 //! \83X\83\8c\83b\83h\88ê\97\97\82Ì\91I\91ð\82ð\8dí\8f\9c\82·\82é
3858 // *************************************************************************
3859 procedure TGikoDM.UnSelectedListViewActionExecute(Sender: TObject);
3860 begin
3861         if GikoForm.ListView.Selected <> nil then begin
3862                 GikoForm.ListView.Selected.Focused := True;
3863                 GikoForm.ListView.Selected := nil;
3864         end;
3865 end;
3866 ////////////////////////////////\95\\8e¦\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
3867 // *************************************************************************
3868 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\8aù\93Ç\82É\82·\82é
3869 // *************************************************************************
3870 procedure TGikoDM.KidokuActionExecute(Sender: TObject);
3871 begin
3872         SetThreadReadProperty(true);
3873 end;
3874 // *************************************************************************
3875 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\96¢\93Ç\82É\82·\82é
3876 // *************************************************************************
3877 procedure TGikoDM.MidokuActionExecute(Sender: TObject);
3878 begin
3879         SetThreadReadProperty(false);
3880 end;
3881 // *************************************************************************
3882 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\96¢\93Ç\81E\8aù\93Ç\82ð\90Ý\92è\82·\82é   true : \8aù\93Ç false : \96¢\93Ç
3883 // *************************************************************************
3884 procedure TGikoDM.SetThreadReadProperty(read: Boolean);
3885 var
3886         List: TList;
3887         i: Integer;
3888 begin
3889         List := TList.Create;
3890         try
3891                 GikoForm.SelectListItem(List);
3892                 for i := 0 to List.Count - 1 do begin
3893                         if TObject(List[i]) is TThreadItem then begin
3894                                 if (TThreadItem(List[i]).IsLogFile) then begin
3895                                         TThreadItem(List[i]).UnRead := not read;
3896                                 end;
3897                         end;
3898                 end;
3899                 if GikoForm.TreeView.Visible then
3900                         GikoForm.TreeView.Refresh;
3901                 if GikoForm.ListView.Visible then
3902                         GikoForm.ListView.Refresh;
3903         finally
3904                 List.Free;
3905         end;
3906 end;
3907 // *************************************************************************
3908 //! \83\8a\83X\83g\82ð\91S\82Ä\91I\91ð\82·\82é
3909 // *************************************************************************
3910 procedure TGikoDM.AllSelectActionExecute(Sender: TObject);
3911 begin
3912         GikoForm.ListViewAllSelect;
3913 end;
3914 // *************************************************************************
3915 //! \83\8a\83X\83g\82ð\91S\82Ä\91I\91ð\82·\82éUpdate\83C\83x\83\93\83g
3916 // *************************************************************************
3917 procedure TGikoDM.AllSelectActionUpdate(Sender: TObject);
3918 begin
3919         AllSelectAction.Enabled := GikoForm.ListView.SelCount > 0;
3920 end;
3921 ////////////////////////////////\95Ò\8fW\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
3922 //! \83X\83\8c\83b\83h\82Ì\83T\83C\83Y\82ð\8dÄ\8cv\8eZ\82·\82é
3923 procedure TGikoDM.ThreadSizeCalcForFileActionExecute(Sender: TObject);
3924 const
3925         RECALC_MES : String = '\83X\83\8c\83b\83h\82Ì\97e\97Ê\82ð\83t\83@\83C\83\8b\82©\82ç\8dÄ\8cv\8eZ\82µ\82Ü\82·\81B'#13#10 +
3926                                                         '\82±\82Ì\91\80\8dì\92\86\81A\83M\83R\83i\83r\82Ì\91¼\82Ì\91\80\8dì\82ð\82·\82é\82Æ\83f\81[\83^\82ª\94j\89ó\82³\82ê\82é\8b°\82ê\82ª\82 \82è\82Ü\82·\81B' +
3927                                                         '\82Ü\82½\82±\82Ì\91\80\8dì\82Í\81A\94ñ\8fí\82É\8e\9e\8aÔ\82ª\82©\82©\82é\8fê\8d\87\82ª\82 \82è\82Ü\82·\82ª\81A\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
3928         RECALC_TITLE : String = '\83X\83\8c\83b\83h\82Ì\97e\97Ê\82ð\83t\83@\83C\83\8b\82©\82ç\8dÄ\8cv\8eZ';
3929         LIMIT_SIZE = 1024;
3930 var
3931         limitSize : Integer;
3932         limitStr  : String;
3933 begin
3934\82Ü\82¸\81A\8e\9e\8aÔ\82ª\82©\82©\82é\82±\82Æ\82ð\8cx\8d\90\82·\82é\83\81\83b\83Z\81[\83W\82ð\8fo\97Í
3935   \8dÄ\8cv\8eZ\82·\82é\83X\83\8c\83b\83h\82Ì\83T\83C\83Y\82Ìè\87\92l\81i\83f\83t\83H\83\8b\83g1024B)\82ð\8am\94F
3936   \83v\83\89\83O\83C\83\93\82ð\97\98\97p\82µ\82È\82¢\82Æ\82±\82ë\82Å\91S\82Ä\82Ì\83\8d\83O\97L\82è\83X\83\8c\83b\83h\82ð\8c\9f\8dõ
3937   è\87\92l\88È\89º\82Ì\83T\83C\83Y\82Ì\8fê\8d\87\81ADAT\82Ì\83t\83@\83C\83\8b\83T\83C\83Y\82Æ\94ä\8ar\81A\82¸\82ê\82Ä\82¢\82ê\82Î\81A
3938   DAT\82Ì\83t\83@\83C\83\8b\83T\83C\83Y\82Å\8dX\90V\82·\82é
3939 }
3940         if MsgBox(GikoForm.Handle, RECALC_MES,
3941                 RECALC_TITLE, MB_YESNO or MB_ICONWARNING) = ID_YES then begin
3942                 //è\87\92l\82Ì\8am\94F
3943                 limitSize := LIMIT_SIZE;
3944                 limitStr  := IntToStr(limitSize);
3945                 if InputQuery('è\87\92l\93ü\97Í', '\8ew\92è\82µ\82½\90\94\92l B\88È\89º\82Ì\97e\97Ê\82Ì\83X\83\8c\83b\83h\82Ì\82Ý\8dÄ\8cv\8eZ\82µ\82Ü\82·', limitStr) then begin
3946                         limitSize := StrToInt(MojuUtils.ZenToHan(limitStr));
3947                         if (limitSize < 0) then begin
3948                                 ShowMessage('è\87\92l\82É\95\89\82Í\8ew\92è\82Å\82«\82Ü\82¹\82ñ\81I');
3949                                 ThreadSizeCalcForFileActionExecute(nil);
3950                         end else begin
3951                                 RecalcThreadSize(limitSize);
3952                         end;
3953                 end;
3954         end;
3955 end;
3956 //! limit\82æ\82è\82à\83T\83C\83Y\82Ì\8f¬\82³\82¢\83X\83\8c\83b\83h\82Ì\97e\97Ê\82ðDAT\83t\83@\83C\83\8b\82©\82ç\8cv\8eZ
3957 procedure TGikoDM.RecalcThreadSize(limit : Integer);
3958 var
3959         i, j, tmpSize : Integer;
3960         Obj   : TObject;
3961         Board : TBoard;
3962         Thread: TThreadItem;
3963         dat   : TStringList;
3964 begin
3965         // \8dÄ\8cv\8eZ\83X\83^\81[\83g\81@\83v\83\89\83O\83C\83\93\82ð\97\98\97p\82µ\82È\82¢\82Æ\82±\82ë\82ð\91S\95\94\8c©\82é\81I
3966         GikoForm.ScreenCursor := crHourGlass;
3967         try
3968                 GikoForm.ProgressBar.Max := BoardGroups[0].Count;
3969                 for i := 0 to BoardGroups[0].Count - 1 do begin
3970                         Obj := BoardGroups[0].Objects[i];
3971                         if (Obj <> nil) then begin
3972                                 Board := TBoard(Obj);
3973                                 if not Board.IsThreadDatRead then begin
3974                                         GikoSys.ReadSubjectFile(Board);
3975                                 end;
3976                                 for j := 0 to Board.Count - 1 do begin
3977                                         Thread := Board.Items[j];
3978                                         if (Thread <> nil) and (Thread.IsLogFile)
3979                                                 and (Thread.Size <= limit) then begin
3980                                                 dat := TStringList.Create;
3981                                                 try
3982                                                         tmpSize := Thread.Size;
3983                                                         try
3984                                                                 dat.LoadFromFile(Thread.GetThreadFileName);
3985                                                                 tmpSize := Length(dat.Text);
3986                                                                 tmpSize := tmpSize - dat.Count;
3987                                                         except
3988                                                         end;
3989                                                         Thread.Size := tmpSize;
3990                                                 finally
3991                                                         dat.Free;
3992                                                 end;
3993                                         end;
3994                                 end;
3995                         end;
3996                         GikoForm.ProgressBar.StepBy(1);
3997                 end;
3998         finally
3999                 GikoForm.ScreenCursor := crDefault;
4000         end;
4001         GikoForm.ProgressBar.Position := 0;
4002         ShowMessage('\8cv\8eZ\8fI\97¹\82µ\82Ü\82µ\82½\81B');
4003 end;
4004 // *************************************************************************
4005 //! \93ü\97Í\83A\83V\83X\83g\82Ì\90Ý\92è\83t\83H\81[\83\80\82ð\8cÄ\82Ñ\8fo\82·
4006 // *************************************************************************
4007 procedure TGikoDM.SetInputAssistActionExecute(Sender: TObject);
4008 var
4009         form : TInputAssistForm;
4010 begin
4011         form := TInputAssistForm.Create(GikoForm);
4012         try
4013                 form.SetUpFromMain;
4014                 form.ShowModal;
4015         finally
4016                 form.Release;
4017         end;
4018 end;
4019 // *************************************************************************
4020 //! \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é
4021 // *************************************************************************
4022 procedure TGikoDM.OpenFindDialogActionExecute(Sender: TObject);
4023 begin
4024         if( GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) then begin
4025         GikoForm.ActiveContent.OpenFindDialog;
4026         end;
4027 end;
4028
4029 // *************************************************************************
4030 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82Ì\95\\8e¦\96¼\82ð\83R\83s\81[\82·\82é
4031 // *************************************************************************
4032 procedure TGikoDM.FavoriteTreeViewItemNameCopyActionExecute(
4033   Sender: TObject);
4034 begin
4035         if GikoForm.ClickNode = nil then Exit;
4036
4037         Clipboard.AsText :=
4038                         GikoForm.ClickNode.Text + #13#10;
4039 end;
4040
4041 // *************************************************************************
4042 //! \95\\8e¦\82³\82ê\82Ä\82¢\82é\82·\82×\82Ä\82Ì\83\8c\83X\83G\83f\83B\83^\82ð\95Â\82\82é
4043 // *************************************************************************
4044 procedure TGikoDM.CloseAllEditorActionExecute(Sender: TObject);
4045 var
4046     i : Integer;
4047 begin
4048     if ( EditorFormExists ) then begin
4049         //\83X\83N\83\8a\81[\83\93\8fã\82Ì\91S\82Ä\82Ì\83t\83H\81[\83\80\82©\82ç\81AEditorForm\82ð\95Â\82\82é
4050             for i := Screen.CustomFormCount - 1 downto 0 do begin
4051                 if TObject(Screen.CustomForms[i]) is TEditorForm then begin
4052                 TEditorForm(Screen.CustomForms[i]).Close;
4053                 end;
4054             end;
4055     end;
4056 end;
4057 // *************************************************************************
4058 //! \83X\83N\83\8a\81[\83\93\8fã\82É\83\8c\83X\83G\83f\83B\83^\82ª\82¢\82½\8fê\8d\87\81C\97L\8cø\82É\82È\82é
4059 // *************************************************************************
4060 procedure TGikoDM.CloseAllEditorActionUpdate(Sender: TObject);
4061 begin
4062     if (Sender is TAction) then begin
4063         TAction(Sender).Enabled := EditorFormExists;
4064     end;
4065 end;
4066 // *************************************************************************
4067 //! \83X\83N\83\8a\81[\83\93\8fã\82ÉEditorForm\82ª\82¢\82é\82©
4068 // *************************************************************************
4069 function TGikoDM.EditorFormExists(): boolean;
4070 var
4071         i : Integer;
4072 begin
4073         Result := false;
4074         //\83X\83N\83\8a\81[\83\93\8fã\82Ì\91S\82Ä\82Ì\83t\83H\81[\83\80\82©\82ç\81AEditorForm\82ð\92T\82·
4075         for i := Screen.CustomFormCount - 1 downto 0 do begin
4076                 if (Screen.CustomForms[i] is TEditorForm) then begin
4077                         Result := true;
4078                         Break;
4079                 end;
4080         end;
4081 end;
4082
4083 // *************************************************************************
4084 //! \83X\83N\83\8a\81[\83\93\8fã\82É\82¢\82é\82·\82×\82Ä\82ÌEditorForm\82©\82ç\96¼\91O\82Ì\97\9a\97ð\82ð\8dí\8f\9c\82·\82é
4085 // *************************************************************************
4086 procedure TGikoDM.ClearNameTextAllEditor();
4087 var
4088         i : Integer;
4089 begin
4090         for i := 0 to Screen.CustomFormCount - 1 do begin
4091                 if (Screen.CustomForms[i] is TEditorForm) then begin
4092                         TEditorForm(Screen.CustomForms[i]).NameComboBox.Items.Clear;
4093         end;
4094         end;
4095 end;
4096 // *************************************************************************
4097 //! \83X\83N\83\8a\81[\83\93\8fã\82É\82¢\82é\82·\82×\82Ä\82ÌEditorForm\82©\82ç\83\81\81[\83\8b\97\9a\97ð\82ð\8dí\8f\9c\82·\82é
4098 // *************************************************************************
4099 procedure TGikoDM.ClearMailAllEditor();
4100 var
4101         i : Integer;
4102 begin
4103         for i := 0 to Screen.CustomFormCount - 1 do begin
4104                 if TObject(Screen.CustomForms[i]) is TEditorForm then
4105                         TEditorForm(Screen.CustomForms[i]).MailComboBox.Items.Clear;
4106         end;
4107 end;
4108
4109 // *************************************************************************
4110 //! \83\8a\83\93\83N\97\9a\97ð\82ð\96ß\82é\82Ì\8dX\90V\8f\88\97\9d
4111 // *************************************************************************
4112 procedure TGikoDM.PrevMoveHistoryUpdate(Sender: TObject);
4113 begin
4114       PrevMoveHistory.Enabled :=
4115           (MoveHisotryManager.HisotryIndex > 0)
4116 end;
4117 // *************************************************************************
4118 //! \83\8a\83\93\83N\97\9a\97ð\82ð\96ß\82é
4119 // *************************************************************************
4120 procedure TGikoDM.PrevMoveHistoryExecute(Sender: TObject);
4121 begin
4122     if ( GikoForm.BrowserTab.TabIndex >= 0 ) then begin
4123         BackToHistory(MoveHisotryManager.getPrevItem
4124             (TBrowserRecord(GikoForm.BrowserTab.Tabs
4125                     .Objects[GikoForm.BrowserTab.TabIndex])));
4126     end else begin
4127         BackToHistory(MoveHisotryManager.getPrevItem( nil ) );
4128     end;
4129 end;
4130 //! \83\8a\83\93\83N\97\9a\97ð\8f\88\97\9d
4131 procedure TGikoDM.BackToHistory(item: TMoveHistoryItem);
4132 var
4133     browser : TWebBrowser;
4134     doc : IHTMLDocument2;
4135 begin
4136     if ( item <> nil ) then begin
4137         if ( GikoForm.GetActiveContent = item.ThreadItem ) then begin
4138             browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4139                 .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4140             if (browser <> nil) then begin
4141                 try
4142                     doc := browser.ControlInterface.Document as IHTMLDocument2;
4143                     (doc.body as IHTMLElement2).ScrollTop := item.ScrollTop;
4144                 except
4145                 end;
4146             end;
4147         end else begin
4148             //URL\82É\88Ú\93®
4149             MoveURLWithHistory(item.ThreadItem.URL, True);
4150         end;
4151     end;
4152 end;
4153 //! \97\9a\97ð\8f\88\97\9d\82Â\82«URL\88Ú\93®
4154 procedure TGikoDM.MoveURLWithHistory(URL : String; KeyMask: Boolean = False);
4155 var
4156     idx : Integer;
4157 begin
4158     //URL\82É\88Ú\93®
4159     GikoForm.MoveToURL(URL, KeyMask);
4160     //\88È\89º\81A\97\9a\97ð\82Ì\8f\88\97\9d
4161     idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
4162     if idx = -1 then begin
4163         GikoForm.AddressComboBox.Items.Insert(0, URL);
4164         if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
4165             GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
4166     end else begin
4167         GikoForm.AddressComboBox.Items.Delete(idx);
4168         GikoForm.AddressComboBox.Items.Insert(0, URL);
4169     end;
4170 end;
4171 // *************************************************************************
4172 //! \83\8a\83\93\83N\97\9a\97ð\82ð\90i\82Þ\82Ì\8dX\90V\8f\88\97\9d
4173 // *************************************************************************
4174 procedure TGikoDM.NextMoveHistoryUpdate(Sender: TObject);
4175 begin
4176     NextMoveHistory.Enabled :=
4177           (MoveHisotryManager.HisotryIndex < MoveHisotryManager.Count - 1);
4178 end;
4179 // *************************************************************************
4180 //! \83\8a\83\93\83N\97\9a\97ð\82ð\90i\82Þ
4181 // *************************************************************************
4182 procedure TGikoDM.NextMoveHistoryExecute(Sender: TObject);
4183 begin
4184     BackToHistory(MoveHisotryManager.getNextItem);
4185 end;
4186 // *************************************************************************
4187 //! \83A\83N\83e\83B\83u\97v\91f\82Ì\83N\83\8a\83b\83N
4188 // *************************************************************************
4189 procedure TGikoDM.ClickActiveElementActionExecute(Sender: TObject);
4190 var
4191     browser : TWebBrowser;
4192     elem : IHTMLElement;
4193     doc : IHTMLDocument2;
4194 begin
4195     if (GikoForm.GetActiveContent <> nil) then begin
4196         if (GikoForm.BrowserTab.Tabs.Count > 0) and
4197             (GikoForm.BrowserTab.TabIndex >= 0) then begin
4198             browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4199                 .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4200             if (browser <> nil) then begin
4201                 try
4202                     doc := browser.ControlInterface.Document as IHTMLDocument2;
4203                     if Assigned(doc) then begin
4204                         elem := doc.activeElement;
4205                         if Assigned(elem) then begin
4206                             elem.click;
4207                         end;
4208                     end;
4209                 except
4210                 end;
4211             end;
4212
4213         end;
4214     end;
4215 end;
4216 //! \81«\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4217 procedure TGikoDM.VKDownActionExecute(Sender: TObject);
4218 begin
4219     keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY, 0);
4220     keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4221 end;
4222 //! \81ª\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4223 procedure TGikoDM.VKUpActionExecute(Sender: TObject);
4224 begin
4225     keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY, 0);
4226     keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4227 end;
4228 //! \81¨\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4229 procedure TGikoDM.VKRightActionExecute(Sender: TObject);
4230 begin
4231     keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY, 0);
4232     keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4233 end;
4234 //! \81©\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4235 procedure TGikoDM.VKLeftActionExecute(Sender: TObject);
4236 begin
4237     keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY, 0);
4238     keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4239 end;
4240 //! \83^\83X\83N\83g\83\8c\83C\82É\8ai\94[\82·\82é
4241 procedure TGikoDM.StoredTaskTrayActionExecute(Sender: TObject);
4242 begin
4243     GikoForm.StoredTaskTray;
4244     StoredTaskTrayAction.Tag := -1;
4245 end;
4246
4247 {
4248 \breif  \83\8a\83\93\83N\83C\83\81\81[\83W\8eæ\93¾
4249 \83C\83\81\81[\83W\82Í\81C*.jpg, *.jpeg, *.gif, *.png
4250 }
4251 procedure TGikoDM.AllImageLinkToClipbordActionExecute(Sender: TObject);
4252 var
4253     links : IHTMLElementCollection;
4254     urls, exts : TStringList;
4255 begin
4256     links := GetActiveThreadLinks;
4257     if (links <> nil) then begin
4258         urls := TStringList.Create;
4259         exts := TStringList.Create;
4260         try
4261             exts.CaseSensitive := False;
4262             exts.Sorted := True;
4263             exts.Delimiter := ';';
4264             exts.DelimitedText := '.gif;.jpg;.jpeg;.png';
4265             GetLinkURLs(links, urls, 0, exts);
4266             Clipboard.SetTextBuf(urls.GetText);
4267         finally
4268             exts.Free;
4269             urls.Free;
4270         end;
4271     end;
4272 end;
4273
4274 {
4275 \breif  \90V\92\85\83\8c\83X\82Ì\83\8a\83\93\83N\83C\83\81\81[\83W\8eæ\93¾
4276 \83C\83\81\81[\83W\82Í\81C*.jpg, *.jpeg, *.gif, *.png
4277 }
4278 procedure TGikoDM.NewImageLinkToClipBoardActionExecute(Sender: TObject);
4279 var
4280     links : IHTMLElementCollection;
4281     urls, exts : TStringList;
4282     ThreadItem : TThreadItem;
4283 begin
4284     ThreadItem := GikoForm.GetActiveContent;
4285     links := GetActiveThreadLinks;
4286     if (ThreadItem <> nil) and (links <> nil) then begin
4287         urls := TStringList.Create;
4288         exts := TStringList.Create;
4289         try
4290             exts.CaseSensitive := False;
4291             exts.Sorted := True;
4292             exts.Delimiter := ';';
4293             exts.DelimitedText := '.gif;.jpg;.jpeg;.png';
4294
4295             GetLinkURLs(links, urls,
4296                 (ThreadItem.Count - ThreadItem.NewResCount + 1), exts );
4297             Clipboard.SetTextBuf(urls.GetText);
4298         finally
4299             exts.Free;
4300             urls.Free;
4301         end;
4302     end;
4303 end;
4304 {
4305 \breif  \83\8a\83\93\83NURL\8eæ\93¾
4306 \91Î\8fÛ\8ag\92£\8eq\82Í\81A\8fÚ\8d×\90Ý\92è\82Å\90Ý\92è\82³\82ê\82Ä\82¢\82é
4307 }
4308 procedure TGikoDM.AllLinkToClipboardActionExecute(Sender: TObject);
4309 var
4310     links : IHTMLElementCollection;
4311     urls, exts : TStringList;
4312 begin
4313     links := GetActiveThreadLinks;
4314     if (links <> nil) then begin
4315         urls := TStringList.Create;
4316         exts := TStringList.Create;
4317         try
4318             exts.CaseSensitive := False;
4319             exts.Sorted := True;
4320             exts.Delimiter := ';';
4321             exts.DelimitedText :=
4322                 MojuUtils.CustomStringReplace(GikoSys.Setting.ExtList, '*', '');
4323             GetLinkURLs(links, urls, 0, exts);
4324             Clipboard.SetTextBuf(urls.GetText);
4325         finally
4326             exts.Free;
4327             urls.Free;
4328         end;
4329     end;
4330 end;
4331 {
4332 \breif  \90V\92\85\83\8c\83X\83\8a\83\93\83NURL\8eæ\93¾
4333 \91Î\8fÛ\8ag\92£\8eq\82Í\81A\8fÚ\8d×\90Ý\92è\82Å\90Ý\92è\82³\82ê\82Ä\82¢\82é
4334 }
4335 procedure TGikoDM.NewLinkToClipboardActionExecute(Sender: TObject);
4336 var
4337     links : IHTMLElementCollection;
4338     urls, exts : TStringList;
4339     ThreadItem : TThreadItem;
4340 begin
4341     ThreadItem := GikoForm.GetActiveContent;
4342     links := GetActiveThreadLinks;
4343     if (ThreadItem <> nil) and (links <> nil) then begin
4344         urls := TStringList.Create;
4345         exts := TStringList.Create;
4346         try
4347             exts.CaseSensitive := False;
4348             exts.Sorted := True;
4349             exts.Delimiter := ';';
4350             exts.DelimitedText :=
4351                 MojuUtils.CustomStringReplace(GikoSys.Setting.ExtList, '*', '');
4352             GetLinkURLs(links, urls,
4353                 (ThreadItem.Count - ThreadItem.NewResCount + 1), exts );
4354             Clipboard.SetTextBuf(urls.GetText);
4355         finally
4356             exts.Free;
4357             urls.Free;
4358         end;
4359     end;
4360 end;
4361
4362 {
4363 \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
4364 \return IHTMLElementCollection  \83\8a\83\93\83N\82Ì\83R\83\8c\83N\83V\83\87\83\93
4365 }
4366 function TGikoDM.GetActiveThreadLinks : IHTMLElementCollection;
4367 var
4368     browser : TWebBrowser;
4369     doc : IHTMLDocument2;
4370 begin
4371     Result := nil;
4372     if (GikoForm.GetActiveContent <> nil) then begin
4373         if (GikoForm.BrowserTab.Tabs.Count > 0) and
4374             (GikoForm.BrowserTab.TabIndex >= 0) then begin
4375             browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4376                 .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4377             if (browser <> nil) then begin
4378                 try
4379                     doc := browser.ControlInterface.Document as IHTMLDocument2;
4380                     if Assigned(doc) then begin
4381                         Result := doc.links;
4382                     end;
4383                 except
4384                     Result := nil;
4385                 end;
4386             end;
4387
4388         end;
4389     end;
4390 end;
4391 {
4392 \brief  \83\8a\83\93\83N\82ÌURL\82ð\8eæ\93¾\82·\82é
4393 \param  links   \8eæ\93¾\82·\82é\83\8a\83\93\83N\82Ì\91S\91Ì\82Ì\83R\83\8c\83N\83V\83\87\83\93
4394 \param  URLs    \8eæ\93¾\82µ\82½URL\82Ì\95Û\91\90æ
4395 \param  Start   \90Ý\92è\82µ\82½\83\8c\83X\94Ô\8d\86\88È\8d~\82ð\8eæ\93¾( > 0)
4396 \param  Exts    \8eæ\93¾\82·\82é\83\8a\83\93\83N\82Ì\8ag\92£\8eq
4397 }
4398 procedure TGikoDM.GetLinkURLs(links : IHTMLElementCollection;
4399         URLs : TStringList; const Start: Integer; Exts : TStringList);
4400 var
4401     index ,i, j : Integer;
4402     item : IHTMLElement;
4403     url, ext : string;
4404 begin
4405     if (links <> nil) then begin
4406         index := 0;
4407         for i := 0 to links.length - 1 do begin
4408             item := links.item(i, 0) as IHTMLElement;
4409             if (item <> nil) then begin
4410                 url := item.getAttribute('href', 0);
4411                 // \83\8c\83X\82Ì\94Ô\8d\86\82ð\8dX\90V
4412                 if (Pos('menu:', url) > 0) then begin
4413                     index := StrToInt64Def(
4414                         Copy(url, 6, Length(url)), index + 1
4415                     );
4416                 end else begin
4417                     // \8aJ\8en\83\8c\83X\94Ô\8d\86\88È\8d~\82©\83`\83F\83b\83N
4418                     if (index >= Start) then begin
4419                         ext := ExtractFileExt( AnsiLowerCase(url) );
4420                         // \8ag\92£\8eq\82ð\83`\83F\83b\83N
4421                         if Exts.Find(ext, j) then begin
4422                             urls.Add(url)
4423                         end;
4424                     end;
4425                 end;
4426             end;
4427         end;
4428     end;
4429 end;
4430 {
4431 \brief  \83A\83h\83\8c\83X\83o\81[\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
4432 \param  Sender   \83C\83x\83\93\83g\82Ì\94­\90\8c³
4433 }
4434 procedure TGikoDM.SetForcusForAddresBarActionExecute(Sender: TObject);
4435 begin
4436     if ( GikoForm.AddressToolBar.Visible ) then begin
4437         GikoForm.AddressComboBox.SetFocus;
4438     end
4439 end;
4440 {
4441 \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é
4442 }
4443 procedure TGikoDM.NewBoardSearchActionExecute(Sender: TObject);
4444 var
4445     form : TNewBoardURLForm;
4446         Msg: string;
4447 begin
4448         if (EditorFormExists) then begin
4449                 Msg := '\83\8c\83X\83G\83f\83B\83^\82ð\91S\82Ä\95Â\82\82Ä\82­\82¾\82³\82¢';
4450                 MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP);
4451                 Exit;
4452         end;
4453     form := TNewBoardURLForm.Create(Self);
4454     try
4455         form.ShowModal;
4456     finally
4457         form.Release;
4458     end;
4459 end;
4460 //! \83u\83\89\83E\83U\82ð1\83y\81[\83W\95ª\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
4461 procedure TGikoDM.ScrollPageDownActionExecute(Sender: TObject);
4462 begin
4463     GikoForm.BrowserMovement(GikoForm.BrowserPanel.Height);
4464 end;
4465 //! \83u\83\89\83E\83U\82ð1\83y\81[\83W\95ª\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
4466 procedure TGikoDM.ScrollPageUpActionExecute(Sender: TObject);
4467 begin
4468     GikoForm.BrowserMovement(-GikoForm.BrowserPanel.Height);
4469 end;
4470
4471
4472 //! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é\81i\93§\96¾)
4473 procedure TGikoDM.AddIDtoNGWord0ActionExecute(Sender: TObject);
4474 begin
4475     GikoForm.AddIDtoNGWord(true);
4476 end;
4477 //! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é
4478 procedure TGikoDM.AddIDtoNGWord1ActionExecute(Sender: TObject);
4479 begin
4480     GikoForm.AddIDtoNGWord(false);
4481 end;
4482 //! \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¦
4483 procedure TGikoDM.ExtractSameIDActionExecute(Sender: TObject);
4484 var
4485     ID: String;
4486 begin
4487     ID := Trim(Clipboard.AsText);
4488     if (Length(ID) > 0) then begin
4489         if not IsNoValidID(ID) then begin
4490             GikoForm.ShowSameIDAncher(ID);
4491         end;
4492     end;
4493 end;
4494 //! \83^\83u\82Ì\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82·\82é
4495 procedure TGikoDM.ShowTabListActionExecute(Sender: TObject);
4496 var
4497     i : Integer;
4498 begin
4499     GikoForm.ListView.Items.BeginUpdate;
4500     GikoForm.ListView.Items.Clear;
4501     BoardGroup.SpecialBoard.Clear;
4502         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
4503         BoardGroup.SpecialBoard.Add(
4504                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Thread);
4505         end;
4506     GikoForm.ListView.Items.EndUpdate;
4507     GikoForm.SetActiveList(BoardGroup.SpecialBoard);
4508 end;
4509 //! \8bt\8eQ\8fÆ\82µ\82Ä\82¢\82é\83\8c\83X\82ð\92Ç\89Á\82·\82é
4510 procedure TGikoDM.DereferenceResActionExecute(Sender: TObject);
4511 var
4512         i, currentNo, No : Integer;
4513     links : IHTMLElementCollection;
4514     threadItem : TThreadItem;
4515     item : IHTMLElement;
4516     url, url2 : string;
4517     resNo : TStringList;
4518     alreadyExist : Boolean;
4519         PathRec: TPathRec;
4520 begin
4521         No := GikoForm.KokoPopupMenu.Tag;
4522         if No = 0 then Exit;
4523
4524     ThreadItem := GikoForm.KokoPopupThreadItem;
4525     // \83A\83N\83e\83B\83u\83^\83u\82©\82ç\91S\82Ä\82Ì\83\8a\83\93\83N\82ð\8eæ\93¾\82·\82é
4526     links := GetActiveThreadLinks;
4527     if (ThreadItem <> nil) and (links <> nil) then begin
4528         resNo := TStringList.Create;
4529         try
4530             currentNo := 0;
4531             alreadyExist := False;
4532             // \83\8a\83\93\83N\82ð\91S\82Ä\91\96\8d¸\82·\82é
4533             for i := 0 to links.length - 1 do begin
4534                 item := links.item(i, 0) as IHTMLElement;
4535                 if (item <> nil) then begin
4536                     url := item.getAttribute('href', 0);
4537                     // \83\8c\83X\82Ì\94Ô\8d\86\82ð\8dX\90V
4538                     if (Pos('menu:', url) > 0) then begin
4539                         currentNo := StrToInt64Def(
4540                             Copy(url, 6, Length(url)), currentNo + 1
4541                         );
4542                         alreadyExist := False;
4543                     end else if (currentNo <> -1) and (not alreadyExist) then begin
4544                         // IE7\91Î\89\9e
4545                         if Pos('about:..', url) = 1 then begin
4546                             url := 'about:blank..' + Copy( url, Length('about:..')+1, Length(url) )
4547                         end;
4548                         // \8e©\95ª\82Ö\82Ì\83\8a\83\93\83N\82©\82ç\83\8c\83X\83|\83b\83v\97p\82Ì\94Ô\8d\86\8eæ\93¾
4549                         if Pos('about:blank..', url) = 1 then begin
4550                             // No \94Ô\82Ö\82Ì\83\8a\83\93\83N\82ª\82 \82ê\82Î\8eQ\8fÆ\82 \82è
4551                             url2 := THTMLCreate.GetRespopupURL(url, ThreadItem.URL);
4552                                         PathRec := Gikosys.Parse2chURL2(url2);
4553                             if (not PathRec.FNoParam) then begin
4554                                 Gikosys.GetPopupResNumber(url2,PathRec.FSt,PathRec.FTo);
4555                                         end;
4556                             // \91Î\8fÛ\83\8c\83X\82à\82µ\82­\82Í\82»\82ê\82ð\8aÜ\82Þ\82È\82ç\8eQ\8fÆ\82 \82è\82Æ\82·\82é
4557                             if (PathRec.FSt = No) or
4558                                 ((PathRec.FSt <= No) and (PathRec.FTo >= No))  then begin
4559                                 alreadyExist := True;
4560                                 resNo.Add(IntToStr(currentNo));
4561                             end;
4562                         end;
4563                     end;
4564                 end;
4565             end;
4566             // \96³\90§\8cÀ\82È\82Ì\82Å-1\8cÅ\92è
4567             GikoForm.ActiveContent.IDAnchorPopup(
4568                 GikoSys.CreateResAnchor(resNo, ThreadItem, -1));
4569         finally
4570             resNo.Clear;
4571             resNo.Free;
4572         end;
4573     end;
4574 end;
4575
4576 procedure TGikoDM.UpdateGikonaviActionExecute(Sender: TObject);
4577 var
4578     form : TUpdateCheckForm;
4579         Msg: string;
4580     shutdown: boolean;
4581 begin
4582         if (EditorFormExists) then begin
4583                 Msg := '\83\8c\83X\83G\83f\83B\83^\82ð\91S\82Ä\95Â\82\82Ä\82­\82¾\82³\82¢';
4584                 MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP);
4585                 Exit;
4586         end;
4587     GikoForm.UpdateExePath := '';
4588     GikoForm.UpdateExeArgs := '';
4589     form := TUpdateCheckForm.Create(Self);
4590     try
4591         form.ShowModal;
4592         shutdown := form.Allowshutdown;
4593         if shutdown then begin
4594             GikoForm.UpdateExePath := form.ExecPath;
4595             GikoForm.UpdateExeArgs := form.ExecArgs;
4596         end;
4597     finally
4598         form.Release;
4599     end;
4600     if shutdown then begin
4601         // \83M\83R\83i\83r\8fI\97¹
4602         GikoForm.Close;
4603     end;
4604
4605 end;
4606 //! \82±\82Ì\83\8c\83X\82ÌURL\83R\83s\81[\81iPATH_INFO)
4607 procedure TGikoDM.konoURLPATHActionExecute(Sender: TObject);
4608 var
4609     No : Integer;
4610     ThreadItem : TThreadItem;
4611     URL, Protocol, Host, Path, Document, Port, Bookmark : String;
4612 begin
4613         No := GikoForm.KokoPopupMenu.Tag;
4614         if No = 0 then Exit;
4615
4616     ThreadItem := GikoForm.KokoPopupThreadItem;
4617     if (ThreadItem.ParentBoard.Is2ch) or not (Pos('?', ThreadItem.URL) > 0) then begin
4618         GikoSys.ParseURI(ThreadItem.URL,Protocol, Host, Path, Document, Port, Bookmark);
4619         URL := Protocol + '://' + Host + Path + IntToStr(No);
4620     end else begin
4621         if Pos('?', ThreadItem.URL) > 0 then begin
4622             URL := Copy(ThreadItem.URL, 1, Pos('?', ThreadItem.URL)-1);
4623             // \82Ü\82¿BBS\97p\8f\88\92u
4624             URL := MojuUtils.CustomStringReplace(URL, 'read.pl', 'read.cgi');
4625             URL := URL + '/' + ThreadItem.ParentBoard.BBSID + '/' + ChangeFileExt(ThreadItem.FileName, '')  + '/' + IntToStr(No);
4626         end;
4627     end;
4628     Clipboard.SetTextBuf( PChar(URL) );
4629 end;
4630 //! \82±\82Ì\83\8c\83X\82ÌURL\83R\83s\81[\81iQuery_STRING)
4631 procedure TGikoDM.konoURLQueryActionExecute(Sender: TObject);
4632 var
4633     No : Integer;
4634     ThreadItem : TThreadItem;
4635     URL, Protocol, Host, Path, Document, Port, Bookmark : String;
4636 begin
4637         No := GikoForm.KokoPopupMenu.Tag;
4638         if No = 0 then Exit;
4639
4640     ThreadItem := GikoForm.KokoPopupThreadItem;
4641     // 2ch\82Æ\82µ\82½\82ç\82Î\82Í\81A\83\8c\83X\94Ô\8d\86\82ð\82¤\82Ü\82­\8f\88\97\9d\82µ\82Ä\82­\82ê\82È\82¢\82Ì\82Å\97\98\97p\95s\89Â
4642     if ThreadItem.ParentBoard.Is2ch or not (Pos('?', ThreadItem.URL) > 0) then begin
4643         GikoSys.ParseURI(ThreadItem.URL, Protocol, Host, Path, Document, Port, Bookmark);
4644         URL := Protocol + '://' + Host + '/test/read.cgi?bbs=' + ThreadItem.ParentBoard.BBSID
4645             + '&key=' + ChangeFileExt(ThreadItem.FileName, '') + '&st=' + IntToStr(No) + '&to=' + IntToStr(No);
4646     end else begin
4647         URL := ThreadItem.URL;
4648         // \82Ü\82¿BBS
4649         if Pos('&LAST=', URL) > 0 then begin
4650             URL := Copy(URL, 1, Pos('&LAST=', URL) - 1);
4651             URL := URL + '&START=' + IntToStr(No) + '&END=' + IntToStr(No);
4652         end;
4653         // \82»\82Ì\91¼\8aO\95\94\94Â
4654         if Pos('&ls=', URL) > 0 then begin
4655             URL := Copy(URL, 1, Pos('&ls=', URL) - 1);
4656             URL := URL + '&st=' + IntToStr(No) + '&to=' + IntToStr(No);
4657         end;
4658
4659     end;
4660     Clipboard.SetTextBuf( PChar(URL) );
4661 end;
4662 //! \82±\82Ì\83\8c\83X\82ÌURL\83R\83s\81[\81iQuery_STRING\81j\82Ì\97\98\97p\83`\83F\83b\83N
4663 procedure TGikoDM.konoURLQueryActionUpdate(Sender: TObject);
4664 const
4665         LIVEDOOR_URL = 'http://jbbs.livedoor.jp/';
4666 begin
4667     // 2ch\82Æ\82µ\82½\82ç\82Î\82Í\97\98\97p\82Å\82«\82È\82¢\82æ\82¤\82É\82·\82é\81i\82¤\82Ü\82­\83\8c\83X\8ew\92è\82Å\82«\82È\82¢\82Ì\82Å\81j
4668     konoURLQueryAction.Enabled := false;
4669     if (GikoForm.KokoPopupThreadItem <> nil) then begin
4670         konoURLQueryAction.Enabled := not GikoForm.KokoPopupThreadItem.ParentBoard.Is2ch;
4671         if konoURLQueryAction.Enabled then begin
4672             konoURLQueryAction.Enabled := not (Pos(LIVEDOOR_URL, GikoForm.KokoPopupThreadItem.URL) = 1);
4673         end;
4674     end;
4675 end;
4676 //! \83|\83b\83v\83A\83b\83v\83\81\83j\83\85\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
4677 procedure TGikoDM.PopupMenuSettingActionExecute(Sender: TObject);
4678 var
4679         Dlg: TPopupMenuSettingDialog;
4680 begin
4681         Dlg := TPopupMenuSettingDialog.Create(GikoForm, GikoFormActionList);
4682         try
4683                 Dlg.ShowModal;
4684         finally
4685                 Dlg.Release;
4686         end;
4687 end;
4688
4689 end.
4690