X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=GikoDataModule.pas;h=30456e946bc658507962dc356d8273fd3d9ace84;hb=refs%2Fheads%2FBb60;hp=dbbabe9c687c2d26bbe38e7d42929ad1e11028e9;hpb=7977422e347b564b705178cc891b932bef380a10;p=gikonavigoeson%2Fgikonavi.git diff --git a/GikoDataModule.pas b/GikoDataModule.pas index dbbabe9..30456e9 100644 --- a/GikoDataModule.pas +++ b/GikoDataModule.pas @@ -4,300 +4,532 @@ interface uses SysUtils, Classes, ExtActns, StdActns, ActnList, ImgList, Controls, - ComCtrls; +{$IF Defined(DELPRO) } + SHDocVw, + MSHTML, +{$ELSE} + SHDocVw_TLB, + MSHTML_TLB, +{$IFEND} + ComCtrls, BrowserRecord, Graphics, Messages, Setting, Dialogs, + ActiveX, GikoSystem, MoveHistoryItem, HistoryList; + +const + CAPTION_NAME: string = 'ƒMƒRƒiƒr'; + USER_SETLINKBAR = WM_USER + 2003; + + ITEM_ICON_SORT1 = 12; //!< ƒ\[ƒgƒAƒCƒRƒ“ + ITEM_ICON_SORT2 = 13; //!< ƒ\[ƒgƒAƒCƒRƒ“ + + //ƒc[ƒ‹ƒo[ƒAƒCƒRƒ“ + TOOL_ICON_HEIGHT_MAX = 16; //!< ‚‚³Å‘åƒAƒCƒRƒ“ + TOOL_ICON_HEIGHT_MIN = 17; //!< ‚‚³Å¬ƒAƒCƒRƒ“ + TOOL_ICON_HEIGHT_NORMAL = 18; //!< ‚‚³•W€ƒAƒCƒRƒ“ + TOOL_ICON_WIDTH_MAX = 19; //!< •Å‘åƒAƒCƒRƒ“ + TOOL_ICON_WIDTH_MIN = 20; //!< •Å¬ƒAƒCƒRƒ“ + TOOL_ICON_WIDTH_NORMAL = 21; //!< ••W€ƒAƒCƒRƒ“ + + TOOL_ICON_FAV_FOLDER = 30; //!< ‚¨‹C‚É“ü‚èƒtƒHƒ‹ƒ_ƒAƒCƒRƒ“ + TOOL_ICON_FAV_BOARD = 31; //!< ‚¨‹C‚É“ü‚蔃AƒCƒRƒ“ + TOOL_ICON_FAV_THREAD = 32; //!< ‚¨‹C‚É“ü‚èƒXƒŒƒAƒCƒRƒ“ + + //! HTTP + PROTOCOL_HTTP : string = 'http://'; + //! ƒMƒRƒiƒrƒTƒCƒg‚ÌURL + URL_GIKONAVI: string = 'gikonavi.sourceforge.jp/'; + //! MonazillaƒTƒCƒg‚ÌURL + URL_MONAZILLA: string = 'www.monazilla.org/'; + //! 2‚¿‚á‚ñ‚Ë‚é‚ÌURL + URL_2ch: string = 'www.2ch.net/'; + //! ƒMƒRƒiƒrWiki‚ÌURL + URL_Wiki: string = 'sourceforge.jp/projects/gikonavi/wiki/FAQ'; + + SELECTCOMBOBOX_NAME: string = ''; // 'ƒXƒŒƒbƒhižŒŸõ'; + SELECTCOMBOBOX_COLOR: TColor = clWindow; + type + TGikoDM = class(TDataModule) - GikoFormActionList: TActionList; - OnlyAHundredResAction: TAction; - OnlyKokoResAction: TAction; - LoginAction: TAction; - NewBoardAction: TAction; - LogDeleteAction: TAction; - KidokuAction: TAction; - StdToolBarVisibleAction: TAction; - AddressBarVisibleAction: TAction; - LinkBarVisibleAction: TAction; + GikoFormActionList: TActionList; + OnlyAHundredResAction: TAction; + OnlyKokoResAction: TAction; + LoginAction: TAction; + NewBoardAction: TAction; + LogDeleteAction: TAction; + KidokuAction: TAction; + StdToolBarVisibleAction: TAction; + AddressBarVisibleAction: TAction; + LinkBarVisibleAction: TAction; ListToolBarVisibleAction: TAction; - SearchAction: TAction; - GikoNaviWebPageAction: TAction; - MonazillaWebPageAction: TAction; - BBS2chWebPageAction: TAction; - GikoFolderOpenAction: TAction; - AboutAction: TAction; - SelectTextClearAction: TAction; - NameTextClearAction: TAction; - MailTextClearAction: TAction; - ExitAction: TAction; - ListNameBarVisibleAction: TAction; - BrowserToolBarVisibleAction: TAction; - BrowserNameBarVisibleAction: TAction; - MsgBarVisibleAction: TAction; - MsgBarCloseAction: TAction; - StatusBarVisibleAction: TAction; - CabinetBBSAction: TAction; - CabinetHistoryAction: TAction; - OnlyNewResAction: TAction; + SearchAction: TAction; + GikoNaviWebPageAction: TAction; + MonazillaWebPageAction: TAction; + BBS2chWebPageAction: TAction; + GikoFolderOpenAction: TAction; + AboutAction: TAction; + SelectTextClearAction: TAction; + NameTextClearAction: TAction; + MailTextClearAction: TAction; + ExitAction: TAction; + ListNameBarVisibleAction: TAction; + BrowserToolBarVisibleAction: TAction; + BrowserNameBarVisibleAction: TAction; + MsgBarVisibleAction: TAction; + MsgBarCloseAction: TAction; + StatusBarVisibleAction: TAction; + CabinetBBSAction: TAction; + CabinetHistoryAction: TAction; + OnlyNewResAction: TAction; CabinetFavoriteAction: TAction; - CabinetVisibleAction: TAction; - ListNumberVisibleAction: TAction; - UpFolderAction: TAction; - CabinetCloseAction: TAction; - IconStyle: TAction; - LargeIconAction: TAction; - SmallIconAction: TAction; - ListIconAction: TAction; - DetailIconAction: TAction; - MidokuAction: TAction; - AllSelectAction: TAction; - AllItemAction: TAction; - LogItemAction: TAction; - NewItemAction: TAction; - ThreadRangeAction: TAction; - SelectItemAction: TAction; - StopAction: TAction; - OptionAction: TAction; - RoundAction: TAction; + CabinetVisibleAction: TAction; + ListNumberVisibleAction: TAction; + UpFolderAction: TAction; + CabinetCloseAction: TAction; + IconStyle: TAction; + LargeIconAction: TAction; + SmallIconAction: TAction; + ListIconAction: TAction; + DetailIconAction: TAction; + MidokuAction: TAction; + AllSelectAction: TAction; + AllItemAction: TAction; + LogItemAction: TAction; + NewItemAction: TAction; + ThreadRangeAction: TAction; + SelectItemAction: TAction; + StopAction: TAction; + OptionAction: TAction; + RoundAction: TAction; BrowserMaxAction: TAction; - BrowserMinAction: TAction; - ScrollTopAction: TAction; - ScrollLastAction: TAction; - ScrollNewAction: TAction; - ScrollKokoAction: TAction; - EditorAction: TAction; - IEAction: TAction; - ShowThreadAction: TAction; - ShowBoardAction: TAction; - URLCopyAction: TAction; - NameCopyAction: TAction; - NameURLCopyAction: TAction; - ItemReloadAction: TAction; - ThreadEditorAction: TAction; - BoardIEAction: TAction; - SelectItemURLCopyAction: TAction; - SelectItemNameCopyAction: TAction; - SelectItemNameURLCopyAction: TAction; - SelectListReloadAction: TAction; + BrowserMinAction: TAction; + ScrollTopAction: TAction; + ScrollLastAction: TAction; + ScrollNewAction: TAction; + ScrollKokoAction: TAction; + EditorAction: TAction; + IEAction: TAction; + ShowThreadAction: TAction; + ShowBoardAction: TAction; + URLCopyAction: TAction; + NameCopyAction: TAction; + NameURLCopyAction: TAction; + ItemReloadAction: TAction; + ThreadEditorAction: TAction; + BoardIEAction: TAction; + SelectItemURLCopyAction: TAction; + SelectItemNameCopyAction: TAction; + SelectItemNameURLCopyAction: TAction; + SelectListReloadAction: TAction; SelectThreadReloadAction: TAction; - BrowserTabCloseAction: TAction; - NotSelectTabCloseAction: TAction; - AllTabCloseAction: TAction; - KokomadeAction: TAction; - ZenbuAction: TAction; - KokoResAction: TAction; - TreeSelectBoradReload: TAction; - TreeSelectThreadReload: TAction; - TreeSelectURLCopy: TAction; - SelectReservAction: TAction; - SelectNewRoundName: TAction; - SelectDeleteRound: TAction; - KeySettingAction: TAction; - ArrangeAction: TAction; - ActiveLogDeleteAction: TAction; - TreeSelectNameURLCopy: TAction; - PaneInitAction: TAction; - LeftmostTabSelectAction: TAction; - LeftTabSelectAction: TAction; + BrowserTabCloseAction: TAction; + NotSelectTabCloseAction: TAction; + AllTabCloseAction: TAction; + KokomadeAction: TAction; + ZenbuAction: TAction; + KokoResAction: TAction; + TreeSelectBoradReload: TAction; + TreeSelectThreadReload: TAction; + TreeSelectURLCopy: TAction; + SelectReservAction: TAction; + SelectNewRoundName: TAction; + SelectDeleteRound: TAction; + KeySettingAction: TAction; + ArrangeAction: TAction; + ActiveLogDeleteAction: TAction; + TreeSelectNameURLCopy: TAction; + PaneInitAction: TAction; + LeftmostTabSelectAction: TAction; + LeftTabSelectAction: TAction; RightTabSelectAction: TAction; - RightmostTabSelectAction: TAction; - FavoriteAddAction: TAction; - BoardFavoriteAddAction: TAction; - ThreadFavoriteAddAction: TAction; - TreeSelectFavoriteAddAction: TAction; - FavoriteArrangeAction: TAction; - MoveToAction: TAction; - BrowserTabVisibleAction: TAction; - BrowserTabTopAction: TAction; - BrowserTabBottomAction: TAction; - BrowserTabTabStyleAction: TAction; - BrowserTabButtonStyleAction: TAction; - BrowserTabFlatStyleAction: TAction; - GikoHelpAction: TAction; - KotehanAction: TAction; - ToolBarSettingAction: TAction; - SelectResAction: TAction; - AllResAction: TAction; - EditNGAction: TAction; + RightmostTabSelectAction: TAction; + FavoriteAddAction: TAction; + BoardFavoriteAddAction: TAction; + ThreadFavoriteAddAction: TAction; + TreeSelectFavoriteAddAction: TAction; + FavoriteArrangeAction: TAction; + MoveToAction: TAction; + BrowserTabVisibleAction: TAction; + BrowserTabTopAction: TAction; + BrowserTabBottomAction: TAction; + BrowserTabTabStyleAction: TAction; + BrowserTabButtonStyleAction: TAction; + BrowserTabFlatStyleAction: TAction; + GikoHelpAction: TAction; + KotehanAction: TAction; + ToolBarSettingAction: TAction; + SelectResAction: TAction; + AllResAction: TAction; + EditNGAction: TAction; ReloadAction: TAction; - GoFowardAction: TAction; - GoBackAction: TAction; - TreeSelectSearchBoardName: TAction; - FavoriteTreeViewRenameAction: TAction; - FavoriteTreeViewNewFolderAction: TAction; - FavoriteTreeViewDeleteAction: TAction; - FavoriteTreeViewBrowseFolderAction: TAction; - FavoriteTreeViewReloadAction: TAction; - FavoriteTreeViewURLCopyAction: TAction; - FavoriteTreeViewNameCopyAction: TAction; - FavoriteTreeViewNameURLCopyAction: TAction; - FavoriteTreeViewLogDeleteAction: TAction; - ResRangeAction: TAction; - ExportFavoriteFile: TFileSaveAs; - FavoriteTreeViewBrowseBoardAction: TAction; - FavoriteTreeViewBrowseThreadAction: TAction; - UpBoardAction: TAction; - KoreCopy: TAction; - TreeSelectNameCopy: TAction; + GoFowardAction: TAction; + GoBackAction: TAction; + TreeSelectSearchBoardName: TAction; + FavoriteTreeViewRenameAction: TAction; + FavoriteTreeViewNewFolderAction: TAction; + FavoriteTreeViewDeleteAction: TAction; + FavoriteTreeViewBrowseFolderAction: TAction; + FavoriteTreeViewReloadAction: TAction; + FavoriteTreeViewURLCopyAction: TAction; + FavoriteTreeViewNameCopyAction: TAction; + FavoriteTreeViewNameURLCopyAction: TAction; + FavoriteTreeViewLogDeleteAction: TAction; + ResRangeAction: TAction; + ExportFavoriteFile: TFileSaveAs; + FavoriteTreeViewBrowseBoardAction: TAction; + FavoriteTreeViewBrowseThreadAction: TAction; + UpBoardAction: TAction; + KoreCopy: TAction; + TreeSelectNameCopy: TAction; SetFocusForBrowserAction: TAction; - SetFocusForThreadListAction: TAction; - SetFocusForCabinetAction: TAction; - FileRun1: TFileRun; - ThreadlistMaxAndFocusAction: TAction; - BrowserMaxAndFocusAction: TAction; - SelectItemSaveForHTML: TAction; - SelectItemSaveForDat: TAction; - FileSaveAs1: TFileSaveAs; - LogFolderOpenAction: TAction; - TabsSaveAction: TAction; - TabsOpenAction: TAction; - BrowsBoradHeadAction: TAction; - TabAutoSaveAction: TAction; - TabAutoLoadAction: TAction; - JumpToNumOfResAction: TAction; - FavoriteTreeViewCollapseAction: TAction; - RightTabCloseAction: TAction; - LeftTabCloseAction: TAction; - SameIDResAnchorAction: TAction; + SetFocusForThreadListAction: TAction; + SetFocusForCabinetAction: TAction; + FileRun1: TFileRun; + ThreadlistMaxAndFocusAction: TAction; + BrowserMaxAndFocusAction: TAction; + SelectItemSaveForHTML: TAction; + SelectItemSaveForDat: TAction; + LogFolderOpenAction: TAction; + TabsSaveAction: TAction; + TabsOpenAction: TAction; + BrowsBoradHeadAction: TAction; + JumpToNumOfResAction: TAction; + FavoriteTreeViewCollapseAction: TAction; + RightTabCloseAction: TAction; + LeftTabCloseAction: TAction; + SameIDResAnchorAction: TAction; IndividualAbon1Action: TAction; - IndividualAbon0Action: TAction; - AntiIndividualAbonAction: TAction; - AntiIndividualAbonDlgAction: TAction; - IndividualAbonID1Action: TAction; - IndividualAbonID0Action: TAction; - MuteAction: TAction; - SortActiveColumnAction: TAction; - SortNextColumnAction: TAction; - SortPrevColumnAction: TAction; - BeLogInOutAction: TAction; - UnSelectedListViewAction: TAction; - WikiFAQWebPageAction: TAction; - ToobarImageList: TImageList; - procedure EditNGActionExecute(Sender: TObject); - procedure ReloadActionExecute(Sender: TObject); - procedure GoFowardActionExecute(Sender: TObject); - procedure GoBackActionExecute(Sender: TObject); - procedure MoveToActionExecute(Sender: TObject); - procedure FavoriteAddActionExecute(Sender: TObject); + IndividualAbon0Action: TAction; + AntiIndividualAbonAction: TAction; + AntiIndividualAbonDlgAction: TAction; + IndividualAbonID1Action: TAction; + IndividualAbonID0Action: TAction; + MuteAction: TAction; + SortActiveColumnAction: TAction; + SortNextColumnAction: TAction; + SortPrevColumnAction: TAction; + BeLogInOutAction: TAction; + UnSelectedListViewAction: TAction; + WikiFAQWebPageAction: TAction; + ToobarImageList: TImageList; + SaveDialog: TSaveDialog; + ThreadSizeCalcForFileAction: TAction; + SetInputAssistAction: TAction; + OpenFindDialogAction: TAction; + ArchiveItemAction: TAction; + LiveItemAction: TAction; + FavoriteTreeViewItemNameCopyAction: TAction; + CloseAllEditorAction: TAction; + PrevMoveHistory: TAction; + NextMoveHistory: TAction; + ClickActiveElementAction: TAction; + VKDownAction: TAction; + VKUpAction: TAction; + VKRightAction: TAction; + VKLeftAction: TAction; + StoredTaskTrayAction: TAction; + AllImageLinkToClipbordAction: TAction; + NewImageLinkToClipBoardAction: TAction; + SetForcusForAddresBarAction: TAction; + NewBoardSearchAction: TAction; + NGWordEditFormAction: TAction; + ScrollPageDownAction: TAction; + ScrollPageUpAction: TAction; + AllLinkToClipboardAction: TAction; + NewLinkToClipboardAction: TAction; + AddIDtoNGWord0Action: TAction; + AddIDtoNGWord1Action: TAction; + ExtractSameIDAction: TAction; + ShowTabListAction: TAction; + DereferenceResAction: TAction; + UpdateGikonaviAction: TAction; + konoURLPATHAction: TAction; + konoURLQueryAction: TAction; + procedure EditNGActionExecute(Sender: TObject); + procedure ReloadActionExecute(Sender: TObject); + procedure GoFowardActionExecute(Sender: TObject); + procedure GoBackActionExecute(Sender: TObject); + procedure MoveToActionExecute(Sender: TObject); + procedure FavoriteAddActionExecute(Sender: TObject); procedure FavoriteArrangeActionExecute(Sender: TObject); - procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject); - procedure FavoriteTreeViewRenameActionExecute(Sender: TObject); - procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject); - procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject); - procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject); - procedure FavoriteTreeViewReloadActionExecute(Sender: TObject); - procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject); - procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject); - procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject); - procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject); - procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject); - procedure OnlyAHundredResActionExecute(Sender: TObject); - procedure OnlyKokoResActionExecute(Sender: TObject); - procedure OnlyNewResActionExecute(Sender: TObject); - procedure BrowserMaxActionExecute(Sender: TObject); - procedure BrowserMinActionExecute(Sender: TObject); - procedure ScrollTopActionExecute(Sender: TObject); - procedure ScrollLastActionExecute(Sender: TObject); - procedure ScrollNewActionExecute(Sender: TObject); + procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject); + procedure FavoriteTreeViewRenameActionExecute(Sender: TObject); + procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject); + procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject); + procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject); + procedure FavoriteTreeViewReloadActionExecute(Sender: TObject); + procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject); + procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject); + procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject); + procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject); + procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject); + procedure OnlyAHundredResActionExecute(Sender: TObject); + procedure OnlyKokoResActionExecute(Sender: TObject); + procedure OnlyNewResActionExecute(Sender: TObject); + procedure BrowserMaxActionExecute(Sender: TObject); + procedure BrowserMinActionExecute(Sender: TObject); + procedure ScrollTopActionExecute(Sender: TObject); + procedure ScrollLastActionExecute(Sender: TObject); + procedure ScrollNewActionExecute(Sender: TObject); procedure ScrollKokoActionExecute(Sender: TObject); - procedure ScrollKokoActionUpdate(Sender: TObject); - procedure EditorActionExecute(Sender: TObject); - procedure IEActionExecute(Sender: TObject); - procedure ShowThreadActionExecute(Sender: TObject); - procedure ShowBoardActionExecute(Sender: TObject); - procedure URLCopyActionExecute(Sender: TObject); - procedure NameCopyActionExecute(Sender: TObject); - procedure NameURLCopyActionExecute(Sender: TObject); - procedure ItemReloadActionExecute(Sender: TObject); - procedure BrowserTabCloseActionExecute(Sender: TObject); - procedure BrowserTabCloseActionUpdate(Sender: TObject); - procedure NotSelectTabCloseActionExecute(Sender: TObject); - procedure NotSelectTabCloseActionUpdate(Sender: TObject); - procedure AllTabCloseActionExecute(Sender: TObject); - procedure ActiveLogDeleteActionExecute(Sender: TObject); - procedure LeftmostTabSelectActionExecute(Sender: TObject); - procedure LeftmostTabSelectActionUpdate(Sender: TObject); - procedure LeftTabSelectActionExecute(Sender: TObject); - procedure RightTabSelectActionExecute(Sender: TObject); + procedure ScrollKokoActionUpdate(Sender: TObject); + procedure EditorActionExecute(Sender: TObject); + procedure IEActionExecute(Sender: TObject); + procedure ShowThreadActionExecute(Sender: TObject); + procedure ShowBoardActionExecute(Sender: TObject); + procedure URLCopyActionExecute(Sender: TObject); + procedure NameCopyActionExecute(Sender: TObject); + procedure NameURLCopyActionExecute(Sender: TObject); + procedure ItemReloadActionExecute(Sender: TObject); + procedure BrowserTabCloseActionExecute(Sender: TObject); + procedure BrowserTabCloseActionUpdate(Sender: TObject); + procedure NotSelectTabCloseActionExecute(Sender: TObject); + procedure NotSelectTabCloseActionUpdate(Sender: TObject); + procedure AllTabCloseActionExecute(Sender: TObject); + procedure ActiveLogDeleteActionExecute(Sender: TObject); + procedure LeftmostTabSelectActionExecute(Sender: TObject); + procedure LeftmostTabSelectActionUpdate(Sender: TObject); + procedure LeftTabSelectActionExecute(Sender: TObject); + procedure RightTabSelectActionExecute(Sender: TObject); procedure RightTabSelectActionUpdate(Sender: TObject); - procedure RightmostTabSelectActionExecute(Sender: TObject); - procedure ThreadFavoriteAddActionExecute(Sender: TObject); - procedure ThreadFavoriteAddActionUpdate(Sender: TObject); - procedure SelectResActionExecute(Sender: TObject); - procedure AllResActionExecute(Sender: TObject); - procedure ResRangeActionExecute(Sender: TObject); - procedure UpBoardActionExecute(Sender: TObject); - procedure JumpToNumOfResActionExecute(Sender: TObject); - procedure RightTabCloseActionExecute(Sender: TObject); - procedure RightTabCloseActionUpdate(Sender: TObject); - procedure LeftTabCloseActionExecute(Sender: TObject); - procedure DataModuleCreate(Sender: TObject); - procedure SearchActionExecute(Sender: TObject); - procedure OptionActionExecute(Sender: TObject); - procedure RoundActionExecute(Sender: TObject); - procedure KeySettingActionExecute(Sender: TObject); - procedure KotehanActionExecute(Sender: TObject); - procedure ToolBarSettingActionExecute(Sender: TObject); - procedure MuteActionExecute(Sender: TObject); - procedure TreeSelectBoradReloadExecute(Sender: TObject); - procedure TreeSelectThreadReloadExecute(Sender: TObject); - procedure TreeSelectURLCopyExecute(Sender: TObject); - procedure TreeSelectNameURLCopyExecute(Sender: TObject); - procedure TreeSelectFavoriteAddActionExecute(Sender: TObject); - procedure TreeSelectSearchBoardNameExecute(Sender: TObject); - procedure TreeSelectNameCopyExecute(Sender: TObject); + procedure RightmostTabSelectActionExecute(Sender: TObject); + procedure ThreadFavoriteAddActionExecute(Sender: TObject); + procedure ThreadFavoriteAddActionUpdate(Sender: TObject); + procedure SelectResActionExecute(Sender: TObject); + procedure AllResActionExecute(Sender: TObject); + procedure ResRangeActionExecute(Sender: TObject); + procedure UpBoardActionExecute(Sender: TObject); + procedure JumpToNumOfResActionExecute(Sender: TObject); + procedure RightTabCloseActionExecute(Sender: TObject); + procedure RightTabCloseActionUpdate(Sender: TObject); + procedure LeftTabCloseActionExecute(Sender: TObject); + procedure DataModuleCreate(Sender: TObject); + procedure SearchActionExecute(Sender: TObject); + procedure OptionActionExecute(Sender: TObject); + procedure RoundActionExecute(Sender: TObject); + procedure KeySettingActionExecute(Sender: TObject); + procedure KotehanActionExecute(Sender: TObject); + procedure ToolBarSettingActionExecute(Sender: TObject); + procedure MuteActionExecute(Sender: TObject); + procedure TreeSelectBoradReloadExecute(Sender: TObject); + procedure TreeSelectThreadReloadExecute(Sender: TObject); + procedure TreeSelectURLCopyExecute(Sender: TObject); + procedure TreeSelectNameURLCopyExecute(Sender: TObject); + procedure TreeSelectFavoriteAddActionExecute(Sender: TObject); + procedure TreeSelectSearchBoardNameExecute(Sender: TObject); + procedure TreeSelectNameCopyExecute(Sender: TObject); + procedure LoginActionExecute(Sender: TObject); + procedure NewBoardActionExecute(Sender: TObject); + procedure LogDeleteActionExecute(Sender: TObject); + procedure LogDeleteActionUpdate(Sender: TObject); + procedure SelectTextClearActionExecute(Sender: TObject); + procedure NameTextClearActionExecute(Sender: TObject); + procedure MailTextClearActionExecute(Sender: TObject); + procedure ExitActionExecute(Sender: TObject); + procedure ExportFavoriteFileBeforeExecute(Sender: TObject); + procedure ExportFavoriteFileAccept(Sender: TObject); + procedure SelectItemSaveForHTMLExecute(Sender: TObject); + procedure SelectItemSaveForDatExecute(Sender: TObject); + procedure TabsSaveActionExecute(Sender: TObject); + procedure TabsOpenActionExecute(Sender: TObject); + procedure BeLogInOutActionExecute(Sender: TObject); + procedure BeLogInOutActionUpdate(Sender: TObject); + procedure KokomadeActionExecute(Sender: TObject); + procedure ZenbuActionExecute(Sender: TObject); + procedure KokoResActionExecute(Sender: TObject); + procedure KoreCopyExecute(Sender: TObject); + procedure SameIDResAnchorActionExecute(Sender: TObject); + procedure IndividualAbon1ActionExecute(Sender: TObject); + procedure IndividualAbon0ActionExecute(Sender: TObject); + procedure AntiIndividualAbonActionExecute(Sender: TObject); + procedure AntiIndividualAbonDlgActionExecute(Sender: TObject); + procedure IndividualAbonID1ActionExecute(Sender: TObject); + procedure IndividualAbonID0ActionExecute(Sender: TObject); + procedure GikoNaviWebPageActionExecute(Sender: TObject); + procedure MonazillaWebPageActionExecute(Sender: TObject); + procedure BBS2chWebPageActionExecute(Sender: TObject); + procedure GikoFolderOpenActionExecute(Sender: TObject); + procedure AboutActionExecute(Sender: TObject); + procedure GikoHelpActionExecute(Sender: TObject); + procedure WikiFAQWebPageActionExecute(Sender: TObject); + procedure ListNumberVisibleActionExecute(Sender: TObject); + procedure UpFolderActionExecute(Sender: TObject); + procedure UpFolderActionUpdate(Sender: TObject); + procedure IconStyleExecute(Sender: TObject); + procedure AllItemActionExecute(Sender: TObject); + procedure LogItemActionExecute(Sender: TObject); + procedure NewItemActionExecute(Sender: TObject); + procedure ThreadRangeActionExecute(Sender: TObject); + procedure SelectItemActionExecute(Sender: TObject); + procedure ThreadEditorActionExecute(Sender: TObject); + procedure BoardIEActionExecute(Sender: TObject); + procedure SelectItemURLCopyActionExecute(Sender: TObject); + procedure SelectItemURLCopyActionUpdate(Sender: TObject); + procedure SelectItemNameCopyActionExecute(Sender: TObject); + procedure SelectItemNameCopyActionUpdate(Sender: TObject); + procedure SelectItemNameURLCopyActionExecute(Sender: TObject); + procedure SelectListReloadActionExecute(Sender: TObject); + procedure SelectListReloadActionUpdate(Sender: TObject); + procedure SelectThreadReloadActionExecute(Sender: TObject); + procedure SelectThreadReloadActionUpdate(Sender: TObject); + procedure SelectReservActionExecute(Sender: TObject); + procedure SelectReservActionUpdate(Sender: TObject); + procedure SelectNewRoundNameExecute(Sender: TObject); + procedure SelectDeleteRoundExecute(Sender: TObject); + procedure BoardFavoriteAddActionExecute(Sender: TObject); + procedure BoardFavoriteAddActionUpdate(Sender: TObject); + procedure LogFolderOpenActionExecute(Sender: TObject); + procedure LogFolderOpenActionUpdate(Sender: TObject); + procedure BrowsBoradHeadActionExecute(Sender: TObject); + procedure SortActiveColumnActionExecute(Sender: TObject); + procedure SortNextColumnActionExecute(Sender: TObject); + procedure SortPrevColumnActionExecute(Sender: TObject); + procedure StdToolBarVisibleActionExecute(Sender: TObject); + procedure AddressBarVisibleActionExecute(Sender: TObject); + procedure LinkBarVisibleActionExecute(Sender: TObject); + procedure ListToolBarVisibleActionExecute(Sender: TObject); + procedure ListNameBarVisibleActionExecute(Sender: TObject); + procedure BrowserToolBarVisibleActionExecute(Sender: TObject); + procedure BrowserNameBarVisibleActionExecute(Sender: TObject); + procedure MsgBarVisibleActionExecute(Sender: TObject); + procedure MsgBarCloseActionExecute(Sender: TObject); + procedure StatusBarVisibleActionExecute(Sender: TObject); + procedure CabinetBBSActionExecute(Sender: TObject); + procedure CabinetHistoryActionExecute(Sender: TObject); + procedure CabinetFavoriteActionExecute(Sender: TObject); + procedure CabinetVisibleActionExecute(Sender: TObject); + procedure CabinetCloseActionExecute(Sender: TObject); + procedure LargeIconActionExecute(Sender: TObject); + procedure SmallIconActionExecute(Sender: TObject); + procedure ListIconActionExecute(Sender: TObject); + procedure DetailIconActionExecute(Sender: TObject); + procedure StopActionExecute(Sender: TObject); + procedure ArrangeActionExecute(Sender: TObject); + procedure PaneInitActionExecute(Sender: TObject); + procedure BrowserTabVisibleActionExecute(Sender: TObject); + procedure BrowserTabTopActionExecute(Sender: TObject); + procedure BrowserTabBottomActionExecute(Sender: TObject); + procedure BrowserTabTabStyleActionExecute(Sender: TObject); + procedure BrowserTabButtonStyleActionExecute(Sender: TObject); + procedure BrowserTabFlatStyleActionExecute(Sender: TObject); + procedure SetFocusForBrowserActionExecute(Sender: TObject); + procedure SetFocusForBrowserActionUpdate(Sender: TObject); + procedure SetFocusForThreadListActionExecute(Sender: TObject); + procedure SetFocusForCabinetActionExecute(Sender: TObject); + procedure SetFocusForCabinetActionUpdate(Sender: TObject); + procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject); + procedure BrowserMaxAndFocusActionExecute(Sender: TObject); + procedure UnSelectedListViewActionExecute(Sender: TObject); + procedure KidokuActionExecute(Sender: TObject); + procedure MidokuActionExecute(Sender: TObject); + procedure AllSelectActionExecute(Sender: TObject); + procedure AllSelectActionUpdate(Sender: TObject); + procedure ThreadSizeCalcForFileActionExecute(Sender: TObject); + procedure SetInputAssistActionExecute(Sender: TObject); + procedure OpenFindDialogActionExecute(Sender: TObject); + procedure ArchiveItemActionExecute(Sender: TObject); + procedure LiveItemActionExecute(Sender: TObject); + procedure FavoriteTreeViewItemNameCopyActionExecute(Sender: TObject); + procedure CloseAllEditorActionExecute(Sender: TObject); + procedure CloseAllEditorActionUpdate(Sender: TObject); + procedure PrevMoveHistoryUpdate(Sender: TObject); + procedure PrevMoveHistoryExecute(Sender: TObject); + procedure NextMoveHistoryUpdate(Sender: TObject); + procedure NextMoveHistoryExecute(Sender: TObject); + procedure ClickActiveElementActionExecute(Sender: TObject); + procedure VKDownActionExecute(Sender: TObject); + procedure VKUpActionExecute(Sender: TObject); + procedure VKRightActionExecute(Sender: TObject); + procedure VKLeftActionExecute(Sender: TObject); + procedure StoredTaskTrayActionExecute(Sender: TObject); + procedure LeftTabSelectActionUpdate(Sender: TObject); + procedure RightmostTabSelectActionUpdate(Sender: TObject); + procedure NewImageLinkToClipBoardActionExecute(Sender: TObject); + procedure AllImageLinkToClipbordActionExecute(Sender: TObject); + procedure SetForcusForAddresBarActionExecute(Sender: TObject); + procedure NewBoardSearchActionExecute(Sender: TObject); + procedure ScrollPageDownActionExecute(Sender: TObject); + procedure ScrollPageUpActionExecute(Sender: TObject); + procedure AllLinkToClipboardActionExecute(Sender: TObject); + procedure NewLinkToClipboardActionExecute(Sender: TObject); + procedure AddIDtoNGWord0ActionExecute(Sender: TObject); + procedure AddIDtoNGWord1ActionExecute(Sender: TObject); + procedure ExtractSameIDActionExecute(Sender: TObject); + procedure ShowTabListActionExecute(Sender: TObject); + procedure DereferenceResActionExecute(Sender: TObject); + procedure UpdateGikonaviActionExecute(Sender: TObject); + procedure konoURLPATHActionExecute(Sender: TObject); + procedure konoURLQueryActionExecute(Sender: TObject); + procedure konoURLQueryActionUpdate(Sender: TObject); private { Private éŒ¾ } + procedure ClearResFilter; + procedure SetResRange(range: Integer); + procedure SetThreadAreaHorNormal; + procedure SetThreadAreaHorizontal(gls : TGikoListState); + procedure SetThreadAreaVerNormal; + procedure SetThreadAreaVertical(gls : TGikoListState); + procedure SetThreadReadProperty(read: Boolean); + procedure SelectThreadSaveToFile(dat: Boolean); + function GetSortProperties(List: TObject;var vSortOrder: Boolean): Boolean; + procedure RecalcThreadSize(limit : Integer); + procedure ClearSelectComboBox; + procedure ClearMailAllEditor(); + procedure ClearNameTextAllEditor(); + procedure MoveURLWithHistory(URL : String; KeyMask: Boolean = False); + procedure BackToHistory(item: TMoveHistoryItem); + function GetActiveThreadLinks : IHTMLElementCollection; + procedure GetLinkURLs(links : IHTMLElementCollection; + URLs : TStringList; const Start: Integer; Exts : TStringList); public { Public éŒ¾ } + procedure RepaintStatusBar; + function EditorFormExists(): boolean; + procedure GetTabURLs(AStringList: TStringList); + procedure OpenURLs(AStringList: TStringList); published { Published éŒ¾ } - //TAction‚ÅGetActiveContent‚ªnilˆÈŠO‚Å—LŒø‚É‚È‚é + //! TAction‚ÅGetActiveContent‚ªnilˆÈŠO‚Å—LŒø‚É‚È‚é procedure DependActiveCntentActionUpdate(Sender: TObject); - //TAction‚ÅGetActiveContent‚ªnilˆÈŠO‚©‚ƒƒO‚ðŽ‚Á‚Ä‚¢‚é‚Æ—LŒø‚É‚È‚é + //! TAction‚ÅGetActiveContent‚ªnilˆÈŠO‚©‚ƒƒO‚ðŽ‚Á‚Ä‚¢‚é‚Æ—LŒø‚É‚È‚é procedure DependActiveCntentLogActionUpdate(Sender: TObject); - //TAction‚ÅActiveList‚ªTBoard‚Å—LŒø‚É‚È‚é + //! TAction‚ÅActiveList‚ªTBoard(”ñ“ÁŽê”Â)‚Å—LŒø‚É‚È‚é procedure DependActiveListTBoardActionUpdate(Sender: TObject); + //! TAction‚ÅActiveList‚ªTBoard‚Å—LŒø‚É‚È‚é + procedure DependActiveListTBoardWithSpeciapActionUpdate(Sender: TObject); end; var GikoDM: TGikoDM; + implementation uses - Windows, Math, Messages, Dialogs, Clipbrd, - Giko, GikoSystem, GikoUtil, BoardGroup, - FavoriteArrange, Favorite, Setting, MojuUtils, + Windows, Math, Clipbrd, + Giko, GikoUtil, BoardGroup, + FavoriteArrange, Favorite, MojuUtils, Editor, ListSelect, Search, Option, Round, KeySetting, Gesture, Kotehan, ToolBarSetting, - ToolBarUtil; - + ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon, + GikoBayesian, About, ShellAPI, + RoundName, RoundData, Menus, ListViewUtils, + ThreadControl, GikoMessage, InputAssist, + DefaultFileManager, Forms, NewBoardURL, UpdateCheck; const - CAPTION_NAME: string = 'ƒMƒRƒiƒr'; - USER_SETLINKBAR = WM_USER + 2003; - //ƒc[ƒ‹ƒo[ƒAƒCƒRƒ“ - TOOL_ICON_HEIGHT_MAX = 16; //‚‚³Å‘åƒAƒCƒRƒ“ - TOOL_ICON_HEIGHT_MIN = 17; //‚‚³Å¬ƒAƒCƒRƒ“ - TOOL_ICON_HEIGHT_NORMAL = 18; //‚‚³•W€ƒAƒCƒRƒ“ - TOOL_ICON_WIDTH_MAX = 19; //•Å‘åƒAƒCƒRƒ“ - TOOL_ICON_WIDTH_MIN = 20; //•Å¬ƒAƒCƒRƒ“ - TOOL_ICON_WIDTH_NORMAL = 21; //••W€ƒAƒCƒRƒ“ - - TOOL_ICON_FAV_FOLDER = 30; //‚¨‹C‚É“ü‚èƒtƒHƒ‹ƒ_ƒAƒCƒRƒ“ - TOOL_ICON_FAV_BOARD = 31; //‚¨‹C‚É“ü‚蔃AƒCƒRƒ“ - TOOL_ICON_FAV_THREAD = 32; //‚¨‹C‚É“ü‚èƒXƒŒƒAƒCƒRƒ“ + MSG_ERROR : string = 'ƒGƒ‰['; {$R *.dfm} // ************************************************************************* -// TAction‚ÅGetActiveContent‚ªnilˆÈŠO‚Å—LŒø‚É‚È‚é +//! TAction‚ÅGetActiveContent‚ªnilˆÈŠO‚Å—LŒø‚É‚È‚é // ************************************************************************* procedure TGikoDM.DependActiveCntentActionUpdate(Sender: TObject); begin TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil); end; // ************************************************************************* -// TAction‚ÅGetActiveContent‚ªnilˆÈŠO‚©‚ƒƒO‚ðŽ‚Á‚Ä‚¢‚é +//! TAction‚ÅGetActiveContent‚ªnilˆÈŠO‚©‚ƒƒO‚ðŽ‚Á‚Ä‚¢‚é // ************************************************************************* procedure TGikoDM.DependActiveCntentLogActionUpdate(Sender: TObject); begin @@ -305,14 +537,22 @@ begin and (GikoForm.GetActiveContent.IsLogFile); end; // ************************************************************************* -// TAction‚ÅActiveList‚ªTBoard‚Å—LŒø‚É‚È‚é +//! TAction‚ÅActiveList‚ªTBoard(”ñ“ÁŽê”Â)‚Å—LŒø‚É‚È‚é // ************************************************************************* procedure TGikoDM.DependActiveListTBoardActionUpdate(Sender: TObject); begin + TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard) and + (GikoForm.GetActiveList <> BoardGroup.SpecialBoard); +end; +// ************************************************************************* +//! TAction‚ÅActiveList‚ªTBoard‚Å—LŒø‚É‚È‚é +// ************************************************************************* +procedure TGikoDM.DependActiveListTBoardWithSpeciapActionUpdate(Sender: TObject); +begin TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard); end; // ************************************************************************* -// NGƒ[ƒh•ÒW +//! NGƒ[ƒh•ÒW // ************************************************************************* procedure TGikoDM.EditNGActionExecute(Sender: TObject); begin @@ -320,98 +560,90 @@ begin GikoSys.FAbon.EditNGwords; end; // ************************************************************************* -// NGƒ[ƒh“ǂݍž‚݁iÄ“ǂݍž‚݁j +//! NGƒ[ƒh“ǂݍž‚݁iÄ“ǂݍž‚݁j // ************************************************************************* procedure TGikoDM.ReloadActionExecute(Sender: TObject); begin //ƒŠƒ[ƒh‚ðŽÀs@Ž¸”s‚µ‚½‚烁ƒbƒZ[ƒWo—Í if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin - MsgBox(GikoForm.Handle, 'NGƒ[ƒhƒtƒ@ƒCƒ‹‚̍ēǂݍž‚Ý‚ÉŽ¸”s‚µ‚Ü‚µ‚½', 'ƒGƒ‰[', MB_OK or MB_ICONEXCLAMATION); + MsgBox(GikoForm.Handle, 'NGƒ[ƒhƒtƒ@ƒCƒ‹‚̍ēǂݍž‚Ý‚ÉŽ¸”s‚µ‚Ü‚µ‚½', + MSG_ERROR, MB_OK or MB_ICONEXCLAMATION); end else begin //‘S‚Ẵ^ƒu‚ɍĕ`‰æ‚ðÝ’è GikoForm.RepaintAllTabsBrowser(); end; end; // ************************************************************************* -// NGƒ[ƒh“ǂݍž‚݁iˆê‚ÂŒã‚ëj +//! NGƒ[ƒh“ǂݍž‚݁iˆê‚ÂŒã‚ëj // ************************************************************************* procedure TGikoDM.GoFowardActionExecute(Sender: TObject); -var - s: string; begin //ˆê‚ÂŒã‚ë‚̓ǂݍž‚݁@Ž¸”s‚µ‚½‚烁ƒbƒZ[ƒWo—Í if GikoSys.FAbon.GoBack =false then begin - MsgBox(GikoForm.Handle, 'ˆê‚ÂŒã‚ë‚ÌNGƒ[ƒhƒtƒ@ƒCƒ‹‚̓ǂݍž‚Ý‚ÉŽ¸”s‚µ‚Ü‚µ‚½', 'ƒGƒ‰[', MB_OK or MB_ICONEXCLAMATION); + MsgBox(GikoForm.Handle, 'ˆê‚ÂŒã‚ë‚ÌNGƒ[ƒhƒtƒ@ƒCƒ‹‚̓ǂݍž‚Ý‚ÉŽ¸”s‚µ‚Ü‚µ‚½', + MSG_ERROR, MB_OK or MB_ICONEXCLAMATION); end else begin //ƒXƒe[ƒ^ƒX‚É•\Ž¦‚³‚ê‚éNGƒ[ƒhƒtƒ@ƒCƒ‹–¼‚ðXV - s := GikoSys.FAbon.NGwordname; - GikoForm.StatusBar.Panels.Items[2].Text := s; - //ƒXƒe[ƒ^ƒX‚Ì•\Ž¦ƒTƒCƒY‚̃ŠƒTƒCƒY - GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100); - GikoForm.StatusBarResize(Sender); + RepaintStatusBar; //‘S‚Ẵ^ƒu‚ɍĕ`‰æ‚ðÝ’è GikoForm.RepaintAllTabsBrowser(); end; end; // ************************************************************************* -// NGƒ[ƒh“ǂݍž‚݁iˆê‚‘Oj +//! NGƒ[ƒh“ǂݍž‚݁iˆê‚‘Oj // ************************************************************************* procedure TGikoDM.GoBackActionExecute(Sender: TObject); -var - s: string; begin //ˆê‚ÂŒã‚ë‚̓ǂݍž‚݁@Ž¸”s‚µ‚½‚烁ƒbƒZ[ƒWo—Í if GikoSys.FAbon.GoForward =false then begin - MsgBox(GikoForm.Handle, 'ˆê‚‘O‚ÌNGƒ[ƒhƒtƒ@ƒCƒ‹‚̓ǂݍž‚Ý‚ÉŽ¸”s‚µ‚Ü‚µ‚½', 'ƒGƒ‰[', MB_OK or MB_ICONEXCLAMATION); + MsgBox(GikoForm.Handle, 'ˆê‚‘O‚ÌNGƒ[ƒhƒtƒ@ƒCƒ‹‚̓ǂݍž‚Ý‚ÉŽ¸”s‚µ‚Ü‚µ‚½', + MSG_ERROR, MB_OK or MB_ICONEXCLAMATION); end else begin - //ƒXƒe[ƒ^ƒX‚É•\Ž¦‚³‚ê‚éNGƒ[ƒhƒtƒ@ƒCƒ‹–¼‚ðXV - s := GikoSys.FAbon.NGwordname; - GikoForm.StatusBar.Panels.Items[2].Text := s; - //ƒXƒe[ƒ^ƒX‚Ì•\Ž¦ƒTƒCƒY‚̃ŠƒTƒCƒY - GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100); - GikoForm.StatusBarResize(Sender); - //‘S‚Ẵ^ƒu‚ɍĕ`‰æ‚ðÝ’è + //ƒXƒe[ƒ^ƒX‚É•\Ž¦‚³‚ê‚éNGƒ[ƒhƒtƒ@ƒCƒ‹–¼‚ðXV + RepaintStatusBar; + //‘S‚Ẵ^ƒu‚ɍĕ`‰æ‚ðÝ’è GikoForm.RepaintAllTabsBrowser(); end; end; // ************************************************************************* -// ƒAƒhƒŒƒXƒo[‚É•\Ž¦‚µ‚Ä‚¢‚éƒAƒhƒŒƒX‚ÖˆÚ“®‚·‚é +//! NGƒ[ƒh‚ð•ÏX‚µ‚½Œã‚̃Xƒe[ƒ^ƒXƒo[‚̍XVˆ— // ************************************************************************* -procedure TGikoDM.MoveToActionExecute(Sender: TObject); +procedure TGikoDM.RepaintStatusBar; var - URL: string; - idx: Integer; + s : String; +begin + //ƒXƒe[ƒ^ƒX‚É•\Ž¦‚³‚ê‚éNGƒ[ƒhƒtƒ@ƒCƒ‹–¼‚ðXV + s := GikoSys.FAbon.NGwordname; + GikoForm.StatusBar.Panels.Items[GiKo.NGWORDNAME_PANEL].Text := s; + //ƒXƒe[ƒ^ƒX‚Ì•\Ž¦ƒTƒCƒY‚̃ŠƒTƒCƒY + GikoForm.StatusBar.Panels[GiKo.NGWORDNAME_PANEL].Width + := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100); + GikoForm.StatusBarResize(nil); +end; +// ************************************************************************* +//! ƒAƒhƒŒƒXƒo[‚É•\Ž¦‚µ‚Ä‚¢‚éƒAƒhƒŒƒX‚ÖˆÚ“®‚·‚é +// ************************************************************************* +procedure TGikoDM.MoveToActionExecute(Sender: TObject); begin //ƒAƒhƒŒƒXƒRƒ“ƒ{ƒ{ƒbƒNƒX‚©‚çURL‚ðŽæ“¾ - URL := Trim(GikoForm.AddressComboBox.Text); //URL‚Ɉړ® - GikoForm.MoveToURL(URL); - //ˆÈ‰ºA—š—ð‚̏ˆ— - idx := GikoForm.AddressComboBox.Items.IndexOf(URL); - if idx = -1 then begin - GikoForm.AddressComboBox.Items.Insert(0, URL); - if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then - GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1); - end else begin - GikoForm.AddressComboBox.Items.Delete(idx); - GikoForm.AddressComboBox.Items.Insert(0, URL); - end; + MoveURLWithHistory( Trim(GikoForm.AddressComboBox.Text) ); end; // ************************************************************************* -// ‚¨‹C‚É“ü‚è‚̒ljÁƒ_ƒCƒAƒƒO‚ðŠJ‚­ +//! ‚¨‹C‚É“ü‚è‚̒ljÁƒ_ƒCƒAƒƒO‚ðŠJ‚­ // ************************************************************************* procedure TGikoDM.FavoriteAddActionExecute(Sender: TObject); begin GikoForm.ShowFavoriteAddDialog(GikoForm.GetActiveContent); end; // ************************************************************************* -// ‚¨‹C‚É“ü‚è‚̐®—ƒ_ƒCƒAƒƒO‚ðŠJ‚­ +//! ‚¨‹C‚É“ü‚è‚̐®—ƒ_ƒCƒAƒƒO‚ðŠJ‚­ // ************************************************************************* procedure TGikoDM.FavoriteArrangeActionExecute(Sender: TObject); var Dlg: TFavoriteArrangeDialog; begin - Dlg := TFavoriteArrangeDialog.Create(Self); + Dlg := TFavoriteArrangeDialog.Create(GikoForm); try Dlg.ShowModal; finally @@ -421,7 +653,7 @@ begin PostMessage( GikoForm.Handle, USER_SETLINKBAR, 0, 0 ); end; // ************************************************************************* -// ƒcƒŠ[‚ð‘S‚ĕ‚¶‚é +//! ƒcƒŠ[‚ð‘S‚ĕ‚¶‚é // ************************************************************************* procedure TGikoDM.FavoriteTreeViewCollapseActionExecute(Sender: TObject); var @@ -439,7 +671,7 @@ begin end; end; // ************************************************************************* -// ‚¨‹C‚É“ü‚è‚Ì–¼‘O‚ð•ÒW‚·‚é +//! ‚¨‹C‚É“ü‚è‚Ì–¼‘O‚ð•ÒW‚·‚é // ************************************************************************* procedure TGikoDM.FavoriteTreeViewRenameActionExecute(Sender: TObject); var @@ -463,11 +695,12 @@ begin end else begin GikoForm.ClickNode.Text := InputBox( '–¼‘O‚̕ύX', '‚¨‹C‚É“ü‚è‚̐V‚µ‚¢–¼‘O‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢', GikoForm.ClickNode.Text ); end; - + //XV‚µ‚½‚±‚Æ‚ð‹³‚¦‚é + FavoriteDM.Modified := true; GikoForm.SetLinkBar; end; // ************************************************************************* -// V‚µ‚­‚¨‹C‚É“ü‚è‚ɃtƒHƒ‹ƒ_‚ðì¬‚·‚é +//! V‚µ‚­‚¨‹C‚É“ü‚è‚ɃtƒHƒ‹ƒ_‚ðì¬‚·‚é // ************************************************************************* procedure TGikoDM.FavoriteTreeViewNewFolderActionExecute(Sender: TObject); var @@ -491,13 +724,15 @@ begin // FClickNode.Selected.Expanded := True; GikoForm.FavoriteTreeView.Selected := Node; GikoForm.ClickNode := Node; + //XV‚µ‚½‚±‚Æ‚ð‹³‚¦‚é + FavoriteDM.Modified := true; FavoriteTreeViewRenameAction.Execute; finally end; end; // ************************************************************************* -// ‚±‚Ì‚¨‹C‚É“ü‚è‚ðíœ‚·‚é +//! ‚±‚Ì‚¨‹C‚É“ü‚è‚ðíœ‚·‚é // ************************************************************************* procedure TGikoDM.FavoriteTreeViewDeleteActionExecute(Sender: TObject); const @@ -521,12 +756,14 @@ begin end; GikoForm.ClickNode.Delete; + //XV‚µ‚½‚±‚Æ‚ð‹³‚¦‚é + FavoriteDM.Modified := true; GikoForm.SetLinkBar; end; // ************************************************************************* -// ‚±‚̃tƒHƒ‹ƒ_‚É“ü‚Á‚Ä‚¢‚邨‹C‚É“ü‚è‚ð‘S‚ÄŠJ‚­ +//! ‚±‚̃tƒHƒ‹ƒ_‚É“ü‚Á‚Ä‚¢‚邨‹C‚É“ü‚è‚ð‘S‚ÄŠJ‚­ // ************************************************************************* procedure TGikoDM.FavoriteTreeViewBrowseFolderActionExecute( Sender: TObject); @@ -534,152 +771,77 @@ begin GikoForm.FavoriteBrowseFolder( GikoForm.ClickNode ); end; // ************************************************************************* -// ‘I‘ð‚³‚ê‚Ä‚¢‚邨‹C‚É“ü‚è‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚é +//! ‘I‘ð‚³‚ê‚Ä‚¢‚邨‹C‚É“ü‚è‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚é // ************************************************************************* procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject); var - ThreadItem: TThreadItem; FavThread: TFavoriteThreadItem; - Board: TBoard; FavBoard: TFavoriteBoardItem; shiftDown: Boolean; begin - - if GikoForm.ClickNode = nil then Exit; + if (GikoForm.ClickNode = nil) then Exit; shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001); if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data ); - ThreadItem := FavThread.Item; - if ThreadItem <> nil then - GikoForm.DownloadContent(ThreadItem, shiftDown); + if FavThread.Item <> nil then + GikoForm.DownloadContent(FavThread.Item, shiftDown); end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data ); - Board := FavBoard.Item; - GikoForm.DownloadList(Board, shiftDown); + GikoForm.DownloadList(FavBoard.Item, shiftDown); end; end; // ************************************************************************* -// ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ÌURL‚ðƒRƒs[‚·‚é +//! ‘I‘ð‚³‚ê‚Ä‚¢‚邨‹C‚É“ü‚è‚ÌURL‚ðƒRƒs[‚·‚é // ************************************************************************* procedure TGikoDM.FavoriteTreeViewURLCopyActionExecute(Sender: TObject); -var - FavThread : TFavoriteThreadItem; - FavBoard : TFavoriteBoardItem; - s : string; begin if GikoForm.ClickNode = nil then Exit; - if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin - - FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data ); - s := FavThread.URL + #13#10; - if s <> '' then - Clipboard.AsText := s; - - end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin - - FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data ); - s := FavBoard.URL + #13#10; - if s <> '' then - Clipboard.AsText := s; - + if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin + Clipboard.AsText := TFavoriteItem( GikoForm.ClickNode.Data ).URL + #13#10; end; end; // ************************************************************************* -// ‘I‘ð‚³‚ê‚Ä‚¢‚锂̖¼‘O‚ðƒRƒs[‚·‚é +//! ‘I‘ð‚³‚ê‚Ä‚¢‚邨‹C‚É“ü‚è‚Ì–¼‘O‚ðƒRƒs[‚·‚é // ************************************************************************* procedure TGikoDM.FavoriteTreeViewNameCopyActionExecute(Sender: TObject); -var - ThreadItem: TThreadItem; - FavThread: TFavoriteThreadItem; - Board: TBoard; - FavBoard: TFavoriteBoardItem; - s: string; begin if GikoForm.ClickNode = nil then Exit; - if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin - - FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data ); - ThreadItem := FavThread.Item; - - try - s := ThreadItem.Title + #13#10; - if s <> '' then - Clipboard.AsText := s; - finally - end; - - end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin - - FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data ); - Board := FavBoard.Item; - if Board <> nil then - if not Board.IsThreadDatRead then - GikoSys.ReadSubjectFile(Board); - - try - s := Board.Title + #13#10; - if s <> '' then - Clipboard.AsText := s; - finally - end; + if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin + Clipboard.AsText := + TFavoriteItem(GikoForm.ClickNode.Data).GetItemTitle + #13#10; + end else begin + Clipboard.AsText := + GikoForm.ClickNode.Text + #13#10; end; - end; // ************************************************************************* -// ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚Ì–¼‘O‚ÆURL‚ðƒRƒs[‚·‚é +//! ‘I‘ð‚³‚ê‚Ä‚¢‚邨‹C‚É“ü‚è‚Ì–¼‘O‚ÆURL‚ðƒRƒs[‚·‚é // ************************************************************************* procedure TGikoDM.FavoriteTreeViewNameURLCopyActionExecute( Sender: TObject); var - ThreadItem: TThreadItem; - FavThread: TFavoriteThreadItem; - Board: TBoard; - FavBoard: TFavoriteBoardItem; - s: string; + favItem : TFavoriteItem; begin if GikoForm.ClickNode = nil then Exit; - if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin - - FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data ); - ThreadItem := FavThread.Item; - - try - s := ThreadItem.Title + #13#10 + ThreadItem.URL + #13#10; - if s <> '' then - Clipboard.AsText := s; - finally - end; - - end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin - - FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data ); - Board := FavBoard.Item; - if Board <> nil then - if not Board.IsThreadDatRead then - GikoSys.ReadSubjectFile(Board); - - try - s := Board.Title + #13#10 + Board.URL + #13#10; - if s <> '' then - Clipboard.AsText := s; - finally - end; - + if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin + favItem := TFavoriteItem(GikoForm.ClickNode.Data); + Clipboard.AsText := favItem.GetItemTitle + #13#10 + + favItem.URL + #13#10; end; end; // ************************************************************************* -// ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ðíœ‚·‚é +//! ‘I‘ð‚³‚ê‚Ä‚¢‚邨‹C‚É“ü‚èƒXƒŒƒbƒh‚ðíœ‚·‚é // ************************************************************************* procedure TGikoDM.FavoriteTreeViewLogDeleteActionExecute(Sender: TObject); const @@ -713,7 +875,7 @@ begin end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚é +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.FavoriteTreeViewBrowseThreadActionExecute( Sender: TObject); @@ -732,41 +894,50 @@ begin end; end; +//! ƒŒƒX‚̍iž‚݃tƒBƒ‹ƒ^[‚ð‹ó‚É‚·‚é +procedure TGikoDM.ClearResFilter; +var + FilterList : TStringList; +begin + // ƒtƒBƒ‹ƒ^•¶Žš—ñ‚ð‹ó‚É‚·‚é + FilterList := TStringList.Create; + try + GikoSys.FSelectResFilter.LoadFromStringList( FilterList ); + GikoSys.FSelectResFilter.Reverse := False; + finally + FilterList.Free; + end; + GikoForm.SelectResWord := ''; +end; +// ************************************************************************* +//! ƒŒƒX‚Ì•\Ž¦”͈͂ðÝ’è‚·‚é +// ************************************************************************* +procedure TGikoDM.SetResRange(range: Integer); +begin + if GikoSys.ResRange <> range then begin + GikoSys.ResRange := range; + // ƒtƒBƒ‹ƒ^•¶Žš—ñ‚ð‹ó‚É‚·‚é + ClearResFilter; + GikoForm.RepaintAllTabsBrowser(); + end; +end; // ************************************************************************* -// ÅV100ƒŒƒX‚Ì‚Ý•\Ž¦ +//! ÅV100ƒŒƒX‚Ì‚Ý•\Ž¦ // ************************************************************************* procedure TGikoDM.OnlyAHundredResActionExecute(Sender: TObject); -var - FilterList : TStringList; begin if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) and (GikoForm.ActiveContent.Browser.Busy) then Exit; GikoForm.ResRangeMenuSelect := 100; OnlyAHundredResAction.Checked := True; - - if GikoSys.ResRange <> 100 then begin - GikoSys.ResRange := 100; - - // ƒtƒBƒ‹ƒ^•¶Žš—ñ‚ð‹ó‚É‚·‚é - FilterList := TStringList.Create; - try - GikoSys.FSelectResFilter.LoadFromStringList( FilterList ); - GikoSys.FSelectResFilter.Reverse := False; - finally - FilterList.Free; - end; - - GikoForm.SelectResWord := ''; - GikoForm.RepaintAllTabsBrowser(); - end; + //@•\Ž¦”͈͂ðÝ’è‚·‚éBÝ’è’l‚©‚ç‚Æ‚Á‚Ä‚­‚éB + SetResRange(GikoSys.Setting.ResRangeExCount); end; // ************************************************************************* -// –¢“ǃŒƒX‚Ì‚Ý•\Ž¦ +//! –¢“ǃŒƒX‚Ì‚Ý•\Ž¦ // ************************************************************************* procedure TGikoDM.OnlyKokoResActionExecute(Sender: TObject); -var - FilterList : TStringList; begin if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) and (GikoForm.ActiveContent.Browser.Busy) then Exit; @@ -774,28 +945,13 @@ begin GikoForm.ResRangeMenuSelect := Ord( grrKoko ); OnlyKokoResAction.Checked := True; - if GikoSys.ResRange <> Ord( grrKoko ) then begin - GikoSys.ResRange := Ord( grrKoko ); - - // ƒtƒBƒ‹ƒ^•¶Žš—ñ‚ð‹ó‚É‚·‚é - FilterList := TStringList.Create; - try - GikoSys.FSelectResFilter.LoadFromStringList( FilterList ); - GikoSys.FSelectResFilter.Reverse := False; - finally - FilterList.Free; - end; - - GikoForm.SelectResWord := ''; - GikoForm.RepaintAllTabsBrowser(); - end; + //@•\Ž¦”͈͂ðÝ’è‚·‚é + SetResRange(Ord( grrKoko )); end; // ************************************************************************* -// V’…ƒŒƒX‚Ì‚Ý•\Ž¦ +//! V’…ƒŒƒX‚Ì‚Ý•\Ž¦ // ************************************************************************* procedure TGikoDM.OnlyNewResActionExecute(Sender: TObject); -var - FilterList : TStringList; begin if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) and (GikoForm.ActiveContent.Browser.Busy) then Exit; @@ -803,24 +959,72 @@ begin GikoForm.ResRangeMenuSelect := Ord( grrNew ); OnlyNewResAction.Checked := True; - if GikoSys.ResRange <> Ord( grrNew ) then begin - GikoSys.ResRange := Ord( grrNew ); - - // ƒtƒBƒ‹ƒ^•¶Žš—ñ‚ð‹ó‚É‚·‚é - FilterList := TStringList.Create; - try - GikoSys.FSelectResFilter.LoadFromStringList( FilterList ); - GikoSys.FSelectResFilter.Reverse := False; - finally - FilterList.Free; - end; - - GikoForm.SelectResWord := ''; - GikoForm.RepaintAllTabsBrowser(); + //@•\Ž¦”͈͂ðÝ’è‚·‚é + SetResRange(Ord( grrNew )); +end; +// ************************************************************************* +//! ƒXƒŒƒbƒh•\Ž¦ƒGƒŠƒA’ʏí•\Ž¦‚É‚·‚é ’)ListOrientation = gloHorizontal@ +// ************************************************************************* +procedure TGikoDM.SetThreadAreaHorNormal; +begin + //’ʏí•\Ž¦‚É‚·‚é + GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth; + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; + BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; + GikoSys.Setting.ListWidthState := glsNormal; +end; +// ************************************************************************* +//! ƒXƒŒƒbƒh•\Ž¦ƒGƒŠƒAÅ‘å/Å¬•\Ž¦‚É‚·‚é ’)ListOrientation = gloHorizontal@ +// ************************************************************************* +procedure TGikoDM.SetThreadAreaHorizontal(gls : TGikoListState); +begin + if GikoSys.Setting.ListWidthState = glsNormal then + GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width; + //Å‘å•\Ž¦ + if (gls = glsMax) then begin + GikoForm.ViewPanel.Width := 1; + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; + BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; + GikoSys.Setting.ListWidthState := glsMax; + end else if (gls = glsMin) then begin + GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80; + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; + BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; + GikoSys.Setting.ListWidthState := glsMin; + end; +end; +// ************************************************************************* +//! ƒXƒŒƒbƒh•\Ž¦ƒGƒŠƒA’ʏí•\Ž¦‚É‚·‚é ’)ListOrientation = gloVertical +// ************************************************************************* +procedure TGikoDM.SetThreadAreaVerNormal; +begin + //’ʏí•\Ž¦‚É‚·‚é + GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight; + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; + BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; + GikoSys.Setting.ListHeightState := glsNormal; +end; +// ************************************************************************* +//! ƒXƒŒƒbƒh•\Ž¦ƒGƒŠƒAÅ‘å/Å¬•\Ž¦‚É‚·‚é ’)ListOrientation = gloVertical +// ************************************************************************* +procedure TGikoDM.SetThreadAreaVertical(gls : TGikoListState); +begin + if GikoSys.Setting.ListHeightState = glsNormal then + GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height; + if (gls = glsMin) then begin + GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7; + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; + BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; + GikoSys.Setting.ListHeightState := glsMin; + end else if (gls = glsMax) then begin + GikoForm.ViewPanel.Height := 1; + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; + BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; + GikoSys.Setting.ListHeightState := glsMax; end; end; // ************************************************************************* -// ƒXƒŒƒbƒh•\Ž¦ƒGƒŠƒA‚ð‘å‚«‚­•\Ž¦‚·‚é +//! ƒXƒŒƒbƒh•\Ž¦ƒGƒŠƒA‚ð‘å‚«‚­•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.BrowserMaxActionExecute(Sender: TObject); begin @@ -828,60 +1032,28 @@ begin case GikoSys.Setting.ListWidthState of glsMax: begin //’ʏí•\Ž¦‚É‚·‚é - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //•`‰æ’âŽ~ - GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth; - BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; - BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; - GikoSys.Setting.ListWidthState := glsNormal; - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //•`‰æ + SetThreadAreaHorNormal; end; glsMin, glsNormal: begin //Å‘å•\Ž¦‚É‚·‚é - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //•`‰æ’âŽ~ - if GikoSys.Setting.ListWidthState = glsNormal then - GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width; - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //•`‰æ - GikoForm.ViewPanel.Width := 1; - BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; - BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; - GikoSys.Setting.ListWidthState := glsMax; + SetThreadAreaHorizontal(glsMax); end; end; end else begin case GikoSys.Setting.ListHeightState of glsMax: begin //’ʏí•\Ž¦‚É‚·‚é - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //•`‰æ’âŽ~ - GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight; - BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; - BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; - GikoSys.Setting.ListHeightState := glsNormal; - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //•`‰æ + SetThreadAreaVerNormal; end; glsMin, glsNormal: begin //Å‘å•\Ž¦‚É‚·‚é - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //•`‰æ’âŽ~ - if GikoSys.Setting.ListHeightState = glsNormal then - GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height; - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //•`‰æ - GikoForm.ViewPanel.Height := 1; - BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; - BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; - GikoSys.Setting.ListHeightState := glsMax; + SetThreadAreaVertical(glsMax); end; end; end; end; // ************************************************************************* -// ƒXƒŒƒbƒh•\Ž¦ƒGƒŠƒA‚ð¬‚³‚­•\Ž¦‚·‚é +//! ƒXƒŒƒbƒh•\Ž¦ƒGƒŠƒA‚ð¬‚³‚­•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.BrowserMinActionExecute(Sender: TObject); begin @@ -889,88 +1061,56 @@ begin case GikoSys.Setting.ListWidthState of glsMax, glsNormal: begin //Å¬•\Ž¦‚É‚·‚é - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //•`‰æ’âŽ~ - if GikoSys.Setting.ListWidthState = glsNormal then - GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width; - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //•`‰æ - GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80; - BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; - BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; - GikoSys.Setting.ListWidthState := glsMin; + SetThreadAreaHorizontal(glsMin); end; glsMin: begin //’ʏí•\Ž¦‚É‚·‚é - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //•`‰æ’âŽ~ - GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth; - BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; - BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; - GikoSys.Setting.ListWidthState := glsNormal; - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //•`‰æ + SetThreadAreaHorNormal; end; end; end else begin case GikoSys.Setting.ListHeightState of glsMax, glsNormal: begin //Å¬•\Ž¦‚É‚·‚é - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //•`‰æ’âŽ~ - if GikoSys.Setting.ListHeightState = glsNormal then - GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height; - GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7; - BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; - BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; - GikoSys.Setting.ListHeightState := glsMin; - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //•`‰æ + SetThreadAreaVertical(glsMin); end; glsMin: begin //’ʏí•\Ž¦‚É‚·‚é - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //•`‰æ’âŽ~ - GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight; - BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; - BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; - GikoSys.Setting.ListHeightState := glsNormal; - if GikoForm.ActiveContent <> nil then - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //•`‰æ + SetThreadAreaVerNormal; end; end; end; end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̐擪‚ÖˆÚ“®‚·‚é +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̐擪‚ÖˆÚ“®‚·‚é // ************************************************************************* procedure TGikoDM.ScrollTopActionExecute(Sender: TObject); begin GikoForm.BrowserMovement('top'); end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̍Ōã‚ÖˆÚ“®‚·‚é +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̍Ōã‚ÖˆÚ“®‚·‚é // ************************************************************************* procedure TGikoDM.ScrollLastActionExecute(Sender: TObject); begin GikoForm.BrowserMovement('bottom'); end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̐V’…‚ÖˆÚ“®‚·‚é +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̐V’…‚ÖˆÚ“®‚·‚é // ************************************************************************* procedure TGikoDM.ScrollNewActionExecute(Sender: TObject); begin GikoForm.BrowserMovement('new'); end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̃RƒR‚Ü‚Å“Ç‚ñ‚¾‚ÖˆÚ“®‚·‚é +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̃RƒR‚Ü‚Å“Ç‚ñ‚¾‚ÖˆÚ“®‚·‚é // ************************************************************************* procedure TGikoDM.ScrollKokoActionExecute(Sender: TObject); begin GikoForm.BrowserMovement('koko'); end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̃RƒR‚Ü‚Å“Ç‚ñ‚¾‚ÖˆÚ“®‚·‚é‚ÌUpdateƒCƒxƒ“ƒg +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̃RƒR‚Ü‚Å“Ç‚ñ‚¾‚ÖˆÚ“®‚·‚é‚ÌUpdateƒCƒxƒ“ƒg // ************************************************************************* procedure TGikoDM.ScrollKokoActionUpdate(Sender: TObject); begin @@ -979,7 +1119,7 @@ begin and (GikoForm.GetActiveContent.Kokomade <> -1); end; // ************************************************************************* -// ƒŒƒX‘‚«ž‚݃EƒBƒ“ƒhƒE‚ð•\Ž¦‚·‚é +//! ƒŒƒX‘‚«ž‚݃EƒBƒ“ƒhƒE‚ð•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.EditorActionExecute(Sender: TObject); var @@ -990,19 +1130,18 @@ begin if Item = nil then Exit; Editor := TEditorForm.Create(GikoForm.GetMainForm); Editor.SetThreadItem(Item); - GikoSys.LoadEditorKeySetting(Editor.ActionList); Editor.Show; Editor.BodyEdit.SetFocus; end; // ************************************************************************* -// ƒXƒŒ‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚é +//! ƒXƒŒ‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.IEActionExecute(Sender: TObject); begin ShowThreadAction.Execute; end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚é +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.ShowThreadActionExecute(Sender: TObject); var @@ -1013,7 +1152,7 @@ begin GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto); end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̔‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚é +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚̔‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.ShowBoardActionExecute(Sender: TObject); var @@ -1024,7 +1163,7 @@ begin GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto); end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚ÌURL‚ðƒRƒs[‚·‚é +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚ÌURL‚ðƒRƒs[‚·‚é // ************************************************************************* procedure TGikoDM.URLCopyActionExecute(Sender: TObject); var @@ -1039,7 +1178,7 @@ begin Clipboard.AsText := s; end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh–¼‚ðƒRƒs[‚·‚é +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh–¼‚ðƒRƒs[‚·‚é // ************************************************************************* procedure TGikoDM.NameCopyActionExecute(Sender: TObject); var @@ -1054,7 +1193,7 @@ begin Clipboard.AsText := s; end; // ************************************************************************* -// Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh–¼‚ÆURL‚ðƒRƒs[‚·‚é +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh–¼‚ÆURL‚ðƒRƒs[‚·‚é // ************************************************************************* procedure TGikoDM.NameURLCopyActionExecute(Sender: TObject); var @@ -1069,7 +1208,7 @@ begin Clipboard.AsText := s; end; // ************************************************************************* -// •\Ž¦‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚é +//! •\Ž¦‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚é // ************************************************************************* procedure TGikoDM.ItemReloadActionExecute(Sender: TObject); var @@ -1082,7 +1221,7 @@ begin GikoForm.DownloadContent(ThreadItem, shiftDown); end; // ************************************************************************* -// Œ»ÝŠJ‚¢‚Ä‚¢‚éƒ^ƒu‚ð•Â‚¶‚é +//! Œ»ÝŠJ‚¢‚Ä‚¢‚éƒ^ƒu‚ð•Â‚¶‚é // ************************************************************************* procedure TGikoDM.BrowserTabCloseActionExecute(Sender: TObject); var @@ -1096,14 +1235,14 @@ begin end; end; // ************************************************************************* -// ƒ^ƒu‚ª‚P‚ˆȏ゠‚ꂪ—LŒø‚É‚·‚éUpdateƒCƒxƒ“ƒg +//! ƒ^ƒu‚ª‚P‚ˆȏ゠‚ꂪ—LŒø‚É‚·‚éUpdateƒCƒxƒ“ƒg // ************************************************************************* procedure TGikoDM.BrowserTabCloseActionUpdate(Sender: TObject); begin TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0); end; // ************************************************************************* -// Œ»ÝŠJ‚¢‚Ä‚¢‚éƒ^ƒuˆÈŠO‚ð•Â‚¶‚é +//! Œ»ÝŠJ‚¢‚Ä‚¢‚éƒ^ƒuˆÈŠO‚ð•Â‚¶‚é // ************************************************************************* procedure TGikoDM.NotSelectTabCloseActionExecute(Sender: TObject); var @@ -1126,14 +1265,14 @@ begin GikoForm.BrowserTab.Tabs.EndUpdate; end; // ************************************************************************* -// ƒ^ƒu‚ª‚Q‚ˆȏ゠‚ꂪ—LŒø‚É‚·‚éUpdateƒCƒxƒ“ƒg +//! ƒ^ƒu‚ª‚Q‚ˆȏ゠‚ꂪ—LŒø‚É‚·‚éUpdateƒCƒxƒ“ƒg // ************************************************************************* procedure TGikoDM.NotSelectTabCloseActionUpdate(Sender: TObject); begin TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1); end; // ************************************************************************* -// ‘S‚Ẵ^ƒu‚ð•Â‚¶‚é +//! ‘S‚Ẵ^ƒu‚ð•Â‚¶‚é // ************************************************************************* procedure TGikoDM.AllTabCloseActionExecute(Sender: TObject); var @@ -1157,7 +1296,7 @@ begin GikoForm.Caption := CAPTION_NAME ; end; // ************************************************************************* -// Œ»ÝŠJ‚¢‚Ä‚¢‚éƒ^ƒu‚̃XƒŒƒbƒh‚ðíœ‚·‚é +//! Œ»ÝŠJ‚¢‚Ä‚¢‚éƒ^ƒu‚̃XƒŒƒbƒh‚ðíœ‚·‚é // ************************************************************************* procedure TGikoDM.ActiveLogDeleteActionExecute(Sender: TObject); const @@ -1176,6 +1315,7 @@ begin if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then Exit; GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx])); + GikoForm.DeleteHistory(ThreadItem); ThreadItem.DeleteLogFile; if ThreadItem.ParentBoard = GikoForm.ActiveList then GikoForm.ListView.Refresh; @@ -1183,7 +1323,7 @@ begin end; end; // ************************************************************************* -// ˆê”ԍ¶‚̃^ƒu‚ð‘I‘ð‚·‚é +//! ˆê”ԍ¶‚̃^ƒu‚ð‘I‘ð‚·‚é // ************************************************************************* procedure TGikoDM.LeftmostTabSelectActionExecute(Sender: TObject); begin @@ -1193,7 +1333,19 @@ begin end; end; // ************************************************************************* -// ƒ^ƒu‚̐”‚ª‚PˆÈã‚ŁAƒ^ƒu‚̃Cƒ“ƒfƒbƒNƒX‚ª‚OˆÈŠO‚Å—LŒø‚É‚È‚éUpdateƒCƒxƒ“ƒg +//! ¶‚̃^ƒu‚ð‘I‘ð‚·‚é‚ÌUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.LeftTabSelectActionUpdate(Sender: TObject); +begin + if ( not GikoSys.Setting.LoopBrowserTabs ) then begin + LeftmostTabSelectActionUpdate(Sender); + end else begin + TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1); + end; +end; + +// ************************************************************************* +//! ƒ^ƒu‚̐”‚ª‚PˆÈã‚ŁAƒ^ƒu‚̃Cƒ“ƒfƒbƒNƒX‚ª‚OˆÈŠO‚Å—LŒø‚É‚È‚éUpdateƒCƒxƒ“ƒg // ************************************************************************* procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject); begin @@ -1201,7 +1353,7 @@ begin and (GikoForm.BrowserTab.TabIndex <> 0); end; // ************************************************************************* -// ¶‚̃^ƒu‚ð‘I‘ð‚·‚é +//! ¶‚̃^ƒu‚ð‘I‘ð‚·‚é // ************************************************************************* procedure TGikoDM.LeftTabSelectActionExecute(Sender: TObject); begin @@ -1212,11 +1364,17 @@ begin end else if GikoForm.BrowserTab.TabIndex > 0 then begin GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1; GikoForm.BrowserTab.OnChange(nil); - end; + end else begin + if (GikoSys.Setting.LoopBrowserTabs) and + (GikoForm.BrowserTab.TabIndex = 0) then begin + GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1; + GikoForm.BrowserTab.OnChange(nil); + end; + end; end; end; // ************************************************************************* -// ‰E‚̃^ƒu‚ð‘I‘ð‚·‚é +//! ‰E‚̃^ƒu‚ð‘I‘ð‚·‚é // ************************************************************************* procedure TGikoDM.RightTabSelectActionExecute(Sender: TObject); begin @@ -1227,19 +1385,29 @@ begin end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1; GikoForm.BrowserTab.OnChange(nil); - end; + end else begin + if (GikoSys.Setting.LoopBrowserTabs) and + (GikoForm.BrowserTab.TabIndex = (GikoForm.BrowserTab.Tabs.Count - 1)) then begin + GikoForm.BrowserTab.TabIndex := 0; + GikoForm.BrowserTab.OnChange(nil); + end; + end; end; end; // ************************************************************************* -// ƒ^ƒu‚̐”‚ª‚PˆÈã‚ŁAƒ^ƒu‚ª‰E’[ˆÈŠO‚Å—LŒø‚É‚È‚éUpdateƒCƒxƒ“ƒg +//! ‰E‚̃^ƒu‚ð‘I‘ð‚·‚éUpdateƒCƒxƒ“ƒg // ************************************************************************* procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject); begin - TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0) - and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1); + if ( not GikoSys.Setting.LoopBrowserTabs ) then begin + RightmostTabSelectActionUpdate(Sender); + end else begin + TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1); + end; end; + // ************************************************************************* -// ˆê”Ô‰E‚̃^ƒu‚ð‘I‘ð‚·‚é +//! ˆê”Ô‰E‚̃^ƒu‚ð‘I‘ð‚·‚é // ************************************************************************* procedure TGikoDM.RightmostTabSelectActionExecute(Sender: TObject); begin @@ -1249,7 +1417,16 @@ begin end; end; // ************************************************************************* -// ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ð‚¨‹C‚É“ü‚è‚ɒljÁ +//! ˆê”Ô‰E‚̃^ƒu‚ð‘I‘ð‚·‚é‚ÌUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.RightmostTabSelectActionUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0) + and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1); + +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ð‚¨‹C‚É“ü‚è‚ɒljÁ // ************************************************************************* procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject); begin @@ -1257,7 +1434,7 @@ begin GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data)); end; // ************************************************************************* -// ƒXƒŒƒbƒhˆê——‚ŁAƒXƒŒ‚ª‚P‚ˆȏã‘I‘ð‚³‚ê‚Ä‚¢‚é—LŒø‚É‚È‚éUpdateƒCƒxƒ“ƒg +//! ƒXƒŒƒbƒhˆê——‚ŁAƒXƒŒ‚ª‚P‚ˆȏã‘I‘ð‚³‚ê‚Ä‚¢‚é—LŒø‚É‚È‚éUpdateƒCƒxƒ“ƒg // ************************************************************************* procedure TGikoDM.ThreadFavoriteAddActionUpdate(Sender: TObject); begin @@ -1265,7 +1442,7 @@ begin and (GikoForm.ListView.SelCount > 0); end; // ************************************************************************* -// ƒŒƒX‚Ì“à—e‚ði‚荞‚Þ +//! ƒŒƒX‚Ì“à—e‚ði‚荞‚Þ // ************************************************************************* procedure TGikoDM.SelectResActionExecute(Sender: TObject); var @@ -1273,7 +1450,7 @@ var FilterList : TStringList; idx : Integer; begin - Dlg := TListSelectDialog.Create(Self); + Dlg := TListSelectDialog.Create(GikoForm); try Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList); Dlg.SelectComboBox.Text := GikoForm.SelectResWord; @@ -1328,11 +1505,9 @@ begin end; // ************************************************************************* -// ‘S‚ẴŒƒX‚ð•\Ž¦‚·‚é +//! ‘S‚ẴŒƒX‚ð•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.AllResActionExecute(Sender: TObject); -var - FilterList : TStringList; begin if(GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil ) and (GikoForm.ActiveContent.Browser.Busy) then Exit; @@ -1340,25 +1515,11 @@ begin GikoForm.ResRangeMenuSelect := Ord( grrAll ); AllResAction.Checked := True; - if GikoSys.ResRange <> Ord( grrAll ) then begin - GikoSys.ResRange := Ord( grrAll ); - - // ƒtƒBƒ‹ƒ^•¶Žš—ñ‚ð‹ó‚É‚·‚é - FilterList := TStringList.Create; - try - GikoSys.FSelectResFilter.LoadFromStringList( FilterList ); - GikoSys.FSelectResFilter.Reverse := False; - finally - FilterList.Free; - end; - - GikoForm.SelectResWord := ''; - - GikoForm.RepaintAllTabsBrowser(); - end; + //@•\Ž¦”͈͂ðÝ’è‚·‚é + SetResRange(Ord( grrAll )); end; // ************************************************************************* -// ƒŒƒX‚Ì•\Ž¦”͈͂ðÝ’è +//! ƒŒƒX‚Ì•\Ž¦”͈͂ðÝ’è // ************************************************************************* procedure TGikoDM.ResRangeActionExecute(Sender: TObject); begin @@ -1371,14 +1532,14 @@ begin end; // ************************************************************************* -// ‚±‚̃XƒŒƒbƒh‚ðŠÜ‚ÞƒXƒŒƒbƒhˆê——‚ð•\Ž¦ +//! ‚±‚̃XƒŒƒbƒh‚ðŠÜ‚ÞƒXƒŒƒbƒhˆê——‚ð•\Ž¦ // ************************************************************************* procedure TGikoDM.UpBoardActionExecute(Sender: TObject); begin GikoForm.SelectTreeNode( GikoForm.GetActiveContent.ParentBoard, True ); end; // ************************************************************************* -// Žw’肵‚½”ԍ†‚̃ŒƒX‚É”ò‚Ô +//! Žw’肵‚½”ԍ†‚̃ŒƒX‚É”ò‚Ô // ************************************************************************* procedure TGikoDM.JumpToNumOfResActionExecute(Sender: TObject); var @@ -1390,16 +1551,16 @@ begin str := ZenToHan(str); res := StrToIntDef(str, -1); if (res > 0) and (res <= GikoForm.GetActiveContent.Count) then begin - GikoForm.BrowserMovement(IntToStr(res), GikoForm.ActiveContent); + GikoForm.ActiveContent.Move(IntToStr(res)); SetFocusForBrowserAction.Execute; end else if res > GikoForm.GetActiveContent.Count then begin - GikoForm.BrowserMovement(IntToStr(GikoForm.GetActiveContent.Count), GikoForm.ActiveContent); + GikoForm.ActiveContent.Move(IntToStr(GikoForm.GetActiveContent.Count)); SetFocusForBrowserAction.Execute; end; end; end; // ************************************************************************* -// ƒAƒNƒeƒBƒu‚ȃ^ƒu‚æ‚è‰E‚ð•Â‚¶‚é +//! ƒAƒNƒeƒBƒu‚ȃ^ƒu‚æ‚è‰E‚ð•Â‚¶‚é // ************************************************************************* procedure TGikoDM.RightTabCloseActionExecute(Sender: TObject); var @@ -1416,14 +1577,14 @@ begin GikoForm.BrowserTab.Tabs.EndUpdate; end; // ************************************************************************* -// ƒ^ƒu‚̐”‚ª‚QˆÈã‚Å—LŒø‚ÈUpdateƒCƒxƒ“ƒg +//! ƒ^ƒu‚̐”‚ª‚QˆÈã‚Å—LŒø‚ÈUpdateƒCƒxƒ“ƒg // ************************************************************************* procedure TGikoDM.RightTabCloseActionUpdate(Sender: TObject); begin TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1); end; // ************************************************************************* -// ƒAƒNƒeƒBƒu‚ȃ^ƒu‚æ‚荶‚ð•Â‚¶‚é +//! ƒAƒNƒeƒBƒu‚ȃ^ƒu‚æ‚荶‚ð•Â‚¶‚é // ************************************************************************* procedure TGikoDM.LeftTabCloseActionExecute(Sender: TObject); var @@ -1444,10 +1605,14 @@ end; ////////////////////////////////ƒXƒŒƒbƒh‚Ü‚Å‚¨‚µ‚Ü‚¢///////////////////// procedure TGikoDM.DataModuleCreate(Sender: TObject); begin - + // GikoDM‚æ‚è‚à‘‚­‰Šú‰»‚³‚ê‚é•K—v‚ª‚ ‚éƒtƒ@ƒCƒ‹‚ª‚¢‚é‚Æ‚±‚¯‚éII + // ‰Šú‰»‡”Ô‚É’ˆÓ‚·‚邱‚ƁII + //‰‰ñ‹N“®Žž‚̏‰Šú‰»ƒtƒ@ƒCƒ‹Ý’è + TDefaultFileManager.CopyDefaultFiles( + GikoSys.GetAppDir + 'defaultFiles.ini'); end; // ************************************************************************* -// ƒƒOŒŸõƒ_ƒCƒAƒƒO‚ð•\Ž¦‚·‚é +//! ƒƒOŒŸõƒ_ƒCƒAƒƒO‚ð•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.SearchActionExecute(Sender: TObject); var @@ -1460,7 +1625,7 @@ begin else chk := nil; - GikoForm.SearchDialog := TSearchDialog.Create(Self, chk); + GikoForm.SearchDialog := TSearchDialog.Create(GikoForm, chk); GikoForm.SearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList ); end; @@ -1470,13 +1635,13 @@ begin end; end; // ************************************************************************* -// ƒIƒvƒVƒ‡ƒ“ƒ_ƒCƒAƒƒO‚ð•\Ž¦‚·‚é +//! ƒIƒvƒVƒ‡ƒ“ƒ_ƒCƒAƒƒO‚ð•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.OptionActionExecute(Sender: TObject); var Dlg: TOptionDialog; begin - Dlg := TOptionDialog.Create(Self); + Dlg := TOptionDialog.Create(GikoForm); try Dlg.ShowModal; finally @@ -1484,13 +1649,13 @@ begin end; end; // ************************************************************************* -// „‰ñƒ_ƒCƒAƒƒO‚ð•\Ž¦‚·‚é +//! „‰ñƒ_ƒCƒAƒƒO‚ð•\Ž¦‚·‚é // ************************************************************************* procedure TGikoDM.RoundActionExecute(Sender: TObject); var Dlg: TRoundDialog; begin - Dlg := TRoundDialog.Create(Self); + Dlg := TRoundDialog.Create(GikoForm); try Dlg.ShowModal; finally @@ -1498,17 +1663,17 @@ begin end; end; // ************************************************************************* -// ƒL[Ý’èƒ_ƒCƒAƒƒO‚ðŠJ‚­ +//! ƒL[Ý’èƒ_ƒCƒAƒƒO‚ðŠJ‚­ // ************************************************************************* procedure TGikoDM.KeySettingActionExecute(Sender: TObject); var Dlg: TKeySettingForm; begin - Dlg := TKeySettingForm.Create(Self); + Dlg := TKeySettingForm.Create(GikoForm); try if Dlg.ShowModal = mrOk then begin - GikoSys.SaveKeySetting(GikoFormActionList); - GikoSys.SaveEditorKeySetting(Dlg.EditorForm.ActionList); + GikoSys.SaveKeySetting(GikoFormActionList, Setting.KEY_SETTING_FILE_NAME); + GikoSys.SaveKeySetting(Dlg.EditorForm.ActionList, Setting.EKEY_SETTING_FILE_NAME); GikoSys.Setting.Gestures.SaveGesture( GikoSys.Setting.GetGestureFileName ); end; @@ -1527,13 +1692,13 @@ begin end; end; // ************************************************************************* -// ƒL[Ý’èƒ_ƒCƒAƒƒO‚ðŠJ‚­ +//! ƒL[Ý’èƒ_ƒCƒAƒƒO‚ðŠJ‚­ // ************************************************************************* procedure TGikoDM.KotehanActionExecute(Sender: TObject); var Dlg: TKotehanDialog; begin - Dlg := TKotehanDialog.Create(Self); + Dlg := TKotehanDialog.Create(GikoForm); try Dlg.ShowModal; finally @@ -1541,14 +1706,12 @@ begin end; end; // ************************************************************************* -// ƒc[ƒ‹ƒo[Ý’èƒ_ƒCƒAƒƒO‚ðŠJ‚­ +//! ƒc[ƒ‹ƒo[Ý’èƒ_ƒCƒAƒƒO‚ðŠJ‚­ // ************************************************************************* procedure TGikoDM.ToolBarSettingActionExecute(Sender: TObject); var Dlg: TToolBarSettingDialog; i: Integer; - //Component: TComponent; - ToolButton : TToolButton; begin Dlg := TToolBarSettingDialog.Create(GikoForm, GikoFormActionList); try @@ -1586,59 +1749,7 @@ begin SaveToolBarSetting(GikoForm.StdToolBar); SaveToolBarSetting(GikoForm.ListToolBar); //ListToolBar‚É‚¢‚é‚©‚à‚µ‚ê‚È‚¢iž‚ÝComboBox‚ð”z’u - GikoForm.SelectComboBoxPanel.Visible := False; - try - for i := GikoForm.ListToolBar.ControlCount - 1 downto 0 do - begin - if GikoForm.ListToolBar.Controls[ i ].Action = SelectItemAction then - begin - GikoForm.SelectComboBoxPanel.Left := - GikoForm.ListToolBar.Controls[ i ].Left; - GikoForm.SelectComboBoxPanel.Width := - GikoSys.Setting.SelectComboBoxWidth; - GikoForm.SelectComboBoxPanel.Parent := - GikoForm.ListToolBar; - GikoForm.SelectComboBoxPanel.Visible := True; - - GikoForm.SelectComboBox.Left := 0; - GikoForm.SelectComboBox.Top := 0; - GikoForm.SelectComboBox.Height := - GikoForm.SelectComboBoxPanel.ClientHeight; - GikoForm.SelectComboBox.Width := - GikoForm.SelectComboBoxPanel.Width - - GikoForm.SelectComboBoxSplitter.Width; - - - //ˆê‚ÂŒ©‚¦‚È‚¢ƒ{ƒ^ƒ“‚ð“Ë‚Áž‚Þ - ToolButton := TToolButton(GikoForm.ListToolBar.FindComponent('SelectComboBoxDummy')); - if ToolButton <> nil then begin - ToolButton.Parent := nil; - end else begin - ToolButton := TToolButton.Create(GikoForm.ListToolBar); - ToolButton.Name := 'SelectComboBoxDummy'; - end; - - ToolButton.Style := tbsSeparator; - ToolButton.Width := 0; - ToolButton.Left := GikoForm.ListToolBar.Controls[ i ].Left; - GikoForm.ListToolBar.InsertControl(ToolButton); - ToolButton.Visible := False; - - // ƒXƒŒƒbƒhiž‚ׂ̗ɃZƒpƒŒ[ƒ^‚ª‚ ‚éê‡‚͉B‚· - if (i + 1) < GikoForm.ListToolBar.ControlCount then - if GikoForm.ListToolBar.Controls[ i + 1 ] is TToolButton then - if TToolButton( GikoForm.ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then - GikoForm.ListToolBar.Controls[ i + 1 ].Visible := False; - - - // ƒXƒŒƒbƒhižƒ{ƒ^ƒ“‚ð‰B‚· - GikoForm.ListToolBar.Controls[ i ].Visible := False; - - break; - end; - end; - except - end; + GikoForm.SetSelectComboBox; GikoForm.ResetBandInfo( GikoForm.ListCoolBar, GikoForm.ListToolBar ); SaveToolBarSetting(GikoForm.BrowserToolBar); end; @@ -1648,7 +1759,7 @@ begin end; end; // ************************************************************************* -// ƒ~ƒ…[ƒg +//! ƒ~ƒ…[ƒg // ************************************************************************* procedure TGikoDM.MuteActionExecute(Sender: TObject); begin @@ -1656,7 +1767,7 @@ begin end; ////////////////////////////////ƒc[ƒ‹‚Ü‚Å‚¨‚µ‚Ü‚¢///////////////////// // ************************************************************************* -// ƒXƒŒƒbƒhˆê——‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚é +//! ƒXƒŒƒbƒhˆê——‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚é // ************************************************************************* procedure TGikoDM.TreeSelectBoradReloadExecute(Sender: TObject); var @@ -1676,7 +1787,7 @@ begin GikoForm.DownloadList(Board); end; // ************************************************************************* -// ‘I‘ð‚³‚ê‚½ƒXƒŒƒbƒh‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚é +//! ‘I‘ð‚³‚ê‚½ƒXƒŒƒbƒh‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚é // ************************************************************************* procedure TGikoDM.TreeSelectThreadReloadExecute(Sender: TObject); var @@ -1696,7 +1807,7 @@ begin GikoForm.DownloadContent(ThreadItem); end; // ************************************************************************* -// ‘I‘ð‚³‚ê‚½”‚ÌURL‚ðƒRƒs[‚·‚é +//! ‘I‘ð‚³‚ê‚½”‚ÌURL‚ðƒRƒs[‚·‚é // ************************************************************************* procedure TGikoDM.TreeSelectURLCopyExecute(Sender: TObject); var @@ -1717,7 +1828,7 @@ begin Clipboard.AsText := s; end; // ************************************************************************* -// ‘I‘ð‚³‚ê‚½”‚̖¼‘O‚ÆURL‚ðƒRƒs[‚·‚é +//! ‘I‘ð‚³‚ê‚½”‚̖¼‘O‚ÆURL‚ðƒRƒs[‚·‚é // ************************************************************************* procedure TGikoDM.TreeSelectNameURLCopyExecute(Sender: TObject); var @@ -1738,14 +1849,14 @@ begin Clipboard.AsText := s; end; // ************************************************************************* -// ‚¨‹C‚É“ü‚è‚ɒljÁ‚·‚é +//! ‚¨‹C‚É“ü‚è‚ɒljÁ‚·‚é // ************************************************************************* procedure TGikoDM.TreeSelectFavoriteAddActionExecute(Sender: TObject); begin GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ClickNode.Data)); end; // ************************************************************************* -// ”–¼ŒŸõ +//! ”–¼ŒŸõ // ************************************************************************* procedure TGikoDM.TreeSelectSearchBoardNameExecute(Sender: TObject); var @@ -1798,7 +1909,7 @@ begin end; end; // ************************************************************************* -// ‘I‘ð‚³‚ê‚½”‚̖¼‘O‚ðƒRƒs[‚·‚é +//! ‘I‘ð‚³‚ê‚½”‚̖¼‘O‚ðƒRƒs[‚·‚é // ************************************************************************* procedure TGikoDM.TreeSelectNameCopyExecute(Sender: TObject); var @@ -1809,5 +1920,2756 @@ begin Clipboard.AsText := s; end; ////////////////////////////////ƒcƒŠ[ƒ|ƒbƒvƒAƒbƒv‚Ü‚Å‚¨‚µ‚Ü‚¢///////////////////// +// ************************************************************************* +//! ƒƒOƒCƒ“^ƒƒOƒAƒEƒg‚ð‚·‚é +// ************************************************************************* +procedure TGikoDM.LoginActionExecute(Sender: TObject); +var + TmpCursor: TCursor; + msg : String; +begin + if GikoSys.Dolib.Connected then begin + //ƒƒOƒAƒEƒg + GikoSys.Dolib.Disconnect; + LoginAction.Checked := False; + GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogout), nil, gmiOK); + LoginAction.Caption := 'ƒƒOƒCƒ“(&L)'; + end else begin + TmpCursor := GikoForm.ScreenCursor; + GikoForm.ScreenCursor := crHourGlass; + try + //’ʏ탍ƒOƒCƒ“ + if not GikoSys.Setting.ForcedLogin then begin + GikoSys.Dolib.ClientUA := 'gikoNavi/1.00'; + GikoSys.Dolib.UserName := GikoSys.Setting.UserID; + GikoSys.Dolib.Password := GikoSys.Setting.Password; + if GikoSys.Setting.ReadProxy then begin + GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress; + GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort; + end else begin + GikoSys.Dolib.ProxyAddress := ''; + GikoSys.Dolib.ProxyPort := 0; + end; + if GikoSys.Dolib.Connect then begin + LoginAction.Checked := True; + GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogin) + GikoSys.Setting.UserID, nil, gmiOK); + LoginAction.Caption := 'ƒƒOƒAƒEƒg(&L)'; + //LoginToolButton.Style := tbsCheck; + end else begin + // MsgBox(Handle, 'ƒƒOƒCƒ“o—ˆ‚Ü‚¹‚ñ‚Å‚µ‚½', 'ƒGƒ‰[', MB_OK or MB_ICONSTOP); + GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG); + GikoForm.PlaySound('Error'); + LoginAction.Checked := False; + //LoginToolButton.Down := False; + ///LoginToolButton.Style := tbsButton; + end; + end else begin + msg := '‹­§ƒƒOƒCƒ“ƒ‚[ƒh‚ł́CƒT[ƒo‚̏ؖ¾‘‚Ì—LŒø«‚ðƒ`ƒFƒbƒN‚µ‚Ü‚¹‚ñB' + #13#10 + + '‹U‘•ƒT[ƒo‚̏ꍇA‚ ‚È‚½‚̃pƒXƒ[ƒh“‚Ü‚ê‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B' + #13#10 + + '‚±‚̃‚[ƒh‚эƒOƒCƒ“‚ðŽŽ‚Ý‚Ü‚·‚©H' + #13#10; + if MsgBox(GikoForm.Handle, msg, 'Œx', MB_YESNO or MB_ICONEXCLAMATION) = IDYES then begin + GikoSys.Dolib.ClientUA := 'gikoNavi/1.00'; + GikoSys.Dolib.UserName := GikoSys.Setting.UserID; + GikoSys.Dolib.Password := GikoSys.Setting.Password; + if GikoSys.Setting.ReadProxy then begin + GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress; + GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort; + end else begin + GikoSys.Dolib.ProxyAddress := ''; + GikoSys.Dolib.ProxyPort := 0; + end; + //SSLáŠQ—p‹­§ƒƒOƒCƒ“ + GikoSys.Dolib.ForcedConnect; + if GikoSys.Dolib.Connect then begin + LoginAction.Checked := True; + GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmForceLogin) + GikoSys.Setting.UserID, nil, gmiOK); + LoginAction.Caption := 'ƒƒOƒAƒEƒg(&L)'; + //LoginToolButton.Style := tbsCheck; + end else begin + // MsgBox(Handle, 'ƒƒOƒCƒ“o—ˆ‚Ü‚¹‚ñ‚Å‚µ‚½', 'ƒGƒ‰[', MB_OK or MB_ICONSTOP); + GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG); + GikoForm.PlaySound('Error'); + LoginAction.Checked := False; + //LoginToolButton.Down := False; + //LoginToolButton.Style := tbsButton; + end; + end else begin + LoginAction.Checked := False; + //LoginToolButton.Down := False; + //LoginToolButton.Style := tbsButton; + end; + end; + finally + GikoForm.ScreenCursor := TmpCursor; + end; + end; +end; +// ************************************************************************* +//! ƒ{[ƒhXVƒ_ƒCƒAƒƒO‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.NewBoardActionExecute(Sender: TObject); +var + Dlg: TNewBoardDialog; + Msg: string; +begin + if (EditorFormExists) then begin + Msg := 'ƒŒƒXƒGƒfƒBƒ^‚ð‘S‚ĕ‚¶‚Ä‚­‚¾‚³‚¢'; + MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP); + Exit; + end; + Dlg := TNewBoardDialog.Create(GikoForm); + try + Dlg.ShowModal; + finally + Dlg.Release; + end; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ðíœ‚·‚é +// ************************************************************************* +procedure TGikoDM.LogDeleteActionExecute(Sender: TObject); +const + DEL_MSG = 'g^0h‚̃ƒO‚ðíœ‚µ‚Ü‚·B‚æ‚낵‚¢‚Å‚·‚©H'; + DEL_SAME_MSG = '‚±‚ê‚ç ^0 ŒÂ‚̃XƒŒƒbƒh‚̃ƒO‚ðíœ‚µ‚Ü‚·B‚æ‚낵‚¢‚Å‚·‚©H'; + DEL_TITLE = 'íœŠm”F'; +var + ThreadItem: TThreadItem; + TmpListItem: TListItem; + List: TList; + i: Integer; +begin + List := TList.Create; + try + TmpListItem := GikoForm.ListView.Selected; + while TmpListItem <> nil do begin + if TObject(TmpListItem.Data) is TThreadItem then begin + ThreadItem := TThreadItem(TmpListItem.Data); + if ThreadItem.IsLogFile then + List.Add(ThreadItem); + end; + TmpListItem := GikoForm.ListView.GetNextItem(TmpListItem, sdAll, [isSelected]); + end; + + if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin + if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin + if List.Count = 1 then begin + 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 + Exit; + end else begin + 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 + Exit; + end; + end; + end; + + for i := 0 to List.Count - 1 do begin + ThreadItem := TThreadItem(List[i]); + GikoForm.DeleteHistory(ThreadItem); + GikoForm.DeleteTab(ThreadItem); + ThreadItem.DeleteLogFile; + end; + GikoForm.TreeView.Refresh; // UnRead ‚Ì•\Ž¦‚ðXV + GikoForm.ListView.Refresh; + finally + List.Free; + end; +end; +// ************************************************************************* +//! ActiveList‚ªTBoard‚ŃXƒŒˆê——‚Å‚P‚ˆȏã‘I‘ð‚µ‚Ä‚¢‚é‚Æ—LŒø‚É‚È‚éAction‚Å‹¤’Ê +// ************************************************************************* +procedure TGikoDM.LogDeleteActionUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard) + and (GikoForm.ListView.SelCount > 0); +end; +// ************************************************************************* +//! iž‚Ý—š—ð‚ðÁ‹Ž‚·‚é +// ************************************************************************* +procedure TGikoDM.SelectTextClearActionExecute(Sender: TObject); +const + DEL_MSG = 'iž‚Ý‘S—š—ð‚ðíœ‚µ‚Ü‚·B‚æ‚낵‚¢‚Å‚·‚©H'; + DEL_TITLE = 'íœŠm”F'; +begin + if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then + if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then + Exit; + GikoSys.Setting.SelectTextList.Clear; + GikoForm.SelectComboBox.Items.Clear; + GikoForm.SelectComboBox.Text := ''; + GikoForm.SetListViewType( gvtAll ); +end; +// ************************************************************************* +//! ƒŒƒXƒGƒfƒBƒ^‚Ì–¼‘O—š—ð‚ðÁ‹Ž‚·‚é +// ************************************************************************* +procedure TGikoDM.NameTextClearActionExecute(Sender: TObject); +const + DEL_MSG = 'ƒŒƒXƒGƒfƒBƒ^–¼‘O‘S—š—ð‚ðíœ‚µ‚Ü‚·B‚æ‚낵‚¢‚Å‚·‚©H'; + DEL_TITLE = 'íœŠm”F'; +begin + if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then + if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then + Exit; + GikoSys.Setting.NameList.Clear; + ClearNameTextAllEditor +end; +// ************************************************************************* +//! ƒŒƒXƒGƒfƒBƒ^‚̃[ƒ‹—š—ð‚ðÁ‹Ž‚·‚é +// ************************************************************************* +procedure TGikoDM.MailTextClearActionExecute(Sender: TObject); +const + DEL_MSG = 'ƒŒƒXƒGƒfƒBƒ^ƒ[ƒ‹‘S—š—ð‚ðíœ‚µ‚Ü‚·B‚æ‚낵‚¢‚Å‚·‚©H'; + DEL_TITLE = 'íœŠm”F'; +begin + if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then + if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then + Exit; + GikoSys.Setting.MailList.Clear; + ClearMailAllEditor; +end; +// ************************************************************************* +//! ƒMƒRƒiƒr‚ðI—¹‚·‚é +// ************************************************************************* +procedure TGikoDM.ExitActionExecute(Sender: TObject); +begin + GikoForm.Close; +end; +// ************************************************************************* +//! ‚¨‹C‚É“ü‚è‚̃GƒNƒXƒ|[ƒg@ŽÀs‘Oˆ— +// ************************************************************************* +procedure TGikoDM.ExportFavoriteFileBeforeExecute(Sender: TObject); +begin + ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath; +end; +// ************************************************************************* +//! ‚¨‹C‚É“ü‚è‚̃GƒNƒXƒ|[ƒg@ŽÀsˆ— +// ************************************************************************* +procedure TGikoDM.ExportFavoriteFileAccept(Sender: TObject); +begin + if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin + ShowMessage('ƒtƒ@ƒCƒ‹‚ðo—Í‚µ‚Ü‚µ‚½'); + end else begin + ShowMessage('ƒtƒ@ƒCƒ‹‚̏o—Í‚ÉŽ¸”s‚µ‚Ü‚µ‚½'); + end; +end; +// ************************************************************************* +//! ‘I‘ðƒXƒŒƒbƒh‚ðƒtƒ@ƒCƒ‹‚É•Û‘¶‚·‚é +// ************************************************************************* +procedure TGikoDM.SelectThreadSaveToFile(dat: Boolean); +var + List: TList; + i: Integer; + html: TStringList; + title: string; +begin + List := TList.Create; + try + GikoForm.ScreenCursor := crHourGlass; + GikoForm.SelectListItem(List); + if ((GikoSys.Setting.ListOrientation = gloVertical) and + (GikoSys.Setting.ListHeightState = glsMax)) or + ((GikoSys.Setting.ListOrientation = gloHorizontal) and + (GikoSys.Setting.ListWidthState = glsMax)) then + ShowMessage('ƒXƒŒƒbƒhˆê——‚ð•\Ž¦‚µ‚Ä‚­‚¾‚³‚¢') + else if(List.Count = 0) then + ShowMessage('ƒXƒŒƒbƒh‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢') + else begin + if dat then begin + SaveDialog.Title := '‘I‘ðƒXƒŒƒbƒh‚ðdat‚Ì‚Ü‚Ü•Û‘¶'; + SaveDialog.Filter := 'DATƒtƒ@ƒCƒ‹(*.dat)|*.dat'; + end else begin + SaveDialog.Title := '‘I‘ðƒXƒŒƒbƒh‚ðHTML‰»‚µ‚Ä•Û‘¶'; + SaveDialog.Filter := 'HTMLƒtƒ@ƒCƒ‹(*.html)|*.html'; + end; + for i := 0 to List.Count - 1 do begin + if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin + if dat then begin + SaveDialog.FileName := TThreadItem(List[i]).FileName; + end else begin + SaveDialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html'; + end; + if SaveDialog.Execute then begin + if dat then begin + CopyFile(PChar(TThreadItem(List[i]).FilePath), + PChar(SaveDialog.FileName), true); + end else begin + html := TStringList.Create; + title := TThreadItem(List[i]).Title; + try + HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title); + html.SaveToFile(SaveDialog.FileName); + THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(SaveDialog.FileName)); + finally + html.Free; + end; + end; + end; + end; + end; + end; + finally + GikoForm.ScreenCursor := crDefault; + List.Free; + end; +end; +// ************************************************************************* +//! ‘I‘ðƒXƒŒƒbƒh‚ðHTML‰»‚µ‚Ä•Û‘¶ +// ************************************************************************* +procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject); +begin + SelectThreadSaveToFile(false); +end; +// ************************************************************************* +//! ‘I‘ðƒXƒŒƒbƒh‚ðDATŒ`Ž®‚Ì‚Ü‚Ü•Û‘¶ +// ************************************************************************* +procedure TGikoDM.SelectItemSaveForDatExecute(Sender: TObject); +begin + SelectThreadSaveToFile(true); +end; +// ************************************************************************* +//! ƒ^ƒu‚̏‡”Ô‚ð•Û‘¶ +// ************************************************************************* +procedure TGikoDM.TabsSaveActionExecute(Sender: TObject); +const + Filename = 'tab.sav'; + bFilename = '~tab.sav'; +var + SaveStringList: TStringList; +begin + SaveStringList := TStringList.Create; + try + GetTabURLs(SaveStringList); + try + if FileExists( GikoSys.GetAppDir + Filename) then begin + CopyFile(PChar(GikoSys.GetAppDir + Filename), + PChar(GikoSys.GetAppDir + bFilename), False); + end; + except + end; + SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename); + finally + SaveStringList.Free; + end; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒUƒ^ƒu‚ɐݒ肳‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ÌURLŽæ“¾ +// ************************************************************************* +procedure TGikoDM.GetTabURLs(AStringList: TStringList); +var + rec : TBrowserRecord; + i : Integer; +begin + for i := 0 to GikoForm.BrowserTab.Tabs.Count -1 do begin + try + rec := TBrowserRecord( GikoForm.BrowserTab.Tabs.Objects[ i ] ); + if( rec <> nil) and (rec.Thread <> nil) then + AStringList.Add( rec.Thread.URL ); + except + end; + end; +end; +// ************************************************************************* +//! Žw’肳‚ꂽURL‚ðŠJ‚«Cæ“ª‚̃^ƒu‚ɃtƒH[ƒJƒX‚·‚é +// ************************************************************************* +procedure TGikoDM.OpenURLs(AStringList: TStringList); +var + GikoTab : TGikoTabAppend; + i, bound : Integer; + item : TThreadItem; +begin + if (AStringList <> nil) then begin + GikoTab := GikoSys.Setting.BrowserTabAppend; + try + bound := AStringList.Count - 1; + if bound > -1 then begin + GikoSys.Setting.BrowserTabAppend := gtaLast; + for i := 0 to bound do begin + item := BBSsFindThreadFromURL( AStringList[ i ] ); + if item <> nil then + GikoForm.InsertBrowserTab( item, false ); + end; + //Å‰‚Ì‚P–‡‚ɐݒè + if (GikoSys.Setting.URLDisplay) and + (GikoForm.BrowserTab.Tabs.Count > 0) then begin + GikoForm.AddressComboBox.Text := + TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[0]).Thread.URL; + end; + end; + finally + GikoSys.Setting.BrowserTabAppend := GikoTab; + end; + end; +end; +// ************************************************************************* +//! ƒ^ƒu‚̏‡”Ԃ𕜌³ +// ************************************************************************* +procedure TGikoDM.TabsOpenActionExecute(Sender: TObject); +const + TABFILE = 'tab.sav'; +var + URLs : TStringList; + fileName : string; +begin + URLs := TStringList.Create(); + try + fileName := GikoSys.GetAppDir + TABFILE; + if FileExists(fileName) then begin + try + URLs.LoadFromFile(fileName); + if (URLs.Count = 0) then begin + // ‹ó‚̃tƒ@ƒCƒ‹‚̏ꍇCƒoƒbƒNƒAƒbƒv‚ðíœ‚µ‚È‚¢‚½‚߂ɍ폜 + SysUtils.DeleteFile(fileName); + end else begin + OpenURLs(URLs); + end; + except + on EFOpenError do ShowMessage('ƒ^ƒuƒtƒ@ƒCƒ‹‚ªŠJ‚¯‚Ü‚¹‚ñ'); + end; + end; + finally + URLs.Free; + end; + + if (GikoForm.BrowserTab.Tabs.Count = 0) and + (TabsOpenAction.Tag <> 1) then begin + ShowMessage('•\Ž¦‚·‚éƒ^ƒu‚ª‚ ‚è‚Ü‚¹‚ñB'); + end; +end; +// ************************************************************************* +//! Be2ch‚ɃƒOƒCƒ“/ƒƒOƒAƒEƒg‚·‚é +// ************************************************************************* +procedure TGikoDM.BeLogInOutActionExecute(Sender: TObject); +begin + GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin; +end; +// ************************************************************************* +//! Be2ch‚ɃƒOƒCƒ“/ƒƒOƒAƒEƒg‚·‚é‚ÌUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.BeLogInOutActionUpdate(Sender: TObject); +begin + if (GikoSys.Setting.BeUserID <> '') and (GikoSys.Setting.BeCode <> '') then begin + if (GikoSys.Setting.BeLogin) then BeLogInOutAction.Checked := true + else BeLogInOutAction.Checked := false; + BeLogInOutAction.Enabled := true + end else + BeLogInOutAction.Enabled := false; +end; +////////////////////////////////ƒtƒ@ƒCƒ‹‚Ü‚Å‚¨‚µ‚Ü‚¢///////////////////// +// ************************************************************************* +//! ƒRƒR‚Ü‚Å“Ç‚ñ‚¾ +// ************************************************************************* +procedure TGikoDM.KokomadeActionExecute(Sender: TObject); +var + No: Integer; + ThreadItem: TThreadItem; +begin + No := GikoForm.KokoPopupMenu.Tag; + if No = 0 + then Exit; + ThreadItem := GikoForm.KokoPopupThreadItem; + if not Assigned(ThreadItem) then + Exit; + ThreadItem.Kokomade := No; + GikoForm.ActiveContent.Thread.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop; + GikoForm.ActiveContent.Repaint := true; + GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true); + //INFO 2005/11/19 ˆê’U‰B•ÁA•K—v‚È‚çGikoForm‚Ì•û‚Ƀƒ\ƒbƒh‚ð’ljÁ‚·‚é + //Application.ProcessMessages; +end; +// ************************************************************************* +//! ‘S•”“Ç‚ñ‚¾ +// ************************************************************************* +procedure TGikoDM.ZenbuActionExecute(Sender: TObject); +var + ThreadItem: TThreadItem; +begin + ThreadItem := GikoForm.GetActiveContent(True); + if ThreadItem = nil then Exit; + ThreadItem.Kokomade := -1; + GikoForm.ActiveContent.Thread.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop; + GikoForm.ActiveContent.Repaint := true; + GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true); + //INFO 2005/11/19 ˆê’U‰B•ÁA•K—v‚È‚çGikoForm‚Ì•û‚Ƀƒ\ƒbƒh‚ð’ljÁ‚·‚é + //Application.ProcessMessages; +end; +// ************************************************************************* +//! ƒRƒR‚ɃŒƒX +// ************************************************************************* +procedure TGikoDM.KokoResActionExecute(Sender: TObject); +var + Editor: TEditorForm; + Item: TThreadItem; + Number: Integer; +begin + Number := GikoForm.KokoPopupMenu.Tag; + if Number = 0 then Exit; + Item := GikoForm.KokoPopupThreadItem; + if Item = nil then Exit; + + Editor := TEditorForm.Create(GikoForm); + Editor.SetThreadItem(Item); + Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10; + Editor.Show; + Editor.BodyEdit.SetFocus; +end; +// ************************************************************************* +//! ‘I‘ð‚µ‚½ƒŒƒX‚ðƒRƒs[‚·‚é +// ************************************************************************* +procedure TGikoDM.KoreCopyExecute(Sender: TObject); +begin + GikoForm.KonoresCopy(GikoForm.KokoPopupMenu.Tag, true); +end; +// ************************************************************************* +//! ‘I‘ð‚µ‚½ƒŒƒX‚ðƒRƒs[‚·‚é +// ************************************************************************* +procedure TGikoDM.SameIDResAnchorActionExecute(Sender: TObject); +const + LIMIT = 20; +var + ThreadItem : TThreadItem; + No : Integer; + AID: string; +begin + No := GikoForm.KokoPopupMenu.Tag; + if No = 0 then Exit; + ThreadItem := GikoForm.KokoPopupThreadItem; + if ThreadItem = nil then Exit; + + AID := GikoSys.GetResID(No, ThreadItem); + if not IsNoValidID(AID) then begin + GikoForm.ShowSameIDAncher(AID); + end; +end; +// ************************************************************************* +//! ‚±‚̃ŒƒX‚ ‚ځ`‚ñ@i’ʏíj +// ************************************************************************* +procedure TGikoDM.IndividualAbon1ActionExecute(Sender: TObject); +begin + GikoForm.IndividualAbon(GikoForm.KokoPopupMenu.Tag, 1); +end; +// ************************************************************************* +//! ‚±‚̃ŒƒX‚ ‚ځ`‚ñ@i“§–¾j +// ************************************************************************* +procedure TGikoDM.IndividualAbon0ActionExecute(Sender: TObject); +begin + GikoForm.IndividualAbon(GikoForm.KokoPopupMenu.Tag, 0); +end; +// ************************************************************************* +//! ‚±‚̃ŒƒX‚ ‚ځ`‚ñ‰ðœ +// ************************************************************************* +procedure TGikoDM.AntiIndividualAbonActionExecute(Sender: TObject); +var + IndividualForm :TIndividualAbonForm; + ThreadItem : TThreadItem; + msg : String; + ReadList : TStringList; + wordCount : TWordCount; +begin + IndividualForm := TIndividualAbonForm.Create(GikoForm); + try + ThreadItem := GikoForm.GetActiveContent(True); + ThreadItem.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop; + if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin + if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin + ReadList := TStringList.Create; + wordCount := TWordCount.Create; + try +{$IFDEF SPAM_FILTER_ENABLED} + // ƒXƒpƒ€‚ð‰ðœ + ReadList.LoadFromFile( ThreadItem.GetThreadFileName ); + GikoSys.SpamCountWord( ReadList[ KokoPopupMenu.Tag - 1 ], wordCount ); + GikoSys.SpamForget( wordCount, True ); // ƒXƒpƒ€‚ð‰ðœ + GikoSys.SpamLearn( wordCount, False ); // ƒnƒ€‚ɐݒè +{$ENDIF} + if IndividualForm.DeleteNG(GikoForm.KokoPopupMenu.Tag) then begin + GikoForm.ActiveContent.Repaint := true; + GikoForm.InsertBrowserTab( ThreadItem, True ); + end; + finally + wordCount.Free; + ReadList.Free; + end; + end else begin + msg := '‚±‚̃XƒŒƒbƒh‚ł͌•ʂ ‚ځ`‚ñ‚ðs‚Á‚Ä‚Ü‚¹‚ñ'; + MsgBox(GikoForm.Handle, msg, 'ƒƒbƒZ[ƒW', MB_OK); + end; + end; + finally + IndividualForm.Release; + end; +end; +// ************************************************************************* +//! ‚±‚̃ŒƒX‚ ‚ځ`‚ñ‰ðœƒŒƒX”ԍ†Žw’èiƒ_ƒCƒAƒƒO•\Ž¦j +// ************************************************************************* +procedure TGikoDM.AntiIndividualAbonDlgActionExecute(Sender: TObject); +var + IndividualForm :TIndividualAbonForm; + ThreadItem : TThreadItem; + msg : String; + ReadList : TStringList; + wordCount : TWordCount; +{$IFDEF SPAM_FILTER_ENABLED} + i : Integer; +{$ENDIF} +begin + IndividualForm := TIndividualAbonForm.Create(GikoForm); + try + ThreadItem := GikoForm.GetActiveContent(True); + ThreadItem.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop; + if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin + if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin + if (IndividualForm.ShowModal = mrOK) then begin + ReadList := TStringList.Create; + wordCount := TWordCount.Create; + try +{$IFDEF SPAM_FILTER_ENABLED} + // ƒXƒpƒ€‚ð‰ðœ + ReadList.LoadFromFile( ThreadItem.GetThreadFileName ); + for i := 0 to IndividualForm.DeleteList.Count - 1 do begin + GikoSys.SpamCountWord( ReadList[ StrToInt(IndividualForm.DeleteList[i]) - 1 ], wordCount ); + GikoSys.SpamForget( wordCount, True ); // ƒXƒpƒ€‚ð‰ðœ + GikoSys.SpamLearn( wordCount, False ); // ƒnƒ€‚ɐݒè + end; +{$ENDIF} + if IndividualForm.FRepaint then begin + GikoForm.ActiveContent.Repaint := true; + GikoForm.InsertBrowserTab( ThreadItem, True ); + end; + finally + wordCount.Free; + ReadList.Free; + end; + end; + end else begin + msg := '‚±‚̃XƒŒƒbƒh‚ł͌•ʂ ‚ځ`‚ñ‚ðs‚Á‚Ä‚Ü‚¹‚ñ'; + MsgBox(GikoForm.Handle, msg, 'ƒƒbƒZ[ƒW', MB_OK); + end; + end; + finally + IndividualForm.Release; + end; +end; +// ************************************************************************* +//! ‚±‚ÌID‚ ‚ځ`‚ñ@’ʏí +// ************************************************************************* +procedure TGikoDM.IndividualAbonID1ActionExecute(Sender: TObject); +begin + GikoForm.IndividualAbonID(1); +end; +// ************************************************************************* +//! ‚±‚ÌID‚ ‚ځ`‚ñ@“§–¾ +// ************************************************************************* +procedure TGikoDM.IndividualAbonID0ActionExecute(Sender: TObject); +begin + GikoForm.IndividualAbonID(0); +end; +////////////////////////////////ƒuƒ‰ƒEƒUƒ|ƒbƒvƒAƒbƒv‚Ü‚Å‚¨‚µ‚Ü‚¢///////////////////// +// ************************************************************************* +//! ƒMƒRƒiƒr‚̃EƒFƒuƒTƒCƒg‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.GikoNaviWebPageActionExecute(Sender: TObject); +begin + GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_GIKONAVI, gbtAuto); +end; +// ************************************************************************* +//! ƒ‚ƒiƒWƒ‰‚̃EƒFƒuƒTƒCƒg‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.MonazillaWebPageActionExecute(Sender: TObject); +begin + GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_MONAZILLA, gbtAuto); +end; +// ************************************************************************* +//! ‚Q‚¿‚á‚ñ‚Ë‚éƒgƒbƒvƒy[ƒW‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.BBS2chWebPageActionExecute(Sender: TObject); +begin + GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_2ch, gbtAuto); +end; +// ************************************************************************* +//! ƒMƒRƒiƒr‚̃tƒHƒ‹ƒ_‚ðŠJ‚­ +// ************************************************************************* +procedure TGikoDM.GikoFolderOpenActionExecute(Sender: TObject); +begin + GikoSys.CreateProcess('explorer.exe', '/e,"' + GikoSys.GetAppDir + '"'); +end; +// ************************************************************************* +//! ƒo[ƒWƒ‡ƒ“î•ñ‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.AboutActionExecute(Sender: TObject); +var + Dlg: TAboutDialog; +begin + Dlg := TAboutDialog.Create(GikoForm); + try + Dlg.ShowModal; + finally + Dlg.Release; + end; +end; +// ************************************************************************* +//! ƒMƒRƒiƒr‚̃wƒ‹ƒv‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.GikoHelpActionExecute(Sender: TObject); +var + FileName: string; +begin + FileName := GikoSys.GetAppDir + 'batahlp.chm'; + if not FileExists(FileName) then begin + MsgBox( + GikoForm.Handle, + 'ƒwƒ‹ƒv‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½' + #13#10 + + 'ƒwƒ‹ƒvƒtƒ@ƒCƒ‹‚ðƒMƒRƒiƒr‚̃tƒHƒ‹ƒ_‚É’u‚¢‚Ä‚­‚¾‚³‚¢' + #13#10 + + 'ƒwƒ‹ƒv‚̓MƒRƒiƒr‚̃TƒCƒg‚É’u‚¢‚Ä‚ ‚è‚Ü‚·', + MSG_ERROR, + MB_ICONSTOP); + Exit; + end; + ShellExecute(GikoForm.Handle, 'open', PChar(FileName), '', PChar(GikoSys.GetAppDir), SW_SHOW); +end; +// ************************************************************************* +//! ƒMƒRƒiƒrWiki‚̃EƒFƒuƒTƒCƒg‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.WikiFAQWebPageActionExecute(Sender: TObject); +begin + GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_Wiki, gbtAuto); +end; +////////////////////////////////ƒwƒ‹ƒv‚Ü‚Å‚¨‚µ‚Ü‚¢///////////////////// +// ************************************************************************* +//! ƒŠƒXƒg”ԍ†•\Ž¦‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.ListNumberVisibleActionExecute(Sender: TObject); +begin + GikoSys.Setting.ListViewNo := ListNumberVisibleAction.Checked; + GikoForm.ListView.Refresh; +end; +// ************************************************************************* +//! ãˆÊƒtƒHƒ‹ƒ_‚Ɉړ®‚·‚é +// ************************************************************************* +procedure TGikoDM.UpFolderActionExecute(Sender: TObject); +begin + if GikoForm.GetActiveList is TBoard then begin + if TBoard(GikoForm.GetActiveList).ParentCategory <> nil then + GikoForm.SelectTreeNode(TBoard(GikoForm.GetActiveList).ParentCategory, True); + end else if GikoForm.GetActiveList is TCategory then begin + GikoForm.SelectTreeNode(TCategory(GikoForm.GetActiveList).ParenTBBS, True); + end; +end; +// ************************************************************************* +//! ãˆÊƒtƒHƒ‹ƒ_‚Ɉړ®‚·‚éUpDateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.UpFolderActionUpdate(Sender: TObject); +begin + UpFolderAction.Enabled := not (GikoForm.GetActiveList is TBBS) and + (GikoForm.GetActiveList <> BoardGroup.SpecialBoard); +end; +// ************************************************************************* +//! •\Ž¦@•\Ž¦ƒŠƒXƒg‚̃‚[ƒh•ÏX +// ************************************************************************* +procedure TGikoDM.IconStyleExecute(Sender: TObject); +begin + case GikoForm.ListView.ViewStyle of + vsIcon: SmallIconAction.Execute; + vsSmallIcon: ListIconAction.Execute; + vsList: DetailIconAction.Execute; + vsReport: LargeIconAction.Execute; + end; +end; +// ************************************************************************* +//! SelectComboBox‚Ì’l‚ðƒNƒŠƒA‚·‚é +// ************************************************************************* +procedure TGikoDM.ClearSelectComboBox; +begin + if GikoForm.SelectComboBoxPanel.Visible then begin + GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME; + GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR; + GikoForm.ListView.SetFocus; + end; +end; +// ************************************************************************* +//! ƒXƒŒƒbƒh‚ð‚·‚×‚Ä•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.AllItemActionExecute(Sender: TObject); +begin + try + if GikoForm.ViewType <> gvtAll then + GikoForm.SetListViewType(gvtAll); + GikoSys.Setting.ThreadRange := gtrAll; + AllItemAction.Checked := True; + // SelectComboBox ‚Ì—š—ð‚ðXV‚µ‚Ä‚¨‚­ + GikoForm.ModifySelectList; + // SelectComboBox ‚Ì’l‚ðƒNƒŠƒA + ClearSelectComboBox; + except + end; +end; +// ************************************************************************* +//! ƒƒO—L‚èƒXƒŒƒbƒh‚Ì‚Ý‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.LogItemActionExecute(Sender: TObject); +begin + try + if GikoForm.ViewType <> gvtLog then + GikoForm.SetListViewType(gvtLog); + GikoSys.Setting.ThreadRange := gtrLog; + LogItemAction.Checked := True; + // SelectComboBox ‚Ì—š—ð‚ðXV‚µ‚Ä‚¨‚­ + GikoForm.ModifySelectList; + // SelectComboBox ‚Ì’l‚ðƒNƒŠƒA + ClearSelectComboBox; + except + end; +end; +// ************************************************************************* +//! V’…ƒXƒŒƒbƒh‚Ì‚Ý•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.NewItemActionExecute(Sender: TObject); +begin + try + + if GikoForm.ViewType <> gvtNew then + GikoForm.SetListViewType(gvtNew); + GikoSys.Setting.ThreadRange := gtrNew; + NewItemAction.Checked := True; + // SelectComboBox ‚Ì—š—ð‚ðXV‚µ‚Ä‚¨‚­ + GikoForm.ModifySelectList; + // SelectComboBox ‚Ì’l‚ðƒNƒŠƒA + ClearSelectComboBox; + except + end; +end; +// ************************************************************************* +//! DAT—Ž‚¿ƒXƒŒƒbƒh‚Ì‚Ý•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.ArchiveItemActionExecute(Sender: TObject); +begin + try + if GikoForm.ViewType <> gvtArch then + GikoForm.SetListViewType(gvtArch); + GikoSys.Setting.ThreadRange := gtrArch; + ArchiveItemAction.Checked := True; + // SelectComboBox ‚Ì—š—ð‚ðXV‚µ‚Ä‚¨‚­ + GikoForm.ModifySelectList; + // SelectComboBox ‚Ì’l‚ðƒNƒŠƒA + ClearSelectComboBox; + except + end; +end; +// ************************************************************************* +//! ¶‘¶ƒXƒŒƒbƒh‚Ì‚Ý•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.LiveItemActionExecute(Sender: TObject); +begin + try + if GikoForm.ViewType <> gvtLive then + GikoForm.SetListViewType(gvtLive); + GikoSys.Setting.ThreadRange := gtrLive; + LiveItemAction.Checked := True; + // SelectComboBox ‚Ì—š—ð‚ðXV‚µ‚Ä‚¨‚­ + GikoForm.ModifySelectList; + // SelectComboBox ‚Ì’l‚ðƒNƒŠƒA + ClearSelectComboBox; + except + end; +end; + +// ************************************************************************* +//! ƒXƒŒƒbƒh‚Ì•\Ž¦”͈͂ðÝ’è +// ************************************************************************* +procedure TGikoDM.ThreadRangeActionExecute(Sender: TObject); +begin + case GikoSys.Setting.ThreadRange of + gtrAll: AllItemAction.Execute; + gtrLog: LogItemAction.Execute; + gtrNew: NewItemAction.Execute; + gtrArch: ArchiveItemAction.Execute; + gtrLive: LiveItemAction.Execute; + end; +end; +// ************************************************************************* +//! ƒXƒŒƒbƒhiž‚݃_ƒCƒAƒƒO‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.SelectItemActionExecute(Sender: TObject); +var + idx: Integer; + Dlg: TListSelectDialog; +begin + try + if GikoForm.SelectComboBoxPanel.Visible then begin + if GikoForm.SelectComboBoxPanel.Left + GikoForm.SelectComboBoxPanel.Width < GikoForm.ListToolBar.Width then begin + // SelectComboBox ‚ª‚ ‚éê‡‚̓tƒH[ƒJƒX‚ðˆÚ‚· + if GikoSys.Setting.ListOrientation = gloHorizontal then begin + if GikoSys.Setting.ListWidthState = glsMax then + BrowserMinAction.Execute; + end else begin + if GikoSys.Setting.ListHeightState = glsMax then + BrowserMinAction.Execute; + end; + GikoForm.SelectComboBox.SetFocus; + exit; + end; + end; + except + end; + + if GikoForm.SelectComboBox.Text = SELECTCOMBOBOX_NAME then begin + GikoForm.SelectComboBox.Text := ''; + GikoForm.SelectComboBox.Color := clWindow; + end; + + AllItemAction.Checked := False; + LogItemAction.Checked := False; + NewItemAction.Checked := False; + //SelectItemAction.Checked := True; + GikoForm.ModifySelectList; + Dlg := TListSelectDialog.Create(GikoForm); + try + Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList); + Dlg.SelectComboBox.Text := GikoForm.SelectComboBox.Text; + Dlg.ShowModal; + if Dlg.ModalResult = mrCancel then begin + if Length( GikoForm.SelectComboBox.Text ) = 0 then begin + AllItemAction.Checked := True; + GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME; + GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR; + end; + + if GikoForm.GetActiveList is TBoard then + GikoForm.SetListViewType(gvtUser, TBoard(GikoForm.GetActiveList).ParentCategory.ParenTBBS.SelectText , Dlg.KubetsuCheckBox.Checked); + end else begin + idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text); + if idx <> -1 then + GikoSys.Setting.SelectTextList.Delete(idx); + GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text); + while Dlg.SelectComboBox.Items.Count > 100 do begin + Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1); + end; + + if Length( Dlg.SelectComboBox.Text ) = 0 then begin + GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME; + GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR; + end else begin + GikoForm.SelectComboBox.Text := Dlg.SelectComboBox.Text; + GikoForm.SelectComboBox.Color := clWindow; + end; + GikoForm.SetListViewType(gvtUser, Dlg.SelectComboBox.Text, Dlg.KubetsuCheckBox.Checked); + end; + finally + Dlg.Release; + end; +end; +// ************************************************************************* +//! VƒXƒŒ‘‚«ž‚݃EƒBƒ“ƒhƒE‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.ThreadEditorActionExecute(Sender: TObject); +var + Editor: TEditorForm; +begin + if not (GikoForm.GetActiveList is TBoard) then + Exit; + Editor := TEditorForm.Create(GikoForm); + Editor.SetBoard(TBoard(GikoForm.GetActiveList)); + Editor.Show; + Editor.BodyEdit.SetFocus; +end; +// ************************************************************************* +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚锂ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.BoardIEActionExecute(Sender: TObject); +var + URL: string; +begin + if GikoForm.GetActiveList is TBoard then begin + URL := TBoard(GikoForm.GetActiveList).URL; + GikoSys.OpenBrowser(URL, gbtAuto); + end; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ÌURL‚ðƒRƒs[‚·‚é +// ************************************************************************* +procedure TGikoDM.SelectItemURLCopyActionExecute(Sender: TObject); +var + List: TList; + i: Integer; + s: string; +begin + s := ''; + List := TList.Create; + try + GikoForm.SelectListItem(List); + for i := 0 to List.Count - 1 do begin + if TObject(List[i]) is TBoard then + s := s + TBoard(List[i]).URL + #13#10 + else if TObject(List[i]) is TThreadItem then + s := s + TThreadItem(List[i]).URL + #13#10; + end; + if s <> '' then + Clipboard.AsText := s; + finally + List.Free; + end; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ÌURL‚ðƒRƒs[‚·‚éUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.SelectItemURLCopyActionUpdate(Sender: TObject); +begin + if ((GikoForm.GetActiveList is TBoard) or + (GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then + TAction(Sender).Enabled := True + else + TAction(Sender).Enabled := False; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚锂̖¼‘O‚ðƒRƒs[‚·‚é +// ************************************************************************* +procedure TGikoDM.SelectItemNameCopyActionExecute(Sender: TObject); +var + List: TList; + i: Integer; + s: string; +begin + s := ''; + List := TList.Create; + try + GikoForm.SelectListItem(List); + for i := 0 to List.Count - 1 do begin + if TObject(List[i]) is TCategory then + s := s + TCategory(List[i]).Title + #13#10 + else if TObject(List[i]) is TBoard then + s := s + TBoard(List[i]).Title + #13#10 + else if TObject(List[i]) is TThreadItem then + s := s + TThreadItem(List[i]).Title + #13#10; + end; + if s <> '' then + Clipboard.AsText := s; + finally + List.Free; + end; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚锂̖¼‘O‚ðƒRƒs[‚·‚éUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.SelectItemNameCopyActionUpdate(Sender: TObject); +begin + if ((GikoForm.GetActiveList is TBBS) or + (GikoForm.GetActiveList is TBoard) or + (GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then + TAction(Sender).Enabled := True + else + TAction(Sender).Enabled := False; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚Ì–¼‘O‚ÆURL‚ðƒRƒs[‚·‚é +// ************************************************************************* +procedure TGikoDM.SelectItemNameURLCopyActionExecute(Sender: TObject); +var + List: TList; + i: Integer; + s: string; +begin + s := ''; + List := TList.Create; + try + GikoForm.SelectListItem(List); + for i := 0 to List.Count - 1 do begin + if TObject(List[i]) is TBoard then + s := s + TBoard(List[i]).Title + #13#10 + TBoard(List[i]).URL + #13#10 + else if TObject(List[i]) is TThreadItem then + s := s + TThreadItem(List[i]).Title + #13#10 + TThreadItem(List[i]).URL + #13#10; + end; + if s <> '' then + Clipboard.AsText := s; + finally + List.Free; + end; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒhˆê——‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚é +// ************************************************************************* +procedure TGikoDM.SelectListReloadActionExecute(Sender: TObject); +var + i: Integer; + List: TList; + msg: string; + shiftDown: Boolean; +begin + shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001); + GikoForm.ActiveListColumnSave; + if GikoForm.GetActiveList is TCategory then begin + List := TList.Create; + try + GikoForm.SelectListItem(List); + if List.Count > 5 then begin + msg := '5ŒÂˆÈã‚ÍŽw’è‚Å‚«‚Ü‚¹‚ñ' + #13#10 + + '‚Q‚¿‚á‚ñ‚˂镉‰×ŒyŒ¸‚É‚²‹¦—Í‚­‚¾‚³‚¢'; + MsgBox(GikoForm.Handle, msg, 'Œx', MB_ICONEXCLAMATION); + Exit; + end; + for i := 0 to List.Count - 1 do begin + if TObject(List[i]) is TBoard then + GikoForm.DownloadList(TBoard(List[i]), shiftDown); + end; + finally + List.Free; + end; + end else if GikoForm.GetActiveList is TBoard then begin + GikoForm.DownloadList(TBoard(GikoForm.GetActiveList), shiftDown); + end; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒhˆê——‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚éUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.SelectListReloadActionUpdate(Sender: TObject); +begin + if (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0) then + TAction(Sender).Enabled := True + else if GikoForm.GetActiveList is TBoard then begin + TAction(Sender).Enabled := + (GikoForm.GetActiveList <> BoardGroup.SpecialBoard); + end else + TAction(Sender).Enabled := False; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚é +// ************************************************************************* +procedure TGikoDM.SelectThreadReloadActionExecute(Sender: TObject); +var + List: TList; + i: Integer; + msg: string; + shiftDown: Boolean; +begin + shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001); + List := TList.Create; + try + GikoForm.SelectListItem(List); + if List.Count > 10 then begin + msg := '10ŒÂˆÈã‚ÍŽw’è‚Å‚«‚Ü‚¹‚ñ' + #13#10 + + '‚Q‚¿‚á‚ñ‚˂镉‰×ŒyŒ¸‚É‚²‹¦—Í‚­‚¾‚³‚¢'; + MsgBox(GikoForm.Handle, msg, 'Œx', MB_ICONEXCLAMATION); + Exit; + end; + for i := 0 to List.Count - 1 do begin + if TObject(List[i]) is TThreadItem then + GikoForm.DownloadContent(TThreadItem(List[i]), shiftDown); + end; + finally + List.Free; + end; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚éUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.SelectThreadReloadActionUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := + (GikoForm.GetActiveList is TBoard) and (GikoForm.ListView.SelCount > 0); +end; +// ************************************************************************* +//! ƒXƒŒƒbƒh„‰ñ—\–ñ +// ************************************************************************* +procedure TGikoDM.SelectReservActionExecute(Sender: TObject); +begin + //INFO 2005/11/19 ƒ_ƒ~[H@by ‚à‚¶‚ã + // ‚±‚̃Rƒƒ“ƒgíœ‚µ‚Ä‚Í‘Ê–Ú +end; +// ************************************************************************* +//! ƒXƒŒƒbƒh„‰ñ—\–ñUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.SelectReservActionUpdate(Sender: TObject); +var + i: Integer; + List: TList; +begin + if (GikoForm.GetActiveList is TBoard) and (GikoForm.ListView.SelCount > 0) then begin + List := TList.Create; + try + GikoForm.SelectListItem(List); + for i := 0 to List.Count - 1 do begin + if TObject(List[i]) is TThreadItem then begin + if TThreadItem(List[i]).IsLogFile then begin + SelectReservAction.Enabled := True; + Exit; + end; + end; + end; + SelectReservAction.Enabled := False; + finally + List.Free; + end; + end else if (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0) then + SelectReservAction.Enabled := True + else + SelectReservAction.Enabled := False; +end; +// ************************************************************************* +//! ‘I‘ð‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚ɐV‚µ‚¢–¼‘O‚ŏ„‰ñ—\–ñ +// ************************************************************************* +procedure TGikoDM.SelectNewRoundNameExecute(Sender: TObject); +var + s: string; + Dlg: TRoundNameDialog; + cnt: Integer; + +begin + //ŒÄ‚яo‚µŒ³‚ªATAction‚ÅListView‚É‘I‘ð‚ª‚¢‚È‚¯‚ê‚΁AEXIT‚·‚é + if (Sender is TAction) and (GikoForm.ListView.Selected = nil) then + Exit; + + //“o˜^ãŒÀƒ`ƒFƒbƒN + cnt := RoundList.Count[grtBoard]; + cnt := cnt + RoundList.Count[grtItem]; + if cnt > 500 then begin + MsgBox(GikoForm.Handle, '„‰ñ‚Í500ˆÈã“o˜^‚Å‚«‚Ü‚¹‚ñ', MSG_ERROR, MB_OK or MB_ICONSTOP); + Exit; + end; + + Dlg := TRoundNameDialog.Create(GikoForm); + try + Dlg.ShowModal; + if Dlg.ModalResult <> mrCancel then begin + s := Trim(Dlg.RoundNameEdit.Text); + if (Sender is TMenuItem) then begin + GikoForm.SetSelectItemRound(True, s, TMenuItem(Sender).Parent.Name); + end else if (Sender is TAction) then begin + if (GikoForm.ListView.Selected <> nil) then begin + if (TObject(GikoForm.ListView.Selected.Data) is TThreadItem) then begin + GikoForm.SetSelectItemRound(True, s, + TThreadItem(GikoForm.ListView.Selected.Data).Title); + end else if (TObject(GikoForm.ListView.Selected.Data) is TBoard) then begin + GikoForm.SetSelectItemRound(True, s, + TBoard(GikoForm.ListView.Selected.Data).Title); + end; + end; + end; + GikoForm.ListView.Refresh; + end; + finally + Dlg.Free; + end; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢ƒXƒŒƒbƒh‚̏„‰ñ‚ðíœ‚·‚é +// ************************************************************************* +procedure TGikoDM.SelectDeleteRoundExecute(Sender: TObject); +var + s : String; +begin + if (Sender is TMenuItem) then begin + try + GikoForm.SetSelectItemRound(False, '', TMenuItem(Sender).Parent.Name); + except + end; + end else if (Sender is TAction) then begin + try + if GikoForm.ListView.Selected <> nil then begin + if (TObject(GikoForm.ListView.Selected.Data) is TThreadItem) then begin + s := TThreadItem(GikoForm.ListView.Selected.Data).Title; + end else if (TObject(GikoForm.ListView.Selected.Data) is TBoard) then begin + s := TBoard(GikoForm.ListView.Selected.Data).Title; + end; + GikoForm.SetSelectItemRound(False, '', s); + + end; + except + end; + end; + GikoForm.ListView.Refresh; +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚é”Â‚ð‚¨‹C‚É“ü‚è‚ɒljÁ‚·‚é +// ************************************************************************* +procedure TGikoDM.BoardFavoriteAddActionExecute(Sender: TObject); +begin + if TObject(GikoForm.ListView.Selected.Data) is TBoard then + GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data)); +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚é”Â‚ð‚¨‹C‚É“ü‚è‚ɒljÁ‚·‚éUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.BoardFavoriteAddActionUpdate(Sender: TObject); +begin + BoardFavoriteAddAction.Enabled := + (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0); +end; +// ************************************************************************* +//! Explorer‚ÅLogƒtƒHƒ‹ƒ_‚ðŠJ‚­ +// ************************************************************************* +procedure TGikoDM.LogFolderOpenActionExecute(Sender: TObject); +var + List: TList; +begin + if ((GikoSys.Setting.ListOrientation = gloVertical) and + (GikoSys.Setting.ListHeightState = glsMax)) or + ((GikoSys.Setting.ListOrientation = gloHorizontal) and + (GikoSys.Setting.ListWidthState = glsMax)) then begin + if(GikoForm.GetActiveContent <> nil) then begin + GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(GikoForm.GetActiveContent.FilePath) + '"'); + end; + end else if GikoForm.GetActiveList is TCategory then begin + List := TList.Create; + try + GikoForm.SelectListItem(List); + GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(List[0]).FilePath) + '"'); + finally + List.Free; + end; + end else if GikoForm.GetActiveList is TBoard then begin + GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(GikoForm.GetActiveList).FilePath) + '"'); + end; + +end; +// ************************************************************************* +//! ActiveList‚ªTBoard‚©TCategory‚ŃXƒŒˆê——‚Å‚P‚ˆȏã‘I‘ð‚µ‚Ä‚¢‚é‚Æ—LŒø‚É‚È‚éActionde‹¤’Ê +// ************************************************************************* +procedure TGikoDM.LogFolderOpenActionUpdate(Sender: TObject); +begin + if (((GikoForm.GetActiveList is TBoard) and + (GikoForm.GetActiveList <> BoardGroup.SpecialBoard)) + or (GikoForm.GetActiveList is TCategory)) + and (GikoForm.ListView.SelCount > 0) then + TAction(Sender).Enabled := True + else + TAction(Sender).Enabled := False; +end; +// ************************************************************************* +//! Header.txt‚ðƒuƒ‰ƒEƒU‚Å•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.BrowsBoradHeadActionExecute(Sender: TObject); +var + RefURL, URL : string; + List : TList; +begin + RefURL := ''; + if GikoForm.GetActiveList is TCategory then begin + List := TList.Create; + try + GikoForm.SelectListItem(List); + RefURL := TBoard(List[0]).URL; + finally + List.Free; + end; + end else if GikoForm.GetActiveList is TBoard then begin + RefURL := TBoard(GikoForm.GetActiveList).URL + end; + if RefURL <> '' then begin + if RefURL[Length(RefURL)] <> '/' then + URL := RefURL + '/' + 'head.txt' + else + URL := RefURL + 'head.txt'; + + GikoForm.MoveToURL(URL); + end else begin + ShowMessage('”‚ð“Á’è‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B'); + end; + +end; +// ************************************************************************* +//! ƒXƒŒˆê——‚Ì•\Ž¦‚µ‚Ä‚¢‚é“à—e‚É‚µ‚½‚ª‚Á‚āAƒ\[ƒgƒJƒ‰ƒ€‚̈ʒu‚Æ•ûŒü‚ðŽæ“¾‚·‚é +// ************************************************************************* +function TGikoDM.GetSortProperties(List: TObject; + var vSortOrder: Boolean): Boolean; +begin + Result := True; + if (List <> nil) then begin + if (List is TBBS) then begin + vSortOrder := GikoSys.Setting.BBSSortOrder; + end else if (List is TCategory) then begin + vSortOrder := GikoSys.Setting.CategorySortOrder; + end else if (List is TBoard) then begin + vSortOrder := GikoSys.Setting.BoardSortOrder; + end else begin + Result := False; + end; + end else begin + Result := False; + end; +end; +// ************************************************************************* +//! Œ»Ý‚̃Jƒ‰ƒ€‚ðƒ\[ƒg‚·‚é +// ************************************************************************* +procedure TGikoDM.SortActiveColumnActionExecute(Sender: TObject); +var + i : Integer; + so : boolean; +begin + if GetSortProperties(GikoForm.GetActiveList, so) then begin + for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin + if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or + (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin + so := not so; + TListViewUtils.ListViewSort(nil, GikoForm.ListView, + GikoForm.ListView.Column[ i ], ListNumberVisibleAction.Checked, + so); + break; + end; + end; + end; +end; +// ************************************************************************* +//! ‰E—ׂ̃Jƒ‰ƒ€‚ðƒ\[ƒg +// ************************************************************************* +procedure TGikoDM.SortNextColumnActionExecute(Sender: TObject); +var + i, id : Integer; +begin + for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin + if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or + (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin + id := i + 1; + if id > GikoForm.ListView.Columns.Count - 1 then + id := 0; + TListViewUtils.ListViewSort( nil, GikoForm.ListView, + GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked, + id = 0); + break; + end; + end; +end; +// ************************************************************************* +//! ¶—ׂ̃Jƒ‰ƒ€‚ðƒ\[ƒg +// ************************************************************************* +procedure TGikoDM.SortPrevColumnActionExecute(Sender: TObject); +var + i, id : Integer; +begin + for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin + if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or + (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin + id := i - 1; + if id < 0 then + id := GikoForm.ListView.Columns.Count - 1; + TListViewUtils.ListViewSort( nil, GikoForm.ListView, + GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked, + id = 0); + break; + end; + end; +end; +////////////////////////////////”‚܂ł¨‚µ‚Ü‚¢///////////////////// +// ************************************************************************* +//! •W€ƒc[ƒ‹ƒo[‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.StdToolBarVisibleActionExecute(Sender: TObject); +var + CoolBand: TCoolBand; +begin + CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.StdToolBar); + if CoolBand = nil then + Exit; + GikoSys.Setting.StdToolBarVisible := StdToolBarVisibleAction.Checked; + CoolBand.Visible := GikoSys.Setting.StdToolBarVisible; + GikoForm.StdToolBarVisiblePMenu.Checked := GikoSys.Setting.StdToolBarVisible; +end; +// ************************************************************************* +//! ƒAƒhƒŒƒXƒo[‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.AddressBarVisibleActionExecute(Sender: TObject); +var + CoolBand: TCoolBand; +begin + CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.AddressToolBar); + if CoolBand = nil then + Exit; + GikoSys.Setting.AddressBarVisible := AddressBarVisibleAction.Checked; + CoolBand.Visible := GikoSys.Setting.AddressBarVisible; + GikoForm.AddressToolBarVisiblePMenu.Checked := GikoSys.Setting.AddressBarVisible; +end; +// ************************************************************************* +//! ƒŠƒ“ƒNƒo[‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.LinkBarVisibleActionExecute(Sender: TObject); +var + CoolBand: TCoolBand; +begin + CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.LinkToolBar); + if CoolBand = nil then + Exit; + GikoSys.Setting.LinkBarVisible := LinkBarVisibleAction.Checked; + CoolBand.Visible := GikoSys.Setting.LinkBarVisible; + GikoForm.LinkToolBarVisiblePMenu.Checked := GikoSys.Setting.LinkBarVisible; +end; +// ************************************************************************* +//! ƒŠƒXƒgƒc[ƒ‹ƒo[‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.ListToolBarVisibleActionExecute(Sender: TObject); +var + CoolBand: TCoolBand; +begin + CoolBand := GikoForm.GetCoolBand(GikoForm.ListCoolBar, GikoForm.ListToolBar); + if CoolBand = nil then + Exit; + CoolBand.Visible := ListToolBarVisibleAction.Checked; + GikoSys.Setting.ListToolBarVisible := ListToolBarVisibleAction.Checked; +end; +// ************************************************************************* +//! ƒŠƒXƒg–¼Ì‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.ListNameBarVisibleActionExecute(Sender: TObject); +var + CoolBand: TCoolBand; +begin + CoolBand := GikoForm.GetCoolBand(GikoForm.ListCoolBar, GikoForm.ListNameToolBar); + if CoolBand = nil then + Exit; + CoolBand.Visible := ListNameBarVisibleAction.Checked; + GikoSys.Setting.ListNameBarVisible := ListNameBarVisibleAction.Checked; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒUƒc[ƒ‹ƒo[‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.BrowserToolBarVisibleActionExecute(Sender: TObject); +var + CoolBand: TCoolBand; +begin + CoolBand := GikoForm.GetCoolBand(GikoForm.BrowserCoolBar, GikoForm.BrowserToolBar); + if CoolBand = nil then + Exit; + CoolBand.Visible := BrowserToolBarVisibleAction.Checked; + GikoSys.Setting.BrowserToolBarVisible := BrowserToolBarVisibleAction.Checked; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒU–¼Ì‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.BrowserNameBarVisibleActionExecute(Sender: TObject); +var + CoolBand: TCoolBand; +begin + CoolBand := GikoForm.GetCoolBand(GikoForm.BrowserCoolBar, GikoForm.BrowserNameToolBar); + if CoolBand = nil then + Exit; + CoolBand.Visible := BrowserNameBarVisibleAction.Checked; + GikoSys.Setting.BrowserNameBarVisible := BrowserNameBarVisibleAction.Checked; +end; +// ************************************************************************* +//! ƒƒbƒZ[ƒWƒo[‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.MsgBarVisibleActionExecute(Sender: TObject); +begin + GikoForm.MessageSplitter.Visible := MsgBarVisibleAction.Checked; + GikoForm.MessagePanel.Top := + GikoForm.MessageSplitter.Top + GikoForm.MessageSplitter.Height; + GikoForm.MessageSplitter.Top := GikoForm.MessagePanel.Top + 1; + GikoForm.MessagePanel.Visible := MsgBarVisibleAction.Checked; + GikoSys.Setting.MessageBarVisible := MsgBarVisibleAction.Checked; +end; +// ************************************************************************* +//! ƒƒbƒZ[ƒWƒo[‚ð•Â‚¶‚é +// ************************************************************************* +procedure TGikoDM.MsgBarCloseActionExecute(Sender: TObject); +begin + MsgBarVisibleAction.Execute; +end; +// ************************************************************************* +//! ƒXƒe[ƒ^ƒXƒo[‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.StatusBarVisibleActionExecute(Sender: TObject); +begin + GikoForm.StatusBar.Visible := StatusBarVisibleAction.Checked; + GikoSys.Setting.StatusBarVisible := StatusBarVisibleAction.Checked; +end; +// ************************************************************************* +//! ƒLƒƒƒrƒlƒbƒg‚Ì•\Ž¦‚ðŒfŽ¦”‚ɂ·‚é +// ************************************************************************* +procedure TGikoDM.CabinetBBSActionExecute(Sender: TObject); +begin + + if GikoForm.CabinetPanel.Visible then begin + if GikoForm.TreeType = gtt2ch then begin + GikoForm.CabinetVisible( False ); + + CabinetBBSAction.Checked := False; + end else begin + CabinetBBSAction.Checked := True; + end; + end else begin + GikoForm.CabinetVisible( True ); + CabinetBBSAction.Checked := True; + end; + + if GikoForm.ActiveBBS = nil then + GikoForm.ShowBBSTree( BBSs[ 0 ] ) + else + GikoForm.ShowBBSTree( GikoForm.ActiveBBS ); + +end; +// ************************************************************************* +//! ƒLƒƒƒrƒlƒbƒg‚Ì•\Ž¦‚ð—š—ðƒŠƒXƒg‚É‚·‚é +// ************************************************************************* +procedure TGikoDM.CabinetHistoryActionExecute(Sender: TObject); +begin + GikoForm.ShowHistoryTree; +end; +// ************************************************************************* +//! ƒLƒƒƒrƒlƒbƒg‚Ì•\Ž¦‚ð‚¨‹C‚É“ü‚胊ƒXƒg‚É‚·‚é +// ************************************************************************* +procedure TGikoDM.CabinetFavoriteActionExecute(Sender: TObject); +var + i, b : Integer; + item : TMenuItem; +begin + + if GikoForm.CabinetPanel.Visible then begin + if GikoForm.TreeType = gttFavorite then begin + GikoForm.CabinetVisible( False ); + CabinetFavoriteAction.Checked := False; + end else begin + CabinetFavoriteAction.Checked := True; + end; + end else begin + GikoForm.CabinetVisible( True ); + CabinetFavoriteAction.Checked := True; + end; + + // BBS...BBS, History, Favorite + GikoSys.Setting.CabinetIndex := GikoForm.CabinetSelectPopupMenu.Items.Count - 1; + + b := GikoForm.CabinetSelectPopupMenu.Items.Count - 1; + for i := 0 to b do begin + item := GikoForm.CabinetSelectPopupMenu.Items[ i ]; + if item is TBBSMenuItem then begin + item.Checked := False; + // CabinetMenu ‚Í CabinetSelectPopupMenu ‚Æ“¯‚¶‚ÆŒˆ‚ß‚¤‚¿‚µ‚¿‚Ⴄ + GikoForm.CabinetMenu.Items[ i ].Checked := False; + end; + end; + + // ƒLƒƒƒrƒlƒbƒgƒc[ƒ‹ƒo[‹y‚уLƒƒƒrƒlƒbƒg‚Ì•\Ž¦Ø‘Ö + GikoForm.HistoryToolBar.Hide; + GikoForm.FavoriteToolBar.Show; + GikoForm.TreeView.Visible := False; + GikoForm.FavoriteTreeView.Visible := True; + + GikoForm.CabinetSelectToolButton.Caption := '‚¨‹C‚É“ü‚è'; + GikoForm.TreeType := gttFavorite; + + // ƒƒjƒ…[‹y‚у{ƒ^ƒ“‚̃`ƒFƒbƒN‚ðÝ’è + CabinetBBSAction.Checked := False; + CabinetHistoryAction.Checked := False; + + // ‚¨‹C‚É“ü‚è‚̃cƒŠ[‚ð“WŠJ + GikoForm.FavoriteTreeView.Items.GetFirstNode.Expanded := True; + +end; +// ************************************************************************* +//! ƒLƒƒƒrƒlƒbƒg‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.CabinetVisibleActionExecute(Sender: TObject); +begin + case GikoForm.TreeType of + gttHistory: CabinetHistoryAction.Execute; + gttFavorite: CabinetFavoriteAction.Execute; + else + CabinetBBSAction.Execute; + end; +end; +// ************************************************************************* +//! ƒLƒƒƒrƒlƒbƒg‚ð•Â‚¶‚é +// ************************************************************************* +procedure TGikoDM.CabinetCloseActionExecute(Sender: TObject); +begin + //INFO 2005/11/19 ‚±‚̃AƒNƒVƒ‡ƒ“‚ɂ͉½‚àÝ’肳‚ê‚Ä‚¢‚È‚©‚Á‚½@‚à‚¶‚ã +end; +// ************************************************************************* +//! ƒŠƒXƒg‚ð‘å‚«‚¢ƒAƒCƒRƒ“•\Ž¦‚É‚·‚é +// ************************************************************************* +procedure TGikoDM.LargeIconActionExecute(Sender: TObject); +begin + GikoForm.ListView.ViewStyle := vsIcon; + LargeIconAction.Checked := True; +end; +// ************************************************************************* +//! ƒŠƒXƒg‚ð¬‚³‚¢ƒAƒCƒRƒ“•\Ž¦‚É‚·‚é +// ************************************************************************* +procedure TGikoDM.SmallIconActionExecute(Sender: TObject); +begin + GikoForm.ListView.ViewStyle := vsSmallIcon; + SmallIconAction.Checked := True; +end; +// ************************************************************************* +//! ƒŠƒXƒg‚ðˆê——•\Ž¦‚É‚·‚é +// ************************************************************************* +procedure TGikoDM.ListIconActionExecute(Sender: TObject); +begin + GikoForm.ListView.ViewStyle := vsList; + ListIconAction.Checked := True; +end; +// ************************************************************************* +//! ƒŠƒXƒg‚ðÚ×•\Ž¦‚É‚·‚é +// ************************************************************************* +procedure TGikoDM.DetailIconActionExecute(Sender: TObject); +begin + GikoForm.ListView.ViewStyle := vsReport; + DetailIconAction.Checked := True; +end; +// ************************************************************************* +//! ƒ_ƒEƒ“ƒ[ƒh‚𒆎~‚·‚é +// ************************************************************************* +procedure TGikoDM.StopActionExecute(Sender: TObject); +begin + GikoForm.FControlThread.DownloadAbort; + if GikoForm.WorkCount <> 0 then GikoForm.WorkCount := 0; + try + GikoForm.Animate.Active := False; + except + end; + GikoForm.ScreenCursor := crDefault; +end; +// ************************************************************************* +//! ƒŠƒXƒg‚ƃuƒ‰ƒEƒU‚̏c‰¡”z’u‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.ArrangeActionExecute(Sender: TObject); +begin + if ArrangeAction.Checked then begin + //c + GikoForm.ViewPanel.Align := alNone; + GikoForm.ListSplitter.Align := alNone; + GikoForm.ThreadPanel.Align := alNone; + + GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth; + GikoForm.ViewPanel.Align := alLeft; + + GikoForm.ListSplitter.Width := 5; + GikoForm.ListSplitter.Align := alLeft; + + GikoForm.ViewPanel.Left := -10; + + GikoForm.ThreadPanel.Align := alClient; + + GikoSys.Setting.ListOrientation := gloHorizontal; + case GikoSys.Setting.ListWidthState of + glsMax: begin + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; + BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; + GikoForm.ViewPanel.Width := 1; + end; + glsNormal: begin + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; + BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; + end; + glsMin: begin + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; + BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; + GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80; + end; + end; + end else begin + //‰¡ + GikoForm.ViewPanel.Align := alNone; + GikoForm.ListSplitter.Align := alNone; + GikoForm.ThreadPanel.Align := alNone; + + GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight; + GikoForm.ViewPanel.Align := alTop; + + GikoForm.ListSplitter.Height := 5; + GikoForm.ListSplitter.Align := alTop; + + GikoForm.ViewPanel.Top := -10; + + GikoForm.ThreadPanel.Align := alClient; + GikoSys.Setting.ListOrientation := gloVertical; + case GikoSys.Setting.ListHeightState of + glsMax: begin + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; + BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; + GikoForm.ViewPanel.Height := 1; + end; + glsNormal: begin + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; + BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; + end; + glsMin: begin + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; + BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; + GikoForm.ViewPanel.Height := + GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7; + end; + end; + end; +end; +// ************************************************************************* +//! ƒyƒCƒ“‚̃TƒCƒY‚ð‰Šú‰»‚·‚é +// ************************************************************************* +procedure TGikoDM.PaneInitActionExecute(Sender: TObject); +begin + GikoForm.CabinetPanel.Width := 150; + GikoForm.MessagePanel.Height := 40; + + GikoForm.BrowserSizeWidth := 200; + GikoForm.BrowserSizeHeight := 200; + if ArrangeAction.Checked then begin + GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth; + end else begin + GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight; + end; + if GikoSys.Setting.ListOrientation = gloHorizontal then begin + if GikoSys.Setting.ListHeightState = glsMax then begin + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; + GikoSys.Setting.ListHeightState := glsNormal; + end; + end else begin + if GikoSys.Setting.ListWidthState = glsMax then begin + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; + GikoSys.Setting.ListWidthState := glsNormal; + end; + end; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒUƒ^ƒu‚Ì•\Ž¦ó‘Ô‚ð•ÏX‚·‚é +// ************************************************************************* +procedure TGikoDM.BrowserTabVisibleActionExecute(Sender: TObject); +begin + GikoSys.Setting.BrowserTabVisible := BrowserTabVisibleAction.Checked; + GikoForm.SetBrowserTabState; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒUƒ^ƒu‚ðã‚É•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.BrowserTabTopActionExecute(Sender: TObject); +begin + BrowserTabBottomAction.Checked := False; + BrowserTabTopAction.Checked := True; + GikoSys.Setting.BrowserTabPosition := gtpTop; + GikoForm.SetBrowserTabState; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒUƒ^ƒu‚ð‰º‚É•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.BrowserTabBottomActionExecute(Sender: TObject); +begin + BrowserTabTopAction.Checked := False; + BrowserTabBottomAction.Checked := True; + GikoSys.Setting.BrowserTabPosition := gtpBottom; + GikoForm.SetBrowserTabState; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒUƒ^ƒu‚̃Xƒ^ƒCƒ‹‚ðƒ^ƒuƒXƒ^ƒCƒ‹‚É‚·‚é +// ************************************************************************* +procedure TGikoDM.BrowserTabTabStyleActionExecute(Sender: TObject); +begin + BrowserTabButtonStyleAction.Checked := False; + BrowserTabFlatStyleAction.Checked := False; + BrowserTabTabStyleAction.Checked := True; + GikoSys.Setting.BrowserTabStyle := gtsTab; + GikoForm.SetBrowserTabState; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒUƒ^ƒu‚̃Xƒ^ƒCƒ‹‚ðƒ{ƒ^ƒ“ƒXƒ^ƒCƒ‹‚É‚·‚é +// ************************************************************************* +procedure TGikoDM.BrowserTabButtonStyleActionExecute(Sender: TObject); +begin + BrowserTabTabStyleAction.Checked := False; + BrowserTabFlatStyleAction.Checked := False; + BrowserTabButtonStyleAction.Checked := True; + GikoSys.Setting.BrowserTabStyle := gtsButton; + GikoForm.SetBrowserTabState; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒUƒ^ƒu‚̃Xƒ^ƒCƒ‹‚ðƒtƒ‰ƒbƒgƒ{ƒ^ƒ“ƒXƒ^ƒCƒ‹‚É‚·‚é +// ************************************************************************* +procedure TGikoDM.BrowserTabFlatStyleActionExecute(Sender: TObject); +begin + BrowserTabFlatStyleAction.Checked := True; + BrowserTabTabStyleAction.Checked := False; + BrowserTabButtonStyleAction.Checked := False; + GikoSys.Setting.BrowserTabStyle := gtsFlat; + GikoForm.SetBrowserTabState; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒU‚ɃtƒH[ƒJƒX‚ð“–‚Ä‚é +// ************************************************************************* +procedure TGikoDM.SetFocusForBrowserActionExecute(Sender: TObject); +begin + GikoForm.ActiveContent.Browser.SetFocus; +end; +// ************************************************************************* +//! ƒuƒ‰ƒEƒU‚ɃtƒH[ƒJƒX‚ð“–‚Ä‚éUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.SetFocusForBrowserActionUpdate(Sender: TObject); +begin + if( GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) and + (GikoForm.ActiveContent.Browser <> GikoForm.BrowserNullTab.Browser) then + TAction(Sender).Enabled := true + else + TAction(Sender).Enabled := false; +end; +// ************************************************************************* +//! ƒXƒŒƒbƒhˆê——‚ɃtƒH[ƒJƒX‚ð“–‚Ä‚é +// ************************************************************************* +procedure TGikoDM.SetFocusForThreadListActionExecute(Sender: TObject); +begin + if GikoForm.ActiveContent <> nil then + GikoForm.WebBrowserClick(GikoForm.ActiveContent.Browser); //ˆê‰ñBrowser‚É“–‚Ä‚È‚¢‚Æ“®‚©‚È‚¢‚Æ‚«‚ª‚ ‚é + GikoForm.ListView.SetFocus; + + if( GikoForm.ListView.Items.Count > 0 ) and (GikoForm.ListView.ItemFocused = nil) then + GikoForm.ListView.Items.Item[0].Selected := true; //‘I‘ðƒAƒCƒeƒ€‚ª–³‚¢‚Æ‚«‚͐擪‚Ì‚ð‘I‘ð‚·‚é + + //ƒXƒNƒ[ƒ‹‚³‚¹‚é + if (GikoForm.ListView.ItemFocused <> nil) then begin + GikoForm.ListView.ItemFocused.MakeVisible(False); + end; +end; +// ************************************************************************* +//! ƒLƒƒƒrƒlƒbƒg‚ɃtƒH[ƒJƒX‚ð“–‚Ä‚é +// ************************************************************************* +procedure TGikoDM.SetFocusForCabinetActionExecute(Sender: TObject); +begin + if GikoForm.ActiveContent <> nil then + GikoForm.WebBrowserClick(GikoForm.ActiveContent.Browser); //ˆê‰ñBrowser‚É“–‚Ä‚È‚¢‚Æ“®‚©‚È‚¢‚Æ‚«‚ª‚ ‚é + if GikoForm.TreeView.Visible then begin + GikoForm.TreeView.SetFocus; + if(GikoForm.TreeView.Items.Count > 0) and ( GikoForm.TreeView.Selected = nil ) then + GikoForm.TreeView.Items.Item[0].Selected := true; + end else if GikoForm.FavoriteTreeView.Visible then begin + GikoForm.FavoriteTreeView.SetFocus; + if(GikoForm.FavoriteTreeView.Items.Count > 0) and (GikoForm.FavoriteTreeView.Selected = nil) then + GikoForm.FavoriteTreeView.Items.Item[0].Selected := true; + end; +end; +// ************************************************************************* +//! ƒLƒƒƒrƒlƒbƒg‚ɃtƒH[ƒJƒX‚ð“–‚Ä‚éUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.SetFocusForCabinetActionUpdate(Sender: TObject); +begin + SetFocusForCabinetAction.Enabled := GikoForm.CabinetPanel.Visible; +end; +// ************************************************************************* +//! ƒXƒŒƒbƒhˆê——‚ðÅ‘剻‚µ‚ătƒH[ƒJƒX‚ð“–‚Ä‚é +// ************************************************************************* +procedure TGikoDM.ThreadlistMaxAndFocusActionExecute(Sender: TObject); +begin + BrowserMinAction.Execute; + SetFocusForThreadListAction.Execute; +end; +// ************************************************************************* +//! ƒXƒŒ•\Ž¦‚ðÅ‘剻‚µ‚ătƒH[ƒJƒX‚ð“–‚Ä‚é +// ************************************************************************* +procedure TGikoDM.BrowserMaxAndFocusActionExecute(Sender: TObject); +begin + BrowserMaxAction.Execute; + SetFocusForBrowserAction.Execute; +end; +// ************************************************************************* +//! ƒXƒŒƒbƒhˆê——‚Ì‘I‘ð‚ðíœ‚·‚é +// ************************************************************************* +procedure TGikoDM.UnSelectedListViewActionExecute(Sender: TObject); +begin + if GikoForm.ListView.Selected <> nil then begin + GikoForm.ListView.Selected.Focused := True; + GikoForm.ListView.Selected := nil; + end; +end; +////////////////////////////////•\Ž¦‚Ü‚Å‚¨‚µ‚Ü‚¢///////////////////// +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚ðŠù“Ç‚É‚·‚é +// ************************************************************************* +procedure TGikoDM.KidokuActionExecute(Sender: TObject); +begin + SetThreadReadProperty(true); +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚𖢓ǂɂ·‚é +// ************************************************************************* +procedure TGikoDM.MidokuActionExecute(Sender: TObject); +begin + SetThreadReadProperty(false); +end; +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚éƒXƒŒƒbƒh‚Ì–¢“ǁEŠù“Ç‚ðÝ’è‚·‚é true : Šù“Ç false : –¢“Ç +// ************************************************************************* +procedure TGikoDM.SetThreadReadProperty(read: Boolean); +var + List: TList; + i: Integer; +begin + List := TList.Create; + try + GikoForm.SelectListItem(List); + for i := 0 to List.Count - 1 do begin + if TObject(List[i]) is TThreadItem then begin + if (TThreadItem(List[i]).IsLogFile) then begin + TThreadItem(List[i]).UnRead := not read; + end; + end; + end; + if GikoForm.TreeView.Visible then + GikoForm.TreeView.Refresh; + if GikoForm.ListView.Visible then + GikoForm.ListView.Refresh; + finally + List.Free; + end; +end; +// ************************************************************************* +//! ƒŠƒXƒg‚ð‘S‚Ä‘I‘ð‚·‚é +// ************************************************************************* +procedure TGikoDM.AllSelectActionExecute(Sender: TObject); +begin + GikoForm.ListViewAllSelect; +end; +// ************************************************************************* +//! ƒŠƒXƒg‚ð‘S‚Ä‘I‘ð‚·‚éUpdateƒCƒxƒ“ƒg +// ************************************************************************* +procedure TGikoDM.AllSelectActionUpdate(Sender: TObject); +begin + AllSelectAction.Enabled := GikoForm.ListView.SelCount > 0; +end; +////////////////////////////////•ÒW‚Ü‚Å‚¨‚µ‚Ü‚¢///////////////////// +//! ƒXƒŒƒbƒh‚̃TƒCƒY‚ðÄŒvŽZ‚·‚é +procedure TGikoDM.ThreadSizeCalcForFileActionExecute(Sender: TObject); +const + RECALC_MES : String = 'ƒXƒŒƒbƒh‚Ì—e—Ê‚ðƒtƒ@ƒCƒ‹‚©‚çÄŒvŽZ‚µ‚Ü‚·B'#13#10 + + '‚±‚Ì‘€ì’†AƒMƒRƒiƒr‚Ì‘¼‚Ì‘€ì‚ð‚·‚é‚ƃf[ƒ^‚ª”j‰ó‚³‚ê‚é‹°‚ꂪ‚ ‚è‚Ü‚·B' + + '‚Ü‚½‚±‚Ì‘€ì‚́A”ñí‚ÉŽžŠÔ‚ª‚©‚©‚éê‡‚ª‚ ‚è‚Ü‚·‚ªA‚æ‚낵‚¢‚Å‚·‚©H'; + RECALC_TITLE : String = 'ƒXƒŒƒbƒh‚Ì—e—Ê‚ðƒtƒ@ƒCƒ‹‚©‚çÄŒvŽZ'; + LIMIT_SIZE = 1024; +var + limitSize : Integer; + limitStr : String; +begin +{ ‚Ü‚¸AŽžŠÔ‚ª‚©‚©‚邱‚Æ‚ðŒx‚·‚郁ƒbƒZ[ƒW‚ðo—Í + ÄŒvŽZ‚·‚éƒXƒŒƒbƒh‚̃TƒCƒY‚Ì臒liƒfƒtƒHƒ‹ƒg1024B)‚ðŠm”F + ƒvƒ‰ƒOƒCƒ“‚ð—˜—p‚µ‚È‚¢‚Æ‚±‚ë‚Å‘S‚ẴƒO—L‚èƒXƒŒƒbƒh‚ðŒŸõ + 臒lˆÈ‰º‚̃TƒCƒY‚̏ꍇADAT‚̃tƒ@ƒCƒ‹ƒTƒCƒY‚Æ”äŠrA‚¸‚ê‚Ä‚¢‚ê‚΁A + DAT‚̃tƒ@ƒCƒ‹ƒTƒCƒY‚ōXV‚·‚é +} + if MsgBox(GikoForm.Handle, RECALC_MES, + RECALC_TITLE, MB_YESNO or MB_ICONWARNING) = ID_YES then begin + //臒l‚ÌŠm”F + limitSize := LIMIT_SIZE; + limitStr := IntToStr(limitSize); + if InputQuery('臒l“ü—Í', 'Žw’肵‚½”’l BˆÈ‰º‚Ì—e—ʂ̃XƒŒƒbƒh‚̂ݍČvŽZ‚µ‚Ü‚·', limitStr) then begin + limitSize := StrToInt(MojuUtils.ZenToHan(limitStr)); + if (limitSize < 0) then begin + ShowMessage('臒l‚É•‰‚ÍŽw’è‚Å‚«‚Ü‚¹‚ñI'); + ThreadSizeCalcForFileActionExecute(nil); + end else begin + RecalcThreadSize(limitSize); + end; + end; + end; +end; +//! limit‚æ‚è‚àƒTƒCƒY‚̏¬‚³‚¢ƒXƒŒƒbƒh‚Ì—e—Ê‚ðDATƒtƒ@ƒCƒ‹‚©‚çŒvŽZ +procedure TGikoDM.RecalcThreadSize(limit : Integer); +var + i, j, tmpSize : Integer; + Obj : TObject; + Board : TBoard; + Thread: TThreadItem; + dat : TStringList; +begin + // ÄŒvŽZƒXƒ^[ƒg@ƒvƒ‰ƒOƒCƒ“‚ð—˜—p‚µ‚È‚¢‚Æ‚±‚ë‚ð‘S•”Œ©‚éI + GikoForm.ScreenCursor := crHourGlass; + try + GikoForm.ProgressBar.Max := BoardGroups[0].Count; + for i := 0 to BoardGroups[0].Count - 1 do begin + Obj := BoardGroups[0].Objects[i]; + if (Obj <> nil) then begin + Board := TBoard(Obj); + if not Board.IsThreadDatRead then begin + GikoSys.ReadSubjectFile(Board); + end; + for j := 0 to Board.Count - 1 do begin + Thread := Board.Items[j]; + if (Thread <> nil) and (Thread.IsLogFile) + and (Thread.Size <= limit) then begin + dat := TStringList.Create; + try + tmpSize := Thread.Size; + try + dat.LoadFromFile(Thread.GetThreadFileName); + tmpSize := Length(dat.Text); + tmpSize := tmpSize - dat.Count; + except + end; + Thread.Size := tmpSize; + finally + dat.Free; + end; + end; + end; + end; + GikoForm.ProgressBar.StepBy(1); + end; + finally + GikoForm.ScreenCursor := crDefault; + end; + GikoForm.ProgressBar.Position := 0; + ShowMessage('ŒvŽZI—¹‚µ‚Ü‚µ‚½B'); +end; +// ************************************************************************* +//! “ü—̓AƒVƒXƒg‚̐ݒèƒtƒH[ƒ€‚ðŒÄ‚яo‚· +// ************************************************************************* +procedure TGikoDM.SetInputAssistActionExecute(Sender: TObject); +var + form : TInputAssistForm; +begin + form := TInputAssistForm.Create(GikoForm); + try + form.SetUpFromMain; + form.ShowModal; + finally + form.Release; + end; +end; +// ************************************************************************* +//! Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚ÌŒŸõƒ_ƒCƒAƒƒO‚ð•\Ž¦‚·‚é +// ************************************************************************* +procedure TGikoDM.OpenFindDialogActionExecute(Sender: TObject); +begin + if( GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) then begin + GikoForm.ActiveContent.OpenFindDialog; + end; +end; + +// ************************************************************************* +//! ‘I‘ð‚³‚ê‚Ä‚¢‚邨‹C‚É“ü‚è‚Ì•\Ž¦–¼‚ðƒRƒs[‚·‚é +// ************************************************************************* +procedure TGikoDM.FavoriteTreeViewItemNameCopyActionExecute( + Sender: TObject); +begin + if GikoForm.ClickNode = nil then Exit; + + Clipboard.AsText := + GikoForm.ClickNode.Text + #13#10; +end; + +// ************************************************************************* +//! •\Ž¦‚³‚ê‚Ä‚¢‚é‚·‚ׂẴŒƒXƒGƒfƒBƒ^‚ð•Â‚¶‚é +// ************************************************************************* +procedure TGikoDM.CloseAllEditorActionExecute(Sender: TObject); +var + i : Integer; +begin + if ( EditorFormExists ) then begin + //ƒXƒNƒŠ[ƒ“ã‚Ì‘S‚ẴtƒH[ƒ€‚©‚çAEditorForm‚ð•Â‚¶‚é + for i := Screen.CustomFormCount - 1 downto 0 do begin + if TObject(Screen.CustomForms[i]) is TEditorForm then begin + TEditorForm(Screen.CustomForms[i]).Close; + end; + end; + end; +end; +// ************************************************************************* +//! ƒXƒNƒŠ[ƒ“ã‚ɃŒƒXƒGƒfƒBƒ^‚ª‚¢‚½ê‡C—LŒø‚É‚È‚é +// ************************************************************************* +procedure TGikoDM.CloseAllEditorActionUpdate(Sender: TObject); +begin + if (Sender is TAction) then begin + TAction(Sender).Enabled := EditorFormExists; + end; +end; +// ************************************************************************* +//! ƒXƒNƒŠ[ƒ“ã‚ÉEditorForm‚ª‚¢‚é‚© +// ************************************************************************* +function TGikoDM.EditorFormExists(): boolean; +var + i : Integer; +begin + Result := false; + //ƒXƒNƒŠ[ƒ“ã‚Ì‘S‚ẴtƒH[ƒ€‚©‚çAEditorForm‚ð’T‚· + for i := Screen.CustomFormCount - 1 downto 0 do begin + if (Screen.CustomForms[i] is TEditorForm) then begin + Result := true; + Break; + end; + end; +end; + +// ************************************************************************* +//! ƒXƒNƒŠ[ƒ“ã‚É‚¢‚é‚·‚ׂĂÌEditorForm‚©‚ç–¼‘O‚Ì—š—ð‚ðíœ‚·‚é +// ************************************************************************* +procedure TGikoDM.ClearNameTextAllEditor(); +var + i : Integer; +begin + for i := 0 to Screen.CustomFormCount - 1 do begin + if (Screen.CustomForms[i] is TEditorForm) then begin + TEditorForm(Screen.CustomForms[i]).NameComboBox.Items.Clear; + end; + end; +end; +// ************************************************************************* +//! ƒXƒNƒŠ[ƒ“ã‚É‚¢‚é‚·‚ׂĂÌEditorForm‚©‚烁[ƒ‹—š—ð‚ðíœ‚·‚é +// ************************************************************************* +procedure TGikoDM.ClearMailAllEditor(); +var + i : Integer; +begin + for i := 0 to Screen.CustomFormCount - 1 do begin + if TObject(Screen.CustomForms[i]) is TEditorForm then + TEditorForm(Screen.CustomForms[i]).MailComboBox.Items.Clear; + end; +end; + +// ************************************************************************* +//! ƒŠƒ“ƒN—š—ð‚ð–ß‚é‚̍XVˆ— +// ************************************************************************* +procedure TGikoDM.PrevMoveHistoryUpdate(Sender: TObject); +begin + PrevMoveHistory.Enabled := + (MoveHisotryManager.HisotryIndex > 0) +end; +// ************************************************************************* +//! ƒŠƒ“ƒN—š—ð‚ð–ß‚é +// ************************************************************************* +procedure TGikoDM.PrevMoveHistoryExecute(Sender: TObject); +begin + if ( GikoForm.BrowserTab.TabIndex >= 0 ) then begin + BackToHistory(MoveHisotryManager.getPrevItem + (TBrowserRecord(GikoForm.BrowserTab.Tabs + .Objects[GikoForm.BrowserTab.TabIndex]))); + end else begin + BackToHistory(MoveHisotryManager.getPrevItem( nil ) ); + end; +end; +//! ƒŠƒ“ƒN—š—ðˆ— +procedure TGikoDM.BackToHistory(item: TMoveHistoryItem); +var + browser : TWebBrowser; + doc : IHTMLDocument2; +begin + if ( item <> nil ) then begin + if ( GikoForm.GetActiveContent = item.ThreadItem ) then begin + browser := TBrowserRecord(GikoForm.BrowserTab.Tabs + .Objects[GikoForm.BrowserTab.TabIndex]).Browser; + if (browser <> nil) then begin + try + doc := browser.ControlInterface.Document as IHTMLDocument2; + (doc.body as IHTMLElement2).ScrollTop := item.ScrollTop; + except + end; + end; + end else begin + //URL‚Ɉړ® + MoveURLWithHistory(item.ThreadItem.URL, True); + end; + end; +end; +//! —š—ðˆ—‚‚«URLˆÚ“® +procedure TGikoDM.MoveURLWithHistory(URL : String; KeyMask: Boolean = False); +var + idx : Integer; +begin + //URL‚Ɉړ® + GikoForm.MoveToURL(URL, KeyMask); + //ˆÈ‰ºA—š—ð‚̏ˆ— + idx := GikoForm.AddressComboBox.Items.IndexOf(URL); + if idx = -1 then begin + GikoForm.AddressComboBox.Items.Insert(0, URL); + if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then + GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1); + end else begin + GikoForm.AddressComboBox.Items.Delete(idx); + GikoForm.AddressComboBox.Items.Insert(0, URL); + end; +end; +// ************************************************************************* +//! ƒŠƒ“ƒN—š—ð‚ði‚ނ̍XVˆ— +// ************************************************************************* +procedure TGikoDM.NextMoveHistoryUpdate(Sender: TObject); +begin + NextMoveHistory.Enabled := + (MoveHisotryManager.HisotryIndex < MoveHisotryManager.Count - 1); +end; +// ************************************************************************* +//! ƒŠƒ“ƒN—š—ð‚ði‚Þ +// ************************************************************************* +procedure TGikoDM.NextMoveHistoryExecute(Sender: TObject); +begin + BackToHistory(MoveHisotryManager.getNextItem); +end; +// ************************************************************************* +//! ƒAƒNƒeƒBƒu—v‘f‚̃NƒŠƒbƒN +// ************************************************************************* +procedure TGikoDM.ClickActiveElementActionExecute(Sender: TObject); +var + browser : TWebBrowser; + elem : IHTMLElement; + doc : IHTMLDocument2; +begin + if (GikoForm.GetActiveContent <> nil) then begin + if (GikoForm.BrowserTab.Tabs.Count > 0) and + (GikoForm.BrowserTab.TabIndex >= 0) then begin + browser := TBrowserRecord(GikoForm.BrowserTab.Tabs + .Objects[GikoForm.BrowserTab.TabIndex]).Browser; + if (browser <> nil) then begin + try + doc := browser.ControlInterface.Document as IHTMLDocument2; + if Assigned(doc) then begin + elem := doc.activeElement; + if Assigned(elem) then begin + elem.click; + end; + end; + except + end; + end; + + end; + end; +end; +//! «ƒL[‚̃Gƒ~ƒ…ƒŒ[ƒgƒAƒNƒVƒ‡ƒ“ +procedure TGikoDM.VKDownActionExecute(Sender: TObject); +begin + keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY, 0); + keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); +end; +//! ªƒL[‚̃Gƒ~ƒ…ƒŒ[ƒgƒAƒNƒVƒ‡ƒ“ +procedure TGikoDM.VKUpActionExecute(Sender: TObject); +begin + keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY, 0); + keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); +end; +//! ¨ƒL[‚̃Gƒ~ƒ…ƒŒ[ƒgƒAƒNƒVƒ‡ƒ“ +procedure TGikoDM.VKRightActionExecute(Sender: TObject); +begin + keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY, 0); + keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); +end; +//! ©ƒL[‚̃Gƒ~ƒ…ƒŒ[ƒgƒAƒNƒVƒ‡ƒ“ +procedure TGikoDM.VKLeftActionExecute(Sender: TObject); +begin + keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY, 0); + keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); +end; +//! ƒ^ƒXƒNƒgƒŒƒC‚ÉŠi”[‚·‚é +procedure TGikoDM.StoredTaskTrayActionExecute(Sender: TObject); +begin + GikoForm.StoredTaskTray; + StoredTaskTrayAction.Tag := -1; +end; + +{ +\breif ƒŠƒ“ƒNƒCƒ[ƒWŽæ“¾ +ƒCƒ[ƒW‚́C*.jpg, *.jpeg, *.gif, *.png +} +procedure TGikoDM.AllImageLinkToClipbordActionExecute(Sender: TObject); +var + links : IHTMLElementCollection; + urls, exts : TStringList; +begin + links := GetActiveThreadLinks; + if (links <> nil) then begin + urls := TStringList.Create; + exts := TStringList.Create; + try + exts.CaseSensitive := False; + exts.Sorted := True; + exts.Delimiter := ';'; + exts.DelimitedText := '.gif;.jpg;.jpeg;.png'; + GetLinkURLs(links, urls, 0, exts); + Clipboard.SetTextBuf(urls.GetText); + finally + exts.Free; + urls.Free; + end; + end; +end; + +{ +\breif V’…ƒŒƒX‚̃Šƒ“ƒNƒCƒ[ƒWŽæ“¾ +ƒCƒ[ƒW‚́C*.jpg, *.jpeg, *.gif, *.png +} +procedure TGikoDM.NewImageLinkToClipBoardActionExecute(Sender: TObject); +var + links : IHTMLElementCollection; + urls, exts : TStringList; + ThreadItem : TThreadItem; +begin + ThreadItem := GikoForm.GetActiveContent; + links := GetActiveThreadLinks; + if (ThreadItem <> nil) and (links <> nil) then begin + urls := TStringList.Create; + exts := TStringList.Create; + try + exts.CaseSensitive := False; + exts.Sorted := True; + exts.Delimiter := ';'; + exts.DelimitedText := '.gif;.jpg;.jpeg;.png'; + + GetLinkURLs(links, urls, + (ThreadItem.Count - ThreadItem.NewResCount + 1), exts ); + Clipboard.SetTextBuf(urls.GetText); + finally + exts.Free; + urls.Free; + end; + end; +end; +{ +\breif ƒŠƒ“ƒNURLŽæ“¾ +‘Ώۊg’£Žq‚́AÚ×Ý’è‚Őݒ肳‚ê‚Ä‚¢‚é +} +procedure TGikoDM.AllLinkToClipboardActionExecute(Sender: TObject); +var + links : IHTMLElementCollection; + urls, exts : TStringList; +begin + links := GetActiveThreadLinks; + if (links <> nil) then begin + urls := TStringList.Create; + exts := TStringList.Create; + try + exts.CaseSensitive := False; + exts.Sorted := True; + exts.Delimiter := ';'; + exts.DelimitedText := + MojuUtils.CustomStringReplace(GikoSys.Setting.ExtList, '*', ''); + GetLinkURLs(links, urls, 0, exts); + Clipboard.SetTextBuf(urls.GetText); + finally + exts.Free; + urls.Free; + end; + end; +end; +{ +\breif V’…ƒŒƒXƒŠƒ“ƒNURLŽæ“¾ +‘Ώۊg’£Žq‚́AÚ×Ý’è‚Őݒ肳‚ê‚Ä‚¢‚é +} +procedure TGikoDM.NewLinkToClipboardActionExecute(Sender: TObject); +var + links : IHTMLElementCollection; + urls, exts : TStringList; + ThreadItem : TThreadItem; +begin + ThreadItem := GikoForm.GetActiveContent; + links := GetActiveThreadLinks; + if (ThreadItem <> nil) and (links <> nil) then begin + urls := TStringList.Create; + exts := TStringList.Create; + try + exts.CaseSensitive := False; + exts.Sorted := True; + exts.Delimiter := ';'; + exts.DelimitedText := + MojuUtils.CustomStringReplace(GikoSys.Setting.ExtList, '*', ''); + GetLinkURLs(links, urls, + (ThreadItem.Count - ThreadItem.NewResCount + 1), exts ); + Clipboard.SetTextBuf(urls.GetText); + finally + exts.Free; + urls.Free; + end; + end; +end; + +{ +\brief Œ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚Ì‚·‚ׂẴŠƒ“ƒN‚ðŽæ“¾‚·‚éB +\return IHTMLElementCollection ƒŠƒ“ƒN‚̃RƒŒƒNƒVƒ‡ƒ“ +} +function TGikoDM.GetActiveThreadLinks : IHTMLElementCollection; +var + browser : TWebBrowser; + doc : IHTMLDocument2; +begin + Result := nil; + if (GikoForm.GetActiveContent <> nil) then begin + if (GikoForm.BrowserTab.Tabs.Count > 0) and + (GikoForm.BrowserTab.TabIndex >= 0) then begin + browser := TBrowserRecord(GikoForm.BrowserTab.Tabs + .Objects[GikoForm.BrowserTab.TabIndex]).Browser; + if (browser <> nil) then begin + try + doc := browser.ControlInterface.Document as IHTMLDocument2; + if Assigned(doc) then begin + Result := doc.links; + end; + except + Result := nil; + end; + end; + + end; + end; +end; +{ +\brief ƒŠƒ“ƒN‚ÌURL‚ðŽæ“¾‚·‚é +\param links Žæ“¾‚·‚郊ƒ“ƒN‚Ì‘S‘̂̃RƒŒƒNƒVƒ‡ƒ“ +\param URLs Žæ“¾‚µ‚½URL‚Ì•Û‘¶æ +\param Start Ý’肵‚½ƒŒƒX”ԍ†ˆÈ~‚ðŽæ“¾( > 0) +\param Exts Žæ“¾‚·‚郊ƒ“ƒN‚ÌŠg’£Žq +} +procedure TGikoDM.GetLinkURLs(links : IHTMLElementCollection; + URLs : TStringList; const Start: Integer; Exts : TStringList); +var + index ,i, j : Integer; + item : IHTMLElement; + url, ext : string; +begin + if (links <> nil) then begin + index := 0; + for i := 0 to links.length - 1 do begin + item := links.item(i, 0) as IHTMLElement; + if (item <> nil) then begin + url := item.getAttribute('href', 0); + // ƒŒƒX‚̔ԍ†‚ðXV + if (Pos('menu:', url) > 0) then begin + index := StrToInt64Def( + Copy(url, 6, Length(url)), index + 1 + ); + end else begin + // ŠJŽnƒŒƒX”ԍ†ˆÈ~‚©ƒ`ƒFƒbƒN + if (index >= Start) then begin + ext := ExtractFileExt( AnsiLowerCase(url) ); + // Šg’£Žq‚ðƒ`ƒFƒbƒN + if Exts.Find(ext, j) then begin + urls.Add(url) + end; + end; + end; + end; + end; + end; +end; +{ +\brief ƒAƒhƒŒƒXƒo[‚ɃtƒH[ƒJƒX‚ð“–‚Ä‚é +\param Sender ƒCƒxƒ“ƒg‚Ì”­¶Œ³ +} +procedure TGikoDM.SetForcusForAddresBarActionExecute(Sender: TObject); +begin + if ( GikoForm.AddressToolBar.Visible ) then begin + GikoForm.AddressComboBox.SetFocus; + end +end; +{ +\brief ˆÚ“]‚µ‚½”‚ÌURL‚ðŽæ“¾‚·‚éƒ_ƒCƒAƒOƒ‰ƒ€‚ð•\Ž¦‚·‚é +} +procedure TGikoDM.NewBoardSearchActionExecute(Sender: TObject); +var + form : TNewBoardURLForm; + Msg: string; +begin + if (EditorFormExists) then begin + Msg := 'ƒŒƒXƒGƒfƒBƒ^‚ð‘S‚ĕ‚¶‚Ä‚­‚¾‚³‚¢'; + MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP); + Exit; + end; + form := TNewBoardURLForm.Create(Self); + try + form.ShowModal; + finally + form.Release; + end; +end; +//! ƒuƒ‰ƒEƒU‚ð1ƒy[ƒW•ªƒXƒNƒ[ƒ‹‚³‚¹‚é +procedure TGikoDM.ScrollPageDownActionExecute(Sender: TObject); +begin + GikoForm.BrowserMovement(GikoForm.BrowserPanel.Height); +end; +//! ƒuƒ‰ƒEƒU‚ð1ƒy[ƒW•ªƒXƒNƒ[ƒ‹‚³‚¹‚é +procedure TGikoDM.ScrollPageUpActionExecute(Sender: TObject); +begin + GikoForm.BrowserMovement(-GikoForm.BrowserPanel.Height); +end; + + +//! ‚±‚̃ŒƒX‚ÌID‚ðNGƒ[ƒh‚ɒljÁ‚·‚éi“§–¾) +procedure TGikoDM.AddIDtoNGWord0ActionExecute(Sender: TObject); +begin + GikoForm.AddIDtoNGWord(true); +end; +//! ‚±‚̃ŒƒX‚ÌID‚ðNGƒ[ƒh‚ɒljÁ‚·‚é +procedure TGikoDM.AddIDtoNGWord1ActionExecute(Sender: TObject); +begin + GikoForm.AddIDtoNGWord(false); +end; +//! ƒNƒŠƒbƒvƒ{[ƒh‚Ì•¶Žš—ñ‚ðID‚Æ‚µ‚Ä“¯ˆêIDƒŒƒXƒAƒ“ƒJ[•\Ž¦ +procedure TGikoDM.ExtractSameIDActionExecute(Sender: TObject); +var + ID: String; +begin + ID := Trim(Clipboard.AsText); + if (Length(ID) > 0) then begin + if not IsNoValidID(ID) then begin + GikoForm.ShowSameIDAncher(ID); + end; + end; +end; +//! ƒ^ƒu‚̃XƒŒƒbƒhˆê——‚ð•\Ž¦‚·‚é +procedure TGikoDM.ShowTabListActionExecute(Sender: TObject); +var + i : Integer; +begin + GikoForm.ListView.Items.BeginUpdate; + GikoForm.ListView.Items.Clear; + BoardGroup.SpecialBoard.Clear; + for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin + BoardGroup.SpecialBoard.Add( + TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Thread); + end; + GikoForm.ListView.Items.EndUpdate; + GikoForm.SetActiveList(BoardGroup.SpecialBoard); +end; +//! ‹tŽQÆ‚µ‚Ä‚¢‚郌ƒX‚ð’ljÁ‚·‚é +procedure TGikoDM.DereferenceResActionExecute(Sender: TObject); +var + i, currentNo, No : Integer; + links : IHTMLElementCollection; + threadItem : TThreadItem; + item : IHTMLElement; + url, url2 : string; + resNo : TStringList; + alreadyExist : Boolean; + PathRec: TPathRec; +begin + No := GikoForm.KokoPopupMenu.Tag; + if No = 0 then Exit; + + ThreadItem := GikoForm.KokoPopupThreadItem; + // ƒAƒNƒeƒBƒuƒ^ƒu‚©‚ç‘S‚ẴŠƒ“ƒN‚ðŽæ“¾‚·‚é + links := GetActiveThreadLinks; + if (ThreadItem <> nil) and (links <> nil) then begin + resNo := TStringList.Create; + try + currentNo := 0; + alreadyExist := False; + // ƒŠƒ“ƒN‚ð‘S‚Ä‘–¸‚·‚é + for i := 0 to links.length - 1 do begin + item := links.item(i, 0) as IHTMLElement; + if (item <> nil) then begin + url := item.getAttribute('href', 0); + // ƒŒƒX‚̔ԍ†‚ðXV + if (Pos('menu:', url) > 0) then begin + currentNo := StrToInt64Def( + Copy(url, 6, Length(url)), currentNo + 1 + ); + alreadyExist := False; + end else if (currentNo <> -1) and (not alreadyExist) then begin + // IE7‘Ήž + if Pos('about:..', url) = 1 then begin + url := 'about:blank..' + Copy( url, Length('about:..')+1, Length(url) ) + end; + // Ž©•ª‚ւ̃Šƒ“ƒN‚©‚烌ƒXƒ|ƒbƒv—p‚̔ԍ†Žæ“¾ + if Pos('about:blank..', url) = 1 then begin + // No ”Ԃւ̃Šƒ“ƒN‚ª‚ ‚ê‚ÎŽQÆ‚ ‚è + url2 := THTMLCreate.GetRespopupURL(url, ThreadItem.URL); + PathRec := Gikosys.Parse2chURL2(url2); + if (not PathRec.FNoParam) then begin + Gikosys.GetPopupResNumber(url2,PathRec.FSt,PathRec.FTo); + end; + // ‘ΏۃŒƒX‚à‚µ‚­‚Í‚»‚ê‚ðŠÜ‚Þ‚È‚çŽQÆ‚ ‚è‚Æ‚·‚é + if (PathRec.FSt = No) or + ((PathRec.FSt <= No) and (PathRec.FTo >= No)) then begin + alreadyExist := True; + resNo.Add(IntToStr(currentNo)); + end; + end; + end; + end; + end; + // –³§ŒÀ‚È‚Ì‚Å-1ŒÅ’è + GikoForm.ActiveContent.IDAnchorPopup( + GikoSys.CreateResAnchor(resNo, ThreadItem, -1)); + finally + resNo.Clear; + resNo.Free; + end; + end; +end; + +procedure TGikoDM.UpdateGikonaviActionExecute(Sender: TObject); +var + form : TUpdateCheckForm; + Msg: string; + shutdown: boolean; +begin + if (EditorFormExists) then begin + Msg := 'ƒŒƒXƒGƒfƒBƒ^‚ð‘S‚ĕ‚¶‚Ä‚­‚¾‚³‚¢'; + MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP); + Exit; + end; + GikoForm.UpdateExePath := ''; + GikoForm.UpdateExeArgs := ''; + form := TUpdateCheckForm.Create(Self); + try + form.ShowModal; + shutdown := form.Allowshutdown; + if shutdown then begin + GikoForm.UpdateExePath := form.ExecPath; + GikoForm.UpdateExeArgs := form.ExecArgs; + end; + finally + form.Release; + end; + if shutdown then begin + // ƒMƒRƒiƒrI—¹ + GikoForm.Close; + end; + +end; +//! ‚±‚̃ŒƒX‚ÌURLƒRƒs[iPATH_INFO) +procedure TGikoDM.konoURLPATHActionExecute(Sender: TObject); +var + No : Integer; + ThreadItem : TThreadItem; + URL, Protocol, Host, Path, Document, Port, Bookmark : String; +begin + No := GikoForm.KokoPopupMenu.Tag; + if No = 0 then Exit; + + ThreadItem := GikoForm.KokoPopupThreadItem; + if (ThreadItem.ParentBoard.Is2ch) or not (Pos('?', ThreadItem.URL) > 0) then begin + GikoSys.ParseURI(ThreadItem.URL,Protocol, Host, Path, Document, Port, Bookmark); + URL := Protocol + '://' + Host + Path + IntToStr(No); + end else begin + if Pos('?', ThreadItem.URL) > 0 then begin + URL := Copy(ThreadItem.URL, 1, Pos('?', ThreadItem.URL)-1); + // ‚Ü‚¿BBS—pˆ’u + URL := MojuUtils.CustomStringReplace(URL, 'read.pl', 'read.cgi'); + URL := URL + '/' + ThreadItem.ParentBoard.BBSID + '/' + ChangeFileExt(ThreadItem.FileName, '') + '/' + IntToStr(No); + end; + end; + Clipboard.SetTextBuf( PChar(URL) ); +end; +//! ‚±‚̃ŒƒX‚ÌURLƒRƒs[iQuery_STRING) +procedure TGikoDM.konoURLQueryActionExecute(Sender: TObject); +var + No : Integer; + ThreadItem : TThreadItem; + URL, Protocol, Host, Path, Document, Port, Bookmark : String; +begin + No := GikoForm.KokoPopupMenu.Tag; + if No = 0 then Exit; + + ThreadItem := GikoForm.KokoPopupThreadItem; + // 2ch‚Æ‚µ‚½‚ç‚΂́AƒŒƒX”ԍ†‚ð‚¤‚Ü‚­ˆ—‚µ‚Ä‚­‚ê‚È‚¢‚Ì‚Å—˜—p•s‰Â + if ThreadItem.ParentBoard.Is2ch or not (Pos('?', ThreadItem.URL) > 0) then begin + GikoSys.ParseURI(ThreadItem.URL, Protocol, Host, Path, Document, Port, Bookmark); + URL := Protocol + '://' + Host + '/test/read.cgi?bbs=' + ThreadItem.ParentBoard.BBSID + + '&key=' + ChangeFileExt(ThreadItem.FileName, '') + '&st=' + IntToStr(No) + '&to=' + IntToStr(No); + end else begin + URL := ThreadItem.URL; + // ‚Ü‚¿BBS + if Pos('&LAST=', URL) > 0 then begin + URL := Copy(URL, 1, Pos('&LAST=', URL) - 1); + URL := URL + '&START=' + IntToStr(No) + '&END=' + IntToStr(No); + end; + // ‚»‚Ì‘¼ŠO•”” + if Pos('&ls=', URL) > 0 then begin + URL := Copy(URL, 1, Pos('&ls=', URL) - 1); + URL := URL + '&st=' + IntToStr(No) + '&to=' + IntToStr(No); + end; + + end; + Clipboard.SetTextBuf( PChar(URL) ); +end; +//! ‚±‚̃ŒƒX‚ÌURLƒRƒs[iQuery_STRINGj‚Ì—˜—pƒ`ƒFƒbƒN +procedure TGikoDM.konoURLQueryActionUpdate(Sender: TObject); +const + LIVEDOOR_URL = 'http://jbbs.livedoor.jp/'; +begin + // 2ch‚Æ‚µ‚½‚ç‚΂͗˜—p‚Å‚«‚È‚¢‚悤‚É‚·‚éi‚¤‚Ü‚­ƒŒƒXŽw’è‚Å‚«‚È‚¢‚̂Łj + konoURLQueryAction.Enabled := false; + if (GikoForm.KokoPopupThreadItem <> nil) then begin + konoURLQueryAction.Enabled := not GikoForm.KokoPopupThreadItem.ParentBoard.Is2ch; + if konoURLQueryAction.Enabled then begin + konoURLQueryAction.Enabled := not (Pos(LIVEDOOR_URL, GikoForm.KokoPopupThreadItem.URL) = 1); + end; + end; +end; + end.