• R/O
  • SSH
  • HTTPS

scfiler: Commit


Commit MetaInfo

Revision83 (tree)
Time2009-04-25 02:29:48
Authoryuki_sc

Log Message

・プラグインにキー割り当てを可能にした
・SCFiler2固有の関連付け実行が、プラグインからの呼び出しでは正しく実行しなかったのを修正

Change Summary

Incremental Difference

--- SCFiler2/ExternalTool.cs (revision 82)
+++ SCFiler2/ExternalTool.cs (revision 83)
@@ -5,6 +5,7 @@
55 using SCFiler2.FileSystem;
66 using SCFiler2.ViewInterface;
77 using SCFiler2.ItemInterface;
8+using SCFiler2.PluginInterface;
89
910 namespace SCFiler2 {
1011 /// <summary>
@@ -67,53 +68,43 @@
6768 }
6869
6970 /// <summary>
70- /// 外部ツールの実行
71+ /// ビューで選択中のアイテムを外部ツールで実行
7172 /// </summary>
7273 public void Execute() {
73- MainForm mainForm = MainForm.Instance;
74+ IFilerItem targetItem = null;
75+ //ビューの選択ファイルファイルを取得して実行
76+ if (this.toolArgumentStr.IndexOf(@"%%%SELECTED_FILE%%%") >= 0) {
77+ if (ViewInterfaces.LastFocusedFileView.SelectedFilerItems.Count == 0) {
78+ SCFiler2System.ShowTempMessage("ファイルが選択されていません");
79+ return;
80+ }
81+ targetItem = ViewInterfaces.LastFocusedFileView.SelectedFilerItems[0];
82+ }
83+ this.Execute(targetItem);
84+ }
7485
86+ /// <summary>
87+ /// 外部ツールで実行
88+ /// </summary>
89+ /// <param name="target"></param>
90+ public void Execute(IFilerItem target) {
7591 //登録された実行ファイルが実行時になかったらエラーを返して終了
7692 if (!System.IO.File.Exists(this.toolPathStr)) {
77- SCFiler2System.ShowHistoryMessage("[error]外部ツール『"+toolTitle+"』が登録されたパスに見つかりません");
93+ SCFiler2System.ShowHistoryMessage("[error]外部ツール『" + toolTitle + "』が登録されたパスに見つかりません");
7894 return;
7995 }
80-
8196 ProcessStartInfo startInfo = new ProcessStartInfo();
97+ StringBuilder builder = new StringBuilder(this.toolArgumentStr);
8298
83- IFilerItem targetItem = null;
84- startInfo.WorkingDirectory = mainForm.GetLastFocusedFileView().CurrentPath;
85- //ビューの選択ファイルファイルを取得して実行
86- if (ViewInterfaces.CurrentItemView.Type == ViewType.FileView) {
87- if (this.toolArgumentStr.IndexOf(@"%%%SELECTED_FILE%%%") >= 0) {
88- if (ViewInterfaces.LastFocusedFileView.SelectedFilerItems.Count == 0) {
89- SCFiler2System.ShowTempMessage("ファイルが選択されていません");
90- return;
91- }
92- targetItem = ViewInterfaces.LastFocusedFileView.SelectedFilerItems[0];
93- }
94-
95- } else if (ViewInterfaces.CurrentItemView.Type == ViewType.HistoryView) {
96-
97- if (this.toolArgumentStr.IndexOf(@"%%%SELECTED_FILE%%%") >= 0) {
98- if (ViewInterfaces.CurrentItemView.SelectedFilerItems.Count == 0) {
99- SCFiler2System.ShowTempMessage("ファイルが選択されていません");
100- return;
101- }
102- targetItem = mainForm.GetLastFocusedHistoryView().SelectedFilerItems[0];
103- startInfo.WorkingDirectory = targetItem.Path;
104- }
99+ if (target != null) {
100+ startInfo.WorkingDirectory = target.Path;
101+ builder.Replace(@"%%%SELECTED_FILE%%%", "\"" + target.FullName + "\"");//とりあえず1個だけ対応
102+ builder.Replace(@"%%%CURRENT_PATH%%%", "\"" + target.Path + "\"");
105103 } else {
106- SCFiler2System.ShowTempMessage(Messages.COMMAND_IS_NOT_VALID_IN_THIS_VIEW);
107- return;
104+ startInfo.WorkingDirectory = ViewInterfaces.LastFocusedFileView.CurrentPath;
105+ builder.Replace(@"%%%SELECTED_FILE%%%", "");
106+ builder.Replace(@"%%%CURRENT_PATH%%%", "\"" + ViewInterfaces.LastFocusedFileView.CurrentPath + "\"");
108107 }
109-
110- StringBuilder builder = new StringBuilder(this.toolArgumentStr);
111- if (startInfo != null) {
112- builder.Replace(@"%%%CURRENT_PATH%%%", "\"" + startInfo.WorkingDirectory + "\"");
113- }
114- if (targetItem != null) {
115- builder.Replace(@"%%%SELECTED_FILE%%%", "\"" + targetItem.FullName + "\"");//とりあえず1個だけ対応
116- }
117108 startInfo.Arguments = builder.ToString();
118109
119110 startInfo.FileName = toolPathStr;
@@ -120,12 +111,11 @@
120111 Process.Start(startInfo);
121112
122113 //実行されたアイテムは履歴ビューの最新にする
123- if (targetItem != null) {
114+ if (target != null) {
124115 foreach (HistoryManager manager in MainForm.Instance.AllHistoryManager) {
125- manager.NotifyItemExecuted(targetItem);
116+ manager.NotifyItemExecuted(target);
126117 }
127118 }
128119 }
129-
130120 }
131121 }
--- SCFiler2/ExtensionRelationCustomize.cs (revision 82)
+++ SCFiler2/ExtensionRelationCustomize.cs (revision 83)
@@ -80,10 +80,11 @@
8080 foreach (Item item in Items) {
8181 //正規表現に合致したら外部ツールで起動する
8282 if (item.expression.IsMatch(target.FullName)) {
83- ActionManager.CreateAction(externalToolActions[item.num]).Execute();
83+ ExternalToolManager.Instance.GetItem(item.num + 1).Execute(target);
8484 return;
8585 }
8686 }
87+ //見つからなければ通常実行
8788 this.ExecuteByNormalRelation(target);
8889 }
8990
--- SCFiler2/Interfaces.cs (revision 82)
+++ SCFiler2/Interfaces.cs (revision 83)
@@ -1,8 +1,10 @@
11 using System;
22 using System.Collections.Generic;
33 using System.Text;
4+using SCFiler2.PluginInterface;
45
56 namespace SCFiler2.ViewInterface {
7+ //ViewInterfacesと統合した方がいいかもしれないが、昔からあるので一応残す。SCFiler内からアクセスされる用
68 class ViewInterfaces {
79 private static MainForm mainForm = MainForm.Instance;
810 /// <summary>
@@ -60,5 +62,15 @@
6062 public static void CheckUpdateAllView() {
6163 mainForm.CheckUpdateAllView();
6264 }
65+
66+ public static List<IHistoryView> HistoryViews{
67+ get {
68+ List<IHistoryView> list = new List<IHistoryView>();
69+ foreach (IHistoryView view in MainForm.Instance.AllHistoryView) {
70+ list.Add(view);
71+ }
72+ return list;
73+ }
74+ }
6375 }
6476 }
--- SCFiler2/ViewInterfacesImpl.cs (revision 82)
+++ SCFiler2/ViewInterfacesImpl.cs (revision 83)
@@ -63,11 +63,7 @@
6363
6464 public List<IHistoryView> HistoryViews {
6565 get {
66- List<IHistoryView> list = new List<IHistoryView>();
67- foreach (IHistoryView view in MainForm.Instance.AllHistoryView) {
68- list.Add(view);
69- }
70- return list;
66+ return ViewInterfaces.HistoryViews;
7167 }
7268 }
7369
--- SCFiler2/bin/Release/ReleaseNote.txt (revision 82)
+++ SCFiler2/bin/Release/ReleaseNote.txt (revision 83)
@@ -2,6 +2,7 @@
22
33 ■0.37
44 ・プラグインにキー割り当てを可能にした
5+・SCFiler2固有の関連付け実行が、プラグインからの呼び出しでは正しく実行しなかったのを修正
56
67 ■0.36
78 ・ジャンプフォルダの削除機能を実装し忘れていたので実装
Show on old repository browser