Index: ctl/ListItemArranger.cpp
===================================================================
--- ctl/ListItemArranger.cpp	(revision 0)
+++ ctl/ListItemArranger.cpp	(revision 0)
@@ -0,0 +1,325 @@
+//////////////////////////////////////////////////////////////////////////
+//
+// pgAdmin III - PostgreSQL Tools
+// RCS-ID:      $id$
+// Copyright (C) 2002 - 2008, The pgAdmin Development Team
+// This software is released under the Artistic Licence
+//
+// ListItemArranger.h - Custom control to help order/arrange list items
+//	
+//
+//////////////////////////////////////////////////////////////////////////
+
+#include "wx/wx.h"
+#include "pgAdmin3.h"
+#include <wx/listctrl.h>
+#include "ctl/ListItemArranger.h"
+
+// button images
+#include "images/wxListItemArrangerUp.xpm"
+#include "images/wxListItemArrangerDown.xpm"
+#include "images/wxListItemArrangerFirst.xpm"
+#include "images/wxListItemArrangerLast.xpm"
+
+// defining the button event IDs
+#define ID_BUTTON_UP 1000
+#define ID_BUTTON_DOWN 1001
+#define ID_BUTTON_FIRST 1002
+#define ID_BUTTON_LAST 1003
+
+// declaring the event table 
+BEGIN_EVENT_TABLE(wxListItemArranger,wxPanel)
+	EVT_BUTTON(ID_BUTTON_UP,wxListItemArranger::OnButtonUp)
+	EVT_BUTTON(ID_BUTTON_DOWN,wxListItemArranger::OnButtonDown)
+	EVT_BUTTON(ID_BUTTON_FIRST,wxListItemArranger::OnButtonFirst)
+	EVT_BUTTON(ID_BUTTON_LAST,wxListItemArranger::OnButtonLast)
+#if __WXMSW__
+	EVT_ERASE_BACKGROUND(wxListItemArranger::OnErase)
+#endif
+END_EVENT_TABLE()
+
+IMPLEMENT_DYNAMIC_CLASS(wxListItemArranger,wxPanel)
+
+#if __WXMSW__
+// an experimental hack for windows theme
+void wxListItemArranger::OnErase(wxEraseEvent& event)
+{
+    wxClientDC* clientDC = NULL;
+    if (!event.GetDC())
+        clientDC = new wxClientDC(this);
+
+    wxDC* dc = clientDC ? clientDC : event.GetDC() ;
+
+    wxSize sz = GetClientSize();
+	dc->SetBackgroundMode(wxTRANSPARENT);
+	dc->SetBrush(*wxTRANSPARENT_BRUSH);
+	dc->SetPen(*wxTRANSPARENT_PEN);
+	dc->DrawRoundedRectangle(0,0,sz.GetWidth(),sz.GetHeight(),2);
+
+    if (clientDC)
+        delete clientDC;
+}
+#endif
+
+wxListItemArranger::wxListItemArranger(wxWindow *parent, 
+	wxWindowID id,wxListCtrl *listControl) : wxPanel(parent,id,wxDefaultPosition,wxDefaultSize,wxTRANSPARENT_WINDOW | wxNO_BORDER | wxTAB_TRAVERSAL)
+{
+	Init();
+
+	this->listControl = listControl;
+	// attach list event and disable button. then button get enabled when an 
+	// item is selected on the list.
+	AttachListControlEvents();
+
+	// creating a sizer for buttons
+	boxSizer = new wxBoxSizer(wxVERTICAL);
+
+	CreateButtonImages();
+	CreateButtonControls();
+
+	// adding the sizer to this wxPanel
+	this->SetSizer(boxSizer);	
+}
+
+void wxListItemArranger::OnListItemActivity(wxListEvent &event)
+{
+	// we set the button state when an item is selected on the
+	// listbox
+	ValidateState();
+
+	event.Skip();
+}
+
+void wxListItemArranger::AttachListControlEvents()
+{
+	// item selected event
+	this->listControl->Connect(
+		this->listControl->GetId(),
+		wxEVT_COMMAND_LIST_ITEM_SELECTED,
+		wxListEventHandler(wxListItemArranger::OnListItemActivity),0,this);
+
+	// item selected event
+	this->listControl->Connect(
+		this->listControl->GetId(),
+		wxEVT_COMMAND_LIST_ITEM_ACTIVATED,
+		wxListEventHandler(wxListItemArranger::OnListItemActivity),0,this);
+
+
+	// item insert
+	this->listControl->Connect(
+		this->listControl->GetId(),
+		wxEVT_COMMAND_LIST_INSERT_ITEM,
+		wxListEventHandler(wxListItemArranger::OnListItemActivity),0,this);
+
+	// item delete
+	this->listControl->Connect(
+		this->listControl->GetId(),
+		wxEVT_COMMAND_LIST_DELETE_ITEM,
+		wxListEventHandler(wxListItemArranger::OnListItemActivity),0,this);
+
+	// item delete all
+	this->listControl->Connect(
+		this->listControl->GetId(),
+		wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS,
+		wxListEventHandler(wxListItemArranger::OnListItemActivity),0,this);
+	 
+}
+
+void wxListItemArranger::CreateButtonControls(void)
+{
+	// creating buttons
+	this->buttonUp = new wxBitmapButton( this, ID_BUTTON_UP,  upBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW, wxDefaultValidator, wxT("Column(s) Up") );
+	buttonDown = new wxBitmapButton( this, ID_BUTTON_DOWN,  downBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW, wxDefaultValidator, wxT("Column(s) Down") );
+	buttonFirst = new wxBitmapButton( this, ID_BUTTON_FIRST,  firstBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW, wxDefaultValidator, wxT("Column(s) up first") );
+	buttonLast = new wxBitmapButton( this, ID_BUTTON_LAST,  lastBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW, wxDefaultValidator, wxT("Column(s) down last") );
+
+	// adding the buttons
+	this->boxSizer->Add(buttonFirst,0,wxALL,3);
+	this->boxSizer->Add(buttonUp,0,wxALL,3);
+	this->boxSizer->Add(buttonDown,0,wxALL,3);
+	this->boxSizer->Add(buttonLast,0,wxALL,3);
+
+	this->ValidateState();
+}
+
+void wxListItemArranger::CreateButtonImages(void)
+{
+	// creating button images
+	upBitmap = wxBitmap(wxListItemArranger_Up_xpm);
+	downBitmap = wxBitmap(wxListItemArranger_Down_xpm);
+	firstBitmap = wxBitmap(wxListItemArranger_First_xpm);
+	lastBitmap = wxBitmap(wxListItemArranger_Last_xpm);
+}
+
+void wxListItemArranger::ValidateState(void)
+{
+	int icount = 0,sel=-1;
+	if(this->listControl)
+		icount = this->listControl->GetItemCount();
+
+	//this->SetSize(this->GetSize().GetWidth(),this->listControl->GetSize().GetHeight());
+
+	// handle only when one item is selected
+	if(this->listControl->GetSelectedItemCount() != 1)
+	{
+		this->SetButtonStateAll(false);
+		return;
+	}
+
+	// disable all when single item
+	if(icount <= 1)
+		this->SetButtonStateAll(false);
+
+	// when two items enable up and down
+	if(icount == 2)
+	{
+		this->SetButtonStateAll(false);
+		SetButtonState(ID_BUTTON_UP,true);
+		SetButtonState(ID_BUTTON_DOWN,true);
+	}
+
+	// when more than two items enable all
+	if(icount >= 3)
+	{
+		this->SetButtonStateAll(true);
+	}
+
+	// set the buttons based on selection
+	sel = this->GetSelection();
+	if(sel != -1)
+	{
+		if(sel == 0)
+		{
+			SetButtonState(ID_BUTTON_UP,false);
+			SetButtonState(ID_BUTTON_FIRST,false);
+		}
+
+		if(sel == this->listControl->GetItemCount()-1)
+		{
+			SetButtonState(ID_BUTTON_DOWN,false);
+			SetButtonState(ID_BUTTON_LAST,false);
+		}
+	}
+}
+
+void wxListItemArranger::SetButtonState(wxWindowID id,bool state)
+{
+	switch(id)
+	{
+		case ID_BUTTON_UP:
+			this->buttonUp->Enable(state);
+			this->buttonFirst->Enable(state);
+			break;
+
+		case ID_BUTTON_DOWN:
+			this->buttonDown->Enable(state);
+			this->buttonLast->Enable(state);
+			break;
+	}
+}
+
+void wxListItemArranger::SetButtonStateAll(bool state)
+{
+	this->buttonUp->Enable(state);
+	this->buttonDown->Enable(state);
+	this->buttonFirst->Enable(state);
+	this->buttonLast->Enable(state);
+}
+
+// -1 is one up
+// +1 is one down
+// 0 is set first
+// -2 is set last
+void wxListItemArranger::MoveCurrentItemBy(int position)
+{
+	wxListItem curItem,tmpItem;
+	wxArrayString iarray; 
+
+	long colcnt;
+	int ItemIndex = this->GetSelection();
+
+	// paranoid check
+	if(ItemIndex >= 0)
+	{
+		// copy item into memory
+		curItem.SetId(ItemIndex);
+		curItem.SetMask(wxLIST_MASK_DATA | wxLIST_MASK_FORMAT | wxLIST_MASK_IMAGE | wxLIST_MASK_STATE | wxLIST_MASK_TEXT | wxLIST_MASK_WIDTH);
+		curItem.SetColumn(0);
+		this->listControl->GetItem(curItem);
+
+		// copy remaining columns. text and with only
+		colcnt = this->listControl->GetColumnCount();
+
+		// copy from the second column if possible
+		if(colcnt > 1)
+		{
+			for(int a = 1; a < colcnt; a++)
+			{	
+				tmpItem.SetId(ItemIndex);
+				tmpItem.SetMask(wxLIST_MASK_DATA | wxLIST_MASK_FORMAT | wxLIST_MASK_IMAGE | wxLIST_MASK_STATE | wxLIST_MASK_TEXT | wxLIST_MASK_WIDTH);
+				tmpItem.SetColumn(a);
+				this->listControl->GetItem(tmpItem);
+				iarray.Add(tmpItem.GetText());
+			}
+		}		
+
+		// remove the item
+		this->listControl->DeleteItem(ItemIndex);
+
+		if(position == 0)
+			ItemIndex = 0;
+		else if(position == -2)
+			ItemIndex = this->listControl->GetItemCount();
+		else
+			ItemIndex += position;
+
+		// insert the new positiond item and select it
+		curItem.SetId(ItemIndex);
+		curItem.SetColumn(0);
+		this->listControl->InsertItem(curItem);
+
+		for(int a = 0; a < (int)iarray.Count(); a++)
+		{
+			this->listControl->SetItem(ItemIndex,(a+1),iarray.Item(a));
+		}
+
+		this->listControl->SetItemState(ItemIndex, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED, 
+			wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED);
+
+		ValidateState();
+	}
+
+	// set the focus back to the list selected item
+	this->listControl->SetFocus();
+}
+
+
+long wxListItemArranger::GetSelection()
+{
+	if(this->listControl)
+		return this->listControl->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+	else
+		return -1;
+}
+
+void wxListItemArranger::OnButtonUp(wxCommandEvent &event)
+{
+	MoveCurrentItemBy(-1);
+}
+
+
+void wxListItemArranger::OnButtonDown(wxCommandEvent &event)
+{
+	MoveCurrentItemBy(1);
+}
+
+void wxListItemArranger::OnButtonFirst(wxCommandEvent &event)
+{
+	MoveCurrentItemBy(0);
+}
+
+void wxListItemArranger::OnButtonLast(wxCommandEvent &event)
+{
+	MoveCurrentItemBy(-2);
+}
+
Index: ctl/module.mk
===================================================================
--- ctl/module.mk	(revision 7489)
+++ ctl/module.mk	(working copy)
@@ -26,7 +26,8 @@
         $(srcdir)/ctl/xh_ctlcombo.cpp \
         $(srcdir)/ctl/xh_ctltree.cpp \
         $(srcdir)/ctl/xh_sqlbox.cpp \
-        $(srcdir)/ctl/xh_timespin.cpp
+        $(srcdir)/ctl/xh_timespin.cpp \
+		$(srcdir)/ctl/ListItemArranger.cpp \        
 
 EXTRA_DIST += \
         $(srcdir)/ctl/module.mk
Index: dlg/dlgType.cpp
===================================================================
--- dlg/dlgType.cpp	(revision 7489)
+++ dlg/dlgType.cpp	(working copy)
@@ -21,6 +21,7 @@
 #include "schema/pgSchema.h"
 #include "schema/pgType.h"
 #include "schema/pgDatatype.h"
+#include "ctl/ListItemArranger.h"
 
 
 // pointer to controls
@@ -91,6 +92,11 @@
     lstMembers->CreateColumns(0, _("Member"), _("Data type"), -1);
     lstLabels->InsertColumn(0, _("Label"), wxLIST_FORMAT_LEFT, GetClientSize().GetWidth());
 
+	// attaching the list arranger to lstMembers
+	wxListItemArranger *itemArranger = new wxListItemArranger(this,wxID_ANY,lstMembers);
+	bool ok = wxXmlResource::Get()->AttachUnknownControl(wxT("lstMembersArrangerHolder"),itemArranger);
+	assert(ok);
+
     wxNotifyEvent event;
     OnTypeChange(event);
 }
Index: include/ctl/ListItemArranger.h
===================================================================
--- include/ctl/ListItemArranger.h	(revision 0)
+++ include/ctl/ListItemArranger.h	(revision 0)
@@ -0,0 +1,55 @@
+//////////////////////////////////////////////////////////////////////////
+//
+// pgAdmin III - PostgreSQL Tools
+// RCS-ID:      $id$
+// Copyright (C) 2002 - 2008, The pgAdmin Development Team
+// This software is released under the Artistic Licence
+//
+// ListItemArranger.h - Custom control to help order/arrange list items
+//	
+//
+//////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_LIST_ITEM_ARRANGER_H_
+#define _WX_LIST_ITEM_ARRANGER_H_
+
+#include <wx/listctrl.h>
+
+class wxListItemArranger : public wxPanel
+{
+public:
+    wxListItemArranger() { Init(); }
+    wxListItemArranger(wxWindow *parent,
+						wxWindowID id,
+						wxListCtrl *listControl);
+	void OnButtonUp(wxCommandEvent& event);
+	void OnButtonDown(wxCommandEvent& event);
+	void OnButtonFirst(wxCommandEvent& event);
+	void OnButtonLast(wxCommandEvent& event);
+	void OnListItemActivity(wxListEvent& event);
+#if __WXMSW__
+	void OnErase(wxEraseEvent& event);
+#endif
+	void ValidateState(void);
+private:
+	wxBitmap upBitmap, downBitmap, firstBitmap, lastBitmap;
+	wxBitmapButton *buttonUp, *buttonDown, *buttonFirst, *buttonLast;
+	wxBoxSizer *boxSizer;
+	wxListCtrl *listControl;
+
+	void CreateButtonImages(void);
+	void CreateButtonControls(void);
+	void SetButtonStateAll(bool state);
+	void SetButtonState(wxWindowID id,bool state);
+	void AttachListControlEvents(void);
+	void MoveCurrentItemBy(int position);
+	long GetSelection();
+
+
+    DECLARE_DYNAMIC_CLASS(wxListItemArranger)
+    DECLARE_EVENT_TABLE()
+    DECLARE_NO_COPY_CLASS(wxListItemArranger)
+
+};
+
+#endif
Index: include/ctl/module.mk
===================================================================
--- include/ctl/module.mk	(revision 7489)
+++ include/ctl/module.mk	(working copy)
@@ -26,7 +26,8 @@
 	$(srcdir)/include/ctl/xh_ctlcombo.h \
 	$(srcdir)/include/ctl/xh_ctltree.h \
 	$(srcdir)/include/ctl/xh_sqlbox.h \
-	$(srcdir)/include/ctl/xh_timespin.h
+	$(srcdir)/include/ctl/xh_timespin.h \
+	$(srcdir)/include/ctl/ListItemArranger.h
 
 EXTRA_DIST += \
     $(srcdir)/include/ctl/module.mk
Index: include/images/wxListItemArrangerDown.xpm
===================================================================
--- include/images/wxListItemArrangerDown.xpm	(revision 0)
+++ include/images/wxListItemArrangerDown.xpm	(revision 0)
@@ -0,0 +1,49 @@
+/* XPM */
+const char * wxListItemArranger_Down_xpm[] = {
+"13 8 38 1",
+" 	c None",
+".	c #8BB161",
+"+	c #5A9B13",
+"@	c #CEE0A7",
+"#	c #BAD381",
+"$	c #B2CE71",
+"%	c #B0CD6C",
+"&	c #AECB67",
+"*	c #ADCB62",
+"=	c #ABC95E",
+"-	c #AAC85A",
+";	c #A9C856",
+">	c #AFCC63",
+",	c #C5DA8D",
+"'	c #BAD485",
+")	c #9FC353",
+"!	c #97BD40",
+"~	c #95BB39",
+"{	c #92BA33",
+"]	c #90B82C",
+"^	c #8EB726",
+"/	c #94BB2F",
+"(	c #AFCC64",
+"_	c #BAD483",
+":	c #9FC251",
+"<	c #96BD3E",
+"[	c #94BB38",
+"}	c #92B931",
+"|	c #97BC38",
+"1	c #B1CD69",
+"2	c #BAD383",
+"3	c #9EC24F",
+"4	c #96BC3D",
+"5	c #9BBF43",
+"6	c #B4CF70",
+"7	c #A5C55A",
+"8	c #B6D178",
+"9	c #CCDFA3",
+".+++++++++++.",
+"+@#$%&*=-;>,+",
+".+')!~{]^/(+.",
+" .+_:<[}|1+. ",
+"  .+23456+.  ",
+"   .+#78+.   ",
+"    .+9+.    ",
+"     .+.     "};
Index: include/images/wxlistitemarrangerfirst.xpm
===================================================================
--- include/images/wxlistitemarrangerfirst.xpm	(revision 0)
+++ include/images/wxlistitemarrangerfirst.xpm	(revision 0)
@@ -0,0 +1,38 @@
+/* XPM */
+const char * wxListItemArranger_First_xpm[] = {
+"13 8 27 1",
+" 	c None",
+".	c #8BB161",
+"+	c #5A9B13",
+"@	c #CCDFA3",
+"#	c #BAD381",
+"$	c #A5C55A",
+"%	c #B6D178",
+"&	c #BAD483",
+"*	c #9FC251",
+"=	c #94BB38",
+"-	c #92B931",
+";	c #B1CD69",
+">	c #BAD485",
+",	c #9FC353",
+"'	c #97BD40",
+")	c #92BA33",
+"!	c #90B82C",
+"~	c #94BB2F",
+"{	c #AFCC64",
+"]	c #CEE0A7",
+"^	c #B2CE71",
+"/	c #B0CD6C",
+"(	c #ADCB62",
+"_	c #ABC95E",
+":	c #A9C856",
+"<	c #AFCC63",
+"[	c #C5DA8D",
+" .+++++++++. ",
+"     .+.     ",
+"    .+@+.    ",
+"   .+#$%+.   ",
+"  .+&*=-;+.  ",
+" .+>,')!~{+. ",
+" +]#^/(_:<[+ ",
+" .+++++++++. "};
Index: include/images/wxListItemArrangerLast.xpm
===================================================================
--- include/images/wxListItemArrangerLast.xpm	(revision 0)
+++ include/images/wxListItemArrangerLast.xpm	(revision 0)
@@ -0,0 +1,38 @@
+/* XPM */
+const char * wxListItemArranger_Last_xpm[] = {
+"13 8 27 1",
+" 	c None",
+".	c #8BB161",
+"+	c #5A9B13",
+"@	c #CEE0A7",
+"#	c #BAD381",
+"$	c #B2CE71",
+"%	c #B0CD6C",
+"&	c #ADCB62",
+"*	c #ABC95E",
+"=	c #A9C856",
+"-	c #AFCC63",
+";	c #C5DA8D",
+">	c #BAD485",
+",	c #9FC353",
+"'	c #97BD40",
+")	c #92BA33",
+"!	c #90B82C",
+"~	c #94BB2F",
+"{	c #AFCC64",
+"]	c #BAD483",
+"^	c #9FC251",
+"/	c #94BB38",
+"(	c #92B931",
+"_	c #B1CD69",
+":	c #A5C55A",
+"<	c #B6D178",
+"[	c #CCDFA3",
+" .+++++++++. ",
+" +@#$%&*=-;+ ",
+" .+>,')!~{+. ",
+"  .+]^/(_+.  ",
+"   .+#:<+.   ",
+"    .+[+.    ",
+"     .+.     ",
+" .+++++++++. "};
Index: include/images/wxListItemArrangerUp.xpm
===================================================================
--- include/images/wxListItemArrangerUp.xpm	(revision 0)
+++ include/images/wxListItemArrangerUp.xpm	(revision 0)
@@ -0,0 +1,49 @@
+/* XPM */
+const char * wxListItemArranger_Up_xpm[] = {
+"13 8 38 1",
+" 	c None",
+".	c #8BB161",
+"+	c #5A9B13",
+"@	c #CCDFA3",
+"#	c #BAD381",
+"$	c #A5C55A",
+"%	c #B6D178",
+"&	c #BAD383",
+"*	c #9EC24F",
+"=	c #96BC3D",
+"-	c #9BBF43",
+";	c #B4CF70",
+">	c #BAD483",
+",	c #9FC251",
+"'	c #96BD3E",
+")	c #94BB38",
+"!	c #92B931",
+"~	c #97BC38",
+"{	c #B1CD69",
+"]	c #BAD485",
+"^	c #9FC353",
+"/	c #97BD40",
+"(	c #95BB39",
+"_	c #92BA33",
+":	c #90B82C",
+"<	c #8EB726",
+"[	c #94BB2F",
+"}	c #AFCC64",
+"|	c #CEE0A7",
+"1	c #B2CE71",
+"2	c #B0CD6C",
+"3	c #AECB67",
+"4	c #ADCB62",
+"5	c #ABC95E",
+"6	c #AAC85A",
+"7	c #A9C856",
+"8	c #AFCC63",
+"9	c #C5DA8D",
+"     .+.     ",
+"    .+@+.    ",
+"   .+#$%+.   ",
+"  .+&*=-;+.  ",
+" .+>,')!~{+. ",
+".+]^/(_:<[}+.",
+"+|#123456789+",
+".+++++++++++."};
Index: ui/dlgType.xrc
===================================================================
--- ui/dlgType.xrc	(revision 7489)
+++ ui/dlgType.xrc	(working copy)
@@ -136,9 +136,38 @@
                     <growablecols>0</growablecols>
                     <growablerows>0</growablerows>
                     <object class="sizeritem">
-                      <object class="wxListCtrl" name="lstMembers">
-                        <style>wxLC_REPORT|wxLC_SINGLE_SEL</style>
-                      </object>
+                        <object class="wxFlexGridSizer">
+                            <cols>2</cols>
+                            <rows>1</rows>
+                            <vgap>5</vgap>
+                            <hgap>0</hgap>
+                            <growablecols>0</growablecols>
+                            <growablerows>0</growablerows>
+                            <object class="sizeritem">
+                                <flag>wxGROW|wxGROW|wxALL</flag>
+                                <border>5</border>
+                                  <object class="wxFlexGridSizer">
+                                      <cols>2</cols>
+                                      <rows>1</rows>
+                                      <vgap>0</vgap>
+                                      <hgap>0</hgap>
+                                      <growablecols>0</growablecols>
+                                      <growablerows>0</growablerows>
+                                      <object class="sizeritem">
+                                          <flag>wxGROW|wxGROW|wxALL</flag>
+                                          <border>5</border>
+                                            <object class="wxListCtrl" name="lstMembers">
+                                                <style>wxLC_REPORT|wxLC_SINGLE_SEL</style>
+                                            </object>
+                                      </object>
+                                      <object class="sizeritem">
+                                          <flag>wxALIGN_CENTER_HORIZONTAL|wxGROW</flag>
+                                          <border>5</border>
+                                          <object class="unknown" name="lstMembersArrangerHolder"/>
+                                      </object>
+                                  </object>
+                            </object>
+                        </object>
                       <flag>wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
                       <border>4</border>
                     </object>
