+
+void
+ScreensPanel::add_cinemas ()
+{
+ _root = _targets->AddRoot ("Foo");
+
+ BOOST_FOREACH (shared_ptr<Cinema> i, Config::instance()->cinemas ()) {
+ add_cinema (i);
+ }
+}
+
+void
+ScreensPanel::search_changed ()
+{
+ _targets->DeleteAllItems ();
+ _cinemas.clear ();
+ _screens.clear ();
+
+ add_cinemas ();
+
+ _ignore_selection_change = true;
+
+ for (CinemaMap::const_iterator i = _selected_cinemas.begin(); i != _selected_cinemas.end(); ++i) {
+ /* The wxTreeItemIds will now be different, so we must search by cinema */
+ CinemaMap::const_iterator j = _cinemas.begin ();
+ while (j != _cinemas.end() && j->second != i->second) {
+ ++j;
+ }
+
+ if (j != _cinemas.end ()) {
+ _targets->SelectItem (j->first);
+ }
+ }
+
+ for (ScreenMap::const_iterator i = _selected_screens.begin(); i != _selected_screens.end(); ++i) {
+ ScreenMap::const_iterator j = _screens.begin ();
+ while (j != _screens.end() && j->second != i->second) {
+ ++j;
+ }
+
+ if (j != _screens.end ()) {
+ _targets->SelectItem (j->first);
+ }
+ }
+
+ _ignore_selection_change = false;
+}