Skip to content

Commit

Permalink
#143 利用できないメニューのブロックに対応
Browse files Browse the repository at this point in the history
  • Loading branch information
yamahubuki committed Apr 1, 2020
1 parent 1afb423 commit 0e1fa34
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 2 deletions.
113 changes: 113 additions & 0 deletions tabs/NetworkResourceList.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# -*- coding: utf-8 -*-
#Falcon NetworkResource List tab
#Copyright (C) 2020 yamahubuki <[email protected]>
#Note: All comments except these top lines will be written in Japanese.

"""
ネットワークリソースリストです。ファイルリストと比べると、機能が制限されます。
"""

import os
import gettext
import wx
import errorCodes
import lists
import browsableObjects
import globalVars
import fileOperator
import misc
import workerThreads
import workerThreadTasks
import fileSystemManager
import tabs.fileList

from simpleDialog import *
from win32com.shell import shell, shellcon
from . import base

class NetworkResourceListTab(base.FalconTabBase):
"""ネットワークリソースリストが表示されているタブ。"""

blockMenuList=[
"FILE_CHANGEATTRIBUTE",
"FILE_TRASH",
"FILE_DELETE",
"FILE_MKDIR",
"EDIT_CUT",
"EDIT_SEARCH",
"MOVE_TOPFILE",
"TOOL_DIRCALC",
"TOOL_HASHCALC",
"TOOL_ADDPATH",
"READ_CONTENT_PREVIEW"
]

def Update(self,cursor=""):
"""指定された要素をタブに適用する。"""
self._cancelBackgroundTasks()
lst=lists.NetworkDeviceList()
lst.Initialize(None)
self.hListCtrl.DeleteAllItems()
self.SetListColumns(lst)
self.listObject=lst
self.UpdateListContent(self.listObject.GetItems())
if cursor!="":
c=lst.Search(cursor,0)
self.hListCtrl.Select(c)
self.hListCtrl.Focus(c)
#end カーソル初期位置を設定
#end Update

def GoBackward(self):
"""ドライブ一覧に戻る"""
return self.Move(""," ")

def MakeShortcut(self,option):
prm=""
dir=""
if option["type"]=="shortcut":
prm=option["parameter"]
dir=option["directory"]
target=self.parent.activeTab.GetSelectedItems().GetElement(0).fullpath
dest=option["destination"]
if not os.path.isabs(dest): #早退の場合は絶対に直す
dest=os.path.normpath(os.path.join(os.path.dirname(target),dest))

#TODO:
#相対パスでの作成に後日対応する必要がある
#ハードリンクはドライブをまたげないのでバリデーションする
#ファイルシステムを確認し、対応してない種類のものは作れないようにバリデーションする
#作業フォルダの指定に対応する(ファイルオペレータ側の修正も必用)

if option["type"]=="shortcut":
inst={"operation":option["type"], "target": [(dest,target,prm)]}
else:
inst={"operation":option["type"], "from": [target], "to": [dest]}
#end ショートカットかそれ以外
op=fileOperator.FileOperator(inst)
ret=op.Execute()
if op.CheckSucceeded()==0:
dialog(_("エラー"),_("ショートカットの作成に失敗しました。"))
return
#end error
self.UpdateFilelist(silence=True)

def FileOperationTest(self):
if self.task:
self.task.Cancel()
else:
self.task=workerThreads.RegisterTask(workerThreadTasks.DebugBeep)

def ShowProperties(self):
index=self.GetFocusedItem()
shell.ShellExecuteEx(shellcon.SEE_MASK_INVOKEIDLIST,0,"properties",self.listObject.GetElement(index).fullpath)

def ReadCurrentFolder(self):
globalVars.app.say("現在は、ネットワーク上のリソースの洗濯")

def ReadListItemNumber(self):
globalVars.app.say(_("ネットワークリソース %(drives)d個") % {'drives': len(self.listObject)})

def ReadListInfo(self):
globalVars.app.say(_("ネットワークリソース一覧を %(sortkind)sの%(sortad)sで一覧中、 %(max)d個中 %(current)d個目") %{'sortkind': self.listObject.GetSortKindString(), 'sortad': self.listObject.GetSortAdString(), 'max': len(self.listObject), 'current': self.GetFocusedItem()+1})

9 changes: 7 additions & 2 deletions tabs/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,16 @@ class FalconTabBase(object):
"TOOL_ADDPATH",
"READ_CONTENT_PREVIEW"
])
selectItemTypeMenuConditions[browsableObjects.NetworkResource]=[]
selectItemTypeMenuConditions[browsableObjects.NetworkResource].extend([
"FILE_RENAME",
"EDIT_COPY",
"TOOL_EJECT_DRIVE",
"TOOL_EJECT_DEVICE"
])
#以下3つは専用のタブになってるのでこの機能でやる必要はない。KeyErrorにならないようにしとくだけ。
selectItemTypeMenuConditions[browsableObjects.Drive]=[]
selectItemTypeMenuConditions[browsableObjects.Stream]=[]
selectItemTypeMenuConditions[browsableObjects.NetworkResource]=[]


def __init__(self,environment):
self.task=None
Expand Down
1 change: 1 addition & 0 deletions views/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ def Initialize(self):
tabs.base.FalconTabBase.selectItemMenuConditions[0].append(target.refHead+v)
tabs.base.FalconTabBase.selectItemMenuConditions[2].append(target.refHead+v)
tabs.base.FalconTabBase.selectItemTypeMenuConditions[browsableObjects.File].append(target.refHead+v)
tabs.base.FalconTabBase.selectItemTypeMenuConditions[browsableObjects.NetworkResource].append(target.refHead+v)
tabs.streamList.StreamListTab.blockMenuList.append(target.refHead+v)
self.menu.keymap.add(self.identifier,target.refHead+v,target.keyMap[v])
errors=self.menu.keymap.GetError(self.identifier)
Expand Down

0 comments on commit 0e1fa34

Please sign in to comment.