Hi, This patch removes the text and button controls to select a color with a wxColourPickerCtrl. It's a better component because it shows you the actual colour you choose with the colour chooser dialog. You'll find attached a screenshot that shows the Options window with the new widget. The dlgServer window is also updated.
Comments? -- Guillaume. http://www.postgresqlfr.org http://dalibo.com
diff --git a/pgadmin/dlg/dlgServer.cpp b/pgadmin/dlg/dlgServer.cpp
index 3d4212d..9ef2a14 100644
--- a/pgadmin/dlg/dlgServer.cpp
+++ b/pgadmin/dlg/dlgServer.cpp
@@ -14,15 +14,18 @@
// App headers
#include "pgAdmin3.h"
+
+// Must be after pgAdmin3.h or MSVC++ complains
+#include <wx/colordlg.h>
+#include <wx/clrpicker.h>
+
+// Other app headers
#include "utils/misc.h"
#include "frm/frmMain.h"
#include "frm/frmHint.h"
#include "dlg/dlgServer.h"
#include "schema/pgDatabase.h"
-// Must be after pgAdmin3.h or MSVC++ complains
-#include <wx/colordlg.h>
-
// pointer to controls
#define txtDescription CTRL_TEXT("txtDescription")
#define txtService CTRL_TEXT("txtService")
@@ -39,8 +42,7 @@
#define stPassword CTRL_STATIC("stPassword")
#define txtPassword CTRL_TEXT("txtPassword")
#define txtDbRestriction CTRL_TEXT("txtDbRestriction")
-#define txtColour CTRL_TEXT("txtColour")
-#define btnColor CTRL_BUTTON("btnColor")
+#define colourPicker CTRL_COLOURPICKER("colourPicker")
BEGIN_EVENT_TABLE(dlgServer, dlgProperty)
@@ -56,8 +58,7 @@ BEGIN_EVENT_TABLE(dlgServer, dlgProperty)
EVT_CHECKBOX(XRCID("chkStorePwd"), dlgProperty::OnChange)
EVT_CHECKBOX(XRCID("chkRestore"), dlgProperty::OnChange)
EVT_CHECKBOX(XRCID("chkTryConnect"), dlgServer::OnChangeTryConnect)
- EVT_TEXT(XRCID("txtColour"), dlgProperty::OnChange)
- EVT_BUTTON(XRCID("btnColor"), dlgServer::OnChooseColor)
+ EVT_COLOURPICKER_CHANGED(XRCID("colourPicker"), dlgServer::OnChangeColour)
EVT_BUTTON(wxID_OK, dlgServer::OnOK)
END_EVENT_TABLE();
@@ -151,23 +152,9 @@ void dlgServer::OnOK(wxCommandEvent &ev)
server->iSetStorePwd(chkStorePwd->GetValue());
server->iSetRestore(chkRestore->GetValue());
server->iSetDbRestriction(txtDbRestriction->GetValue().Trim());
- if (txtColour->GetValue().Trim() == wxEmptyString)
- server->iSetColour(wxEmptyString);
- else
- {
- wxColour colour;
- wxString sColour = wxEmptyString;
-
- if (colour.Set(txtColour->GetValue().Trim()))
- sColour = colour.GetAsString(wxC2S_HTML_SYNTAX);
- else
- {
- wxLogError(_("The colour specified is not valid."));
- return;
- }
-
- server->iSetColour(sColour);
- }
+ wxColour colour = colourPicker->GetColour();
+ wxString sColour = colour.GetAsString(wxC2S_HTML_SYNTAX);
+ server->iSetColour(sColour);
mainForm->execSelChange(server->GetId(), true);
mainForm->GetBrowser()->SetItemText(item, server->GetFullName());
@@ -184,6 +171,12 @@ void dlgServer::OnOK(wxCommandEvent &ev)
}
+void dlgServer::OnChangeColour(wxColourPickerEvent &ev)
+{
+ dlgProperty::OnChange(ev);
+}
+
+
void dlgServer::OnChangeRestr(wxCommandEvent &ev)
{
if (!connection || txtDbRestriction->GetValue().IsEmpty())
@@ -260,7 +253,7 @@ int dlgServer::Go(bool modal)
chkStorePwd->SetValue(server->GetStorePwd());
chkRestore->SetValue(server->GetRestore());
txtDbRestriction->SetValue(server->GetDbRestriction());
- txtColour->SetValue(server->GetColour());
+ colourPicker->SetColour(server->GetColour());
stPassword->Disable();
txtPassword->Disable();
@@ -318,16 +311,6 @@ void dlgServer::OnChangeTryConnect(wxCommandEvent &ev)
}
-void dlgServer::OnChooseColor(wxCommandEvent &ev)
-{
- wxColourDialog dlg( NULL );
- if ( dlg.ShowModal() == wxID_OK )
- {
- txtColour->SetValue(dlg.GetColourData().GetColour().GetAsString(wxC2S_HTML_SYNTAX));
- }
-}
-
-
void dlgServer::CheckChange()
{
wxString name=GetName();
@@ -335,12 +318,17 @@ void dlgServer::CheckChange()
if (server)
{
+ // Get old value
wxColour colour;
wxString sColour = wxEmptyString;
if (colour.Set(server->GetColour()))
sColour = colour.GetAsString(wxC2S_HTML_SYNTAX);
+ // Get new value
+ wxColour colour2 = colourPicker->GetColour();
+ wxString sColour2 = colour2.GetAsString(wxC2S_HTML_SYNTAX);
+
enable = name != server->GetName()
|| txtDescription->GetValue() != server->GetDescription()
|| txtService->GetValue() != server->GetServiceID()
@@ -351,7 +339,7 @@ void dlgServer::CheckChange()
|| chkStorePwd->GetValue() != server->GetStorePwd()
|| chkRestore->GetValue() != server->GetRestore()
|| txtDbRestriction->GetValue() != server->GetDbRestriction()
- || txtColour->GetValue() != sColour;
+ || sColour != sColour2;
}
diff --git a/pgadmin/frm/frmOptions.cpp b/pgadmin/frm/frmOptions.cpp
index 3c33df2..2eb6034 100644
--- a/pgadmin/frm/frmOptions.cpp
+++ b/pgadmin/frm/frmOptions.cpp
@@ -17,6 +17,7 @@
#include <wx/fontdlg.h>
#include <wx/fontutil.h>
#include <wx/file.h>
+#include <wx/clrpicker.h>
// App headers
#include "frm/frmOptions.h"
@@ -68,35 +69,27 @@
#define lstDisplay CTRL_CHECKLISTBOX("lstDisplay")
#define chkSystemObjects CTRL_CHECKBOX("chkSystemObjects")
#define chkIgnoreVersion CTRL_CHECKBOX("chkIgnoreVersion")
-#define txtIdleProcessColour CTRL_TEXT("txtIdleProcessColour")
-#define btnIdleProcessColour CTRL_BUTTON("btnIdleProcessColour")
-#define txtActiveProcessColour CTRL_TEXT("txtActiveProcessColour")
-#define btnActiveProcessColour CTRL_BUTTON("btnActiveProcessColour")
-#define txtSlowProcessColour CTRL_TEXT("txtSlowProcessColour")
-#define btnSlowProcessColour CTRL_BUTTON("btnSlowProcessColour")
-#define txtBlockedProcessColour CTRL_TEXT("txtBlockedProcessColour")
-#define btnBlockedProcessColour CTRL_BUTTON("btnBlockedProcessColour")
+#define pickerIdleProcessColour CTRL_COLOURPICKER("pickerIdleProcessColour")
+#define pickerActiveProcessColour CTRL_COLOURPICKER("pickerActiveProcessColour")
+#define pickerSlowProcessColour CTRL_COLOURPICKER("pickerSlowProcessColour")
+#define pickerBlockedProcessColour CTRL_COLOURPICKER("pickerBlockedProcessColour")
BEGIN_EVENT_TABLE(frmOptions, pgDialog)
- EVT_MENU(MNU_HELP, frmOptions::OnHelp)
- EVT_BUTTON (XRCID("btnFont"), frmOptions::OnFontSelect)
- EVT_BUTTON (XRCID("btnSqlFont"), frmOptions::OnSqlFontSelect)
- EVT_BUTTON (XRCID("btnBrowseLogfile"), frmOptions::OnBrowseLogFile)
- EVT_BUTTON (XRCID("btnSlonyPath"), frmOptions::OnSlonyPathSelect)
- EVT_BUTTON (XRCID("btnPostgresqlPath"), frmOptions::OnPostgresqlPathSelect)
- EVT_BUTTON (XRCID("btnEnterprisedbPath"), frmOptions::OnEnterprisedbPathSelect)
- EVT_BUTTON (XRCID("btnGPDBPath"), frmOptions::OnGPDBPathSelect)
- EVT_BUTTON (XRCID("btnDefault"), frmOptions::OnDefault)
- EVT_CHECKBOX(XRCID("chkSuppressHints"), frmOptions::OnSuppressHints)
- EVT_CHECKBOX(XRCID("chkResetHints"), frmOptions::OnResetHints)
- EVT_BUTTON (wxID_OK, frmOptions::OnOK)
- EVT_BUTTON (wxID_HELP, frmOptions::OnHelp)
- EVT_BUTTON (wxID_CANCEL, frmOptions::OnCancel)
- EVT_COMBOBOX(XRCID("cbCopyQuote"), frmOptions::OnChangeCopyQuote)
- EVT_BUTTON(XRCID("btnIdleProcessColour"), frmOptions::OnChooseIdleProcessColour)
- EVT_BUTTON(XRCID("btnActiveProcessColour"), frmOptions::OnChooseActiveProcessColour)
- EVT_BUTTON(XRCID("btnSlowProcessColour"), frmOptions::OnChooseSlowProcessColour)
- EVT_BUTTON(XRCID("btnBlockedProcessColour"), frmOptions::OnChooseBlockedProcessColour)
+ EVT_MENU(MNU_HELP, frmOptions::OnHelp)
+ EVT_BUTTON (XRCID("btnFont"), frmOptions::OnFontSelect)
+ EVT_BUTTON (XRCID("btnSqlFont"), frmOptions::OnSqlFontSelect)
+ EVT_BUTTON (XRCID("btnBrowseLogfile"), frmOptions::OnBrowseLogFile)
+ EVT_BUTTON (XRCID("btnSlonyPath"), frmOptions::OnSlonyPathSelect)
+ EVT_BUTTON (XRCID("btnPostgresqlPath"), frmOptions::OnPostgresqlPathSelect)
+ EVT_BUTTON (XRCID("btnEnterprisedbPath"), frmOptions::OnEnterprisedbPathSelect)
+ EVT_BUTTON (XRCID("btnGPDBPath"), frmOptions::OnGPDBPathSelect)
+ EVT_BUTTON (XRCID("btnDefault"), frmOptions::OnDefault)
+ EVT_CHECKBOX(XRCID("chkSuppressHints"), frmOptions::OnSuppressHints)
+ EVT_CHECKBOX(XRCID("chkResetHints"), frmOptions::OnResetHints)
+ EVT_BUTTON (wxID_OK, frmOptions::OnOK)
+ EVT_BUTTON (wxID_HELP, frmOptions::OnHelp)
+ EVT_BUTTON (wxID_CANCEL, frmOptions::OnCancel)
+ EVT_COMBOBOX(XRCID("cbCopyQuote"), frmOptions::OnChangeCopyQuote)
END_EVENT_TABLE()
@@ -229,10 +222,10 @@ frmOptions::frmOptions(frmMain *parent)
chkIgnoreVersion->SetValue(settings->GetIgnoreVersion());
// Get back the colours
- txtIdleProcessColour->SetValue(settings->GetIdleProcessColour());
- txtActiveProcessColour->SetValue(settings->GetActiveProcessColour());
- txtSlowProcessColour->SetValue(settings->GetSlowProcessColour());
- txtBlockedProcessColour->SetValue(settings->GetBlockedProcessColour());
+ pickerIdleProcessColour->SetColour(settings->GetIdleProcessColour());
+ pickerActiveProcessColour->SetColour(settings->GetActiveProcessColour());
+ pickerSlowProcessColour->SetColour(settings->GetSlowProcessColour());
+ pickerBlockedProcessColour->SetColour(settings->GetBlockedProcessColour());
cbLanguage->Append(_("Default"));
int sel=0;
@@ -574,26 +567,32 @@ void frmOptions::OnOK(wxCommandEvent &ev)
}
// Change the status colours
- if (txtIdleProcessColour->GetValue() != settings->GetIdleProcessColour())
- {
+ wxColour colour;
+ wxString sColour;
+
+ colour = pickerIdleProcessColour->GetColour();
+ sColour = colour.GetAsString(wxC2S_HTML_SYNTAX);
+ if (sColour != settings->GetIdleProcessColour())
changed = true;
- settings->SetIdleProcessColour(CheckColour(txtIdleProcessColour->GetValue().Trim()));
- }
- if (txtActiveProcessColour->GetValue() != settings->GetActiveProcessColour())
- {
+ settings->SetIdleProcessColour(sColour);
+
+ colour = pickerActiveProcessColour->GetColour();
+ sColour = colour.GetAsString(wxC2S_HTML_SYNTAX);
+ if (sColour != settings->GetActiveProcessColour())
changed = true;
- settings->SetActiveProcessColour(CheckColour(txtActiveProcessColour->GetValue().Trim()));
- }
- if (txtSlowProcessColour->GetValue() != settings->GetSlowProcessColour())
- {
+ settings->SetActiveProcessColour(sColour);
+
+ colour = pickerSlowProcessColour->GetColour();
+ sColour = colour.GetAsString(wxC2S_HTML_SYNTAX);
+ if (sColour != settings->GetSlowProcessColour())
changed = true;
- settings->SetSlowProcessColour(CheckColour(txtSlowProcessColour->GetValue().Trim()));
- }
- if (txtBlockedProcessColour->GetValue() != settings->GetBlockedProcessColour())
- {
+ settings->SetSlowProcessColour(sColour);
+
+ colour = pickerBlockedProcessColour->GetColour();
+ sColour = colour.GetAsString(wxC2S_HTML_SYNTAX);
+ if (sColour != settings->GetBlockedProcessColour())
changed = true;
- settings->SetBlockedProcessColour(CheckColour(txtBlockedProcessColour->GetValue().Trim()));
- }
+ settings->SetBlockedProcessColour(sColour);
// Change the language last, as it will affect our tests for changes
// in the display object types.
@@ -675,46 +674,6 @@ void frmOptions::OnBrowseLogFile(wxCommandEvent &ev)
}
-void frmOptions::OnChooseIdleProcessColour(wxCommandEvent &ev)
-{
- wxColourDialog dlg( NULL );
- if ( dlg.ShowModal() == wxID_OK )
- {
- txtIdleProcessColour->SetValue(dlg.GetColourData().GetColour().GetAsString(wxC2S_HTML_SYNTAX));
- }
-}
-
-
-void frmOptions::OnChooseActiveProcessColour(wxCommandEvent &ev)
-{
- wxColourDialog dlg( NULL );
- if ( dlg.ShowModal() == wxID_OK )
- {
- txtActiveProcessColour->SetValue(dlg.GetColourData().GetColour().GetAsString(wxC2S_HTML_SYNTAX));
- }
-}
-
-
-void frmOptions::OnChooseSlowProcessColour(wxCommandEvent &ev)
-{
- wxColourDialog dlg( NULL );
- if ( dlg.ShowModal() == wxID_OK )
- {
- txtSlowProcessColour->SetValue(dlg.GetColourData().GetColour().GetAsString(wxC2S_HTML_SYNTAX));
- }
-}
-
-
-void frmOptions::OnChooseBlockedProcessColour(wxCommandEvent &ev)
-{
- wxColourDialog dlg( NULL );
- if ( dlg.ShowModal() == wxID_OK )
- {
- txtBlockedProcessColour->SetValue(dlg.GetColourData().GetColour().GetAsString(wxC2S_HTML_SYNTAX));
- }
-}
-
-
optionsFactory::optionsFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar) : actionFactory(list)
{
mnu->Append(id, _("&Options..."), _("Show options dialog."));
diff --git a/pgadmin/include/dlg/dlgServer.h b/pgadmin/include/dlg/dlgServer.h
index 872d373..460c5e3 100644
--- a/pgadmin/include/dlg/dlgServer.h
+++ b/pgadmin/include/dlg/dlgServer.h
@@ -14,6 +14,7 @@
#define __DLG_SERVERPROP
#include "dlg/dlgProperty.h"
+#include <wx/clrpicker.h>
class pgServer;
@@ -42,7 +43,7 @@ private:
void OnChangeRestr(wxCommandEvent &ev);
void OnChangeTryConnect(wxCommandEvent &ev);
void OnPageSelect(wxNotebookEvent &event);
- void OnChooseColor(wxCommandEvent &ev);
+ void OnChangeColour(wxColourPickerEvent &ev);
DECLARE_EVENT_TABLE()
};
diff --git a/pgadmin/include/frm/frmOptions.h b/pgadmin/include/frm/frmOptions.h
index b210ab2..ccac9b3 100644
--- a/pgadmin/include/frm/frmOptions.h
+++ b/pgadmin/include/frm/frmOptions.h
@@ -48,10 +48,6 @@ private:
void OnSuppressHints(wxCommandEvent &ev);
void OnResetHints(wxCommandEvent &ev);
void OnChangeCopyQuote(wxCommandEvent &ev);
- void OnChooseIdleProcessColour(wxCommandEvent&);
- void OnChooseActiveProcessColour(wxCommandEvent&);
- void OnChooseSlowProcessColour(wxCommandEvent&);
- void OnChooseBlockedProcessColour(wxCommandEvent&);
wxString CheckColour(wxString colour);
DECLARE_EVENT_TABLE()
};
diff --git a/pgadmin/include/utils/misc.h b/pgadmin/include/utils/misc.h
index 9f687fd..ccd98d8 100644
--- a/pgadmin/include/utils/misc.h
+++ b/pgadmin/include/utils/misc.h
@@ -86,6 +86,7 @@ extern sysSettings *settings;
#define CTRL_CHECKLISTBOX(id) (XRCCTRL(*this, id, wxCheckListBox))
#define CTRL_DATEPICK(id) (XRCCTRL(*this, id, wxDatePickerCtrl))
#define CTRL_TREE(id) (XRCCTRL(*this, id, ctlTree))
+#define CTRL_COLOURPICKER(id) (XRCCTRL(*this, id, wxColourPickerCtrl))
#endif // PGSCLI
diff --git a/pgadmin/ui/dlgServer.xrc b/pgadmin/ui/dlgServer.xrc
index 98c1641..9dbb14c 100644
--- a/pgadmin/ui/dlgServer.xrc
+++ b/pgadmin/ui/dlgServer.xrc
@@ -191,22 +191,7 @@
<border>4</border>
</object>
<object class="sizeritem">
- <object class="wxFlexGridSizer">
- <cols>2</cols>
- <growablecols>0</growablecols>
- <object class="sizeritem">
- <object class="wxTextCtrl" name="txtColour"/>
- <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
- <border>4</border>
- </object>
- <object class="sizeritem">
- <object class="wxButton" name="btnColor">
- <label>...</label>
- </object>
- <flag>wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
- <border>4</border>
- </object>
- </object>
+ <object class="wxColourPickerCtrl" name="colourPicker"/>
<flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxALL</flag>
<border>4</border>
</object>
@@ -258,4 +243,4 @@
</object>
</object>
</object>
-</resource>
\ No newline at end of file
+</resource>
diff --git a/pgadmin/ui/frmOptions.xrc b/pgadmin/ui/frmOptions.xrc
index 6197890..317f6f0 100644
--- a/pgadmin/ui/frmOptions.xrc
+++ b/pgadmin/ui/frmOptions.xrc
@@ -327,54 +327,34 @@
<label>Idle Process Colour</label>
<pos>5,5d</pos>
</object>
- <object class="wxTextCtrl" name="txtIdleProcessColour">
+ <object class="wxColourPickerCtrl" name="pickerIdleProcessColour">
<pos>100,5d</pos>
<size>50,12d</size>
</object>
- <object class="wxButton" name="btnIdleProcessColour">
- <label>...</label>
- <pos>170,5d</pos>
- <size>20,12d</size>
- </object>
<object class="wxStaticText" name="stActiveProcessColour">
<label>Active Process Colour</label>
<pos>5,22d</pos>
</object>
- <object class="wxTextCtrl" name="txtActiveProcessColour">
+ <object class="wxColourPickerCtrl" name="pickerActiveProcessColour">
<pos>100,22d</pos>
<size>50,12d</size>
</object>
- <object class="wxButton" name="btnActiveProcessColour">
- <label>...</label>
- <pos>170,22d</pos>
- <size>20,12d</size>
- </object>
<object class="wxStaticText" name="stSlowProcessColour">
<label>Slow Process Colour</label>
<pos>5,39d</pos>
</object>
- <object class="wxTextCtrl" name="txtSlowProcessColour">
+ <object class="wxColourPickerCtrl" name="pickerSlowProcessColour">
<pos>100,39d</pos>
<size>50,12d</size>
</object>
- <object class="wxButton" name="btnSlowProcessColour">
- <label>...</label>
- <pos>170,39d</pos>
- <size>20,12d</size>
- </object>
<object class="wxStaticText" name="stBlockedProcessColour">
<label>Blocked Process Colour</label>
<pos>5,56d</pos>
</object>
- <object class="wxTextCtrl" name="txtBlockedProcessColour">
+ <object class="wxColourPickerCtrl" name="pickerBlockedProcessColour">
<pos>100,56d</pos>
<size>50,12d</size>
</object>
- <object class="wxButton" name="btnBlockedProcessColour">
- <label>...</label>
- <pos>170,56d</pos>
- <size>20,12d</size>
- </object>
</object>
</object>
<object class="notebookpage">
<<attachment: wxcolourpickerctrl.png>>
-- Sent via pgadmin-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
