#include "markers.h"
#include "markers_panel.h"
#include "wx_util.h"
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
#include <wx/graphics.h>
#include <wx/tipwin.h>
+LIBDCP_ENABLE_WARNINGS
#include <boost/bind/bind.hpp>
#include <boost/version.hpp>
static constexpr auto line_to_label_gap = 2;
-MarkersPanel::MarkersPanel (wxWindow* parent, weak_ptr<FilmViewer> viewer)
+MarkersPanel::MarkersPanel(wxWindow* parent, FilmViewer& viewer)
: wxPanel (parent, wxID_ANY, wxDefaultPosition, wxSize(-1, 16))
, _viewer (viewer)
{
Bind (wxEVT_MENU, boost::bind(&MarkersPanel::move_marker_to_current_position, this), ID_move_marker_to_current_position);
Bind (wxEVT_MENU, boost::bind(&MarkersPanel::remove_marker, this), ID_remove_marker);
- Bind (wxEVT_MENU, boost::bind(&MarkersPanel::add_marker, this, _1), ID_add_base, ID_add_base + all_markers().size());
+ Bind (wxEVT_MENU, boost::bind(&MarkersPanel::add_marker, this, _1), ID_add_base, ID_add_base + all_editable_markers().size());
}
MarkersPanel::mouse_left_down ()
{
if (_over) {
- auto viewer = _viewer.lock ();
- DCPOMATIC_ASSERT (viewer);
- viewer->seek (_markers[*_over].time, true);
+ _viewer.seek(_markers[*_over].time, true);
}
}
}
auto add_marker = new wxMenu ();
- for (auto const& marker: all_markers()) {
+ for (auto const& marker: all_editable_markers()) {
add_marker->Append (static_cast<int>(ID_add_base) + static_cast<int>(marker.second), marker.first);
}
menu.Append (ID_add_marker, _("Add or move marker to current position"), add_marker);
MarkersPanel::move_marker_to_current_position ()
{
auto film = _film.lock ();
- auto viewer = _viewer.lock ();
- if (!film || !viewer || !_menu_marker) {
+ if (!film || !_menu_marker) {
return;
}
- film->set_marker (*_menu_marker, viewer->position());
+ film->set_marker(*_menu_marker, _viewer.position());
}
MarkersPanel::remove_marker ()
{
auto film = _film.lock ();
- auto viewer = _viewer.lock ();
- if (!film || !viewer || !_menu_marker) {
+ if (!film || !_menu_marker) {
return;
}
- film->unset_marker (*_menu_marker);
+ film->unset_marker(*_menu_marker);
}
MarkersPanel::add_marker (wxCommandEvent& ev)
{
auto film = _film.lock ();
- auto viewer = _viewer.lock ();
- if (!film || !viewer) {
+ if (!film) {
return;
}
auto marker = static_cast<dcp::Marker>(ev.GetId() - ID_add_base);
- film->set_marker (marker, viewer->position());
+ film->set_marker(marker, _viewer.position());
}