Hi,

Patch attached. Comments very welcomed, as there was already a little
talk about the usefulness of this functionality some time ago (see
http://code.pgadmin.org/trac/ticket/141 for details).


-- 
Guillaume.
 http://www.postgresqlfr.org
 http://dalibo.com
diff --git a/pgadmin/frm/frmMain.cpp b/pgadmin/frm/frmMain.cpp
index 67e9b67..d0134a8 100644
--- a/pgadmin/frm/frmMain.cpp
+++ b/pgadmin/frm/frmMain.cpp
@@ -333,6 +333,7 @@ void frmMain::CreateMenus()
 
     new startServiceFactory(menuFactories, toolsMenu, 0);
     new stopServiceFactory(menuFactories, toolsMenu, 0);
+    new reloadconfServiceFactory(menuFactories, toolsMenu, 0);
 
     new createFactory(menuFactories, editMenu, toolBar);
     new dropFactory(menuFactories, editMenu, toolBar);
diff --git a/pgadmin/include/schema/pgServer.h b/pgadmin/include/schema/pgServer.h
index 9567897..776ffd0 100644
--- a/pgadmin/include/schema/pgServer.h
+++ b/pgadmin/include/schema/pgServer.h
@@ -53,6 +53,7 @@ public:
     bool StopService();
     bool GetServerRunning();
     bool GetServerControllable();
+    bool ReloadConfiguration();
 
     pgServer *GetServer() const;
 
@@ -267,4 +268,12 @@ public:
     bool CheckEnable(pgObject *obj);
 };
 
+class reloadconfServiceFactory : public contextActionFactory
+{
+public:
+    reloadconfServiceFactory (menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
+    wxWindow *StartDialog(frmMain *form, pgObject *obj);
+    bool CheckEnable(pgObject *obj);
+};
+
 #endif
diff --git a/pgadmin/schema/pgServer.cpp b/pgadmin/schema/pgServer.cpp
index e62f552..46ca382 100644
--- a/pgadmin/schema/pgServer.cpp
+++ b/pgadmin/schema/pgServer.cpp
@@ -1066,6 +1066,13 @@ void pgServer::ShowDependents(frmMain *form, ctlListView *referencedBy, const wx
     referencedBy->AddColumn(_("Restriction"), 50);
 }
 
+bool pgServer::ReloadConfiguration()
+{
+    wxString sql = wxT("select pg_reload_conf()");
+    return conn->ExecuteVoid(sql);
+}
+
+
 pgServerCollection::pgServerCollection(pgaFactory *factory)
  : pgCollection(factory)
 {
@@ -1548,3 +1555,30 @@ bool disconnectServerFactory::CheckEnable(pgObject *obj)
 
     return false;
 }
+
+reloadconfServiceFactory::reloadconfServiceFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar) : contextActionFactory(list)
+{
+    mnu->Append(id, _("Reload configuration"), _("Reload configuration"));
+}
+
+
+wxWindow *reloadconfServiceFactory::StartDialog(frmMain *form, pgObject *obj)
+{
+    pgServer *server= (pgServer*)obj;
+    form->StartMsg(_("Reloading configuration"));
+    bool rc = server->ReloadConfiguration();
+    form->EndMsg(rc);
+    return 0;
+}
+
+
+bool reloadconfServiceFactory::CheckEnable(pgObject *obj)
+{
+    if (obj && obj->IsCreatedBy(serverFactory))
+    {
+        pgServer *server=(pgServer*)obj;
+        return server->GetConnected() && server->connection()->BackendMinimumVersion(8, 1);
+    }
+    return false;
+}
+
-- 
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