#include <vector>
+using std::string;
using std::vector;
using boost::optional;
+wxString initial_path(
+ std::string initial_path_key,
+ optional<boost::filesystem::path> override_path
+ )
+{
+ if (override_path) {
+ return std_to_wx(override_path->string());
+ }
+
+ return std_to_wx(Config::instance()->initial_path(initial_path_key).get_value_or(home_directory()).string());
+}
+
+
FileDialog::FileDialog(
wxWindow* parent,
wxString title,
wxString allowed,
long style,
std::string initial_path_key,
+ boost::optional<std::string> initial_filename,
optional<boost::filesystem::path> override_path
)
: wxFileDialog(
parent,
title,
- std_to_wx(
- override_path.get_value_or(
- Config::instance()->initial_path(initial_path_key).get_value_or(home_directory())
- ).string()),
- wxEmptyString,
+ initial_path(initial_path_key, override_path),
+ std_to_wx(initial_filename.get_value_or("")),
allowed,
style
)
, _initial_path_key(initial_path_key)
+ , _multiple(style & wxFD_MULTIPLE)
{
}
return false;
}
- auto p = paths();
- DCPOMATIC_ASSERT(!p.empty());
- Config::instance()->set_initial_path(_initial_path_key, p[0].parent_path());
+ if (_multiple) {
+ auto p = paths();
+ DCPOMATIC_ASSERT(!p.empty());
+ Config::instance()->set_initial_path(_initial_path_key, p[0].parent_path());
+ } else {
+ Config::instance()->set_initial_path(_initial_path_key, path().parent_path());
+ }
+
return true;
}