Log Message:
-----------
Allow cancel/terminate from status and locks tabs.

Modified Files:
--------------
    pgadmin3/src/include:
        frmStatus.h (r1.12 -> r1.13)
    pgadmin3/src/ui:
        frmStatus.cpp (r1.29 -> r1.30)
    pgadmin3/src/ui/common:
        frmStatus.xrc (r1.9 -> r1.10)

Index: frmStatus.h
===================================================================
RCS file: /projects/pgadmin3/src/include/frmStatus.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -Lsrc/include/frmStatus.h -Lsrc/include/frmStatus.h -u -w -r1.12 -r1.13
--- src/include/frmStatus.h
+++ src/include/frmStatus.h
@@ -45,7 +45,7 @@
     void OnTerminateBtn(wxCommandEvent &event);
     void OnCancelBtn(wxCommandEvent &event);
        void OnSelStatusItem(wxListEvent &event);
-
+       void OnSelLockItem(wxListEvent &event);
 
     void addLog(const wxString &str);
     
Index: frmStatus.cpp
===================================================================
RCS file: /projects/pgadmin3/src/ui/frmStatus.cpp,v
retrieving revision 1.29
retrieving revision 1.30
diff -Lsrc/ui/frmStatus.cpp -Lsrc/ui/frmStatus.cpp -u -w -r1.29 -r1.30
--- src/ui/frmStatus.cpp
+++ src/ui/frmStatus.cpp
@@ -37,6 +37,8 @@
     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)
 END_EVENT_TABLE();
 
 
@@ -170,6 +172,10 @@
        if (!loaded) return;
        wxCommandEvent nullEvent;
        OnRefresh(nullEvent);
+       
+    // Disable the buttons. They'll get re-enabled if a suitable item is selected.
+       btnCancel->Enable(false);
+       btnTerminate->Enable(false);
 }
 
 
@@ -468,22 +474,36 @@
        if (wxMessageBox(_("Are you sure you wish to cancel the selected query(s)?"), 
_("Cancel query?"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION) == wxNO)
                return;
 
+    ctlListView *lv;
+       
+       if (nbStatus->GetSelection() == 0)
+                lv = statusList;
+
+       else if (nbStatus->GetSelection() == 1)
+                lv = lockList;
+
+       else 
+       {
+               wxLogError(_("Couldn't determine the source listview for a cancel 
backend operation!"));
+               return;
+       }
+
        long item = -1;
        wxString pid;
 
     for ( ;; )
     {
-        item = statusList->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+        item = lv->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
         if ( item == -1 )
             break;
 
-               pid = statusList->GetItemText(item);
+               pid = lv->GetItemText(item);
                wxString sql = wxT("SELECT pg_cancel_backend(") + pid + wxT(");");
                connection->ExecuteScalar(sql);
        }
 
-       OnRefresh(*(wxCommandEvent*)&event);
        wxMessageBox(_("A cancel signal was sent to the selected server 
process(es)."), _("Cancel query"), wxOK | wxICON_INFORMATION);
+       OnRefresh(*(wxCommandEvent*)&event);
 }
 
 void frmStatus::OnTerminateBtn(wxCommandEvent &event)
@@ -491,23 +511,37 @@
        if (wxMessageBox(_("Are you sure you wish to terminate the selected server 
process(es)?"), _("Terminate process?"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION) == 
wxNO)
                return;
 
+    ctlListView *lv;
+       
+       if (nbStatus->GetSelection() == 0)
+                lv = statusList;
+
+       else if (nbStatus->GetSelection() == 1)
+                lv = lockList;
+
+       else 
+       {
+               wxLogError(_("Couldn't determine the source listview for a terminate 
backend operation!"));
+               return;
+       }
+
        long item = -1;
        wxString pid;
 
     for ( ;; )
     {
-        item = statusList->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+        item = lv->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
         if ( item == -1 )
             break;
 
-               pid = statusList->GetItemText(item);
+               pid = lv->GetItemText(item);
                wxString sql = wxT("SELECT pg_terminate_backend(") + pid + wxT(");");
                connection->ExecuteScalar(sql);
 
        }
 
-       OnRefresh(*(wxCommandEvent*)&event);
        wxMessageBox(_("A terminate signal was sent to the selected server 
process(es)."), _("Terminate process"), wxOK | wxICON_INFORMATION);
+       OnRefresh(*(wxCommandEvent*)&event);
 }
 
 void frmStatus::OnSelStatusItem(wxListEvent &event)
@@ -526,3 +560,20 @@
                }
        }
 }
+
+void frmStatus::OnSelLockItem(wxListEvent &event)
+{
+       if (connection->BackendMinimumVersion(7, 5))
+       {
+               if(lockList->GetSelectedItemCount() >= 0) 
+               {
+                       btnCancel->Enable(true);
+                       btnTerminate->Enable(true);
+               } 
+               else 
+               {
+                       btnCancel->Enable(false);
+                       btnTerminate->Enable(false);
+               }
+       }
+}
Index: frmStatus.xrc
===================================================================
RCS file: /projects/pgadmin3/src/ui/common/frmStatus.xrc,v
retrieving revision 1.9
retrieving revision 1.10
diff -Lsrc/ui/common/frmStatus.xrc -Lsrc/ui/common/frmStatus.xrc -u -w -r1.9 -r1.10
--- src/ui/common/frmStatus.xrc
+++ src/ui/common/frmStatus.xrc
@@ -6,7 +6,7 @@
     
<style>wxDEFAULT_DIALOG_STYLE|wxCAPTION|wxSYSTEM_MENU|wxRESIZE_BORDER|wxRESIZE_BOX|wxTHICK_FRAME</style>
     <object class="wxFlexGridSizer">
       <cols>1</cols>
-      <rows>2</rows>
+      <rows>3</rows>
       <growablerows>1</growablerows>
       <object class="sizeritem">
         <object class="wxFlexGridSizer">
@@ -65,44 +65,10 @@
           <size>395,273d</size>
           <object class="notebookpage">
             <label>Status</label>
-            <object class="wxPanel" name="pnlStatus">
-              <object class="wxFlexGridSizer">
-                <cols>1</cols>
-                <rows>2</rows>
-                <object class="sizeritem">
                   <object class="wxListCtrl" name="lstStatus">
                     <pos>5,24</pos>
                     <style>wxLC_REPORT|wxSUNKEN_BORDER</style>
                   </object>
-                  <flag>wxTOP|wxLEFT|wxEXPAND|wxGROW|wxALIGN_CENTRE</flag>
-                </object>
-                <object class="sizeritem">
-                  <object class="wxFlexGridSizer">
-                    <cols>2</cols>
-                    <rows>1</rows>
-                    <object class="sizeritem">
-                      <object class="wxButton" name="btnCancel">
-                        <label>Cancel</label>
-                        <size>53,15d</size>
-                      </object>
-                      
<flag>wxBOTTOM|wxLEFT|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL</flag>
-                      <border>2</border>
-                    </object>
-                    <object class="sizeritem">
-                      <object class="wxButton" name="btnTerminate">
-                        <label>Terminate</label>
-                        <size>53,15d</size>
-                      </object>
-                      
<flag>wxBOTTOM|wxLEFT|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL</flag>
-                      <border>2</border>
-                    </object>
-                    <hgap>8</hgap>
-                  </object>
-                </object>
-                <growablecols>0</growablecols>
-                <growablerows>0</growablerows>
-              </object>
-            </object>
           </object>
           <object class="notebookpage">
             <label>Locks</label>
@@ -123,6 +89,28 @@
         <border>2</border>
       </object>
       <growablecols>0</growablecols>
+      <object class="sizeritem">
+        <object class="wxFlexGridSizer">
+          <cols>3</cols>
+          <rows>1</rows>
+          <object class="sizeritem">
+            <object class="wxButton" name="btnCancel">
+              <label>Cancel</label>
+              <size>53,15d</size>
+            </object>
+            <flag>wxBOTTOM|wxLEFT|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL</flag>
+            <border>5</border>
+          </object>
+          <object class="sizeritem">
+            <object class="wxButton" name="btnTerminate">
+              <label>Terminate</label>
+              <size>53,15d</size>
+            </object>
+            <flag>wxBOTTOM|wxLEFT|wxALIGN_CENTRE|wxALIGN_CENTRE_VERTICAL</flag>
+            <border>5</border>
+          </object>
+        </object>
+      </object>
     </object>
   </object>
 </resource>
\ No newline at end of file
---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to