/usr/share/pype/plugins/filehistory.py is in pype 2.9.4-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | '''
This software is licensed under the GPL (GNU General Public License) version 2
as it appears here: http://www.gnu.org/copyleft/gpl.html
It is also included with this archive as `gpl.txt <gpl.txt>`_.
'''
import wx
root = None
class FileHistory(wx.Menu):
def __init__(self, parent, name='', remove=0, callback=None, seq=[], maxlen=0, delmsg=('', '')):
self.delmsg = delmsg
if name:
wx.Menu.__init__(self, name)
else:
wx.Menu.__init__(self)
self.remove = remove
if not callback:
self.callback = []
else:
self.callback = callback
self.maxlen = maxlen
self.parent = parent
for i in seq:
if maxlen > 0 and len(self) >= maxlen:
break
iid = wx.NewId()
self.Append(iid, i)
wx.EVT_MENU(self.parent, iid, self.OnClicked)
self.last = None
def __len__(self):
return self.GetMenuItemCount()
def __iter__(self):
for i in xrange(len(self)):
yield self.FindItemByPosition(i)
def GetLabels(self):
return [i.GetLabel() for i in self]
def ResetMenu(self):
l = list(iter(self))
l.reverse()
for i in l:
self.Delete(i.GetId())
def ItemRemove(self, name):
for item in self:
if item.GetLabel() == name:
if name == self.last:
self.last = None
#ask user whether they really want to remove the pathmark
self.Delete(item.GetId())
return
def ItemAdd(self, name):
self.last = name
for item in self:
if item.GetLabel() == name:
ll = self.Remove(item.GetId())
self.PrependItem(ll)
return
if self.maxlen > 0 and len(self) >= self.maxlen:
lst = list(iter(self))
while lst and len(lst) >= self.maxlen:
it = lst.pop()
iid = it.GetId()
self.Delete(it)
else:
iid = wx.NewId()
wx.EVT_MENU(self.parent, iid, self.OnClicked)
self.Prepend(iid, name)
def OnClicked(self, evt):
eid = evt.GetId()
label = self.GetLabel(eid)
if label:
if self.remove:
if root.dialog(self.delmsg[0]%label, self.delmsg[1], wx.OK|wx.CANCEL)&1 != 0:
return
self.ItemRemove(label)
else:
self.ItemAdd(label)
for i in self.callback:
i(label)
|