OSDN Git Service

・スレタイにタブ文字があるスレッドをHTML化して保存できない問題を修正
[gikonavigoeson/gikonavi.git] / ExternalBoardManager.pas
index 2351aa7..a298e4b 100644 (file)
@@ -19,6 +19,7 @@ type
                FLoad                                                           : TOnLoad;
                FVersionInfo                            : TOnVersionInfo;
                FAcceptURL                                      : TOnAcceptURL;
+        FExtractBoardURL                               : TOnExtractBoardURL;
                FPlugInMenu                                     : TOnPlugInMenu;
 
                FCreateThreadItem               : TThreadItemCreate;
@@ -66,6 +67,8 @@ type
                        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 );
 
@@ -122,7 +125,7 @@ procedure InitializeBoardPlugIns;
 
 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
@@ -136,14 +139,24 @@ begin
        pluginNames := TStringList.Create;
        try
                //GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*', pluginNames, False, False );
-               GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*', pluginNames, 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
@@ -169,6 +182,7 @@ begin
        FLoad                                                           := nil;
        FVersionInfo                            := nil;
        FAcceptURL                                      := nil;
+    FExtractBoardURL                   := nil;
        FPlugInMenu                                     := nil;
 
        FCreateThreadItem               := nil;
@@ -341,7 +355,23 @@ begin
                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
 // *************************************************************************
@@ -620,6 +650,7 @@ begin
                        FLoad                                                           := GetProcAddress( FModule, 'OnLoad' );
                        FVersionInfo                            := GetProcAddress( FModule, 'OnVersionInfo' );
                        FAcceptURL                                      := GetProcAddress( FModule, 'OnAcceptURL' );
+            FExtractBoardURL                           := GetProcAddress( FModule, 'OnExtractBoardURL' );
                        FPlugInMenu                                     := GetProcAddress( FModule, 'OnPlugInMenu' );
 
                        FCreateThreadItem               := GetProcAddress( FModule, 'ThreadItemCreate' );