[Scummvm-git-logs] scummvm branch-2-3 -> b65a4fa83ef6971aa94876e7506653ac31d561ed

sev- sev at scummvm.org
Wed Sep 1 13:39:26 UTC 2021


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
768dd91ddc GUI: Added optional file mask for FileBrowserDialog
b65a4fa83e DIRECTOR: Enforce game target as prefix to the saved files in FileIO


Commit: 768dd91ddca595f25dbaf84fe05312ca7e6cfffe
    https://github.com/scummvm/scummvm/commit/768dd91ddca595f25dbaf84fe05312ca7e6cfffe
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2021-09-01T15:39:02+02:00

Commit Message:
GUI: Added optional file mask for FileBrowserDialog

Changed paths:
    gui/filebrowser-dialog.cpp
    gui/filebrowser-dialog.h


diff --git a/gui/filebrowser-dialog.cpp b/gui/filebrowser-dialog.cpp
index aac4536e4b..8d8af2ac57 100644
--- a/gui/filebrowser-dialog.cpp
+++ b/gui/filebrowser-dialog.cpp
@@ -39,11 +39,15 @@ enum {
 	kChooseCmd = 'Chos'
 };
 
-FileBrowserDialog::FileBrowserDialog(const char *title, const char *fileExtension, int mode)
+FileBrowserDialog::FileBrowserDialog(const char *title, const char *fileExtension, int mode, const char *fileMask)
 	: Dialog("FileBrowser"), _mode(mode), _fileExt(fileExtension) {
 
-	_fileMask = "*.";
-	_fileMask += fileExtension;
+	if (fileMask == NULL) {
+		_fileMask = "*.";
+		_fileMask += fileExtension;
+	} else {
+		_fileMask = fileMask;
+	}
 	_fileList = nullptr;
 
 	new StaticTextWidget(this, "FileBrowser.Headline", title ? Common::convertToU32String(title) :
diff --git a/gui/filebrowser-dialog.h b/gui/filebrowser-dialog.h
index e807a9db98..7a2005af8a 100644
--- a/gui/filebrowser-dialog.h
+++ b/gui/filebrowser-dialog.h
@@ -39,7 +39,7 @@ enum {
 
 class FileBrowserDialog : public Dialog {
 public:
-	FileBrowserDialog(const char *title, const char *fileExtension, int mode);
+	FileBrowserDialog(const char *title, const char *fileExtension, int mode, const char *fileMask = NULL);
 
 	void open() override;
 


Commit: b65a4fa83ef6971aa94876e7506653ac31d561ed
    https://github.com/scummvm/scummvm/commit/b65a4fa83ef6971aa94876e7506653ac31d561ed
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2021-09-01T15:39:13+02:00

Commit Message:
DIRECTOR: Enforce game target as prefix to the saved files in FileIO

Changed paths:
    engines/director/director.h
    engines/director/lingo/xlibs/fileio.cpp


diff --git a/engines/director/director.h b/engines/director/director.h
index ab534a6ae8..ee79766255 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -194,6 +194,7 @@ public:
 	void setVersion(uint16 version);
 	Common::Platform getPlatform() const;
 	Common::Language getLanguage() const;
+	Common::String getTargetName() { return _targetName; }
 	const char *getExtra();
 	Common::String getEXEName() const;
 	StartMovie getStartMovie() const;
diff --git a/engines/director/lingo/xlibs/fileio.cpp b/engines/director/lingo/xlibs/fileio.cpp
index e17f4e95fd..fe21cd1b62 100644
--- a/engines/director/lingo/xlibs/fileio.cpp
+++ b/engines/director/lingo/xlibs/fileio.cpp
@@ -148,9 +148,13 @@ void FileIO::m_new(int nargs) {
 	Common::String option = d1.asString();
 	Common::String filename = d2.asString();
 
+	Common::String prefix = g_director->getTargetName() + '-';
+
 	if (option.hasPrefix("?")) {
 		option = option.substr(1);
-		GUI::FileBrowserDialog browser(0, "txt", option.equalsIgnoreCase("write") ? GUI::kFBModeSave : GUI::kFBModeLoad);
+		Common::String mask = prefix + "*.txt";
+
+		GUI::FileBrowserDialog browser(0, "txt", option.equalsIgnoreCase("write") ? GUI::kFBModeSave : GUI::kFBModeLoad, mask.c_str());
 		if (browser.runModal() <= 0) {
 			g_lingo->push(Datum(kErrorFileNotFound));
 			return;
@@ -160,6 +164,12 @@ void FileIO::m_new(int nargs) {
 		filename += ".txt";
 	}
 
+	// Enforce target to the created files so they do not mix up
+	if (!option.hasPrefix("?") || option.equalsIgnoreCase("write")) {
+		if (!filename.hasPrefixIgnoreCase(prefix))
+			filename = prefix + filename;
+	}
+
 	if (option.equalsIgnoreCase("read")) {
 		me->_inFile = saves->openForLoading(filename);
 		me->_inStream = me->_inFile;
@@ -409,7 +419,13 @@ void FileIO::m_fileName(int nargs) {
 	FileObject *me = static_cast<FileObject *>(g_lingo->_currentMe.u.obj);
 
 	if (me->_filename) {
-		g_lingo->push(Datum(*me->_filename));
+		Common::String prefix = g_director->getTargetName() + '-';
+		Common::String res = *me->_filename;
+		if (res.hasPrefix(prefix)) {
+			res = Common::String(&me->_filename->c_str()[prefix.size() + 1]);
+		}
+
+		g_lingo->push(Datum(res));
 	} else {
 		warning("FileIO: No file open");
 		g_lingo->push(Datum(kErrorFileNotOpen));




More information about the Scummvm-git-logs mailing list