FLoad : TOnLoad;
FVersionInfo : TOnVersionInfo;
FAcceptURL : TOnAcceptURL;
+ FExtractBoardURL : TOnExtractBoardURL;
FPlugInMenu : TOnPlugInMenu;
FCreateThreadItem : TThreadItemCreate;
var outRelease : string; var outRevision : DWORD );
// \8ew\92è\82µ\82½ URL \82ð\82±\82Ì\83v\83\89\83O\83C\83\93\82Å\8eó\82¯\95t\82¯\82é\82©\82Ç\82¤\82©
function AcceptURL( inURL : string ) : TAcceptType;
+ // URL\82©\82ç\8eg\82¦\82éBoard\82ÌURL\82ð\93±\82«\8fo\82·
+ function ExtractBoardURL( inURL : string ): string;
// \83\81\83j\83\85\81[\83n\83\93\83h\83\89
procedure PlugInMenu( inHandle : HMENU );
implementation
-uses GikoSystem;
+uses GikoSystem, BoardGroup;
// *************************************************************************
// BoardPlugin \83t\83H\83\8b\83_\82É\82 \82é\83v\83\89\83O\83C\83\93\82ð\91S\82Ä\83\8d\81[\83h
pluginNames := TStringList.Create;
try
- GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*', pluginNames, False, False );
+ //GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*', pluginNames, False, False );
+ pluginNames.BeginUpdate;
+ GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*.dll', pluginNames, False );
+ pluginNames.EndUpdate;
SetLength( BoardPlugIns, pluginNames.Count );
-
+ //
+ SetLength( BoardGroups, pluginNames.Count + 1 );
+ BoardGroups[0] := TBoardGroup.Create;
+ BoardGroups[0].Sorted := true;
+ BoardGroups[0].BoardPlugIn := nil;
+ //
bound := pluginNames.Count - 1;
for i := 0 to bound do begin
try
BoardPlugIns[ i ] := TBoardPlugIn.CreateFromName( pluginNames.Strings[ i ] );
BoardPlugIns[ i ].Loaded;
+ BoardGroups[ i + 1 ] := TBoardGroup.Create;
+ BoardGroups[ i + 1 ].Sorted := True;
+ BoardGroups[ i + 1 ].BoardPlugIn := BoardPlugIns[ i ];
except end;
end;
finally
FLoad := nil;
FVersionInfo := nil;
FAcceptURL := nil;
+ FExtractBoardURL := nil;
FPlugInMenu := nil;
FCreateThreadItem := nil;
Result := atNoAccept;
end;
-
+// *************************************************************************
+// \8ew\92è\82µ\82½ URL \82©\82ç\8eg\82¦\82éBoard\82ÌURL\82ð\93±\82«\8fo\82·
+// *************************************************************************
+function TBoardPlugIn.ExtractBoardURL(
+ inURL : string
+) : string;
+var
+ URL : PChar;
+// tmp : string;
+begin
+ Result := inURL;
+ if Assigned( FExtractBoardURL ) then begin
+ FExtractBoardURL( PChar(inURL), URL);
+ Result := string(URL);
+ DisposeResultString(URL);
+ end;
+end;
// *************************************************************************
// \83\81\83j\83\85\81[\83n\83\93\83h\83\89
// *************************************************************************
function TBoardPlugIn.GetDat(
threadItem : DWORD; // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
inNo : DWORD // \95\\8e¦\82·\82é\83\8c\83X\94Ô\8d\86
-) : string; // \82Q\82¿\82á\82ñ\82Ë\82é\82Ìdat\8c`\8e®
+) : string; // \82Q\82¿\82á\82ñ\82Ë\82é\82Ìdat\8c`\8e®
+var
+ tmp : PChar;
begin
if Assigned( FGetDat ) then begin
- Result := FGetDat( threadItem, inNo );
+ tmp := FGetDat( threadItem, inNo );
+ try
+ Result := string( tmp );
+ finally
+ DisposeResultString(tmp); end;
end;
end;
FLoad := GetProcAddress( FModule, 'OnLoad' );
FVersionInfo := GetProcAddress( FModule, 'OnVersionInfo' );
FAcceptURL := GetProcAddress( FModule, 'OnAcceptURL' );
+ FExtractBoardURL := GetProcAddress( FModule, 'OnExtractBoardURL' );
FPlugInMenu := GetProcAddress( FModule, 'OnPlugInMenu' );
FCreateThreadItem := GetProcAddress( FModule, 'ThreadItemCreate' );