diff --git a/Changes.txt b/Changes.txt index 6ea310e49..13477b55c 100644 --- a/Changes.txt +++ b/Changes.txt @@ -46,6 +46,9 @@ addresses; previously they only worked for write addresses - The previous trap'm' commands are now renamed 'trap', 'trapread' and 'trapwrite' + - The TIA tab now shows 'old' contents of player and ball registers + - Various UI items are crossed out when disabled, to more clearly + indicate their current state - Command completion now works with internal functions and pseudo-ops (basically, anything starting with the '_' character) - In general, input error checking is much more strictly enforced @@ -71,6 +74,12 @@ this bug has only ever occurred in Windows XP, but it's been there since Stella 4.1. + * Fixed bug in 'Rom Audit' functionality; sometimes ROMs without a + valid properties entry were being renamed as "Untitled.bin". + + * For the entire UI, removed colons and generally made the UI items + easier to read. + * When in 'ROM launcher mode', Stella now uses slightly less CPU time. * Added ROM properties for D.K. VCS homebrew ROM, thanks to Andreas @@ -112,8 +121,11 @@ both libraries are now compiled into the app whenever one is selected. This fixes issues with a newer ZLIB not working with an older PNG, etc. + * Updated build scripts for Visual Studio 2017 (Windows) and MacOS + Sierra (latest version of Xcode). + * Updated UNIX configure script to work with the clang 5+ and gcc 7+ - compiler versions. + compiler versions, and fixed compile issues on aarch64 architectures. -Have fun! diff --git a/src/gui/RomAuditDialog.cxx b/src/gui/RomAuditDialog.cxx index 521a77453..9f10aca4a 100644 --- a/src/gui/RomAuditDialog.cxx +++ b/src/gui/RomAuditDialog.cxx @@ -46,7 +46,7 @@ RomAuditDialog::RomAuditDialog(OSystem& osystem, DialogContainer& parent, fontHeight = font.getFontHeight(), buttonWidth = font.getStringWidth("Audit path") + 20, buttonHeight = font.getLineHeight() + 4, - lwidth = font.getStringWidth("ROMs without properties (skipped): "); + lwidth = font.getStringWidth("ROMs without properties (skipped) "); int xpos = vBorder, ypos = vBorder; WidgetArray wid; @@ -68,17 +68,15 @@ RomAuditDialog::RomAuditDialog(OSystem& osystem, DialogContainer& parent, xpos = vBorder + 10; ypos += buttonHeight + 10; new StaticTextWidget(this, font, xpos, ypos, lwidth, fontHeight, "ROMs with properties (renamed) ", kTextAlignLeft); - myResults1 = new StaticTextWidget(this, font, xpos + lwidth, ypos, - _w - lwidth - 20, fontHeight, "", - kTextAlignLeft); - myResults1->setFlags(WIDGET_CLEARBG); + myResults1 = new EditTextWidget(this, font, xpos + lwidth, ypos - 2, + _w - xpos - lwidth - 10, lineHeight, ""); + myResults1->setEditable(false, true); ypos += buttonHeight; new StaticTextWidget(this, font, xpos, ypos, lwidth, fontHeight, "ROMs without properties (skipped) ", kTextAlignLeft); - myResults2 = new StaticTextWidget(this, font, xpos + lwidth, ypos, - _w - lwidth - 20, fontHeight, "", - kTextAlignLeft); - myResults2->setFlags(WIDGET_CLEARBG); + myResults2 = new EditTextWidget(this, font, xpos + lwidth, ypos - 2, + _w - xpos - lwidth - 10, lineHeight, ""); + myResults2->setEditable(false, true); ypos += buttonHeight + 8; new StaticTextWidget(this, font, xpos, ypos, _w - 20, fontHeight, @@ -102,16 +100,16 @@ void RomAuditDialog::loadConfig() instance().settings().getString("romdir") : currentdir; myRomPath->setText(path); - myResults1->setLabel(""); - myResults2->setLabel(""); + myResults1->setText(""); + myResults2->setText(""); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void RomAuditDialog::auditRoms() { const string& auditPath = myRomPath->getText(); - myResults1->setLabel(""); - myResults2->setLabel(""); + myResults1->setText(""); + myResults2->setText(""); FilesystemNode node(auditPath); FSList files; @@ -129,6 +127,7 @@ void RomAuditDialog::auditRoms() int renamed = 0, notfound = 0; for(uInt32 idx = 0; idx < files.size(); idx++) { + bool renameSucceeded = false; string extension; if(files[idx].isFile() && LauncherFilterDialog::isValidRomName(files[idx], extension)) @@ -136,19 +135,22 @@ void RomAuditDialog::auditRoms() // Calculate the MD5 so we can get the rest of the info // from the PropertiesSet (stella.pro) const string& md5 = MD5::hash(files[idx]); - instance().propSet().getMD5(md5, props); - const string& name = props.get(Cartridge_Name); - - // Only rename the file if we found a valid properties entry - if(name != "" && name != files[idx].getName()) + if(instance().propSet().getMD5(md5, props)) { - const string& newfile = node.getPath() + name + "." + extension; + const string& name = props.get(Cartridge_Name); - if(files[idx].getPath() != newfile && files[idx].rename(newfile)) - renamed++; + // Only rename the file if we found a valid properties entry + if(name != "" && name != files[idx].getName()) + { + const string& newfile = node.getPath() + name + "." + extension; + if(files[idx].getPath() != newfile && files[idx].rename(newfile)) + renameSucceeded = true; + } } + if(renameSucceeded) + ++renamed; else - notfound++; + ++notfound; } // Update the progress bar, indicating one more ROM has been processed @@ -156,8 +158,8 @@ void RomAuditDialog::auditRoms() } progress.close(); - myResults1->setValue(renamed); - myResults2->setValue(notfound); + myResults1->setText(Variant(renamed).toString()); + myResults2->setText(Variant(notfound).toString()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -198,8 +200,8 @@ void RomAuditDialog::handleCommand(CommandSender* sender, int cmd, { FilesystemNode dir(myBrowser->getResult()); myRomPath->setText(dir.getShortPath()); - myResults1->setLabel(""); - myResults2->setLabel(""); + myResults1->setText(""); + myResults2->setText(""); break; } diff --git a/src/gui/RomAuditDialog.hxx b/src/gui/RomAuditDialog.hxx index bbb4e98e0..757f30856 100644 --- a/src/gui/RomAuditDialog.hxx +++ b/src/gui/RomAuditDialog.hxx @@ -58,8 +58,8 @@ class RomAuditDialog : public Dialog EditTextWidget* myRomPath; // Show the results of the ROM audit - StaticTextWidget* myResults1; - StaticTextWidget* myResults2; + EditTextWidget* myResults1; + EditTextWidget* myResults2; // Show a message about the dangers of using this function unique_ptr myConfirmMsg;