pfeMame - Windows  pfeMame - Linux  pfeMame (Source)

What's New:

- I have dropped the support for force shutting down the MAME executable. The support for the keyboard monitoring was flaky and sometimes just crashed everything. Also support under Linux and MacOS is almost non-existent due to those operating systems being more secure.
- Fixed the bug that stopped the log file viewer from scrolling to the bottom of the log on MacOS.
- Fixed an issue I started getting with SSL certificates on some platforms when checking for the software update. This was throwing an exception and so I couldn’t find the current software version from the repo.
- Fixed the toolbar button sizes so that the hover text on all platforms aligns correctly.
- Changed the view and search box’s to be default size. MacOS was complaining about my trying to make the control too large.
- Created a custom search control so that I can control the text and background colours as well as the hint text color. The default control was too strict in MacOS. Doing this has lost the pretty magnifying glass but maybe later I will work out how to add that back in.


- Changed the ROM filter to a wx.ComboCtrl with custom list control as the drop down. This allows me full control over the text and background colors across all platforms.
- Finally ditched the generic status bar and created my own custom status bar. This gives me full control over the colours across all platforms (Yes I’m pointing at you MacOS).
- Switched to using pygauge rather than the inbuilt gauge for progress bar display. This allows me to set the color and I just like it more.
- Moved the main screen progress bar to be an overlay rather than the small patch it used to be contained in. Looks nicer and more modern to me.
- Made the quantities info on the statusbar readonly (Yes you could actually delete it).
- Stopped the statusbar quantities field from being able to be given focus at all and no left click highlighting.
- Pop-up image viewer was not closing with the ESC key
- Altered the pop-up image viewer to use the full vertical space available.
- Added keyboard shortcut SHIFT-V to launch the fullscreen video player
- When the full screen vide player is running, pressing the space bar will skip to the next video. Any other key will exit.
- Changed to using a callafter to set the ROM tiles focus back after running a ROM in TileView. Have done this to try and fix an issue whereby sometimes after running a ROM, the tiles don’t get back focus and you loose keyboard navigation without clicking the left mouse button (Which forces focus on the first tile). The callafter should allow all controls to be redrawn before trying to give focus.
- Removed an annoying underscore form the output in the RomInfo screen.
- Changed the font_info function to return a named tuple. This makes my code cleaner in each module that I call that function to pull out the font information and set local font variables.
- Added a Bios drop down list to the Slots preferences page. This is populated from the xml file. This allows you to set ROM specific Bios configurations (Like if you want to always have the spectrum ROM using the GOSH bios, or Amiga 500 using the 3.1 Kickstart ROM). If nothing is found in the ROM specific INI file then it will default to the first BIOS in the list.
- Dropped the auto restart after certain preferences are changed. It never worked too well across different platforms, and even on Windows after restarting I was finding control bindings stopped working.
- Fixed the button colors not working properly on Linux. Needed to be specific in the colors.
- Updated the slot control buttons to use the global color theme.
- Fixed a bug where the random ROM runner could select a ROM that is one too far off the list which would cause an unmanaged exception.
- Fixed a bug in the backup code. If a file that was listed to backup didn’t exist (like if you have no favourites) then the process would fail badly. Now it will tell you that the missing file has been skipped.
- Fixed similar bug in the restore code.
- Fixed a bug where if a video play is not available, the playback timer would keep counting down in a loop.
- Fixed a bug in the code I use to check for valid values for Audio volume. It seems that using isnumeric() for negative numbers thinks they are not a number. Have to strip the leading ‘-‘ off the string.
- Major change to preferences. I have moved the preferences window into the main window as a tab shared with the ROMs list. Also done the same with the ROM specific preferences. They are now side-by-side.
- Improved the slot configuration’s view – it now expands to take up the horizontal space available which makes systems with no slots look better in the view.
- Changed the size of the spin controls on the Sound tab in preferences to stop annoying GTK complaints about the size being too small for the native control.
- Slot option heading and buttons will no longer show for System ROMs that don’t actually have slot options.
- Changed to using event.m_col to determine what column has been clicked in the Ultimatelistctrl. Was previously using a calculation based on pixels that doesn’t work well enough. As Ultimatelistctrl supports m_col where the standard listctrl doesn’t across all platforms, this seems a much better idea. This fixes an issue with ordering by Manufacturer as the column wasn’t being detected correctly.
- Replaced my custom code for replacing escaped ASCII characters with html.unescape. My code took 2 seconds while the inbuilt takes 0.07 so I think its written in C. Speeds up the -listxml read from MAME.
- Lots of general code cleanup and refactoring.
- Extra error checking in xmlinfo.py to check if the softwarelist ‘hash’ folder and relevant file doesn’t actually exist.
- Layout improvements in xmlinfo.py.
- Corrected some misleading naming in tileview.py (self.rom_name that was actually a version of self.rom_file_name but not really for example.
- It seems I have been using the shelve module incorrectly. It returns an object, not a list, but still seems to work. I have rewritten the code a bit to ensure a list is returned.
- Created docstrings for functions in functions.py. Still a bit of a WIP but a step in the right direction.
- Some slight improvements to dark mode coloring. Notebook tab background is now set to the window background color and inactive tab text color is the same as window text color.
- Fixed a bug where if the color string is not set in the pfemame.ini file, it would throw an unmanaged exception as the default type was a colour object, not a color string.
- Added some more defaults to the pfemame inifile creation for first-time-run.