{"push_id":624065776,"size":90,"distinct_size":19,"ref":"refs/heads/dev-fallout-patcher-update","head":"3570df45ed813b6a4796518c67e7a1e9e58a2085","before":"67de68e141506c3c204d0ad3f790fc068d1529e0","commits":[{"sha":"ee843445f97f5284eed6f6190dd5db9a4fb9ba66","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Fixup for dialog being destroyed twice in some cases:\n\nI just knew there was something rotten there.\nRepro: Mods > Load > Edit Lists... - just close the edit list dialog.\nThen Mods > Load > Save List... save the list and get:\n\nTraceback (most recent call last):\n  File \"bash\\basher\\mods_links.py\", line 102, in Execute\n    def Execute(self, event): _self.DoEdit(event)\n  File \"bash\\basher\\mods_links.py\", line 177, in DoEdit\n    balt.ListEditor.Display(self.window, _(u'Load Lists'), data)\n  File \"bash\\balt.py\", line 1166, in Display\n    \"\"\"Instantiate a dialog, display it and return the ShowModal result.\"\"\"\n  File \"C:\\_\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode\\wx\\_windows.py\", line 738, in __exit__\n    self.Destroy()\n  File \"C:\\_\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode\\wx\\_core.py\", line 14619, in __getattr__\n    raise PyDeadObjectError(self.attrStr % self._name)\nwx._core.PyDeadObjectError: The C++ part of the ListEditor object has been deleted, attribute access no longer allowed.\n\nAdded Destroy() where there wasn't any and removed the Destroy() call in\nDialog.OnCloseWindow().\nTook the opportunity to wrap a bit in patcher dialog (and removed\npacthDialog=None which served no purpose whatsoever).","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/ee843445f97f5284eed6f6190dd5db9a4fb9ba66"},{"sha":"1d93058779357443b869cbc990cba2608314001b","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Tank.getMouseText() - people MouseOverItem() override eliminated","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/1d93058779357443b869cbc990cba2608314001b"},{"sha":"f14e019412f3ee445bf1506a37e320cec9b35b87","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"TMP List._populate() - will be eliminated later","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/f14e019412f3ee445bf1506a37e320cec9b35b87"},{"sha":"8ddbd1c16d25bdf8584be226f8c1ab0448028c28","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Populate items encapsulated - couple RefreshUI targeted","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/8ddbd1c16d25bdf8584be226f8c1ab0448028c28"},{"sha":"54268a7b80e0109e8631e7cf29ca0b32572b8027","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"List.items pruning I","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/54268a7b80e0109e8631e7cf29ca0b32572b8027"},{"sha":"93db4833401d88d4d458911c72dd66722c6b2ad2","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"List.items pruning II - UIList.GetSelected():\n\nKept Tank variation - don't believe List one is faster than O(n).","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/93db4833401d88d4d458911c72dd66722c6b2ad2"},{"sha":"e87dca7bad63e1b7fbe66ce36d32b65e6b1f9eb7","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Last List.items pruned - UIList.GetItems():\n\n- mod(s) links: Took the opportunity to wrap a bit and introduce\nModList.isBP()\n- balt: comments in _SortItems(), renamed locals for clarity","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/e87dca7bad63e1b7fbe66ce36d32b65e6b1f9eb7"},{"sha":"350075a63fe762e1b6029e57df51d203a96a3dd4","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"UIList.PopulateItems():\n\nAlso eliminated TankData.title, hasChanged and getName().\nI had to introduce a RefreshUI ModList override - I do not like it -\nespecially the refreshSaves=True part.\nIntroduced ugly _gpath method as some (most) of the UILists used GPath\nin their populate item - the ones that don't are the not file driven\nones (message, people) and masters. Installers should probably use\nGPath too...\n\nChange in the API RefreshUI(self, **kwargs). Made possible cause\neverywhere I had used 'files' I had used a keyword argument.","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/350075a63fe762e1b6029e57df51d203a96a3dd4"},{"sha":"a510b2377a45de58d4d54fc9637a8bce17080afb","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Tank and List __init__() eliminated:\n\nAlso moved DnD to InstallerList (was installers specific).\nAnd UIList.data attribute - I hope not for ever. And at some point should\nbecome _data.\n\nSigned-off-by: MrD <the.ubik@gmail.com>","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/a510b2377a45de58d4d54fc9637a8bce17080afb"},{"sha":"58ef0f41c9e17dd1c4080b38ff3d63b11f80b2b2","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Binned bosh.installersWindow:\n\nKeep UI to UI.\nsettings_links.py:\nThe dialog would appear with parent the status bar - fixed","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/58ef0f41c9e17dd1c4080b38ff3d63b11f80b2b2"},{"sha":"4a01d04d3d57ad872fa326004424bbf06fa87047","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Workarounds for comments box size and hanging status bar:\n\nI don't know why:\n`sashPos = splitter.GetSashPosition() - splitter.GetSize()[1]` but\nomitting it does not seem to hurt.\n\nBoth hanging status bar and comments size not being restored when\nwindow is maximized are fixed with moving maximize call after refresh\nbut this is just a workaround - statusbar should follow the window when\nmaximized and comments also - I just don't know/have time to learn\nproper wx sizers etc\n\nUnder #94, #197.","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/4a01d04d3d57ad872fa326004424bbf06fa87047"},{"sha":"c971841a51c38cdbddead26a74a7a2ae399a8173","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"ListBoxes moved to balt to allow for UIList.DeleteItems():\n\nThis fixes a couple of very annoying cyclic imports","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/c971841a51c38cdbddead26a74a7a2ae399a8173"},{"sha":"22fb1f97a9c61aa55a7b402d278f8f96f2821b9f","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Bye TankData","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/22fb1f97a9c61aa55a7b402d278f8f96f2821b9f"},{"sha":"ad7119b81598c0ae29a34cc35553345ddf8d001d","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"getColumns() -> getLabels() and using it in Mod_CopyModInfo","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/ad7119b81598c0ae29a34cc35553345ddf8d001d"},{"sha":"d94a09c439d3c84a92153764122614e065391f7f","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Bye basher.List (and Tanks_Open)","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/d94a09c439d3c84a92153764122614e065391f7f"},{"sha":"af3a69847c55934dee0872db353cf7b62d9a7bb6","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Oblivion esm version swapping fixups:\n\nCloses #198.\n\nThe 305 bug was due to _Default.Execute() lines:\n\n-            BashFrame.modList.RefreshUI()\n-            Link.Frame.RefreshData()\n\nSame lines were in correct order in _ProfileLink - so essentially another\ncopy paste bug. Took the opportunity to add help to the profiles links.\n\nsetProfile=True named argument - not sure I like the different behavior\nof saves and mods tabs - documented here:\nhttp://wrye-bash.github.io/docs/Wrye%20Bash%20Advanced%20Readme.html#tools-swapping\n\nThe assertions were due to me not clearing the internal dicts when deleting\nall items from the _gList - essentially the key error below was not thrown:\n\n    class _ProfileLink(CheckLink):\n        def Execute(self, event):\n            #....\n            Saves_Profiles.swapOblivionVersion(newSaves)\n            Link.Frame.SetTitle()\n            self.window.details.SetFile(None) # <------ DeleteAllItems()\n            Link.Frame.RefreshData()\n\n            # PopulateItem() ....\n            fileName = item\n            try:\n                itemDex = self.GetIndex(item)\n            except KeyError:\n                itemDex = self._gList.GetItemCount() # insert at the end\n                insert = True\n\nso it was not inserting - just trying to update the \"existing\" list item\n`self._gList.SetStringItem(itemDex, colDex, labels[col])`.\nAlpha is there for a reason turns out :)\n\nRenamed DeleteAllItems() to DeleteAll() to differentiate it from the\nDeleteAllItems ListCtrl method.","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/af3a69847c55934dee0872db353cf7b62d9a7bb6"},{"sha":"6771211cfde851828d1e81df3f3d6db1d31962e9","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Merge branch 'utumno-163-basher-list-removed' into dev:\n\nThis merge concludes the 306 refactoring of basher - the Tank remains\nremain to be eliminated in 307 - this also means to incorporate\nuseful Tank patterns in UIList.","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/6771211cfde851828d1e81df3f3d6db1d31962e9"},{"sha":"ff358ef897223ec59297c70c7f0a6da8e4a7e799","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Fix: selection on activating mod by clicking its icon:\n\nWhen activating a mod while mod list is sorted by selected the mod would\nbe re-sorted in the _checkUnchekMod() RefreshUI and then event.Skip()\nwould pass the event on to OnSelectItem() which would select the new\n(random) mod in event's (old mod's) index.\nTook the opportunity to rewrite OnItemSelected - event.m_itemIndex is a\nwx detail, belongs in balt - note especially:\n\n-    def OnItemSelected(self, event): self.panel.OnSelectTweak(event)\n+    def _select(self, tweakfile): self.panel.SelectTweak(tweakfile)\n\nthis wringle is finally smoothed.\nTank.RefreshDetails() binned - virtually unused.","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/ff358ef897223ec59297c70c7f0a6da8e4a7e799"},{"sha":"7e085d79644138ae83f80adc847ca48deefd8461","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Nitpick:\n\nbosh:\ntry: newPath.moveTo(basePath)\n- verify I always cleanup (as it was `else: #Undo any changes` would not run\n`if werr.winerror != 32: raise`\n- copy paste fixed in (basePath.s,oldPath.s,basePath.s) - extracted method\nMopy/bash/basher/patcher_dialog.py:used same logic there\n\n- self.data.iteritems() -> self.iteritems()\n\nMopy/bash/basher/patcher_dialog.py: Was raising CancelError (which is pass)\neven on a SkipError. P/C differences must go ! Notice different save\nprocedure ?!\n\n # This is the 2nd commit message:\n\n- Mopy/bash/barb.py: rewrote to avoid some dup code\n- Mopy/bash/bosh.py: just a warning (variable may be not initialized)\n\n # This is the 3rd commit message:\n\nbosh:\nreImageExt global was unused, as asFloat=False parameter\ncutting on .data usages - using .values() instead of dict[key]\n\nFinally bosh.CountDict moved to Mopy/bash/patcher/patchers/base.py (used\nthere and in Mopy/bash/patcher/patchers/importers.py).","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/7e085d79644138ae83f80adc847ca48deefd8461"},{"sha":"fa427705db8685c65a4e7a85851ceb8163db44fa","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"WIP - Unifying deletion handling - menus/shortcuts common code - inis fix:\n\nUnder #172.\n\n- Menu items:\nFile_Delete was used by: ModList, SaveList, BSAList, ScreensList\nThe rest used:\nMessage_Delete <-- I left this alone\nInstaller_Delete\nINI_Delete <-- I filter default tweaks out then delegate to common\nTank_Delete (People)\nFile_Delete _did not use DeleteSelected()_ - so basically all the\ntrackedInfos updates etc were not applied when deleting via menu items...\n\n- Shortcuts:\nAs seen in bf897ad6f4a42b5c05024a679a08c7a0:\nModList, SaveList, ScreensList, IniList, BSAList (untested) used\nDeleteSelected (with updating trackedInfos and all). 97eb0477\nadded delete shortcut to MessageList (also untested) and PeopleList\n(using the Tank variation of DeleteSelected, basically del data[key]).\nSee 97eb0477 for _shellUI and installers.\n\nI am not entirely sure what to do with the tracked info thing - see\nd72bd4fd75e8b25a63ee7effcb4fedff8a0f5ed0 where they are introduced\nto deletion and efa89935fa2cd5d3f47345ef81067e57fa31fd16 for deletion\nshellUI stuff.\nTracked file infos were introduced at\ncd7fda982af2ad5385390e55029d416411eee6a9\n\nI guess only Ini and Mod tabs should be \"temporarily tracked\" (?) What\nabout saves tab ?\n\nIn this commit:\n1. Edited File_Delete to use DeleteSelected and made _all_ tabs use\nthis (apart from Messages) - renamed to UIList_Delete. File_Delete used\nList.DeleteSelected() code apart from:\n - trivial differences (like `Uncheck files to skip` vs `items to skip`\netc and showError(self, u'%s' % e) vs self._showError(u'%r' % e))\n - not so trivial differences, namely it had no clue of the shellUI path.\nSo now Ini and Screens use this path as well when using the menu item.\n2. Added DeleteItems() override to Ini tab - FIXes default tweaks\nbeing deleted when using the shortcut (the menu item, INI_Delete,\nhad checks but common List.DeleteSelected() had not, present in 305).\n3. Nitpick: wxDelete = {wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE}\n\nNote that when deleting ini tweaks via the menu item the filesystem is\nstated twice - this is a bug but to be addressed I need a proper cache.","distinct":false,"url":"https://api.github.com/repos/Sharlikran/wrye-bash/commits/fa427705db8685c65a4e7a85851ceb8163db44fa"}]}