Hi,

Subject says it all. This patch aims to support this new feature of 9.1:

http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=7f508f1c6b515df66d27f860b2faa7b5761fa55d

The radiobox in the dump window has been changed into a combobox because
we have now four possible choices and it takes too much space in the window.

Comments?


-- 
Guillaume
 http://www.postgresql.fr
 http://dalibo.com
diff --git a/pgadmin/frm/frmBackup.cpp b/pgadmin/frm/frmBackup.cpp
index 2009271..167a352 100644
--- a/pgadmin/frm/frmBackup.cpp
+++ b/pgadmin/frm/frmBackup.cpp
@@ -32,7 +32,7 @@
 #define btnFilename             CTRL_BUTTON("btnFilename")
 #define txtCompressRatio        CTRL_TEXT("txtCompressRatio")
 #define cbEncoding              CTRL_COMBOBOX("cbEncoding")
-#define rbxFormat               CTRL_RADIOBOX("rbxFormat")
+#define cbFormat                CTRL_COMBOBOX("cbFormat")
 #define cbRolename              CTRL_COMBOBOX("cbRolename")
 #define chkBlobs                CTRL_CHECKBOX("chkBlobs")
 #define chkOid                  CTRL_CHECKBOX("chkOid")
@@ -58,7 +58,7 @@ BEGIN_EVENT_TABLE(frmBackup, ExternProcessDialog)
 	EVT_TEXT(XRCID("txtFilename"),                frmBackup::OnChange)
 	EVT_BUTTON(XRCID("btnFilename"),              frmBackup::OnSelectFilename)
 	EVT_BUTTON(wxID_OK,                           frmBackup::OnOK)
-	EVT_RADIOBOX(XRCID("rbxFormat"),              frmBackup::OnChangePlain)
+	EVT_COMBOBOX(XRCID("cbFormat"),               frmBackup::OnChangePlain)
 	EVT_CHECKBOX(XRCID("chkOnlyData"),            frmBackup::OnChangePlain)
 	EVT_CHECKBOX(XRCID("chkOnlySchema"),          frmBackup::OnChangePlain)
 	EVT_CHECKBOX(XRCID("chkNoUnloggedTableData"), frmBackup::OnChangePlain)
@@ -223,6 +223,12 @@ frmBackup::frmBackup(frmMain *form, pgObject *obj) : ExternProcessDialog(form)
 		cbEncoding->Disable();
 	}
 
+	cbFormat->Append(_("Custom"));
+	cbFormat->Append(_("Tar"));
+	cbFormat->Append(_("Plain"));
+	if (pgAppMinimumVersion(backupExecutable, 9, 1))
+		cbFormat->Append(_("Directory"));
+
 	wxCommandEvent ev;
 	OnChangePlain(ev);
 }
@@ -246,7 +252,7 @@ void frmBackup::OnSelectFilename(wxCommandEvent &ev)
 {
 	wxString title, prompt, FilenameOnly;
 
-	if (rbxFormat->GetSelection() == 2) // plain
+	if (cbFormat->GetSelection() == 2) // plain
 	{
 		title  = _("Select output file");
 #ifdef __WXMSW__
@@ -285,7 +291,9 @@ void frmBackup::OnChange(wxCommandEvent &ev)
 
 void frmBackup::OnChangePlain(wxCommandEvent &ev)
 {
-	bool isPlain = (rbxFormat->GetSelection() == 2);
+	bool isPlain = (cbFormat->GetSelection() == 2);
+	bool isDirectory = (cbFormat->GetSelection() == 3);
+
 	chkBlobs->Enable(canBlob && !isPlain);
 	chkOnlyData->Enable(isPlain && !chkOnlySchema->GetValue());
 	if (isPlain)
@@ -297,6 +305,8 @@ void frmBackup::OnChangePlain(wxCommandEvent &ev)
 	chkCreateDb->Enable(isPlain);
 	chkDisableTrigger->Enable(chkOnlyData->GetValue());
 
+	btnFilename->Enable(!isDirectory);
+
 	wxCommandEvent nullEvent;
 	OnChange(nullEvent);
 }
@@ -346,7 +356,7 @@ wxString frmBackup::getCmdPart2()
 {
 	wxString cmd;
 
-	switch (rbxFormat->GetSelection())
+	switch (cbFormat->GetSelection())
 	{
 		case 0: // compressed
 		{
@@ -364,7 +374,7 @@ wxString frmBackup::getCmdPart2()
 				cmd.Append(wxT(" --blobs"));
 			break;
 		}
-		case 2:
+		case 2: // plain
 		{
 			cmd.Append(wxT(" --format plain"));
 			if (chkOnlyData->GetValue())
@@ -386,6 +396,11 @@ wxString frmBackup::getCmdPart2()
 			}
 			break;
 		}
+		case 3: // directory
+		{
+			cmd.Append(wxT(" --format directory"));
+			break;
+		}
 	}
 
 	if (!cbEncoding->GetValue().IsEmpty())
diff --git a/pgadmin/frm/frmRestore.cpp b/pgadmin/frm/frmRestore.cpp
index 1f139d7..5aead1d 100644
--- a/pgadmin/frm/frmRestore.cpp
+++ b/pgadmin/frm/frmRestore.cpp
@@ -14,6 +14,7 @@
 #include <wx/settings.h>
 #include <wx/process.h>
 #include <wx/textbuf.h>
+#include <wx/dir.h>
 #include <wx/file.h>
 #include <wx/filename.h>
 
@@ -37,6 +38,7 @@
 #define nbNotebook               CTRL_NOTEBOOK("nbNotebook")
 #define txtFilename              CTRL_TEXT("txtFilename")
 #define btnFilename              CTRL_BUTTON("btnFilename")
+#define cbFormat                 CTRL_COMBOBOX("cbFormat")
 #define cbRolename               CTRL_COMBOBOX("cbRolename")
 #define chkOnlyData              CTRL_CHECKBOX("chkOnlyData")
 #define chkOnlySchema            CTRL_CHECKBOX("chkOnlySchema")
@@ -60,6 +62,7 @@
 
 BEGIN_EVENT_TABLE(frmRestore, ExternProcessDialog)
 	EVT_TEXT(XRCID("txtFilename"),               frmRestore::OnChangeName)
+	EVT_COMBOBOX(XRCID("cbFormat"),              frmRestore::OnChangeFormat)
 	EVT_CHECKBOX(XRCID("chkOnlyData"),           frmRestore::OnChangeData)
 	EVT_CHECKBOX(XRCID("chkOnlySchema"),         frmRestore::OnChangeSchema)
 	EVT_BUTTON(XRCID("btnFilename"),             frmRestore::OnSelectFilename)
@@ -170,6 +173,11 @@ frmRestore::frmRestore(frmMain *_form, pgObject *obj) : ExternProcessDialog(form
 		chkExitOnError->Disable();
 	}
 
+	cbFormat->Append(_("Custom or tar"));
+	if (pgAppMinimumVersion(restoreExecutable, 9, 1))
+		cbFormat->Append(_("Directory"));
+	cbFormat->SetSelection(0);
+
 	wxCommandEvent ev;
 	OnChangeName(ev);
 }
@@ -191,26 +199,43 @@ wxString frmRestore::GetHelpPage() const
 
 void frmRestore::OnSelectFilename(wxCommandEvent &ev)
 {
-
-	wxString FilenameOnly;
-	wxFileName::SplitPath(txtFilename->GetValue(), NULL, NULL, &FilenameOnly, NULL);
+	if (cbFormat->GetSelection() == 0) // custom or tar
+	{
+		wxString FilenameOnly;
+		wxFileName::SplitPath(txtFilename->GetValue(), NULL, NULL, &FilenameOnly, NULL);
 
 #ifdef __WXMSW__
-	wxFileDialog file(this, _("Select backup filename"), ::wxPathOnly(txtFilename->GetValue()), FilenameOnly,
-	                  _("Backup files (*.backup)|*.backup|All files (*.*)|*.*"));
+		wxFileDialog file(this, _("Select backup filename"), ::wxPathOnly(txtFilename->GetValue()), FilenameOnly,
+		                  _("Backup files (*.backup)|*.backup|All files (*.*)|*.*"));
 #else
-	wxFileDialog file(this, _("Select backup filename"), ::wxPathOnly(txtFilename->GetValue()), FilenameOnly,
-	                  _("Backup files (*.backup)|*.backup|All files (*)|*"));
+		wxFileDialog file(this, _("Select backup filename"), ::wxPathOnly(txtFilename->GetValue()), FilenameOnly,
+		                  _("Backup files (*.backup)|*.backup|All files (*)|*"));
 #endif
 
-	if (file.ShowModal() == wxID_OK)
+		if (file.ShowModal() == wxID_OK)
+		{
+			txtFilename->SetValue(file.GetPath());
+			OnChange(ev);
+		}
+	}
+	else
 	{
-		txtFilename->SetValue(file.GetPath());
-		OnChange(ev);
+		wxDirDialog dir(this, _("Select the backup directory"), txtFilename->GetValue());
+		if (dir.ShowModal() == wxID_OK)
+		{
+			txtFilename->SetValue(dir.GetPath());
+			OnChange(ev);
+		}
 	}
 }
 
 
+void frmRestore::OnChangeFormat(wxCommandEvent &ev)
+{
+	btnView->Enable(cbFormat->GetSelection() == 0);
+}
+
+
 void frmRestore::OnChangeData(wxCommandEvent &ev)
 {
 	if (chkOnlyData->GetValue())
@@ -242,31 +267,38 @@ void frmRestore::OnChangeSchema(wxCommandEvent &ev)
 void frmRestore::OnChangeName(wxCommandEvent &ev)
 {
 	wxString name = txtFilename->GetValue();
-	if (name.IsEmpty() || !wxFile::Exists(name))
-		filenameValid = false;
-	else
-	{
-		wxFile file(name, wxFile::read);
-		if (file.IsOpened())
-		{
-			char buffer[8];
-			off_t size = file.Read(buffer, 8);
-			if (size == 8)
-			{
-				if (memcmp(buffer, "PGDMP", 5) && !memcmp(buffer, "toc.dat", 8))
-				{
-					// tar format?
-					file.Seek(512);
-					size = file.Read(buffer, 8);
-				}
-				if (size == 8 && !memcmp(buffer, "PGDMP", 5))
-				{
-					// check version here?
-					filenameValid = true;
-				}
-			}
-		}
-	}
+    if (cbFormat->GetSelection() == 0)
+    {
+        if (name.IsEmpty() || !wxFile::Exists(name))
+            filenameValid = false;
+        else
+        {
+            wxFile file(name, wxFile::read);
+            if (file.IsOpened())
+            {
+                char buffer[8];
+                off_t size = file.Read(buffer, 8);
+                if (size == 8)
+                {
+                    if (memcmp(buffer, "PGDMP", 5) && !memcmp(buffer, "toc.dat", 8))
+                    {
+                        // tar format?
+                        file.Seek(512);
+                        size = file.Read(buffer, 8);
+                    }
+                    if (size == 8 && !memcmp(buffer, "PGDMP", 5))
+                    {
+                        // check version here?
+                        filenameValid = true;
+                    }
+                }
+            }
+        }
+    }
+    else
+    {
+        filenameValid = wxDir::Exists(name);
+    }
 	OnChange(ev);
 }
 
@@ -335,6 +367,11 @@ wxString frmRestore::getCmdPart2(int step)
 	}
 	else
 	{
+		if (cbFormat->GetSelection() == 1) // directory
+		{
+			cmd.Append(wxT(" --format directory"));
+		}
+
 		if (chkOnlyData->GetValue())
 		{
 			cmd.Append(wxT(" --data-only"));
diff --git a/pgadmin/include/frm/frmRestore.h b/pgadmin/include/frm/frmRestore.h
index dc34c62..235a929 100644
--- a/pgadmin/include/frm/frmRestore.h
+++ b/pgadmin/include/frm/frmRestore.h
@@ -34,6 +34,7 @@ private:
 	void OnSelectFilename(wxCommandEvent &ev);
 	void OnView(wxCommandEvent &ev);
 	void OnOK(wxCommandEvent &ev);
+	void OnChangeFormat(wxCommandEvent &ev);
 	void OnChangeData(wxCommandEvent &ev);
 	void OnChangeSchema(wxCommandEvent &ev);
 	void OnChangeList(wxListEvent &ev);
diff --git a/pgadmin/ui/frmBackup.xrc b/pgadmin/ui/frmBackup.xrc
index 5a89a92..e05cfa6 100644
--- a/pgadmin/ui/frmBackup.xrc
+++ b/pgadmin/ui/frmBackup.xrc
@@ -63,15 +63,9 @@
                   <border>4</border>
                 </object>
                 <object class="sizeritem">
-                  <object class="wxRadioBox" name="rbxFormat">
-                    <content>
-                      <item>COMPRESS</item>
-                      <item>TAR</item>
-                      <item>PLAIN</item>
-                    </content>
-                    <selection>0</selection>
-                    <dimension>1</dimension>
-                    <style>wxRA_SPECIFY_COLS</style>
+                  <object class="wxComboBox" name="cbFormat">
+                    <content/>
+                    <style>wxCB_READONLY|wxCB_DROPDOWN</style>
                   </object>
                   <flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
                   <border>4</border>
diff --git a/pgadmin/ui/frmRestore.xrc b/pgadmin/ui/frmRestore.xrc
index 8e6ef2f..09eeff7 100644
--- a/pgadmin/ui/frmRestore.xrc
+++ b/pgadmin/ui/frmRestore.xrc
@@ -19,11 +19,26 @@
             <object class="wxPanel" name="pnlFileOptions">
               <object class="wxFlexGridSizer">
                 <cols>2</cols>
-                <rows>3</rows>
+                <rows>4</rows>
                 <vgap>5</vgap>
                 <hgap>5</hgap>
                 <growablecols>1</growablecols>
                 <object class="sizeritem">
+                  <object class="wxStaticText" name="stFormat">
+                    <label>Format</label>
+                  </object>
+                  <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                  <border>4</border>
+                </object>
+                <object class="sizeritem">
+                  <object class="wxComboBox" name="cbFormat">
+                    <content/>
+                    <style>wxCB_READONLY|wxCB_DROPDOWN</style>
+                  </object>
+                  <flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
+                  <border>4</border>
+                </object>
+                <object class="sizeritem">
                   <object class="wxStaticText" name="stFilename">
                     <label>Filename</label>
                   </object>
-- 
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers

Reply via email to