OSDN Git Service

選択スレッドの保存をHTML化保存とDat保存の二つに。
authorh677 <h677>
Sun, 20 Jun 2004 05:40:40 +0000 (05:40 +0000)
committerh677 <h677>
Sun, 20 Jun 2004 05:40:40 +0000 (05:40 +0000)
ココにレスで1000レスチェックが残っていたので削除

Giko.dfm
Giko.pas

index 3aacf5d..36e2207 100644 (file)
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -8872,9 +8872,16 @@ object GikoForm: TGikoForm
       object N15: TMenuItem
         Caption = '-'
       end
-      object SelectThreadSave: TMenuItem
-        Action = SelectItemSaveForHTML
-        Caption = #36984#25246#12473#12524#12483#12489#12434'HTML'#21270#12375#12390#20445#23384
+      object N66: TMenuItem
+        Caption = #36984#25246#12473#12524#12483#12489#12434#20445#23384
+        object SelectThreadSave: TMenuItem
+          Action = SelectItemSaveForHTML
+          Caption = 'HTML'#21270#12377#12427
+        end
+        object dat1: TMenuItem
+          Action = SelectItemSaveForDat
+          Caption = 'DAT'#12398#12414#12414
+        end
       end
       object ExportFavoriteFileAction1: TMenuItem
         Action = ExportFavoriteFile
@@ -10333,6 +10340,12 @@ object GikoForm: TGikoForm
       Hint = #36984#25246#12473#12524#12483#12489#12434'HTML'#21270#12375#12390#20445#23384
       OnExecute = SelectItemSaveForHTMLExecute
     end
+    object SelectItemSaveForDat: TAction
+      Category = #12501#12449#12452#12523
+      Caption = 'SelectItemSaveForHTML'
+      Hint = #36984#25246#12473#12524#12483#12489#12434'DAT'#24418#24335#12398#12414#12414#20445#23384
+      OnExecute = SelectItemSaveForDatExecute
+    end
     object FileSaveAs1: TFileSaveAs
       Category = #12501#12449#12452#12523
       Caption = #21517#21069#12434#20184#12369#12390#20445#23384'(&A)...'
@@ -10431,13 +10444,6 @@ object GikoForm: TGikoForm
     object MidokuPMenu: TMenuItem
       Action = MidokuAction
     end
-    object N22: TMenuItem
-      Caption = '-'
-    end
-    object SelectItemSaveForHTML1: TMenuItem
-      Action = SelectItemSaveForHTML
-      Caption = #36984#25246#12473#12524#12483#12489#12434'HTML'#21270#12375#12390#20445#23384
-    end
     object N55: TMenuItem
       Caption = '-'
     end
index 3e130e0..e639ef8 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -13,7 +13,7 @@ uses
        MSHTML_TLB,
 {$IFEND}
        IdHTTP, ActiveX, ActnList, ImgList,
-    ToolWin, Buttons, {Clipbrd,} {HTTPApp,} YofUtils, IdComponent,
+       ToolWin, Buttons, {Clipbrd,} {HTTPApp,} YofUtils, IdComponent,
        ShellAPI,  UrlMon, Tabs, IdGlobal, StrUtils,
        CommCtrl, IniFiles, Dialogs,
        GikoSystem, GikoUtil, Setting, BoardGroup, ThreadControl, ItemDownload,
@@ -250,7 +250,6 @@ type
                N21: TMenuItem;
                URLC3: TMenuItem;
                URLN2: TMenuItem;
-               N22: TMenuItem;
                N23: TMenuItem;
                ListCoolBar: TGikoCoolBar;
                ListToolBar: TToolBar;
@@ -544,8 +543,10 @@ type
     SelectThreadSave: TMenuItem;
     SelectItemSaveForHTML: TAction;
     FileSaveAs1: TFileSaveAs;
-    SelectItemSaveForHTML1: TMenuItem;
     N55: TMenuItem;
+    N66: TMenuItem;
+    dat1: TMenuItem;
+    SelectItemSaveForDat: TAction;
                                procedure FormCreate(Sender: TObject);
                procedure FormDestroy(Sender: TObject);
                procedure CabinetPanelHide(Sender: TObject);
@@ -877,6 +878,7 @@ type
     procedure SelectItemSaveForHTMLExecute(Sender: TObject);
     procedure KidokuActionExecute(Sender: TObject);
     procedure MidokuActionExecute(Sender: TObject);
+    procedure SelectItemSaveForDatExecute(Sender: TObject);
        private
                { Private \90é\8c¾ }
         //RoundList : TRoundList;
@@ -1024,7 +1026,7 @@ type
                // \8ae\8f\8a\82É\82 \82é\83L\83\83\83r\83l\83b\83g\81E BBS \83\81\83j\83\85\81[\82ð\83Z\83b\83g\81^\8dX\90V
                procedure SetBBSMenu;
                function WebBrowserClick(Sender: TObject): WordBool;
-
+               procedure SkinorCSSFilesCopy(path: string);
        protected
                procedure CreateParams(var Params: TCreateParams); override;
                procedure WndProc(var Message: TMessage); override;
@@ -3372,8 +3374,11 @@ var
        idx: Integer;
        ThreadItem: TThreadItem;
        Thread: TBrowserRecord;
+       ThreadTitle, ThreadPTitle: string;
+       ThreadScrollTop: Integer;
+       ThreadIsLog, ThreadUnRead, ThreadNewArraical: boolean;
 begin
-    Thread := inThread;
+       Thread := inThread;
        idx := BrowserTab.TabIndex;
        if (FActiveContent <> nil) and
                (FActiveContent.Thread <> Thread.Thread) and
@@ -3419,7 +3424,13 @@ begin
                Thread.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
                FBrowsers.Move(BROWSER_COUNT - 1, 0);
        end;
-    ThreadItem := Thread.Thread;
+       ThreadTitle := Thread.Thread.Title;
+       ThreadPTitle := Thread.Thread.ParentBoard.Title;
+       ThreadScrollTop := Thread.Thread.ScrollTop;
+       ThreadIsLog := Thread.Thread.IsLogFile;
+       ThreadItem := Thread.Thread;
+       ThreadNewArraical :=  Thread.Thread.NewArrival;
+       ThreadUnRead := Thread.Thread.UnRead;
        BBSID := ThreadItem.ParentBoard.BBSID;
        FileName := ThreadItem.FileName;
 
@@ -3453,7 +3464,7 @@ begin
                                Exit;
                        end;
                end;
-               if not ThreadItem.IsLogFile then begin
+               if not ThreadIsLog then begin
                        Self.Caption := CAPTION_NAME ;
                        try
                                s := '<HTML><BODY><CENTER>\82±\82Ì\83X\83\8c\83b\83h\82Í\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ</CENTER></BODY></HTML>';
@@ -3465,7 +3476,7 @@ begin
                        finally
                        end;
                end else begin
-                       Self.Caption := CAPTION_NAME + ' - [' + ThreadItem.Title + ']';
+                       Self.Caption := CAPTION_NAME + ' - [' + ThreadTitle + ']';
                        //Thread.Repaint\82Í\81A\83X\83L\83\93\93\99\82Ì\90Ý\92è\82ð\95Ï\8dX\82µ\82½\82Æ\82«\81AThread\82ð\83_\83E\83\93\83\8d\81[\83h\82µ\82½\82Æ\82«
                        //\90V\8bK\82ÉThread\82ð\8aJ\82¢\82½\82Æ\82«\82É\90^\82É\82È\82Á\82Ä\82¢\82é\81B
                        if(Thread.Repaint) or (Thread.OnlyHundred <> GikoSys.OnlyAHundredRes)then begin
@@ -3488,19 +3499,19 @@ begin
                                        //\91\8a\82µ\82È\82¢\82Æ\88ê\89æ\96Ê\95ª\82µ\82©\95`\89æ\82Å\82«\82Ä\82È\82¢\82Ì\82Å\82»\82ê\88È\8fã\82Ì\83X\83N\83\8d\81[\83\8b\97Ê\82ð\8ew\92è\82µ\82Ä\82à\96³\8cø\82É\82È\82é
                                        //\81@by\82à\82\82ã(2004/01/20)
                                        try
-                                               if (Assigned(Thread)) and (Assigned(ThreadItem))then begin
+                                               //if (Assigned(Thread)) and (Assigned(ThreadItem))then begin
                                                        if(Thread <> nil) and (ThreadItem <>nil) then begin
-                                                               if ThreadItem.UnRead then
+                                                               if ThreadUnRead then
                                                                        BrowserMovement('new', Thread)
-                                                               else if ThreadItem.ScrollTop <> 0 then begin
+                                                               else if ThreadScrollTop <> 0 then begin
                                                                        try
-                                                                               doc.Body.ScrollTop := ThreadItem.ScrollTop;
+                                                                               doc.Body.ScrollTop := ThreadScrollTop;
                                                                        except
                                                                                on E: Exception do
                                                                                        MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
                                                                        end;
                                                                end;
-                                                       end;
+                                               //      end;
                                                end else begin
                                                        FActiveContent := nil;
                                                        BrowserTab.Repaint;
@@ -3521,12 +3532,12 @@ begin
                if (Assigned(Thread)) and (Assigned(Thread.Thread)) and (Thread <> nil) and (ThreadItem <>nil) then begin
                        //FActiveContent := Thread;
 
-                       BrowserBoardNameLabel.Caption := ThreadItem.ParentBoard.Title;
+                       BrowserBoardNameLabel.Caption := ThreadPTitle;
                        ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
-                       BrowserNameLabel.Caption := ThreadItem.Title;
+                       BrowserNameLabel.Caption := ThreadTitle;
                        ItemImage.Picture := nil;
-                       if ThreadItem.IsLogFile then
-                               if ThreadItem.NewArrival then
+                       if ThreadIsLog then
+                               if ThreadNewArraical then
                                        ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
                                else
                                        ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
@@ -5479,13 +5490,6 @@ begin
        Item := GetActiveContent;
        if Item = nil then Exit;
 
-       if Item.Count >= 1000 then begin
-               msg := '\82±\82Ì\83X\83\8c\83b\83h\82Í\83\8c\83X\90\94\82ª\82P\82O\82O\82O\82ð\92´\82¦\82Ä\82¢\82é\82Ì\82Å\8f\91\8d\9e\82Ý\8fo\97\88\82Ü\82¹\82ñ\81B' + #13#10
-                                + '\90V\83X\83\8c\83b\83h\82ð\92T\82µ\82Ä\82­\82¾\82³\82¢\81B';
-               if MsgBox(Handle, msg, '\8cx\8d\90', MB_YESNO or MB_ICONEXCLAMATION) <> 7 then begin
-                       Exit;
-               end;
-       end;
        Editor := TEditorForm.Create(Self);
        Editor.SetThreadItem(Item);
        Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10;
@@ -5509,7 +5513,6 @@ begin
        LPMSep05.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
        DeletePMenu.Visible := (GetActiveList is TBoard);
        LPMSep06.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
-       SelectItemSaveForHTML1.Visible := (GetActiveList is TBoard);
        BoardFavoriteAddMenu.Visible := (GetActiveList is TCategory);
        ThreadFavoriteAddMenu.Visible := (GetActiveList is TBoard);
 
@@ -9601,6 +9604,7 @@ begin
 end;
 procedure TGikoForm.ExportFavoriteFileAccept(Sender: TObject);
 begin
+
        if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
                ShowMessage('\83t\83@\83C\83\8b\82ð\8fo\97Í\82µ\82Ü\82µ\82½');
        end else begin
@@ -10343,6 +10347,33 @@ begin
                end;
 end;
 
+procedure TGikoForm.SelectItemSaveForDatExecute(Sender: TObject);
+var
+       List: TList;
+       i: Integer;
+begin
+       List := TList.Create;
+       try
+               SelectListItem(List);
+               FileSaveAs1.Dialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðdat\82Ì\82Ü\82Ü\95Û\91¶';
+               FileSaveAs1.Dialog.Filter := 'DAT\83t\83@\83C\83\8b(*.dat)|*.dat';
+               for i := 0 to List.Count - 1 do begin
+                       if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
+                               FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
+                               if FileSaveAs1.Execute then begin
+                                       //\82È\82º\82©\83L\83\83\83\93\83Z\83\8b\82Å\82à\82±\82Á\82¿\82É\93ü\82Á\82Ä\82­\82é
+                                       if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
+                                               CopyFile(PChar(TThreadItem(List[i]).FilePath),
+                                                       PChar(FileSaveAs1.Dialog.FileName), true);
+                                       end;
+                               end;
+                       end;
+               end;
+       finally
+               List.Free;
+       end;
+
+end;
 
 procedure TGikoForm.SelectItemSaveForHTMLExecute(Sender: TObject);
 var
@@ -10357,16 +10388,20 @@ begin
                FileSaveAs1.Dialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91¶';
                FileSaveAs1.Dialog.Filter := 'HTML\83t\83@\83C\83\8b(*.html)|*.html';
                for i := 0 to List.Count - 1 do begin
-                       if TObject(List[i]) is TThreadItem then begin
+                       if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
                                FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).Title + '.html';
                                if FileSaveAs1.Execute then begin
-                                       html := TStringList.Create;
-                                       title := TThreadItem(List[i]).Title;
-                                       try
-                                               GikoSys.CreateHTML2(html, TThreadItem(List[i]), title);
-                                               html.SaveToFile(FileSaveAs1.Dialog.FileName);
-                                       finally
-                                               html.Free;
+                                       //\82È\82º\82©\83L\83\83\83\93\83Z\83\8b\82Å\82à\82±\82Á\82¿\82É\93ü\82Á\82Ä\82­\82é
+                                       if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
+                                               html := TStringList.Create;
+                                               title := TThreadItem(List[i]).Title;
+                                               try
+                                                       GikoSys.CreateHTML3(html, TThreadItem(List[i]), title);
+                                                       html.SaveToFile(FileSaveAs1.Dialog.FileName);
+                                                       SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
+                                               finally
+                                                       html.Free;
+                                               end;
                                        end;
                                end;
                        end;
@@ -10375,7 +10410,63 @@ begin
                List.Free;
        end;
 end;
+procedure TGikoForm.SkinorCSSFilesCopy(path: string);
+var
+       tmp, tmpD, tmpF: string;
+       current: string;
+       dirs: TStringList;
+       files: TStringList;
+       i, j: Integer;
+begin
+       if GikoSys.Setting.UseSkin then begin
+               current := ExtractFilePath(GikoSys.GetSkinDir);
+               tmp := GikoSys.Setting.CSSFileName;
+       end else if GikoSys.Setting.UseCSS then begin
+               current := ExtractFilePath(GikoSys.GetStyleSheetDir);
+               tmp := ExtractFilePath(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName);
+       end;
+       dirs := TStringList.Create;
+       try
+               dirs.Add(tmp);
+               if tmp <> current then begin
+                       GikoSys.GetDirectoryList(current, '*.*', dirs, true);
+                       for i := 0 to dirs.Count - 1 do begin
+                               files := TStringList.Create;
+                               try
+                                       gikoSys.GetFileList(dirs[i], '*.*', files, true);
+                                       tmpD := CustomStringReplace(dirs[i], GikoSys.GetConfigDir, path);
+                                       if (AnsiPos(dirs[i], tmp) <> 0) and not (DirectoryExists(tmpD)) then
+                                               ForceDirectories(tmpD);
+
+                                       if(dirs[i] = tmp) and (dirs[i] <> current) then begin
+                                               for j := 0 to files.Count - 1 do begin
+                                                       tmpF := CustomStringReplace(files[j], GikoSys.GetConfigDir, path);
+                                                       if not FileExists(tmpF) then begin
+                                                               CopyFile(PChar(files[j]), PChar(tmpF),True);
+                                                       end;
+                                               end;
+                                       end;
+                               finally
+                                       files.Free;
+                               end;
+                       end;
+               end else begin
+                       tmpD := CustomStringReplace(dirs[0], GikoSys.GetConfigDir, path);
+                       if not DirectoryExists(tmpD) then
+                               ForceDirectories(tmpD);
+                       tmpF := CustomStringReplace(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName
+                                       , GikoSys.GetConfigDir, path);
+                       if not FileExists(tmpF) then begin
+                               CopyFile(PChar(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName)
+                                       , PChar(tmpF), True);
+                       end;
+               end;
+       finally
+               dirs.Free;
+       end;
 
+
+end;
 procedure TGikoForm.KidokuActionExecute(Sender: TObject);
 var
        List: TList;
@@ -10391,7 +10482,7 @@ begin
                        end;
                end;
                if TreeView.Visible then
-                       TreeView.Refresh; 
+                       TreeView.Refresh;
        finally
                List.Free;
        end;