Hi,
I wrote a small patch to add the "delete script" item in the script menu
on tables.
It just open an sql editor with a delete query in it for the selected table.
Regards,
Rémi.
Index: pgadmin/include/frm/frmQuery.h
===================================================================
--- pgadmin/include/frm/frmQuery.h (révision 7174)
+++ pgadmin/include/frm/frmQuery.h (copie de travail)
@@ -226,6 +226,14 @@
wxWindow *StartDialog(frmMain *form, pgObject *obj);
};
+class queryToolDeleteFactory : public queryToolDataFactory
+{
+public:
+ queryToolDeleteFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
+ wxWindow *StartDialog(frmMain *form, pgObject *obj);
+ bool CheckEnable(pgObject *obj);
+};
+
class queryToolInsertFactory : public queryToolDataFactory
{
public:
Index: pgadmin/include/schema/pgTable.h
===================================================================
--- pgadmin/include/schema/pgTable.h (révision 7174)
+++ pgadmin/include/schema/pgTable.h (copie de travail)
@@ -106,6 +106,7 @@
wxString GetSelectSql(ctlTree *browser);
wxString GetInsertSql(ctlTree *browser);
wxString GetUpdateSql(ctlTree *browser);
+ wxString GetDeleteSql(ctlTree *browser);
wxString GetHelpPage(bool forCreate) const;
pgObject *Refresh(ctlTree *browser, const wxTreeItemId item);
void iSetTriggersEnabled(ctlTree *browser, bool enable);
Index: pgadmin/frm/frmQuery.cpp
===================================================================
--- pgadmin/frm/frmQuery.cpp (révision 7174)
+++ pgadmin/frm/frmQuery.cpp (copie de travail)
@@ -2032,7 +2032,31 @@
return 0;
}
+queryToolDeleteFactory::queryToolDeleteFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar) :
queryToolDataFactory(list)
+{
+ mnu->Append(id, _("DELETE script"), _("Start query tool with DELETE script."));
+}
+bool queryToolDeleteFactory::CheckEnable(pgObject *obj)
+{
+ if (!queryToolDataFactory::CheckEnable(obj))
+ return false;
+ if (obj->IsCreatedBy(tableFactory))
+ return true;
+ return false;
+}
+
+wxWindow *queryToolDeleteFactory::StartDialog(frmMain *form, pgObject *obj)
+{
+ if (obj->IsCreatedBy(tableFactory))
+ {
+ pgTable *table = (pgTable*)obj;
+ return StartDialogSql(form, obj, table->GetDeleteSql(form->GetBrowser()));
+ }
+ return 0;
+}
+
+
queryToolUpdateFactory::queryToolUpdateFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar) :
queryToolDataFactory(list)
{
mnu->Append(id, _("UPDATE script"), _("Start query tool with UPDATE script."));
Index: pgadmin/frm/frmMain.cpp
===================================================================
--- pgadmin/frm/frmMain.cpp (révision 7174)
+++ pgadmin/frm/frmMain.cpp (copie de travail)
@@ -354,6 +354,7 @@
new queryToolSelectFactory(menuFactories, scriptingMenu, 0);
new queryToolInsertFactory(menuFactories, scriptingMenu, 0);
new queryToolUpdateFactory(menuFactories, scriptingMenu, 0);
+ new queryToolDeleteFactory(menuFactories, scriptingMenu, 0);
viewdataMenuFactory = new submenuFactory(menuFactories); // placeholder where "View data" submenu will be
inserted
toolsMenu->Append(viewdataMenuFactory->GetId(), _("View &Data"), viewDataMenu, _("View data."));
Index: pgadmin/schema/pgTable.cpp
===================================================================
--- pgadmin/schema/pgTable.cpp (révision 7174)
+++ pgadmin/schema/pgTable.cpp (copie de travail)
@@ -472,6 +472,14 @@
return sql;
}
+wxString pgTable::GetDeleteSql(ctlTree *browser)
+{
+ wxString qms;
+ wxString sql =
+ wxT("DELETE FROM ") + GetQuotedFullIdentifier() + wxT("\n")
+ wxT(" WHERE <condition>;\n");
+ return sql;
+}
bool pgTable::EnableTriggers(const bool b)
{