I'd like to contribute something.
Ability to delete mods and savegames with the DEL key, "stolen" from Wrye Bash:
--- masher.py.old Thu Feb 05 01:37:52 2009+++ masher.py Wed Jul 21 12:21:30 2010@@ -805,6 +805,17 @@ selected.append(self.items[itemDex]) return selected+ def DeleteSelected(self):+ """Deletes selected items."""+ items = self.GetSelected()+ if items:+ message = _(r'Delete these items? This operation cannot be undone.')+ message += '\n* ' + '\n* '.join(x for x in sorted(items))+ if balt.askYes(self,message,_('Delete Items')):+ for item in items:+ self.data.delete(item)+ modList.Refresh()+ def GetSortSettings(self,col,reverse): """Return parsed col, reverse arguments. Used by SortSettings. col: sort variable.@@ -1296,6 +1307,7 @@ #--Events wx.EVT_LIST_ITEM_SELECTED(self,self.listId,self.OnItemSelected) self.list.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick)+ self.list.Bind(wx.EVT_CHAR, self.OnChar) def Refresh(self,files='ALL',detail='SAME'): """Refreshes UI for specified file. Also calls saveList.Refresh()!"""@@ -1420,6 +1432,11 @@ docBrowser.SetMod(fileInfo.name) docBrowser.Raise()+ def OnChar(self,event):+ if (event.GetKeyCode() == 127):+ self.DeleteSelected()+ event.Skip()+ #--Column Resize def OnColumnResize(self,event): colDex = event.GetColumn()@@ -1777,6 +1794,8 @@ self.list.SetImageList(checkboxesIL,wx.IMAGE_LIST_SMALL) #--Events wx.EVT_LIST_ITEM_SELECTED(self,self.listId,self.OnItemSelected)+ self.list.Bind(wx.EVT_CHAR, self.OnChar)+ def Refresh(self,files='ALL',detail='SAME'): """Refreshes UI for specified files."""@@ -1878,6 +1897,11 @@ if journalBrowser: journalBrowser.SetSave(saveName)+ def OnChar(self,event):+ if (event.GetKeyCode() == 127):+ self.DeleteSelected()+ event.Skip()+ #------------------------------------------------------------------------------ class SaveDetails(wx.Window): """Savefile details panel."""@@ -2191,6 +2215,7 @@ self.gComments = wx.TextCtrl(right,-1,style=wx.TE_MULTILINE) #--Events self.Bind(wx.EVT_SIZE,self.OnSize)+ #--Layout right.SetSizer(vSizer( (self.gPackage,0,wx.GROW|wx.TOP|wx.LEFT,4),@@ -2235,7 +2260,7 @@ finally: if progress != None: progress.Destroy() self.SetStatusCount()-+ def OnShowInfoPage(self,event): """A specific info page has been selected.""" if event.GetId() == self.gNotebook.GetId():@@ -2245,6 +2270,8 @@ self.RefreshInfoPage(index,self.data[self.detailsItem]) event.Skip()++ def SetStatusCount(self): """Sets status bar count field.""" active = len([x for x in self.data.itervalues() if x.isActive])@@ -3465,6 +3492,8 @@ else: self.window.Refresh()++ #------------------------------------------------------------------------------ class File_Hide(Link): """Hide the file. (Move it to Mash/Hidden directory.)"""@@ -6460,7 +6489,6 @@ os.chdir(cwd) if settings.get('mash.autoQuit.on',False): mashFrame.Close()- #------------------------------------------------------------------------------ class AutoQuit_Button(Link): """Button toggling application closure when launching Oblivion."""
Psyco support, BAIN will benefit from that:
--- mash.py.old Sat Jan 27 13:12:28 2007+++ mash.py Mon Jul 19 06:09:29 2010@@ -8,6 +8,11 @@ # Main ------------------------------------------------------------------------ if __name__ == '__main__':+ try:+ import psyco+ psyco.full()+ except ImportError:+ pass if len(sys.argv) > 1: stdOutCode = int(sys.argv[1]) else: