Add experimental keybind support.

This commit is contained in:
apoorv569 2021-05-14 14:26:26 +05:30
parent 5be7f4597c
commit 49414bd6a7
3 changed files with 151 additions and 2 deletions

View File

@ -59,11 +59,56 @@ int App::FilterEvent(wxEvent& event)
wxLogDebug("Focused window: %s", className);
// if SearchCtrl or TreeCtrl has focus, let all keys through
if(className == wxT("wxSearchCtrl"))
if(className == wxT("wxDialog"))
{
wxLogDebug("Dialog focused skipping key filtering");
return wxEventFilter::Event_Skip;
}
else if(className == wxT("wxSearchCtrl"))
{
wxLogDebug("SearchCtrl focused skipping key filtering");
return wxEventFilter::Event_Skip;
}
else if(className == wxT("wxTextCtrl"))
{
wxLogDebug("TextCtrl focused skipping key filtering");
return wxEventFilter::Event_Skip;
}
else if(className == wxT("wxChoice"))
{
wxLogDebug("Choice focused skipping key filtering");
return wxEventFilter::Event_Skip;
}
else if(className == wxT("wxCheckBox"))
{
wxLogDebug("CheckBox focused skipping key filtering");
return wxEventFilter::Event_Skip;
}
else if(className == wxT("wxSlider"))
{
wxLogDebug("Slider focused skipping key filtering");
return wxEventFilter::Event_Skip;
}
else if(className == wxT("wxDirCtrl"))
{
wxLogDebug("DirCtrl focused skipping key filtering");
return wxEventFilter::Event_Skip;
}
else if(className == wxT("wxTreeCtrl"))
{
wxLogDebug("TreeCtrl focused skipping key filtering");
return wxEventFilter::Event_Skip;
}
else if(className == wxT("wxNotebook"))
{
wxLogDebug("Notebook focused skipping key filtering");
return wxEventFilter::Event_Skip;
}
else if(className == wxT("wxSpinCtrl"))
{
wxLogDebug("SpinCtrl focused skipping key filtering");
return wxEventFilter::Event_Skip;
}
else if(className == wxT("wxTreeCtrl"))
{
wxLogDebug("TreeCtrl focused skipping key filtering");
@ -95,8 +140,8 @@ int App::FilterEvent(wxEvent& event)
case 'A':
{
wxCommandEvent autoplayEvent(wxEVT_CHECKBOX);
autoplayEvent.SetId(BC_Autoplay);
autoplayEvent.SetId(BC_Autoplay);
autoplayEvent.SetEventObject(m_Frame->m_AutoPlayCheck);
if (m_Frame->m_AutoPlayCheck->GetValue())
@ -112,6 +157,21 @@ int App::FilterEvent(wxEvent& event)
break;
}
case 'D':
{
wxMenuEvent deleteEvent(wxEVT_COMMAND_MENU_SELECTED);
deleteEvent.SetId(MN_DeleteSample);
// deleteEvent.SetEventObject(m_Frame->m_AutoPlayCheck);
m_Frame->OnSelectDeleteFromMenu(deleteEvent);
wxLogDebug("A pressed");
return wxEventFilter::Event_Processed;
break;
}
case 'L':
{
wxCommandEvent loopEvent(wxEVT_TOGGLEBUTTON);

View File

@ -224,6 +224,8 @@ MainFrame::MainFrame()
Bind(wxEVT_BUTTON, &MainFrame::OnClickCollectionAdd, this, BC_CollectionViewAdd);
Bind(wxEVT_BUTTON, &MainFrame::OnClickCollectionRemove, this, BC_CollectionViewRemove);
Bind(wxEVT_MENU_OPEN, &MainFrame::OnSelectDeleteFromMenu, this, MN_DeleteSample);
// // Setting up keybindings
// wxAcceleratorEntry entries[5];
// entries[0].Set(wxACCEL_NORMAL, (int) 'P', BC_Play);
@ -975,6 +977,91 @@ void MainFrame::OnShowSampleListViewContextMenu(wxDataViewEvent& event)
wxLogDebug(msg);
}
void MainFrame::OnSelectDeleteFromMenu(wxMenuEvent& event)
{
Database db(*m_InfoBar);
wxString msg;
int selected_row = m_SampleListView->GetSelectedRow();
wxString selection = m_SampleListView->GetTextValue(selected_row, 1);
wxString sample_path = GetFileNamePathAndExtension(selection).Path;
std::string filename = GetFileNamePathAndExtension(selection).Filename;
std::string extension = GetFileNamePathAndExtension(selection).Extension;
wxDataViewItemArray items;
int rows = m_SampleListView->GetSelections(items);
wxMessageDialog singleMsgDialog(this, wxString::Format(
"Are you sure you want to delete "
"%s from database? "
"Warning this change is "
"permanent, and cannot be "
"undone.", sample_path.AfterLast('/')),
wxMessageBoxCaptionStr,
wxYES_NO | wxNO_DEFAULT |
wxICON_QUESTION | wxSTAY_ON_TOP |
wxCENTER);
wxMessageDialog multipleMsgDialog(this, wxString::Format(
"Are you sure you want to delete "
"%d selected samples from database? "
"Warning this change is "
"permanent, and cannot be "
"undone.", rows),
wxMessageBoxCaptionStr,
wxYES_NO | wxNO_DEFAULT |
wxICON_QUESTION | wxSTAY_ON_TOP |
wxCENTER);
if (m_SampleListView->GetSelectedItemsCount() <= 1)
{
switch (singleMsgDialog.ShowModal())
{
case wxID_YES:
{
msg = wxString::Format("Selected row: %d :: Sample: %s", selected_row, filename);
db.RemoveSampleFromDatabase(filename);
m_SampleListView->DeleteItem(selected_row);
}
break;
case wxID_NO:
msg = "Cancel delete";
break;
default:
msg = "Unexpected wxMessageDialog return code!";
}
}
else
{
switch (multipleMsgDialog.ShowModal())
{
case wxID_YES:
{
for (int i = 0; i < rows; i++)
{
int row = m_SampleListView->ItemToRow(items[i]);
wxString text_value = m_SampleListView->GetTextValue(row, 1);
std::string multi_selection = text_value.Contains(wxString::Format(".%s", extension)) ?
text_value.BeforeLast('.').ToStdString() : text_value.ToStdString() ;
db.RemoveSampleFromDatabase(multi_selection);
m_SampleListView->DeleteItem(row);
}
}
break;
case wxID_NO:
msg = "Cancel delete";
break;
default:
msg = "Unexpected wxMessageDialog return code!";
}
}
}
void MainFrame::LoadDatabase()
{
Settings settings(this, m_ConfigFilepath, m_DatabaseFilepath);

View File

@ -203,5 +203,7 @@ class MainFrame : public wxFrame
// wxString TagLibTowx(const TagLib::String& in);
void OnSelectDeleteFromMenu(wxMenuEvent& event);
friend class App;
};