Skip to content

Commit

Permalink
Renamed GOMidiListDialog to GOMidiObjectsDialog
Browse files Browse the repository at this point in the history
Renamed GOObjectsLists members

Extracted method GOMidiObjectsDialog::ConfigureSelectedObject
  • Loading branch information
oleg68 committed Feb 8, 2025
1 parent 81edaa5 commit 9a7ead0
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 75 deletions.
2 changes: 1 addition & 1 deletion src/grandorgue/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ gui/dialogs/settings/GOSettingsOptions.cpp
gui/dialogs/settings/GOSettingsOrgans.cpp
gui/dialogs/settings/GOSettingsReverb.cpp
gui/dialogs/settings/GOSettingsTemperaments.cpp
gui/dialogs/GOMidiListDialog.cpp
gui/dialogs/GOMidiObjectsDialog.cpp
gui/dialogs/GONewReleaseDialog.cpp
gui/dialogs/GOOrganSettingsDialog.cpp
gui/dialogs/GOProgressDialog.cpp
Expand Down
6 changes: 3 additions & 3 deletions src/grandorgue/GODocument.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
* Copyright 2006 Milan Digital Audio LLC
* Copyright 2009-2024 GrandOrgue contributors (see AUTHORS)
* Copyright 2009-2025 GrandOrgue contributors (see AUTHORS)
* License GPL-2.0 or later
* (https://www.gnu.org/licenses/old-licenses/gpl-2.0.html).
*/
Expand All @@ -11,7 +11,7 @@

#include "config/GOConfig.h"
#include "document-base/GOView.h"
#include "gui/dialogs/GOMidiListDialog.h"
#include "gui/dialogs/GOMidiObjectstDialog.h"
#include "gui/dialogs/GOOrganSettingsDialog.h"
#include "gui/dialogs/midi-event/GOMidiEventDialog.h"
#include "gui/frames/GOFrame.h"
Expand Down Expand Up @@ -182,7 +182,7 @@ void GODocument::ShowMidiList() {
registerWindow(
GODocument::MIDI_LIST,
NULL,
new GOMidiListDialog(
new GOMidiObjectsDialog(
this,
NULL,
m_OrganController->GetConfig().m_DialogSizes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* (https://www.gnu.org/licenses/old-licenses/gpl-2.0.html).
*/

#include "GOMidiListDialog.h"
#include "GOMidiObjectstDialog.h"

#include <wx/button.h>
#include <wx/sizer.h>
Expand All @@ -24,18 +24,18 @@ enum {
ID_BUTTON_LAST = ID_BUTTON + 2,
};

BEGIN_EVENT_TABLE(GOMidiListDialog, GOSimpleDialog)
EVT_GRID_CMD_SELECT_CELL(ID_LIST, GOMidiListDialog::OnObjectClick)
EVT_GRID_CMD_CELL_LEFT_DCLICK(ID_LIST, GOMidiListDialog::OnObjectDoubleClick)
EVT_BUTTON(ID_STATUS, GOMidiListDialog::OnStatus)
EVT_BUTTON(ID_EDIT, GOMidiListDialog::OnEdit)
BEGIN_EVENT_TABLE(GOMidiObjectsDialog, GOSimpleDialog)
EVT_GRID_CMD_SELECT_CELL(ID_LIST, GOMidiObjectsDialog::OnSelectCell)
EVT_GRID_CMD_CELL_LEFT_DCLICK(ID_LIST, GOMidiObjectsDialog::OnObjectDoubleClick)
EVT_BUTTON(ID_EDIT, GOMidiObjectsDialog::OnConfigureButton)
EVT_BUTTON(ID_STATUS, GOMidiObjectsDialog::OnStatusButton)
EVT_COMMAND_RANGE(
ID_BUTTON, ID_BUTTON_LAST, wxEVT_BUTTON, GOMidiListDialog::OnButton)
ID_BUTTON, ID_BUTTON_LAST, wxEVT_BUTTON, GOMidiObjectsDialog::OnActionButton)
END_EVENT_TABLE()

enum { GRID_COL_TYPE = 0, GRID_COL_ELEMENT };

GOMidiListDialog::GOMidiListDialog(
GOMidiObjectsDialog::GOMidiObjectsDialog(
GODocumentBase *doc,
wxWindow *parent,
GODialogSizeSet &dialogSizes,
Expand All @@ -53,33 +53,34 @@ GOMidiListDialog::GOMidiListDialog(
wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
topSizer->AddSpacer(5);

m_Objects = new GOGrid(this, ID_LIST, wxDefaultPosition, wxSize(250, 200));
m_Objects->CreateGrid(0, 2, wxGrid::wxGridSelectRows);
m_Objects->HideRowLabels();
m_Objects->EnableEditing(false);
m_Objects->SetColLabelValue(GRID_COL_TYPE, _("Type"));
m_Objects->SetColLabelValue(GRID_COL_ELEMENT, _("Element"));
m_Objects->SetColSize(GRID_COL_TYPE, 100);
m_Objects->SetColSize(GRID_COL_ELEMENT, 100);
m_ObjectsGrid
= new GOGrid(this, ID_LIST, wxDefaultPosition, wxSize(250, 200));
m_ObjectsGrid->CreateGrid(0, 2, wxGrid::wxGridSelectRows);
m_ObjectsGrid->HideRowLabels();
m_ObjectsGrid->EnableEditing(false);
m_ObjectsGrid->SetColLabelValue(GRID_COL_TYPE, _("Type"));
m_ObjectsGrid->SetColLabelValue(GRID_COL_ELEMENT, _("Element"));
m_ObjectsGrid->SetColSize(GRID_COL_TYPE, 100);
m_ObjectsGrid->SetColSize(GRID_COL_ELEMENT, 100);

topSizer->Add(m_Objects, 1, wxEXPAND | wxALL, 5);
topSizer->Add(m_ObjectsGrid, 1, wxEXPAND | wxALL, 5);

wxBoxSizer *sizer = new wxBoxSizer(wxHORIZONTAL);
for (unsigned id = ID_BUTTON; id <= ID_BUTTON_LAST; id++) {
wxButton *button = new wxButton(this, id, wxEmptyString);
sizer->Add(button, 0, id == ID_BUTTON ? wxRESERVE_SPACE_EVEN_IF_HIDDEN : 0);
button->Hide();
m_Buttons.push_back(button);
m_ActionButtons.push_back(button);
}
topSizer->Add(sizer, 0, wxALIGN_LEFT | wxALL, 1);

wxBoxSizer *buttons = new wxBoxSizer(wxHORIZONTAL);
m_Edit = new wxButton(this, ID_EDIT, _("C&onfigure..."));
m_Edit->Disable();
buttons->Add(m_Edit);
m_Status = new wxButton(this, ID_STATUS, _("&Status"));
m_Status->Disable();
buttons->Add(m_Status);
m_ConfigureButton = new wxButton(this, ID_EDIT, _("C&onfigure..."));
m_ConfigureButton->Disable();
buttons->Add(m_ConfigureButton);
m_StatusButton = new wxButton(this, ID_STATUS, _("&Status"));
m_StatusButton->Disable();
buttons->Add(m_StatusButton);
topSizer->Add(buttons, 0, wxALIGN_RIGHT | wxALL, 1);

topSizer->AddSpacer(5);
Expand All @@ -88,77 +89,70 @@ GOMidiListDialog::GOMidiListDialog(

static const wxString WX_GRID_MIDI_OBJECTS = wxT("GridMidiObjects");

void GOMidiListDialog::ApplyAdditionalSizes(
void GOMidiObjectsDialog::ApplyAdditionalSizes(
const GOAdditionalSizeKeeper &sizeKeeper) {
GOAdditionalSizeKeeperProxy proxyMidiObjects(
const_cast<GOAdditionalSizeKeeper &>(sizeKeeper), WX_GRID_MIDI_OBJECTS);

m_Objects->ApplyColumnSizes(proxyMidiObjects);
m_ObjectsGrid->ApplyColumnSizes(proxyMidiObjects);
}

void GOMidiListDialog::CaptureAdditionalSizes(
void GOMidiObjectsDialog::CaptureAdditionalSizes(
GOAdditionalSizeKeeper &sizeKeeper) const {
GOAdditionalSizeKeeperProxy proxyMidiObjects(
sizeKeeper, WX_GRID_MIDI_OBJECTS);

m_Objects->CaptureColumnSizes(proxyMidiObjects);
m_ObjectsGrid->CaptureColumnSizes(proxyMidiObjects);
}

bool GOMidiListDialog::TransferDataToWindow() {
unsigned oldRowCnt = m_Objects->GetNumberRows();
bool GOMidiObjectsDialog::TransferDataToWindow() {
unsigned oldRowCnt = m_ObjectsGrid->GetNumberRows();
unsigned newRowCnt = r_MidiObjects.size();

if (oldRowCnt)
m_Objects->DeleteRows(0, oldRowCnt);
m_ObjectsGrid->DeleteRows(0, oldRowCnt);

m_Objects->AppendRows(newRowCnt);
m_ObjectsGrid->AppendRows(newRowCnt);
for (unsigned i = 0; i < newRowCnt; i++) {
GOMidiObject *obj = r_MidiObjects[i];

m_Objects->SetCellValue(i, GRID_COL_TYPE, obj->GetMidiType());
m_Objects->SetCellValue(i, GRID_COL_ELEMENT, obj->GetMidiName());
m_ObjectsGrid->SetCellValue(i, GRID_COL_TYPE, obj->GetMidiType());
m_ObjectsGrid->SetCellValue(i, GRID_COL_ELEMENT, obj->GetMidiName());
}
return true;
}

GOMidiObject *GOMidiListDialog::GetSelectedObject() const {
return r_MidiObjects[m_Objects->GetGridCursorRow()];
GOMidiObject *GOMidiObjectsDialog::GetSelectedObject() const {
return r_MidiObjects[m_ObjectsGrid->GetGridCursorRow()];
}

void GOMidiListDialog::OnButton(wxCommandEvent &event) {
GOMidiObject *obj = GetSelectedObject();
obj->TriggerElementActions(event.GetId() - ID_BUTTON);
void GOMidiObjectsDialog::ConfigureSelectedObject() {
GetSelectedObject()->ShowConfigDialog();
}

void GOMidiListDialog::OnObjectClick(wxGridEvent &event) {
void GOMidiObjectsDialog::OnSelectCell(wxGridEvent &event) {
int index = event.GetRow();
bool isAnySelected = index >= 0;

m_Edit->Enable(isAnySelected);
m_Status->Enable(isAnySelected);
m_ConfigureButton->Enable(isAnySelected);
m_StatusButton->Enable(isAnySelected);
if (isAnySelected) {
m_Objects->SelectRow(index);
m_ObjectsGrid->SelectRow(index);
GOMidiObject *obj = r_MidiObjects[index];
std::vector<wxString> actions = obj->GetElementActions();

for (unsigned i = 0; i < m_Buttons.size(); i++)
for (unsigned i = 0; i < m_ActionButtons.size(); i++)
if (i < actions.size()) {
m_Buttons[i]->SetLabel(actions[i]);
m_Buttons[i]->Show();
m_ActionButtons[i]->SetLabel(actions[i]);
m_ActionButtons[i]->Show();
} else
m_Buttons[i]->Hide();
m_ActionButtons[i]->Hide();
}
Layout();
event.StopPropagation();
}

void GOMidiListDialog::OnObjectDoubleClick(wxGridEvent &event) {
GOMidiObject *obj = GetSelectedObject();

obj->ShowConfigDialog();
}

void GOMidiListDialog::OnStatus(wxCommandEvent &event) {
void GOMidiObjectsDialog::OnStatusButton(wxCommandEvent &event) {
GOMidiObject *obj = GetSelectedObject();
wxString status = obj->GetElementStatus();

Expand All @@ -168,7 +162,7 @@ void GOMidiListDialog::OnStatus(wxCommandEvent &event) {
wxOK);
}

void GOMidiListDialog::OnEdit(wxCommandEvent &event) {
wxGridEvent listevent;
OnObjectDoubleClick(listevent);
void GOMidiObjectsDialog::OnActionButton(wxCommandEvent &event) {
GOMidiObject *obj = GetSelectedObject();
obj->TriggerElementActions(event.GetId() - ID_BUTTON);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
* (https://www.gnu.org/licenses/old-licenses/gpl-2.0.html).
*/

#ifndef GOMIDILISTDIALOG_H
#define GOMIDILISTDIALOG_H
#ifndef GOMIDIOBJECTSDIALOG_H
#define GOMIDIOBJECTSDIALOG_H

#include <vector>

Expand All @@ -19,17 +19,17 @@ class wxGridEvent;
class GOGrid;
class GOMidiObject;

class GOMidiListDialog : public GOSimpleDialog, public GOView {
class GOMidiObjectsDialog : public GOSimpleDialog, public GOView {
private:
const std::vector<GOMidiObject *> &r_MidiObjects;

GOGrid *m_Objects;
wxButton *m_Edit;
wxButton *m_Status;
std::vector<wxButton *> m_Buttons;
GOGrid *m_ObjectsGrid;
wxButton *m_ConfigureButton;
wxButton *m_StatusButton;
std::vector<wxButton *> m_ActionButtons;

public:
GOMidiListDialog(
GOMidiObjectsDialog(
GODocumentBase *doc,
wxWindow *parent,
GODialogSizeSet &dialogSizes,
Expand All @@ -43,14 +43,15 @@ class GOMidiListDialog : public GOSimpleDialog, public GOView {
bool TransferDataToWindow() override;

GOMidiObject *GetSelectedObject() const;
void ConfigureSelectedObject();

void OnObjectClick(wxGridEvent &event);
void OnObjectDoubleClick(wxGridEvent &event);
void OnEdit(wxCommandEvent &event);
void OnStatus(wxCommandEvent &event);
void OnButton(wxCommandEvent &event);
void OnSelectCell(wxGridEvent &event);
void OnObjectDoubleClick(wxGridEvent &event) { ConfigureSelectedObject(); }
void OnConfigureButton(wxCommandEvent &event) { ConfigureSelectedObject(); }
void OnStatusButton(wxCommandEvent &event);
void OnActionButton(wxCommandEvent &event);

DECLARE_EVENT_TABLE()
};

#endif
#endif // GOMIDIOBJECTSDIALOG_H

0 comments on commit 9a7ead0

Please sign in to comment.