Index: pgadmin/include/frm/frmStatus.h =================================================================== --- pgadmin/include/frm/frmStatus.h (révision 7537) +++ pgadmin/include/frm/frmStatus.h (copie de travail) @@ -19,14 +19,51 @@ #include #include +// wxAUI +#include + #include "dlg/dlgClasses.h" #include "utils/factory.h" -#define CTL_STATUSLIST 300 +enum +{ + CTL_NTBK=250, + CTL_RATELABEL, + CTL_RATESLIDER, + CTL_RATELABEL2, + CTL_REFRESHBTN, + CTL_CLOSEBTN, + CTL_STATUSLIST, + CTL_CANCELBTN1, + CTL_TERMINATEBTN1, + CTL_LOCKLIST, + CTL_CANCELBTN2, + CTL_TERMINATEBTN2, + CTL_XACTLIST, + CTL_COMMITBTN, + CTL_ROLLBACKBTN, + CTL_LOGLIST, + CTL_LOGCBO, + CTL_ROTATEBTN +}; + +#define FRMSTATUS_PERSPECTIVE_VER wxT("$Rev$") + +#ifdef __WXMAC__ +#define FRMSTATUS_DEFAULT_PERSPECTIVE wxT("layout2|name=serverstatus;caption=Server Status;state=16788208;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=415;besth=23;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|") +#else +#ifdef __WXGTK__ +#define FRMSTATUS_DEFAULT_PERSPECTIVE wxT("layout2|name=serverstatus;caption=Server Status;state=16788208;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=525;besth=30;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|") +#else +#define FRMSTATUS_DEFAULT_PERSPECTIVE wxT("layout2|name=serverstatus;caption=Server Status;state=16788208;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=415;besth=23;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|") +#endif +#endif + + // Class declarations -class frmStatus : public pgDialog +class frmStatus : public pgFrame { public: frmStatus(frmMain *form, const wxString& _title, pgConn *conn); @@ -34,6 +71,17 @@ void Go(); private: + wxSlider *slRate; + wxStaticText *stRate; + wxNotebook *nbStatus; + wxComboBox *cbLogfiles; + wxButton *btnRotateLog; + + ctlListView *statusList; + ctlListView *lockList; + ctlListView *xactList; + ctlListView *logList; + void OnHelp(wxCommandEvent& ev); void OnCloseBtn(wxCommandEvent &event); void OnClose(wxCloseEvent &event); @@ -60,6 +108,8 @@ void checkConnection(); + wxAuiManager manager; + frmMain *mainForm; wxButton *btnCancelSt, *btnTerminateSt,*btnCancelLk, *btnTerminateLk, *btnCommit, *btnRollback; Index: pgadmin/frm/frmStatus.cpp =================================================================== --- pgadmin/frm/frmStatus.cpp (révision 7537) +++ pgadmin/frm/frmStatus.cpp (copie de travail) @@ -17,6 +17,11 @@ #include #include +/* +// wxAUI +#include +*/ + // App headers #include "frm/frmStatus.h" #include "frm/frmHint.h" @@ -26,38 +31,29 @@ #define TIMER_ID 333 -BEGIN_EVENT_TABLE(frmStatus, pgDialog) +BEGIN_EVENT_TABLE(frmStatus, pgFrame) EVT_BUTTON(wxID_REFRESH, frmStatus::OnRefresh) EVT_BUTTON(wxID_CLOSE, frmStatus::OnCloseBtn) EVT_BUTTON(wxID_CANCEL, frmStatus::OnCloseBtn) - EVT_BUTTON(XRCID("btnCancelSt"), frmStatus::OnCancelBtn) + EVT_BUTTON(CTL_CANCELBTN1, frmStatus::OnCancelBtn) EVT_BUTTON(wxID_STOP, frmStatus::OnTerminateBtn) - EVT_BUTTON(XRCID("btnCommit"), frmStatus::OnCommit) - EVT_BUTTON(XRCID("btnRollback"), frmStatus::OnRollback) + EVT_BUTTON(CTL_COMMITBTN, frmStatus::OnCommit) + EVT_BUTTON(CTL_ROLLBACKBTN, frmStatus::OnRollback) EVT_CLOSE( frmStatus::OnClose) - EVT_COMMAND_SCROLL(XRCID("slRate"), frmStatus::OnRateChange) - EVT_NOTEBOOK_PAGE_CHANGING(XRCID("nbStatus"), frmStatus::OnNotebookPageChanged) + EVT_COMMAND_SCROLL(CTL_RATESLIDER, frmStatus::OnRateChange) + EVT_NOTEBOOK_PAGE_CHANGING(CTL_NOTEBOOK, frmStatus::OnNotebookPageChanged) EVT_TIMER(TIMER_ID, frmStatus::OnRefreshTimer) - EVT_LIST_ITEM_SELECTED(XRCID("lstStatus"), frmStatus::OnSelStatusItem) - EVT_LIST_ITEM_DESELECTED(XRCID("lstStatus"), frmStatus::OnSelStatusItem) - EVT_LIST_ITEM_SELECTED(XRCID("lstLocks"), frmStatus::OnSelLockItem) - EVT_LIST_ITEM_DESELECTED(XRCID("lstLocks"), frmStatus::OnSelLockItem) - EVT_LIST_ITEM_SELECTED(XRCID("lstXacts"), frmStatus::OnSelXactItem) - EVT_LIST_ITEM_DESELECTED(XRCID("lstXacts"), frmStatus::OnSelXactItem) - EVT_COMBOBOX(XRCID("cbLogfiles"), frmStatus::OnLoadLogfile) - EVT_BUTTON(XRCID("btnRotateLog"), frmStatus::OnRotateLogfile) + EVT_LIST_ITEM_SELECTED(CTL_STATUSLIST, frmStatus::OnSelStatusItem) + EVT_LIST_ITEM_DESELECTED(CTL_STATUSLIST, frmStatus::OnSelStatusItem) + EVT_LIST_ITEM_SELECTED(CTL_LOCKLIST, frmStatus::OnSelLockItem) + EVT_LIST_ITEM_DESELECTED(CTL_LOCKLIST, frmStatus::OnSelLockItem) + EVT_LIST_ITEM_SELECTED(CTL_XACTLIST, frmStatus::OnSelXactItem) + EVT_LIST_ITEM_DESELECTED(CTL_XACTLIST, frmStatus::OnSelXactItem) + EVT_COMBOBOX(CTL_LOGCBO, frmStatus::OnLoadLogfile) + EVT_BUTTON(CTL_ROTATEBTN, frmStatus::OnRotateLogfile) END_EVENT_TABLE(); -#define statusList CTRL_LISTVIEW("lstStatus") -#define lockList CTRL_LISTVIEW("lstLocks") -#define xactList CTRL_LISTVIEW("lstXacts") -#define logList CTRL_LISTVIEW("lstLog") -#define slRate CTRL_SLIDER("slRate") -#define stRate CTRL_STATIC("stRate") -#define nbStatus CTRL_NOTEBOOK("nbStatus") -#define cbLogfiles CTRL_COMBOBOX("cbLogfiles") -#define btnRotateLog CTRL_BUTTON("btnRotateLog") void frmStatus::OnCloseBtn(wxCommandEvent &event) @@ -78,30 +74,136 @@ } -frmStatus::frmStatus(frmMain *form, const wxString& _title, pgConn *conn) +frmStatus::frmStatus(frmMain *form, const wxString& _title, pgConn *conn) : pgFrame(NULL, _title) { + dlgName = wxT("frmStatus"); + loaded = false; xactPage=2; logPage=3; - - wxWindowBase::SetFont(settings->GetSystemFont()); + + /* LoadResource(0, wxT("frmStatus")); + */ - RestorePosition(-1, -1, 400, 240, 200, 150); - SetTitle(_title); - appearanceFactory->SetIcons(this); - mainForm=form; timer=0; connection=conn; logHasTimestamp = false; logFormatKnown = false; - btnCancelSt = CTRL_BUTTON("btnCancelSt"); - btnCancelLk = CTRL_BUTTON("btnCancelLk"); - btnTerminateSt = CTRL_BUTTON("btnTerminateSt"); - btnTerminateLk = CTRL_BUTTON("btnTerminateLk"); - btnCommit = CTRL_BUTTON("btnCommit"); - btnRollback = CTRL_BUTTON("btnRollback"); + + statusBar=CreateStatusBar(1); + SetStatusBarPane(-1); + + RestorePosition(-1, -1, 400, 240, 200, 150); + SetTitle(_title); + appearanceFactory->SetIcons(this); + + wxWindowBase::SetFont(settings->GetSystemFont()); + + // notify wxAUI which frame to use + /* + manager.SetManagedWindow(this); + manager.SetFlags(wxAUI_MGR_DEFAULT | wxAUI_MGR_TRANSPARENT_DRAG); + */ + + /* build UI */ + wxFlexGridSizer *item0 = new wxFlexGridSizer(3, 1, 5, 5); + item0->AddGrowableCol(0); + item0->AddGrowableRow(0); + nbStatus = new wxNotebook(this, CTL_NTBK); + item0->Add(nbStatus, 0, wxALL|wxEXPAND|wxGROW|wxALIGN_CENTRE, 2); + wxFlexGridSizer *item1 = new wxFlexGridSizer(1, 5, 5, 5); + item1->AddGrowableCol(2); + wxStaticText *stRateLabel = new wxStaticText(this, CTL_RATELABEL, _("Refresh rate:")); + item1->Add(stRateLabel, 0, wxLEFT|wxRIGHT|wxALIGN_CENTRE_VERTICAL, 3); + slRate = new wxSlider(this, CTL_RATESLIDER, 1, 0, 600); + slRate->SetSize(90, 6, 150, -1, wxSIZE_FORCE); + item1->Add(slRate, 0, wxLEFT|wxALIGN_CENTRE_VERTICAL, 3); + stRate = new wxStaticText(this, CTL_RATELABEL2, _("Stopped")); + item1->Add(stRate, 0, wxLEFT|wxRIGHT|wxALIGN_CENTRE_VERTICAL, 3); + wxButton *btnRefresh = new wxButton(this, CTL_REFRESHBTN, _("Refresh")); + item1->Add(btnRefresh, 0, wxTOP|wxBOTTOM|wxLEFT|wxRIGHT, 5); + wxButton *btnClose = new wxButton(this, CTL_CLOSEBTN, _("Close")); + item1->Add(btnClose, 0, wxLEFT|wxRIGHT|wxALIGN_CENTRE_VERTICAL, 3); + item0->Add(item1, 0, wxTOP|wxEXPAND|wxGROW, 2); + + // page 0 : stat activity + wxPanel *pnlActivity = new wxPanel(nbStatus); + wxFlexGridSizer *grdActivity = new wxFlexGridSizer(2, 1, 5, 5); + grdActivity->AddGrowableCol(0); + grdActivity->AddGrowableRow(0); + wxListCtrl *lstStatus = new wxListCtrl(pnlActivity, CTL_STATUSLIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER); + grdActivity->Add(lstStatus, 0, wxGROW, 3); + wxFlexGridSizer *item3 = new wxFlexGridSizer(1, 2, 5, 5); + btnCancelSt = new wxButton(pnlActivity, CTL_CANCELBTN1, _("Cancel")); + item3->Add(btnCancelSt, 0, wxALL|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL, 5); + btnTerminateSt = new wxButton(pnlActivity, CTL_TERMINATEBTN1, _("Terminate")); + item3->Add(btnTerminateSt, 0, wxALL|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL, 5); + grdActivity->Add(item3, 0, wxGROW, 3); + nbStatus->AddPage(pnlActivity, wxT("Status")); + pnlActivity->SetSizer(grdActivity); + grdActivity->Fit(pnlActivity); + // page 1 : lock + wxPanel *pnlLock = new wxPanel(nbStatus); + wxFlexGridSizer *grdLock = new wxFlexGridSizer(2, 1, 5, 5); + grdLock->AddGrowableCol(0); + grdLock->AddGrowableRow(0); + wxListCtrl *lstLocks = new wxListCtrl(pnlLock, CTL_XACTLIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER); + grdLock->Add(lstLocks, 0, wxGROW, 3); + wxFlexGridSizer *item5 = new wxFlexGridSizer(1, 2, 5, 5); + btnCancelLk = new wxButton(pnlLock, CTL_CANCELBTN2, _("Cancel")); + item5->Add(btnCancelLk, 0, wxALL|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL, 5); + btnTerminateLk = new wxButton(pnlLock, CTL_TERMINATEBTN2, _("Terminate")); + item5->Add(btnTerminateLk, 0, wxALL|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL, 5); + grdLock->Add(item5, 0, wxGROW, 3); + pnlLock->SetSizer(grdLock); + grdLock->Fit(pnlLock); + nbStatus->AddPage(pnlLock, wxT("Locks")); + // page 2 : transaction + wxPanel *pnlXacts = new wxPanel(nbStatus); + wxFlexGridSizer *grdXacts = new wxFlexGridSizer(2, 1, 5, 5); + grdXacts->AddGrowableCol(0); + grdXacts->AddGrowableRow(0); + wxListCtrl *lstXacts = new wxListCtrl(pnlXacts, CTL_LOCKLIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER); + grdXacts->Add(lstXacts, 0, wxGROW, 3); + wxFlexGridSizer *item4 = new wxFlexGridSizer(1, 2, 5, 5); + btnCommit = new wxButton(pnlXacts, CTL_COMMITBTN, _("Commit")); + item4->Add(btnCommit, 0, wxALL|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL, 5); + btnRollback = new wxButton(pnlXacts, CTL_ROLLBACKBTN, _("Rollback")); + item4->Add(btnRollback, 0, wxALL|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL, 5); + grdXacts->Add(item4, 0, wxGROW, 3); + pnlXacts->SetSizer(grdXacts); + grdXacts->Fit(pnlXacts); + nbStatus->AddPage(pnlXacts, wxT("Transactions")); + // page 3 : logfile + wxPanel *pnlLog = new wxPanel(nbStatus); + wxFlexGridSizer *grdLog = new wxFlexGridSizer(2, 1, 5, 5); + grdLog->AddGrowableCol(0); + grdLog->AddGrowableRow(0); + wxListCtrl *lstLog = new wxListCtrl(pnlLog, CTL_LOGLIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER); + grdLog->Add(lstLog, 0, wxGROW, 3); + wxFlexGridSizer *item6 = new wxFlexGridSizer(1, 2, 5, 5); + cbLogfiles = new wxComboBox(pnlLog, CTL_LOGCBO, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, + wxCB_READONLY|wxCB_DROPDOWN); + item6->Add(cbLogfiles, 0, wxALL|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL, 5); + btnRotateLog = new wxButton(pnlLog, CTL_ROTATEBTN, _("Rotate")); + item6->Add(btnRotateLog, 0, wxALL, 5); + grdLog->Add(item6, 0, wxGROW, 3); + pnlLog->SetSizer(grdLog); + grdLog->Fit(pnlLog); + nbStatus->AddPage(pnlLog, wxT("Logfile")); + + nbStatus->SetSelection(0); + + statusList = (ctlListView*)lstStatus; + lockList = (ctlListView*)lstLocks; + xactList = (ctlListView*)lstXacts; + logList = (ctlListView*)lstLog; + + ChangeButtonId(btnClose, wxID_CLOSE, _("Close")); + ChangeButtonId(btnRefresh, wxID_REFRESH, _("Refresh")); + ChangeButtonId(btnTerminateSt, wxID_STOP, _("Terminate")); ChangeButtonId(btnTerminateLk, wxID_STOP, _("Terminate")); @@ -218,7 +320,25 @@ btnCommit->Enable(false); btnRollback->Enable(false); } + + this->SetSizer(item0); + item0->Fit(this); + + /* + manager.AddPane(item0, wxAuiPaneInfo().Name(wxT("serverstatus")).Caption(_("Server Status")).Center().CaptionVisible(false).CloseButton(false).MinSize(wxSize(200,100)).BestSize(wxSize(350,200))); + + // Now load the layout + wxString perspective; + settings->Read(wxT("frmStatus/Perspective-") + VerFromRev(FRMSTATUS_PERSPECTIVE_VER), &perspective, FRMSTATUS_DEFAULT_PERSPECTIVE); + manager.LoadPerspective(perspective, true); + // and reset the captions for the current language + manager.GetPane(wxT("serverstatus")).Caption(_("Server status")); + + // tell the manager to "commit" all the changes just made + manager.Update(); + */ + loaded = true; } @@ -331,7 +451,7 @@ // To avoid hammering the lock manager (and the network for that matter), // only query for the required tab. - wxLogNull nolog; + //wxLogNull nolog; if (!connection) return; Index: pgadmin/dlg/dlgClasses.cpp =================================================================== --- pgadmin/dlg/dlgClasses.cpp (révision 7537) +++ pgadmin/dlg/dlgClasses.cpp (copie de travail) @@ -341,6 +341,7 @@ void pgFrame::RestorePosition(int defaultX, int defaultY, int defaultW, int defaultH, int minW, int minH) { + assert(dlgName.Length() > 0); wxPoint pos(settings->Read(dlgName, wxPoint(defaultX, defaultY))); wxSize size; if (defaultW < 0)