Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/GikoDataModule.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.14 - (hide annotations) (download) (as text)
Sun Nov 27 15:51:34 2005 UTC (18 years, 4 months ago) by h677
Branch: MAIN
Changes since 1.13: +1 -1 lines
File MIME type: text/x-pascal
TBrowserRecordを別ファイルに追い出した。

1 h677 1.1 unit GikoDataModule;
2    
3     interface
4    
5     uses
6 h677 1.2 SysUtils, Classes, ExtActns, StdActns, ActnList, ImgList, Controls,
7 h677 1.6 {$IF Defined(DELPRO) }
8     SHDocVw,
9     MSHTML,
10     {$ELSE}
11     SHDocVw_TLB,
12     MSHTML_TLB,
13     {$IFEND}
14 h677 1.14 ComCtrls, BrowserRecord;
15 h677 1.1
16 h677 1.11
17 h677 1.1 type
18     TGikoDM = class(TDataModule)
19 h677 1.6 GikoFormActionList: TActionList;
20     OnlyAHundredResAction: TAction;
21     OnlyKokoResAction: TAction;
22     LoginAction: TAction;
23     NewBoardAction: TAction;
24     LogDeleteAction: TAction;
25     KidokuAction: TAction;
26     StdToolBarVisibleAction: TAction;
27     AddressBarVisibleAction: TAction;
28     LinkBarVisibleAction: TAction;
29 h677 1.4 ListToolBarVisibleAction: TAction;
30 h677 1.6 SearchAction: TAction;
31     GikoNaviWebPageAction: TAction;
32     MonazillaWebPageAction: TAction;
33     BBS2chWebPageAction: TAction;
34     GikoFolderOpenAction: TAction;
35     AboutAction: TAction;
36     SelectTextClearAction: TAction;
37     NameTextClearAction: TAction;
38     MailTextClearAction: TAction;
39     ExitAction: TAction;
40     ListNameBarVisibleAction: TAction;
41     BrowserToolBarVisibleAction: TAction;
42     BrowserNameBarVisibleAction: TAction;
43     MsgBarVisibleAction: TAction;
44     MsgBarCloseAction: TAction;
45     StatusBarVisibleAction: TAction;
46     CabinetBBSAction: TAction;
47     CabinetHistoryAction: TAction;
48     OnlyNewResAction: TAction;
49 h677 1.4 CabinetFavoriteAction: TAction;
50 h677 1.6 CabinetVisibleAction: TAction;
51     ListNumberVisibleAction: TAction;
52     UpFolderAction: TAction;
53     CabinetCloseAction: TAction;
54     IconStyle: TAction;
55     LargeIconAction: TAction;
56     SmallIconAction: TAction;
57     ListIconAction: TAction;
58     DetailIconAction: TAction;
59     MidokuAction: TAction;
60     AllSelectAction: TAction;
61     AllItemAction: TAction;
62     LogItemAction: TAction;
63     NewItemAction: TAction;
64     ThreadRangeAction: TAction;
65     SelectItemAction: TAction;
66     StopAction: TAction;
67     OptionAction: TAction;
68     RoundAction: TAction;
69 h677 1.4 BrowserMaxAction: TAction;
70 h677 1.6 BrowserMinAction: TAction;
71     ScrollTopAction: TAction;
72     ScrollLastAction: TAction;
73     ScrollNewAction: TAction;
74     ScrollKokoAction: TAction;
75     EditorAction: TAction;
76     IEAction: TAction;
77     ShowThreadAction: TAction;
78     ShowBoardAction: TAction;
79     URLCopyAction: TAction;
80     NameCopyAction: TAction;
81     NameURLCopyAction: TAction;
82     ItemReloadAction: TAction;
83     ThreadEditorAction: TAction;
84     BoardIEAction: TAction;
85     SelectItemURLCopyAction: TAction;
86     SelectItemNameCopyAction: TAction;
87     SelectItemNameURLCopyAction: TAction;
88     SelectListReloadAction: TAction;
89 h677 1.4 SelectThreadReloadAction: TAction;
90 h677 1.6 BrowserTabCloseAction: TAction;
91     NotSelectTabCloseAction: TAction;
92     AllTabCloseAction: TAction;
93     KokomadeAction: TAction;
94     ZenbuAction: TAction;
95     KokoResAction: TAction;
96     TreeSelectBoradReload: TAction;
97     TreeSelectThreadReload: TAction;
98     TreeSelectURLCopy: TAction;
99     SelectReservAction: TAction;
100     SelectNewRoundName: TAction;
101     SelectDeleteRound: TAction;
102     KeySettingAction: TAction;
103     ArrangeAction: TAction;
104     ActiveLogDeleteAction: TAction;
105     TreeSelectNameURLCopy: TAction;
106     PaneInitAction: TAction;
107     LeftmostTabSelectAction: TAction;
108     LeftTabSelectAction: TAction;
109 h677 1.4 RightTabSelectAction: TAction;
110 h677 1.6 RightmostTabSelectAction: TAction;
111     FavoriteAddAction: TAction;
112     BoardFavoriteAddAction: TAction;
113     ThreadFavoriteAddAction: TAction;
114     TreeSelectFavoriteAddAction: TAction;
115     FavoriteArrangeAction: TAction;
116     MoveToAction: TAction;
117     BrowserTabVisibleAction: TAction;
118     BrowserTabTopAction: TAction;
119     BrowserTabBottomAction: TAction;
120     BrowserTabTabStyleAction: TAction;
121     BrowserTabButtonStyleAction: TAction;
122     BrowserTabFlatStyleAction: TAction;
123     GikoHelpAction: TAction;
124     KotehanAction: TAction;
125     ToolBarSettingAction: TAction;
126     SelectResAction: TAction;
127     AllResAction: TAction;
128     EditNGAction: TAction;
129 h677 1.4 ReloadAction: TAction;
130 h677 1.6 GoFowardAction: TAction;
131     GoBackAction: TAction;
132     TreeSelectSearchBoardName: TAction;
133     FavoriteTreeViewRenameAction: TAction;
134     FavoriteTreeViewNewFolderAction: TAction;
135     FavoriteTreeViewDeleteAction: TAction;
136     FavoriteTreeViewBrowseFolderAction: TAction;
137     FavoriteTreeViewReloadAction: TAction;
138     FavoriteTreeViewURLCopyAction: TAction;
139     FavoriteTreeViewNameCopyAction: TAction;
140     FavoriteTreeViewNameURLCopyAction: TAction;
141     FavoriteTreeViewLogDeleteAction: TAction;
142     ResRangeAction: TAction;
143     ExportFavoriteFile: TFileSaveAs;
144     FavoriteTreeViewBrowseBoardAction: TAction;
145     FavoriteTreeViewBrowseThreadAction: TAction;
146     UpBoardAction: TAction;
147     KoreCopy: TAction;
148     TreeSelectNameCopy: TAction;
149 h677 1.4 SetFocusForBrowserAction: TAction;
150 h677 1.6 SetFocusForThreadListAction: TAction;
151     SetFocusForCabinetAction: TAction;
152     FileRun1: TFileRun;
153     ThreadlistMaxAndFocusAction: TAction;
154     BrowserMaxAndFocusAction: TAction;
155     SelectItemSaveForHTML: TAction;
156     SelectItemSaveForDat: TAction;
157     FileSaveAs1: TFileSaveAs;
158     LogFolderOpenAction: TAction;
159     TabsSaveAction: TAction;
160     TabsOpenAction: TAction;
161     BrowsBoradHeadAction: TAction;
162     TabAutoSaveAction: TAction;
163     TabAutoLoadAction: TAction;
164     JumpToNumOfResAction: TAction;
165     FavoriteTreeViewCollapseAction: TAction;
166     RightTabCloseAction: TAction;
167     LeftTabCloseAction: TAction;
168     SameIDResAnchorAction: TAction;
169 h677 1.4 IndividualAbon1Action: TAction;
170 h677 1.6 IndividualAbon0Action: TAction;
171     AntiIndividualAbonAction: TAction;
172     AntiIndividualAbonDlgAction: TAction;
173     IndividualAbonID1Action: TAction;
174     IndividualAbonID0Action: TAction;
175     MuteAction: TAction;
176     SortActiveColumnAction: TAction;
177     SortNextColumnAction: TAction;
178     SortPrevColumnAction: TAction;
179     BeLogInOutAction: TAction;
180     UnSelectedListViewAction: TAction;
181     WikiFAQWebPageAction: TAction;
182     ToobarImageList: TImageList;
183     procedure EditNGActionExecute(Sender: TObject);
184     procedure ReloadActionExecute(Sender: TObject);
185     procedure GoFowardActionExecute(Sender: TObject);
186     procedure GoBackActionExecute(Sender: TObject);
187     procedure MoveToActionExecute(Sender: TObject);
188     procedure FavoriteAddActionExecute(Sender: TObject);
189 h677 1.4 procedure FavoriteArrangeActionExecute(Sender: TObject);
190 h677 1.6 procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject);
191     procedure FavoriteTreeViewRenameActionExecute(Sender: TObject);
192     procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
193     procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject);
194     procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject);
195     procedure FavoriteTreeViewReloadActionExecute(Sender: TObject);
196     procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
197     procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
198     procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
199     procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
200     procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject);
201     procedure OnlyAHundredResActionExecute(Sender: TObject);
202     procedure OnlyKokoResActionExecute(Sender: TObject);
203     procedure OnlyNewResActionExecute(Sender: TObject);
204     procedure BrowserMaxActionExecute(Sender: TObject);
205     procedure BrowserMinActionExecute(Sender: TObject);
206     procedure ScrollTopActionExecute(Sender: TObject);
207     procedure ScrollLastActionExecute(Sender: TObject);
208     procedure ScrollNewActionExecute(Sender: TObject);
209 h677 1.4 procedure ScrollKokoActionExecute(Sender: TObject);
210 h677 1.6 procedure ScrollKokoActionUpdate(Sender: TObject);
211     procedure EditorActionExecute(Sender: TObject);
212     procedure IEActionExecute(Sender: TObject);
213     procedure ShowThreadActionExecute(Sender: TObject);
214     procedure ShowBoardActionExecute(Sender: TObject);
215     procedure URLCopyActionExecute(Sender: TObject);
216     procedure NameCopyActionExecute(Sender: TObject);
217     procedure NameURLCopyActionExecute(Sender: TObject);
218     procedure ItemReloadActionExecute(Sender: TObject);
219     procedure BrowserTabCloseActionExecute(Sender: TObject);
220     procedure BrowserTabCloseActionUpdate(Sender: TObject);
221     procedure NotSelectTabCloseActionExecute(Sender: TObject);
222     procedure NotSelectTabCloseActionUpdate(Sender: TObject);
223     procedure AllTabCloseActionExecute(Sender: TObject);
224     procedure ActiveLogDeleteActionExecute(Sender: TObject);
225     procedure LeftmostTabSelectActionExecute(Sender: TObject);
226     procedure LeftmostTabSelectActionUpdate(Sender: TObject);
227     procedure LeftTabSelectActionExecute(Sender: TObject);
228     procedure RightTabSelectActionExecute(Sender: TObject);
229 h677 1.4 procedure RightTabSelectActionUpdate(Sender: TObject);
230 h677 1.6 procedure RightmostTabSelectActionExecute(Sender: TObject);
231     procedure ThreadFavoriteAddActionExecute(Sender: TObject);
232     procedure ThreadFavoriteAddActionUpdate(Sender: TObject);
233     procedure SelectResActionExecute(Sender: TObject);
234     procedure AllResActionExecute(Sender: TObject);
235     procedure ResRangeActionExecute(Sender: TObject);
236     procedure UpBoardActionExecute(Sender: TObject);
237     procedure JumpToNumOfResActionExecute(Sender: TObject);
238     procedure RightTabCloseActionExecute(Sender: TObject);
239     procedure RightTabCloseActionUpdate(Sender: TObject);
240     procedure LeftTabCloseActionExecute(Sender: TObject);
241     procedure DataModuleCreate(Sender: TObject);
242     procedure SearchActionExecute(Sender: TObject);
243     procedure OptionActionExecute(Sender: TObject);
244     procedure RoundActionExecute(Sender: TObject);
245     procedure KeySettingActionExecute(Sender: TObject);
246     procedure KotehanActionExecute(Sender: TObject);
247     procedure ToolBarSettingActionExecute(Sender: TObject);
248     procedure MuteActionExecute(Sender: TObject);
249     procedure TreeSelectBoradReloadExecute(Sender: TObject);
250     procedure TreeSelectThreadReloadExecute(Sender: TObject);
251     procedure TreeSelectURLCopyExecute(Sender: TObject);
252     procedure TreeSelectNameURLCopyExecute(Sender: TObject);
253     procedure TreeSelectFavoriteAddActionExecute(Sender: TObject);
254     procedure TreeSelectSearchBoardNameExecute(Sender: TObject);
255     procedure TreeSelectNameCopyExecute(Sender: TObject);
256     procedure LoginActionExecute(Sender: TObject);
257     procedure NewBoardActionExecute(Sender: TObject);
258     procedure LogDeleteActionExecute(Sender: TObject);
259     procedure LogDeleteActionUpdate(Sender: TObject);
260     procedure SelectTextClearActionExecute(Sender: TObject);
261     procedure NameTextClearActionExecute(Sender: TObject);
262     procedure MailTextClearActionExecute(Sender: TObject);
263     procedure ExitActionExecute(Sender: TObject);
264     procedure ExportFavoriteFileBeforeExecute(Sender: TObject);
265     procedure ExportFavoriteFileAccept(Sender: TObject);
266     procedure SelectItemSaveForHTMLExecute(Sender: TObject);
267     procedure SelectItemSaveForDatExecute(Sender: TObject);
268     procedure TabsSaveActionExecute(Sender: TObject);
269     procedure TabsOpenActionExecute(Sender: TObject);
270     procedure TabAutoSaveActionExecute(Sender: TObject);
271     procedure TabAutoLoadActionExecute(Sender: TObject);
272     procedure BeLogInOutActionExecute(Sender: TObject);
273     procedure BeLogInOutActionUpdate(Sender: TObject);
274     procedure KokomadeActionExecute(Sender: TObject);
275     procedure ZenbuActionExecute(Sender: TObject);
276     procedure KokoResActionExecute(Sender: TObject);
277     procedure KoreCopyExecute(Sender: TObject);
278     procedure SameIDResAnchorActionExecute(Sender: TObject);
279     procedure IndividualAbon1ActionExecute(Sender: TObject);
280     procedure IndividualAbon0ActionExecute(Sender: TObject);
281     procedure AntiIndividualAbonActionExecute(Sender: TObject);
282     procedure AntiIndividualAbonDlgActionExecute(Sender: TObject);
283     procedure IndividualAbonID1ActionExecute(Sender: TObject);
284     procedure IndividualAbonID0ActionExecute(Sender: TObject);
285     procedure GikoNaviWebPageActionExecute(Sender: TObject);
286 h677 1.7 procedure MonazillaWebPageActionExecute(Sender: TObject);
287     procedure BBS2chWebPageActionExecute(Sender: TObject);
288     procedure GikoFolderOpenActionExecute(Sender: TObject);
289     procedure AboutActionExecute(Sender: TObject);
290     procedure GikoHelpActionExecute(Sender: TObject);
291     procedure WikiFAQWebPageActionExecute(Sender: TObject);
292     procedure ListNumberVisibleActionExecute(Sender: TObject);
293     procedure UpFolderActionExecute(Sender: TObject);
294     procedure UpFolderActionUpdate(Sender: TObject);
295     procedure IconStyleExecute(Sender: TObject);
296     procedure AllItemActionExecute(Sender: TObject);
297     procedure LogItemActionExecute(Sender: TObject);
298     procedure NewItemActionExecute(Sender: TObject);
299     procedure ThreadRangeActionExecute(Sender: TObject);
300     procedure SelectItemActionExecute(Sender: TObject);
301     procedure ThreadEditorActionExecute(Sender: TObject);
302     procedure BoardIEActionExecute(Sender: TObject);
303     procedure SelectItemURLCopyActionExecute(Sender: TObject);
304     procedure SelectItemURLCopyActionUpdate(Sender: TObject);
305     procedure SelectItemNameCopyActionExecute(Sender: TObject);
306     procedure SelectItemNameCopyActionUpdate(Sender: TObject);
307     procedure SelectItemNameURLCopyActionExecute(Sender: TObject);
308     procedure SelectListReloadActionExecute(Sender: TObject);
309     procedure SelectListReloadActionUpdate(Sender: TObject);
310     procedure SelectThreadReloadActionExecute(Sender: TObject);
311     procedure SelectThreadReloadActionUpdate(Sender: TObject);
312     procedure SelectReservActionExecute(Sender: TObject);
313     procedure SelectReservActionUpdate(Sender: TObject);
314     procedure SelectNewRoundNameExecute(Sender: TObject);
315     procedure SelectDeleteRoundExecute(Sender: TObject);
316     procedure BoardFavoriteAddActionExecute(Sender: TObject);
317     procedure BoardFavoriteAddActionUpdate(Sender: TObject);
318     procedure LogFolderOpenActionExecute(Sender: TObject);
319     procedure LogFolderOpenActionUpdate(Sender: TObject);
320     procedure BrowsBoradHeadActionExecute(Sender: TObject);
321     procedure SortActiveColumnActionExecute(Sender: TObject);
322 h677 1.11 procedure SortNextColumnActionExecute(Sender: TObject);
323     procedure SortPrevColumnActionExecute(Sender: TObject);
324     procedure StdToolBarVisibleActionExecute(Sender: TObject);
325     procedure AddressBarVisibleActionExecute(Sender: TObject);
326     procedure LinkBarVisibleActionExecute(Sender: TObject);
327     procedure ListToolBarVisibleActionExecute(Sender: TObject);
328     procedure ListNameBarVisibleActionExecute(Sender: TObject);
329     procedure BrowserToolBarVisibleActionExecute(Sender: TObject);
330     procedure BrowserNameBarVisibleActionExecute(Sender: TObject);
331     procedure MsgBarVisibleActionExecute(Sender: TObject);
332     procedure MsgBarCloseActionExecute(Sender: TObject);
333     procedure StatusBarVisibleActionExecute(Sender: TObject);
334     procedure CabinetBBSActionExecute(Sender: TObject);
335     procedure CabinetHistoryActionExecute(Sender: TObject);
336     procedure CabinetFavoriteActionExecute(Sender: TObject);
337     procedure CabinetVisibleActionExecute(Sender: TObject);
338     procedure CabinetCloseActionExecute(Sender: TObject);
339     procedure LargeIconActionExecute(Sender: TObject);
340     procedure SmallIconActionExecute(Sender: TObject);
341     procedure ListIconActionExecute(Sender: TObject);
342     procedure DetailIconActionExecute(Sender: TObject);
343     procedure StopActionExecute(Sender: TObject);
344     procedure ArrangeActionExecute(Sender: TObject);
345     procedure PaneInitActionExecute(Sender: TObject);
346     procedure BrowserTabVisibleActionExecute(Sender: TObject);
347     procedure BrowserTabTopActionExecute(Sender: TObject);
348     procedure BrowserTabBottomActionExecute(Sender: TObject);
349     procedure BrowserTabTabStyleActionExecute(Sender: TObject);
350     procedure BrowserTabButtonStyleActionExecute(Sender: TObject);
351     procedure BrowserTabFlatStyleActionExecute(Sender: TObject);
352     procedure SetFocusForBrowserActionExecute(Sender: TObject);
353     procedure SetFocusForBrowserActionUpdate(Sender: TObject);
354     procedure SetFocusForThreadListActionExecute(Sender: TObject);
355     procedure SetFocusForCabinetActionExecute(Sender: TObject);
356     procedure SetFocusForCabinetActionUpdate(Sender: TObject);
357     procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
358     procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
359     procedure UnSelectedListViewActionExecute(Sender: TObject);
360     procedure KidokuActionExecute(Sender: TObject);
361     procedure MidokuActionExecute(Sender: TObject);
362     procedure AllSelectActionExecute(Sender: TObject);
363     procedure AllSelectActionUpdate(Sender: TObject);
364 h677 1.1 private
365     { Private 鐃緒申鐃緒申 }
366     public
367     { Public 鐃緒申鐃緒申 }
368     published
369     { Published 鐃緒申鐃緒申 }
370 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
371 h677 1.1 procedure DependActiveCntentActionUpdate(Sender: TObject);
372 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
373 h677 1.2 procedure DependActiveCntentLogActionUpdate(Sender: TObject);
374 yoffy 1.9 //! TAction鐃緒申ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
375 h677 1.2 procedure DependActiveListTBoardActionUpdate(Sender: TObject);
376 h677 1.1 end;
377    
378     var
379     GikoDM: TGikoDM;
380    
381 h677 1.11
382 h677 1.1 implementation
383    
384     uses
385 h677 1.6 Windows, Math, Messages, Dialogs, Clipbrd,
386 h677 1.3 Giko, GikoSystem, GikoUtil, BoardGroup,
387     FavoriteArrange, Favorite, Setting, MojuUtils,
388 h677 1.4 Editor, ListSelect, Search, Option, Round,
389     KeySetting, Gesture, Kotehan, ToolBarSetting,
390 h677 1.6 ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon,
391 h677 1.7 GikoBayesian, About, ShellAPI, Graphics,
392 h677 1.8 RoundName, RoundData, Menus, ListViewUtils,
393     ThreadControl;
394 h677 1.1
395     const
396 h677 1.3 CAPTION_NAME: string = '鐃?鐃?鐃?鐃?';
397 h677 1.1 USER_SETLINKBAR = WM_USER + 2003;
398 h677 1.7
399 yoffy 1.9 ITEM_ICON_SORT1 = 12; //!< 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申
400     ITEM_ICON_SORT2 = 13; //!< 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申
401 h677 1.7
402 h677 1.3 //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
403 yoffy 1.9 TOOL_ICON_HEIGHT_MAX = 16; //!< 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
404     TOOL_ICON_HEIGHT_MIN = 17; //!< 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
405     TOOL_ICON_HEIGHT_NORMAL = 18; //!< 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
406     TOOL_ICON_WIDTH_MAX = 19; //!< 鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
407     TOOL_ICON_WIDTH_MIN = 20; //!< 鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
408     TOOL_ICON_WIDTH_NORMAL = 21; //!< 鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
409    
410     TOOL_ICON_FAV_FOLDER = 30; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申
411     TOOL_ICON_FAV_BOARD = 31; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
412     TOOL_ICON_FAV_THREAD = 32; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
413 h677 1.3
414 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申URL
415 h677 1.6 URL_GIKONAVI: string = 'http://gikonavi.sourceforge.jp/';
416 yoffy 1.9 //! Monazilla鐃?鐃?鐃?鐃緒申URL
417 h677 1.6 URL_MONAZILLA: string = 'http://www.monazilla.org/';
418 yoffy 1.9 //! 2鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申URL
419 h677 1.6 URL_2ch: string = 'http://www.2ch.net/';
420 yoffy 1.9 //! 鐃?鐃?鐃?鐃?Wiki鐃緒申URL
421 h677 1.6 URL_Wiki: string = 'http://gikowiki.dyndns.info/index.php?FAQ';
422    
423 h677 1.7 SELECTCOMBOBOX_NAME: string = ''; // '鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申';
424     SELECTCOMBOBOX_COLOR: TColor = clWindow;
425    
426 h677 1.1 {$R *.dfm}
427     // *************************************************************************
428 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
429 h677 1.2 // *************************************************************************
430     procedure TGikoDM.DependActiveCntentActionUpdate(Sender: TObject);
431     begin
432     TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil);
433     end;
434     // *************************************************************************
435 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
436 h677 1.2 // *************************************************************************
437     procedure TGikoDM.DependActiveCntentLogActionUpdate(Sender: TObject);
438     begin
439     TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil)
440     and (GikoForm.GetActiveContent.IsLogFile);
441     end;
442     // *************************************************************************
443 yoffy 1.9 //! TAction鐃緒申ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
444 h677 1.2 // *************************************************************************
445     procedure TGikoDM.DependActiveListTBoardActionUpdate(Sender: TObject);
446     begin
447     TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard);
448     end;
449     // *************************************************************************
450 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃?
451 h677 1.1 // *************************************************************************
452     procedure TGikoDM.EditNGActionExecute(Sender: TObject);
453     begin
454     //鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
455     GikoSys.FAbon.EditNGwords;
456     end;
457     // *************************************************************************
458 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
459 h677 1.1 // *************************************************************************
460     procedure TGikoDM.ReloadActionExecute(Sender: TObject);
461     begin
462     //鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
463     if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
464     MsgBox(GikoForm.Handle, 'NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
465     end else begin
466     //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
467     GikoForm.RepaintAllTabsBrowser();
468     end;
469     end;
470     // *************************************************************************
471 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
472 h677 1.1 // *************************************************************************
473     procedure TGikoDM.GoFowardActionExecute(Sender: TObject);
474     var
475     s: string;
476     begin
477     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
478     if GikoSys.FAbon.GoBack =false then begin
479     MsgBox(GikoForm.Handle, '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
480     end else begin
481     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?
482     s := GikoSys.FAbon.NGwordname;
483     GikoForm.StatusBar.Panels.Items[2].Text := s;
484     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
485     GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
486     GikoForm.StatusBarResize(Sender);
487     //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
488     GikoForm.RepaintAllTabsBrowser();
489     end;
490     end;
491     // *************************************************************************
492 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?
493 h677 1.1 // *************************************************************************
494     procedure TGikoDM.GoBackActionExecute(Sender: TObject);
495     var
496     s: string;
497     begin
498     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
499     if GikoSys.FAbon.GoForward =false then begin
500     MsgBox(GikoForm.Handle, '鐃緒申鐃緒申鐃?鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
501     end else begin
502     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?
503     s := GikoSys.FAbon.NGwordname;
504     GikoForm.StatusBar.Panels.Items[2].Text := s;
505     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
506     GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
507     GikoForm.StatusBarResize(Sender);
508     //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
509     GikoForm.RepaintAllTabsBrowser();
510     end;
511     end;
512     // *************************************************************************
513 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
514 h677 1.1 // *************************************************************************
515     procedure TGikoDM.MoveToActionExecute(Sender: TObject);
516     var
517     URL: string;
518     idx: Integer;
519     begin
520     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申URL鐃緒申鐃緒申鐃緒申
521     URL := Trim(GikoForm.AddressComboBox.Text);
522     //URL鐃緒申鐃緒申鐃緒申
523     GikoForm.MoveToURL(URL);
524     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
525     idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
526     if idx = -1 then begin
527     GikoForm.AddressComboBox.Items.Insert(0, URL);
528     if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
529     GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
530     end else begin
531     GikoForm.AddressComboBox.Items.Delete(idx);
532     GikoForm.AddressComboBox.Items.Insert(0, URL);
533     end;
534     end;
535     // *************************************************************************
536 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
537 h677 1.1 // *************************************************************************
538     procedure TGikoDM.FavoriteAddActionExecute(Sender: TObject);
539     begin
540     GikoForm.ShowFavoriteAddDialog(GikoForm.GetActiveContent);
541     end;
542     // *************************************************************************
543 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
544 h677 1.1 // *************************************************************************
545     procedure TGikoDM.FavoriteArrangeActionExecute(Sender: TObject);
546     var
547     Dlg: TFavoriteArrangeDialog;
548     begin
549 h677 1.12 Dlg := TFavoriteArrangeDialog.Create(GikoForm);
550 h677 1.1 try
551     Dlg.ShowModal;
552     finally
553     Dlg.Release;
554     end;
555     //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
556     PostMessage( GikoForm.Handle, USER_SETLINKBAR, 0, 0 );
557     end;
558     // *************************************************************************
559 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
560 h677 1.1 // *************************************************************************
561     procedure TGikoDM.FavoriteTreeViewCollapseActionExecute(Sender: TObject);
562     var
563     node : TTreeNode;
564     begin
565     node := GikoForm.FavoriteTreeView.Items.GetFirstNode;
566     try
567     //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
568     while node <> nil do begin
569     if node.HasChildren then
570     node.Expanded := False;
571     node := node.GetNext;
572     end;
573     except
574     end;
575     end;
576 h677 1.2 // *************************************************************************
577 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申
578 h677 1.2 // *************************************************************************
579     procedure TGikoDM.FavoriteTreeViewRenameActionExecute(Sender: TObject);
580     var
581     node : TTreeNode;
582     begin
583    
584     if GikoForm.ClickNode = nil then
585     Exit;
586     if GikoForm.ClickNode.IsFirstNode then
587     Exit;
588     if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then
589     Exit;
590     GikoForm.FavoriteTreeView.ReadOnly := False;
591     if (GikoForm.TreeType = gttFavorite) and (GikoForm.CabinetPanel.Visible) then begin
592     node := GikoForm.ClickNode.Parent;
593     while node <> nil do begin
594     node.Expanded := True;
595     node := node.Parent;
596     end;
597     GikoForm.ClickNode.EditText;
598     end else begin
599     GikoForm.ClickNode.Text := InputBox( '鐃緒申鐃?鐃緒申鐃緒申鐃?', '鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', GikoForm.ClickNode.Text );
600     end;
601    
602     GikoForm.SetLinkBar;
603     end;
604     // *************************************************************************
605 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
606 h677 1.2 // *************************************************************************
607     procedure TGikoDM.FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
608     var
609     NewFavFolder: TFavoriteFolder;
610     Node: TTreeNode;
611     begin
612    
613     if GikoForm.ClickNode = nil then
614     Exit;
615    
616     try
617     if not (TObject(GikoForm.ClickNode.Data) is TFavoriteFolder) then begin
618     GikoForm.FavoriteTreeView.Selected := GikoForm.ClickNode.Parent;
619     GikoForm.ClickNode := GikoForm.ClickNode.Parent;
620     end;
621    
622     NewFavFolder := TFavoriteFolder.Create;
623     Node := GikoForm.FavoriteTreeView.Items.AddChildObject(GikoForm.ClickNode, '鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?', NewFavFolder);
624     Node.ImageIndex := 14;
625     Node.SelectedIndex := 14;
626     // FClickNode.Selected.Expanded := True;
627     GikoForm.FavoriteTreeView.Selected := Node;
628     GikoForm.ClickNode := Node;
629     FavoriteTreeViewRenameAction.Execute;
630     finally
631     end;
632    
633     end;
634     // *************************************************************************
635 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
636 h677 1.2 // *************************************************************************
637     procedure TGikoDM.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
638     const
639     DEL_LINK_MSG = '鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
640     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
641     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
642     begin
643    
644     if GikoForm.ClickNode = nil then
645     Exit;
646     if GikoForm.ClickNode.IsFirstNode then
647     Exit;
648     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
649     if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
650     if MsgBox(GikoForm.Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
651     Exit;
652     end else begin
653     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
654     Exit;
655     end;
656     end;
657    
658     GikoForm.ClickNode.Delete;
659    
660     GikoForm.SetLinkBar;
661    
662     end;
663     // *************************************************************************
664 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申
665 h677 1.2 // *************************************************************************
666     procedure TGikoDM.FavoriteTreeViewBrowseFolderActionExecute(
667     Sender: TObject);
668     begin
669     GikoForm.FavoriteBrowseFolder( GikoForm.ClickNode );
670     end;
671     // *************************************************************************
672 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
673 h677 1.2 // *************************************************************************
674     procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject);
675     var
676     ThreadItem: TThreadItem;
677     FavThread: TFavoriteThreadItem;
678     Board: TBoard;
679     FavBoard: TFavoriteBoardItem;
680     shiftDown: Boolean;
681     begin
682    
683     if GikoForm.ClickNode = nil then Exit;
684    
685     shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
686    
687     if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin
688     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
689     ThreadItem := FavThread.Item;
690     if ThreadItem <> nil then
691     GikoForm.DownloadContent(ThreadItem, shiftDown);
692     end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin
693     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
694     Board := FavBoard.Item;
695     GikoForm.DownloadList(Board, shiftDown);
696     end;
697    
698     end;
699     // *************************************************************************
700 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
701 h677 1.2 // *************************************************************************
702     procedure TGikoDM.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
703     var
704     FavThread : TFavoriteThreadItem;
705     FavBoard : TFavoriteBoardItem;
706     s : string;
707     begin
708    
709     if GikoForm.ClickNode = nil then Exit;
710    
711     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
712    
713     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
714     s := FavThread.URL + #13#10;
715     if s <> '' then
716     Clipboard.AsText := s;
717    
718     end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
719    
720     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
721     s := FavBoard.URL + #13#10;
722     if s <> '' then
723     Clipboard.AsText := s;
724    
725     end;
726     end;
727     // *************************************************************************
728 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
729 h677 1.2 // *************************************************************************
730     procedure TGikoDM.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
731     var
732     ThreadItem: TThreadItem;
733     FavThread: TFavoriteThreadItem;
734     Board: TBoard;
735     FavBoard: TFavoriteBoardItem;
736     s: string;
737     begin
738    
739     if GikoForm.ClickNode = nil then Exit;
740    
741     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
742    
743     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
744     ThreadItem := FavThread.Item;
745    
746     try
747     s := ThreadItem.Title + #13#10;
748     if s <> '' then
749     Clipboard.AsText := s;
750     finally
751     end;
752    
753     end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
754    
755     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
756     Board := FavBoard.Item;
757     if Board <> nil then
758     if not Board.IsThreadDatRead then
759     GikoSys.ReadSubjectFile(Board);
760    
761     try
762     s := Board.Title + #13#10;
763     if s <> '' then
764     Clipboard.AsText := s;
765     finally
766     end;
767    
768     end;
769    
770     end;
771     // *************************************************************************
772 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
773 h677 1.2 // *************************************************************************
774     procedure TGikoDM.FavoriteTreeViewNameURLCopyActionExecute(
775     Sender: TObject);
776     var
777     ThreadItem: TThreadItem;
778     FavThread: TFavoriteThreadItem;
779     Board: TBoard;
780     FavBoard: TFavoriteBoardItem;
781     s: string;
782     begin
783    
784     if GikoForm.ClickNode = nil then Exit;
785    
786     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
787    
788     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
789     ThreadItem := FavThread.Item;
790    
791     try
792     s := ThreadItem.Title + #13#10 + ThreadItem.URL + #13#10;
793     if s <> '' then
794     Clipboard.AsText := s;
795     finally
796     end;
797    
798     end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
799    
800     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
801     Board := FavBoard.Item;
802     if Board <> nil then
803     if not Board.IsThreadDatRead then
804     GikoSys.ReadSubjectFile(Board);
805    
806     try
807     s := Board.Title + #13#10 + Board.URL + #13#10;
808     if s <> '' then
809     Clipboard.AsText := s;
810     finally
811     end;
812    
813     end;
814    
815     end;
816     // *************************************************************************
817 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
818 h677 1.2 // *************************************************************************
819     procedure TGikoDM.FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
820     const
821     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
822     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
823     var
824     ThreadItem: TThreadItem;
825     FavThread: TFavoriteThreadItem;
826     begin
827    
828     if GikoForm.ClickNode = nil then Exit;
829     if not (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then Exit;
830    
831     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
832     ThreadItem := FavThread.Item;
833    
834     try
835     if GikoSys.Setting.DeleteMsg then begin
836     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
837     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
838     Exit;
839     end;
840    
841     GikoForm.DeleteHistory(ThreadItem);
842     GikoForm.DeleteTab(ThreadItem);
843     ThreadItem.DeleteLogFile;
844    
845     GikoForm.ListView.Refresh;
846     finally
847     end;
848    
849     end;
850     // *************************************************************************
851 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
852 h677 1.2 // *************************************************************************
853     procedure TGikoDM.FavoriteTreeViewBrowseThreadActionExecute(
854     Sender: TObject);
855     var
856     threadItem : TThreadItem;
857     begin
858    
859     if GikoForm.ClickNode = nil then Exit;
860    
861     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
862    
863     threadItem := TFavoriteThreadItem( GikoForm.ClickNode.Data ).Item;
864     if threadItem = nil then
865     Exit;
866     GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
867    
868     end;
869     end;
870 h677 1.3 // *************************************************************************
871 yoffy 1.9 //! 鐃緒申鐃?100鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
872 h677 1.3 // *************************************************************************
873     procedure TGikoDM.OnlyAHundredResActionExecute(Sender: TObject);
874     var
875     FilterList : TStringList;
876     begin
877     if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
878     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
879    
880     GikoForm.ResRangeMenuSelect := 100;
881     OnlyAHundredResAction.Checked := True;
882    
883     if GikoSys.ResRange <> 100 then begin
884     GikoSys.ResRange := 100;
885    
886     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
887     FilterList := TStringList.Create;
888     try
889     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
890     GikoSys.FSelectResFilter.Reverse := False;
891     finally
892     FilterList.Free;
893     end;
894    
895     GikoForm.SelectResWord := '';
896     GikoForm.RepaintAllTabsBrowser();
897     end;
898     end;
899     // *************************************************************************
900 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
901 h677 1.3 // *************************************************************************
902     procedure TGikoDM.OnlyKokoResActionExecute(Sender: TObject);
903     var
904     FilterList : TStringList;
905     begin
906     if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
907     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
908    
909     GikoForm.ResRangeMenuSelect := Ord( grrKoko );
910     OnlyKokoResAction.Checked := True;
911    
912     if GikoSys.ResRange <> Ord( grrKoko ) then begin
913     GikoSys.ResRange := Ord( grrKoko );
914    
915     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
916     FilterList := TStringList.Create;
917     try
918     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
919     GikoSys.FSelectResFilter.Reverse := False;
920     finally
921     FilterList.Free;
922     end;
923    
924     GikoForm.SelectResWord := '';
925     GikoForm.RepaintAllTabsBrowser();
926     end;
927     end;
928     // *************************************************************************
929 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
930 h677 1.3 // *************************************************************************
931     procedure TGikoDM.OnlyNewResActionExecute(Sender: TObject);
932     var
933     FilterList : TStringList;
934     begin
935     if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
936     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
937    
938     GikoForm.ResRangeMenuSelect := Ord( grrNew );
939     OnlyNewResAction.Checked := True;
940    
941     if GikoSys.ResRange <> Ord( grrNew ) then begin
942     GikoSys.ResRange := Ord( grrNew );
943 h677 1.1
944 h677 1.3 // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
945     FilterList := TStringList.Create;
946     try
947     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
948     GikoSys.FSelectResFilter.Reverse := False;
949     finally
950     FilterList.Free;
951     end;
952    
953     GikoForm.SelectResWord := '';
954     GikoForm.RepaintAllTabsBrowser();
955     end;
956     end;
957     // *************************************************************************
958 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
959 h677 1.3 // *************************************************************************
960     procedure TGikoDM.BrowserMaxActionExecute(Sender: TObject);
961     begin
962     if GikoSys.Setting.ListOrientation = gloHorizontal then begin
963     case GikoSys.Setting.ListWidthState of
964     glsMax: begin
965     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
966     if GikoForm.ActiveContent <> nil then
967     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
968     GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
969     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
970     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
971     GikoSys.Setting.ListWidthState := glsNormal;
972     if GikoForm.ActiveContent <> nil then
973     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
974     end;
975     glsMin, glsNormal: begin
976     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
977     if GikoForm.ActiveContent <> nil then
978     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
979     if GikoSys.Setting.ListWidthState = glsNormal then
980     GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
981     if GikoForm.ActiveContent <> nil then
982     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
983     GikoForm.ViewPanel.Width := 1;
984     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
985     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
986     GikoSys.Setting.ListWidthState := glsMax;
987     end;
988     end;
989     end else begin
990     case GikoSys.Setting.ListHeightState of
991     glsMax: begin
992     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
993     if GikoForm.ActiveContent <> nil then
994     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
995     GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
996     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
997     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
998     GikoSys.Setting.ListHeightState := glsNormal;
999     if GikoForm.ActiveContent <> nil then
1000     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1001     end;
1002     glsMin, glsNormal: begin
1003     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1004     if GikoForm.ActiveContent <> nil then
1005     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1006     if GikoSys.Setting.ListHeightState = glsNormal then
1007     GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
1008     if GikoForm.ActiveContent <> nil then
1009     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1010     GikoForm.ViewPanel.Height := 1;
1011     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1012     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1013     GikoSys.Setting.ListHeightState := glsMax;
1014     end;
1015     end;
1016     end;
1017     end;
1018     // *************************************************************************
1019 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1020 h677 1.3 // *************************************************************************
1021     procedure TGikoDM.BrowserMinActionExecute(Sender: TObject);
1022     begin
1023     if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1024     case GikoSys.Setting.ListWidthState of
1025     glsMax, glsNormal: begin
1026     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1027     if GikoForm.ActiveContent <> nil then
1028     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1029     if GikoSys.Setting.ListWidthState = glsNormal then
1030     GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
1031     if GikoForm.ActiveContent <> nil then
1032     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1033     GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80;
1034     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1035     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1036     GikoSys.Setting.ListWidthState := glsMin;
1037     end;
1038     glsMin: begin
1039     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1040     if GikoForm.ActiveContent <> nil then
1041     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1042     GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
1043     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1044     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1045     GikoSys.Setting.ListWidthState := glsNormal;
1046     if GikoForm.ActiveContent <> nil then
1047     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1048     end;
1049     end;
1050     end else begin
1051     case GikoSys.Setting.ListHeightState of
1052     glsMax, glsNormal: begin
1053     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1054     if GikoForm.ActiveContent <> nil then
1055     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1056     if GikoSys.Setting.ListHeightState = glsNormal then
1057     GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
1058     GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7;
1059     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1060     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1061     GikoSys.Setting.ListHeightState := glsMin;
1062     if GikoForm.ActiveContent <> nil then
1063     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1064     end;
1065     glsMin: begin
1066     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1067     if GikoForm.ActiveContent <> nil then
1068     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1069     GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
1070     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1071     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1072     GikoSys.Setting.ListHeightState := glsNormal;
1073     if GikoForm.ActiveContent <> nil then
1074     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1075     end;
1076     end;
1077     end;
1078     end;
1079     // *************************************************************************
1080 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1081 h677 1.3 // *************************************************************************
1082     procedure TGikoDM.ScrollTopActionExecute(Sender: TObject);
1083     begin
1084     GikoForm.BrowserMovement('top');
1085     end;
1086     // *************************************************************************
1087 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1088 h677 1.3 // *************************************************************************
1089     procedure TGikoDM.ScrollLastActionExecute(Sender: TObject);
1090     begin
1091     GikoForm.BrowserMovement('bottom');
1092     end;
1093     // *************************************************************************
1094 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1095 h677 1.3 // *************************************************************************
1096     procedure TGikoDM.ScrollNewActionExecute(Sender: TObject);
1097     begin
1098     GikoForm.BrowserMovement('new');
1099     end;
1100     // *************************************************************************
1101 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1102 h677 1.3 // *************************************************************************
1103     procedure TGikoDM.ScrollKokoActionExecute(Sender: TObject);
1104     begin
1105     GikoForm.BrowserMovement('koko');
1106     end;
1107     // *************************************************************************
1108 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1109 h677 1.3 // *************************************************************************
1110     procedure TGikoDM.ScrollKokoActionUpdate(Sender: TObject);
1111     begin
1112     ScrollKokoAction.Enabled := (GikoForm.GetActiveContent <> nil)
1113     and (GikoForm.GetActiveContent.IsLogFile)
1114     and (GikoForm.GetActiveContent.Kokomade <> -1);
1115     end;
1116     // *************************************************************************
1117 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1118 h677 1.3 // *************************************************************************
1119     procedure TGikoDM.EditorActionExecute(Sender: TObject);
1120     var
1121     Editor: TEditorForm;
1122     Item: TThreadItem;
1123     begin
1124     Item := GikoForm.GetActiveContent;
1125     if Item = nil then Exit;
1126     Editor := TEditorForm.Create(GikoForm.GetMainForm);
1127     Editor.SetThreadItem(Item);
1128     GikoSys.LoadEditorKeySetting(Editor.ActionList);
1129     Editor.Show;
1130     Editor.BodyEdit.SetFocus;
1131     end;
1132     // *************************************************************************
1133 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1134 h677 1.3 // *************************************************************************
1135     procedure TGikoDM.IEActionExecute(Sender: TObject);
1136     begin
1137     ShowThreadAction.Execute;
1138     end;
1139     // *************************************************************************
1140 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1141 h677 1.3 // *************************************************************************
1142     procedure TGikoDM.ShowThreadActionExecute(Sender: TObject);
1143     var
1144     ThreadItem: TThreadItem;
1145     begin
1146     ThreadItem := GikoForm.GetActiveContent;
1147     if ThreadItem = nil then Exit;
1148     GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
1149     end;
1150     // *************************************************************************
1151 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1152 h677 1.3 // *************************************************************************
1153     procedure TGikoDM.ShowBoardActionExecute(Sender: TObject);
1154     var
1155     ThreadItem: TThreadItem;
1156     begin
1157     ThreadItem := GikoForm.GetActiveContent;
1158     if ThreadItem = nil then Exit;
1159     GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
1160     end;
1161     // *************************************************************************
1162 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1163 h677 1.3 // *************************************************************************
1164     procedure TGikoDM.URLCopyActionExecute(Sender: TObject);
1165     var
1166     s: string;
1167     begin
1168     s := '';
1169     if TObject(GikoForm.GetActiveContent) is TBoard then
1170     s := s + TBoard(GikoForm.GetActiveContent).URL + #13#10
1171     else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1172     s := s + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1173     if s <> '' then
1174     Clipboard.AsText := s;
1175     end;
1176     // *************************************************************************
1177 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1178 h677 1.3 // *************************************************************************
1179     procedure TGikoDM.NameCopyActionExecute(Sender: TObject);
1180     var
1181     s: string;
1182     begin
1183     s := '';
1184     if TObject(GikoForm.GetActiveContent) is TBoard then
1185     s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10
1186     else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1187     s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10;
1188     if s <> '' then
1189     Clipboard.AsText := s;
1190     end;
1191     // *************************************************************************
1192 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1193 h677 1.3 // *************************************************************************
1194     procedure TGikoDM.NameURLCopyActionExecute(Sender: TObject);
1195     var
1196     s: string;
1197     begin
1198     s := '';
1199     if TObject(GikoForm.GetActiveContent) is TBoard then
1200     s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10 + TBoard(GikoForm.GetActiveContent).URL + #13#10
1201     else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1202     s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10 + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1203     if s <> '' then
1204     Clipboard.AsText := s;
1205     end;
1206     // *************************************************************************
1207 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1208 h677 1.3 // *************************************************************************
1209     procedure TGikoDM.ItemReloadActionExecute(Sender: TObject);
1210     var
1211     ThreadItem: TThreadItem;
1212     shiftDown: Boolean;
1213     begin
1214     ThreadItem := GikoForm.GetActiveContent;
1215     shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
1216     if ThreadItem <> nil then
1217     GikoForm.DownloadContent(ThreadItem, shiftDown);
1218     end;
1219     // *************************************************************************
1220 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1221 h677 1.3 // *************************************************************************
1222     procedure TGikoDM.BrowserTabCloseActionExecute(Sender: TObject);
1223     var
1224     idx: Integer;
1225     begin
1226     idx := GikoForm.BrowserTab.TabIndex;
1227     if idx <> -1 then begin
1228     if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1229     GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1230     end;
1231     end;
1232     end;
1233     // *************************************************************************
1234 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1235 h677 1.3 // *************************************************************************
1236     procedure TGikoDM.BrowserTabCloseActionUpdate(Sender: TObject);
1237     begin
1238     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0);
1239     end;
1240     // *************************************************************************
1241 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1242 h677 1.3 // *************************************************************************
1243     procedure TGikoDM.NotSelectTabCloseActionExecute(Sender: TObject);
1244     var
1245     i: Integer;
1246     idx: Integer;
1247     begin
1248     idx := GikoForm.BrowserTab.TabIndex;
1249     if idx = -1 then Exit;
1250     GikoForm.BrowserTab.Tabs.BeginUpdate;
1251     for i := GikoForm.BrowserTab.Tabs.Count - 1 downto GikoForm.BrowserTab.TabIndex + 1 do begin
1252     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1253     GikoForm.BrowserTab.Tabs.Delete(i);
1254     end;
1255     if idx > 0 then begin
1256     for i := GikoForm.BrowserTab.TabIndex - 1 downto 0 do begin
1257     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1258     GikoForm.BrowserTab.Tabs.Delete(i);
1259     end;
1260     end;
1261     GikoForm.BrowserTab.Tabs.EndUpdate;
1262     end;
1263     // *************************************************************************
1264 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1265 h677 1.3 // *************************************************************************
1266     procedure TGikoDM.NotSelectTabCloseActionUpdate(Sender: TObject);
1267     begin
1268     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1269     end;
1270     // *************************************************************************
1271 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1272 h677 1.3 // *************************************************************************
1273     procedure TGikoDM.AllTabCloseActionExecute(Sender: TObject);
1274     var
1275     i: Integer;
1276     begin
1277     if GikoSys.Setting.ShowDialogForAllTabClose then
1278     if(MessageDlg('鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then
1279     Exit;
1280    
1281     GikoForm.ActiveContent := nil;
1282     GikoForm.BrowserNullTab.Thread := nil;
1283     GikoForm.BrowserTab.OnChange := nil;
1284     GikoForm.BrowserTab.Tabs.BeginUpdate;
1285     for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
1286     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1287     end;
1288     GikoForm.BrowserTab.Tabs.Clear;
1289     GikoForm.BrowserTab.Tabs.EndUpdate;
1290     GikoForm.BrowserTab.OnChange := GikoForm.BrowserTabChange;
1291     GikoForm.SetContent(GikoForm.BrowserNullTab);
1292     GikoForm.Caption := CAPTION_NAME ;
1293     end;
1294     // *************************************************************************
1295 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1296 h677 1.3 // *************************************************************************
1297     procedure TGikoDM.ActiveLogDeleteActionExecute(Sender: TObject);
1298     const
1299     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1300     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
1301     var
1302     idx: Integer;
1303     ThreadItem: TThreadItem;
1304     begin
1305     idx := GikoForm.BrowserTab.TabIndex;
1306     if idx <> -1 then begin
1307     if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1308     ThreadItem := TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]).Thread;
1309     if GikoSys.Setting.DeleteMsg then
1310     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
1311     if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
1312     Exit;
1313     GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1314     ThreadItem.DeleteLogFile;
1315     if ThreadItem.ParentBoard = GikoForm.ActiveList then
1316     GikoForm.ListView.Refresh;
1317     end;
1318     end;
1319     end;
1320     // *************************************************************************
1321 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1322 h677 1.3 // *************************************************************************
1323     procedure TGikoDM.LeftmostTabSelectActionExecute(Sender: TObject);
1324     begin
1325     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1326     GikoForm.BrowserTab.TabIndex := 0;
1327     GikoForm.BrowserTab.OnChange(nil);
1328     end;
1329     end;
1330     // *************************************************************************
1331 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1332 h677 1.3 // *************************************************************************
1333     procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject);
1334     begin
1335     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1336     and (GikoForm.BrowserTab.TabIndex <> 0);
1337     end;
1338     // *************************************************************************
1339 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1340 h677 1.3 // *************************************************************************
1341     procedure TGikoDM.LeftTabSelectActionExecute(Sender: TObject);
1342     begin
1343     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1344     if GikoForm.BrowserTab.TabIndex = -1 then begin
1345     GikoForm.BrowserTab.TabIndex := 0;
1346     GikoForm.BrowserTab.OnChange(nil);
1347     end else if GikoForm.BrowserTab.TabIndex > 0 then begin
1348     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1;
1349     GikoForm.BrowserTab.OnChange(nil);
1350     end;
1351     end;
1352     end;
1353     // *************************************************************************
1354 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1355 h677 1.3 // *************************************************************************
1356     procedure TGikoDM.RightTabSelectActionExecute(Sender: TObject);
1357     begin
1358     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1359     if GikoForm.BrowserTab.TabIndex = -1 then begin
1360     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1361     GikoForm.BrowserTab.OnChange(nil);
1362     end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin
1363     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1;
1364     GikoForm.BrowserTab.OnChange(nil);
1365     end;
1366     end;
1367     end;
1368     // *************************************************************************
1369 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1370 h677 1.3 // *************************************************************************
1371     procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject);
1372     begin
1373     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1374     and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
1375     end;
1376     // *************************************************************************
1377 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1378 h677 1.3 // *************************************************************************
1379     procedure TGikoDM.RightmostTabSelectActionExecute(Sender: TObject);
1380     begin
1381     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1382     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1383     GikoForm.BrowserTab.OnChange(nil);
1384     end;
1385     end;
1386     // *************************************************************************
1387 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1388 h677 1.3 // *************************************************************************
1389     procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject);
1390     begin
1391     if TObject(GikoForm.ListView.Selected.Data) is TThreadItem then
1392     GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data));
1393     end;
1394     // *************************************************************************
1395 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1396 h677 1.3 // *************************************************************************
1397     procedure TGikoDM.ThreadFavoriteAddActionUpdate(Sender: TObject);
1398     begin
1399     TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
1400     and (GikoForm.ListView.SelCount > 0);
1401     end;
1402     // *************************************************************************
1403 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1404 h677 1.3 // *************************************************************************
1405     procedure TGikoDM.SelectResActionExecute(Sender: TObject);
1406     var
1407     Dlg: TListSelectDialog;
1408     FilterList : TStringList;
1409     idx : Integer;
1410     begin
1411 h677 1.12 Dlg := TListSelectDialog.Create(GikoForm);
1412 h677 1.3 try
1413     Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
1414     Dlg.SelectComboBox.Text := GikoForm.SelectResWord;
1415     Dlg.ShowModal;
1416     if Dlg.ModalResult = mrOK then begin
1417     SelectResAction.Checked := True;
1418     if Length( Dlg.SelectComboBox.Text ) = 0 then begin
1419     // 鐃緒申鐃緒申鐃緒申鐃緒申 OK 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1420     ResRangeAction.Execute;
1421     end else begin
1422     GikoSys.ResRange := Ord( grrSelect );
1423    
1424     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1425     GikoForm.SelectResWord := Dlg.SelectComboBox.Text;
1426    
1427     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?
1428     idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
1429     if idx <> -1 then
1430     GikoSys.Setting.SelectTextList.Delete(idx);
1431     GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
1432     while Dlg.SelectComboBox.Items.Count > 100 do begin
1433     Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
1434     end;
1435    
1436     try
1437     if GikoForm.SelectComboBoxPanel.Visible then
1438     GikoForm.SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1439     except
1440     end;
1441    
1442     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1443     FilterList := TStringList.Create;
1444     try
1445     GikoSys.FSelectResFilter.Reverse := True;
1446     FilterList.Delimiter := ' '; //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1447     FilterList.DelimitedText := Dlg.SelectComboBox.Text;
1448    
1449     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1450     finally
1451     FilterList.Free;
1452     end;
1453     GikoForm.RepaintAllTabsBrowser();
1454     end;
1455     end else begin
1456     // 鐃?鐃緒申鐃緒申鐃?鐃緒申
1457     if GikoSys.ResRange <> Ord( grrSelect ) then
1458     ResRangeAction.Execute;
1459     end;
1460     finally
1461     Dlg.Release;
1462     end;
1463    
1464     end;
1465     // *************************************************************************
1466 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1467 h677 1.3 // *************************************************************************
1468     procedure TGikoDM.AllResActionExecute(Sender: TObject);
1469     var
1470     FilterList : TStringList;
1471     begin
1472     if(GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil )
1473     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
1474    
1475     GikoForm.ResRangeMenuSelect := Ord( grrAll );
1476     AllResAction.Checked := True;
1477    
1478     if GikoSys.ResRange <> Ord( grrAll ) then begin
1479     GikoSys.ResRange := Ord( grrAll );
1480    
1481     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1482     FilterList := TStringList.Create;
1483     try
1484     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1485     GikoSys.FSelectResFilter.Reverse := False;
1486     finally
1487     FilterList.Free;
1488     end;
1489    
1490     GikoForm.SelectResWord := '';
1491    
1492     GikoForm.RepaintAllTabsBrowser();
1493     end;
1494     end;
1495     // *************************************************************************
1496 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1497 h677 1.3 // *************************************************************************
1498     procedure TGikoDM.ResRangeActionExecute(Sender: TObject);
1499     begin
1500     case GikoForm.ResRangeMenuSelect of
1501     Ord( grrAll ): AllResAction.Execute;
1502     Ord( grrKoko ): OnlyKokoResAction.Execute;
1503     Ord( grrNew ): OnlyNewResAction.Execute;
1504     100: OnlyAHundredResAction.Execute;
1505     end;
1506    
1507     end;
1508     // *************************************************************************
1509 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1510 h677 1.3 // *************************************************************************
1511     procedure TGikoDM.UpBoardActionExecute(Sender: TObject);
1512     begin
1513     GikoForm.SelectTreeNode( GikoForm.GetActiveContent.ParentBoard, True );
1514     end;
1515     // *************************************************************************
1516 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1517 h677 1.3 // *************************************************************************
1518     procedure TGikoDM.JumpToNumOfResActionExecute(Sender: TObject);
1519     var
1520     str: string;
1521     res: integer;
1522     begin
1523     str := '1';
1524     if( InputQuery('鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申', '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', str) ) then begin
1525     str := ZenToHan(str);
1526     res := StrToIntDef(str, -1);
1527     if (res > 0) and (res <= GikoForm.GetActiveContent.Count) then begin
1528     GikoForm.BrowserMovement(IntToStr(res), GikoForm.ActiveContent);
1529     SetFocusForBrowserAction.Execute;
1530     end else if res > GikoForm.GetActiveContent.Count then begin
1531     GikoForm.BrowserMovement(IntToStr(GikoForm.GetActiveContent.Count), GikoForm.ActiveContent);
1532     SetFocusForBrowserAction.Execute;
1533     end;
1534     end;
1535     end;
1536     // *************************************************************************
1537 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1538 h677 1.3 // *************************************************************************
1539     procedure TGikoDM.RightTabCloseActionExecute(Sender: TObject);
1540     var
1541     i: Integer;
1542     idx: Integer;
1543     begin
1544     idx := GikoForm.BrowserTab.TabIndex;
1545     if idx = -1 then Exit;
1546     GikoForm.BrowserTab.Tabs.BeginUpdate;
1547     for i := GikoForm.BrowserTab.Tabs.Count - 1 downto idx + 1 do begin
1548     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1549     GikoForm.BrowserTab.Tabs.Delete(i);
1550     end;
1551     GikoForm.BrowserTab.Tabs.EndUpdate;
1552     end;
1553     // *************************************************************************
1554 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1555 h677 1.3 // *************************************************************************
1556     procedure TGikoDM.RightTabCloseActionUpdate(Sender: TObject);
1557     begin
1558     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1559     end;
1560     // *************************************************************************
1561 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1562 h677 1.3 // *************************************************************************
1563     procedure TGikoDM.LeftTabCloseActionExecute(Sender: TObject);
1564     var
1565     i: Integer;
1566     idx: Integer;
1567     begin
1568     idx := GikoForm.BrowserTab.TabIndex;
1569     if idx = -1 then Exit;
1570     GikoForm.BrowserTab.Tabs.BeginUpdate;
1571     if idx > 0 then begin
1572     for i := idx - 1 downto 0 do begin
1573     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1574     GikoForm.BrowserTab.Tabs.Delete(i);
1575     end;
1576     end;
1577     GikoForm.BrowserTab.Tabs.EndUpdate;
1578     end;
1579     ////////////////////////////////鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1580 h677 1.4 procedure TGikoDM.DataModuleCreate(Sender: TObject);
1581     begin
1582     end;
1583     // *************************************************************************
1584 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1585 h677 1.4 // *************************************************************************
1586     procedure TGikoDM.SearchActionExecute(Sender: TObject);
1587     var
1588     chk: TObject;
1589     begin
1590    
1591     if GikoForm.SearchDialog = nil then begin
1592     if (GikoForm.GetActiveList is TCategory) or (GikoForm.GetActiveList is TBoard) then
1593     chk := GikoForm.GetActiveList
1594     else
1595     chk := nil;
1596    
1597 h677 1.12 GikoForm.SearchDialog := TSearchDialog.Create(GikoForm, chk);
1598 h677 1.4 GikoForm.SearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1599     end;
1600    
1601     try
1602     GikoForm.SearchDialog.Show;
1603     except
1604     end;
1605     end;
1606     // *************************************************************************
1607 yoffy 1.9 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1608 h677 1.4 // *************************************************************************
1609     procedure TGikoDM.OptionActionExecute(Sender: TObject);
1610     var
1611     Dlg: TOptionDialog;
1612     begin
1613 h677 1.12 Dlg := TOptionDialog.Create(GikoForm);
1614 h677 1.4 try
1615     Dlg.ShowModal;
1616     finally
1617     Dlg.Release;
1618     end;
1619     end;
1620     // *************************************************************************
1621 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1622 h677 1.4 // *************************************************************************
1623     procedure TGikoDM.RoundActionExecute(Sender: TObject);
1624     var
1625     Dlg: TRoundDialog;
1626     begin
1627 h677 1.12 Dlg := TRoundDialog.Create(GikoForm);
1628 h677 1.4 try
1629     Dlg.ShowModal;
1630     finally
1631     Dlg.Release;
1632     end;
1633     end;
1634     // *************************************************************************
1635 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1636 h677 1.4 // *************************************************************************
1637     procedure TGikoDM.KeySettingActionExecute(Sender: TObject);
1638     var
1639     Dlg: TKeySettingForm;
1640     begin
1641 h677 1.12 Dlg := TKeySettingForm.Create(GikoForm);
1642 h677 1.4 try
1643     if Dlg.ShowModal = mrOk then begin
1644     GikoSys.SaveKeySetting(GikoFormActionList);
1645     GikoSys.SaveEditorKeySetting(Dlg.EditorForm.ActionList);
1646     GikoSys.Setting.Gestures.SaveGesture( GikoSys.Setting.GetGestureFileName );
1647     end;
1648    
1649     finally
1650     Dlg.Release;
1651     MouseGesture.UnHook;
1652     MouseGesture.OnGestureStart := GikoForm.OnGestureStart;
1653     MouseGesture.OnGestureMove := GikoForm.OnGestureMove;
1654     MouseGesture.OnGestureEnd := GikoForm.OnGestureEnd;
1655     if GikoSys.Setting.GestureEnabled then begin
1656     GikoSys.Setting.Gestures.ClearGesture;
1657     GikoSys.Setting.Gestures.LoadGesture(
1658     GikoSys.Setting.GetGestureFileName, GikoFormActionList );
1659     MouseGesture.SetHook( GikoForm.Handle );
1660     end;
1661     end;
1662     end;
1663     // *************************************************************************
1664 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1665 h677 1.4 // *************************************************************************
1666     procedure TGikoDM.KotehanActionExecute(Sender: TObject);
1667     var
1668     Dlg: TKotehanDialog;
1669     begin
1670 h677 1.12 Dlg := TKotehanDialog.Create(GikoForm);
1671 h677 1.4 try
1672     Dlg.ShowModal;
1673     finally
1674     Dlg.Release;
1675     end;
1676     end;
1677     // *************************************************************************
1678 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1679 h677 1.4 // *************************************************************************
1680     procedure TGikoDM.ToolBarSettingActionExecute(Sender: TObject);
1681     var
1682     Dlg: TToolBarSettingDialog;
1683     i: Integer;
1684     //Component: TComponent;
1685     ToolButton : TToolButton;
1686     begin
1687     Dlg := TToolBarSettingDialog.Create(GikoForm, GikoFormActionList);
1688     try
1689     Dlg.AddToolBar(GikoForm.StdToolBar, gttStandard);
1690     Dlg.AddToolBar(GikoForm.ListToolBar, gttList);
1691     Dlg.AddToolBar(GikoForm.BrowserToolBar, gttBrowser);
1692     case GikoForm.ToolBarSettingSender of
1693     tssMain: Dlg.ToolBarIndex := 0;
1694     tssList: Dlg.ToolBarIndex := 1;
1695     tssBrowser: Dlg.ToolBarIndex := 2;
1696     end;
1697     if Dlg.ShowModal = mrOK then begin
1698     GikoForm.SetToolBarPopup;
1699    
1700     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1701     for i := 0 to GikoForm.MainCoolBar.Bands.Count - 1 do begin
1702     GikoForm.MainCoolBar.Bands[i].MinWidth :=
1703     GikoForm.MainCoolBar.Bands[i].MinWidth + 1;
1704     GikoForm.MainCoolBar.Bands[i].MinWidth :=
1705     GikoForm.MainCoolBar.Bands[i].MinWidth - 1;
1706     end;
1707     for i := 0 to GikoForm.ListCoolBar.Bands.Count - 1 do begin
1708     GikoForm.ListCoolBar.Bands[i].MinWidth :=
1709     GikoForm.ListCoolBar.Bands[i].MinWidth + 1;
1710     GikoForm.ListCoolBar.Bands[i].MinWidth :=
1711     GikoForm.ListCoolBar.Bands[i].MinWidth - 1;
1712     end;
1713     for i := 0 to GikoForm.BrowserCoolBar.Bands.Count - 1 do begin
1714     GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1715     GikoForm.BrowserCoolBar.Bands[i].MinWidth + 1;
1716     GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1717     GikoForm.BrowserCoolBar.Bands[i].MinWidth - 1;
1718     end;
1719    
1720     SaveToolBarSetting(GikoForm.StdToolBar);
1721     SaveToolBarSetting(GikoForm.ListToolBar);
1722     //ListToolBar鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申ComboBox鐃緒申鐃?鐃?
1723 h677 1.13 GikoForm.SetSelectComboBox;
1724 h677 1.4 GikoForm.ResetBandInfo( GikoForm.ListCoolBar, GikoForm.ListToolBar );
1725     SaveToolBarSetting(GikoForm.BrowserToolBar);
1726     end;
1727     finally
1728     Dlg.Release;
1729     GikoForm.ToolBarSettingSender := tssNone;
1730     end;
1731     end;
1732     // *************************************************************************
1733 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?
1734 h677 1.4 // *************************************************************************
1735     procedure TGikoDM.MuteActionExecute(Sender: TObject);
1736     begin
1737     GikoSys.Setting.Mute := not GikoSys.Setting.Mute;
1738     end;
1739     ////////////////////////////////鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1740     // *************************************************************************
1741 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1742 h677 1.4 // *************************************************************************
1743     procedure TGikoDM.TreeSelectBoradReloadExecute(Sender: TObject);
1744     var
1745     Board: TBoard;
1746     TmpTreeNode: TTreeNode;
1747     begin
1748     TmpTreeNode := GikoForm.ClickNode;
1749     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1750     Board := nil;
1751    
1752     if TObject(TmpTreeNode.Data) is TBoard then
1753     Board := TBoard(TmpTreeNode.Data)
1754     else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
1755     Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
1756    
1757     if Board <> nil then
1758     GikoForm.DownloadList(Board);
1759     end;
1760     // *************************************************************************
1761 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1762 h677 1.4 // *************************************************************************
1763     procedure TGikoDM.TreeSelectThreadReloadExecute(Sender: TObject);
1764     var
1765     ThreadItem: TThreadItem;
1766     TmpTreeNode: TTreeNode;
1767     begin
1768     TmpTreeNode := GikoForm.ClickNode;
1769     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1770     ThreadItem := nil;
1771    
1772     if TObject(TmpTreeNode.Data) is TThreadItem then
1773     ThreadItem := TThreadItem(TmpTreeNode.Data)
1774     else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
1775     ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
1776    
1777     if ThreadItem <> nil then
1778     GikoForm.DownloadContent(ThreadItem);
1779     end;
1780     // *************************************************************************
1781 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1782 h677 1.4 // *************************************************************************
1783     procedure TGikoDM.TreeSelectURLCopyExecute(Sender: TObject);
1784     var
1785     TmpTreeNode: TTreeNode;
1786     s: string;
1787     begin
1788     TmpTreeNode := GikoForm.ClickNode;
1789     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1790     if TObject(TmpTreeNode.Data) is TBoard then begin
1791     s := TBoard(TmpTreeNode.Data).URL + #13#10;
1792     end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1793     s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1794     end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1795     s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
1796     end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1797     s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1798     end;
1799     Clipboard.AsText := s;
1800     end;
1801     // *************************************************************************
1802 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1803 h677 1.4 // *************************************************************************
1804     procedure TGikoDM.TreeSelectNameURLCopyExecute(Sender: TObject);
1805     var
1806     TmpTreeNode: TTreeNode;
1807     s: string;
1808     begin
1809     TmpTreeNode := GikoForm.ClickNode;
1810     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1811     if TObject(TmpTreeNode.Data) is TBoard then begin
1812     s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
1813     end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1814     s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1815     end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1816     s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
1817     end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1818     s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1819     end;
1820     Clipboard.AsText := s;
1821     end;
1822     // *************************************************************************
1823 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1824 h677 1.4 // *************************************************************************
1825     procedure TGikoDM.TreeSelectFavoriteAddActionExecute(Sender: TObject);
1826     begin
1827     GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ClickNode.Data));
1828     end;
1829     // *************************************************************************
1830 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃緒申
1831 h677 1.4 // *************************************************************************
1832     procedure TGikoDM.TreeSelectSearchBoardNameExecute(Sender: TObject);
1833     var
1834     s : String;
1835     msg : String;
1836     CurItem : TTreeNode;
1837     next : boolean;
1838     begin
1839     if InputQuery('鐃緒申鐃緒申鐃緒申鐃緒申','鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申',s) then begin
1840     next := true;
1841     while next do begin
1842     if GikoForm.TreeView.Selected = nil then
1843     CurItem := GikoForm.TreeView.Items.GetFirstNode
1844     else begin
1845     CurItem := GikoForm.TreeView.Selected.GetNext;
1846     if CurItem = nil then
1847     CurItem := GikoForm.TreeView.Items.GetFirstNode;
1848     end;
1849     while CurItem <> nil do begin
1850     if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
1851     break;
1852     end;
1853     CurItem := CurItem.GetNext;
1854     end;
1855     try
1856     if CurItem = nil then begin
1857     msg := '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1858     if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
1859     CurItem := GikoForm.TreeView.Items.GetFirstNode;
1860     end else begin
1861     Exit;
1862     end;
1863     GikoForm.TreeView.Select(CurItem);
1864     GikoForm.TreeView.SetFocus;
1865     end else begin
1866     GikoForm.TreeView.Select(CurItem);
1867     GikoForm.TreeView.SetFocus;
1868     msg := '鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1869     if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
1870     next := true;
1871     end else begin
1872     next := false;
1873     end;
1874     end;
1875    
1876     except
1877     Exit;
1878     end;
1879     end;
1880     end;
1881     end;
1882     // *************************************************************************
1883 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1884 h677 1.4 // *************************************************************************
1885     procedure TGikoDM.TreeSelectNameCopyExecute(Sender: TObject);
1886     var
1887     s: string;
1888     begin
1889     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1890     s := GikoForm.ClickNode.Text;
1891     Clipboard.AsText := s;
1892     end;
1893     ////////////////////////////////鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1894 h677 1.5 // *************************************************************************
1895 yoffy 1.9 //! 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1896 h677 1.5 // *************************************************************************
1897     procedure TGikoDM.LoginActionExecute(Sender: TObject);
1898     var
1899     TmpCursor: TCursor;
1900     msg : String;
1901     begin
1902     if GikoSys.Dolib.Connected then begin
1903     //鐃緒申鐃?鐃?鐃?鐃?
1904     GikoSys.Dolib.Disconnect;
1905     LoginAction.Checked := False;
1906     GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogout)), nil, gmiOK);
1907     LoginAction.Caption := '鐃緒申鐃?鐃?鐃緒申(&L)';
1908     end else begin
1909     TmpCursor := GikoForm.ScreenCursor;
1910     GikoForm.ScreenCursor := crHourGlass;
1911     try
1912     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申
1913     if not GikoSys.Setting.ForcedLogin then begin
1914     GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1915     GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1916     GikoSys.Dolib.Password := GikoSys.Setting.Password;
1917     if GikoSys.Setting.ReadProxy then begin
1918     GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1919     GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1920     end else begin
1921     GikoSys.Dolib.ProxyAddress := '';
1922     GikoSys.Dolib.ProxyPort := 0;
1923     end;
1924     if GikoSys.Dolib.Connect then begin
1925     LoginAction.Checked := True;
1926     GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
1927     LoginAction.Caption := '鐃緒申鐃?鐃?鐃?鐃?(&L)';
1928     //LoginToolButton.Style := tbsCheck;
1929     end else begin
1930     // MsgBox(Handle, '鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
1931     GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1932     GikoForm.PlaySound('Error');
1933     LoginAction.Checked := False;
1934     //LoginToolButton.Down := False;
1935     ///LoginToolButton.Style := tbsButton;
1936     end;
1937     end else begin
1938     msg := '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10
1939     + '鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10
1940     + '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10;
1941     if MsgBox(GikoForm.Handle, msg, '鐃?鐃緒申', MB_YESNO or MB_ICONEXCLAMATION) = IDYES then begin
1942     GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1943     GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1944     GikoSys.Dolib.Password := GikoSys.Setting.Password;
1945     if GikoSys.Setting.ReadProxy then begin
1946     GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1947     GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1948     end else begin
1949     GikoSys.Dolib.ProxyAddress := '';
1950     GikoSys.Dolib.ProxyPort := 0;
1951     end;
1952     //SSL鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申
1953     GikoSys.Dolib.ForcedConnect;
1954     if GikoSys.Dolib.Connect then begin
1955     LoginAction.Checked := True;
1956     GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmForceLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
1957     LoginAction.Caption := '鐃緒申鐃?鐃?鐃?鐃?(&L)';
1958     //LoginToolButton.Style := tbsCheck;
1959     end else begin
1960     // MsgBox(Handle, '鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
1961     GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1962     GikoForm.PlaySound('Error');
1963     LoginAction.Checked := False;
1964     //LoginToolButton.Down := False;
1965     //LoginToolButton.Style := tbsButton;
1966     end;
1967     end else begin
1968     LoginAction.Checked := False;
1969     //LoginToolButton.Down := False;
1970     //LoginToolButton.Style := tbsButton;
1971     end;
1972     end;
1973     finally
1974     GikoForm.ScreenCursor := TmpCursor;
1975     end;
1976     end;
1977     end;
1978     // *************************************************************************
1979 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1980 h677 1.5 // *************************************************************************
1981     procedure TGikoDM.NewBoardActionExecute(Sender: TObject);
1982     var
1983     Dlg: TNewBoardDialog;
1984     Msg: string;
1985     begin
1986     if GikoForm.EditorFormExists then begin
1987     Msg := '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
1988     MsgBox(GikoForm.Handle, Msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
1989     Exit;
1990     end;
1991 h677 1.12 Dlg := TNewBoardDialog.Create(GikoForm);
1992 h677 1.5 try
1993     Dlg.ShowModal;
1994     finally
1995     Dlg.Release;
1996     end;
1997     end;
1998     // *************************************************************************
1999 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2000 h677 1.5 // *************************************************************************
2001     procedure TGikoDM.LogDeleteActionExecute(Sender: TObject);
2002     const
2003     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2004     DEL_SAME_MSG = '鐃緒申鐃緒申鐃緒申 ^0 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2005     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2006     var
2007     ThreadItem: TThreadItem;
2008     TmpListItem: TListItem;
2009     List: TList;
2010     i: Integer;
2011     begin
2012     List := TList.Create;
2013     try
2014     TmpListItem := GikoForm.ListView.Selected;
2015     while TmpListItem <> nil do begin
2016     if TObject(TmpListItem.Data) is TThreadItem then begin
2017     ThreadItem := TThreadItem(TmpListItem.Data);
2018     if ThreadItem.IsLogFile then
2019     List.Add(ThreadItem);
2020     end;
2021     TmpListItem := GikoForm.ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
2022     end;
2023    
2024     if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
2025     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
2026     if List.Count = 1 then begin
2027     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
2028     Exit;
2029     end else begin
2030     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
2031     Exit;
2032     end;
2033     end;
2034     end;
2035    
2036     for i := 0 to List.Count - 1 do begin
2037     ThreadItem := TThreadItem(List[i]);
2038     GikoForm.DeleteHistory(ThreadItem);
2039     GikoForm.DeleteTab(ThreadItem);
2040     ThreadItem.DeleteLogFile;
2041    
2042     GikoForm.TreeView.Refresh; // UnRead 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?
2043     end;
2044     GikoForm.ListView.Refresh;
2045     finally
2046     List.Free;
2047     end;
2048     end;
2049     // *************************************************************************
2050 yoffy 1.9 //! ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Action鐃緒申鐃緒申鐃緒申
2051 h677 1.5 // *************************************************************************
2052     procedure TGikoDM.LogDeleteActionUpdate(Sender: TObject);
2053     begin
2054     TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
2055     and (GikoForm.ListView.SelCount > 0);
2056     end;
2057     // *************************************************************************
2058 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2059 h677 1.5 // *************************************************************************
2060     procedure TGikoDM.SelectTextClearActionExecute(Sender: TObject);
2061     const
2062     DEL_MSG = '鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2063     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2064     begin
2065     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2066     if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2067     Exit;
2068     GikoSys.Setting.SelectTextList.Clear;
2069     GikoForm.SelectComboBox.Items.Clear;
2070     GikoForm.SelectComboBox.Text := '';
2071     GikoForm.SetListViewType( gvtAll );
2072     end;
2073     // *************************************************************************
2074 yoffy 1.9 //! 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2075 h677 1.5 // *************************************************************************
2076     procedure TGikoDM.NameTextClearActionExecute(Sender: TObject);
2077     const
2078     DEL_MSG = '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2079     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2080     begin
2081     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2082     if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2083     Exit;
2084     GikoSys.Setting.NameList.Clear;
2085     GikoForm.AllEditroFormNameTextClearClear;
2086     end;
2087     // *************************************************************************
2088 yoffy 1.9 //! 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2089 h677 1.5 // *************************************************************************
2090     procedure TGikoDM.MailTextClearActionExecute(Sender: TObject);
2091     const
2092     DEL_MSG = '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2093     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2094     begin
2095     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2096     if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2097     Exit;
2098     GikoSys.Setting.MailList.Clear;
2099     GikoForm.AllEditroFormMailTextClearClear;
2100     end;
2101     // *************************************************************************
2102 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2103 h677 1.5 // *************************************************************************
2104     procedure TGikoDM.ExitActionExecute(Sender: TObject);
2105     begin
2106     GikoForm.Close;
2107     end;
2108     // *************************************************************************
2109 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
2110 h677 1.5 // *************************************************************************
2111     procedure TGikoDM.ExportFavoriteFileBeforeExecute(Sender: TObject);
2112     begin
2113     ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
2114     end;
2115     // *************************************************************************
2116 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
2117 h677 1.5 // *************************************************************************
2118     procedure TGikoDM.ExportFavoriteFileAccept(Sender: TObject);
2119     begin
2120     if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
2121     ShowMessage('鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申');
2122     end else begin
2123     ShowMessage('鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申');
2124     end;
2125     end;
2126     // *************************************************************************
2127 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申HTML鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2128 h677 1.5 // *************************************************************************
2129     procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject);
2130     var
2131     List: TList;
2132     i: Integer;
2133     html: TStringList;
2134     title: string;
2135     begin
2136     List := TList.Create;
2137     try
2138     GikoForm.ScreenCursor := crHourGlass;
2139     GikoForm.SelectListItem(List);
2140     if ((GikoSys.Setting.ListOrientation = gloVertical) and
2141     (GikoSys.Setting.ListHeightState = glsMax)) or
2142     ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2143     (GikoSys.Setting.ListWidthState = glsMax)) then
2144     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2145     else if(List.Count = 0) then
2146     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2147     else begin
2148     FileSaveAs1.Dialog.Title := '鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申HTML鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2149     FileSaveAs1.Dialog.Filter := 'HTML鐃?鐃?鐃?鐃緒申(*.html)|*.html';
2150     for i := 0 to List.Count - 1 do begin
2151     if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2152     FileSaveAs1.Dialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html';
2153     if FileSaveAs1.Dialog.Execute then begin
2154     html := TStringList.Create;
2155     title := TThreadItem(List[i]).Title;
2156     try
2157     HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title);
2158     html.SaveToFile(FileSaveAs1.Dialog.FileName);
2159     THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
2160     finally
2161     html.Free;
2162     end;
2163     end;
2164     end;
2165     end;
2166     end;
2167     finally
2168     GikoForm.ScreenCursor := crDefault;
2169     List.Free;
2170     end;
2171     end;
2172     // *************************************************************************
2173 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申DAT鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2174 h677 1.5 // *************************************************************************
2175     procedure TGikoDM.SelectItemSaveForDatExecute(Sender: TObject);
2176     var
2177     List: TList;
2178     i: Integer;
2179     begin
2180     List := TList.Create;
2181     try
2182     GikoForm.ScreenCursor := crHourGlass;
2183     GikoForm.SelectListItem(List);
2184     if ((GikoSys.Setting.ListOrientation = gloVertical) and
2185     (GikoSys.Setting.ListHeightState = glsMax)) or
2186     ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2187     (GikoSys.Setting.ListWidthState = glsMax)) then
2188     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2189     else if(List.Count = 0) then
2190     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2191     else begin
2192     FileSaveAs1.Dialog.Title := '鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申dat鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2193     FileSaveAs1.Dialog.Filter := 'DAT鐃?鐃?鐃?鐃緒申(*.dat)|*.dat';
2194     for i := 0 to List.Count - 1 do begin
2195     if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2196     FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
2197     if FileSaveAs1.Dialog.Execute then begin
2198     CopyFile(PChar(TThreadItem(List[i]).FilePath),
2199     PChar(FileSaveAs1.Dialog.FileName), true);
2200     end;
2201     end;
2202     end;
2203     end;
2204     finally
2205     GikoForm.ScreenCursor := crDefault;
2206     List.Free;
2207     end;
2208    
2209     end;
2210     // *************************************************************************
2211 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2212 h677 1.5 // *************************************************************************
2213     procedure TGikoDM.TabsSaveActionExecute(Sender: TObject);
2214     begin
2215     if not GikoForm.SaveTabURLs then begin
2216     if TabsSaveAction.Tag = 0 then
2217     ShowMessage('鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2218     else if TabsSaveAction.Tag = 1 then
2219 h677 1.10 GikoDM.TabsOpenAction.Tag := -1;
2220 h677 1.5 end;
2221     end;
2222     // *************************************************************************
2223 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2224 h677 1.5 // *************************************************************************
2225     procedure TGikoDM.TabsOpenActionExecute(Sender: TObject);
2226     begin
2227     if TabsOpenAction.Tag <> -1 then begin
2228     if not GikoForm.LoadTabURLs then begin
2229     if TabsOpenAction.Tag = 0 then
2230     ShowMessage('鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
2231     end;
2232     end;
2233     end;
2234     // *************************************************************************
2235 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2236 h677 1.5 // *************************************************************************
2237     procedure TGikoDM.TabAutoSaveActionExecute(Sender: TObject);
2238     begin
2239     GikoForm.SaveTabURLs;
2240     end;
2241     // *************************************************************************
2242 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2243 h677 1.5 // *************************************************************************
2244     procedure TGikoDM.TabAutoLoadActionExecute(Sender: TObject);
2245     begin
2246     GikoForm.LoadTabURLs;
2247     end;
2248     // *************************************************************************
2249 yoffy 1.9 //! Be2ch鐃緒申鐃緒申鐃?鐃?鐃緒申/鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申
2250 h677 1.5 // *************************************************************************
2251     procedure TGikoDM.BeLogInOutActionExecute(Sender: TObject);
2252     begin
2253     GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin;
2254     end;
2255     // *************************************************************************
2256 yoffy 1.9 //! Be2ch鐃緒申鐃緒申鐃?鐃?鐃緒申/鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
2257 h677 1.5 // *************************************************************************
2258     procedure TGikoDM.BeLogInOutActionUpdate(Sender: TObject);
2259     begin
2260     if (GikoSys.