OSDN Git Service

タブの順番の保存・復元をActionとして登録しなおし&メモリリークの解消
authorh677 <h677>
Mon, 12 Jul 2004 13:29:39 +0000 (13:29 +0000)
committerh677 <h677>
Mon, 12 Jul 2004 13:29:39 +0000 (13:29 +0000)
Giko.dfm
Giko.pas
gikoNavi.dpr

index 6fa9dd4..30fefe6 100644 (file)
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -1,6 +1,6 @@
 object GikoForm: TGikoForm
-  Left = 401
-  Top = 192
+  Left = 326
+  Top = 163
   HorzScrollBar.Visible = False
   VertScrollBar.Visible = False
   AutoScroll = False
@@ -484,7 +484,6 @@ object GikoForm: TGikoForm
                 Top = 0
                 Caption = #12525#12540#12459#12523#12523#12540#12523#34920#31034
                 ImageIndex = 12
-                OnClick = LocalRuleViewClick
               end
               object ToolButton14: TToolButton
                 Left = 412
@@ -8882,23 +8881,22 @@ object GikoForm: TGikoForm
       object N15: TMenuItem
         Caption = '-'
       end
-      object TabSave: TMenuItem
-        Caption = #12479#12502#12398#38918#30058#12434#20445#23384
-        OnClick = TabSaveClick
-      end
-      object TabOpen: TMenuItem
-        Caption = #12479#12502#12398#38918#30058#12434#24489#20803
-        OnClick = TabOpenClick
-      end
       object Tab: TMenuItem
         Caption = #12479#12502
+        object TabSave: TMenuItem
+          Action = TabsSaveAction
+        end
+        object TabOpen: TMenuItem
+          Action = TabsOpenAction
+        end
+        object N22: TMenuItem
+          Caption = '-'
+        end
         object FileTabSave: TMenuItem
-          Caption = #12501#12449#12452#12523#21517#12434#25351#23450#12375#12390#12479#12502#12398#38918#30058#12434#20445#23384
-          OnClick = FileTabSaveClick
+          Action = TabsSaveToFileAction
         end
         object FileTabOpen: TMenuItem
-          Caption = #12501#12449#12452#12523#21517#12434#25351#23450#12375#12390#12479#12502#12398#38918#30058#12434#24489#20803
-          OnClick = FileTabOpenClick
+          Action = TabsOpenFromFileAction
         end
       end
       object N66: TMenuItem
@@ -10394,6 +10392,30 @@ object GikoForm: TGikoForm
       OnExecute = LogFolderOpenActionExecute
       OnUpdate = LogFolderOpenActionUpdate
     end
+    object TabsSaveAction: TAction
+      Category = #12501#12449#12452#12523
+      Caption = #12479#12502#12398#38918#30058#12434#20445#23384
+      Hint = #12479#12502#12398#38918#30058#12434#20445#23384
+      OnExecute = TabsSaveActionExecute
+    end
+    object TabsOpenAction: TAction
+      Category = #12501#12449#12452#12523
+      Caption = #12479#12502#12398#38918#30058#12434#24489#20803
+      Hint = #12479#12502#12398#38918#30058#12434#24489#20803
+      OnExecute = TabsOpenActionExecute
+    end
+    object TabsSaveToFileAction: TAction
+      Category = #12501#12449#12452#12523
+      Caption = #12501#12449#12452#21517#12434#25351#23450#12375#12390#12479#12502#12398#38918#30058#12434#20445#23384
+      Hint = #12501#12449#12452#12523#21517#12434#25351#23450#12375#12390#12479#12502#12398#38918#30058#12434#20445#23384
+      OnExecute = TabsSaveToFileActionExecute
+    end
+    object TabsOpenFromFileAction: TAction
+      Category = #12501#12449#12452#12523
+      Caption = #12501#12449#12452#21517#12434#25351#23450#12375#12390#12479#12502#12398#38918#30058#12434#24489#20803
+      Hint = #12501#12449#12452#12523#21517#12434#25351#23450#12375#12390#12479#12502#12398#38918#30058#12434#24489#20803
+      OnExecute = TabsOpenFromFileActionExecute
+    end
   end
   object BrowserPopupMenu: TPopupMenu
     Left = 68
@@ -10839,21 +10861,6 @@ object GikoForm: TGikoForm
     Left = 99
     Top = 468
   end
-  object IdHTTP1: TIdHTTP
-    MaxLineAction = maException
-    AllowCookies = True
-    ProxyParams.BasicAuthentication = False
-    ProxyParams.ProxyPort = 0
-    Request.ContentLength = -1
-    Request.ContentRangeEnd = 0
-    Request.ContentRangeStart = 0
-    Request.Accept = 'text/html, */*'
-    Request.BasicAuthentication = False
-    Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)'
-    HTTPOptions = [hoForceEncodeParams]
-    Left = 8
-    Top = 408
-  end
   object TabSaveDialog: TSaveDialog
     DefaultExt = '.sav'
     Filter = 'Tab'#12501#12449#12452#12523#12288'(*.sav)|*.sav'
index 136287c..ea67be3 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -551,7 +551,6 @@ type
     OpenLogFolder: TMenuItem;
     Browser: TWebBrowser;
     LocalRuleView: TToolButton;
-    IdHTTP1: TIdHTTP;
     TabSave: TMenuItem;
     TabOpen: TMenuItem;
     TabSaveDialog: TSaveDialog;
@@ -559,6 +558,11 @@ type
     Tab: TMenuItem;
     FileTabSave: TMenuItem;
     FileTabOpen: TMenuItem;
+    TabsSaveAction: TAction;
+    TabsOpenAction: TAction;
+    N22: TMenuItem;
+    TabsSaveToFileAction: TAction;
+    TabsOpenFromFileAction: TAction;
                                procedure FormCreate(Sender: TObject);
                procedure FormDestroy(Sender: TObject);
                procedure CabinetPanelHide(Sender: TObject);
@@ -895,11 +899,10 @@ type
       NewHeight: Integer; var Resize: Boolean);
     procedure LogFolderOpenActionExecute(Sender: TObject);
     procedure LogFolderOpenActionUpdate(Sender: TObject);
-    procedure LocalRuleViewClick(Sender: TObject);
-    procedure TabSaveClick(Sender: TObject);
-    procedure TabOpenClick(Sender: TObject);
-    procedure FileTabSaveClick(Sender: TObject);
-    procedure FileTabOpenClick(Sender: TObject);
+    procedure TabsSaveActionExecute(Sender: TObject);
+    procedure TabsOpenActionExecute(Sender: TObject);
+    procedure TabsSaveToFileActionExecute(Sender: TObject);
+    procedure TabsOpenFromFileActionExecute(Sender: TObject);
        private
                { Private \90é\8c¾ }
         //RoundList : TRoundList;
@@ -1048,8 +1051,8 @@ type
                procedure SetBBSMenu;
                function WebBrowserClick(Sender: TObject): WordBool;
                procedure SkinorCSSFilesCopy(path: string);
-                //\83^\83u\95Û\91
-                function GetTabURLs : TStringList;
+               //\83^\83u\95Û\91
+               procedure GetTabURLs(AStringList: TStringList);
                // \83o\83\93\83h\95\9d\82ð\8dÄ\8cv\8eZ\81E\8dÄ\90Ý\92è\82·\82é
                procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
        protected
@@ -10676,120 +10679,117 @@ begin
                LogFolderOpenAction.Enabled := False;
 end;
 
-procedure TGikoForm.LocalRuleViewClick(Sender: TObject);
-var
-        RefURL,
-        RefeURL,
-        RuleURL,
-        RuleTxt:String;
-        FBoard: TBoard;
-        Indy: TIdHTTP;
-        FileStream: TFileStream;
-begin
-        //\83\8d\81[\83J\83\8b\83\8b\81[\83\8b\8eæ\93¾ by \92è\8aú\95Ö
-       RefURL := GikoSys.UrlToServer(FBoard.URL)
-               + GikoSys.UrlToID(FBoard.URL)
-               + '/';
-        //\8e\8e\82µ\82É\83\8d\81[\83J\83\8b\83\8b\81[\83\8b\8eæ\93¾\82à
-        RuleURL := RefURL
-                + 'head.txt';
-        //\8eæ\93¾\81`
-       RuleTxt := Indy.Get(RuleURL);
-        //FileStream.Create('head.txt', fmCreate) := Indy.Get(RuleURL, FileStream);
-        //\8e\8e\8c±\95\\8e¦\81`
-        if RuleTxt = '' then begin
-                ShowMessage('\83\8d\81[\83J\83\8b\83\8b\81[\83\8b\8eæ\93¾\8e¸\94s');
-        end;
-        ShowMessage(RuleTxt);
-
-end;
-
-procedure TGikoForm.TabSaveClick(Sender: TObject);
-var
-        SaveStringList: TStringList;
-        TabIdx: Integer;
-begin
-        SaveStringList := TStringList.Create;
-        SaveStringList := GetTabURLs;
-        SaveStringList.SaveToFile(ExtractFilePath(Application.ExeName) + 'tab.sav');
-end;
-
-function TGikoForm.GetTabURLs : TStringList;
+procedure TGikoForm.GetTabURLs(AStringList: TStringList);
 var
   rec : TBrowserRecord;
-  URLs : TStringList;
   i, bound : Integer;
 begin
-  URLs := TStringList.Create();
   bound := BrowserTab.Tabs.Count -1;
   for i := 0 to bound do begin
-    rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] );
-    URLs.Add( rec.Thread.URL );
+       rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] );
+       if( rec <> nil) and (rec.Thread <> nil) then
+               AStringList.Add( rec.Thread.URL );
   end;
-  Result := URLs;
 end;
 
-procedure TGikoForm.TabOpenClick(Sender: TObject);
+procedure TGikoForm.TabsSaveActionExecute(Sender: TObject);
 var
-    i, bound    : Integer;
-    item        : TThreadItem;
-    URLs : TStringList;
-    GikoTab: TGikoTabAppend;
+       SaveStringList: TStringList;
 begin
-    URLs := TStringList.Create();
-    try
-        URLs.LoadFromFile(ExtractFilePath(Application.ExeName) + 'tab.sav');
-    except
-        on EFOpenError do
-                ShowMessage('\83^\83u\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ');
-    end;
-    bound    := URLs.Count - 1;
-    GikoTab := GikoSys.Setting.BrowserTabAppend;
-    GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
-    for i := 0 to bound do begin
-        item := BBSsFindThreadFromURL( URLs[ i ] );
-        if item <> nil then
-            InsertBrowserTab( item, false );
-    end;
-    GikoSys.Setting.BrowserTabAppend := GikoTab;
+       SaveStringList := TStringList.Create;
+       try
+               GetTabURLs(SaveStringList);
+               SaveStringList.SaveToFile(ExtractFilePath(Application.ExeName) + 'tab.sav');
+       finally
+               SaveStringList.Free
+       end;
 end;
 
-procedure TGikoForm.FileTabSaveClick(Sender: TObject);
+procedure TGikoForm.TabsOpenActionExecute(Sender: TObject);
 var
-        SaveTabList : TStringList;
+       i, bound    : Integer;
+       item        : TThreadItem;
+       URLs : TStringList;
+       GikoTab: TGikoTabAppend;
+       fileName: string;
 begin
-        SaveTabList := TStringList.Create;
-        SaveTabList := GetTabURLs;
-        if TabSaveDialog.Execute then begin
-                SaveTabList.SaveToFile(TabSaveDialog.FileName);
-        end;
+       fileName := ExtractFilePath(Application.ExeName) + 'tab.sav';
+       URLs := TStringList.Create();
+       try
+               try
+                       if FileExists(fileName) then
+                               URLs.LoadFromFile(fileName);
+               except
+                       on EFOpenError do
+                                       ShowMessage('\83^\83u\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ');
+               end;
+               bound    := URLs.Count - 1;
+               GikoTab := GikoSys.Setting.BrowserTabAppend;
+               GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
+               for i := 0 to URLs.Count - 1 do begin
+                       item := BBSsFindThreadFromURL( URLs[ i ] );
+                       if item <> nil then
+                               InsertBrowserTab( item, false );
+               end;
+       finally
+               GikoSys.Setting.BrowserTabAppend := GikoTab;
+               URLs.Free;
+       end;
+end;
+{
+ procedure TGikoForm.FileTabSaveClick(Sender: TObject);
+var
+       SaveStringList: TStringList;
+begin
+                SaveTabList := TStringList.Create;
+                SaveTabList := GetTabURLs;
+                if TabSaveDialog.Execute then begin
+                                SaveTabList.SaveToFile(TabSaveDialog.FileName);
+                end;
+end;
+}
+procedure TGikoForm.TabsSaveToFileActionExecute(Sender: TObject);
+var
+       SaveTabList: TStringList;
+begin
+       SaveTabList := TStringList.Create;
+       try
+               GetTabURLs(SaveTabList);
+               if TabSaveDialog.Execute then begin
+                       SaveTabList.SaveToFile(TabSaveDialog.FileName);
+               end;
+       finally
+               SaveTabList.Free;
+       end;
 end;
 
-procedure TGikoForm.FileTabOpenClick(Sender: TObject);
+procedure TGikoForm.TabsOpenFromFileActionExecute(Sender: TObject);
 var
-    i, bound, Tab    : Integer;
-    item        : TThreadItem;
-    URLs : TStringList;
-    GikoTab: TGikoTabAppend;
+       i, Tab    : Integer;
+       item        : TThreadItem;
+       URLs : TStringList;
+       GikoTab: TGikoTabAppend;
 begin
-    URLs := TStringList.Create();
-    try
-        if TabOpenDialog.Execute then begin
-                URLs.LoadFromFile(TabOpenDialog.FileName);
-        end;
-    except
-        on EFOpenError do
-                ShowMessage('\83^\83u\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ');
-    end;
-    bound    := URLs.Count - 1;
-    GikoTab := GikoSys.Setting.BrowserTabAppend;
-    GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
-    for i := 0 to bound do begin
-        item := BBSsFindThreadFromURL( URLs[ i ] );
-        if item <> nil then
-            InsertBrowserTab( item, false );
-    end;
-    GikoSys.Setting.BrowserTabAppend := GikoTab;
+       URLs := TStringList.Create();
+       try
+               try
+                       if TabOpenDialog.Execute then begin
+                               URLs.LoadFromFile(TabOpenDialog.FileName);
+                       end;
+               except
+                       on EFOpenError do ShowMessage('\83^\83u\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ');
+               end;
+               GikoTab := GikoSys.Setting.BrowserTabAppend;
+               GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
+               for i := 0 to URLs.Count - 1 do begin
+                       item := BBSsFindThreadFromURL( URLs[ i ] );
+                       if item <> nil then
+                               InsertBrowserTab( item, false );
+               end;
+       finally
+               GikoSys.Setting.BrowserTabAppend := GikoTab;
+               URLs.Free;
+       end;
 end;
 
 initialization
index 4701cc0..68aef19 100644 (file)
@@ -3,6 +3,7 @@ program gikoNavi;
 {%ToDo 'gikoNavi.todo'}
 
 uses
+  //MemCheck in 'MemCheck.pas', {Memoryleak}
   Windows,
   SysUtils,
   Forms,