* Use unique_ptr for Actions instead of manual memory management
* Use unique_ptr in KeywordDatabase
* Use unique_ptr instead of shared_ptr for file formats
* Don't pass shared_ptr to Reader/Writer, use references instead
Also
* Switch to C++17 so we can use map::try_emplace
This means we no longer need 8 different functions for different numbers of arguments, and non-const references can now also be passed to constructors without problems.
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1443 0fc631ac-6414-0410-93d0-97cfa31319b6
Semi-fix bug #6 (does not work if the zipfile was loaded from a directory)
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1439 0fc631ac-6414-0410-93d0-97cfa31319b6
MSE now handles opening more gracefully - can handle directories and failures
Changed behavior to always save cards to separate files with intent to add VCS later (note: shouldn't do this for zip, but can't see a good way to approach this)
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1388 0fc631ac-6414-0410-93d0-97cfa31319b6
- use a single button for install/upgrade
- show versions of installed package and installer
Named actions in enum PACKAGE_ACT_* to avoid confusion with the status enum.
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1186 0fc631ac-6414-0410-93d0-97cfa31319b6
Made a CATCH_ALL_ERRORS macro containing the common catch statements.
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1034 0fc631ac-6414-0410-93d0-97cfa31319b6
For now, everything is considered blessed, because we are not yet using installers everywhere.
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@912 0fc631ac-6414-0410-93d0-97cfa31319b6
Now all C++ files need to #include <util/prec.hpp>
That is why all .cpp files are touched by this commit
Many changes to installers and update checking:
- the window is now called PackagesWindow, in a new source file
- update checking is now independent from the PackagesWindow. For update checking only a list of package versions are needed (vector<PackageDependency>). This is much less information to download at each startup.
- the list of available packages is now a list of available Installers, since an installer can contain multiple packages.
- moved the logic of dependency checking etc. to data/installer
- moved the actual installation to util/io/package_manager
- moved directory iteration/creation logic to util/file_utils
- added PackageDirectory: the local and global package directory now have their own object (was part of PackageManager)
- added PackageVersion: for detecting if a package has been modified after it was installed.
- added PackageDescription: description/header of a package. Basicly the same as what Packaged provides.
- added DownloadableInstaller: where to find an insaller, what does it contain?
- added InstallablePackage: brining it all together: installer, package, status, action.
Current status: the insaller is currently broken in a few places, more on that soon.
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@792 0fc631ac-6414-0410-93d0-97cfa31319b6