projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Pulse the progress bar 'automatically' if we haven't had a progress update for a...
[dcpomatic.git]
/
src
/
wx
/
screens_panel.cc
diff --git
a/src/wx/screens_panel.cc
b/src/wx/screens_panel.cc
index 02b51f860ee290d5563b7269f525fe2a1b62c1ab..8d631ce905257d7ef625c34c74abc81459d19fb5 100644
(file)
--- a/
src/wx/screens_panel.cc
+++ b/
src/wx/screens_panel.cc
@@
-1,5
+1,5
@@
/*
/*
- Copyright (C) 2015-20
18
Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2015-20
21
Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
This file is part of DCP-o-matic.
@@
-18,6
+18,7
@@
*/
*/
+
#include "screens_panel.h"
#include "wx_util.h"
#include "cinema_dialog.h"
#include "screens_panel.h"
#include "wx_util.h"
#include "cinema_dialog.h"
@@
-27,16
+28,19
@@
#include "lib/cinema.h"
#include "lib/screen.h"
#include "lib/cinema.h"
#include "lib/screen.h"
+
using std::list;
using std::pair;
using std::cout;
using std::map;
using std::string;
using std::make_pair;
using std::list;
using std::pair;
using std::cout;
using std::map;
using std::string;
using std::make_pair;
+using std::make_shared;
using std::shared_ptr;
using boost::optional;
using namespace dcpomatic;
using std::shared_ptr;
using boost::optional;
using namespace dcpomatic;
+
ScreensPanel::ScreensPanel (wxWindow* parent)
: wxPanel (parent, wxID_ANY)
, _ignore_selection_change (false)
ScreensPanel::ScreensPanel (wxWindow* parent)
: wxPanel (parent, wxID_ANY)
, _ignore_selection_change (false)
@@
-56,13
+60,13
@@
ScreensPanel::ScreensPanel (wxWindow* parent)
#endif
sizer->Add (_search, 0, wxBOTTOM, DCPOMATIC_SIZER_GAP);
#endif
sizer->Add (_search, 0, wxBOTTOM, DCPOMATIC_SIZER_GAP);
-
wxBoxSizer*
targets = new wxBoxSizer (wxHORIZONTAL);
- _targets = new
wxTreeCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_HIDE_ROOT | wxTR_MULTIPLE | wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT
);
+
auto
targets = new wxBoxSizer (wxHORIZONTAL);
+ _targets = new
TreeCtrl (this
);
targets->Add (_targets, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_GAP);
add_cinemas ();
targets->Add (_targets, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_GAP);
add_cinemas ();
-
wxBoxSizer*
target_buttons = new wxBoxSizer (wxVERTICAL);
+
auto
target_buttons = new wxBoxSizer (wxVERTICAL);
_add_cinema = new Button (this, _("Add Cinema..."));
target_buttons->Add (_add_cinema, 1, wxEXPAND | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
_add_cinema = new Button (this, _("Add Cinema..."));
target_buttons->Add (_add_cinema, 1, wxEXPAND | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
@@
-95,11
+99,13
@@
ScreensPanel::ScreensPanel (wxWindow* parent)
SetSizer (sizer);
}
SetSizer (sizer);
}
+
ScreensPanel::~ScreensPanel ()
{
_targets->Unbind (wxEVT_TREE_SEL_CHANGED, &ScreensPanel::selection_changed_shim, this);
}
ScreensPanel::~ScreensPanel ()
{
_targets->Unbind (wxEVT_TREE_SEL_CHANGED, &ScreensPanel::selection_changed_shim, this);
}
+
void
ScreensPanel::setup_sensitivity ()
{
void
ScreensPanel::setup_sensitivity ()
{
@@
-118,18
+124,18
@@
ScreensPanel::setup_sensitivity ()
optional<wxTreeItemId>
ScreensPanel::add_cinema (shared_ptr<Cinema> c)
{
optional<wxTreeItemId>
ScreensPanel::add_cinema (shared_ptr<Cinema> c)
{
-
string
search = wx_to_std (_search->GetValue ());
+
auto
search = wx_to_std (_search->GetValue ());
transform (search.begin(), search.end(), search.begin(), ::tolower);
if (!search.empty ()) {
transform (search.begin(), search.end(), search.begin(), ::tolower);
if (!search.empty ()) {
-
string
name = c->name;
+
auto
name = c->name;
transform (name.begin(), name.end(), name.begin(), ::tolower);
if (name.find (search) == string::npos) {
return optional<wxTreeItemId>();
}
}
transform (name.begin(), name.end(), name.begin(), ::tolower);
if (name.find (search) == string::npos) {
return optional<wxTreeItemId>();
}
}
-
wxTreeItemId
id = _targets->AppendItem(_root, std_to_wx(c->name));
+
auto
id = _targets->AppendItem(_root, std_to_wx(c->name));
_cinemas[id] = c;
_cinemas[id] = c;
@@
-146,27
+152,28
@@
ScreensPanel::add_cinema (shared_ptr<Cinema> c)
optional<wxTreeItemId>
ScreensPanel::add_screen (shared_ptr<Cinema> c, shared_ptr<Screen> s)
{
optional<wxTreeItemId>
ScreensPanel::add_screen (shared_ptr<Cinema> c, shared_ptr<Screen> s)
{
-
CinemaMap::const_iterator
i = _cinemas.begin();
+
auto
i = _cinemas.begin();
while (i != _cinemas.end() && i->second != c) {
++i;
}
if (i == _cinemas.end()) {
while (i != _cinemas.end() && i->second != c) {
++i;
}
if (i == _cinemas.end()) {
- return
optional<wxTreeItemId> ()
;
+ return
{}
;
}
_screens[_targets->AppendItem (i->first, std_to_wx (s->name))] = s;
return i->first;
}
}
_screens[_targets->AppendItem (i->first, std_to_wx (s->name))] = s;
return i->first;
}
+
void
ScreensPanel::add_cinema_clicked ()
{
void
ScreensPanel::add_cinema_clicked ()
{
-
CinemaDialog*
d = new CinemaDialog (GetParent(), _("Add Cinema"));
+
auto
d = new CinemaDialog (GetParent(), _("Add Cinema"));
if (d->ShowModal () == wxID_OK) {
if (d->ShowModal () == wxID_OK) {
-
shared_ptr<Cinema> c (new Cinema (d->name(), d->emails(), d->notes(), d->utc_offset_hour(), d->utc_offset_minute()
));
+
auto c = make_shared<Cinema>(d->name(), d->emails(), d->notes(), d->utc_offset_hour(), d->utc_offset_minute(
));
Config::instance()->add_cinema (c);
Config::instance()->add_cinema (c);
-
optional<wxTreeItemId>
id = add_cinema (c);
+
auto
id = add_cinema (c);
if (id) {
_targets->Unselect ();
_targets->SelectItem (*id);
if (id) {
_targets->Unselect ();
_targets->SelectItem (*id);
@@
-176,6
+183,7
@@
ScreensPanel::add_cinema_clicked ()
d->Destroy ();
}
d->Destroy ();
}
+
void
ScreensPanel::edit_cinema_clicked ()
{
void
ScreensPanel::edit_cinema_clicked ()
{
@@
-183,13
+191,13
@@
ScreensPanel::edit_cinema_clicked ()
return;
}
return;
}
-
pair<wxTreeItemId, shared_ptr<Cinema> >
c = *_selected_cinemas.begin();
+
auto
c = *_selected_cinemas.begin();
-
CinemaDialog*
d = new CinemaDialog (
+
auto
d = new CinemaDialog (
GetParent(), _("Edit cinema"), c.second->name, c.second->emails, c.second->notes, c.second->utc_offset_hour(), c.second->utc_offset_minute()
);
GetParent(), _("Edit cinema"), c.second->name, c.second->emails, c.second->notes, c.second->utc_offset_hour(), c.second->utc_offset_minute()
);
- if (d->ShowModal
() == wxID_OK) {
+ if (d->ShowModal() == wxID_OK) {
c.second->name = d->name ();
c.second->emails = d->emails ();
c.second->notes = d->notes ();
c.second->name = d->name ();
c.second->emails = d->emails ();
c.second->notes = d->notes ();
@@
-202,6
+210,7
@@
ScreensPanel::edit_cinema_clicked ()
d->Destroy ();
}
d->Destroy ();
}
+
void
ScreensPanel::remove_cinema_clicked ()
{
void
ScreensPanel::remove_cinema_clicked ()
{
@@
-215,14
+224,15
@@
ScreensPanel::remove_cinema_clicked ()
}
}
}
}
- for (
CinemaMap::iterator i = _selected_cinemas.begin(); i != _selected_cinemas.end(); ++i
) {
- Config::instance()->remove_cinema (i
->
second);
- _targets->Delete (i
->
first);
+ for (
auto const& i: _selected_cinemas
) {
+ Config::instance()->remove_cinema (i
.
second);
+ _targets->Delete (i
.
first);
}
selection_changed ();
}
}
selection_changed ();
}
+
void
ScreensPanel::add_screen_clicked ()
{
void
ScreensPanel::add_screen_clicked ()
{
@@
-230,9
+240,9
@@
ScreensPanel::add_screen_clicked ()
return;
}
return;
}
-
shared_ptr<Cinema>
c = _selected_cinemas.begin()->second;
+
auto
c = _selected_cinemas.begin()->second;
-
ScreenDialog*
d = new ScreenDialog (GetParent(), _("Add Screen"));
+
auto
d = new ScreenDialog (GetParent(), _("Add Screen"));
if (d->ShowModal () != wxID_OK) {
d->Destroy ();
return;
if (d->ShowModal () != wxID_OK) {
d->Destroy ();
return;
@@
-251,9
+261,9
@@
ScreensPanel::add_screen_clicked ()
}
}
}
}
-
shared_ptr<Screen> s (new Screen (d->name(), d->notes(), d->recipient(), d->trusted_devices()
));
+
auto s = std::make_shared<Screen>(d->name(), d->notes(), d->recipient(), d->trusted_devices(
));
c->add_screen (s);
c->add_screen (s);
-
optional<wxTreeItemId>
id = add_screen (c, s);
+
auto
id = add_screen (c, s);
if (id) {
_targets->Expand (id.get ());
}
if (id) {
_targets->Expand (id.get ());
}
@@
-263,6
+273,7
@@
ScreensPanel::add_screen_clicked ()
d->Destroy ();
}
d->Destroy ();
}
+
void
ScreensPanel::edit_screen_clicked ()
{
void
ScreensPanel::edit_screen_clicked ()
{
@@
-270,15
+281,15
@@
ScreensPanel::edit_screen_clicked ()
return;
}
return;
}
-
pair<wxTreeItemId, shared_ptr<Screen> >
s = *_selected_screens.begin();
+
auto
s = *_selected_screens.begin();
-
ScreenDialog*
d = new ScreenDialog (GetParent(), _("Edit screen"), s.second->name, s.second->notes, s.second->recipient, s.second->trusted_devices);
- if (d->ShowModal
() != wxID_OK) {
+
auto
d = new ScreenDialog (GetParent(), _("Edit screen"), s.second->name, s.second->notes, s.second->recipient, s.second->trusted_devices);
+ if (d->ShowModal() != wxID_OK) {
d->Destroy ();
return;
}
d->Destroy ();
return;
}
-
shared_ptr<Cinema>
c = s.second->cinema;
+
auto
c = s.second->cinema;
for (auto i: c->screens ()) {
if (i != s.second && i->name == d->name()) {
error_dialog (
for (auto i: c->screens ()) {
if (i != s.second && i->name == d->name()) {
error_dialog (
@@
-302,6
+313,7
@@
ScreensPanel::edit_screen_clicked ()
d->Destroy ();
}
d->Destroy ();
}
+
void
ScreensPanel::remove_screen_clicked ()
{
void
ScreensPanel::remove_screen_clicked ()
{
@@
-315,11
+327,11
@@
ScreensPanel::remove_screen_clicked ()
}
}
}
}
- for (
ScreenMap::iterator i = _selected_screens.begin(); i != _selected_screens.end(); ++i
) {
-
CinemaMap::iterator
j = _cinemas.begin ();
+ for (
auto const& i: _selected_screens
) {
+
auto
j = _cinemas.begin ();
while (j != _cinemas.end ()) {
while (j != _cinemas.end ()) {
-
list<shared_ptr<Screen> >
sc = j->second->screens ();
- if (find (sc.begin(), sc.end(), i
->
second) != sc.end ()) {
+
auto
sc = j->second->screens ();
+ if (find (sc.begin(), sc.end(), i
.
second) != sc.end ()) {
break;
}
break;
}
@@
-330,27
+342,27
@@
ScreensPanel::remove_screen_clicked ()
continue;
}
continue;
}
- j->second->remove_screen (i
->
second);
- _targets->Delete (i
->
first);
+ j->second->remove_screen (i
.
second);
+ _targets->Delete (i
.
first);
}
Config::instance()->changed (Config::CINEMAS);
}
}
Config::instance()->changed (Config::CINEMAS);
}
-list<shared_ptr<Screen> >
+
+list<shared_ptr<Screen>>
ScreensPanel::screens () const
{
ScreensPanel::screens () const
{
- list<shared_ptr<Screen>
> s;
+ list<shared_ptr<Screen>> s;
- for (CinemaMap::const_iterator i = _selected_cinemas.begin(); i != _selected_cinemas.end(); ++i) {
- list<shared_ptr<Screen> > sc = i->second->screens ();
- for (list<shared_ptr<Screen> >::const_iterator j = sc.begin(); j != sc.end(); ++j) {
- s.push_back (*j);
+ for (auto const& i: _selected_cinemas) {
+ for (auto j: i.second->screens()) {
+ s.push_back (j);
}
}
}
}
- for (
ScreenMap::const_iterator i = _selected_screens.begin(); i != _selected_screens.end(); ++i
) {
- s.push_back (i
->
second);
+ for (
auto const& i: _selected_screens
) {
+ s.push_back (i
.
second);
}
s.sort ();
}
s.sort ();
@@
-359,12
+371,14
@@
ScreensPanel::screens () const
return s;
}
return s;
}
+
void
ScreensPanel::selection_changed_shim (wxTreeEvent &)
{
selection_changed ();
}
void
ScreensPanel::selection_changed_shim (wxTreeEvent &)
{
selection_changed ();
}
+
void
ScreensPanel::selection_changed ()
{
void
ScreensPanel::selection_changed ()
{
@@
-379,11
+393,11
@@
ScreensPanel::selection_changed ()
_selected_screens.clear ();
for (size_t i = 0; i < s.GetCount(); ++i) {
_selected_screens.clear ();
for (size_t i = 0; i < s.GetCount(); ++i) {
-
CinemaMap::const_iterator
j = _cinemas.find (s[i]);
+
auto
j = _cinemas.find (s[i]);
if (j != _cinemas.end ()) {
_selected_cinemas[j->first] = j->second;
}
if (j != _cinemas.end ()) {
_selected_cinemas[j->first] = j->second;
}
-
ScreenMap::const_iterator
k = _screens.find (s[i]);
+
auto
k = _screens.find (s[i]);
if (k != _screens.end ()) {
_selected_screens[k->first] = k->second;
}
if (k != _screens.end ()) {
_selected_screens[k->first] = k->second;
}
@@
-393,6
+407,7
@@
ScreensPanel::selection_changed ()
ScreensChanged ();
}
ScreensChanged ();
}
+
void
ScreensPanel::add_cinemas ()
{
void
ScreensPanel::add_cinemas ()
{
@@
-403,6
+418,7
@@
ScreensPanel::add_cinemas ()
}
}
}
}
+
void
ScreensPanel::search_changed ()
{
void
ScreensPanel::search_changed ()
{
@@
-414,28
+430,39
@@
ScreensPanel::search_changed ()
_ignore_selection_change = true;
_ignore_selection_change = true;
- for (
CinemaMap::const_iterator i = _selected_cinemas.begin(); i != _selected_cinemas.end(); ++i
) {
+ for (
auto const& i: _selected_cinemas
) {
/* The wxTreeItemIds will now be different, so we must search by cinema */
/* 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) {
+
auto
j = _cinemas.begin ();
+ while (j != _cinemas.end() && j->second != i
.
second) {
++j;
}
++j;
}
- if (j != _cinemas.end
()) {
+ if (j != _cinemas.end()) {
_targets->SelectItem (j->first);
}
}
_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) {
+ for (
auto const& i: _selected_screens
) {
+
auto
j = _screens.begin ();
+ while (j != _screens.end() && j->second != i
.
second) {
++j;
}
++j;
}
- if (j != _screens.end
()) {
+ if (j != _screens.end()) {
_targets->SelectItem (j->first);
}
}
_ignore_selection_change = false;
}
_targets->SelectItem (j->first);
}
}
_ignore_selection_change = false;
}
+
+
+wxIMPLEMENT_DYNAMIC_CLASS (TreeCtrl, wxTreeCtrl);
+
+
+int
+TreeCtrl::OnCompareItems (wxTreeItemId const& a, wxTreeItemId const& b)
+{
+ return strcoll (wx_to_std(GetItemText(a)).c_str(), wx_to_std(GetItemText(b)).c_str());
+}
+