Le 12/04/2010 12:45, Dave Page a écrit :
> On Sat, Apr 10, 2010 at 4:16 PM, Guillaume Lelarge
> <[email protected]> wrote:
>> I don't commit it right now. Dave, can you get a look at it? is the
>> patch good to go? Thanks.
>
> Instead of maintaining a new array of frmQuery's, can you use the
> existing frames array (see dlgClasses.c|h)?
>
Sure. Took me all evening, but at least it's done now :)
See patch attached.
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
diff --git a/pgadmin/dlg/dlgClasses.cpp b/pgadmin/dlg/dlgClasses.cpp
index 943a8a5..2ed3170 100644
--- a/pgadmin/dlg/dlgClasses.cpp
+++ b/pgadmin/dlg/dlgClasses.cpp
@@ -293,7 +293,7 @@ void pgFrame::OnRecent(wxCommandEvent& event)
-void pgFrame::UpdateRecentFiles()
+void pgFrame::UpdateRecentFiles(bool updatefile)
{
if (!recentFileMenu)
return;
@@ -314,7 +314,7 @@ void pgFrame::UpdateRecentFiles()
while (i <= maxFiles)
lastFiles[i++] = wxT("");
- if (recentIndex > 1 && !lastPath.IsNull())
+ if (recentIndex > 1 && !lastPath.IsNull() && updatefile)
{
for (i=recentIndex ; i > 1 ; i--)
lastFiles[i] = lastFiles[i-1];
@@ -332,7 +332,8 @@ void pgFrame::UpdateRecentFiles()
for (i=1 ; i <= maxFiles ; i++)
{
- settings->Write(recentKey + wxString::Format(wxT("/%d"), i), lastFiles[i]);
+ if (updatefile)
+ settings->Write(recentKey + wxString::Format(wxT("/%d"), i), lastFiles[i]);
if (!lastFiles[i].IsNull())
recentFileMenu->Append(MNU_RECENT+i, wxT("&") + wxString::Format(wxT("%d"), i) + wxT(" ") + lastFiles[i]);
diff --git a/pgadmin/frm/events.cpp b/pgadmin/frm/events.cpp
index a6089fc..f705333 100644
--- a/pgadmin/frm/events.cpp
+++ b/pgadmin/frm/events.cpp
@@ -142,6 +142,47 @@ void frmMain::OnClose(wxCloseEvent& event)
}
+void frmMain::UpdateAllRecentFiles()
+{
+ wxWindow *fr;
+ windowList::Node *node;
+ node = frames.GetFirst();
+ while (node)
+ {
+ fr=node->GetData();
+ ((frmQuery*)fr)->UpdateRecentFiles(false);
+ node = node->GetNext();
+ }
+}
+
+
+void frmMain::UpdateAllFavouritesList()
+{
+ wxWindow *fr;
+ windowList::Node *node;
+ node = frames.GetFirst();
+ while (node)
+ {
+ fr=node->GetData();
+ ((frmQuery*)fr)->UpdateFavouritesList();
+ node = node->GetNext();
+ }
+}
+
+void frmMain::UpdateAllMacrosList()
+{
+ wxWindow *fr;
+ windowList::Node *node;
+ node = frames.GetFirst();
+ while (node)
+ {
+ fr=node->GetData();
+ ((frmQuery*)fr)->UpdateMacrosList();
+ node = node->GetNext();
+ }
+}
+
+
void frmMain::OnAction(wxCommandEvent &ev)
{
actionFactory *af=menuFactories->GetFactory(ev.GetId());
diff --git a/pgadmin/frm/frmQuery.cpp b/pgadmin/frm/frmQuery.cpp
index 1a460f3..23497b9 100644
--- a/pgadmin/frm/frmQuery.cpp
+++ b/pgadmin/frm/frmQuery.cpp
@@ -191,7 +191,8 @@ class DnDFile : public wxFileDropTarget
m_fquery->SetChanged(false);
m_fquery->setExtendedTitle();
m_fquery->SetLineEndingStyle();
- m_fquery->UpdateRecentFiles();
+ m_fquery->UpdateRecentFiles(true);
+ m_fquery->UpdateAllRecentFiles();
}
}
return true;
@@ -305,14 +306,14 @@ pgsTimer(new pgScriptTimer(this))
favouritesMenu->Append(MNU_FAVOURITES_ADD, _("Add favourite..."), _("Add current query to favourites"));
favouritesMenu->Append(MNU_FAVOURITES_MANAGE, _("Manage favourites..."), _("Edit and delete favourites"));
favouritesMenu->AppendSeparator();
- favourites = queryFavouriteFileProvider::LoadFavourites(true);
+ favourites = 0L;
UpdateFavouritesList();
menuBar->Append(favouritesMenu, _("Fav&ourites"));
macrosMenu = new wxMenu();
macrosMenu->Append(MNU_MACROS_MANAGE, _("Manage macros..."), _("Edit and delete macros"));
macrosMenu->AppendSeparator();
- macros = queryMacroFileProvider::LoadMacros(true);
+ macros = 0L;
UpdateMacrosList();
menuBar->Append(macrosMenu, _("&Macros"));
@@ -1385,6 +1386,11 @@ void frmQuery::updateMenu(wxObject *obj)
void frmQuery::UpdateFavouritesList()
{
+ if (favourites)
+ delete favourites;
+
+ favourites = queryFavouriteFileProvider::LoadFavourites(true);
+
while (favouritesMenu->GetMenuItemCount() > 3)
{
favouritesMenu->Destroy(favouritesMenu->GetMenuItems()[3]);
@@ -1396,6 +1402,11 @@ void frmQuery::UpdateFavouritesList()
void frmQuery::UpdateMacrosList()
{
+ if (macros)
+ delete macros;
+
+ macros = queryMacroFileProvider::LoadMacros(true);
+
while (macrosMenu->GetMenuItemCount() > 2)
{
macrosMenu->Destroy(macrosMenu->GetMenuItems()[2]);
@@ -1413,7 +1424,7 @@ void frmQuery::OnAddFavourite(wxCommandEvent &event)
{
// Added a favourite, so save
queryFavouriteFileProvider::SaveFavourites(favourites);
- UpdateFavouritesList();
+ mainForm->UpdateAllFavouritesList();
}
}
@@ -1425,14 +1436,11 @@ void frmQuery::OnManageFavourites(wxCommandEvent &event)
{
// Changed something, so save
queryFavouriteFileProvider::SaveFavourites(favourites);
- UpdateFavouritesList();
}
- else if (r == -1)
+ if (r == 1 || r == -1)
{
// Changed something requiring rollback
- delete favourites;
- favourites = queryFavouriteFileProvider::LoadFavourites(true);
- UpdateFavouritesList();
+ mainForm->UpdateAllFavouritesList();
}
}
@@ -1593,11 +1601,17 @@ void frmQuery::OpenLastFile()
changed = false;
setExtendedTitle();
SetLineEndingStyle();
- UpdateRecentFiles();
+ UpdateRecentFiles(true);
+ mainForm->UpdateAllRecentFiles();
}
}
+void frmQuery::UpdateAllRecentFiles()
+{
+ mainForm->UpdateAllRecentFiles();
+}
+
void frmQuery::OnNew(wxCommandEvent& event)
{
frmQuery *fq = new frmQuery(mainForm, wxEmptyString, conn->Duplicate(), wxEmptyString);
@@ -2135,14 +2149,11 @@ void frmQuery::OnMacroManage(wxCommandEvent &event)
{
// Changed something, so save
queryMacroFileProvider::SaveMacros(macros);
- UpdateMacrosList();
}
- else if (r == -1)
+ if (r == -1 || r == 1)
{
// Changed something requiring rollback
- delete macros;
- macros = queryMacroFileProvider::LoadMacros(true);
- UpdateMacrosList();
+ mainForm->UpdateAllMacrosList();
}
}
diff --git a/pgadmin/include/dlg/dlgClasses.h b/pgadmin/include/dlg/dlgClasses.h
index 26f576e..c5c4d23 100644
--- a/pgadmin/include/dlg/dlgClasses.h
+++ b/pgadmin/include/dlg/dlgClasses.h
@@ -60,7 +60,7 @@ public:
void SavePosition();
void OnAction(wxCommandEvent& event);
- void UpdateRecentFiles();
+ void UpdateRecentFiles(bool updatefile=true);
menuFactoryList *GetMenuFactories() { return menuFactories; }
diff --git a/pgadmin/include/frm/frmMain.h b/pgadmin/include/frm/frmMain.h
index d9980a9..1e1ea01 100644
--- a/pgadmin/include/frm/frmMain.h
+++ b/pgadmin/include/frm/frmMain.h
@@ -21,6 +21,7 @@
// wxAUI
#include <wx/aui/aui.h>
+#include "frm/frmQuery.h"
#include "dlg/dlgClasses.h"
#include "utils/factory.h"
@@ -116,6 +117,10 @@ public:
wxString GetCurrentNodePath();
bool SetCurrentNode(wxTreeItemId node, const wxString &path);
+ void UpdateAllRecentFiles();
+ void UpdateAllFavouritesList();
+ void UpdateAllMacrosList();
+
private:
wxAuiManager manager;
ctlTree *browser;
diff --git a/pgadmin/include/frm/frmQuery.h b/pgadmin/include/frm/frmQuery.h
index c94ad7e..c4371f5 100644
--- a/pgadmin/include/frm/frmQuery.h
+++ b/pgadmin/include/frm/frmQuery.h
@@ -82,6 +82,13 @@ public:
void SetLastPath(wxString p_lastpath) { lastPath = p_lastpath; }
bool CheckChanged(bool canVeto);
+ void UpdateFavouritesList();
+ void UpdateMacrosList();
+
+ void UpdateAllRecentFiles();
+ void UpdateAllFavouritesList();
+ void UpdateAllMacrosList();
+
private:
frmMain *mainForm;
wxAuiManager manager;
@@ -200,13 +207,11 @@ private:
void OnScriptComplete(wxCommandEvent &ev);
void setTools(const bool running);
void showMessage(const wxString& msg, const wxString &msgShort=wxT(""));
- void UpdateFavouritesList();
int GetLineEndingStyle();
void OnSetEOLMode(wxCommandEvent& event);
void SetEOLModeDisplay(int mode);
void OnMacroInvoke(wxCommandEvent& event);
void OnMacroManage(wxCommandEvent& event);
- void UpdateMacrosList();
void LoadQueries();
void SaveQueries();
--
Sent via pgadmin-support mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-support