mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2026-06-11 10:18:52 -04:00
Mode selector widget to replace menu
+ OSX keyboard focus fix
This commit is contained in:
+21
-32
@@ -40,6 +40,10 @@ AppFrame::AppFrame() :
|
||||
|
||||
|
||||
demodModeSelector = new ModeSelectorCanvas(this, NULL);
|
||||
demodModeSelector->addChoice(DEMOD_TYPE_FM,"FM");
|
||||
demodModeSelector->addChoice(DEMOD_TYPE_AM,"AM");
|
||||
demodModeSelector->addChoice(DEMOD_TYPE_LSB,"LSB");
|
||||
demodModeSelector->addChoice(DEMOD_TYPE_USB,"USB");
|
||||
demodTray->Add(demodModeSelector, 2, wxEXPAND | wxALL, 0);
|
||||
|
||||
// demodTray->AddSpacer(2);
|
||||
@@ -94,20 +98,21 @@ AppFrame::AppFrame() :
|
||||
|
||||
this->SetSizer(vbox);
|
||||
|
||||
waterfallCanvas->SetFocusFromKbd();
|
||||
// waterfallCanvas->SetFocusFromKbd();
|
||||
waterfallCanvas->SetFocus();
|
||||
|
||||
// SetIcon(wxICON(sample));
|
||||
|
||||
// Make a menubar
|
||||
// wxMenu *menu = new wxMenu;
|
||||
wxMenuBar *menuBar = new wxMenuBar;
|
||||
wxMenu *menu = new wxMenu;
|
||||
// menu->Append(wxID_NEW);
|
||||
// menu->AppendSeparator();
|
||||
// menu->Append(wxID_CLOSE);
|
||||
// wxMenuBar *menuBar = new wxMenuBar;
|
||||
// menuBar->Append(menu, wxT("&File"));
|
||||
menu->Append(wxID_CLOSE);
|
||||
|
||||
wxMenu *menu = new wxMenu;
|
||||
menuBar->Append(menu, wxT("&File"));
|
||||
|
||||
menu = new wxMenu;
|
||||
|
||||
std::vector<RtAudio::DeviceInfo>::iterator devices_i;
|
||||
std::map<int, RtAudio::DeviceInfo>::iterator mdevices_i;
|
||||
@@ -136,17 +141,8 @@ AppFrame::AppFrame() :
|
||||
outputDeviceMenuItems[mdevices_i->first] = itm;
|
||||
}
|
||||
|
||||
wxMenuBar *menuBar = new wxMenuBar;
|
||||
menuBar->Append(menu, wxT("Active Demodulator &Output"));
|
||||
|
||||
wxMenu *demodMenu = new wxMenu;
|
||||
demodMenuItems[DEMOD_TYPE_FM] = demodMenu->AppendRadioItem(wxID_DEMOD_TYPE_FM, wxT("FM"), wxT("Description?"));
|
||||
demodMenuItems[DEMOD_TYPE_AM] = demodMenu->AppendRadioItem(wxID_DEMOD_TYPE_AM, wxT("AM"), wxT("Description?"));
|
||||
demodMenuItems[DEMOD_TYPE_LSB] = demodMenu->AppendRadioItem(wxID_DEMOD_TYPE_LSB, wxT("LSB"), wxT("Description?"));
|
||||
demodMenuItems[DEMOD_TYPE_USB] = demodMenu->AppendRadioItem(wxID_DEMOD_TYPE_USB, wxT("USB"), wxT("Description?"));
|
||||
|
||||
menuBar->Append(demodMenu, wxT("Active Demodulator &Type"));
|
||||
|
||||
SetMenuBar(menuBar);
|
||||
|
||||
CreateStatusBar();
|
||||
@@ -172,22 +168,6 @@ void AppFrame::OnMenu(wxCommandEvent& event) {
|
||||
activeDemodulator = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (activeDemodulator) {
|
||||
if (event.GetId() == wxID_DEMOD_TYPE_FM) {
|
||||
activeDemodulator->setDemodulatorType(DEMOD_TYPE_FM);
|
||||
activeDemodulator = NULL;
|
||||
} else if (event.GetId() == wxID_DEMOD_TYPE_AM) {
|
||||
activeDemodulator->setDemodulatorType(DEMOD_TYPE_AM);
|
||||
activeDemodulator = NULL;
|
||||
} else if (event.GetId() == wxID_DEMOD_TYPE_LSB) {
|
||||
activeDemodulator->setDemodulatorType(DEMOD_TYPE_LSB);
|
||||
activeDemodulator = NULL;
|
||||
} else if (event.GetId() == wxID_DEMOD_TYPE_USB) {
|
||||
activeDemodulator->setDemodulatorType(DEMOD_TYPE_USB);
|
||||
activeDemodulator = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AppFrame::OnClose(wxCommandEvent& WXUNUSED(event)) {
|
||||
@@ -219,13 +199,18 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
|
||||
scopeCanvas->setDeviceName(outputDevices[outputDevice].name);
|
||||
outputDeviceMenuItems[outputDevice]->Check(true);
|
||||
int dType = demod->getDemodulatorType();
|
||||
demodMenuItems[dType]->Check(true);
|
||||
demodModeSelector->setSelection(dType);
|
||||
}
|
||||
if (demodWaterfallCanvas->getDragState() == WaterfallCanvas::WF_DRAG_NONE) {
|
||||
if (demod->getParams().frequency != demodWaterfallCanvas->getCenterFrequency()) {
|
||||
demodWaterfallCanvas->setCenterFrequency(demod->getFrequency());
|
||||
demodSpectrumCanvas->setCenterFrequency(demod->getFrequency());
|
||||
}
|
||||
int dSelection = demodModeSelector->getSelection();
|
||||
if (dSelection != -1 && dSelection != demod->getDemodulatorType()) {
|
||||
demod->setDemodulatorType(dSelection);
|
||||
}
|
||||
|
||||
unsigned int demodBw = (unsigned int) ceil((float) demod->getParams().bandwidth * 2.5);
|
||||
if (demodBw > SRATE / 2) {
|
||||
demodBw = SRATE / 2;
|
||||
@@ -280,6 +265,10 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
|
||||
work_done = true;
|
||||
}
|
||||
|
||||
if (!waterfallCanvas->HasFocus()) {
|
||||
waterfallCanvas->SetFocus();
|
||||
}
|
||||
|
||||
if (!work_done) {
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user