-
Notifications
You must be signed in to change notification settings - Fork 84
Open
Labels
M-good-first-issueMisc: A good issue for newcomers to start withMisc: A good issue for newcomers to start with
Milestone
Description
Grouping various TODOs that people new to the code can help with. Some are important so more complicated refactorings and new features can take place. Some are just things I can't get round to. Some are things I don't won't to get into. Every little bit helps. Bold items are a priority.
Ongoing - just keep those in mind when editing the code:
- Eliminate all
except: passyou come across in the code. Have an eye open for bad error handling. See Better error handling #220 - in short NEVER dotry..except: passand NEVER swallow a traceback. See also: https://stackoverflow.com/q/33650696/281545 , https://www.python.org/dev/peps/pep-3151/#appendix-a-survey-of-common-errnos - keep an eye open for "hack", "yak", "fixme" or my signature
##:comments - they mark areas of the code that need work - same goes for local imports (
^[ ]+from) - read our style guide and follow it - especially avoid introducing bad names (data, name, key, etc.)
- watch https://www.youtube.com/watch?v=OSGv2VnC0go - then put it in (good) use
Easy - no need to know Bash or the games:
- Installer_Duplicate needs to be absorbed in File_Duplicate (making it possible to select multiple installers in the process)
- Settings menu option for maximum items open warning
- Add a new BAIN skip for DialogueViews files
- Deleting an item on a tab should select the next item immediately afterwards - minor QOL tweak
- Add a command to remove all
.esuplugins to the Mods tab - FNV force-loads
Update.bsa- add that toget_bsa_lo
Easy - but you need to know Bash a bit and/or the games:
- Double-check all of the default INI edits for Nehrim to see if their values make sense or if Nehrim changed the default from Oblivion
- Write some (better) docs for BSA Redirection
- On the Installers tab, dragging and dropping an external file onto BAIN should put the archive at the spot where I dragged it, not at the bottom of my 500+ packages list -> Use the x and y parameters of
OnDropFilesand do aHitTestwith them - Adding on to the 'reselecting after deleting' point above, check if there are any other places in WB where such behavior would be nice
- Are there more usages of
gui.ListBoxwhere we can setisExtended=True? - Having thousands of saves makes WB excessively slow. Add an option to disable save loading on boot entirely for now (real solution would be making the Saves tab's backing list virtual - see UIList Refactoring: Allow trees instead of just flat lists #529 and 'Data Tab': View of data folder with source installers #50)
- Add support for
SkyrimCustom.iniand its equivalents in other games
Intermediate:
- Installer_CopyConflicts needs to copy conflicts from complex projects to subpackages
- Finalize archives refactoring:
- Rework mergeability cache - we cache by (size, mtime) - we should cache by crc - see: cb9858e
- If Installers tab is disabled, switching to it does not update global menu
- Switching a save profile does not refresh the load order, you need to alt-tab for it to register
- Adding '--' to the start of an installer's name causes a wx error. Works fine after restarting.
- When LVLG is changed, we get ITPOs - e.g. LootBanditChestBossMagicItem100 [LVLI:00000E88]
- For each of the tabs, create a new page/category in the settings menu and turn all the 'Settings' links into settings on those tabs
- DocBrowser._db_doc_paths stop using Paths as keys -> start from SetMod
- Changing colors via the settings menu and applying that change nicely updates the GUI - except the settings menu itself
- Add the ability to diff two BAIN packages
- A new 'Status' column on the Installers tab similar to the Status column on the Mods tab would be awesome (esp. for sorting by it)
- Requested on Discord:
I'd have a probably dumb idea for the mod checker to check for
Oblivion has 2 weird topics that are called EMPTY in the CS. If you create a new topic and close the window without giving it a name, then reopen, those will also be called EMPTY* (but with a star :D) so way too often people accidentally pick one of those vanilla records for their mods. Very high conflict risk and can't really be easily patched or anything.
Hard:
- Back/Forward buttons for navigating GUI (similar to xEdit/web browser), support mouse buttons for this too
- Add a Relations Checker patcher for Skyrim+ (relation A -> B implies B -> A with the same relationship value)
Done/Moved:
Details
- Add most LSCR subrecords (e.g. NNAM) to the Graphics tag
Add an SSE tweak for renaming CELL EDIDs to avoid underscoresmoved to Add several new settings tweaks #602revisit regexes ->moved to Follow up on Python 3 conversion #618re.Uis not needed -> https://docs.python.org/3/library/re.html#re.A- Add an Actors.Template bash tag -> Support templates and template flags #588
- Add docs to the patchers: https://youtu.be/OSGv2VnC0go?t=28m14s ! Run the debugger and follow the patching process - see the wiki for a rough overview of PBash: https://github.com/wrye-bash/wrye-bash/wiki/%5Bdev%5D-PBash-Patching-Procedure -> Patchers Refactoring #312
- rename local variables that are named
datato something else -> DataStore keys should be unicode #543 - rename class attributes that are named
datato something else - except UILists, panels, DataDicts (duh) and records - start with ScriptParser.Parser.Token.data -> DataStore keys should be unicode #543 - same as above with
items,name- for local variables. Prefer unique names -> DataStore keys should be unicode #543 - go through uses of Path.exists() and replace them with try/except OSError when the file most likely exists -> path handling is more subtle that that
- hunt down uses of FileInfo (and subclasses)
.name- replace if possible by the key for respective fileInfo in(File|Mod|Save|Ini)Infos.data- leads to subtle (read painful) bugs -> DataStore keys should be unicode #543 - eliminate old style class hierarchies -
FileInfosand(gui) Patchercome to mind... - keep in mind that there are no more old-style classes around (Python 3 Upgrade #460), but still plenty of old-style super calls (i.e.SuperClass.__init__(self, param1, param2, ...)) -> FileInfo(s) APIs refactoring #336, Patchers Refactoring #312 - Add an Import Enchantments patcher (targets ENAM (in TES4) and EITM (later games)), then drop enchantments from FO3's Import Graphics -> Add 'Import Enchantments' patcher #599
- It should be possible to gain a huge speedup in SSE boot after a version upgrade by moving parts of the ESL verification into
ModHeaderReader, i.e. have that class provide anis_valid_eslmethod - add help to remaining menu items - see https://github.com/wrye-bash/wrye-bash/tree/200-menus-help -> 1b4f254
- refreshDataSizeCrc is 349 lines. Factor at least the skip part out in a nice
if self._skip(): continue- some duplicate code in there too for type == 2 packages and executable files. Plus add docs and rearange the logic - defines a bunch of stuff then goes likeif type not in {1,2}: return dest_src- 70 lines of code just to return - ?! EDIT: see BAIN Skips fixups #270 - replace uses of
zipwithizipwhere appropriate (that is where the lists are not modified during iteration) -> Python 3 Upgrade #460 - rename 'name' record attributes 01f1a4a
- in particular game.oblivion.records.MelEffects -> used in parsers/patchers as effect.name
- warn if trying to DnD, or control+move mods while not sorted by LO ( a206c00 )
- Finish up the TweakPatcher refactoring I started in 8f8689d - see this commit's message.
- consider an unghost all Link - see: 4579092 -> done: 666642f
- save rest of splitters in InstallersDetails (9d4703a)
- remove
globals()calls in libsa.py and loot.py - see: 9401f0b c91a016, and ccd9839 in this order - done: a79c070 - replace
optparsewithargparsein barg - done in d8e737b, some remaining fixmes in https://github.com/wrye-bash/wrye-bash/compare/200-argparse - thanks @iaz3 ! - refactor common code in mod_links.py Mod__Import links* - see a4e837f to get you started - done: a28fcfc
- rework bash.py to disallow python 2.5, 2.6 - add just a warn that
if you know what you are doing edit the sourceand terminate. We only support 2.7 - this will take with it some cruft with it like 2038 dates in RefreshData() - http://stackoverflow.com/questions/839755/how-to-use-time-year-2038-on-official-windows-python-2-5, http://timgolden.me.uk/python/win32_how_do_i/use-a-pytime-value.html - edit: done in 6d0a944 and 583dcd6 - isGhost belongs to ModInfo - not to FileInfo - move it
- isEsm, isEsp etc move to ModInfo
- rename ItemLink.help to _help -> 1b4f254
- absorb bosh.BsaFile into bosh.bsa_files.OblivionBsa -> d69f3e8
- Add "counting files..." progress indicator (that's more slow than extracting almost!) -> done: 51bfd58
- rework ini tweaks 'default' logic - stats the filesystem all the time. There should be a cache updated on copying an ini tweak and on delete - currently delete (from the menu not from OnKeyUp) stats the filesystem to decide on menu's help and text and then _toDelete() restats the FS on filtering the default tweaks. See fa42770
- have default ini tweaks display in italics using reworking above
- Rip an InstallersDetails class out of InstallersPanel ! Urgent ! (49df166)
- Rip an IniDetails class out of IniPanel. ( f3bf3b7 )
-
Use super in patcher hierarchies - see for instance 3bd9599-> Follow up on Python 3 conversion #618 -
Add an 'Optimize PNGs' menu option for BAIN projects using our bundled pngcrushwe don't bundle it anymore - Make UIList a gui PanelWin subclass -> 6f2bd1d
- Add some shortcuts for New Plugin (on the Mods tab) and New Project (on the Installers tab) -> 70ca87e and d8fdd57
- On the Installers tab, New Project should move the new project below whatever package(s) I have selected -> 70ca87e
- Add a new button to the Doc Browser (or further rework the GUI if you think that's better) that allows creating a new doc and drop the hacky override class -> GUI further reworked in Improve doc browser usability #628
- Come up with a better GUI for applying bash tags -> perhaps a CheckListBox listing all tags, with a SearchBar for ease of use? -> 3599fca
- Detect shift when a menu item is activated - so we can bypass the recycling bin also from menu Delete items
- Decouple balt and gui from bosh -> ea96e99 for the last step
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
M-good-first-issueMisc: A good issue for newcomers to start withMisc: A good issue for newcomers to start with