-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathopen_folder.py
executable file
·146 lines (114 loc) · 5.15 KB
/
open_folder.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#coding:utf-8
r"""
フォルダを開くコマンド群
コマンド:
・command_OpenExplorer
第一引数のフォルダをエクスプローラーで開きます。
・command_OpenCommandPrompt
第一引数のフォルダをコマンド プロンプトで開きます。
・command_OpenPowerShell
第一引数のフォルダを PowerShell で開きます。
・command_EditCommand
第一引数のコマンドを編集します。
定義例:
# config.py の configure() 関数に次のように記載します
import open_folder
window.cmd_keymap[ "S-Return" ] = open_folder.command_OpenExplorer
window.cmd_keymap[ "C-Return" ] = open_folder.command_OpenCommandPrompt
window.cmd_keymap[ "A-Return" ] = open_folder.command_EditCommand(window)
使用例:
・"memochou" + Shift - Enter
メモ帳をドラッグ&ドロップで memochou として登録していれば、
メモ帳がインストールされたフォルダをエクスプローラーで開く。
・"memochou" + Ctrl - Enter
メモ帳をドラッグ&ドロップで memochou として登録していれば、
メモ帳がインストールされたフォルダをコマンド プロンプトで開く。
・"memochou" + Alt - Enter
メモ帳をドラッグ&ドロップで memochou として登録していれば、
memochou コマンドを編集する。
・"~" + Ctrl - Enter
マイドキュメントをドラッグ&ドロップで ~ として登録していれば、
コマンド プロンプトでマイドキュメント フォルダを開く。
・"~" + Alt - Enter
マイドキュメントをドラッグ&ドロップで ~ として登録していれば、
~ コマンドを編集する。
・"C:\Users" + Ctrl - Enter
C:\Users をコマンド プロンプトを開く。
"""
import os
from clnch import *
# --------------------------------------------------------------------
# コマンドのフォルダーをエクスプローラーで表示する
def command_OpenExplorer(args):
path = getCommandPath(args[0])
if path:
if os.path.isfile(path):
pyauto.shellExecute( None, "explorer.exe", '/select,"%s"' % path, "", None )
elif os.path.isdir(path):
pyauto.shellExecute( None, path, "", "", None )
else:
pyauto.shellExecute( None, os.path.split(path)[0], "", "", None )
# --------------------------------------------------------------------
# コマンドのフォルダーをコマンド プロンプトで表示する
def command_OpenCommandPrompt(args):
path = getCommandPath(args[0])
if path:
if os.path.isdir(path):
pyauto.shellExecute( None, "cmd.exe", "", path, None )
else:
pyauto.shellExecute( None, "cmd.exe", "", os.path.split(path)[0], None )
# --------------------------------------------------------------------
# コマンドのフォルダーを PowerShell で表示する
def command_OpenPowerShell(args):
path = getCommandPath(args[0])
if path:
if os.path.isdir(path):
pyauto.shellExecute( None, "powershell.exe", "", path, None )
else:
pyauto.shellExecute( None, "powershell.exe", "", os.path.split(path)[0], None )
# --------------------------------------------------------------------
# コマンドを編集する
def command_EditCommand(window):
def _command_EditCommand(args):
command_name = args[0].lower()
items = loadCommandListFromIniFile()
i = 0
for i in range(len(items)):
if command_name == items[i][0].lower():
# 編集ウインドウを表示する
edit_result = clnch_commandwindow.popCommandWindow( window, *items[i] )
# 編集した場合
if edit_result:
items[i] = edit_result
# iniファイルに反映させる
clnch_ini.remove_section("COMMANDLIST")
for i in range(len(items)):
clnch_ini.set( "COMMANDLIST", "command_%d"%(i,), str(tuple(items[i])) )
# 設定を再読み込みする
window.configure()
break
i += 1
return _command_EditCommand
# 処理対象のフォルダを取得する
def getCommandPath( text ):
# ファイルやディレクトリ パスならそのまま返す
if os.path.isfile(text) or os.path.isdir(text):
return text
# ini から取得
text = text.lower()
command_list = loadCommandListFromIniFile()
for command in command_list:
if text.lower() == command[0].lower():
return command[1]
# ini に保存されたコマンドを読み込む
def loadCommandListFromIniFile():
i=0
ret = []
while True:
try:
command_string = clnch_ini.get( "COMMANDLIST", "command_%d"%(i,) )
except:
break
ret.append(eval( command_string ))
i += 1
return ret