OSDN Git Service

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