X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Fwx%2Fscreens_panel.cc;h=617ff9adc7cfd0a5674f3a758bf003adcad09910;hp=b794590326daf6947a0ae9e11175114a486a2a80;hb=93664a46e226aad6cfb71749e3a83904102ea896;hpb=e3c48c1b52b7b61bd3fda7a6276eb697bad17977 diff --git a/src/wx/screens_panel.cc b/src/wx/screens_panel.cc index b79459032..617ff9adc 100644 --- a/src/wx/screens_panel.cc +++ b/src/wx/screens_panel.cc @@ -102,6 +102,7 @@ ScreensPanel::ScreensPanel (wxWindow* parent) _search->Bind (wxEVT_TEXT, boost::bind (&ScreensPanel::search_changed, this)); _targets->Bind (wxEVT_TREELIST_SELECTION_CHANGED, &ScreensPanel::selection_changed_shim, this); _targets->Bind (wxEVT_TREELIST_ITEM_CHECKED, &ScreensPanel::checkbox_changed, this); + _targets->Bind (wxEVT_TREELIST_ITEM_ACTIVATED, &ScreensPanel::item_activated, this); _add_cinema->Bind (wxEVT_BUTTON, boost::bind (&ScreensPanel::add_cinema_clicked, this)); _edit_cinema->Bind (wxEVT_BUTTON, boost::bind (&ScreensPanel::edit_cinema_clicked, this)); @@ -293,10 +294,15 @@ void ScreensPanel::edit_cinema_clicked () { auto cinema = cinema_for_operation (); - if (!cinema) { - return; + if (cinema) { + edit_cinema(cinema); } +} + +void +ScreensPanel::edit_cinema(shared_ptr cinema) +{ CinemaDialog dialog( GetParent(), _("Edit cinema"), cinema->name, cinema->emails, cinema->notes, cinema->utc_offset_hour(), cinema->utc_offset_minute() ); @@ -382,12 +388,15 @@ ScreensPanel::add_screen_clicked () void ScreensPanel::edit_screen_clicked () { - if (_selected_screens.size() != 1) { - return; + if (_selected_screens.size() == 1) { + edit_screen(_selected_screens[0]); } +} - auto edit_screen = _selected_screens[0]; +void +ScreensPanel::edit_screen(shared_ptr edit_screen) +{ ScreenDialog dialog( GetParent(), _("Edit screen"), edit_screen->name, @@ -700,3 +709,20 @@ ScreensPanel::config_changed(Config::Property property) clear_and_re_add(); } } + + +void +ScreensPanel::item_activated(wxTreeListEvent& ev) +{ + auto iter = _item_to_cinema.find(ev.GetItem()); + if (iter != _item_to_cinema.end()) { + edit_cinema(iter->second); + } else { + auto iter = _item_to_screen.find(ev.GetItem()); + if (iter != _item_to_screen.end()) { + edit_screen(iter->second); + } + } +} + +