Use the saved config values or application values.
ConfigEditorPopup On creating the popup, config values were always read and used. Do this if the application does not provide its own variables. The values are still committed to the config file in the usual way (on control destruction). The application may restore them to its own variables during setup.
This commit is contained in:
@@ -400,6 +400,10 @@ XInsaneWidget::~XInsaneWidget() = default; // Important for mixing unique_ptr an
|
|||||||
|
|
||||||
void XInsaneWidget::Setup()
|
void XInsaneWidget::Setup()
|
||||||
{
|
{
|
||||||
|
// Restore known last values.
|
||||||
|
m_doubleSided = m_config->ReadBool("/Scanner/DoubleSided", false);
|
||||||
|
m_total = m_config->ReadLong("/Scanner/Total", 1);
|
||||||
|
|
||||||
lblNewDoc->Bind ( wxEVT_RIGHT_UP, &XInsaneWidget::OnLblNewDocRightClick, this );
|
lblNewDoc->Bind ( wxEVT_RIGHT_UP, &XInsaneWidget::OnLblNewDocRightClick, this );
|
||||||
txtNewDoc->Bind ( wxEVT_KEY_UP, &XInsaneWidget::OnTxtNewDocKeyPressed, this );
|
txtNewDoc->Bind ( wxEVT_KEY_UP, &XInsaneWidget::OnTxtNewDocKeyPressed, this );
|
||||||
|
|
||||||
@@ -445,9 +449,9 @@ void XInsaneWidget::OnLblNewDocRightClick ( wxMouseEvent& evt )
|
|||||||
evt.Skip();
|
evt.Skip();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wxCheckBox * cb = m_pageStack->AddCheckBox (_("Double sided:"),_T("/Scanner/DoubleSided") );
|
wxCheckBox * cb = m_pageStack->AddCheckBox (_("Double sided:"),_T("/Scanner/DoubleSided"), &m_doubleSided );
|
||||||
cb->SetToolTip (_("Scan all front faces first, then all back faces in reverse order.") );
|
cb->SetToolTip (_("Scan all front faces first, then all back faces in reverse order.") );
|
||||||
wxSpinCtrl * spn = m_pageStack->AddSpinCtrl (_("Total:"),_T("/Scanner/Total") );
|
wxSpinCtrl * spn = m_pageStack->AddSpinCtrl (_("Total:"),_T("/Scanner/Total"), &m_total );
|
||||||
spn->SetRange ( 1, 50 );
|
spn->SetRange ( 1, 50 );
|
||||||
spn->SetToolTip (_("Total number of sides to scan (not total number of sheets).") );
|
spn->SetToolTip (_("Total number of sides to scan (not total number of sheets).") );
|
||||||
m_pageStack->ShowPopup();
|
m_pageStack->ShowPopup();
|
||||||
@@ -515,15 +519,7 @@ void XInsaneWidget::OnBtnScanClick ( wxMouseEvent& evt )
|
|||||||
}
|
}
|
||||||
const uint outputType = m_scannerWidget->GetScannerOutputType();
|
const uint outputType = m_scannerWidget->GetScannerOutputType();
|
||||||
bool adf = false;
|
bool adf = false;
|
||||||
bool doubleSided = false;
|
wxString paperSize = m_scannerWidget->GetPaperSize();
|
||||||
uint total = 1;
|
|
||||||
wxString paperSize = _T("A4");
|
|
||||||
if (m_config)
|
|
||||||
{
|
|
||||||
doubleSided = m_config->ReadBool("/Scanner/DoubleSided", false);
|
|
||||||
total = m_config->ReadLong("/Scanner/Total", 1);
|
|
||||||
m_config->Read("/Scanner/Last/PaperSize", &paperSize, "A4");
|
|
||||||
}
|
|
||||||
|
|
||||||
wxFileName destFile(dest);
|
wxFileName destFile(dest);
|
||||||
const string deviceId = m_scannerWidget->GetCurrentDeviceId().ToStdString();
|
const string deviceId = m_scannerWidget->GetCurrentDeviceId().ToStdString();
|
||||||
@@ -545,8 +541,8 @@ void XInsaneWidget::OnBtnScanClick ( wxMouseEvent& evt )
|
|||||||
m_scanProject->SetResolution(resolution);
|
m_scanProject->SetResolution(resolution);
|
||||||
m_scanProject->SetOutputType(outputType);
|
m_scanProject->SetOutputType(outputType);
|
||||||
m_scanProject->SetPaperSize(paperSize);
|
m_scanProject->SetPaperSize(paperSize);
|
||||||
m_scanProject->SetDoubleSided(doubleSided);
|
m_scanProject->SetDoubleSided(m_doubleSided);
|
||||||
m_scanProject->SetTotalNumberOfSides(total);
|
m_scanProject->SetTotalNumberOfSides((uint) m_total);
|
||||||
if (m_stampWidgets)
|
if (m_stampWidgets)
|
||||||
{
|
{
|
||||||
m_stampDescriptors = m_stampWidgets->GetStampDescriptors();
|
m_stampDescriptors = m_stampWidgets->GetStampDescriptors();
|
||||||
|
|||||||
@@ -83,6 +83,9 @@ private:
|
|||||||
std::unique_ptr<InsaneWorker> m_insaneWorker;
|
std::unique_ptr<InsaneWorker> m_insaneWorker;
|
||||||
std::unique_ptr<BackgroundScannerDiscoveryEVH> m_backgroundScannerDiscoveryEvh;
|
std::unique_ptr<BackgroundScannerDiscoveryEVH> m_backgroundScannerDiscoveryEvh;
|
||||||
std::unique_ptr<ScanProjectHandler> m_scanProject;
|
std::unique_ptr<ScanProjectHandler> m_scanProject;
|
||||||
|
|
||||||
|
bool m_doubleSided = false;
|
||||||
|
int m_total = 1;
|
||||||
|
|
||||||
void OnLblNewDocRightClick ( wxMouseEvent& evt );
|
void OnLblNewDocRightClick ( wxMouseEvent& evt );
|
||||||
void OnTxtNewDocKeyPressed ( wxKeyEvent& evt );
|
void OnTxtNewDocKeyPressed ( wxKeyEvent& evt );
|
||||||
|
|||||||
@@ -30,7 +30,8 @@ PopupTransientWindow* ConfigEditorPopup::CreatePopup()
|
|||||||
return m_popup;
|
return m_popup;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxCheckBox* ConfigEditorPopup::AddCheckBox ( const wxString& label, const wxString& configPath )
|
wxCheckBox* ConfigEditorPopup::AddCheckBox ( const wxString& label, const wxString& configPath,
|
||||||
|
bool * clientVar)
|
||||||
{
|
{
|
||||||
wxASSERT_MSG ( ( m_config != nullptr ),_T("CONFIG IS nullptr") );
|
wxASSERT_MSG ( ( m_config != nullptr ),_T("CONFIG IS nullptr") );
|
||||||
wxString * cPath = new wxString ( configPath );
|
wxString * cPath = new wxString ( configPath );
|
||||||
@@ -38,13 +39,22 @@ wxCheckBox* ConfigEditorPopup::AddCheckBox ( const wxString& label, const wxStri
|
|||||||
m_flxsz->Add ( lbl, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 0 );
|
m_flxsz->Add ( lbl, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 0 );
|
||||||
wxCheckBox * cb = new wxCheckBox ( m_pan, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
wxCheckBox * cb = new wxCheckBox ( m_pan, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||||
m_flxsz->Add ( cb, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 0 );
|
m_flxsz->Add ( cb, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 0 );
|
||||||
cb->SetValue ( m_config->ReadBool ( configPath, false ) );
|
cb->SetValue ( (!clientVar) ? m_config->ReadBool ( configPath, false ) : *clientVar);
|
||||||
cb->SetClientData ( cPath );
|
cb->SetClientData ( cPath );
|
||||||
cb->Bind ( wxEVT_DESTROY, &ConfigEditorPopup::OnControlDestroy, this );
|
cb->Bind ( wxEVT_DESTROY, &ConfigEditorPopup::OnControlDestroy, this );
|
||||||
|
if (clientVar)
|
||||||
|
{
|
||||||
|
cb->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, [cb, clientVar] (wxCommandEvent& evt)
|
||||||
|
{
|
||||||
|
*clientVar = cb->GetValue();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
return cb;
|
return cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxSpinCtrl* ConfigEditorPopup::AddSpinCtrl ( const wxString& label, const wxString& configPath )
|
wxSpinCtrl* ConfigEditorPopup::AddSpinCtrl ( const wxString& label, const wxString& configPath,
|
||||||
|
int * clientVar)
|
||||||
{
|
{
|
||||||
wxASSERT_MSG ( ( m_config != nullptr ),_T("CONFIG IS nullptr") );
|
wxASSERT_MSG ( ( m_config != nullptr ),_T("CONFIG IS nullptr") );
|
||||||
wxString * cPath = new wxString ( configPath );
|
wxString * cPath = new wxString ( configPath );
|
||||||
@@ -52,13 +62,22 @@ wxSpinCtrl* ConfigEditorPopup::AddSpinCtrl ( const wxString& label, const wxStri
|
|||||||
m_flxsz->Add ( lbl, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxGROW | wxALL, 0 );
|
m_flxsz->Add ( lbl, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxGROW | wxALL, 0 );
|
||||||
wxSpinCtrl * spn = new wxSpinCtrl ( m_pan, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS | wxALIGN_RIGHT, -100, 100 );
|
wxSpinCtrl * spn = new wxSpinCtrl ( m_pan, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS | wxALIGN_RIGHT, -100, 100 );
|
||||||
m_flxsz->Add ( spn, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 0 );
|
m_flxsz->Add ( spn, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 0 );
|
||||||
spn->SetValue ( ( int ) m_config->ReadLong ( configPath, 0 ) );
|
spn->SetValue ((!clientVar) ? ( int ) m_config->ReadLong ( configPath, 0 ) : *clientVar);
|
||||||
spn->SetClientData ( cPath );
|
spn->SetClientData ( cPath );
|
||||||
spn->Bind ( wxEVT_DESTROY, &ConfigEditorPopup::OnControlDestroy, this );
|
spn->Bind ( wxEVT_DESTROY, &ConfigEditorPopup::OnControlDestroy, this );
|
||||||
|
if (clientVar)
|
||||||
|
{
|
||||||
|
spn->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, [spn, clientVar] (wxSpinEvent& evt)
|
||||||
|
{
|
||||||
|
*clientVar = spn->GetValue();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
return spn;
|
return spn;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxTextCtrl* ConfigEditorPopup::AddTextCtrl ( const wxString& label, const wxString& configPath )
|
wxTextCtrl* ConfigEditorPopup::AddTextCtrl ( const wxString& label, const wxString& configPath,
|
||||||
|
wxString * clientVar)
|
||||||
{
|
{
|
||||||
wxASSERT_MSG ( ( m_config != nullptr ),_T("CONFIG IS nullptr") );
|
wxASSERT_MSG ( ( m_config != nullptr ),_T("CONFIG IS nullptr") );
|
||||||
wxString * cPath = new wxString ( configPath );
|
wxString * cPath = new wxString ( configPath );
|
||||||
@@ -66,9 +85,17 @@ wxTextCtrl* ConfigEditorPopup::AddTextCtrl ( const wxString& label, const wxStri
|
|||||||
m_flxsz->Add ( lbl, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxGROW | wxALL, 0 );
|
m_flxsz->Add ( lbl, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxGROW | wxALL, 0 );
|
||||||
wxTextCtrl * txt = new wxTextCtrl ( m_pan, wxID_ANY );
|
wxTextCtrl * txt = new wxTextCtrl ( m_pan, wxID_ANY );
|
||||||
m_flxsz->Add ( txt, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 0 );
|
m_flxsz->Add ( txt, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 0 );
|
||||||
txt->SetValue ( m_config->Read ( configPath, wxEmptyString ) );
|
txt->SetValue ( (!clientVar) ? m_config->Read ( configPath, wxEmptyString ) : *clientVar );
|
||||||
txt->SetClientData ( cPath );
|
txt->SetClientData ( cPath );
|
||||||
txt->Bind ( wxEVT_DESTROY, &ConfigEditorPopup::OnControlDestroy, this );
|
txt->Bind ( wxEVT_DESTROY, &ConfigEditorPopup::OnControlDestroy, this );
|
||||||
|
if (clientVar)
|
||||||
|
{
|
||||||
|
txt->Bind(wxEVT_COMMAND_TEXT_UPDATED, [txt, clientVar] (wxCommandEvent& evt)
|
||||||
|
{
|
||||||
|
*clientVar = txt->GetValue();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
return txt;
|
return txt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ public:
|
|||||||
virtual ~ConfigEditorPopup();
|
virtual ~ConfigEditorPopup();
|
||||||
PopupTransientWindow* CreatePopup();
|
PopupTransientWindow* CreatePopup();
|
||||||
void ShowPopup();
|
void ShowPopup();
|
||||||
wxCheckBox* AddCheckBox ( const wxString& label, const wxString& configPath );
|
wxCheckBox* AddCheckBox(const wxString& label, const wxString& configPath, bool * clientVar = nullptr);
|
||||||
wxSpinCtrl* AddSpinCtrl ( const wxString& label, const wxString& configPath );
|
wxSpinCtrl* AddSpinCtrl ( const wxString& label, const wxString& configPath, int * clientVar = nullptr );
|
||||||
wxTextCtrl * AddTextCtrl ( const wxString& label, const wxString& configPath );
|
wxTextCtrl * AddTextCtrl ( const wxString& label, const wxString& configPath, wxString * clientVar = nullptr );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxConfig * m_config = nullptr;
|
wxConfig * m_config = nullptr;
|
||||||
|
|||||||
Reference in New Issue
Block a user