convert apply columns page to .ui format

Change-Id: I14f12809d2e78a184ed53d6d9cee81d5f4e79ae6
This commit is contained in:
Caolán McNamara
2014-05-09 16:09:46 +01:00
parent c6ee91b9c1
commit ad26e7b2ed
9 changed files with 264 additions and 210 deletions

View File

@@ -12,6 +12,7 @@ $(eval $(call gb_UIConfig_UIConfig,dbaccess))
$(eval $(call gb_UIConfig_add_uifiles,dbaccess, \
dbaccess/uiconfig/ui/admindialog \
dbaccess/uiconfig/ui/advancedsettingsdialog \
dbaccess/uiconfig/ui/applycolpage \
dbaccess/uiconfig/ui/choosedatasourcedialog \
dbaccess/uiconfig/ui/colwidthdialog \
dbaccess/uiconfig/ui/dbaseindexdialog \

View File

@@ -101,7 +101,6 @@
#define HID_TAB_ENT_LEN "DBACCESS_HID_TAB_ENT_LEN"
#define HID_TAB_ENT_SCALE "DBACCESS_HID_TAB_ENT_SCALE"
#define HID_BROWSER_TABLE_CREATE_DESIGN "DBACCESS_HID_BROWSER_TABLE_CREATE_DESIGN"
#define HID_TAB_WIZ_COLUMN_SELECT "DBACCESS_HID_TAB_WIZ_COLUMN_SELECT"
#define HID_TAB_WIZ_TYPE_SELECT "DBACCESS_HID_TAB_WIZ_TYPE_SELECT"
#define HID_TAB_NAMEMATCHING_COLS_AVAIL "DBACCESS_HID_TAB_NAMEMATCHING_COLS_AVAIL"
#define HID_TAB_NAMEMATCHING_COLS_ASSIGN "DBACCESS_HID_TAB_NAMEMATCHING_COLS_ASSIGN"

View File

@@ -35,19 +35,17 @@ namespace dbaui
class OWizColumnSelect : public OWizardPage
{
FixedLine m_flColumns;
MultiListBox m_lbOrgColumnNames; // left side
ImageButton m_ibColumn_RH;
ImageButton m_ibColumns_RH;
ImageButton m_ibColumn_LH;
ImageButton m_ibColumns_LH;
MultiListBox m_lbNewColumnNames; // right side
ListBox* m_pOrgColumnNames; // left side
PushButton* m_pColumn_RH;
PushButton* m_pColumns_RH;
PushButton* m_pColumn_LH;
PushButton* m_pColumns_LH;
ListBox* m_pNewColumnNames; // right side
DECL_LINK( ButtonClickHdl, Button * );
DECL_LINK( ListDoubleClickHdl, MultiListBox * );
DECL_LINK( ListDoubleClickHdl, ListBox * );
void clearListBox(MultiListBox& _rListBox);
void clearListBox(ListBox& _rListBox);
void fillColumns( ListBox* pRight,
::std::vector< OUString> &_rRightColumns);

View File

@@ -33,6 +33,7 @@ namespace dbaui
bool m_bFirstTime; // Page wird das erste mal gerufen ; should be set in the reset methode
OWizardPage( Window* pParent, const ResId& rResId );
OWizardPage( Window *pParent, const OString& rID, const OUString& rUIXMLDescription );
public:
virtual void Reset ( ) = 0;

View File

@@ -101,7 +101,7 @@
// FREE
#define PAGE_CONNECTION RID_PAGE_START + 6
#define PAGE_ADO RID_PAGE_START + 7
#define TAB_WIZ_COLUMN_SELECT RID_PAGE_START + 9
// FREE
#define TAB_WIZ_TYPE_SELECT RID_PAGE_START + 10
#define TAB_WIZ_NAME_MATCHING RID_PAGE_START + 11
#define TAB_WIZ_COPYTABLE RID_PAGE_START + 12

View File

@@ -51,49 +51,60 @@ OWizardPage::OWizardPage( Window* pParent, const ResId& rResId )
{
}
OWizardPage::OWizardPage(Window* pParent, const OString& rID, const OUString& rUIXMLDescription)
: TabPage(pParent, rID, rUIXMLDescription)
,m_pParent(static_cast<OCopyTableWizard*>(pParent))
,m_bFirstTime(true)
{
}
// OWizColumnSelect
OWizColumnSelect::OWizColumnSelect( Window* pParent)
:OWizardPage( pParent, ModuleRes( TAB_WIZ_COLUMN_SELECT ))
,m_flColumns( this, ModuleRes( FL_COLUMN_SELECT ) )
,m_lbOrgColumnNames( this, ModuleRes( LB_ORG_COLUMN_NAMES ) )
,m_ibColumn_RH( this, ModuleRes( IB_COLUMN_RH ) )
,m_ibColumns_RH( this, ModuleRes( IB_COLUMNS_RH ) )
,m_ibColumn_LH( this, ModuleRes( IB_COLUMN_LH ) )
,m_ibColumns_LH( this, ModuleRes( IB_COLUMNS_LH ) )
,m_lbNewColumnNames( this, ModuleRes( LB_NEW_COLUMN_NAMES ) )
:OWizardPage( pParent, "ApplyColPage", "dbaccess/ui/applycolpage.ui")
{
m_ibColumn_RH.SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
m_ibColumn_LH.SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
m_ibColumns_RH.SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
m_ibColumns_LH.SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
get(m_pOrgColumnNames, "from");
get(m_pColumn_RH, "colrh");
get(m_pColumns_RH, "colsrh");
get(m_pColumn_LH, "collh");
get(m_pColumns_LH, "colslh");
get(m_pNewColumnNames, "to");
m_lbOrgColumnNames.EnableMultiSelection(true);
m_lbNewColumnNames.EnableMultiSelection(true);
Size aSize(approximate_char_width() * 30, GetTextHeight() * 40);
m_pOrgColumnNames->set_width_request(aSize.Width());
m_pOrgColumnNames->set_height_request(aSize.Height());
m_pNewColumnNames->set_width_request(aSize.Width());
m_pNewColumnNames->set_height_request(aSize.Height());
m_lbOrgColumnNames.SetDoubleClickHdl(LINK(this,OWizColumnSelect,ListDoubleClickHdl));
m_lbNewColumnNames.SetDoubleClickHdl(LINK(this,OWizColumnSelect,ListDoubleClickHdl));
FreeResource();
m_pColumn_RH->SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
m_pColumn_LH->SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
m_pColumns_RH->SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
m_pColumns_LH->SetClickHdl(LINK(this,OWizColumnSelect,ButtonClickHdl));
m_pOrgColumnNames->EnableMultiSelection(true);
m_pNewColumnNames->EnableMultiSelection(true);
m_pOrgColumnNames->SetDoubleClickHdl(LINK(this,OWizColumnSelect,ListDoubleClickHdl));
m_pNewColumnNames->SetDoubleClickHdl(LINK(this,OWizColumnSelect,ListDoubleClickHdl));
}
OWizColumnSelect::~OWizColumnSelect()
{
while ( m_lbNewColumnNames.GetEntryCount() )
while ( m_pNewColumnNames->GetEntryCount() )
{
void* pData = m_lbNewColumnNames.GetEntryData(0);
void* pData = m_pNewColumnNames->GetEntryData(0);
if ( pData )
delete static_cast<OFieldDescription*>(pData);
m_lbNewColumnNames.RemoveEntry(0);
m_pNewColumnNames->RemoveEntry(0);
}
m_lbNewColumnNames.Clear();
m_pNewColumnNames->Clear();
}
void OWizColumnSelect::Reset()
{
// restore original state
clearListBox(m_lbOrgColumnNames);
clearListBox(m_lbNewColumnNames);
clearListBox(*m_pOrgColumnNames);
clearListBox(*m_pNewColumnNames);
m_pParent->m_mNameMapping.clear();
// insert the source columns in the left listbox
@@ -103,12 +114,12 @@ void OWizColumnSelect::Reset()
for(;aIter != aEnd;++aIter)
{
sal_uInt16 nPos = m_lbOrgColumnNames.InsertEntry((*aIter)->first);
m_lbOrgColumnNames.SetEntryData(nPos,(*aIter)->second);
sal_uInt16 nPos = m_pOrgColumnNames->InsertEntry((*aIter)->first);
m_pOrgColumnNames->SetEntryData(nPos,(*aIter)->second);
}
if(m_lbOrgColumnNames.GetEntryCount())
m_lbOrgColumnNames.SelectEntryPos(0);
if(m_pOrgColumnNames->GetEntryCount())
m_pOrgColumnNames->SelectEntryPos(0);
m_bFirstTime = false;
}
@@ -119,7 +130,7 @@ void OWizColumnSelect::ActivatePage( )
if(m_pParent->getDestColumns()->empty())
Reset();
clearListBox(m_lbNewColumnNames);
clearListBox(*m_pNewColumnNames);
const ODatabaseExport::TColumnVector* pDestColumns = m_pParent->getDestVector();
@@ -127,13 +138,13 @@ void OWizColumnSelect::ActivatePage( )
ODatabaseExport::TColumnVector::const_iterator aEnd = pDestColumns->end();
for(;aIter != aEnd;++aIter)
{
sal_uInt16 nPos = m_lbNewColumnNames.InsertEntry((*aIter)->first);
m_lbNewColumnNames.SetEntryData(nPos,new OFieldDescription(*((*aIter)->second)));
m_lbOrgColumnNames.RemoveEntry((*aIter)->first);
sal_uInt16 nPos = m_pNewColumnNames->InsertEntry((*aIter)->first);
m_pNewColumnNames->SetEntryData(nPos,new OFieldDescription(*((*aIter)->second)));
m_pOrgColumnNames->RemoveEntry((*aIter)->first);
}
m_pParent->GetOKButton().Enable(m_lbNewColumnNames.GetEntryCount() != 0);
m_pParent->EnableButton(OCopyTableWizard::WIZARD_NEXT,m_lbNewColumnNames.GetEntryCount() && m_pParent->getOperation() != CopyTableOperation::AppendData);
m_ibColumns_RH.GrabFocus();
m_pParent->GetOKButton().Enable(m_pNewColumnNames->GetEntryCount() != 0);
m_pParent->EnableButton(OCopyTableWizard::WIZARD_NEXT,m_pNewColumnNames->GetEntryCount() && m_pParent->getOperation() != CopyTableOperation::AppendData);
m_pColumns_RH->GrabFocus();
}
bool OWizColumnSelect::LeavePage()
@@ -141,14 +152,14 @@ bool OWizColumnSelect::LeavePage()
m_pParent->clearDestColumns();
for(sal_uInt16 i=0 ; i< m_lbNewColumnNames.GetEntryCount();++i)
for(sal_uInt16 i=0 ; i< m_pNewColumnNames->GetEntryCount();++i)
{
OFieldDescription* pField = static_cast<OFieldDescription*>(m_lbNewColumnNames.GetEntryData(i));
OFieldDescription* pField = static_cast<OFieldDescription*>(m_pNewColumnNames->GetEntryData(i));
OSL_ENSURE(pField,"The field information can not be null!");
m_pParent->insertColumn(i,pField);
}
clearListBox(m_lbNewColumnNames);
clearListBox(*m_pNewColumnNames);
if ( m_pParent->GetPressedButton() == OCopyTableWizard::WIZARD_NEXT
|| m_pParent->GetPressedButton() == OCopyTableWizard::WIZARD_FINISH
@@ -160,30 +171,30 @@ bool OWizColumnSelect::LeavePage()
IMPL_LINK( OWizColumnSelect, ButtonClickHdl, Button *, pButton )
{
MultiListBox *pLeft = NULL;
MultiListBox *pRight = NULL;
ListBox *pLeft = NULL;
ListBox *pRight = NULL;
bool bAll = false;
if(pButton == &m_ibColumn_RH)
if (pButton == m_pColumn_RH)
{
pLeft = &m_lbOrgColumnNames;
pRight = &m_lbNewColumnNames;
pLeft = m_pOrgColumnNames;
pRight = m_pNewColumnNames;
}
else if(pButton == &m_ibColumn_LH)
else if(pButton == m_pColumn_LH)
{
pLeft = &m_lbNewColumnNames;
pRight = &m_lbOrgColumnNames;
pLeft = m_pNewColumnNames;
pRight = m_pOrgColumnNames;
}
else if(pButton == &m_ibColumns_RH)
else if(pButton == m_pColumns_RH)
{
pLeft = &m_lbOrgColumnNames;
pRight = &m_lbNewColumnNames;
pLeft = m_pOrgColumnNames;
pRight = m_pNewColumnNames;
bAll = true;
}
else if(pButton == &m_ibColumns_LH)
else if(pButton == m_pColumns_LH)
{
pLeft = &m_lbNewColumnNames;
pRight = &m_lbOrgColumnNames;
pLeft = m_pNewColumnNames;
pRight = m_pOrgColumnNames;
bAll = true;
}
// else ????
@@ -215,24 +226,24 @@ IMPL_LINK( OWizColumnSelect, ButtonClickHdl, Button *, pButton )
enableButtons();
if(m_lbOrgColumnNames.GetEntryCount())
m_lbOrgColumnNames.SelectEntryPos(0);
if(m_pOrgColumnNames->GetEntryCount())
m_pOrgColumnNames->SelectEntryPos(0);
return 0;
}
IMPL_LINK( OWizColumnSelect, ListDoubleClickHdl, MultiListBox *, pListBox )
IMPL_LINK( OWizColumnSelect, ListDoubleClickHdl, ListBox *, pListBox )
{
MultiListBox *pLeft,*pRight;
if(pListBox == &m_lbOrgColumnNames)
ListBox *pLeft,*pRight;
if(pListBox == m_pOrgColumnNames)
{
pLeft = &m_lbOrgColumnNames;
pRight = &m_lbNewColumnNames;
pLeft = m_pOrgColumnNames;
pRight = m_pNewColumnNames;
}
else
{
pRight = &m_lbOrgColumnNames;
pLeft = &m_lbNewColumnNames;
pRight = m_pOrgColumnNames;
pLeft = m_pNewColumnNames;
}
// If database is able to process PrimaryKeys, set PrimaryKey
@@ -253,7 +264,7 @@ IMPL_LINK( OWizColumnSelect, ListDoubleClickHdl, MultiListBox *, pListBox )
return 0;
}
void OWizColumnSelect::clearListBox(MultiListBox& _rListBox)
void OWizColumnSelect::clearListBox(ListBox& _rListBox)
{
while(_rListBox.GetEntryCount())
_rListBox.RemoveEntry(0);
@@ -302,7 +313,7 @@ void OWizColumnSelect::moveColumn( ListBox* _pRight,
sal_Int32 _nMaxNameLen,
const ::comphelper::UStringMixEqual& _aCase)
{
if(_pRight == &m_lbNewColumnNames)
if(_pRight == m_pNewColumnNames)
{
// we copy the column into the new format for the dest
OFieldDescription* pSrcField = static_cast<OFieldDescription*>(_pLeft->GetEntryData(_pLeft->GetEntryPos(OUString(_sColumnName))));
@@ -350,7 +361,7 @@ sal_uInt16 OWizColumnSelect::adjustColumnPosition( ListBox* _pLeft,
// if returning all entries to their original position,
// then there is no need to adjust the positions.
if (m_ibColumns_LH.HasFocus())
if (m_pColumns_LH->HasFocus())
return nAdjustedPos;
sal_uInt16 nCount = _pLeft->GetEntryCount();
@@ -389,7 +400,7 @@ sal_uInt16 OWizColumnSelect::adjustColumnPosition( ListBox* _pLeft,
void OWizColumnSelect::enableButtons()
{
bool bEntries = m_lbNewColumnNames.GetEntryCount() != 0;
bool bEntries = m_pNewColumnNames->GetEntryCount() != 0;
if(!bEntries)
m_pParent->m_mNameMapping.clear();

View File

@@ -19,14 +19,8 @@
#ifndef DBAUI_WIZARD_PAGES_HRC
#define DBAUI_WIZARD_PAGES_HRC
#define LB_ORG_COLUMN_NAMES 1
#define LB_NEW_COLUMN_NAMES 2
#define IB_COLUMN_RH 1
#define IB_COLUMN_LH 2
#define IB_COLUMNS_RH 3
#define IB_COLUMNS_LH 4
#define PB_AUTO 5
#define PB_OK 6
#define PB_CANCEL 7
@@ -50,7 +44,6 @@
#define FT_TABLENAME 4
#define FT_KEYNAME 5
#define FL_COLUMN_SELECT 1
#define FL_COLUMN_NAME 2
#define FL_AUTO_TYPE 3
#define FL_OPTIONS 5

View File

@@ -98,132 +98,6 @@ ModalDialog WIZ_RTFCOPYTABLE
};
TabPage TAB_WIZ_COLUMN_SELECT
{
SVLook = TRUE ;
Size = MAP_APPFONT ( WINDOW_SIZE_X , WINDOW_SIZE_Y ) ;
HelpId = HID_TAB_WIZ_COLUMN_SELECT;
Hide = TRUE;
FixedLine FL_COLUMN_SELECT
{
Pos = MAP_APPFONT ( 6 , 3 ) ;
Size = MAP_APPFONT ( WINDOW_SIZE_X - 12 , 8 ) ;
Text [ en-US ] = "Existing columns" ;
};
MultiListBox LB_ORG_COLUMN_NAMES
{
HelpID = "dbaccess:MultiListBox:TAB_WIZ_COLUMN_SELECT:LB_ORG_COLUMN_NAMES";
Border = TRUE ;
Pos = MAP_APPFONT ( WINDOW_BORDER_X , WINDOW_BORDER_Y ) ;
Size = MAP_APPFONT ( 95 , WINDOW_SIZE_Y - 23 ) ;
TabStop = TRUE ;
HScroll = TRUE;
VScroll = TRUE;
AutoHScroll = TRUE;
SimpleMode = TRUE;
Sort = FALSE;
};
ImageButton IB_COLUMN_RH
{
HelpID = "dbaccess:ImageButton:TAB_WIZ_COLUMN_SELECT:IB_COLUMN_RH";
Pos = MAP_APPFONT ( WINDOW_BORDER_X + 116 , WINDOW_BORDER_Y + 25 ) ;
Size = MAP_APPFONT ( 20 , 14 ) ;
TabStop = TRUE ;
ButtonImage = Image
{
ImageBitmap = Bitmap
{
File = "one_right.png" ;
};
MaskColor = Color
{
Red = 0xFFFF;
Green = 0x0000;
Blue = 0xFFFF;
};
};
};
ImageButton IB_COLUMNS_RH
{
HelpID = "dbaccess:ImageButton:TAB_WIZ_COLUMN_SELECT:IB_COLUMNS_RH";
Pos = MAP_APPFONT ( WINDOW_BORDER_X + 116 , WINDOW_BORDER_Y + 45 ) ;
Size = MAP_APPFONT ( 20 , 14 ) ;
TabStop = TRUE;
DefButton = TRUE;
ButtonImage = Image
{
ImageBitmap = Bitmap
{
File = "all_right.png" ;
};
MaskColor = Color
{
Red = 0xFFFF;
Green = 0x0000;
Blue = 0xFFFF;
};
};
};
ImageButton IB_COLUMN_LH
{
HelpID = "dbaccess:ImageButton:TAB_WIZ_COLUMN_SELECT:IB_COLUMN_LH";
Pos = MAP_APPFONT ( WINDOW_BORDER_X + 116 , WINDOW_BORDER_Y + 65) ;
Size = MAP_APPFONT ( 20 , 14 ) ;
TabStop = TRUE ;
ButtonImage = Image
{
ImageBitmap = Bitmap
{
File = "one_left.png1" ;
};
MaskColor = Color
{
Red = 0xFFFF;
Green = 0x0000;
Blue = 0xFFFF;
};
};
};
ImageButton IB_COLUMNS_LH
{
HelpID = "dbaccess:ImageButton:TAB_WIZ_COLUMN_SELECT:IB_COLUMNS_LH";
Pos = MAP_APPFONT ( WINDOW_BORDER_X + 116 , WINDOW_BORDER_Y + 85) ;
Size = MAP_APPFONT ( 20 , 14 ) ;
TabStop = TRUE ;
ButtonImage = Image
{
ImageBitmap = Bitmap
{
File = "all_left.png" ;
};
MaskColor = Color
{
Red = 0xFFFF;
Green = 0x0000;
Blue = 0xFFFF;
};
};
};
MultiListBox LB_NEW_COLUMN_NAMES
{
HelpID = "dbaccess:MultiListBox:TAB_WIZ_COLUMN_SELECT:LB_NEW_COLUMN_NAMES";
Border = TRUE ;
Pos = MAP_APPFONT ( WINDOW_BORDER_X + 157, WINDOW_BORDER_Y) ;
Size = MAP_APPFONT ( 95 , WINDOW_SIZE_Y - 23 ) ;
TabStop = TRUE ;
HScroll = TRUE;
VScroll = TRUE;
AutoHScroll = TRUE;
SimpleMode = TRUE;
Sort = FALSE;
};
};
TabPage TAB_WIZ_TYPE_SELECT
{
SVLook = TRUE ;

View File

@@ -0,0 +1,177 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.16.1 -->
<interface>
<requires lib="gtk+" version="3.0"/>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="pixbuf">dbaccess/res/all_right.png</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="pixbuf">dbaccess/res/one_right.png</property>
</object>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="pixbuf">dbaccess/res/one_left.png</property>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="pixbuf">dbaccess/res/all_left.png</property>
</object>
<object class="GtkGrid" id="ApplyColPage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">6</property>
<child>
<object class="GtkFrame" id="frame1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkTreeView" id="from:border">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection1"/>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkTreeView" id="to:border">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection3"/>
</child>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkButtonBox" id="buttonbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">center</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<property name="layout_style">start</property>
<child>
<object class="GtkButton" id="colrh">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image2</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="colsrh">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="collh">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image3</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="colslh">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image4</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Existing columns</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
</interface>