Double-click to edit cinemas/screens.
authorCarl Hetherington <cth@carlh.net>
Mon, 16 Jan 2023 22:17:01 +0000 (23:17 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 16 Jan 2023 22:17:01 +0000 (23:17 +0100)
src/wx/screens_panel.cc
src/wx/screens_panel.h

index b794590326daf6947a0ae9e11175114a486a2a80..617ff9adc7cfd0a5674f3a758bf003adcad09910 100644 (file)
@@ -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> 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<Screen> 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);
+               }
+       }
+}
+
+
index b469c19e307dc49d32758588c33489cc32127f80..bdbac5141d3dd1e675c0cd72e75c92c2d5d33e27 100644 (file)
@@ -58,14 +58,17 @@ private:
        boost::optional<wxTreeListItem> add_screen (std::shared_ptr<Cinema>, std::shared_ptr<dcpomatic::Screen>);
        void add_cinema_clicked ();
        void edit_cinema_clicked ();
+       void edit_cinema(std::shared_ptr<Cinema> cinema);
        void remove_cinema_clicked ();
        void add_screen_clicked ();
        void edit_screen_clicked ();
+       void edit_screen(std::shared_ptr<dcpomatic::Screen> screen);
        void remove_screen_clicked ();
        void selection_changed_shim (wxTreeListEvent &);
        void selection_changed ();
        void search_changed ();
        void checkbox_changed (wxTreeListEvent& ev);
+       void item_activated(wxTreeListEvent& ev);
        std::shared_ptr<Cinema> cinema_for_operation () const;
        void set_screen_checked (wxTreeListItem item, bool checked);
        void setup_cinema_checked_state (wxTreeListItem screen);