X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fgpu_config_panel.h;fp=src%2Fwx%2Fgpu_config_panel.h;h=7bc36352ef14bc3e5e71756ec513f0bfbdfcff5d;hb=05ca80a67cc99324ee6360b53d79b721ac0047d6;hp=1478434be01188699fa1f0cbe3418d27d927a9c2;hpb=7158e24762c77465b2827bfa8c96d2fe2368be37;p=dcpomatic.git diff --git a/src/wx/gpu_config_panel.h b/src/wx/gpu_config_panel.h index 1478434be..7bc36352e 100644 --- a/src/wx/gpu_config_panel.h +++ b/src/wx/gpu_config_panel.h @@ -1,127 +1,139 @@ #pragma once -static std::vector get_gpu_names(std::string binary, std::string filename) +static std::vector +get_gpu_names(std::string binary, std::string filename) { - // Execute the GPU listing program and redirect its output to a file - std::system((binary + " > " + filename).c_str()); - - std::vector gpu_names; - std::ifstream file(filename); - if (file.is_open()) - { - std::string line; - while (std::getline(file, line)) - gpu_names.push_back(line); - file.close(); - } - - return gpu_names; + // Execute the GPU listing program and redirect its output to a file + std::system((binary + " > " + filename).c_str()); + + std::vector gpu_names; + std::ifstream file(filename); + if (file.is_open()) { + std::string line; + while (std::getline(file, line)) + gpu_names.push_back(line); + file.close(); + } + + return gpu_names; } class GpuList : public wxPanel { public: - GpuList(wxPanel* parent) : wxPanel(parent, wxID_ANY), selection(0) { - comboBox = new wxComboBox(this, wxID_ANY, "", wxDefaultPosition, wxSize(400, -1)); - comboBox->Bind(wxEVT_COMBOBOX, &GpuList::OnComboBox, this); - update(); - - wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); - - sizer->Add(comboBox, 0, wxALIGN_CENTER_VERTICAL); // Vertically center the comboBox - - this->SetSizerAndFit(sizer); - } - void update(void) { - auto cfg = Config::instance(); - auto lister_binary = cfg->gpu_binary_location() + "/" + "gpu_lister"; - auto lister_file = cfg->gpu_binary_location () + "/" + "gpus.txt"; - if (boost::filesystem::exists(lister_binary)) { + GpuList(wxPanel* parent) + : wxPanel(parent, wxID_ANY) + , selection(0) + { + comboBox = new wxComboBox(this, wxID_ANY, "", wxDefaultPosition, wxSize(400, -1)); + comboBox->Bind(wxEVT_COMBOBOX, &GpuList::OnComboBox, this); + update(); + + wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); + + sizer->Add(comboBox, 0, wxALIGN_CENTER_VERTICAL); // Vertically center the comboBox + + this->SetSizerAndFit(sizer); + } + + void update(void) + { + auto cfg = Config::instance(); + auto lister_binary = cfg->gpu_binary_location() + "/" + "gpu_lister"; + auto lister_file = cfg->gpu_binary_location() + "/" + "gpus.txt"; + if (boost::filesystem::exists(lister_binary)) { auto gpu_names = get_gpu_names(lister_binary, lister_file); comboBox->Clear(); for (const auto& name : gpu_names) - comboBox->Append(name); - } - } - - int getSelection(void) { - return selection; - } - void setSelection(int sel) { - if ((int)comboBox->GetCount() > sel) - comboBox->SetSelection(sel); - } + comboBox->Append(name); + } + } + + int getSelection(void) + { + return selection; + } + + void setSelection(int sel) + { + if ((int)comboBox->GetCount() > sel) + comboBox->SetSelection(sel); + } private: - void OnComboBox([[maybe_unused]] wxCommandEvent& event) { - selection = comboBox->GetSelection(); - if (selection != wxNOT_FOUND) - Config::instance ()->set_selected_gpu(selection); - } - - wxComboBox* comboBox; - int selection; + void OnComboBox([[maybe_unused]] wxCommandEvent& event) + { + selection = comboBox->GetSelection(); + if (selection != wxNOT_FOUND) + Config::instance()->set_selected_gpu(selection); + } + + wxComboBox* comboBox; + int selection; }; class GPUPage : public Page { public: - GPUPage (wxSize panel_size, int border) - : Page (panel_size, border), - _enable_gpu(nullptr), _binary_location(nullptr), _gpu_list_control(nullptr) - {} + GPUPage(wxSize panel_size, int border) + : Page(panel_size, border) + , _enable_gpu(nullptr) + , _binary_location(nullptr) + , _gpu_list_control(nullptr) + { + } - wxString GetName () const override + wxString GetName() const override { return _("GPU"); } #ifdef DCPOMATIC_OSX - wxBitmap GetLargeIcon () const override + wxBitmap GetLargeIcon() const override { return wxBitmap(icon_path("tms"), wxBITMAP_TYPE_PNG); } #endif private: - void setup () override + void setup() override { - auto config = Config::instance (); + auto config = Config::instance(); - _enable_gpu = new CheckBox (_panel, _("Enable GPU Acceleration")); - _panel->GetSizer()->Add (_enable_gpu, 0, wxALL | wxEXPAND, _border); + _enable_gpu = new CheckBox(_panel, _("Enable GPU Acceleration")); + _panel->GetSizer()->Add(_enable_gpu, 0, wxALL | wxEXPAND, _border); - wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); - table->AddGrowableCol (1, 1); - _panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border); + wxFlexGridSizer* table = new wxFlexGridSizer(2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); + table->AddGrowableCol(1, 1); + _panel->GetSizer()->Add(table, 1, wxALL | wxEXPAND, _border); - add_label_to_sizer (table, _panel, _("Acceleration Binary Folder"), true, 0, wxLEFT | wxLEFT | wxALIGN_CENTRE_VERTICAL); - _binary_location = new wxDirPickerCtrl (_panel, wxDD_DIR_MUST_EXIST); - table->Add (_binary_location, 1, wxEXPAND); + add_label_to_sizer(table, _panel, _("Acceleration Binary Folder"), true, 0, wxLEFT | wxLEFT | wxALIGN_CENTRE_VERTICAL); + _binary_location = new wxDirPickerCtrl(_panel, wxDD_DIR_MUST_EXIST); + table->Add(_binary_location, 1, wxEXPAND); - add_label_to_sizer (table, _panel, _("GPU Selection"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); + add_label_to_sizer(table, _panel, _("GPU Selection"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _gpu_list_control = new GpuList(_panel); - table->Add (_gpu_list_control, 1, wxEXPAND); + table->Add(_gpu_list_control, 1, wxEXPAND); - add_label_to_sizer (table, _panel, _("License Server"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); - _server = new wxTextCtrl (_panel, wxID_ANY); - table->Add (_server, 1, wxEXPAND | wxALL); + add_label_to_sizer(table, _panel, _("License Server"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); + _server = new wxTextCtrl(_panel, wxID_ANY); + table->Add(_server, 1, wxEXPAND | wxALL); - add_label_to_sizer (table, _panel, _("Port"), false, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); - _port = new wxSpinCtrl (_panel, wxID_ANY); - _port->SetRange (0, 65535); - table->Add (_port); + add_label_to_sizer(table, _panel, _("Port"), false, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); + _port = new wxSpinCtrl(_panel, wxID_ANY); + _port->SetRange(0, 65535); + table->Add(_port); - add_label_to_sizer (table, _panel, _("License"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); - _license = new PasswordEntry (_panel); - table->Add (_license->get_panel(), 1, wxEXPAND | wxALL); + add_label_to_sizer(table, _panel, _("License"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); + _license = new PasswordEntry(_panel); + table->Add(_license->get_panel(), 1, wxEXPAND | wxALL); _enable_gpu->bind(&GPUPage::enable_gpu_changed, this); - _binary_location->Bind (wxEVT_DIRPICKER_CHANGED, boost::bind (&GPUPage::binary_location_changed, this)); - _server->Bind (wxEVT_TEXT, boost::bind(&GPUPage::server_changed, this)); - _port->Bind (wxEVT_SPINCTRL, boost::bind(&GPUPage::port_changed, this)); - _license->Changed.connect (boost::bind(&GPUPage::license_changed, this)); + _binary_location->Bind(wxEVT_DIRPICKER_CHANGED, boost::bind(&GPUPage::binary_location_changed, this)); + _server->Bind(wxEVT_TEXT, boost::bind(&GPUPage::server_changed, this)); + _port->Bind(wxEVT_SPINCTRL, boost::bind(&GPUPage::port_changed, this)); + _license->Changed.connect(boost::bind(&GPUPage::license_changed, this)); _binary_location->Enable(config->enable_gpu()); _gpu_list_control->Enable(config->enable_gpu()); @@ -130,25 +142,24 @@ private: _license->get_panel()->Enable(config->enable_gpu()); } - - void config_changed () override + void config_changed() override { - auto config = Config::instance (); + auto config = Config::instance(); - checked_set (_enable_gpu, config->enable_gpu()); - _binary_location->SetPath(config->gpu_binary_location ()); + checked_set(_enable_gpu, config->enable_gpu()); + _binary_location->SetPath(config->gpu_binary_location()); _gpu_list_control->update(); _gpu_list_control->setSelection(config->selected_gpu()); - checked_set (_server, config->gpu_license_server()); - checked_set (_port, config->gpu_license_port()); - checked_set (_license, config->gpu_license()); + checked_set(_server, config->gpu_license_server()); + checked_set(_port, config->gpu_license_port()); + checked_set(_license, config->gpu_license()); } - void enable_gpu_changed () + void enable_gpu_changed() { - auto config = Config::instance (); + auto config = Config::instance(); - config->set_enable_gpu (_enable_gpu->GetValue()); + config->set_enable_gpu(_enable_gpu->GetValue()); _binary_location->Enable(config->enable_gpu()); _gpu_list_control->Enable(config->enable_gpu()); _server->Enable(config->enable_gpu()); @@ -156,30 +167,30 @@ private: _license->get_panel()->Enable(config->enable_gpu()); } - void binary_location_changed () + void binary_location_changed() { - Config::instance()->set_gpu_binary_location (wx_to_std (_binary_location->GetPath ())); + Config::instance()->set_gpu_binary_location(wx_to_std(_binary_location->GetPath())); _gpu_list_control->update(); } - void server_changed () + void server_changed() { Config::instance()->set_gpu_license_server(wx_to_std(_server->GetValue())); } - void port_changed () + void port_changed() { Config::instance()->set_gpu_license_port(_port->GetValue()); } - void license_changed () + void license_changed() { Config::instance()->set_gpu_license(_license->get()); } CheckBox* _enable_gpu; wxDirPickerCtrl* _binary_location; - GpuList *_gpu_list_control; + GpuList* _gpu_list_control; wxTextCtrl* _server; wxSpinCtrl* _port; PasswordEntry* _license;