@@ -10,6 +10,8 @@ import InputMethodKit
1010
1111@objc ( TcodeInputController)
1212class TcodeInputController : IMKInputController , Controller {
13+ let menuObj : NSMenu
14+
1315 var modeStack : [ Mode ] = [ ]
1416 let candidateWindow : IMKCandidates
1517 var pendingKakutei : PendingKakuteiMode ?
@@ -21,12 +23,37 @@ class TcodeInputController: IMKInputController, Controller {
2123 }
2224
2325 override init !( server: IMKServer ! , delegate: Any ! , client inputClient: Any ! ) {
26+ self . menuObj = NSMenu ( title: " MacTcode " )
27+ self . menuObj. addItem ( withTitle: " 学習/統計ファイルを更新 " , action: #selector( writeStatsToFile) , keyEquivalent: " " )
28+ self . menuObj. addItem ( withTitle: " 設定ファイルフォルダを開く " , action: #selector( openConfigFolder) , keyEquivalent: " " )
29+ self . menuObj. addItem ( withTitle: " サンプル設定ファイルを作成 " , action: #selector( createSampleConfigFile) , keyEquivalent: " " )
30+
2431 candidateWindow = IMKCandidates ( server: server, panelType: kIMKSingleRowSteppingCandidatePanel)
2532 super. init ( server: server, delegate: delegate, client: inputClient)
2633 setupCandidateWindow ( )
2734 Log . i ( " ★★TcodeInputController: init self= \( ObjectIdentifier ( self ) ) " )
2835 }
2936
37+ override func menu( ) -> NSMenu ! {
38+ return menuObj
39+ }
40+
41+ @objc
42+ func openConfigFolder( ) {
43+ let url = UserConfigs . i. macTcodeURL
44+ NSWorkspace . shared. open ( url)
45+ }
46+
47+ @objc
48+ func writeStatsToFile( ) {
49+ InputStats . i. writeStatsToFile ( )
50+ }
51+
52+ @objc
53+ func createSampleConfigFile( ) {
54+ UserConfigs . i. createSampleConfigFile ( )
55+ }
56+
3057 override func inputControllerWillClose( ) {
3158 Log . i ( " ★★TcodeInputController: inputControllerWillClose self= \( ObjectIdentifier ( self ) ) " )
3259 super. inputControllerWillClose ( )
0 commit comments