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