summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extras/source/glade/libreoffice-catalog.xml.in3
-rw-r--r--sw/AllLangResTarget_sw.mk1
-rw-r--r--sw/UIConfig_swriter.mk1
-rw-r--r--sw/inc/dbui.hrc2
-rwxr-xr-x[-rw-r--r--]sw/source/ui/dbui/createaddresslistdialog.cxx240
-rw-r--r--sw/source/ui/dbui/createaddresslistdialog.hrc46
-rwxr-xr-x[-rw-r--r--]sw/source/ui/dbui/createaddresslistdialog.hxx25
-rw-r--r--sw/source/ui/dbui/createaddresslistdialog.src165
-rw-r--r--sw/source/ui/dbui/dbui.src5
-rw-r--r--sw/uiconfig/swriter/ui/createaddresslist.ui330
10 files changed, 490 insertions, 328 deletions
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index 87d63df82419..2e393f6950df 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -30,6 +30,9 @@
<glade-widget-class title="Font PickListBox" name="smlo-SmFontPickListBox"
generic-name="SmFontPickListBox" parent="GtkComboBoxText"
icon-name="widget-gtk-comboboxtext"/>
+ <glade-widget-class title="Address Control" name="swuilo-SwAddressControlImpl"
+ generic-name="SwAddressControlImpl" parent="GtkComboBoxText"
+ icon-name="widget-gtk-comboboxtext"/>
<glade-widget-class title="Thesaurus View" name="cuilo-ThesaurusAlternativesCtrl"
generic-name="ThesaurusAlternativesCtrl" parent="GtkTextView"
icon-name="widget-gtk-textview"/>
diff --git a/sw/AllLangResTarget_sw.mk b/sw/AllLangResTarget_sw.mk
index c5176fc86a25..f6b099d0401b 100644
--- a/sw/AllLangResTarget_sw.mk
+++ b/sw/AllLangResTarget_sw.mk
@@ -89,7 +89,6 @@ $(eval $(call gb_SrsTarget_add_files,sw/res,\
sw/source/ui/chrdlg/chrdlg.src \
sw/source/ui/config/optdlg.src \
sw/source/ui/config/optload.src \
- sw/source/ui/dbui/createaddresslistdialog.src \
sw/source/ui/dbui/dbtablepreviewdialog.src \
sw/source/ui/dbui/dbui.src \
sw/source/ui/dbui/mailmergewizard.src \
diff --git a/sw/UIConfig_swriter.mk b/sw/UIConfig_swriter.mk
index e494bc31fd92..6a45ead83510 100644
--- a/sw/UIConfig_swriter.mk
+++ b/sw/UIConfig_swriter.mk
@@ -86,6 +86,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/swriter,\
sw/uiconfig/swriter/ui/columnwidth \
sw/uiconfig/swriter/ui/conditionpage \
sw/uiconfig/swriter/ui/converttexttable \
+ sw/uiconfig/swriter/ui/createaddresslist \
sw/uiconfig/swriter/ui/createauthorentry \
sw/uiconfig/swriter/ui/createautomarkdialog \
sw/uiconfig/swriter/ui/customizeaddrlistdialog \
diff --git a/sw/inc/dbui.hrc b/sw/inc/dbui.hrc
index 60865f87140f..e7c6a73cc04e 100644
--- a/sw/inc/dbui.hrc
+++ b/sw/inc/dbui.hrc
@@ -27,7 +27,6 @@
#define DLG_MAILMERGEWIZARD (RC_DBUI_BEGIN + 3)
#define DLG_MM_SELECTDBTABLEDDIALOG (RC_DBUI_BEGIN + 12)
#define DLG_MM_DBTABLEPREVIEWDIALOG (RC_DBUI_BEGIN + 13)
-#define DLG_MM_CREATEADDRESSLIST (RC_DBUI_BEGIN + 14)
#define DLG_MM_ASSIGNFIELDS (RC_DBUI_BEGIN + 20)
@@ -67,6 +66,7 @@
#define ST_DEFAULTATTACHMENT (RC_DBUI_BEGIN + 30)
#define ST_NOSUBJECT (RC_DBUI_BEGIN + 31)
#define ST_CONFIGUREMAIL (RC_DBUI_BEGIN + 32)
+#define ST_FILTERNAME (RC_DBUI_BEGIN + 33)
// Elements -----------------------------------------------------------------
#define MM_PART_TITLE 0
diff --git a/sw/source/ui/dbui/createaddresslistdialog.cxx b/sw/source/ui/dbui/createaddresslistdialog.cxx
index c194d1b8b55c..19440b8a32bf 100644..100755
--- a/sw/source/ui/dbui/createaddresslistdialog.cxx
+++ b/sw/source/ui/dbui/createaddresslistdialog.cxx
@@ -36,7 +36,6 @@
#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <tools/urlobj.hxx>
-#include <createaddresslistdialog.hrc>
#include <dbui.hrc>
#include <helpid.h>
#include <unomid.h>
@@ -47,8 +46,8 @@ using namespace ::com::sun::star::ui::dialogs;
class SwAddressControl_Impl : public Control
{
- ScrollBar m_aScrollBar;
- Window m_aWindow;
+ ScrollBar *m_pScrollBar;
+ Window *m_pWindow;
::std::vector<FixedText*> m_aFixedTexts;
::std::vector<Edit*> m_aEdits;
@@ -68,11 +67,12 @@ class SwAddressControl_Impl : public Control
virtual bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
virtual void Command( const CommandEvent& rCEvt ) SAL_OVERRIDE;
+ virtual Size GetOptimalSize() const SAL_OVERRIDE;
using Window::SetData;
public:
- SwAddressControl_Impl(Window* pParent, const ResId& rResId );
+ SwAddressControl_Impl(Window* pParent , WinBits nBits );
virtual ~SwAddressControl_Impl();
void SetData(SwCSVData& rDBData);
@@ -80,24 +80,35 @@ public:
void SetCurrentDataSet(sal_uInt32 nSet);
sal_uInt32 GetCurrentDataSet() const { return m_nCurrentDataSet;}
void SetCursorTo(sal_uInt32 nElement);
+ virtual void Resize();
};
-SwAddressControl_Impl::SwAddressControl_Impl(Window* pParent, const ResId& rResId ) :
- Control(pParent, rResId),
- m_aScrollBar(this, ResId(SCR_1,*rResId.GetResMgr())),
- m_aWindow(this, ResId(WIN_DATA,*rResId.GetResMgr())),
+SwAddressControl_Impl::SwAddressControl_Impl(Window* pParent, WinBits nBits ) :
+ Control(pParent, nBits),
+ m_pScrollBar(new ScrollBar(this)),
+ m_pWindow(new Window(this, WB_DIALOGCONTROL)),
m_pData(0),
- m_aWinOutputSize( m_aWindow.GetOutputSizePixel() ),
m_nLineHeight(0),
m_nCurrentDataSet(0),
m_bNoDataSet(true)
{
- FreeResource();
+ long nScrollBarWidth = m_pScrollBar->GetOutputSize().Width();
+ Size aSize = GetOutputSizePixel();
+
+ m_pWindow->SetSizePixel(Size(aSize.Width() - nScrollBarWidth, aSize.Height()));
+ m_aWinOutputSize = m_pWindow->GetOutputSizePixel();
+ m_pWindow->Show();
+ m_pScrollBar->Show();
+
Link aScrollLink = LINK(this, SwAddressControl_Impl, ScrollHdl_Impl);
- m_aScrollBar.SetScrollHdl(aScrollLink);
- m_aScrollBar.SetEndScrollHdl(aScrollLink);
- m_aScrollBar.EnableDrag();
+ m_pScrollBar->SetScrollHdl(aScrollLink);
+ m_pScrollBar->SetEndScrollHdl(aScrollLink);
+ m_pScrollBar->EnableDrag();
+}
+extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeSwAddressControlImpl(Window *pParent, VclBuilder::stringmap &)
+{
+ return new SwAddressControl_Impl(pParent, WB_BORDER | WB_DIALOGCONTROL);
}
SwAddressControl_Impl::~SwAddressControl_Impl()
@@ -108,6 +119,8 @@ SwAddressControl_Impl::~SwAddressControl_Impl()
::std::vector<Edit*>::iterator aEditIter;
for(aEditIter = m_aEdits.begin(); aEditIter != m_aEdits.end(); ++aEditIter)
delete *aEditIter;
+ delete m_pScrollBar;
+ delete m_pWindow;
}
void SwAddressControl_Impl::SetData(SwCSVData& rDBData)
@@ -130,8 +143,8 @@ void SwAddressControl_Impl::SetData(SwCSVData& rDBData)
::std::vector< OUString >::iterator aHeaderIter;
- long nFTXPos = m_aWindow.LogicToPixel(Point(RSC_SP_CTRL_X, RSC_SP_CTRL_X), MAP_APPFONT).X();
- long nFTHeight = m_aWindow.LogicToPixel(Size(RSC_BS_CHARHEIGHT, RSC_BS_CHARHEIGHT), MAP_APPFONT).Height();
+ long nFTXPos = m_pWindow->LogicToPixel(Point(RSC_SP_CTRL_X, RSC_SP_CTRL_X), MAP_APPFONT).X();
+ long nFTHeight = m_pWindow->LogicToPixel(Size(RSC_BS_CHARHEIGHT, RSC_BS_CHARHEIGHT), MAP_APPFONT).Height();
long nFTWidth = 0;
//determine the width of the FixedTexts
@@ -139,19 +152,19 @@ void SwAddressControl_Impl::SetData(SwCSVData& rDBData)
aHeaderIter != m_pData->aDBColumnHeaders.end();
++aHeaderIter)
{
- sal_Int32 nTemp = m_aWindow.GetTextWidth(*aHeaderIter);
+ sal_Int32 nTemp = m_pWindow->GetTextWidth(*aHeaderIter);
if(nTemp > nFTWidth)
nFTWidth = nTemp;
}
//add some pixels
nFTWidth += 2;
long nEDXPos = nFTWidth + nFTXPos +
- m_aWindow.LogicToPixel(Size(RSC_SP_CTRL_DESC_X, RSC_SP_CTRL_DESC_X), MAP_APPFONT).Width();
- long nEDHeight = m_aWindow.LogicToPixel(Size(RSC_CD_TEXTBOX_HEIGHT, RSC_CD_TEXTBOX_HEIGHT), MAP_APPFONT).Height();
+ m_pWindow->LogicToPixel(Size(RSC_SP_CTRL_DESC_X, RSC_SP_CTRL_DESC_X), MAP_APPFONT).Width();
+ long nEDHeight = m_pWindow->LogicToPixel(Size(RSC_CD_TEXTBOX_HEIGHT, RSC_CD_TEXTBOX_HEIGHT), MAP_APPFONT).Height();
long nEDWidth = m_aWinOutputSize.Width() - nEDXPos - nFTXPos;
- m_nLineHeight = nEDHeight + m_aWindow.LogicToPixel(Size(RSC_SP_CTRL_GROUP_Y, RSC_SP_CTRL_GROUP_Y), MAP_APPFONT).Height();
+ m_nLineHeight = nEDHeight + m_pWindow->LogicToPixel(Size(RSC_SP_CTRL_GROUP_Y, RSC_SP_CTRL_GROUP_Y), MAP_APPFONT).Height();
- long nEDYPos = m_aWindow.LogicToPixel(Size(RSC_SP_CTRL_DESC_Y, RSC_SP_CTRL_DESC_Y), MAP_APPFONT).Height();
+ long nEDYPos = m_pWindow->LogicToPixel(Size(RSC_SP_CTRL_DESC_Y, RSC_SP_CTRL_DESC_Y), MAP_APPFONT).Height();
long nFTYPos = nEDYPos + nEDHeight - nFTHeight;
Link aFocusLink = LINK(this, SwAddressControl_Impl, GotFocusHdl_Impl);
@@ -163,8 +176,8 @@ void SwAddressControl_Impl::SetData(SwCSVData& rDBData)
aHeaderIter != m_pData->aDBColumnHeaders.end();
++aHeaderIter, nEDYPos += m_nLineHeight, nFTYPos += m_nLineHeight, nLines++)
{
- FixedText* pNewFT = new FixedText(&m_aWindow, WB_RIGHT);
- Edit* pNewED = new Edit(&m_aWindow, WB_BORDER);
+ FixedText* pNewFT = new FixedText(m_pWindow, WB_RIGHT);
+ Edit* pNewED = new Edit(m_pWindow, WB_BORDER);
//set nLines a position identifier - used in the ModifyHdl
pNewED->SetData((void*)nLines);
pNewED->SetGetFocusHdl(aFocusLink);
@@ -188,37 +201,38 @@ void SwAddressControl_Impl::SetData(SwCSVData& rDBData)
{
//the m_aWindow has to be at least as high as the ScrollBar and it must include the last Edit
sal_Int32 nContentHeight = pLastEdit->GetPosPixel().Y() + nEDHeight +
- m_aWindow.LogicToPixel(Size(RSC_SP_CTRL_GROUP_Y, RSC_SP_CTRL_GROUP_Y), MAP_APPFONT).Height();
- if(nContentHeight < m_aScrollBar.GetSizePixel().Height())
+ m_pWindow->LogicToPixel(Size(RSC_SP_CTRL_GROUP_Y, RSC_SP_CTRL_GROUP_Y), MAP_APPFONT).Height();
+ if(nContentHeight < m_pScrollBar->GetSizePixel().Height())
{
- nContentHeight = m_aScrollBar.GetSizePixel().Height();
+ nContentHeight = m_pScrollBar->GetSizePixel().Height();
// Reset the scrollbar's thumb to the top before it is disabled.
- m_aScrollBar.DoScroll(0);
- m_aScrollBar.SetThumbPos(0);
- m_aScrollBar.Enable(false);
+ m_pScrollBar->DoScroll(0);
+ m_pScrollBar->SetThumbPos(0);
+ m_pScrollBar->Enable(false);
}
else
{
- m_aScrollBar.Enable(true);
- m_aScrollBar.SetRange(Range(0, nLines));
- m_aScrollBar.SetThumbPos(0);
- m_aScrollBar.SetVisibleSize(nVisibleLines);
+ m_pScrollBar->Enable(true);
+ m_pScrollBar->SetRange(Range(0, nLines));
+ m_pScrollBar->SetThumbPos(0);
+ m_pScrollBar->SetVisibleSize(nVisibleLines);
// Reset the scroll bar position (especially if items deleted)
- m_aScrollBar.DoScroll(m_aScrollBar.GetRangeMax());
- m_aScrollBar.DoScroll(0);
+ m_pScrollBar->DoScroll(m_pScrollBar->GetRangeMax());
+ m_pScrollBar->DoScroll(0);
}
Size aWinOutputSize(m_aWinOutputSize);
aWinOutputSize.Height() = nContentHeight;
- m_aWindow.SetOutputSizePixel(aWinOutputSize);
+ m_pWindow->SetOutputSizePixel(aWinOutputSize);
}
// Even if no items in m_aEdits, the scrollbar will still exist;
// we might as well disable it.
if (m_aEdits.size() < 1) {
- m_aScrollBar.DoScroll(0);
- m_aScrollBar.SetThumbPos(0);
- m_aScrollBar.Enable(false);
+ m_pScrollBar->DoScroll(0);
+ m_pScrollBar->SetThumbPos(0);
+ m_pScrollBar->Enable(false);
}
+ Resize();
}
void SwAddressControl_Impl::SetCurrentDataSet(sal_uInt32 nSet)
@@ -245,7 +259,7 @@ void SwAddressControl_Impl::SetCurrentDataSet(sal_uInt32 nSet)
IMPL_LINK(SwAddressControl_Impl, ScrollHdl_Impl, ScrollBar*, pScroll)
{
long nThumb = pScroll->GetThumbPos();
- m_aWindow.SetPosPixel(Point(0, - (m_nLineHeight * nThumb)));
+ m_pWindow->SetPosPixel(Point(0, - (m_nLineHeight * nThumb)));
return 0;
}
@@ -262,10 +276,10 @@ IMPL_LINK(SwAddressControl_Impl, GotFocusHdl_Impl, Edit*, pEdit)
void SwAddressControl_Impl::MakeVisible(const Rectangle & rRect)
{
- long nThumb = m_aScrollBar.GetThumbPos();
+ long nThumb = m_pScrollBar->GetThumbPos();
//determine range of visible positions
- long nMinVisiblePos = - m_aWindow.GetPosPixel().Y();
- long nMaxVisiblePos = m_aScrollBar.GetSizePixel().Height() + nMinVisiblePos;
+ long nMinVisiblePos = - m_pWindow->GetPosPixel().Y();
+ long nMaxVisiblePos = m_pScrollBar->GetSizePixel().Height() + nMinVisiblePos;
if( rRect.TopLeft().Y() < nMinVisiblePos)
{
nThumb -= 1 + ((nMinVisiblePos - rRect.TopLeft().Y()) / m_nLineHeight);
@@ -274,10 +288,10 @@ void SwAddressControl_Impl::MakeVisible(const Rectangle & rRect)
{
nThumb += 1 + ((nMaxVisiblePos - rRect.BottomLeft().Y()) / m_nLineHeight);
}
- if(nThumb != m_aScrollBar.GetThumbPos())
+ if(nThumb != m_pScrollBar->GetThumbPos())
{
- m_aScrollBar.SetThumbPos(nThumb);
- ScrollHdl_Impl(&m_aScrollBar);
+ m_pScrollBar->SetThumbPos(nThumb);
+ ScrollHdl_Impl(m_pScrollBar);
}
}
@@ -318,7 +332,7 @@ void SwAddressControl_Impl::Command( const CommandEvent& rCEvt )
const CommandWheelData* pWheelData = rCEvt.GetWheelData();
if(pWheelData && !pWheelData->IsHorz() && COMMAND_WHEEL_ZOOM != pWheelData->GetMode())
{
- HandleScrollCommand( rCEvt, 0, &m_aScrollBar );
+ HandleScrollCommand( rCEvt, 0, m_pScrollBar );
}
}
break;
@@ -342,46 +356,73 @@ bool SwAddressControl_Impl::PreNotify( NotifyEvent& rNEvt )
return Control::PreNotify(rNEvt);
}
+Size SwAddressControl_Impl::GetOptimalSize() const
+{
+ return LogicToPixel(Size(250, 160), MAP_APPFONT);
+}
+
+void SwAddressControl_Impl::Resize()
+{
+ Window::Resize();
+ m_pScrollBar->SetSizePixel(Size(m_pScrollBar->GetOutputSizePixel().Width(), GetOutputSizePixel().Height()));
+
+ if(m_nLineHeight)
+ m_pScrollBar->SetVisibleSize(m_pScrollBar->GetOutputSize().Height() / m_nLineHeight);
+ m_pScrollBar->DoScroll(0);
+
+ long nScrollBarWidth = m_pScrollBar->GetOutputSize().Width();
+ Size aSize = GetOutputSizePixel();
+
+ m_pWindow->SetSizePixel(Size(aSize.Width() - nScrollBarWidth, m_pWindow->GetOutputSizePixel().Height()));
+ m_pScrollBar->SetPosPixel(Point(aSize.Width() - nScrollBarWidth, 0));
+
+ if(m_aEdits.size())
+ {
+ long nNewEditSize = aSize.Width() - (*m_aEdits.begin())->GetPosPixel().X() - nScrollBarWidth - 6;
+
+ ::std::vector<Edit*>::iterator aEditIter;
+ for(aEditIter = m_aEdits.begin(); aEditIter != m_aEdits.end(); ++aEditIter)
+ {
+ (*aEditIter)->SetSizePixel(Size(nNewEditSize, (*aEditIter)->GetSizePixel().Height()));
+ }
+ }
+
+}
+
SwCreateAddressListDialog::SwCreateAddressListDialog(
Window* pParent, const OUString& rURL, SwMailMergeConfigItem& rConfig) :
- SfxModalDialog(pParent, SW_RES(DLG_MM_CREATEADDRESSLIST)),
- m_aAddressInformation( this, SW_RES( FI_ADDRESSINFORMATION)),
- m_pAddressControl(new SwAddressControl_Impl(this, SW_RES(CT_ADDRESS))),
- m_aNewPB( this, SW_RES( PB_NEW)),
- m_aDeletePB( this, SW_RES( PB_DELETE)),
- m_aFindPB( this, SW_RES( PB_FIND)),
- m_aCustomizePB( this, SW_RES( PB_CUSTOMIZE)),
-
- m_aViewEntriesFI( this, SW_RES( FI_VIEWENTRIES)),
- m_aStartPB( this, SW_RES( PB_START)),
- m_aPrevPB( this, SW_RES( PB_PREV)),
- m_aSetNoNF( this, SW_RES( NF_SETNO)),
- m_aNextPB( this, SW_RES( PB_NEXT )),
- m_aEndPB( this, SW_RES( PB_END)),
-
- m_aSeparatorFL( this, SW_RES( FL_SEPARATOR)),
-
- m_aOK( this, SW_RES( PB_OK)),
- m_aCancel( this, SW_RES( PB_CANCEL)),
- m_aHelp( this, SW_RES( PB_HELP)),
+ SfxModalDialog(pParent, "CreateAddressList", "modules/swriter/ui/createaddresslist.ui"),
m_sAddressListFilterName( SW_RES( ST_FILTERNAME)),
m_sURL(rURL),
m_pCSVData( new SwCSVData ),
m_pFindDlg(0)
{
- FreeResource();
- m_aNewPB.SetClickHdl(LINK(this, SwCreateAddressListDialog, NewHdl_Impl));
- m_aDeletePB.SetClickHdl(LINK(this, SwCreateAddressListDialog, DeleteHdl_Impl));
- m_aFindPB.SetClickHdl(LINK(this, SwCreateAddressListDialog, FindHdl_Impl));
- m_aCustomizePB.SetClickHdl(LINK(this, SwCreateAddressListDialog, CustomizeHdl_Impl));
- m_aOK.SetClickHdl(LINK(this, SwCreateAddressListDialog, OkHdl_Impl));
+ get(m_pNewPB, "NEW");
+ get(m_pDeletePB, "DELETE");
+ get(m_pFindPB, "FIND");
+ get(m_pCustomizePB, "CUSTOMIZE");
+ get(m_pStartPB, "START");
+ get(m_pPrevPB, "PREV");
+ get(m_pSetNoNF, "SETNO-nospin");
+ m_pSetNoNF->SetFirst(1);
+ m_pSetNoNF->SetMin(1);
+ get(m_pNextPB, "NEXT");
+ get(m_pEndPB, "END");
+ get(m_pOK, "OK");
+ get(m_pAddressControl, "CONTAINER");
+
+ m_pNewPB->SetClickHdl(LINK(this, SwCreateAddressListDialog, NewHdl_Impl));
+ m_pDeletePB->SetClickHdl(LINK(this, SwCreateAddressListDialog, DeleteHdl_Impl));
+ m_pFindPB->SetClickHdl(LINK(this, SwCreateAddressListDialog, FindHdl_Impl));
+ m_pCustomizePB->SetClickHdl(LINK(this, SwCreateAddressListDialog, CustomizeHdl_Impl));
+ m_pOK->SetClickHdl(LINK(this, SwCreateAddressListDialog, OkHdl_Impl));
Link aLk = LINK(this, SwCreateAddressListDialog, DBCursorHdl_Impl);
- m_aStartPB.SetClickHdl(aLk);
- m_aPrevPB.SetClickHdl(aLk);
- m_aSetNoNF.SetModifyHdl(LINK(this, SwCreateAddressListDialog, DBNumCursorHdl_Impl));
- m_aNextPB.SetClickHdl(aLk);
- m_aEndPB.SetClickHdl(aLk);
+ m_pStartPB->SetClickHdl(aLk);
+ m_pPrevPB->SetClickHdl(aLk);
+ m_pSetNoNF->SetModifyHdl(LINK(this, SwCreateAddressListDialog, DBNumCursorHdl_Impl));
+ m_pNextPB->SetClickHdl(aLk);
+ m_pEndPB->SetClickHdl(aLk);
if(!m_sURL.isEmpty())
{
@@ -448,13 +489,12 @@ SwCreateAddressListDialog::SwCreateAddressListDialog(
//now fill the address control
m_pAddressControl->SetData(*m_pCSVData);
m_pAddressControl->SetCurrentDataSet(0);
- m_aSetNoNF.SetMax(m_pCSVData->aDBData.size());
+ m_pSetNoNF->SetMax(m_pCSVData->aDBData.size());
UpdateButtons();
}
SwCreateAddressListDialog::~SwCreateAddressListDialog()
{
- delete m_pAddressControl;
delete m_pCSVData;
delete m_pFindDlg;
}
@@ -466,9 +506,9 @@ IMPL_LINK_NOARG(SwCreateAddressListDialog, NewHdl_Impl)
OUString sTemp;
aNewData.insert(aNewData.begin(), m_pCSVData->aDBColumnHeaders.size(), sTemp);
m_pCSVData->aDBData.insert(m_pCSVData->aDBData.begin() + ++nCurrent, aNewData);
- m_aSetNoNF.SetMax(m_pCSVData->aDBData.size());
+ m_pSetNoNF->SetMax(m_pCSVData->aDBData.size());
//the NumericField start at 1
- m_aSetNoNF.SetValue(nCurrent + 1);
+ m_pSetNoNF->SetValue(nCurrent + 1);
//the address control starts at 0
m_pAddressControl->SetCurrentDataSet(nCurrent);
UpdateButtons();
@@ -489,10 +529,10 @@ IMPL_LINK_NOARG(SwCreateAddressListDialog, DeleteHdl_Impl)
// if only one set is available then clear the data
OUString sTemp;
m_pCSVData->aDBData[0].assign(m_pCSVData->aDBData[0].size(), sTemp);
- m_aDeletePB.Enable(false);
+ m_pDeletePB->Enable(false);
}
m_pAddressControl->SetCurrentDataSet(nCurrent);
- m_aSetNoNF.SetMax(m_pCSVData->aDBData.size());
+ m_pSetNoNF->SetMax(m_pCSVData->aDBData.size());
UpdateButtons();
return 0;
}
@@ -610,46 +650,46 @@ IMPL_LINK_NOARG(SwCreateAddressListDialog, OkHdl_Impl)
IMPL_LINK(SwCreateAddressListDialog, DBCursorHdl_Impl, PushButton*, pButton)
{
- sal_uInt32 nValue = static_cast< sal_uInt32 >(m_aSetNoNF.GetValue());
+ sal_uInt32 nValue = static_cast< sal_uInt32 >(m_pSetNoNF->GetValue());
- if(pButton == &m_aStartPB)
+ if(pButton == m_pStartPB)
nValue = 1;
- else if(pButton == &m_aPrevPB)
+ else if(pButton == m_pPrevPB)
{
if(nValue > 1)
--nValue;
}
- else if(pButton == &m_aNextPB)
+ else if(pButton == m_pNextPB)
{
- if(nValue < (sal_uInt32)m_aSetNoNF.GetMax())
+ if(nValue < (sal_uInt32)m_pSetNoNF->GetMax())
++nValue;
}
else //m_aEndPB
- nValue = static_cast< sal_uInt32 >(m_aSetNoNF.GetMax());
- if(nValue != m_aSetNoNF.GetValue())
+ nValue = static_cast< sal_uInt32 >(m_pSetNoNF->GetMax());
+ if(nValue != m_pSetNoNF->GetValue())
{
- m_aSetNoNF.SetValue(nValue);
- DBNumCursorHdl_Impl(&m_aSetNoNF);
+ m_pSetNoNF->SetValue(nValue);
+ DBNumCursorHdl_Impl(m_pSetNoNF);
}
return 0;
}
IMPL_LINK_NOARG(SwCreateAddressListDialog, DBNumCursorHdl_Impl)
{
- m_pAddressControl->SetCurrentDataSet( static_cast< sal_uInt32 >(m_aSetNoNF.GetValue() - 1) );
+ m_pAddressControl->SetCurrentDataSet( static_cast< sal_uInt32 >(m_pSetNoNF->GetValue() - 1) );
UpdateButtons();
return 0;
}
void SwCreateAddressListDialog::UpdateButtons()
{
- sal_uInt32 nCurrent = static_cast< sal_uInt32 >(m_aSetNoNF.GetValue() );
+ sal_uInt32 nCurrent = static_cast< sal_uInt32 >(m_pSetNoNF->GetValue() );
sal_uInt32 nSize = (sal_uInt32 )m_pCSVData->aDBData.size();
- m_aStartPB.Enable(nCurrent != 1);
- m_aPrevPB.Enable(nCurrent != 1);
- m_aNextPB.Enable(nCurrent != nSize);
- m_aEndPB.Enable(nCurrent != nSize);
- m_aDeletePB.Enable(nSize > 0);
+ m_pStartPB->Enable(nCurrent != 1);
+ m_pPrevPB->Enable(nCurrent != 1);
+ m_pNextPB->Enable(nCurrent != nSize);
+ m_pEndPB->Enable(nCurrent != nSize);
+ m_pDeletePB->Enable(nSize > 0);
}
void SwCreateAddressListDialog::Find(const OUString& rSearch, sal_Int32 nColumn)
@@ -690,7 +730,7 @@ void SwCreateAddressListDialog::Find(const OUString& rSearch, sal_Int32 nColumn)
if(bFound)
{
m_pAddressControl->SetCurrentDataSet(nPos);
- m_aSetNoNF.SetValue( nPos + 1 );
+ m_pSetNoNF->SetValue( nPos + 1 );
UpdateButtons();
m_pAddressControl->SetCursorTo(nElement);
}
diff --git a/sw/source/ui/dbui/createaddresslistdialog.hrc b/sw/source/ui/dbui/createaddresslistdialog.hrc
deleted file mode 100644
index 2a3ea763b5ff..000000000000
--- a/sw/source/ui/dbui/createaddresslistdialog.hrc
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#ifndef _CREATEADDRESSLISTDIALOG_HRC
-#define _CREATEADDRESSLISTDIALOG_HRC
-
-#define FI_ADDRESSINFORMATION 1
-#define CT_ADDRESS 2
-#define PB_NEW 3
-#define PB_DELETE 4
-#define PB_FIND 5
-#define PB_CUSTOMIZE 6
-#define FI_VIEWENTRIES 7
-#define PB_START 8
-#define PB_PREV 9
-#define NF_SETNO 10
-#define PB_NEXT 11
-#define PB_END 12
-#define FL_SEPARATOR 13
-#define PB_OK 14
-#define PB_CANCEL 15
-#define PB_HELP 16
-
-#define ST_FILTERNAME 18
-
-#define SCR_1 1
-#define WIN_DATA 2
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/ui/dbui/createaddresslistdialog.hxx b/sw/source/ui/dbui/createaddresslistdialog.hxx
index d931ab30d0b1..f14461078e7c 100644..100755
--- a/sw/source/ui/dbui/createaddresslistdialog.hxx
+++ b/sw/source/ui/dbui/createaddresslistdialog.hxx
@@ -40,26 +40,21 @@ struct SwCSVData
class SwFindEntryDialog;
class SwCreateAddressListDialog : public SfxModalDialog
{
- FixedInfo m_aAddressInformation;
SwAddressControl_Impl* m_pAddressControl;
- PushButton m_aNewPB;
- PushButton m_aDeletePB;
- PushButton m_aFindPB;
- PushButton m_aCustomizePB;
+ PushButton *m_pNewPB;
+ PushButton *m_pDeletePB;
+ PushButton *m_pFindPB;
+ PushButton *m_pCustomizePB;
- FixedInfo m_aViewEntriesFI;
- PushButton m_aStartPB;
- PushButton m_aPrevPB;
- NumericField m_aSetNoNF;
- PushButton m_aNextPB;
- PushButton m_aEndPB;
+ PushButton *m_pStartPB;
+ PushButton *m_pPrevPB;
+ NumericField *m_pSetNoNF;
+ PushButton *m_pNextPB;
+ PushButton *m_pEndPB;
- FixedLine m_aSeparatorFL;
- OKButton m_aOK;
- CancelButton m_aCancel;
- HelpButton m_aHelp;
+ OKButton *m_pOK;
OUString m_sAddressListFilterName;
OUString m_sURL;
diff --git a/sw/source/ui/dbui/createaddresslistdialog.src b/sw/source/ui/dbui/createaddresslistdialog.src
deleted file mode 100644
index 2febd88b9628..000000000000
--- a/sw/source/ui/dbui/createaddresslistdialog.src
+++ /dev/null
@@ -1,165 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <createaddresslistdialog.hrc>
-#include <dbui.hrc>
-#include <helpid.h>
-
-ModalDialog DLG_MM_CREATEADDRESSLIST
-{
- OutputSize = TRUE ;
- SVLook = TRUE ;
- HelpID = HID_MM_CREATEADDRESSLIST;
- Size = MAP_APPFONT ( 318 , 231 ) ;
- Moveable = TRUE ;
-
- Text [ en-US ] = "New Address List";
-
- FixedText FI_ADDRESSINFORMATION
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 150 , 8 ) ;
- Text [ en-US ] = "Address Information";
- };
- Control CT_ADDRESS
- {
- Pos = MAP_APPFONT ( 6 , 14 ) ;
- Size = MAP_APPFONT ( 250 , 160 ) ;
- Border = TRUE;
- DialogControl = TRUE;
- OutputSize = TRUE ;
-
- ScrollBar SCR_1
- {
- Pos = MAP_APPFONT ( 240 , 0 ) ;
- Size = MAP_APPFONT ( 10 , 160 ) ;
- };
- Window WIN_DATA
- {
- Pos = MAP_APPFONT ( 0 , 0 ) ;
- Size = MAP_APPFONT ( 240 , 160 ) ;
- DialogControl = TRUE;
- };
- };
- PushButton PB_NEW
- {
- HelpID = "sw:PushButton:DLG_MM_CREATEADDRESSLIST:PB_NEW";
- Pos = MAP_APPFONT ( 262 , 14 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- Text [ en-US ] = "~New";
- };
- PushButton PB_DELETE
- {
- HelpID = "sw:PushButton:DLG_MM_CREATEADDRESSLIST:PB_DELETE";
- Pos = MAP_APPFONT ( 262 , 32 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- Text [ en-US ] = "~Delete";
- };
- PushButton PB_FIND
- {
- HelpID = "sw:PushButton:DLG_MM_CREATEADDRESSLIST:PB_FIND";
- Pos = MAP_APPFONT ( 262 , 50 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- Text [ en-US ] = "~Find...";
- };
- PushButton PB_CUSTOMIZE
- {
- HelpID = "sw:PushButton:DLG_MM_CREATEADDRESSLIST:PB_CUSTOMIZE";
- Pos = MAP_APPFONT ( 262 , 68 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- Text [ en-US ] = "C~ustomize...";
- };
- FixedText FI_VIEWENTRIES
- {
- Pos = MAP_APPFONT ( 6 , 183 ) ;
- Size = MAP_APPFONT ( 92 , 8 ) ;
- Text [ en-US ] = "Sho~w entry number";
- };
- PushButton PB_START
- {
- HelpID = "sw:PushButton:DLG_MM_CREATEADDRESSLIST:PB_START";
- Pos = MAP_APPFONT ( 100 , 180 ) ;
- Size = MAP_APPFONT ( 20 , 14 ) ;
- Text = "|<";
- };
- PushButton PB_PREV
- {
- HelpID = "sw:PushButton:DLG_MM_CREATEADDRESSLIST:PB_PREV";
- Pos = MAP_APPFONT ( 123 , 180 ) ;
- Size = MAP_APPFONT ( 20 , 14 ) ;
- Text = "<";
- };
- NumericField NF_SETNO
- {
- HelpID = "sw:NumericField:DLG_MM_CREATEADDRESSLIST:NF_SETNO";
- Pos = MAP_APPFONT ( 146 , 180 ) ;
- Size = MAP_APPFONT ( 20 , 14 ) ;
- Border = TRUE;
- Left = TRUE ;
- First = 1 ;
- Minimum = 1 ;
- Value = 1;
- Repeat = TRUE ;
- Spin = FALSE ;
- TabStop = TRUE ;
- };
- PushButton PB_NEXT
- {
- HelpID = "sw:PushButton:DLG_MM_CREATEADDRESSLIST:PB_NEXT";
- Pos = MAP_APPFONT ( 169 , 180 ) ;
- Size = MAP_APPFONT ( 20 , 14 ) ;
- Text = ">";
- };
- PushButton PB_END
- {
- HelpID = "sw:PushButton:DLG_MM_CREATEADDRESSLIST:PB_END";
- Pos = MAP_APPFONT ( 192 , 180 ) ;
- Size = MAP_APPFONT ( 20 , 14 ) ;
- Text = ">|";
- };
- FixedLine FL_SEPARATOR
- {
- Pos = MAP_APPFONT ( 0 , 200 ) ;
- Size = MAP_APPFONT ( 318 , 8 ) ;
- };
-
- OKButton PB_OK
- {
- Pos = MAP_APPFONT ( 153 , 211 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- DefButton = TRUE;
- };
- CancelButton PB_CANCEL
- {
- Pos = MAP_APPFONT ( 206 , 211 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- };
- HelpButton PB_HELP
- {
- Pos = MAP_APPFONT ( 262 , 211 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- };
-
- String ST_FILTERNAME
- {
- Text [ en-US ] = "%PRODUCTNAME Address List (.csv)";
- };
-};
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/ui/dbui/dbui.src b/sw/source/ui/dbui/dbui.src
index d673c88706aa..0124bc7f96a1 100644
--- a/sw/source/ui/dbui/dbui.src
+++ b/sw/source/ui/dbui/dbui.src
@@ -120,4 +120,9 @@ String ST_CONFIGUREMAIL
Text[ en-US ] = "In order to be able to send mail merge documents by e-mail, %PRODUCTNAME requires information about the e-mail account to be used.\n\nDo you want to enter e-mail account information now?";
};
+String ST_FILTERNAME
+{
+ Text [ en-US ] = "%PRODUCTNAME Address List (.csv)";
+};
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/uiconfig/swriter/ui/createaddresslist.ui b/sw/uiconfig/swriter/ui/createaddresslist.ui
new file mode 100644
index 000000000000..7d31c798c7ab
--- /dev/null
+++ b/sw/uiconfig/swriter/ui/createaddresslist.ui
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.1 -->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <!-- interface-requires LibreOffice 1.0 -->
+ <object class="GtkDialog" id="CreateAddressList">
+ <property name="can_focus">False</property>
+ <property name="border_width">6</property>
+ <property name="title" translatable="yes">New Address List</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="OK">
+ <property name="label">gtk-ok</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</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="CANCEL">
+ <property name="label">gtk-cancel</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</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="HELP">
+ <property name="label">gtk-help</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <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="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="ADDRESS_INFORMATION">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Address Information</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">CONTAINER</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="swuilo-SwAddressControlImpl" id="CONTAINER">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="box2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="VIEW_ENTRIES">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Sho_w entry number</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">grid2</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="hexpand">True</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkButton" id="START">
+ <property name="label" translatable="yes">|&lt;</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </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="GtkButton" id="PREV">
+ <property name="label" translatable="yes">&lt;</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </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>
+ <child>
+ <object class="GtkButton" id="END">
+ <property name="label" translatable="yes">&gt;|</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="NEXT">
+ <property name="label" translatable="yes">&gt;</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="SETNO-nospin">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="numeric">True</property>
+ </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>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </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="GtkButtonBox" id="buttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="NEW">
+ <property name="label" translatable="yes">_New</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</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="DELETE">
+ <property name="label" translatable="yes">_Delete</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</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="FIND">
+ <property name="label" translatable="yes">_Find...</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</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="CUSTOMIZE">
+ <property name="label" translatable="yes">C_ustomize...</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</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>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">OK</action-widget>
+ <action-widget response="0">CANCEL</action-widget>
+ <action-widget response="0">HELP</action-widget>
+ </action-widgets>
+ </object>
+</interface>