diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-04-29 22:03:37 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-04-29 22:14:25 +0200 |
| commit | 48c75fff036cb6960fc4c86317231914588a668d (patch) | |
| tree | 8c28c39d1a985cb27aa3c2a80a2a0b394013c83b /src/wx/timecode.h | |
| parent | fc18b92ca1cc8d7ec975fddc507fb97aacc6d17f (diff) | |
Add hinting to the seek dialogue; may be a nice fix for #1736.
Diffstat (limited to 'src/wx/timecode.h')
| -rw-r--r-- | src/wx/timecode.h | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/wx/timecode.h b/src/wx/timecode.h index bf658ba83..0c99d5361 100644 --- a/src/wx/timecode.h +++ b/src/wx/timecode.h @@ -81,20 +81,44 @@ public: checked_set (_fixed, t.timecode (fps)); } + void set_hint (T t, float fps) + { + int h; + int m; + int s; + int f; + t.split (fps, h, m, s, f); + + _hours->SetHint (std_to_wx(dcp::raw_convert<std::string>(h))); + _minutes->SetHint (std_to_wx(dcp::raw_convert<std::string>(m))); + _seconds->SetHint (std_to_wx(dcp::raw_convert<std::string>(s))); + _frames->SetHint (std_to_wx(dcp::raw_convert<std::string>(f))); + } + T get (float fps) const { T t; - std::string const h = wx_to_std (_hours->GetValue ()); + std::string const h = value_or_hint (_hours); t += T::from_seconds (dcp::raw_convert<int>(h.empty() ? "0" : h) * 3600); - std::string const m = wx_to_std (_minutes->GetValue()); + std::string const m = value_or_hint (_minutes); t += T::from_seconds (dcp::raw_convert<int>(m.empty() ? "0" : m) * 60); - std::string const s = wx_to_std (_seconds->GetValue()); + std::string const s = value_or_hint (_seconds); t += T::from_seconds (dcp::raw_convert<int>(s.empty() ? "0" : s)); - std::string const f = wx_to_std (_frames->GetValue()); + std::string const f = value_or_hint (_frames); t += T::from_seconds (dcp::raw_convert<double>(f.empty() ? "0" : f) / fps); return t; } + +private: + std::string value_or_hint (wxTextCtrl const * t) const + { + if (!t->GetValue().IsEmpty()) { + return wx_to_std (t->GetValue()); + } else { + return wx_to_std (t->GetHint()); + } + } }; #endif |
