From: h677 Date: Mon, 3 Mar 2008 14:51:02 +0000 (+0000) Subject: プレビューを他のアプリに渡す機能を追加 X-Git-Tag: v1_64_1_820~206 X-Git-Url: http://git.osdn.net/view?p=gikonavigoeson%2Fgikonavi.git;a=commitdiff_plain;h=2d815411eabf4cf3788c7929210b1f78359b9ead プレビューを他のアプリに渡す機能を追加 --- diff --git a/ExtPreviewDatamodule.dfm b/ExtPreviewDatamodule.dfm new file mode 100644 index 0000000..3d84e27 --- /dev/null +++ b/ExtPreviewDatamodule.dfm @@ -0,0 +1,16 @@ +object ExtPreviewDM: TExtPreviewDM + OldCreateOrder = False + OnCreate = DataModuleCreate + OnDestroy = DataModuleDestroy + Left = 200 + Top = 120 + Height = 150 + Width = 215 + object ExecuteTimer: TTimer + Enabled = False + Interval = 200 + OnTimer = ExecuteTimerTimer + Left = 120 + Top = 40 + end +end diff --git a/ExtPreviewDatamodule.pas b/ExtPreviewDatamodule.pas new file mode 100644 index 0000000..12c0f41 --- /dev/null +++ b/ExtPreviewDatamodule.pas @@ -0,0 +1,181 @@ +unit ExtPreviewDatamodule; + +interface + +uses + SysUtils, Classes, bmRegExp, ExtCtrls; + +type + TCommand = class(TObject) + private + FCommand: String; + FConfirm: Boolean; + FContinue: Boolean; + FToURL: String; + public + constructor Create(const comm: String); + property Command: String read FCommand; + property Confirm: Boolean read FConfirm write FConfirm; + property Continue: Boolean read FContinue write FContinue; + property ToURL: String read FToURL write FToURL; + end; + + TExtPreviewDM = class(TDataModule) + ExecuteTimer: TTimer; + procedure DataModuleCreate(Sender: TObject); + procedure DataModuleDestroy(Sender: TObject); + procedure ExecuteTimerTimer(Sender: TObject); + private + { Private éŒ¾ } + FAWKStr: TAWKStr; + FRegs: TStringList; + FExecCommand: TCommand; + function ReadCommand(const Line: String): TCommand; + public + { Public éŒ¾ } + function PreviewURL(const URL: String): Boolean; + end; + +var + ExtPreviewDM: TExtPreviewDM; + +implementation + +uses + GikoSystem, IniFiles, GikoUtil, Windows; + +constructor TCommand.Create(const comm: String); +begin + FCommand := comm; + FConfirm := False; + FContinue := False; + FToURL := ''; +end; +{$R *.dfm} +{ +\brief ƒRƒ“ƒXƒgƒ‰ƒNƒ^ +} +procedure TExtPreviewDM.DataModuleCreate(Sender: TObject); +var + values: TStringList; + i, pos: Integer; +begin + FAWKStr := TAWKStr.Create(Self); + FRegs := TStringList.Create; + if (FileExists(GikoSys.GetExtpreviewFileName)) then begin + values := TStringList.Create; + try + values.LoadFromFile(GikoSys.GetExtpreviewFileName); + for i := 0 to values.Count - 1 do begin + if ( AnsiPos('#',values[i]) = 1 ) then begin + // æ“ª#‚ÅŽn‚Ü‚é‚̓Rƒƒ“ƒgs + end else begin + pos := AnsiPos(#9,values[i]); + if (pos > 0) then begin + FRegs.AddObject( + Copy(values[i], 1, pos - 1), + ReadCommand( + Copy(values[i], pos + 1, Length(values[i]))) + ); + end; + end; + end; + finally + values.Free; + end; + end; +end; +{ +\brief ƒfƒXƒgƒ‰ƒNƒ^ +} +procedure TExtPreviewDM.DataModuleDestroy(Sender: TObject); +begin + FRegs.Clear; + FRegs.Free; + FAWKStr.Free; +end; +{ +\brief ƒRƒ}ƒ“ƒhs‰ðŽß +} +function TExtPreviewDM.ReadCommand(const Line: String): TCommand; +var + pos: Integer; + sub: String; +begin + + // FCommand , FConfirm , FContinue ‚̏‡ + pos := AnsiPos(#9, Line); + if (pos > 0) then begin + Result := TCommand.Create( Copy(Line, 1, pos - 1) ); + sub := Copy(Line, pos + 1, Length(Line)); + end else begin + Result := TCommand.Create( '' ); + sub := ''; + end; + pos := AnsiPos(#9, sub); + if (pos > 0) then begin + if (AnsiLowerCase(Copy(sub, 1, pos - 1)) = 'true' ) then begin + Result.Confirm := True; + end; + sub := Copy(Line, pos + 1, Length(Line)); + end; + sub := Trim(sub); + if (AnsiLowerCase(sub) = 'true' ) then begin + Result.Continue := True; + end; +end; +{ +\brief “o˜^‚³‚ꂽURL‚ðˆ—‚·‚éƒRƒ}ƒ“ƒh‚ð•Ô‚· +} +function TExtPreviewDM.PreviewURL(const URL: String): Boolean; +var + i: Integer; + RStart: Integer; + RLength: Integer; + EsqURL: String; +begin + Result := False; + ExecuteTimer.Interval := 0; + ExecuteTimer.Enabled := False; + FExecCommand := nil; + if (Length(URL) > 0) and (FRegs.Count > 0) then begin + EsqURL := FAWKStr.ProcessEscSeq(URL); + for i := 0 to FRegs.Count - 1 do begin + FAWKStr.RegExp := FRegs[i]; + if ( FAWKStr.Match(EsqURL, RStart, RLength ) <> 0 ) then begin + FExecCommand := TCommand(FRegs.Objects[i]); + FExecCommand.ToURL := Copy(EsqURL, RStart, RLength); + ExecuteTimer.Interval := GikoSys.Setting.PreviewWait; + ExecuteTimer.Enabled := True; + Result := not FExecCommand.FContinue; + break; + end; + end; + end; +end; + +procedure TExtPreviewDM.ExecuteTimerTimer(Sender: TObject); +var + rc: Integer; +begin + // ƒ^ƒCƒ}[’âŽ~ + ExecuteTimer.Interval := 0; + ExecuteTimer.Enabled := False; + + if (FExecCommand <> nil) then begin + rc := ID_YES; + if (FExecCommand.Confirm) then begin + // Msg + rc := GikoUtil.MsgBox(0, FExecCommand.Command + '‚É'#13#10 + + FExecCommand.ToURL + ' ‚ð“n‚µ‚Ü‚·‚©H', + 'Šm”F', MB_ICONQUESTION or MB_YESNO); + end; + + if (rc = ID_YES) then begin + GikoSys.CreateProcess( + FExecCommand.Command, '"' + FExecCommand.ToURL + '"'); + end; + end; +end; + +end. diff --git a/Giko.pas b/Giko.pas index f1d3ce8..3920020 100644 --- a/Giko.pas +++ b/Giko.pas @@ -19,7 +19,7 @@ uses {HintWindow,} GikoCoolBar, GikoListView, Search, ExternalBoardManager, ExternalBoardPlugInMain, StdActns, Variants, ExtActns,IdTCPConnection, IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord, MoveHistoryItem, - ShellAPI,Preview, HistoryList, ResPopupBrowser; + ShellAPI,Preview, HistoryList, ResPopupBrowser, ExtPreviewDatamodule; const NGWORDNAME_PANEL = 3; @@ -1992,7 +1992,10 @@ begin //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15 - + // ‘¼‚̃AƒvƒŠ‚ŏˆ—‚·‚éURL‚©Šm”F + if (ExtPreviewDM.PreviewURL(Text2)) then begin + Exit; + end; s := ''; Ext := AnsiLowerCase(ExtractFileExt(Text2)); if (Pos('http://', Text2) = 1) and (GikoSys.Setting.PreviewVisible) and diff --git a/GikoSystem.pas b/GikoSystem.pas index f1afb9f..fb65905 100644 --- a/GikoSystem.pas +++ b/GikoSystem.pas @@ -256,6 +256,7 @@ type procedure AddOutofIndexDat(Board: TBoard; DatList: TStringList; AllCreate: boolean = True); //! ƒtƒ@ƒCƒ‹–¼‚©‚ç‚̃XƒŒƒbƒhì¬“ú‚̎擾 function GetCreateDateFromName(FileName: String): TDateTime; + function GetExtpreviewFileName: String; end; var @@ -3447,6 +3448,12 @@ function TGikoSys.GetReplaceFileName: String; begin Result := Setting.GetReplaceFileName; end; +//! ƒvƒŒƒrƒ…[Šg’£‚̐ݒèƒtƒ@ƒCƒ‹Žæ“¾ +function TGikoSys.GetExtpreviewFileName: String; +begin + Result := Setting.GetExtprevieFileName; +end; + //! ƒtƒ@ƒCƒ‹–¼‚©‚ç‚̃XƒŒƒbƒhì¬“ú‚̎擾 function TGikoSys.GetCreateDateFromName(FileName: String): TDateTime; var diff --git a/Setting.pas b/Setting.pas index ddddc3d..7a98588 100644 --- a/Setting.pas +++ b/Setting.pas @@ -538,9 +538,10 @@ type procedure WriteLogFolder(AVal : String); function GetInputAssistFileName : String; function GetReplaceFileName: String; + function GetExtprevieFileName: String; { \brief ƒŠƒ“ƒN—š—ð‚Ì•ÛŽƒTƒCƒY‚Ìsetter - \param AVal Ý’è‚·‚éƒTƒCƒY( >0) + \param AVal Ý’è‚·‚éƒTƒCƒY( >0) } procedure SetMoveHistorySize(AVal : Integer); //ŽóMƒoƒbƒtƒ@ƒTƒCƒY @@ -860,6 +861,7 @@ const INPUTASSIST_FILE_NAME = 'InputAssist.ini'; FIXED_COOKIE = 'hana=mogera'; REPLACE_FILE_NAME = 'replace.ini'; + EXT_PREVIEW_FILE_NAME = 'extpreview.ini'; implementation @@ -2167,6 +2169,10 @@ function TSetting.GetReplaceFileName: String; begin Result := GetConfigDir + REPLACE_FILE_NAME; end; +function TSetting.GetExtprevieFileName: String; +begin + Result := GetConfigDir + EXT_PREVIEW_FILE_NAME; +end; procedure TSetting.SetMoveHistorySize(AVal : Integer); begin if (AVal > 0) then begin diff --git a/gikoNavi.dpr b/gikoNavi.dpr index de35f2a..e3b41d7 100644 --- a/gikoNavi.dpr +++ b/gikoNavi.dpr @@ -79,7 +79,8 @@ uses ReplaceDataModule in 'ReplaceDataModule.pas' {ReplaceDM: TDataModule}, ResPopupBrowser in 'ResPopupBrowser.pas', SkinFiles in 'SkinFiles.pas', - NewBoardURL in 'NewBoardURL.pas' {NewBoardURLForm}; + NewBoardURL in 'NewBoardURL.pas' {NewBoardURLForm}, + ExtPreviewDatamodule in 'ExtPreviewDatamodule.pas' {ExtPreviewDM: TDataModule}; {$R *.RES} {$R gikoResource.res} @@ -137,6 +138,7 @@ begin Application.CreateForm(TInputAssistDM, InputAssistDM); Application.CreateForm(TReplaceDM, ReplaceDM); Application.CreateForm(TGikoForm, GikoForm); + Application.CreateForm(TExtPreviewDM, ExtPreviewDM); Application.Run; ReleaseMutex(hMutex); end; diff --git a/gikoNavi.res b/gikoNavi.res index 7ebd250..3a0eb0d 100644 Binary files a/gikoNavi.res and b/gikoNavi.res differ