Index: timespin.h
===================================================================
RCS file: /projects/pgadmin3/src/include/timespin.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -Lsrc/include/timespin.h -Lsrc/include/timespin.h -u -w -r1.5 -r1.6
--- src/include/timespin.h
+++ src/include/timespin.h
@@ -62,6 +62,9 @@
long spinValue, maxSpinValue;
bool canWrap, hasDay;
+ wxSize DoGetBestSize() const;
+ void OnSize(wxSizeEvent& event);
+
DECLARE_DYNAMIC_CLASS(wxTimeSpinCtrl)
DECLARE_EVENT_TABLE()
DECLARE_NO_COPY_CLASS(wxTimeSpinCtrl)
Index: calbox.h
===================================================================
RCS file: /projects/pgadmin3/src/include/calbox.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -Lsrc/include/calbox.h -Lsrc/include/calbox.h -u -w -r1.8 -r1.9
--- src/include/calbox.h
+++ src/include/calbox.h
@@ -14,7 +14,40 @@
#include "wx/calctrl.h"
+#if wxUSE_DATEPICKCTRL
+#define pgUSE_WX_CAL 0
+#else
+#define pgUSE_WX_CAL 0
+#endif
+#if pgUSE_WX_CAL
+#include "wx/datectrl.h"
+
+
+#ifdef __WXMSW__
+
+#include "wx/generic/datectrl.h"
+#define wxDPC wxDatePickerCtrlGeneric
+
+#else
+
+#define wxDPC wxDatePickerCtrl
+
+#endif
+
+class wxCalendarBox : public wxDPC
+{
+public:
+ wxCalendarBox();
+ wxCalendarBox(wxWindow *parent,
+ wxWindowID id,
+ const wxDateTime& date = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize);
+};
+
+
+#else
class wxCalendarBox : public wxControl
{
public:
@@ -36,8 +69,8 @@
long style,
const wxString& name);
- bool SetDate(const wxDateTime& date);
- wxDateTime GetDate();
+ bool SetValue(const wxDateTime& date);
+ wxDateTime GetValue();
bool SetLowerDateLimit(const wxDateTime& date = wxDefaultDateTime) { return m_cal->SetLowerDateLimit(date); }
const wxDateTime& GetLowerDateLimit() const { return m_cal->GetLowerDateLimit(); }
@@ -69,6 +102,9 @@
void Init();
void DropDown(bool down=true);
+ wxSize DoGetBestSize() const;
+ void OnSize(wxSizeEvent& event);
+
void OnText(wxCommandEvent &ev);
void OnEditKey(wxKeyEvent & event);
void OnCalKey(wxKeyEvent & event);
@@ -83,6 +119,7 @@
DECLARE_NO_COPY_CLASS(wxCalendarBox)
};
+#endif
#endif // _WX_CALBOX_H_
Index: dlgUser.h
===================================================================
RCS file: /projects/pgadmin3/src/include/dlgUser.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -Lsrc/include/dlgUser.h -Lsrc/include/dlgUser.h -u -w -r1.17 -r1.18
--- src/include/dlgUser.h
+++ src/include/dlgUser.h
@@ -39,6 +39,7 @@
void OnChangeSuperuser(wxCommandEvent &ev);
void OnChangeSpin(wxSpinEvent &ev);
void OnChangeCal(wxCalendarEvent &ev);
+ void OnChangeDate(wxDateEvent &ev);
void OnGroupAdd(wxCommandEvent &ev);
void OnGroupRemove(wxCommandEvent &ev);
Index: dlgUser.cpp
===================================================================
RCS file: /projects/pgadmin3/src/ui/dlgUser.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -Lsrc/ui/dlgUser.cpp -Lsrc/ui/dlgUser.cpp -u -w -r1.39 -r1.40
--- src/ui/dlgUser.cpp
+++ src/ui/dlgUser.cpp
@@ -47,6 +47,7 @@
BEGIN_EVENT_TABLE(dlgUser, dlgProperty)
EVT_CALENDAR_SEL_CHANGED(XRCID("datValidUntil"),dlgUser::OnChangeCal)
+ EVT_DATE_CHANGED(XRCID("datValidUntil"), dlgUser::OnChangeDate)
EVT_SPIN(XRCID("timValidUntil"), dlgUser::OnChangeSpin)
EVT_LISTBOX_DCLICK(XRCID("lbGroupsNotIn"), dlgUser::OnGroupAdd)
@@ -111,7 +112,7 @@
txtID->SetValue(NumToStr(user->GetUserId()));
chkCreateDB->SetValue(user->GetCreateDatabase());
chkCreateUser->SetValue(user->GetSuperuser());
- datValidUntil->SetDate(user->GetAccountExpires());
+ datValidUntil->SetValue(user->GetAccountExpires());
timValidUntil->SetTime(user->GetAccountExpires());
if (!connection->BackendMinimumVersion(7, 4))
txtName->Disable();
@@ -189,6 +190,16 @@
}
+void dlgUser::OnChangeDate(wxDateEvent &ev)
+{
+ CheckChange();
+
+ bool timEn=ev.GetDate().IsValid();
+ timValidUntil->Enable(timEn);
+ if (!timEn)
+ timValidUntil->SetTime(wxDefaultDateTime);
+}
+
void dlgUser::OnChangeSpin(wxSpinEvent &ev)
{
CheckChange();
@@ -226,7 +237,7 @@
void dlgUser::CheckChange()
{
- bool timEn=datValidUntil->GetDate().IsValid();
+ bool timEn=datValidUntil->GetValue().IsValid();
timValidUntil->Enable(timEn);
if (!timEn)
timValidUntil->SetTime(wxDefaultDateTime);
@@ -399,10 +410,10 @@
options += wxT(" NOCREATEUSER");
}
- if (DateToStr(datValidUntil->GetDate()) != DateToStr(user->GetAccountExpires()))
+ if (DateToStr(datValidUntil->GetValue()) != DateToStr(user->GetAccountExpires()))
{
- if (datValidUntil->GetDate().IsValid())
- options += wxT("\n VALID UNTIL ") + qtString(DateToAnsiStr(datValidUntil->GetDate() + timValidUntil->GetValue()));
+ if (datValidUntil->GetValue().IsValid())
+ options += wxT("\n VALID UNTIL ") + qtString(DateToAnsiStr(datValidUntil->GetValue() + timValidUntil->GetValue()));
else
options += wxT("\n VALID UNTIL 'infinity'");
}
@@ -498,8 +509,8 @@
sql += wxT(" CREATEDB");
if (createUser)
sql += wxT(" CREATEUSER");
- if (datValidUntil->GetDate().IsValid())
- sql += wxT("\n VALID UNTIL ") + qtString(DateToAnsiStr(datValidUntil->GetDate() + timValidUntil->GetValue()));
+ if (datValidUntil->GetValue().IsValid())
+ sql += wxT("\n VALID UNTIL ") + qtString(DateToAnsiStr(datValidUntil->GetValue() + timValidUntil->GetValue()));
else
sql += wxT("\n VALID UNTIL 'infinity'");
sql += wxT(";\n");
Index: calbox.cpp
===================================================================
RCS file: /projects/pgadmin3/src/ui/calbox.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -Lsrc/ui/calbox.cpp -Lsrc/ui/calbox.cpp -u -w -r1.16 -r1.17
--- src/ui/calbox.cpp
+++ src/ui/calbox.cpp
@@ -13,6 +13,43 @@
#include "calbox.h"
+
+#if pgUSE_WX_CAL
+
+
+wxCalendarBox::wxCalendarBox(wxWindow *parent,
+ wxWindowID id,
+ const wxDateTime& date,
+ const wxPoint& pos,
+ const wxSize& size)
+: wxDPC(parent, id, date, pos, size, wxDP_DROPDOWN|wxDP_SHOWCENTURY|wxDP_ALLOWNONE)
+{
+}
+
+wxCalendarBox::wxCalendarBox() : wxDPC()
+{
+}
+
+#else
+
+#if defined(__WXMSW__)
+ #define TXTCTRL_FLAGS wxNO_BORDER
+ #define CALBORDER 0
+ #define TXTPOSX 0
+ #define TXTPOSY 1
+#elif defined(__WXGTK__)
+ #define TXTCTRL_FLAGS 0
+ #define CALBORDER 4
+ #define TXTPOSX 0
+ #define TXTPOSY 0
+#else
+ #define TXTCTRL_FLAGS 0
+ #define CALBORDER 4
+ #define TXTPOSX 0
+ #define TXTPOSY 0
+#endif
+
+
#define CTRLID_TXT 101
#define CTRLID_CAL 102
#define CTRLID_BTN 103
@@ -22,6 +59,7 @@
EVT_BUTTON(CTRLID_BTN, wxCalendarBox::OnClick)
EVT_TEXT(CTRLID_TXT, wxCalendarBox::OnText)
EVT_CHILD_FOCUS(wxCalendarBox::OnChildSetFocus)
+ EVT_SIZE(wxCalendarBox::OnSize)
END_EVENT_TABLE()
IMPLEMENT_DYNAMIC_CLASS(wxCalendarBox, wxControl)
@@ -61,8 +99,7 @@
return false;
}
- SetWindowStyle(style | wxWANTS_CHARS);
- SetFont(parent->GetFont());
+ InheritAttributes();
wxSize cs=GetClientSize();
wxSize bs=ConvertDialogToPixels(wxSize(10, 0));
@@ -83,12 +120,12 @@
dc.SelectObject(wxNullBitmap);
}
- m_txt=new wxTextCtrl(this, CTRLID_TXT, txt, wxPoint(0,0), wxSize(cs.x-bs.x-1, cs.y), wxNO_BORDER);
+ m_txt=new wxTextCtrl(this, CTRLID_TXT, txt, wxDefaultPosition, size, TXTCTRL_FLAGS);
m_txt->Connect(wxID_ANY, wxID_ANY, wxEVT_KEY_DOWN, wxKeyEventHandler(wxCalendarBox::OnEditKey), 0, this);
m_txt->Connect(wxID_ANY, wxID_ANY, wxEVT_KILL_FOCUS, wxFocusEventHandler(wxCalendarBox::OnKillFocus), 0, this);
SetFormat(wxT("%x"));
- m_btn = new wxBitmapButton(this, CTRLID_BTN, bmp, wxPoint(cs.x - bs.x, 0), wxSize(bs.x, cs.y));
+ m_btn = new wxBitmapButton(this, CTRLID_BTN, bmp, wxDefaultPosition, bs);
m_dlg = new wxDialog(this, CTRLID_CAL, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER);
m_dlg->SetFont(GetFont());
@@ -118,12 +155,6 @@
wxPoint yearPosition = yearControl->GetPosition();
-#ifdef __WXMSW__
-#define CALBORDER 0
-#else
-#define CALBORDER 4
-#endif
-
width = yearPosition.x + yearSize.x+2+CALBORDER/2;
if (width < calSize.x-4)
width = calSize.x-4;
@@ -138,12 +169,13 @@
yearControl->SetSize(width-yearSize.x-CALBORDER/2, yearPosition.y, yearSize.x, yearSize.y);
m_cal->GetMonthControl()->Move(0, 0);
+ SetBestFittingSize(size);
panel->SetClientSize(width+CALBORDER/2, calSize.y-2+CALBORDER);
m_dlg->SetClientSize(panel->GetSize());
- return TRUE;
+ return true;
}
@@ -189,6 +221,31 @@
}
+wxSize wxCalendarBox::DoGetBestSize() const
+{
+ int bh=m_btn->GetBestSize().y;
+ int eh=m_txt->GetBestSize().y;
+ return wxSize(DEFAULT_ITEM_WIDTH, bh > eh ? bh : eh);
+}
+
+
+void wxCalendarBox::OnSize(wxSizeEvent& event)
+{
+ if ( m_btn )
+ {
+ wxSize sz = GetClientSize();
+
+ wxSize bs=m_btn->GetSize();
+ int eh=m_txt->GetBestSize().y;
+
+ m_txt->SetSize(TXTPOSX, TXTPOSY, sz.x-bs.x-TXTPOSX, sz.y > eh ? eh-TXTPOSY : sz.y-TXTPOSY);
+ m_btn->SetSize(sz.x - bs.x, 0, bs.x, sz.y);
+ }
+
+ event.Skip();
+}
+
+
bool wxCalendarBox::Show(bool show)
{
if ( !wxControl::Show(show) )
@@ -281,7 +338,7 @@
}
-wxDateTime wxCalendarBox::GetDate()
+wxDateTime wxCalendarBox::GetValue()
{
wxDateTime dt;
wxString txt=m_txt->GetValue();
@@ -293,7 +350,7 @@
}
-bool wxCalendarBox::SetDate(const wxDateTime& date)
+bool wxCalendarBox::SetValue(const wxDateTime& date)
{
bool retval=false;
@@ -428,11 +485,7 @@
wxString txt=m_txt->GetValue();
wxDateTime dt;
if (!txt.IsEmpty())
- {
dt.ParseFormat(txt, m_format);
- if (!dt.IsValid())
- return;
- }
wxCalendarEvent cev(m_cal, wxEVT_CALENDAR_SEL_CHANGED);
cev.SetEventObject(this);
@@ -459,3 +512,4 @@
else
ev.Skip();
}
+#endif
Index: xh_calb.cpp
===================================================================
RCS file: /projects/pgadmin3/src/ui/xh_calb.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lsrc/ui/xh_calb.cpp -Lsrc/ui/xh_calb.cpp -u -w -r1.4 -r1.5
--- src/ui/xh_calb.cpp
+++ src/ui/xh_calb.cpp
@@ -19,9 +19,12 @@
wxCalendarBoxXmlHandler::wxCalendarBoxXmlHandler()
: wxXmlResourceHandler()
{
+#if pgUSE_WX_CAL
+#else
XRC_ADD_STYLE(wxCAL_SUNDAY_FIRST);
XRC_ADD_STYLE(wxCAL_MONDAY_FIRST);
XRC_ADD_STYLE(wxCAL_SHOW_HOLIDAYS);
+#endif
AddWindowStyles();
}
@@ -31,12 +34,23 @@
{
XRC_MAKE_INSTANCE(calendar, wxCalendarBox);
+#if pgUSE_WX_CAL
+ calendar->Create(m_parentAsWindow,
+ GetID(),
+ wxDefaultDateTime,
+ GetPosition(), GetSize(),
+ wxDP_DEFAULT | wxDP_SHOWCENTURY | wxDP_ALLOWNONE,
+ wxDefaultValidator,
+ GetName());
+
+#else
calendar->Create(m_parentAsWindow,
GetID(),
wxDefaultDateTime,
GetPosition(), GetSize(),
GetStyle(),
GetName());
+#endif
SetupWindow(calendar);
Index: timespin.cpp
===================================================================
RCS file: /projects/pgadmin3/src/ui/timespin.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -Lsrc/ui/timespin.cpp -Lsrc/ui/timespin.cpp -u -w -r1.7 -r1.8
--- src/ui/timespin.cpp
+++ src/ui/timespin.cpp
@@ -23,6 +23,7 @@
EVT_SPIN_UP(CTRLID_SPN, wxTimeSpinCtrl::OnSpinUp)
EVT_SPIN_DOWN(CTRLID_SPN, wxTimeSpinCtrl::OnSpinDown)
EVT_SET_FOCUS(wxTimeSpinCtrl::OnSetFocus)
+ EVT_SIZE(wxTimeSpinCtrl::OnSize)
END_EVENT_TABLE()
@@ -75,9 +76,29 @@
canWrap = (style & wxSP_WRAP) != 0;
SetMax(24*60*60 -1);
+ SetBestFittingSize(size);
+
return true;
}
+#define TXTPOSX 0
+#define TXTPOSY 0
+void wxTimeSpinCtrl::OnSize(wxSizeEvent& event)
+{
+ if ( m_spn )
+ {
+ wxSize sz = GetClientSize();
+
+ wxSize ss=m_spn->GetSize();
+ int eh=m_txt->GetBestSize().y;
+
+ m_txt->SetSize(TXTPOSX, TXTPOSY, sz.x-ss.x-TXTPOSX, sz.y > eh ? eh-TXTPOSY : sz.y-TXTPOSY);
+ m_spn->SetSize(sz.x - ss.x, 0, ss.x, sz.y);
+ }
+
+ event.Skip();
+}
+
bool wxTimeSpinCtrl::Destroy()
{
@@ -103,6 +124,12 @@
}
+wxSize wxTimeSpinCtrl::DoGetBestSize() const
+{
+ return wxSize(DEFAULT_ITEM_WIDTH, m_txt->GetBestSize().y);
+}
+
+
bool wxTimeSpinCtrl::Enable(bool enable)
{
if ( !wxControl::Enable(enable) )
Index: dlgSchedule.cpp
===================================================================
RCS file: /projects/pgadmin3/src/agent/dlgSchedule.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -Lsrc/agent/dlgSchedule.cpp -Lsrc/agent/dlgSchedule.cpp -u -w -r1.22 -r1.23
--- src/agent/dlgSchedule.cpp
+++ src/agent/dlgSchedule.cpp
@@ -92,11 +92,11 @@
recId = schedule->GetRecId();
txtID->SetValue(NumToStr(recId));
chkEnabled->SetValue(schedule->GetEnabled());
- calStart->SetDate(schedule->GetStart());
+ calStart->SetValue(schedule->GetStart());
timStart->SetTime(schedule->GetStart());
if (schedule->GetEnd().IsValid())
{
- calEnd->SetDate(schedule->GetEnd());
+ calEnd->SetValue(schedule->GetEnd());
timEnd->SetTime(schedule->GetEnd());
}
else
@@ -150,7 +150,7 @@
void dlgSchedule::CheckChange()
{
- timEnd->Enable(calEnd->GetDate().IsValid());
+ timEnd->Enable(calEnd->GetValue().IsValid());
wxString name=GetName();
bool enable;
@@ -165,7 +165,7 @@
enable=true;
}
CheckValid(enable, !name.IsEmpty(), _("Please specify name."));
- CheckValid(enable, calStart->GetDate().IsValid(), _("Please specify start date."));
+ CheckValid(enable, calStart->GetValue().IsValid(), _("Please specify start date."));
EnableOK(enable);
}
@@ -221,10 +221,10 @@
+ wxT("'") + ChkListBox2PgArray(chkMonthdays) + wxT("', ")
+ wxT("'") + ChkListBox2PgArray(chkMonths) + wxT("', ")
+ BoolToStr(chkEnabled->GetValue()) + wxT(", ")
- + wxT("'") + DateToAnsiStr(calStart->GetDate() + timStart->GetValue()) + wxT("'");
+ + wxT("'") + DateToAnsiStr(calStart->GetValue() + timStart->GetValue()) + wxT("'");
- if (calEnd->GetDate().IsValid())
- sql += wxT(", '") + DateToAnsiStr(calEnd->GetDate() + timEnd->GetValue()) + wxT("'");
+ if (calEnd->GetValue().IsValid())
+ sql += wxT(", '") + DateToAnsiStr(calEnd->GetValue() + timEnd->GetValue()) + wxT("'");
else
sql += wxT(", NULL");
@@ -265,30 +265,30 @@
vars.Append(wxT("jscenabled = ") + BoolToStr(chkEnabled->IsChecked()));
}
- if (calStart->GetDate() + timStart->GetValue() != schedule->GetStart())
+ if (calStart->GetValue() + timStart->GetValue() != schedule->GetStart())
{
if (!vars.IsEmpty())
vars.Append(wxT(", "));
- vars.Append(wxT("jscstart = '") + DateToAnsiStr(calStart->GetDate() + timStart->GetValue()) + wxT("'"));
+ vars.Append(wxT("jscstart = '") + DateToAnsiStr(calStart->GetValue() + timStart->GetValue()) + wxT("'"));
}
- if (calEnd->GetDate().IsValid())
+ if (calEnd->GetValue().IsValid())
{
if (schedule->GetEnd().IsValid())
{
- if (calEnd->GetDate() + timEnd->GetValue() != schedule->GetEnd())
+ if (calEnd->GetValue() + timEnd->GetValue() != schedule->GetEnd())
{
if (!vars.IsEmpty())
vars.Append(wxT(", "));
- vars.Append(wxT("jscend = '") + DateToAnsiStr(calEnd->GetDate() + timEnd->GetValue()) + wxT("'"));
+ vars.Append(wxT("jscend = '") + DateToAnsiStr(calEnd->GetValue() + timEnd->GetValue()) + wxT("'"));
}
}
else
{
if (!vars.IsEmpty())
vars.Append(wxT(", "));
- vars.Append(wxT("jscend = '") + DateToAnsiStr(calEnd->GetDate() + wxTimeSpan()) + wxT("'"));
+ vars.Append(wxT("jscend = '") + DateToAnsiStr(calEnd->GetValue() + wxTimeSpan()) + wxT("'"));
}
}
else
Index: dlgUser.xrc
===================================================================
RCS file: /projects/pgadmin3/src/ui/common/dlgUser.xrc,v
retrieving revision 1.22
retrieving revision 1.23
diff -Lsrc/ui/common/dlgUser.xrc -Lsrc/ui/common/dlgUser.xrc -u -w -r1.22 -r1.23
--- src/ui/common/dlgUser.xrc
+++ src/ui/common/dlgUser.xrc
@@ -46,11 +46,11 @@