Hi Guillaume, actually I wanted to tooltip 'De-/Select all ...' ;-)My intension was do bring the benefit with less code, logic and dependencies,
but anyway if it feels not good here the next try.
Added some pixel-pimped images - just have a look at. Regards Steffen Am 20.09.2010 22:34, schrieb Guillaume Lelarge:
Le 18/09/2010 06:57, Steffen Kuhn a écrit :Hi Gullaime, please find patch for #229 attached.Patch seems fine. I think the icon should get changed when the action changes. I mean, you click on the button, everything is selected and I kind of expected that the icon would changed too (with an unselect icon). It's a bit nitty-picky, but I think it's worth it. Anyway, even if the icon doesn't change, the tooltip should get changed. Both of them should be easy to do. Will commit as soon as this is fixed. Thanks for your work.
diff --git a/pgadmin/agent/dlgSchedule.cpp b/pgadmin/agent/dlgSchedule.cpp
index 8fdb9fc..8aa09c2 100644
--- a/pgadmin/agent/dlgSchedule.cpp
+++ b/pgadmin/agent/dlgSchedule.cpp
@@ -16,6 +16,9 @@
#include "agent/dlgSchedule.h"
#include "agent/pgaSchedule.h"
+// image for de/-select all
+#include "images/check.xpm"
+#include "images/uncheck.xpm"
// pointer to controls
#define txtID CTRL_TEXT("txtID")
@@ -35,7 +38,11 @@
#define btnAddException CTRL_BUTTON("btnAddException")
#define btnChangeException CTRL_BUTTON("btnChangeException")
#define btnRemoveException CTRL_BUTTON("btnRemoveException")
-
+#define btnWeekdays CTRL_BUTTON("btnWeekdays")
+#define btnMonthdays CTRL_BUTTON("btnMonthdays")
+#define btnMonths CTRL_BUTTON("btnMonths")
+#define btnHours CTRL_BUTTON("btnHours")
+#define btnMinutes CTRL_BUTTON("btnMinutes")
BEGIN_EVENT_TABLE(dlgSchedule, dlgAgentProperty)
EVT_CHECKBOX(XRCID("chkEnabled"), dlgSchedule::OnChangeCom)
@@ -47,6 +54,11 @@ BEGIN_EVENT_TABLE(dlgSchedule, dlgAgentProperty)
EVT_BUTTON(XRCID("btnAddException"), dlgSchedule::OnAddException)
EVT_BUTTON(XRCID("btnChangeException"), dlgSchedule::OnChangeException)
EVT_BUTTON(XRCID("btnRemoveException"), dlgSchedule::OnRemoveException)
+ EVT_BUTTON(XRCID("btnWeekdays"), dlgSchedule::OnSelectAllWeekdays)
+ EVT_BUTTON(XRCID("btnMonthdays"), dlgSchedule::OnSelectAllMonthdays)
+ EVT_BUTTON(XRCID("btnMonths"), dlgSchedule::OnSelectAllMonths)
+ EVT_BUTTON(XRCID("btnHours"), dlgSchedule::OnSelectAllHours)
+ EVT_BUTTON(XRCID("btnMinutes"), dlgSchedule::OnSelectAllMinutes)
EVT_CHECKLISTBOX(XRCID("chkWeekdays"), dlgSchedule::OnChangeCom)
EVT_CHECKLISTBOX(XRCID("chkMonthdays"), dlgSchedule::OnChangeCom)
EVT_CHECKLISTBOX(XRCID("chkMonths"), dlgSchedule::OnChangeCom)
@@ -198,6 +210,9 @@ int dlgSchedule::Go(bool modal)
// create mode
}
+ // setup de-/select buttons
+ InitSelectAll();
+
returncode = dlgProperty::Go(modal);
SetSqlReadOnly(true);
@@ -218,11 +233,13 @@ void dlgSchedule::OnChangeCal(wxCalendarEvent &ev)
CheckChange();
}
+
void dlgSchedule::OnChangeCom(wxCommandEvent &ev)
{
CheckChange();
}
+
void dlgSchedule::CheckChange()
{
timEnd->Enable(calEnd->GetValue().IsValid());
@@ -237,7 +254,10 @@ void dlgSchedule::CheckChange()
CheckValid(enable, calStart->GetValue().IsValid(), _("Please specify start date."));
if (enable)
+ {
EnableOK(!GetSql().IsEmpty());
+ InitSelectAll();
+ }
else
EnableOK(false);
}
@@ -618,6 +638,7 @@ wxString dlgSchedule::GetUpdateSql()
return sql;
}
+
const wxString dlgSchedule::ChkListBox2PgArray(wxCheckListBox *lb)
{
wxString res = wxT("{");
@@ -637,6 +658,7 @@ const wxString dlgSchedule::ChkListBox2PgArray(wxCheckListBox *lb)
return res;
}
+
const wxString dlgSchedule::ChkListBox2StrArray(wxCheckListBox *lb)
{
wxString res;
@@ -651,3 +673,181 @@ const wxString dlgSchedule::ChkListBox2StrArray(wxCheckListBox *lb)
return res;
}
+
+
+void dlgSchedule::OnSelectAll(wxCommandEvent &ev, int origin)
+{
+ bool check = false;
+ wxBitmapButton *btn;
+ wxCheckListBox *lb;
+ wxString tooltip;
+
+ switch (origin) {
+ case 1:
+ btn = ((wxBitmapButton *)btnWeekdays);
+ lb = chkWeekdays;
+ break;
+ case 2:
+ btn = ((wxBitmapButton *)btnMonthdays);
+ lb = chkMonthdays;
+ break;
+ case 3:
+ btn = ((wxBitmapButton *)btnMonths);
+ lb = chkMonths;
+ break;
+ case 4:
+ btn = ((wxBitmapButton *)btnHours);
+ lb = chkHours;
+ break;
+ case 5:
+ btn = ((wxBitmapButton *)btnMinutes);
+ lb = chkMinutes;
+ break;
+ default:
+ break;
+ }
+
+ for (unsigned int x=0; x < lb->GetCount(); x++)
+ {
+ if (!lb->IsChecked(x))
+ {
+ check = true;
+ break;
+ }
+ }
+ for (unsigned int x=0; x < lb->GetCount(); x++)
+ {
+ lb->Check(x, check);
+ }
+
+ CheckChange();
+}
+
+
+void dlgSchedule::InitSelectAll()
+{
+ bool check = false;
+ wxBitmapButton *btn;
+ wxCheckListBox *lb;
+ wxString tooltip;
+
+ btn = ((wxBitmapButton *)btnWeekdays);
+ lb = chkWeekdays;
+ for (unsigned int x=0; x < lb->GetCount(); x++)
+ {
+ if (!lb->IsChecked(x))
+ {
+ check = true;
+ break;
+ }
+ }
+
+ if (check)
+ {
+ btn->SetBitmapLabel(wxBitmap(check_xpm));
+ tooltip = _("Select all week days");
+ }
+ else
+ {
+ btn->SetBitmapLabel(wxBitmap(uncheck_xpm));
+ tooltip = _("Deselect all week days");
+ }
+ btn->SetToolTip(tooltip);
+
+ check = false;
+ btn = ((wxBitmapButton *)btnMonthdays);
+ lb = chkMonthdays;
+ for (unsigned int x=0; x < lb->GetCount(); x++)
+ {
+ if (!lb->IsChecked(x))
+ {
+ check = true;
+ break;
+ }
+ }
+
+ if (check)
+ {
+ btn->SetBitmapLabel(wxBitmap(check_xpm));
+ tooltip = _("Select all month days");
+ }
+ else
+ {
+ btn->SetBitmapLabel(wxBitmap(uncheck_xpm));
+ tooltip = _("Deselect all month days");
+ }
+ btn->SetToolTip(tooltip);
+
+ check = false;
+ btn = ((wxBitmapButton *)btnMonths);
+ lb = chkMonths;
+ for (unsigned int x=0; x < lb->GetCount(); x++)
+ {
+ if (!lb->IsChecked(x))
+ {
+ check = true;
+ break;
+ }
+ }
+
+ if (check)
+ {
+ btn->SetBitmapLabel(wxBitmap(check_xpm));
+ tooltip = _("Select all months");
+ }
+ else
+ {
+ btn->SetBitmapLabel(wxBitmap(uncheck_xpm));
+ tooltip = _("Deselect all months");
+ }
+ btn->SetToolTip(tooltip);
+
+ check = false;
+ btn = ((wxBitmapButton *)btnHours);
+ lb = chkHours;
+ for (unsigned int x=0; x < lb->GetCount(); x++)
+ {
+ if (!lb->IsChecked(x))
+ {
+ check = true;
+ break;
+ }
+ }
+
+ if (check)
+ {
+ btn->SetBitmapLabel(wxBitmap(check_xpm));
+ tooltip = _("Select all hours");
+ }
+ else
+ {
+ btn->SetBitmapLabel(wxBitmap(uncheck_xpm));
+ tooltip = _("Deselect all hours");
+ }
+ btn->SetToolTip(tooltip);
+
+
+ check = false;
+ btn = ((wxBitmapButton *)btnMinutes);
+ lb = chkMinutes;
+ for (unsigned int x=0; x < lb->GetCount(); x++)
+ {
+ if (!lb->IsChecked(x))
+ {
+ check = true;
+ break;
+ }
+ }
+
+ if (check)
+ {
+ btn->SetBitmapLabel(wxBitmap(check_xpm));
+ tooltip = _("Select all minutes");
+ }
+ else
+ {
+ btn->SetBitmapLabel(wxBitmap(uncheck_xpm));
+ tooltip = _("Deselect all minutes");
+ }
+ btn->SetToolTip(tooltip);
+}
diff --git a/pgadmin/include/agent/dlgSchedule.h b/pgadmin/include/agent/dlgSchedule.h
index f564061..c6914ce 100644
--- a/pgadmin/include/agent/dlgSchedule.h
+++ b/pgadmin/include/agent/dlgSchedule.h
@@ -56,6 +56,13 @@ private:
void OnRemoveException(wxCommandEvent &ev);
const wxString ChkListBox2PgArray(wxCheckListBox *lb);
const wxString ChkListBox2StrArray(wxCheckListBox *lb);
+ void OnSelectAll(wxCommandEvent &ev, int origin);
+ void OnSelectAllWeekdays(wxCommandEvent &ev) {OnSelectAll(ev, 1);};
+ void OnSelectAllMonthdays(wxCommandEvent &ev) {OnSelectAll(ev, 2);};
+ void OnSelectAllMonths(wxCommandEvent &ev) {OnSelectAll(ev, 3);};
+ void OnSelectAllHours(wxCommandEvent &ev) {OnSelectAll(ev, 4);};
+ void OnSelectAllMinutes(wxCommandEvent &ev) {OnSelectAll(ev, 5);};
+ void InitSelectAll();
DECLARE_EVENT_TABLE()
};
diff --git a/pgadmin/ui/dlgSchedule.xrc b/pgadmin/ui/dlgSchedule.xrc
index efd9a8e..4f90a90 100644
--- a/pgadmin/ui/dlgSchedule.xrc
+++ b/pgadmin/ui/dlgSchedule.xrc
@@ -143,12 +143,12 @@
<label>Days</label>
<object class="wxPanel" name="pnlDays">
<object class="wxFlexGridSizer">
- <cols>2</cols>
+ <cols>3</cols>
<rows>3</rows>
<vgap>5</vgap>
<hgap>5</hgap>
<growablerows>2</growablerows>
- <growablecols>1</growablecols>
+ <growablecols>2</growablecols>
<object class="sizeritem">
<object class="wxStaticText" name="stWeekdays">
<label>Week Days</label>
@@ -157,6 +157,13 @@
<border>4</border>
</object>
<object class="sizeritem">
+ <object class="wxBitmapButton" name="btnWeekdays">
+ <style>wxBU_AUTODRAW</style>
+ </object>
+ <flag>wxALIGN_BOTTOM|wxALIGN_RIGHT</flag>
+ <border>4</border>
+ </object>
+ <object class="sizeritem">
<object class="wxCheckListBox" name="chkWeekdays">
<size>-1,70d</size>
<content>
@@ -180,6 +187,13 @@
<border>4</border>
</object>
<object class="sizeritem">
+ <object class="wxBitmapButton" name="btnMonthdays">
+ <style>wxBU_AUTODRAW</style>
+ </object>
+ <flag>wxALIGN_BOTTOM|wxALIGN_RIGHT</flag>
+ <border>4</border>
+ </object>
+ <object class="sizeritem">
<object class="wxCheckListBox" name="chkMonthdays">
<size>-1,70d</size>
<content>
@@ -228,6 +242,13 @@
<border>4</border>
</object>
<object class="sizeritem">
+ <object class="wxBitmapButton" name="btnMonths">
+ <style>wxBU_AUTODRAW</style>
+ </object>
+ <flag>wxALIGN_BOTTOM|wxALIGN_RIGHT</flag>
+ <border>4</border>
+ </object>
+ <object class="sizeritem">
<object class="wxCheckListBox" name="chkMonths">
<content>
<item>January</item>
@@ -254,12 +275,12 @@
<label>Times</label>
<object class="wxPanel" name="pnlTimes">
<object class="wxFlexGridSizer">
- <cols>2</cols>
+ <cols>3</cols>
<rows>2</rows>
<vgap>5</vgap>
<hgap>5</hgap>
<growablerows>1</growablerows>
- <growablecols>1</growablecols>
+ <growablecols>2</growablecols>
<object class="sizeritem">
<object class="wxStaticText" name="stHours">
<label>Hours</label>
@@ -268,6 +289,13 @@
<border>4</border>
</object>
<object class="sizeritem">
+ <object class="wxBitmapButton" name="btnHours">
+ <style>wxBU_AUTODRAW</style>
+ </object>
+ <flag>wxALIGN_BOTTOM|wxALIGN_RIGHT</flag>
+ <border>4</border>
+ </object>
+ <object class="sizeritem">
<object class="wxCheckListBox" name="chkHours">
<size>-1,100d</size>
<content/>
@@ -283,6 +311,13 @@
<border>4</border>
</object>
<object class="sizeritem">
+ <object class="wxBitmapButton" name="btnMinutes">
+ <style>wxBU_AUTODRAW</style>
+ </object>
+ <flag>wxALIGN_BOTTOM|wxALIGN_RIGHT</flag>
+ <border>4</border>
+ </object>
+ <object class="sizeritem">
<object class="wxCheckListBox" name="chkMinutes">
<content/>
</object>
<<attachment: uncheck.xpm>>
pixel.pimp.tar.gz
Description: GNU Zip compressed data
-- Sent via pgadmin-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
