Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Data Bases > Pgsql Interfaces Pgadmin Hackers > Re: Enabling SQ...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 3 of 48 Topic 3654 of 4873
Post > Topic >>

Re: Enabling SQL text field in the SQL tab of object

by guillaume@[EMAIL PROTECTED] (Guillaume Lelarge) Jun 14, 2008 at 04:01 PM

This is a multi-part message in MIME format.
--------------080109070505020304040604
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Dave Page a écrit :
> Guillaume Lelarge wrote:
> [...]
>> Ideas ? Comments ?
> 
> I think I'd like to see a prototype so we can get a feel for how it 
> would work and what might explode. It shouldn't be too hard to do - just

> add an option to the SQL tab, and when selected, lock the tabset to that

> tab. That should be doable on the appropriate base class.
> 

Finally, here is the prototype. As I first talked about this one year 
ago, I will summarize the idea : adding a checkbox on the SQL tab of an 
object's properties to let the user change the SQL query. Checking will 
disable the contents of the other tabs because we don't want to try to 
reverse engineer the user's changes.

So, here is the patch that does this. I'm sure there's work left to do 
(most notably some duplicate code) but, at least, it works for me on two 
different scenarios : changing the SQL query and adding another SQL query.

Comments are welcome.

Regards.


-- 
Guillaume.
  http://www.postgresqlfr.org
  http://dalibo.com

--------------080109070505020304040604
Content-Type: text/x-patch;
 name="enablingsqltextfield.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="enablingsqltextfield.patch"

Index: pgadmin/include/dlg/dlgProperty.h
===================================================================
--- pgadmin/include/dlg/dlgProperty.h	(revision 7373)
+++ pgadmin/include/dlg/dlgProperty.h	(working copy)
@[EMAIL PROTECTED]
 -86,6 +86,7 @[EMAIL PROTECTED]
     void OnChange(wxCommandEvent &ev);
     void OnChangeOwner(wxCommandEvent &ev);
     void OnChangeStc(wxStyledTextEvent& event);
+    void OnChangeReadOnly(wxCommandEvent& event);
 
 protected:
     void AddUsers(ctlComboBoxFix *cb1, ctlComboBoxFix *cb2=0);
@[EMAIL PROTECTED]
 -97,7 +98,7 @[EMAIL PROTECTED]
     pgDatabase *database;
 
     frmMain *mainForm;
-    ctlSQLBox *sqlPane;
+    wxPanel *sqlPane;
 
     wxTextValidator numericValidator;
 
@[EMAIL PROTECTED]
 -105,6 +106,8 @[EMAIL PROTECTED]
     wxTextCtrl *txtName, *txtOid, *txtComment;
     ctlComboBox *cbOwner;
     ctlComboBox *cbClusterSet;
+    wxCheckBox *chkReadOnly;
+    ctlSQLBox *sqlTextField;
 
     int width, height;
     wxTreeItemId item, owneritem;
Index: pgadmin/dlg/dlgProperty.cpp
===================================================================
--- pgadmin/dlg/dlgProperty.cpp	(revision 7373)
+++ pgadmin/dlg/dlgProperty.cpp	(working copy)
@[EMAIL PROTECTED]
 -59,8 +59,6 @[EMAIL PROTECTED]
 #include "schema/pgUser.h"
 
 
-
-
 class replClientData : public wxClientData
 {
 public:
@[EMAIL PROTECTED]
 -72,6 +70,9 @[EMAIL PROTECTED]
 };
 
 
+#define CTRLID_CHKSQLTEXTFIELD 1000
+
+
 BEGIN_EVENT_TABLE(dlgProperty, DialogWithHelp)
     EVT_NOTEBOOK_PAGE_CHANGED(XRCID("nbNotebook"), 
dlgProperty::OnPageSelect)  
 
@[EMAIL PROTECTED]
 -80,6 +81,8 @[EMAIL PROTECTED]
     EVT_COMBOBOX(XRCID("cbOwner"),                 
dlgProperty::OnChange)
     EVT_TEXT(XRCID("txtComment"),                  
dlgProperty::OnChange)
     
+    EVT_CHECKBOX(CTRLID_CHKSQLTEXTFIELD,           
dlgProperty::OnChangeReadOnly)
+    
     EVT_BUTTON(wxID_HELP,                           dlgProperty::OnHelp)
     EVT_BUTTON(wxID_OK,                             dlgProperty::OnOK)
     EVT_BUTTON(wxID_APPLY,                          dlgProperty::OnApply)
@[EMAIL PROTECTED]
 -90,6 +93,7 @[EMAIL PROTECTED]
 {
     readOnly=false;
     sqlPane=0;
+    sqlTextField=0;
     processing=false;
     mainForm=frame;
     database=0;
@[EMAIL PROTECTED]
 -311,7 +315,34 @[EMAIL PROTECTED]
 
 void dlgProperty::CreateAdditionalPages()
 {
-    sqlPane = new ctlSQLBox(nbNotebook, CTL_PROPSQL, wxDefaultPosition,
wxDefaultSize, wxTE_MULTILINE | wxSUNKEN_BORDER | wxTE_READONLY |
wxTE_RICH2);
+    int width, height;
+    
+    // get a few sizes and widths
+#ifdef __WIN32__
+    GetClientSize(&width, &height);
+#else
+	nbNotebook->GetClientSize(&width, &height);
+	height -= ConvertDialogToPixels(wxPoint(0, 20)).y;   // sizes of tabs
+#endif
+    wxPoint zeroPos=ConvertDialogToPixels(wxPoint(5, 5));
+    wxSize chkSize=ConvertDialogToPixels(wxSize(65,12));
+
+    // add a panel
+    sqlPane = new wxPanel(nbNotebook);
+
+    // add checkbox to the panel
+    chkReadOnly = new wxCheckBox(sqlPane, CTRLID_CHKSQLTEXTFIELD,
wxT("Read only"),
+      wxPoint(zeroPos.x, zeroPos.y), 
+      chkSize);
+    chkReadOnly->SetValue(true);
+
+    // add ctlSQLBox to the panel
+    sqlTextField = new ctlSQLBox(sqlPane, CTL_PROPSQL,
+      wxPoint(zeroPos.x, zeroPos.y + chkSize.GetHeight()), 
+      wxSize(width - 2*zeroPos.x, height - 2*zeroPos.y),
+      wxTE_MULTILINE | wxSUNKEN_BORDER | wxTE_RICH2);
+
+    // add panel to the notebook
     nbNotebook->AddPage(sqlPane, wxT("SQL"));
 }
 
@[EMAIL PROTECTED]
 -506,6 +537,42 @[EMAIL PROTECTED]
 }
 
 
+void dlgProperty::OnChangeReadOnly(wxCommandEvent &ev)
+{
+    size_t pos;
+    
+    sqlTextField->SetReadOnly(chkReadOnly->GetValue());
+    for (pos = 0; pos < nbNotebook->GetPageCount() - 1; pos++)
+    {
+        nbNotebook->GetPage(pos)->Enable(chkReadOnly->GetValue());
+    }
+    
+    if (chkReadOnly->GetValue())
+    {
+        // create a function because this is a duplicated code
+        sqlTextField->SetReadOnly(false);
+        if (btnOK->IsEnabled())
+        {
+            wxString tmp;
+            if (cbClusterSet && cbClusterSet->GetSelection() > 0)
+            {
+                replClientData
*data=(replClientData*)cbClusterSet->GetClientData(cbClusterSet->GetSelection());
+                tmp.Printf(_("-- Execute replicated using cluster \"%s\",
set %ld\n"), data->cluster.c_str(), data->setId);
+            }
+            sqlTextField->SetText(tmp + GetSql() + GetSql2());
+        }
+        else
+        {
+            if (GetObject())
+                sqlTextField->SetText(_("-- nothing to change"));
+            else
+                sqlTextField->SetText(_("-- definition incomplete"));
+        }
+        sqlTextField->SetReadOnly(true);
+    }
+}
+
+
 bool dlgProperty::tryUpdate(wxTreeItemId collectionItem)
 {
     ctlTree *browser=mainForm->GetBrowser();
@[EMAIL PROTECTED]
 -753,7 +820,16 @[EMAIL PROTECTED]
         return;
     }
 
-    wxString sql=GetSql();
+    wxString sql;
+    if (chkReadOnly->GetValue())
+    {
+        sql = GetSql();
+    }
+    else
+    {
+        sql = sqlTextField->GetText();
+    }
+    
     wxString sql2=GetSql2();
 
     if (!apply(sql, sql2))
@[EMAIL PROTECTED]
 -768,9 +844,10 @[EMAIL PROTECTED]
 
 void dlgProperty::OnPageSelect(wxNotebookEvent& event)
 {
-    if (sqlPane && event.GetSelection() ==
(int)nbNotebook->GetPageCount()-1)
+    if (sqlTextField && chkReadOnly->GetValue() &&
+        event.GetSelection() == (int)nbNotebook->GetPageCount()-1)
     {
-        sqlPane->SetReadOnly(false);
+        sqlTextField->SetReadOnly(false);
         if (btnOK->IsEnabled())
         {
             wxString tmp;
@[EMAIL PROTECTED]
 -779,16 +856,16 @[EMAIL PROTECTED]
                 replClientData
*data=(replClientData*)cbClusterSet->GetClientData(cbClusterSet->GetSelection());
                 tmp.Printf(_("-- Execute replicated using cluster \"%s\",
set %ld\n"), data->cluster.c_str(), data->setId);
             }
-            sqlPane->SetText(tmp + GetSql() + GetSql2());
+            sqlTextField->SetText(tmp + GetSql() + GetSql2());
         }
         else
         {
             if (GetObject())
-                sqlPane->SetText(_("-- nothing to change"));
+                sqlTextField->SetText(_("-- nothing to change"));
             else
-                sqlPane->SetText(_("-- definition incomplete"));
+                sqlTextField->SetText(_("-- definition incomplete"));
         }
-        sqlPane->SetReadOnly(true);
+        sqlTextField->SetReadOnly(true);
     }
 }
 

--------------080109070505020304040604
Content-Type: text/plain
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0


-- 
Sent via pgadmin-hackers mailing list (pgadmin-hackers@[EMAIL PROTECTED]
)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers

--------------080109070505020304040604--
 




 48 Posts in Topic:
Enabling SQL text field in the SQL tab of object dialog
guillaume@[EMAIL PROTECTE  2007-07-31 10:35:53 
Re: Enabling SQL text field in the SQL tab of object
dpage@[EMAIL PROTECTED]   2007-07-31 11:35:11 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-06-14 16:01:29 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-06-14 21:09:07 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-06-14 22:33:10 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-06-16 21:58:19 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-06-18 09:53:03 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-06-20 01:48:55 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-06-20 14:09:14 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-07-01 12:52:22 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-07-09 12:40:56 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-26 19:44:53 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-08-28 08:29:16 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-28 09:56:50 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-07-09 11:54:42 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-07-09 13:31:13 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-08-28 08:13:23 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-28 09:23:08 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-06-16 21:12:58 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-06-16 21:11:42 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-06-16 22:34:33 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-06-16 21:40:51 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-06-17 00:07:04 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-06-20 13:36:26 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-06-17 08:45:27 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-06-17 09:59:19 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-06-17 09:02:07 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-06-17 23:51:30 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-07-09 08:41:16 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-07-09 10:18:25 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-07-01 16:17:49 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-07-05 12:32:39 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-07-09 01:07:37 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-08-26 20:54:45 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-26 23:50:14 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-27 10:10:54 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-28 01:15:51 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-08-30 21:59:05 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-30 23:10:32 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-08-27 11:03:00 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-30 18:52:58 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-08-28 09:12:14 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-30 18:28:56 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-08-30 20:48:41 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-08-30 20:50:33 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-30 22:28:05 
Re: Enabling SQL text field in the SQL tab of object dialog
dpage@[EMAIL PROTECTED]   2008-08-30 21:29:27 
Re: Enabling SQL text field in the SQL tab of object
guillaume@[EMAIL PROTECTE  2008-08-30 22:44:29 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Mon Dec 1 23:44:17 CST 2008.