• R/O
  • SSH
  • HTTPS

scfiler: Commit


Commit MetaInfo

Revision71 (tree)
Time2009-03-04 19:10:03
Authoryuki_sc

Log Message

ビューの状態の一時保存機能を追加

Change Summary

Incremental Difference

--- SCFiler2/RecordFileViewSnapshots.cs (nonexistent)
+++ SCFiler2/RecordFileViewSnapshots.cs (revision 71)
@@ -0,0 +1,23 @@
1+using System;
2+using System.Collections.Generic;
3+using System.Text;
4+using SCFiler2.Operation;
5+using SCFiler2.ViewInterface;
6+
7+namespace SCFiler2 {
8+ public class RecordFileViewSnapshots : Action {
9+ public override string DisplayString {
10+ get { return "ビューの状態を一時保存"; }
11+ }
12+
13+ public override ActionType Type {
14+ get { return ActionType.View; }
15+ }
16+
17+ public override void Execute() {
18+ ViewInterfaces.LeftFileView.RecordSnapshot();
19+ ViewInterfaces.RightFileView.RecordSnapshot();
20+ SCFiler2System.ShowHistoryMessage("現在のビューの状態を一時保存しました");
21+ }
22+ }
23+}
--- SCFiler2/FileView.cs (revision 70)
+++ SCFiler2/FileView.cs (revision 71)
@@ -320,7 +320,7 @@
320320 }
321321
322322 /// <summary>
323- /// ListViewの指定アイテムにフォーカスを当てる
323+ /// ListViewの指定アイテムにフォーカスを当てる。既存の選択アイテムは解除される
324324 /// </summary>
325325 /// <param name="itemFullName">フォーカスを当てたいアイテムのFullName</param>
326326 private void SetFocusAndSelected(string itemFullName) {
@@ -828,18 +828,6 @@
828828 }
829829
830830
831- //public void ChangeViewController(ListViewController.ControllerType type) {
832- // currentListViewController.Terminate();
833- // switch (type) {
834- // case ListViewController.ControllerType.Normal:
835- // currentListViewController = new NormalListViewController(this, this.virtualListView);
836- // break;
837- // case ListViewController.ControllerType.EasySelect:
838- // currentListViewController = new EasySelectListViewController(this, this.virtualListView);
839- // break;
840- // }
841- // currentListViewController.Initialize();
842- //}
843831 #endregion ListViewControl関係
844832
845833
@@ -951,5 +939,56 @@
951939 new public void Focus() {
952940 base.Focus();
953941 }
942+
943+ private FileViewSnapshot snapshot = null;
944+
945+ /// <summary>
946+ /// 現在のビューの状態を保存
947+ /// ・パス
948+ /// ・フォーカスと選択の状態
949+ /// ・ビューにフォーカスがあるかどうか
950+ /// </summary>
951+ public void RecordSnapshot() {
952+ snapshot = new FileViewSnapshot();
953+ snapshot.CurrentPath = this.CurrentPath;
954+ foreach (FilerItem item in this.SelectedFilerItems) {
955+ snapshot.SelectedItems.Add(item.FullName);
956+ }
957+ snapshot.FocusedItem = this.virtualListView.FocusedItem.FilerItem.FullName;
958+ snapshot.HaveFocus = this.listView.Focused;
959+ }
960+
961+ /// <summary>
962+ /// 保存したビューの状態に戻す
963+ /// </summary>
964+ public void RestoreSnapshot() {
965+ this.currentPath = snapshot.CurrentPath;
966+ this.UpdateView();
967+
968+ foreach (VirtualListViewItem item in this.virtualListView.Items) {
969+ if (item.FilerItem.FullName == snapshot.FocusedItem) {
970+ item.Focused = true;
971+ break;
972+ }
973+ }
974+
975+ foreach (string itemName in snapshot.SelectedItems) {
976+ bool itemFound = false;
977+ foreach (VirtualListViewItem item in this.virtualListView.Items) {
978+ if (item.FilerItem.FullName == itemName) {
979+ item.Selected = true;
980+ itemFound = true;
981+ break;
982+ }
983+ }
984+ if (!itemFound) {
985+ SCFiler2System.ShowHistoryMessage("アイテムの状態を復元しようとしましたが、"+itemName+"は見つかりませんでした");
986+ }
987+ }
988+
989+ if (snapshot.HaveFocus) {
990+ this.Focus();
991+ }
992+ }
954993 }
955994 }
--- SCFiler2/FileViewSnapshot.cs (nonexistent)
+++ SCFiler2/FileViewSnapshot.cs (revision 71)
@@ -0,0 +1,12 @@
1+using System;
2+using System.Collections.Generic;
3+using System.Text;
4+
5+namespace SCFiler2 {
6+ class FileViewSnapshot {
7+ public bool HaveFocus;
8+ public string CurrentPath;
9+ public List<string> SelectedItems = new List<string>();
10+ public string FocusedItem;
11+ }
12+}
--- SCFiler2/MainForm.cs (revision 70)
+++ SCFiler2/MainForm.cs (revision 71)
@@ -619,5 +619,15 @@
619619 }
620620 }
621621 }
622+
623+ private void 現在の表示状態を一時保存TToolStripMenuItem_Click(object sender, EventArgs e) {
624+ ActionManager.CreateAction(ActionManager.ActionID.RecordFileViewSnapshots).Execute();
625+ }
626+
627+ private void 一時保存した状態を復元RToolStripMenuItem_Click(object sender, EventArgs e) {
628+ ActionManager.CreateAction(ActionManager.ActionID.RestoreFileViewSnapshots).Execute();
629+ }
630+
631+
622632 }
623633 }
\ No newline at end of file
--- SCFiler2/About.Designer.cs (revision 70)
+++ SCFiler2/About.Designer.cs (revision 71)
@@ -35,7 +35,7 @@
3535 this.appName.Name = "appName";
3636 this.appName.Size = new System.Drawing.Size(147, 12);
3737 this.appName.TabIndex = 0;
38- this.appName.Text = "SCFiler2 Alpha version 0.33";
38+ this.appName.Text = "SCFiler2 Alpha version 0.34";
3939 //
4040 // okButton
4141 //
--- SCFiler2/ActionManager.cs (revision 70)
+++ SCFiler2/ActionManager.cs (revision 71)
@@ -40,6 +40,8 @@
4040 setFocusToLeftFileView,
4141 setFocusToRightFileView,
4242 GoToSameFolderAsAnotherView,
43+ RecordFileViewSnapshots,
44+ RestoreFileViewSnapshots,
4345 IncrementalSearch,
4446 MigemoSearch,
4547 EasySelect,
@@ -135,6 +137,10 @@
135137 return new setFocusToRightFileView();
136138 case ActionID.GoToSameFolderAsAnotherView:
137139 return new GoToSameFolderAsAnotherView();
140+ case ActionID.RecordFileViewSnapshots:
141+ return new RecordFileViewSnapshots();
142+ case ActionID.RestoreFileViewSnapshots:
143+ return new RestoreFileViewSnapshots();
138144 case ActionID.IncrementalSearch:
139145 return new IncrementalSearch();
140146 case ActionID.MigemoSearch:
--- SCFiler2/RestoreFileViewSnapshots.cs (nonexistent)
+++ SCFiler2/RestoreFileViewSnapshots.cs (revision 71)
@@ -0,0 +1,23 @@
1+using System;
2+using System.Collections.Generic;
3+using System.Text;
4+using SCFiler2.Operation;
5+using SCFiler2.ViewInterface;
6+
7+namespace SCFiler2 {
8+ public class RestoreFileViewSnapshots : Action {
9+ public override string DisplayString {
10+ get { return "一時保存したビューの状態に戻す"; }
11+ }
12+
13+ public override ActionType Type {
14+ get { return ActionType.View; }
15+ }
16+
17+ public override void Execute() {
18+ ViewInterfaces.LeftFileView.RestoreSnapshot();
19+ ViewInterfaces.RightFileView.RestoreSnapshot();
20+ SCFiler2System.ShowHistoryMessage("ビューの状態を一時保存したときの状態に戻しました");
21+ }
22+ }
23+}
--- SCFiler2/bin/Release/ReleaseNote.txt (revision 70)
+++ SCFiler2/bin/Release/ReleaseNote.txt (revision 71)
@@ -1,7 +1,13 @@
11 更新履歴
22
3+■0.34
4+・「ビューの表示状態を保存」「一時保存したビューの状態に戻す」コマンドを追加。メニューにも追加。
5+ 2つのビューのパスやアイテムの選択状態などをいったん保存して、ほかのパスに移動したりしたあとでも
6+ 保存したときの状態に戻ることができる
7+
38 ■0.33
49 ・「ドライブ一覧に移動」コマンドを追加
10+ ドライブルートでさらにフォルダを一つ上に上がるコマンドを入力してもドライブ一覧を表示
511 ・「ドライブツールバーを表示しない」「履歴ビューを表示しない」のオプションを追加
612 ・「名前の変更」ダイアログの初期状態は、拡張子をのぞいて選択しておくようにした
713  また各ドライブのルートで一つ上のフォルダに移動コマンドを使用してもドライブ一覧を表示
--- SCFiler2/MainForm.Designer.cs (revision 70)
+++ SCFiler2/MainForm.Designer.cs (revision 71)
@@ -83,6 +83,9 @@
8383 this.fileHistory2 = new SCFiler2.HistoryView();
8484 this.driveToolbar = new System.Windows.Forms.ToolStrip();
8585 this.notifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
86+ this.現在の表示状態を一時保存TToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
87+ this.一時保存した状態を復元RToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
88+ this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripSeparator();
8689 this.menuStrip.SuspendLayout();
8790 this.statusStrip.SuspendLayout();
8891 this.Level1_SplitContainer.Panel1.SuspendLayout();
@@ -275,7 +278,10 @@
275278 this.ジャンプフォルダを開くJToolStripMenuItem,
276279 this.toolStripMenuItem4,
277280 this.反対のビューと同じパスにSToolStripMenuItem,
278- this.特殊フォルダへ移動MToolStripMenuItem});
281+ this.特殊フォルダへ移動MToolStripMenuItem,
282+ this.toolStripMenuItem7,
283+ this.現在の表示状態を一時保存TToolStripMenuItem,
284+ this.一時保存した状態を復元RToolStripMenuItem});
279285 this.フォルダDToolStripMenuItem.Name = "フォルダDToolStripMenuItem";
280286 this.フォルダDToolStripMenuItem.Size = new System.Drawing.Size(68, 20);
281287 this.フォルダDToolStripMenuItem.Text = "フォルダ(&D)";
@@ -283,7 +289,7 @@
283289 // 新規作成NToolStripMenuItem
284290 //
285291 this.新規作成NToolStripMenuItem.Name = "新規作成NToolStripMenuItem";
286- this.新規作成NToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
292+ this.新規作成NToolStripMenuItem.Size = new System.Drawing.Size(224, 22);
287293 this.新規作成NToolStripMenuItem.Text = "新規作成(&N)";
288294 this.新規作成NToolStripMenuItem.Click += new System.EventHandler(this.新規作成NToolStripMenuItem_Click);
289295 //
@@ -290,7 +296,7 @@
290296 // エクスプローラで開くOToolStripMenuItem
291297 //
292298 this.エクスプローラで開くOToolStripMenuItem.Name = "エクスプローラで開くOToolStripMenuItem";
293- this.エクスプローラで開くOToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
299+ this.エクスプローラで開くOToolStripMenuItem.Size = new System.Drawing.Size(224, 22);
294300 this.エクスプローラで開くOToolStripMenuItem.Text = "エクスプローラで開く(&O)";
295301 this.エクスプローラで開くOToolStripMenuItem.Click += new System.EventHandler(this.エクスプローラで開くOToolStripMenuItem_Click);
296302 //
@@ -297,12 +303,12 @@
297303 // toolStripMenuItem5
298304 //
299305 this.toolStripMenuItem5.Name = "toolStripMenuItem5";
300- this.toolStripMenuItem5.Size = new System.Drawing.Size(199, 6);
306+ this.toolStripMenuItem5.Size = new System.Drawing.Size(221, 6);
301307 //
302308 // ジャンプフォルダに追加AToolStripMenuItem
303309 //
304310 this.ジャンプフォルダに追加AToolStripMenuItem.Name = "ジャンプフォルダに追加AToolStripMenuItem";
305- this.ジャンプフォルダに追加AToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
311+ this.ジャンプフォルダに追加AToolStripMenuItem.Size = new System.Drawing.Size(224, 22);
306312 this.ジャンプフォルダに追加AToolStripMenuItem.Text = "ジャンプフォルダに追加(&A)";
307313 this.ジャンプフォルダに追加AToolStripMenuItem.Click += new System.EventHandler(this.ジャンプフォルダに追加AToolStripMenuItem_Click);
308314 //
@@ -309,7 +315,7 @@
309315 // ジャンプフォルダを開くJToolStripMenuItem
310316 //
311317 this.ジャンプフォルダを開くJToolStripMenuItem.Name = "ジャンプフォルダを開くJToolStripMenuItem";
312- this.ジャンプフォルダを開くJToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
318+ this.ジャンプフォルダを開くJToolStripMenuItem.Size = new System.Drawing.Size(224, 22);
313319 this.ジャンプフォルダを開くJToolStripMenuItem.Text = "ジャンプフォルダを開く(&J)";
314320 this.ジャンプフォルダを開くJToolStripMenuItem.Click += new System.EventHandler(this.ジャンプフォルダを開くJToolStripMenuItem_Click);
315321 //
@@ -316,12 +322,12 @@
316322 // toolStripMenuItem4
317323 //
318324 this.toolStripMenuItem4.Name = "toolStripMenuItem4";
319- this.toolStripMenuItem4.Size = new System.Drawing.Size(199, 6);
325+ this.toolStripMenuItem4.Size = new System.Drawing.Size(221, 6);
320326 //
321327 // 反対のビューと同じパスにSToolStripMenuItem
322328 //
323329 this.反対のビューと同じパスにSToolStripMenuItem.Name = "反対のビューと同じパスにSToolStripMenuItem";
324- this.反対のビューと同じパスにSToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
330+ this.反対のビューと同じパスにSToolStripMenuItem.Size = new System.Drawing.Size(224, 22);
325331 this.反対のビューと同じパスにSToolStripMenuItem.Text = "反対のビューと同じパスに(&S)";
326332 this.反対のビューと同じパスにSToolStripMenuItem.Click += new System.EventHandler(this.反対のビューと同じパスにSToolStripMenuItem_Click);
327333 //
@@ -335,7 +341,7 @@
335341 this.デスクトップDToolStripMenuItem,
336342 this.インターネットキャッシュIToolStripMenuItem});
337343 this.特殊フォルダへ移動MToolStripMenuItem.Name = "特殊フォルダへ移動MToolStripMenuItem";
338- this.特殊フォルダへ移動MToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
344+ this.特殊フォルダへ移動MToolStripMenuItem.Size = new System.Drawing.Size(224, 22);
339345 this.特殊フォルダへ移動MToolStripMenuItem.Text = "特殊フォルダへ移動(&M)";
340346 //
341347 // myDocumentMToolStripMenuItem
@@ -428,7 +434,7 @@
428434 // statusbarArea1
429435 //
430436 this.statusbarArea1.Name = "statusbarArea1";
431- this.statusbarArea1.Size = new System.Drawing.Size(354, 18);
437+ this.statusbarArea1.Size = new System.Drawing.Size(385, 18);
432438 this.statusbarArea1.Spring = true;
433439 this.statusbarArea1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
434440 //
@@ -627,6 +633,25 @@
627633 this.notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon_MouseClick);
628634 this.notifyIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);
629635 //
636+ // 現在の表示状態を一時保存TToolStripMenuItem
637+ //
638+ this.現在の表示状態を一時保存TToolStripMenuItem.Name = "現在の表示状態を一時保存TToolStripMenuItem";
639+ this.現在の表示状態を一時保存TToolStripMenuItem.Size = new System.Drawing.Size(224, 22);
640+ this.現在の表示状態を一時保存TToolStripMenuItem.Text = "現在の表示状態を一時保存(&T)";
641+ this.現在の表示状態を一時保存TToolStripMenuItem.Click += new System.EventHandler(this.現在の表示状態を一時保存TToolStripMenuItem_Click);
642+ //
643+ // 一時保存した状態を復元RToolStripMenuItem
644+ //
645+ this.一時保存した状態を復元RToolStripMenuItem.Name = "一時保存した状態を復元RToolStripMenuItem";
646+ this.一時保存した状態を復元RToolStripMenuItem.Size = new System.Drawing.Size(233, 22);
647+ this.一時保存した状態を復元RToolStripMenuItem.Text = "一時保存した表示状態を復元(&R)";
648+ this.一時保存した状態を復元RToolStripMenuItem.Click += new System.EventHandler(this.一時保存した状態を復元RToolStripMenuItem_Click);
649+ //
650+ // toolStripMenuItem7
651+ //
652+ this.toolStripMenuItem7.Name = "toolStripMenuItem7";
653+ this.toolStripMenuItem7.Size = new System.Drawing.Size(221, 6);
654+ //
630655 // MainForm
631656 //
632657 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -738,6 +763,9 @@
738763 private System.Windows.Forms.ToolStripMenuItem スタートアップUToolStripMenuItem;
739764 private System.Windows.Forms.ToolStripMenuItem programFilesPToolStripMenuItem;
740765 private System.Windows.Forms.ToolStripStatusLabel statusbarJobInfo;
766+ private System.Windows.Forms.ToolStripSeparator toolStripMenuItem7;
767+ private System.Windows.Forms.ToolStripMenuItem 現在の表示状態を一時保存TToolStripMenuItem;
768+ private System.Windows.Forms.ToolStripMenuItem 一時保存した状態を復元RToolStripMenuItem;
741769 }
742770 }
743771
--- SCFiler2/IFileView.cs (revision 70)
+++ SCFiler2/IFileView.cs (revision 71)
@@ -41,5 +41,13 @@
4141 void ChangePath(string path, string defaultFocusFile);
4242 void ChangePathHistoryBackward();
4343 void ChangePathHistoryForward();
44+ /// <summary>
45+ /// 現在のビューの状態を保存する
46+ /// </summary>
47+ void RecordSnapshot();
48+ /// <summary>
49+ /// 保存した時のビューの状態に戻す
50+ /// </summary>
51+ void RestoreSnapshot();
4452 }
4553 }
Show on old repository browser