summaryrefslogtreecommitdiff
path: root/src/wx
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-05-01 23:23:52 +0200
committerCarl Hetherington <cth@carlh.net>2025-06-03 22:46:26 +0200
commit9c9e2e1eba91d074d5477549a5230555c6edcedf (patch)
tree3398fb47ea8fd3db14f4f3647f53f73441193dd0 /src/wx
parentcd2dffcd903a2a1d9f2b452bdd3cfec45cebe614 (diff)
Support specification of maximum simultaneous connections for upload.
Diffstat (limited to 'src/wx')
-rw-r--r--src/wx/upload_destination_dialog.cc30
-rw-r--r--src/wx/upload_destination_dialog.h4
2 files changed, 34 insertions, 0 deletions
diff --git a/src/wx/upload_destination_dialog.cc b/src/wx/upload_destination_dialog.cc
index d4da24bb0..64509f4da 100644
--- a/src/wx/upload_destination_dialog.cc
+++ b/src/wx/upload_destination_dialog.cc
@@ -21,6 +21,7 @@
#include "check_box.h"
#include "dcpomatic_choice.h"
+#include "dcpomatic_spin_ctrl.h"
#include "password_entry.h"
#include "upload_destination_dialog.h"
#include "wx_util.h"
@@ -30,6 +31,7 @@
using std::shared_ptr;
using std::string;
using std::vector;
+using boost::optional;
UploadDestinationDialog::UploadDestinationDialog(wxWindow* parent)
@@ -41,6 +43,9 @@ UploadDestinationDialog::UploadDestinationDialog(wxWindow* parent)
_protocol = add(new Choice(this));
_passive = add(new CheckBox(this, _("Passive")));
add_spacer();
+ _limit_connections = add(new CheckBox(this, _("Limit connections")));
+ _maximum_connections = add(new SpinCtrl(this, DCPOMATIC_SPIN_CTRL_WIDTH), 0);
+ _maximum_connections->SetRange(1, 100);
add(_("Host"), true);
_host = add(new wxTextCtrl(this, wxID_ANY));
add(_("Path"), true);
@@ -56,6 +61,7 @@ UploadDestinationDialog::UploadDestinationDialog(wxWindow* parent)
_protocol->add_entry(_("FTPS"), file_transfer_protocol_to_string(FileTransferProtocol::FTPS));
_protocol->bind(&UploadDestinationDialog::protocol_changed, this);
+ _limit_connections->bind(&UploadDestinationDialog::limit_connections_changed, this);
layout();
@@ -63,6 +69,9 @@ UploadDestinationDialog::UploadDestinationDialog(wxWindow* parent)
_protocol->set(0);
protocol_changed();
+ _limit_connections->set(false);
+ _maximum_connections->set(5);
+ limit_connections_changed();
}
@@ -76,19 +85,34 @@ UploadDestinationDialog::protocol_changed()
void
+UploadDestinationDialog::limit_connections_changed()
+{
+ _maximum_connections->Enable(_limit_connections->get());
+}
+
+
+void
UploadDestinationDialog::set(UploadDestination const& destination)
{
checked_set(_name, destination.name);
checked_set(_protocol, static_cast<int>(destination.protocol));
checked_set(_passive, destination.passive_ftp);
+ checked_set(_limit_connections, static_cast<bool>(destination.maximum_connections));
+ if (_limit_connections->get()) {
+ checked_set(_maximum_connections, *destination.maximum_connections);
+ } else {
+ checked_set(_maximum_connections, 5);
+ }
checked_set(_host, destination.host);
checked_set(_path, destination.path);
checked_set(_user, destination.user);
checked_set(_password, destination.password);
protocol_changed();
+ limit_connections_changed();
}
+
vector<UploadDestination>
UploadDestinationDialog::get () const
{
@@ -97,11 +121,17 @@ UploadDestinationDialog::get () const
protocol = file_transfer_protocol_from_string(*protocol_name);
}
+ optional<int> max;
+ if (_limit_connections->get()) {
+ max = _maximum_connections->get();
+ }
+
return {
UploadDestination(
wx_to_std(_name->GetValue()),
protocol,
_passive->get(),
+ max,
wx_to_std(_host->GetValue()),
wx_to_std(_path->GetValue()),
wx_to_std(_user->GetValue()),
diff --git a/src/wx/upload_destination_dialog.h b/src/wx/upload_destination_dialog.h
index 62abafe0f..1ebe13552 100644
--- a/src/wx/upload_destination_dialog.h
+++ b/src/wx/upload_destination_dialog.h
@@ -27,6 +27,7 @@
class CheckBox;
class Choice;
class PasswordEntry;
+class SpinCtrl;
class wxTextCtrl;
@@ -40,10 +41,13 @@ public:
private:
void protocol_changed();
+ void limit_connections_changed();
wxTextCtrl* _name;
Choice* _protocol;
CheckBox* _passive;
+ CheckBox* _limit_connections;
+ SpinCtrl* _maximum_connections;
wxTextCtrl* _host;
wxTextCtrl* _path;
wxTextCtrl* _user;