This is a multi-part message in MIME format.
--------------010006050008010505060703
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Guillaume Lelarge a écrit :
> Dave Page a écrit :
>> On Fri, Jun 20, 2008 at 12:48 AM, Guillaume Lelarge
>> <guillaume@[EMAIL PROTECTED]
> wrote:
>>> Done. I thought we didn't hide UI objects, only disable them, to get
>>> a more
>>> consistant UI.
>>
>> On a single dialogue we disable objects so that dialogue will always
>> have the same layout no matter what server you're connected to. The
>> design from dialogue to dialogue may change as appropriate however.
>>
>>> The button text doesn't please me. Neither do the message box text.
>>> If one
>>> has a better idea, I'll be glad to know about it.
>>
>> How about 'Lock DDL' for the checkbox? The message box could be
>> something like:
>>
>> Locking the DDL will replace it with generated SQL. Are your sure you
>> wish to lose the changes you have made?
>>
>> I can't help thinking that 'Lock DDL' is unnecessarily obscure though.
>> Maybe 'Read only' is better.
>>
>
> I like "Lock DDL". Perhaps "Read only DDL" would please you more ?
>
>> In anycase, there are still some sizing issues to resolve - see the
>> attach screenshots for examples.
>>
>
> It is great on GTK. I really should get a windows build system... and a
> Mac Mini :)
>
I'm at the PostgreSQL booth, for the RMLL in Mont-de-Marsan
(http://rmll.info).
I'm trying the wifi system :)
Here is the patch that fixes your issue on Win32. Works great on Win32
and Linux... I'm not sure for Mac OS X though.
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
--------------010006050008010505060703
Content-Type: text/x-patch;
name="enablingsqltextfield_v4.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="enablingsqltextfield_v4.patch"
Index: pgadmin/include/dlg/dlgProperty.h
===================================================================
--- pgadmin/include/dlg/dlgProperty.h (revision 7386)
+++ pgadmin/include/dlg/dlgProperty.h (working copy)
@[EMAIL PROTECTED]
-60,6 +60,8 @[EMAIL PROTECTED]
void EnableOK(bool enable);
virtual bool IsUpToDate() { return true; };
void ShowObject();
+
+ void FillSQLTextfield();
void CheckValid(bool &enable, const bool condition, const wxString
&msg);
static dlgProperty *CreateDlg(frmMain *frame, pgObject *node, bool
asNew, pgaFactory *factory=0);
@[EMAIL PROTECTED]
-86,6 +88,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 +100,7 @[EMAIL PROTECTED]
pgDatabase *database;
frmMain *mainForm;
- ctlSQLBox *sqlPane;
+ wxPanel *sqlPane;
wxTextValidator numericValidator;
@[EMAIL PROTECTED]
-105,6 +108,10 @[EMAIL PROTECTED]
wxTextCtrl *txtName, *txtOid, *txtComment;
ctlComboBox *cbOwner;
ctlComboBox *cbClusterSet;
+ wxCheckBox *chkReadOnly;
+ ctlSQLBox *sqlTextField1;
+ ctlSQLBox *sqlTextField2;
+ bool enableSQL2;
int width, height;
wxTreeItemId item, owneritem;
Index: pgadmin/dlg/dlgProperty.cpp
===================================================================
--- pgadmin/dlg/dlgProperty.cpp (revision 7386)
+++ 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,8 @[EMAIL PROTECTED]
{
readOnly=false;
sqlPane=0;
+ sqlTextField1=0;
+ sqlTextField2=0;
processing=false;
mainForm=frame;
database=0;
@[EMAIL PROTECTED]
-117,6 +122,11 @[EMAIL PROTECTED]
txtComment = CTRL_TEXT("txtComment");
cbOwner = CTRL_COMBOBOX2("cbOwner");
cbClusterSet = CTRL_COMBOBOX2("cbClusterSet");
+
+ wxString db = wxT("Database");
+ wxString ts = wxT("Tablespace");
+ enableSQL2 = db.Cmp(factory->GetTypeName()) == 0
+ || ts.Cmp(factory->GetTypeName()) == 0;
wxNotebookPage *page=nbNotebook->GetPage(0);
wxASSERT(page != NULL);
@[EMAIL PROTECTED]
-311,7 +321,46 @[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
+ nbNotebook->GetClientSize(&width, &height);
+ height -= ConvertDialogToPixels(wxPoint(0, 20)).y; // sizes of tabs
+ 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 ctlSQLBoxes to the panel
+
+ if (enableSQL2)
+ {
+ sqlTextField1 = new ctlSQLBox(sqlPane, CTL_PROPSQL,
+ wxPoint(zeroPos.x, zeroPos.y + chkSize.GetHeight()),
+ wxSize(width - 3 * zeroPos.x, (height - 3 * zeroPos.y) / 2),
+ wxTE_MULTILINE | wxSUNKEN_BORDER | wxTE_RICH2);
+
+ sqlTextField2 = new ctlSQLBox(sqlPane, CTL_PROPSQL,
+ wxPoint(zeroPos.x, zeroPos.y + chkSize.GetHeight() + (height - 3 *
zeroPos.y) / 2),
+ wxSize(width - 3 * zeroPos.x, (height - 3 * zeroPos.y) / 2),
+ wxTE_MULTILINE | wxSUNKEN_BORDER | wxTE_RICH2);
+ }
+ else
+ {
+ sqlTextField1 = new ctlSQLBox(sqlPane, CTL_PROPSQL,
+ wxPoint(zeroPos.x, zeroPos.y + chkSize.GetHeight()),
+ wxSize(width - 3 * zeroPos.x, (height - 3 * zeroPos.y)),
+ wxTE_MULTILINE | wxSUNKEN_BORDER | wxTE_RICH2);
+ }
+
+ // add panel to the notebook
nbNotebook->AddPage(sqlPane, wxT("SQL"));
}
@[EMAIL PROTECTED]
-506,6 +555,78 @[EMAIL PROTECTED]
}
+void dlgProperty::OnChangeReadOnly(wxCommandEvent &ev)
+{
+ size_t pos;
+
+ if (sqlTextField1->GetText().Cmp(GetSql()) != 0 ||
+ (enableSQL2 && sqlTextField2->GetText().Cmp(GetSql2()) != 0))
+ {
+ if (wxMessageBox(_("Are you sure you wish to cancel your edit?"),
_("SQL editor"), wxYES_NO) == wxNO)
+ {
+ chkReadOnly->SetValue(false);
+ return;
+ }
+ }
+
+ sqlTextField1->SetReadOnly(chkReadOnly->GetValue());
+ if (enableSQL2)
+ {
+ sqlTextField2->SetReadOnly(chkReadOnly->GetValue());
+ }
+ for (pos = 0; pos < nbNotebook->GetPageCount() - 1; pos++)
+ {
+ nbNotebook->GetPage(pos)->Enable(chkReadOnly->GetValue());
+ }
+
+ if (chkReadOnly->GetValue())
+ {
+ FillSQLTextfield();
+ }
+}
+
+
+void dlgProperty::FillSQLTextfield()
+{
+ // create a function because this is a duplicated code
+ sqlTextField1->SetReadOnly(false);
+ if (enableSQL2)
+ {
+ sqlTextField2->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);
+ }
+ sqlTextField1->SetText(tmp + GetSql());
+ if (enableSQL2)
+ {
+ sqlTextField2->SetText(GetSql2());
+ }
+ }
+ else
+ {
+ if (GetObject())
+ sqlTextField1->SetText(_("-- nothing to change"));
+ else
+ sqlTextField1->SetText(_("-- definition incomplete"));
+ if (enableSQL2)
+ {
+ sqlTextField2->SetText(wxT(""));
+ }
+ }
+ sqlTextField1->SetReadOnly(true);
+ if (enableSQL2)
+ {
+ sqlTextField2->SetReadOnly(true);
+ }
+}
+
+
bool dlgProperty::tryUpdate(wxTreeItemId collectionItem)
{
ctlTree *browser=mainForm->GetBrowser();
@[EMAIL PROTECTED]
-608,7 +729,7 @[EMAIL PROTECTED]
mainForm->GetSqlPane()->SetReadOnly(true);
}
}
- else if (item)
+ else if (item && chkReadOnly->GetValue())
{
wxTreeItemId collectionItem=item;
@[EMAIL PROTECTED]
-753,8 +874,25 @[EMAIL PROTECTED]
return;
}
- wxString sql=GetSql();
- wxString sql2=GetSql2();
+ wxString sql;
+ wxString sql2;
+ if (chkReadOnly->GetValue())
+ {
+ sql = GetSql();
+ sql2 = GetSql2();
+ }
+ else
+ {
+ sql = sqlTextField1->GetText();
+ if (enableSQL2)
+ {
+ sql2 = sqlTextField2->GetText();
+ }
+ else
+ {
+ sql2 = wxT("");
+ }
+ }
if (!apply(sql, sql2))
{
@[EMAIL PROTECTED]
-768,27 +906,10 @[EMAIL PROTECTED]
void dlgProperty::OnPageSelect(wxNotebookEvent& event)
{
- if (sqlPane && event.GetSelection() ==
(int)nbNotebook->GetPageCount()-1)
+ if (sqlTextField1 && chkReadOnly->GetValue() &&
+ event.GetSelection() == (int)nbNotebook->GetPageCount()-1)
{
- sqlPane->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);
- }
- sqlPane->SetText(tmp + GetSql() + GetSql2());
- }
- else
- {
- if (GetObject())
- sqlPane->SetText(_("-- nothing to change"));
- else
- sqlPane->SetText(_("-- definition incomplete"));
- }
- sqlPane->SetReadOnly(true);
+ FillSQLTextfield();
}
}
--------------010006050008010505060703
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
--------------010006050008010505060703--


|