diff --git a/USER_MANUAL.md b/USER_MANUAL.md index d189bfc2..005c16e9 100644 --- a/USER_MANUAL.md +++ b/USER_MANUAL.md @@ -898,6 +898,7 @@ LDPC | Low Density Parity Check Codes - a family of powerful FEC codes * Update configuration of the Voice Keyer feature based on user feedback. (PR #730) * Add monitor volume adjustment. (PR #733) * Avoid modifying the audio device configuration without the user explicitly doing so. (PR #735) + * If provided by user, add config file to titlebar. (PR #738) 3. Build system: * Allow overrriding the version tag when building. (PR #727) * Update wxWidgets to 3.2.5. (PR #731) diff --git a/src/gui/dialogs/dlg_audiooptions.cpp b/src/gui/dialogs/dlg_audiooptions.cpp index f196f723..0b512748 100644 --- a/src/gui/dialogs/dlg_audiooptions.cpp +++ b/src/gui/dialogs/dlg_audiooptions.cpp @@ -88,6 +88,11 @@ void AudioOptsDialog::buildTestControls(PlotScalar **plotScalar, wxButton **btnT //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-= AudioOptsDialog::AudioOptsDialog(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style) { + if (wxGetApp().customConfigFileName != "") + { + SetTitle(wxString::Format("%s (%s)", title, wxGetApp().customConfigFileName)); + } + if (g_verbose) fprintf(stderr, "pos %d %d\n", pos.x, pos.y); audioEngineInit(); diff --git a/src/gui/dialogs/dlg_easy_setup.cpp b/src/gui/dialogs/dlg_easy_setup.cpp index 1a484b19..136f3a40 100644 --- a/src/gui/dialogs/dlg_easy_setup.cpp +++ b/src/gui/dialogs/dlg_easy_setup.cpp @@ -55,6 +55,11 @@ EasySetupDialog::EasySetupDialog(wxWindow* parent, wxWindowID id, const wxString , serialPortTestObject_(nullptr) , hasAppliedChanges_(false) { + if (wxGetApp().customConfigFileName != "") + { + SetTitle(wxString::Format("%s (%s)", title, wxGetApp().customConfigFileName)); + } + // Create top-level of control hierarchy. wxPanel* panel = new wxPanel(this); wxBoxSizer* sectionSizer = new wxBoxSizer(wxVERTICAL); diff --git a/src/gui/dialogs/dlg_filter.cpp b/src/gui/dialogs/dlg_filter.cpp index e6b3f1e4..0bdb9700 100644 --- a/src/gui/dialogs/dlg_filter.cpp +++ b/src/gui/dialogs/dlg_filter.cpp @@ -59,6 +59,11 @@ extern wxMutex g_mutexProtectingCallbackData; FilterDlg::FilterDlg(wxWindow* parent, bool running, bool *newMicInFilter, bool *newSpkOutFilter, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style) { + if (wxGetApp().customConfigFileName != "") + { + SetTitle(wxString::Format("%s (%s)", title, wxGetApp().customConfigFileName)); + } + m_running = running; m_newMicInFilter = newMicInFilter; m_newSpkOutFilter = newSpkOutFilter; diff --git a/src/gui/dialogs/dlg_options.cpp b/src/gui/dialogs/dlg_options.cpp index 633dd6e2..563c2c58 100644 --- a/src/gui/dialogs/dlg_options.cpp +++ b/src/gui/dialogs/dlg_options.cpp @@ -44,6 +44,11 @@ extern wxConfigBase *pConfig; //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-= OptionsDlg::OptionsDlg(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style) { + if (wxGetApp().customConfigFileName != "") + { + SetTitle(wxString::Format("%s (%s)", title, wxGetApp().customConfigFileName)); + } + sessionActive_ = false; wxPanel* panel = new wxPanel(this); diff --git a/src/gui/dialogs/dlg_ptt.cpp b/src/gui/dialogs/dlg_ptt.cpp index 2f598489..fc34bda3 100644 --- a/src/gui/dialogs/dlg_ptt.cpp +++ b/src/gui/dialogs/dlg_ptt.cpp @@ -48,6 +48,11 @@ extern wxConfigBase *pConfig; //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-= ComPortsDlg::ComPortsDlg(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style) { + if (wxGetApp().customConfigFileName != "") + { + SetTitle(wxString::Format("%s (%s)", title, wxGetApp().customConfigFileName)); + } + wxPanel* panel = new wxPanel(this); wxBoxSizer* mainSizer = new wxBoxSizer(wxVERTICAL); diff --git a/src/gui/dialogs/freedv_reporter.cpp b/src/gui/dialogs/freedv_reporter.cpp index a0b687e3..4350646f 100644 --- a/src/gui/dialogs/freedv_reporter.cpp +++ b/src/gui/dialogs/freedv_reporter.cpp @@ -90,6 +90,11 @@ FreeDVReporterDialog::FreeDVReporterDialog(wxWindow* parent, wxWindowID id, cons , filterSelfMessageUpdates_(false) , filteredFrequency_(0) { + if (wxGetApp().customConfigFileName != "") + { + SetTitle(wxString::Format("%s (%s)", _("FreeDV Reporter"), wxGetApp().customConfigFileName)); + } + for (int col = 0; col < NUM_COLS; col++) { columnLengths_[col] = DefaultColumnWidths_[col]; diff --git a/src/main.cpp b/src/main.cpp index 56041d30..76ce106a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -204,6 +204,10 @@ bool MainApp::OnCmdLineParsed(wxCmdLineParser& parser) fprintf(stderr, "Loading configuration from %s\n", (const char*)configPath.ToUTF8()); pConfig = new wxFileConfig(wxT("FreeDV"), wxT("CODEC2-Project"), configPath, configPath, wxCONFIG_USE_LOCAL_FILE); wxConfigBase::Set(pConfig); + + // On Linux/macOS, this replaces $HOME with "~" to shorten the title a bit. + wxFileName fn(configPath); + customConfigFileName = fn.GetFullName(); } pConfig->SetRecordDefaults(); @@ -240,7 +244,7 @@ bool MainApp::OnInit() // displayed. But it doesn't when built from command line. Why? frame->m_auiNbookCtrl->ChangeSelection(0); - frame->Layout(); + frame->Layout(); frame->Show(); g_parent =frame; @@ -648,6 +652,12 @@ MainFrame::MainFrame(wxWindow *parent) : TopFrame(parent, wxID_ANY, _("FreeDV ") pthread_setname_np(pthread_self(), "FreeDV GUI"); #endif // defined(__linux__) + // Add config file name to title bar if provided at the command line. + if (wxGetApp().customConfigFileName != "") + { + SetTitle(wxString::Format("%s (%s)", _("FreeDV ") + _(FREEDV_VERSION), wxGetApp().customConfigFileName)); + } + m_reporterDialog = nullptr; m_filterDialog = nullptr; diff --git a/src/main.h b/src/main.h index f49e43a1..006f65a9 100644 --- a/src/main.h +++ b/src/main.h @@ -168,6 +168,7 @@ class MainApp : public wxApp bool CanAccessSerialPort(std::string portName); FreeDVConfiguration appConfiguration; + wxString customConfigFileName; // PTT ----------------------------------- unsigned int m_intHamlibRig;