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>>

Attachment: 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

Reply via email to