Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/elfmz/far2l.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorm32 <mak@trisoft.com.pl>2020-03-03 05:08:08 +0300
committerm32 <mak@trisoft.com.pl>2020-03-03 05:08:08 +0300
commitf10f2927265617da0ef0c8c784b296152dbad770 (patch)
treeda616ebfb13efc20cdf15e8add090dde80a36cc9 /python/configs/plug
parent395d32c3ac84cc58495f9ea98c68129d31af3fcd (diff)
VSF plugin
Diffstat (limited to 'python/configs/plug')
-rw-r--r--python/configs/plug/far2l/upanel.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/python/configs/plug/far2l/upanel.py b/python/configs/plug/far2l/upanel.py
new file mode 100644
index 00000000..d71cebd1
--- /dev/null
+++ b/python/configs/plug/far2l/upanel.py
@@ -0,0 +1,73 @@
+import os
+from .plugin import PluginVFS
+
+
+class Screen:
+ def __init__(self, parent):
+ self.parent = parent
+ self.hScreen = None
+
+ def __enter__(self):
+ self.hScreen = self.parent.info.SaveScreen(0,0,-1,-1)
+
+ def __exit__(self, *args):
+ self.parent.info.RestoreScreen(self.hScreen)
+
+class Plugin(PluginVFS):
+ label = "Python panel"
+ area = "Disk"
+
+ def OpenPlugin(self, OpenFrom):
+ self.Root = "PythonPanel"
+ self.names = []
+ self.Items = []
+ return True
+
+ def GetOpenPluginInfo(self, OpenInfo):
+ Info = self.ffi.cast("struct OpenPluginInfo *", OpenInfo)
+ Info.Flags = (
+ self.ffic.OPIF_USEFILTER|
+ self.ffic.OPIF_USESORTGROUPS|
+ self.ffic.OPIF_USEHIGHLIGHTING|
+ self.ffic.OPIF_ADDDOTS|
+ self.ffic.OPIF_SHOWNAMESONLY
+ )
+ Info.HostFile = self.ffi.NULL
+ Info.CurDir = self.s2f(self.Root)
+ Info.Format = self.s2f(self.label)
+
+ def GetFindData(self, PanelItem, ItemsNumber, OpMode):
+ PanelItem = self.ffi.cast('struct PluginPanelItem **', PanelItem)
+ ItemsNumber = self.ffi.cast('int *', ItemsNumber)
+ n = len(self.Items)
+ p = self.ffi.NULL if n == 0 else self.Items
+ PanelItem[0] = p
+ ItemsNumber[0] = n
+ return 1
+
+ def SetDirectory(self, Dir, OpMode):
+ if OpMode & self.ffic.OPM_FIND:
+ return 0
+ if self.f2s(Dir) == "":
+ self.info.Control(self, self.ffic.FCTL_CLOSEPLUGIN, 0, 0)
+ else:
+ self.info.Control(self, self.ffic.FCTL_CLOSEPLUGIN, 0, Dir)
+ return 1
+
+ def PutFiles(self, PanelItem, ItemsNumber, Move, SrcPath, OpMode):
+ PanelItem = self.ffi.cast('struct PluginPanelItem *', PanelItem)
+ SrcPath = self.f2s(SrcPath)
+ for i in range(ItemsNumber):
+ self.PutFile(PanelItem[i], Move, SrcPath, OpMode)
+ return 1
+
+ def PutFile(self, PanelItem, Move, SrcPath, OpMode):
+ fqname = os.path.join(SrcPath, self.f2s(PanelItem.FindData.lpwszFileName))
+ items = self.ffi.new("struct PluginPanelItem []", len(self.Items)+1)
+ for i in range(len(self.Items)):
+ items[i] = self.Items[i]
+ self.Items = items
+ self.names.append(self.s2f(fqname))
+ i = len(self.Items)-1
+ items[i].FindData = PanelItem.FindData
+ items[i].FindData.lpwszFileName = self.names[i]