Hello.
I think it'll be useful to save the settings of search objects dialog. So I decided to add this feature.
Please see the attached patch.
Thank you.

--
Dmitriy Olshevskiy

From 904ba63af8d182ea8f5a00a6d45c3604d21eb92b Mon Sep 17 00:00:00 2001
From: olshevskiy87 <olshevski...@bk.ru>
Date: Sun, 22 Jun 2014 13:53:27 +0400
Subject: [PATCH] save and restore the settings of the search objects dialog

---
 pgadmin/dlg/dlgSearchObject.cpp       | 70 +++++++++++++++++++++++++++++++++--
 pgadmin/include/dlg/dlgSearchObject.h |  3 ++
 2 files changed, 69 insertions(+), 4 deletions(-)

diff --git a/pgadmin/dlg/dlgSearchObject.cpp b/pgadmin/dlg/dlgSearchObject.cpp
index 804fc2f..c65e850 100644
--- a/pgadmin/dlg/dlgSearchObject.cpp
+++ b/pgadmin/dlg/dlgSearchObject.cpp
@@ -144,8 +144,6 @@ dlgSearchObject::dlgSearchObject(frmMain *p, pgDatabase 
*db, pgObject *obj)
                cbType->Append(_("Collations"));
        }
 
-       cbType->SetSelection(0);
-
        cbSchema->Clear();
        cbSchema->Append(_("All schemas"));
        cbSchema->Append(_("My schemas"));
@@ -188,14 +186,77 @@ dlgSearchObject::dlgSearchObject(frmMain *p, pgDatabase 
*db, pgObject *obj)
                delete set;
        }
 
-       cbSchema->SetSelection(0);
-
+       RestoreSettings();
        txtPattern->SetFocus();
 }
 
 
 dlgSearchObject::~dlgSearchObject()
 {
+       SavePosition();
+}
+
+void dlgSearchObject::SaveSettings()
+{
+       settings->Write(wxT("SearchObject/Pattern"), txtPattern->GetValue());
+       settings->Write(wxT("SearchObject/Type"), aMap[cbType->GetValue()]);
+       settings->Write(wxT("SearchObject/Schema"), cbSchema->GetValue());
+       settings->WriteBool(wxT("SearchObject/Names"), chkNames->GetValue());
+       settings->WriteBool(wxT("SearchObject/Definitions"), 
chkDefinitions->GetValue());
+       settings->WriteBool(wxT("SearchObject/Comments"), 
chkComments->GetValue());
+}
+
+wxString dlgSearchObject::getMapKeyByValue(wxString search_value)
+{
+       wxString key = wxEmptyString;
+       LngMapping::iterator it;
+
+       for (it = aMap.begin(); it != aMap.end(); ++it)
+       {
+               if (search_value.IsSameAs(it->second))
+               {
+                       key = it->first;
+                       break;
+               }
+       }
+       return key;
+}
+
+void dlgSearchObject::RestoreSettings()
+{
+       wxString val, mapkey;
+       bool bVal;
+       
+       // Pattern
+       settings->Read(wxT("SearchObject/Pattern"), &val, wxEmptyString);
+       txtPattern->SetValue(val);
+       
+       // Type
+       settings->Read(wxT("SearchObject/Type"), &val, wxT("All types"));
+       mapkey = getMapKeyByValue(val);
+       if (cbType->FindString(mapkey, true) == wxNOT_FOUND)
+               cbType->SetValue(getMapKeyByValue(wxT("All types")));
+       else
+               cbType->SetValue(mapkey);
+
+       // Schema
+       settings->Read(wxT("SearchObject/Schema"), &val, wxT("All schemas"));
+       if (cbSchema->FindString(val, true) == wxNOT_FOUND)
+               cbSchema->SetValue(wxT("All schemas"));
+       else
+               cbSchema->SetValue(val);
+
+       // names
+       settings->Read(wxT("SearchObject/Names"), &bVal, true);
+       chkNames->SetValue(bVal);
+       
+       // definitions
+       settings->Read(wxT("SearchObject/Definitions"), &bVal, false);
+       chkDefinitions->SetValue(bVal);
+       
+       // comments
+       settings->Read(wxT("SearchObject/Comments"), &bVal, false);
+       chkComments->SetValue(bVal);
 }
 
 void dlgSearchObject::OnHelp(wxCommandEvent &ev)
@@ -840,6 +901,7 @@ wxString dlgSearchObject::TranslatePath(wxString &path)
 
 void dlgSearchObject::OnCancel(wxCommandEvent &ev)
 {
+       SaveSettings();
        if (IsModal())
                EndModal(wxID_CANCEL);
        else
diff --git a/pgadmin/include/dlg/dlgSearchObject.h 
b/pgadmin/include/dlg/dlgSearchObject.h
index 19d054a..231a1e2 100644
--- a/pgadmin/include/dlg/dlgSearchObject.h
+++ b/pgadmin/include/dlg/dlgSearchObject.h
@@ -31,7 +31,10 @@ private:
        void OnCancel(wxCommandEvent &ev);
        void OnChange(wxCommandEvent &ev);
        void OnSelSearchResult(wxListEvent &ev);
+       void SaveSettings();
+       void RestoreSettings();
        wxString TranslatePath(wxString &path);
+       wxString getMapKeyByValue(wxString);
        void ToggleBtnSearch(bool enable);
        WX_DECLARE_STRING_HASH_MAP(wxString, LngMapping);
        LngMapping aMap;
-- 
1.8.3.msysgit.0

-- 
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers

Reply via email to