Le 23/01/2010 18:09, Guillaume Lelarge a écrit : > Le 23/01/2010 17:37, Nick Kitson a écrit : >> Hi Guillaume, >> >> Good point - I recently moved from XP to Win7 so can use mklink /H which >> works just fine. Many thanks for the tip. Would be worth building the >> choice in when you get the time. >> > > Yes, I think it could be interesting to have this. I'll add a ticket for > this. >
I've worked on this. Here is a preliminary patch, that allows a user to change the filename and path for the favourites file and the macros file. It needs some more work, when the patch for ticket 93 (history for queries) will be commited. But comments are welcomed :) -- Guillaume. http://www.postgresqlfr.org http://dalibo.com
diff --git a/pgadmin/frm/frmOptions.cpp b/pgadmin/frm/frmOptions.cpp index 958e373..0d0d08e 100644 --- a/pgadmin/frm/frmOptions.cpp +++ b/pgadmin/frm/frmOptions.cpp @@ -73,6 +73,8 @@ #define pickerActiveProcessColour CTRL_COLOURPICKER("pickerActiveProcessColour") #define pickerSlowProcessColour CTRL_COLOURPICKER("pickerSlowProcessColour") #define pickerBlockedProcessColour CTRL_COLOURPICKER("pickerBlockedProcessColour") +#define txtFavouritesFile CTRL_TEXT("txtFavouritesFile") +#define txtMacrosFile CTRL_TEXT("txtMacrosFile") BEGIN_EVENT_TABLE(frmOptions, pgDialog) EVT_MENU(MNU_HELP, frmOptions::OnHelp) @@ -90,6 +92,8 @@ BEGIN_EVENT_TABLE(frmOptions, pgDialog) EVT_BUTTON (wxID_HELP, frmOptions::OnHelp) EVT_BUTTON (wxID_CANCEL, frmOptions::OnCancel) EVT_COMBOBOX(XRCID("cbCopyQuote"), frmOptions::OnChangeCopyQuote) + EVT_BUTTON (XRCID("btnFavoritesPath"), frmOptions::OnFavouritesFileSelect) + EVT_BUTTON (XRCID("btnMacrosFile"), frmOptions::OnMacrosFileSelect) END_EVENT_TABLE() @@ -227,6 +231,9 @@ frmOptions::frmOptions(frmMain *parent) pickerSlowProcessColour->SetColour(settings->GetSlowProcessColour()); pickerBlockedProcessColour->SetColour(settings->GetBlockedProcessColour()); + txtFavouritesFile->SetValue(settings->GetFavouritesFile()); + txtMacrosFile->SetValue(settings->GetMacrosFile()); + cbLanguage->Append(_("Default")); int sel=0; wxLanguage langId=settings->GetCanonicalLanguage(); @@ -594,6 +601,9 @@ void frmOptions::OnOK(wxCommandEvent &ev) changed = true; settings->SetBlockedProcessColour(sColour); + settings->SetFavouritesFile(txtFavouritesFile->GetValue()); + settings->SetMacrosFile(txtMacrosFile->GetValue()); + // Change the language last, as it will affect our tests for changes // in the display object types. int langNo=cbLanguage->GetCurrentSelection(); @@ -714,3 +724,19 @@ wxString frmOptions::CheckColour(wxString oldColour) return newColour; } + +void frmOptions::OnFavouritesFileSelect(wxCommandEvent &ev) +{ + wxFileDialog dlg(this, _("Select file to store favourites queries"), txtFavouritesFile->GetValue()); + if (dlg.ShowModal() == wxID_OK) + txtFavouritesFile->SetValue(dlg.GetPath()); +} + + +void frmOptions::OnMacrosFileSelect(wxCommandEvent &ev) +{ + wxFileDialog dlg(this, _("Select file to store macros"), txtMacrosFile->GetValue()); + if (dlg.ShowModal() == wxID_OK) + txtMacrosFile->SetValue(dlg.GetPath()); +} + diff --git a/pgadmin/include/frm/frmOptions.h b/pgadmin/include/frm/frmOptions.h index 2ff9db6..8d657d1 100644 --- a/pgadmin/include/frm/frmOptions.h +++ b/pgadmin/include/frm/frmOptions.h @@ -48,6 +48,8 @@ private: void OnSuppressHints(wxCommandEvent &ev); void OnResetHints(wxCommandEvent &ev); void OnChangeCopyQuote(wxCommandEvent &ev); + void OnFavouritesFileSelect(wxCommandEvent &ev); + void OnMacrosFileSelect(wxCommandEvent &ev); wxString CheckColour(wxString colour); DECLARE_EVENT_TABLE() }; diff --git a/pgadmin/include/utils/sysSettings.h b/pgadmin/include/utils/sysSettings.h index 984f287..84f7115 100644 --- a/pgadmin/include/utils/sysSettings.h +++ b/pgadmin/include/utils/sysSettings.h @@ -120,6 +120,10 @@ public: void SetSQLFont(const wxFont &font); int GetLineEndingType() const { int i; Read(wxT("LineEndingType"), &i, 2); return i; } void SetLineEndingType(const int newval) { Write(wxT("LineEndingType"), newval); } + wxString GetFavouritesFile(); + void SetFavouritesFile(const wxString &newval) { Write(wxT("FavouritesFile"), newval); } + wxString GetMacrosFile(); + void SetMacrosFile(const wxString &newval) { Write(wxT("MacrosFile"), newval); } // Status Colours options wxString GetIdleProcessColour() const { wxString s; Read(wxT("IdleProcessColour"), &s, wxT("#5fa4d9")); return s; } @@ -177,9 +181,7 @@ public: enum configFileName { - PGPASS, - PGAFAVOURITES, - PGAMACROS + PGPASS }; static wxString GetConfigFile(configFileName cfgname); diff --git a/pgadmin/ui/frmOptions.xrc b/pgadmin/ui/frmOptions.xrc index 317f6f0..3f47ba4 100644 --- a/pgadmin/ui/frmOptions.xrc +++ b/pgadmin/ui/frmOptions.xrc @@ -3,7 +3,7 @@ <object class="wxDialog" name="frmOptions"> <title>Options</title> <pos>0,0d</pos> - <size>246,235d</size> + <size>246,280d</size> <style>wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxCAPTION|wxSYSTEM_MENU</style> <object class="wxNotebook" name="nbOptions"> <object class="notebookpage"> @@ -185,7 +185,7 @@ </object> </object> <object class="notebookpage"> - <label>Query</label> + <label>Query Tool</label> <object class="wxPanel" name="pnlQuery"> <object class="wxStaticText" name="stSqlFont"> <label>Font</label> @@ -318,6 +318,45 @@ <pos>175,172d</pos> <size>226,12d</size> </object> + <object class="wxStaticText" name="stFavouritesFile"> + <label>Favourites file path</label> + <pos>5,187d</pos> + </object> + <object class="wxTextCtrl" name="txtFavouritesFile"> + <pos>70,185d</pos> + <size>140,-1d</size> + </object> + <object class="wxButton" name="btnFavouritesFile"> + <label>...</label> + <pos>215,185d</pos> + <size>15,-1d</size> + </object> + <object class="wxStaticText" name="stMacrosFile"> + <label>Macros file path</label> + <pos>5,203d</pos> + </object> + <object class="wxTextCtrl" name="txtMacrosFile"> + <pos>70,201d</pos> + <size>140,-1d</size> + </object> + <object class="wxButton" name="btnMacrosFile"> + <label>...</label> + <pos>215,201d</pos> + <size>15,-1d</size> + </object> + <object class="wxStaticText" name="stHistoryPath"> + <label>History file path</label> + <pos>5,218d</pos> + </object> + <object class="wxTextCtrl" name="txtHistoryPath"> + <pos>70,216d</pos> + <size>140,-1d</size> + </object> + <object class="wxButton" name="btnHistoryPath"> + <label>...</label> + <pos>215,216d</pos> + <size>15,-1d</size> + </object> </object> </object> <object class="notebookpage"> @@ -394,7 +433,7 @@ </object> </object> <pos>2,3d</pos> - <size>240,210d</size> + <size>240,255d</size> <object class="notebookpage"> <label>Display</label> <object class="wxPanel" name="pnlDisplay"> @@ -422,18 +461,18 @@ </object> <object class="wxButton" name="wxID_HELP"> <label>&Help</label> - <pos>2,216d</pos> + <pos>2,261d</pos> </object> <object class="wxButton" name="wxID_OK"> <label>&OK</label> <default>1</default> - <pos>140,216d</pos> + <pos>140,261d</pos> <tooltip>Accept the current settings and close the dialogue.</tooltip> </object> <object class="wxButton" name="wxID_CANCEL"> <label>&Cancel</label> <default>0</default> - <pos>193,216d</pos> + <pos>193,261d</pos> <tooltip>Cancel any changes and close the dialogue.</tooltip> </object> </object> diff --git a/pgadmin/utils/favourites.cpp b/pgadmin/utils/favourites.cpp index 838f95b..6b2c644 100644 --- a/pgadmin/utils/favourites.cpp +++ b/pgadmin/utils/favourites.cpp @@ -284,10 +284,10 @@ queryFavouriteFolder *queryFavouriteFileProvider::LoadFavourites(bool emptyonfai xmlTextReaderPtr reader; int ret; - if (!wxFile::Access(sysSettings::GetConfigFile(sysSettings::PGAFAVOURITES), wxFile::read)) + if (!wxFile::Access(settings->GetFavouritesFile(), wxFile::read)) return emptyonfailure?(new queryFavouriteFolder()):NULL; - reader = xmlReaderForFile((const char *)sysSettings::GetConfigFile(sysSettings::PGAFAVOURITES).mb_str(wxConvUTF8),NULL,0); + reader = xmlReaderForFile((const char *)settings->GetFavouritesFile().mb_str(wxConvUTF8),NULL,0); if (!reader) { wxMessageBox(_("Failed to load favourites file!")); @@ -314,7 +314,7 @@ void queryFavouriteFileProvider::SaveFavourites(queryFavouriteFolder *favourites { xmlTextWriterPtr writer; - writer = xmlNewTextWriterFilename((const char *)sysSettings::GetConfigFile(sysSettings::PGAFAVOURITES).mb_str(wxConvUTF8),0); + writer = xmlNewTextWriterFilename((const char *)settings->GetFavouritesFile().mb_str(wxConvUTF8),0); if (!writer) { wxMessageBox(_("Failed to write to favourites file!")); diff --git a/pgadmin/utils/macros.cpp b/pgadmin/utils/macros.cpp index f758843..a10756a 100644 --- a/pgadmin/utils/macros.cpp +++ b/pgadmin/utils/macros.cpp @@ -221,10 +221,10 @@ queryMacroList *queryMacroFileProvider::LoadMacros(bool emptyOnFailure) xmlTextReaderPtr reader; int ret; - if (!wxFile::Access(sysSettings::GetConfigFile(sysSettings::PGAMACROS), wxFile::read)) + if (!wxFile::Access(settings->GetMacrosFile(), wxFile::read)) return emptyOnFailure ? (new queryMacroList()) : NULL; - reader = xmlReaderForFile((const char *)sysSettings::GetConfigFile(sysSettings::PGAMACROS).mb_str(wxConvUTF8),NULL,0); + reader = xmlReaderForFile((const char *)settings->GetMacrosFile().mb_str(wxConvUTF8),NULL,0); if (!reader) { wxMessageBox(_("Failed to load macros file!")); @@ -251,7 +251,7 @@ void queryMacroFileProvider::SaveMacros(queryMacroList *macros) { xmlTextWriterPtr writer; - writer = xmlNewTextWriterFilename((const char *)sysSettings::GetConfigFile(sysSettings::PGAMACROS).mb_str(wxConvUTF8),0); + writer = xmlNewTextWriterFilename((const char *)settings->GetMacrosFile().mb_str(wxConvUTF8),0); if (!writer) { wxMessageBox(_("Failed to open macros file!")); diff --git a/pgadmin/utils/sysSettings.cpp b/pgadmin/utils/sysSettings.cpp index faa8c16..3a3f261 100644 --- a/pgadmin/utils/sysSettings.cpp +++ b/pgadmin/utils/sysSettings.cpp @@ -683,7 +683,7 @@ void sysSettings::SetCanonicalLanguage(const wxLanguage &lang) ////////////////////////////////////////////////////////////////////////// wxString sysSettings::GetConfigFile(configFileName cfgname) { - if (cfgname == PGPASS || cfgname == PGAFAVOURITES || cfgname == PGAMACROS) + if (cfgname == PGPASS) { wxStandardPaths stdp; wxString fname=stdp.GetUserConfigDir(); @@ -696,12 +696,6 @@ wxString sysSettings::GetConfigFile(configFileName cfgname) case PGPASS: fname += wxT("\\pgpass.conf"); break; - case PGAFAVOURITES: - fname += wxT("\\pgadmin_favourites.xml"); - break; - case PGAMACROS: - fname += wxT("\\pgadmin_macros.xml"); - break; } #else switch(cfgname) @@ -709,15 +703,51 @@ wxString sysSettings::GetConfigFile(configFileName cfgname) case PGPASS: fname += wxT("/.pgpass"); break; - case PGAFAVOURITES: - fname += wxT("/.pgadminfavourites"); - break; - case PGAMACROS: - fname += wxT("/.pgadminmacros"); - break; } #endif return fname; } return wxT(""); } + + +wxString sysSettings::GetFavouritesFile() +{ + wxString s, tmp; + + wxStandardPaths stdp; + tmp = stdp.GetUserConfigDir(); +#ifdef WIN32 + tmp += wxT("\\postgresql"); + if (!wxDirExists(tmp)) + wxMkdir(tmp); + tmp += wxT("\\pgadmin_favourites.xml"); +#else + tmp += wxT("/.pgadminfavourites"); +#endif + + Read(wxT("FavouritesFile"), &s, tmp); + + return s; +} + + +wxString sysSettings::GetMacrosFile() +{ + wxString s, tmp; + + wxStandardPaths stdp; + tmp = stdp.GetUserConfigDir(); +#ifdef WIN32 + tmp += wxT("\\postgresql"); + if (!wxDirExists(tmp)) + wxMkdir(tmp); + tmp += wxT("\\pgadmin_macros.xml"); +#else + tmp += wxT("/.pgadminmacros"); +#endif + + Read(wxT("MacrosFile"), &s, tmp); + + return s; +}
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers