summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dbaccess/UIConfig_dbaccess.mk1
-rw-r--r--dbaccess/inc/dbaccess_helpid.hrc4
-rw-r--r--dbaccess/source/ui/control/RelationControl.cxx170
-rw-r--r--dbaccess/source/ui/dlg/RelationDlg.cxx2
-rw-r--r--dbaccess/source/ui/inc/RelationControl.hxx17
-rw-r--r--dbaccess/source/ui/inc/dbu_resource.hrc2
-rw-r--r--dbaccess/source/ui/querydesign/querydlg.cxx119
-rw-r--r--dbaccess/source/ui/querydesign/querydlg.hxx10
-rw-r--r--dbaccess/source/ui/querydesign/querydlg.src132
-rw-r--r--dbaccess/uiconfig/ui/joindialog.ui366
-rw-r--r--extras/source/glade/libreoffice-catalog.xml.in4
11 files changed, 520 insertions, 307 deletions
diff --git a/dbaccess/UIConfig_dbaccess.mk b/dbaccess/UIConfig_dbaccess.mk
index 9c46d80e2d06..e55e23110274 100644
--- a/dbaccess/UIConfig_dbaccess.mk
+++ b/dbaccess/UIConfig_dbaccess.mk
@@ -21,6 +21,7 @@ $(eval $(call gb_UIConfig_add_uifiles,dbaccess, \
dbaccess/uiconfig/ui/generalpagedialog \
dbaccess/uiconfig/ui/generalpagewizard \
dbaccess/uiconfig/ui/generatedvaluespage \
+ dbaccess/uiconfig/ui/joindialog \
dbaccess/uiconfig/ui/queryfilterdialog \
dbaccess/uiconfig/ui/querypropertiesdialog \
dbaccess/uiconfig/ui/rowheightdialog \
diff --git a/dbaccess/inc/dbaccess_helpid.hrc b/dbaccess/inc/dbaccess_helpid.hrc
index 31f9f29c8825..70058f41e778 100644
--- a/dbaccess/inc/dbaccess_helpid.hrc
+++ b/dbaccess/inc/dbaccess_helpid.hrc
@@ -89,8 +89,6 @@
#define HID_CTL_QRYDGNTAB "DBACCESS_HID_CTL_QRYDGNTAB"
-#define HID_DLG_QRY_JOIN "DBACCESS_HID_DLG_QRY_JOIN"
-#define HID_DLG_QRY_JOINTYPE "DBACCESS_HID_DLG_QRY_JOINTYPE"
#define HID_DLG_QRY_HELPTEXT "DBACCESS_HID_DLG_QRY_HELPTEXT"
#define HID_CTL_QRYDGNCRIT "DBACCESS_HID_CTL_QRYDGNCRIT"
@@ -158,7 +156,6 @@
#define HID_TLB_RELATIONDESIGN "DBACCESS_HID_TLB_RELATIONDESIGN"
#define HID_RELATIONDIALOG_LEFTFIELDCELL "DBACCESS_HID_RELATIONDIALOG_LEFTFIELDCELL"
#define HID_RELATIONDIALOG_RIGHTFIELDCELL "DBACCESS_HID_RELATIONDIALOG_RIGHTFIELDCELL"
-#define HID_RELDLG_KEYFIELDS "DBACCESS_HID_RELDLG_KEYFIELDS"
#define HID_BROWSER_RELATION_DESIGN "DBACCESS_HID_BROWSER_RELATION_DESIGN"
#define HID_TABLE_DESIGN_NO_CONNECTION "DBACCESS_HID_TABLE_DESIGN_NO_CONNECTION"
#define HID_DSADMIN_CREATEDATABASE "DBACCESS_HID_DSADMIN_CREATEDATABASE"
@@ -370,7 +367,6 @@
#define HID_DLG_DATABASE_WIZARD "DBACCESS_HID_DLG_DATABASE_WIZARD"
#define HID_EXTENSION_NOT_PRESENT_DLG "DBACCESS_HID_EXTENSION_NOT_PRESENT_DLG"
-#define HID_DLG_QRY_JOIN_CONTROL "DBACCESS_HID_DLG_QRY_JOIN_CONTROL"
#define HID_MACRO_MIGRATION_BACKUP_LOCATION "DBACCESS_HID_MACRO_MIGRATION_BACKUP_LOCATION"
#endif // _DBA_DBACCESS_HELPID_HRC_
diff --git a/dbaccess/source/ui/control/RelationControl.cxx b/dbaccess/source/ui/control/RelationControl.cxx
index 510d381b7d5a..15ccdfbc3833 100644
--- a/dbaccess/source/ui/control/RelationControl.cxx
+++ b/dbaccess/source/ui/control/RelationControl.cxx
@@ -23,6 +23,7 @@
#include <svtools/editbrowsebox.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <tools/diagnose_ex.h>
+#include <vcl/builder.hxx>
#include "TableConnectionData.hxx"
#include "TableConnection.hxx"
#include "TableWindow.hxx"
@@ -78,7 +79,11 @@ namespace dbaui
*/
sal_uInt16 getColumnIdent( sal_uInt16 _nColId ) const;
public:
- ORelationControl( OTableListBoxControl* pParent );
+ ORelationControl(Window *pParent);
+ void SetController(OTableListBoxControl* pController)
+ {
+ m_pBoxControl = pController;
+ }
virtual ~ORelationControl();
/** searches for a connection between these two tables
@@ -99,7 +104,7 @@ namespace dbaui
protected:
virtual void Resize();
-
+ virtual Size GetOptimalSize() const;
virtual bool PreNotify(NotifyEvent& rNEvt );
virtual sal_Bool IsTabAllowed(sal_Bool bForward) const;
@@ -123,15 +128,22 @@ namespace dbaui
};
// class ORelationControl
- ORelationControl::ORelationControl( OTableListBoxControl* pParent )
- : EditBrowseBox(pParent, EBBF_SMART_TAB_TRAVEL | EBBF_NOROWPICTURE, WB_TABSTOP | WB_BORDER | BROWSER_AUTOSIZE_LASTCOL)
- , m_pBoxControl(pParent)
+ ORelationControl::ORelationControl(Window *pParent)
+ : EditBrowseBox(pParent,
+ EBBF_SMART_TAB_TRAVEL | EBBF_NOROWPICTURE,
+ WB_TABSTOP | WB_BORDER | BROWSER_AUTOSIZE_LASTCOL)
+ , m_pBoxControl(NULL)
, m_nDataPos(0)
, m_xSourceDef(NULL)
, m_xDestDef(NULL)
{
}
+ extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeORelationControl(Window *pParent, VclBuilder::stringmap &)
+ {
+ return new ORelationControl(pParent);
+ }
+
ORelationControl::~ORelationControl()
{
}
@@ -144,6 +156,7 @@ namespace dbaui
m_pConnData->normalizeLines();
}
+
void ORelationControl::lateInit()
{
if ( !m_pConnData.get() )
@@ -174,10 +187,11 @@ namespace dbaui
RowInserted(0, m_pConnData->GetConnLineDataList()->size() + 1, sal_True); // add one extra row
}
+
void ORelationControl::Resize()
{
EditBrowseBox::Resize();
- long nOutputWidth = GetOutputSizePixel().Width();
+ long nOutputWidth = GetOutputSizePixel().Width() - 1;
SetColumnWidth(1, (nOutputWidth / 2));
SetColumnWidth(2, (nOutputWidth / 2));
}
@@ -418,51 +432,45 @@ namespace dbaui
ActivateCell();
}
}
+
void ORelationControl::CellModified()
{
EditBrowseBox::CellModified();
SaveModified();
-#if OSL_DEBUG_LEVEL > 0
- OTableListBoxControl *parent = dynamic_cast<OTableListBoxControl*>(GetParent());
-#else
- OTableListBoxControl *parent = static_cast<OTableListBoxControl*>(GetParent());
-#endif
- assert(parent);
- parent->NotifyCellChange();
+ assert(m_pBoxControl);
+ m_pBoxControl->NotifyCellChange();
}
+
+ Size ORelationControl::GetOptimalSize() const
+ {
+ return LogicToPixel(Size(140, 80), MAP_APPFONT);
+ }
+
// class OTableListBoxControl
+ OTableListBoxControl::OTableListBoxControl(VclBuilderContainer* _pParent,
+ const OJoinTableView::OTableWindowMap* _pTableMap,
+ IRelationControlInterface* _pParentDialog)
+ : m_pTableMap(_pTableMap)
+ , m_pParentDialog(_pParentDialog)
+ {
+ _pParent->get(m_pLeftTable, "table1");
+ _pParent->get(m_pRightTable, "table2");
-OTableListBoxControl::OTableListBoxControl( Window* _pParent
- ,const ResId& _rResId
- ,const OJoinTableView::OTableWindowMap* _pTableMap
- ,IRelationControlInterface* _pParentDialog)
- : Window(_pParent,_rResId)
- , m_aFL_InvolvedTables( this, ResId(FL_INVOLVED_TABLES,*_rResId.GetResMgr()))
- , m_lmbLeftTable( this, ResId(LB_LEFT_TABLE,*_rResId.GetResMgr()))
- , m_lmbRightTable( this, ResId(LB_RIGHT_TABLE,*_rResId.GetResMgr()))
- , m_aFL_InvolvedFields( this, ResId(FL_INVOLVED_FIELDS,*_rResId.GetResMgr()))
- , m_pTableMap(_pTableMap)
- , m_pParentDialog(_pParentDialog)
- {
- m_pRC_Tables = new ORelationControl( this );
- m_pRC_Tables->SetHelpId(HID_RELDLG_KEYFIELDS);
- m_pRC_Tables->Init( );
- m_pRC_Tables->SetZOrder(&m_lmbRightTable, WINDOW_ZORDER_BEHIND);
+ _pParent->get(m_pRC_Tables, "relations");
+ m_pRC_Tables->SetController(this);
+ m_pRC_Tables->Init();
lateUIInit();
Link aLink(LINK(this, OTableListBoxControl, OnTableChanged));
- m_lmbLeftTable.SetSelectHdl(aLink);
- m_lmbRightTable.SetSelectHdl(aLink);
-
- FreeResource();
+ m_pLeftTable->SetSelectHdl(aLink);
+ m_pRightTable->SetSelectHdl(aLink);
}
+
OTableListBoxControl::~OTableListBoxControl()
{
- ORelationControl* pTemp = m_pRC_Tables;
- m_pRC_Tables = NULL;
- delete pTemp;
}
+
void OTableListBoxControl::fillListBoxes()
{
OSL_ENSURE( !m_pTableMap->empty(), "OTableListBoxControl::fillListBoxes: no table window!");
@@ -474,8 +482,8 @@ OTableListBoxControl::OTableListBoxControl( Window* _pParent
OJoinTableView::OTableWindowMap::const_iterator aEnd = m_pTableMap->end();
for(;aIter != aEnd;++aIter)
{
- m_lmbLeftTable.InsertEntry(aIter->first);
- m_lmbRightTable.InsertEntry(aIter->first);
+ m_pLeftTable->InsertEntry(aIter->first);
+ m_pRightTable->InsertEntry(aIter->first);
if (!pInitialLeft)
{
@@ -502,17 +510,18 @@ OTableListBoxControl::OTableListBoxControl( Window* _pParent
if ( m_pTableMap->size() > 2 )
{
- m_lmbLeftTable.RemoveEntry(m_strCurrentRight);
- m_lmbRightTable.RemoveEntry(m_strCurrentLeft);
+ m_pLeftTable->RemoveEntry(m_strCurrentRight);
+ m_pRightTable->RemoveEntry(m_strCurrentLeft);
}
// Select the first one on the left side and on the right side,
// select the second one
- m_lmbLeftTable.SelectEntry(m_strCurrentLeft);
- m_lmbRightTable.SelectEntry(m_strCurrentRight);
+ m_pLeftTable->SelectEntry(m_strCurrentLeft);
+ m_pRightTable->SelectEntry(m_strCurrentRight);
- m_lmbLeftTable.GrabFocus();
+ m_pLeftTable->GrabFocus();
}
+
IMPL_LINK( OTableListBoxControl, OnTableChanged, ListBox*, pListBox )
{
OUString strSelected(pListBox->GetSelectEntry());
@@ -523,10 +532,10 @@ OTableListBoxControl::OTableListBoxControl( Window* _pParent
if ( m_pTableMap->size() == 2 )
{
ListBox* pOther;
- if ( pListBox == &m_lmbLeftTable )
- pOther = &m_lmbRightTable;
+ if (pListBox == m_pLeftTable)
+ pOther = m_pRightTable;
else
- pOther = &m_lmbLeftTable;
+ pOther = m_pLeftTable;
pOther->SelectEntryPos(1 - pOther->GetSelectEntryPos());
OJoinTableView::OTableWindowMap::const_iterator aIter = m_pTableMap->begin();
@@ -534,7 +543,7 @@ OTableListBoxControl::OTableListBoxControl( Window* _pParent
++aIter;
OTableWindow* pSecond = aIter->second;
- if ( m_lmbLeftTable.GetSelectEntry() == pFirst->GetName() )
+ if ( m_pLeftTable->GetSelectEntry() == pFirst->GetName() )
{
pLeft = pFirst;
pRight = pSecond;
@@ -554,33 +563,33 @@ OTableListBoxControl::OTableListBoxControl( Window* _pParent
pLoop = aFind->second;
OSL_ENSURE(pLoop != NULL, "ORelationDialog::OnTableChanged: invalid ListBox entry!");
// We need to find strSelect, because we filled the ListBoxes with the table names with which we compare now
- if (pListBox == &m_lmbLeftTable)
+ if (pListBox == m_pLeftTable)
{
// Insert the previously selected Entry on the left side on the right side
- m_lmbRightTable.InsertEntry(m_strCurrentLeft);
+ m_pRightTable->InsertEntry(m_strCurrentLeft);
// Remove the currently selected Entry
- m_lmbRightTable.RemoveEntry(strSelected);
+ m_pRightTable->RemoveEntry(strSelected);
m_strCurrentLeft = strSelected;
pLeft = pLoop;
- OJoinTableView::OTableWindowMap::const_iterator aIter = m_pTableMap->find(m_lmbRightTable.GetSelectEntry());
+ OJoinTableView::OTableWindowMap::const_iterator aIter = m_pTableMap->find(m_pRightTable->GetSelectEntry());
OSL_ENSURE( aIter != m_pTableMap->end(), "Invalid name");
if ( aIter != m_pTableMap->end() )
pRight = aIter->second;
- m_lmbLeftTable.GrabFocus();
+ m_pLeftTable->GrabFocus();
}
else
{
// Insert the previously selected Entry on the right side on the left side
- m_lmbLeftTable.InsertEntry(m_strCurrentRight);
+ m_pLeftTable->InsertEntry(m_strCurrentRight);
// Remove the currently selected Entry
- m_lmbLeftTable.RemoveEntry(strSelected);
+ m_pLeftTable->RemoveEntry(strSelected);
m_strCurrentRight = strSelected;
pRight = pLoop;
- OJoinTableView::OTableWindowMap::const_iterator aIter = m_pTableMap->find(m_lmbLeftTable.GetSelectEntry());
+ OJoinTableView::OTableWindowMap::const_iterator aIter = m_pTableMap->find(m_pLeftTable->GetSelectEntry());
OSL_ENSURE( aIter != m_pTableMap->end(), "Invalid name");
if ( aIter != m_pTableMap->end() )
pLeft = aIter->second;
@@ -594,6 +603,7 @@ OTableListBoxControl::OTableListBoxControl( Window* _pParent
NotifyCellChange();
return 0;
}
+
void OTableListBoxControl::NotifyCellChange()
{
// Enable/disable the OK button, depending on having a valid situation
@@ -633,62 +643,64 @@ OTableListBoxControl::OTableListBoxControl( Window* _pParent
m_pRC_Tables->ActivateCell();
m_pRC_Tables->m_ops.clear();
}
+
void fillEntryAndDisable(ListBox& _rListBox,const OUString& _sEntry)
{
_rListBox.InsertEntry(_sEntry);
_rListBox.SelectEntryPos(0);
_rListBox.Disable();
}
+
void OTableListBoxControl::fillAndDisable(const TTableConnectionData::value_type& _pConnectionData)
{
- fillEntryAndDisable(m_lmbLeftTable,_pConnectionData->getReferencingTable()->GetWinName());
- fillEntryAndDisable(m_lmbRightTable,_pConnectionData->getReferencedTable()->GetWinName());
+ fillEntryAndDisable(*m_pLeftTable, _pConnectionData->getReferencingTable()->GetWinName());
+ fillEntryAndDisable(*m_pRightTable, _pConnectionData->getReferencedTable()->GetWinName());
}
+
void OTableListBoxControl::Init(const TTableConnectionData::value_type& _pConnData)
{
m_pRC_Tables->Init(_pConnData);
}
- void OTableListBoxControl::lateUIInit(Window* _pTableSeparator)
- {
- const sal_Int32 nDiff = LogicToPixel( Point(0,6), MAP_APPFONT ).Y();
- Point aDlgPoint = LogicToPixel( Point(12,43), MAP_APPFONT );
- if ( _pTableSeparator )
- {
- _pTableSeparator->SetZOrder(&m_lmbRightTable, WINDOW_ZORDER_BEHIND);
- m_pRC_Tables->SetZOrder(_pTableSeparator, WINDOW_ZORDER_BEHIND);
- _pTableSeparator->SetPosPixel(Point(0,m_aFL_InvolvedFields.GetPosPixel().Y()));
- const Size aSize = _pTableSeparator->GetSizePixel();
- aDlgPoint.Y() = _pTableSeparator->GetPosPixel().Y() + aSize.Height();
- m_aFL_InvolvedFields.SetPosPixel(Point(m_aFL_InvolvedFields.GetPosPixel().X(),aDlgPoint.Y()));
- aDlgPoint.Y() += nDiff + m_aFL_InvolvedFields.GetSizePixel().Height();
- }
- // positing BrowseBox control
- const Size aCurrentSize = GetSizePixel();
- Size aDlgSize = LogicToPixel( Size(24,0), MAP_APPFONT );
- aDlgSize.Width() = aCurrentSize.Width() - aDlgSize.Width();
- aDlgSize.Height() = aCurrentSize.Height() - aDlgPoint.Y() - nDiff;
- m_pRC_Tables->SetPosSizePixel( aDlgPoint, aDlgSize );
+ void OTableListBoxControl::lateUIInit()
+ {
m_pRC_Tables->Show();
-
lateInit();
}
+
void OTableListBoxControl::lateInit()
{
m_pRC_Tables->lateInit();
}
+
+ void OTableListBoxControl::Disable()
+ {
+ m_pLeftTable->Disable();
+ m_pRightTable->Disable();
+ m_pRC_Tables->Disable();
+ }
+
+ void OTableListBoxControl::Invalidate()
+ {
+ m_pLeftTable->Invalidate();
+ m_pRightTable->Invalidate();
+ m_pRC_Tables->Invalidate();
+ }
+
sal_Bool OTableListBoxControl::SaveModified()
{
return m_pRC_Tables->SaveModified();
}
+
TTableWindowData::value_type OTableListBoxControl::getReferencingTable() const
{
return m_pRC_Tables->getData()->getReferencingTable();
}
+
void OTableListBoxControl::enableRelation(bool _bEnable)
{
if ( !_bEnable )
- PostUserEvent(LINK(m_pRC_Tables, ORelationControl, AsynchDeactivate));
+ m_pRC_Tables->PostUserEvent(LINK(m_pRC_Tables, ORelationControl, AsynchDeactivate));
m_pRC_Tables->Enable(_bEnable);
}
diff --git a/dbaccess/source/ui/dlg/RelationDlg.cxx b/dbaccess/source/ui/dlg/RelationDlg.cxx
index e92081eb4f13..e3666667403f 100644
--- a/dbaccess/source/ui/dlg/RelationDlg.cxx
+++ b/dbaccess/source/ui/dlg/RelationDlg.cxx
@@ -80,7 +80,7 @@ ORelationDialog::ORelationDialog( OJoinTableView* pParent,
m_pConnData->CopyFrom( *pConnectionData );
Init(m_pConnData);
- m_pTableControl.reset( new OTableListBoxControl(this,ModuleRes(WND_CONTROL),m_pTableMap,this) );
+ m_pTableControl.reset( new OTableListBoxControl(this, m_pTableMap, this) );
aPB_OK.SetClickHdl( LINK(this, ORelationDialog, OKClickHdl) );
diff --git a/dbaccess/source/ui/inc/RelationControl.hxx b/dbaccess/source/ui/inc/RelationControl.hxx
index 3a585e42238d..f37e5779694e 100644
--- a/dbaccess/source/ui/inc/RelationControl.hxx
+++ b/dbaccess/source/ui/inc/RelationControl.hxx
@@ -20,6 +20,7 @@
#define INCLUDED_DBACCESS_SOURCE_UI_INC_RELATIONCONTROL_HXX
#include <vcl/fixed.hxx>
+#include <vcl/builder.hxx>
#include <vcl/lstbox.hxx>
#include "JoinTableView.hxx"
@@ -29,12 +30,10 @@ namespace dbaui
class IRelationControlInterface;
class ORelationControl;
- class OTableListBoxControl : public Window
+ class OTableListBoxControl
{
- FixedLine m_aFL_InvolvedTables;
- ListBox m_lmbLeftTable,
- m_lmbRightTable;
- FixedLine m_aFL_InvolvedFields;
+ ListBox* m_pLeftTable;
+ ListBox* m_pRightTable;
ORelationControl* m_pRC_Tables;
const OJoinTableView::OTableWindowMap* m_pTableMap;
@@ -44,8 +43,7 @@ namespace dbaui
private:
DECL_LINK( OnTableChanged, ListBox* );
public:
- OTableListBoxControl(Window* _pParent,
- const ResId& _rResId,
+ OTableListBoxControl(VclBuilderContainer* _pParent,
const OJoinTableView::OTableWindowMap* _pTableMap,
IRelationControlInterface* _pParentDialog);
virtual ~OTableListBoxControl();
@@ -75,9 +73,12 @@ namespace dbaui
the connection data which is used to init the control
*/
void Init(const TTableConnectionData::value_type& _pConnData);
- void lateUIInit(Window* _pTableSeparator = NULL);
+ void lateUIInit();
void lateInit();
+ void Disable();
+ void Invalidate();
+
sal_Bool SaveModified();
TTableWindowData::value_type getReferencingTable() const;
diff --git a/dbaccess/source/ui/inc/dbu_resource.hrc b/dbaccess/source/ui/inc/dbu_resource.hrc
index 37be9ab23c22..06362b0ef0f9 100644
--- a/dbaccess/source/ui/inc/dbu_resource.hrc
+++ b/dbaccess/source/ui/inc/dbu_resource.hrc
@@ -80,7 +80,7 @@
#define DLG_PARAMETERS RID_DIALOG_START + 5
#define DLG_JOIN_TABADD RID_DIALOG_START + 14
-#define DLG_QRY_JOIN RID_DIALOG_START + 15
+ // FREE
#define WIZ_RTFCOPYTABLE RID_DIALOG_START + 16
#define DLG_REL_PROPERTIES RID_DIALOG_START + 17
// FREE
diff --git a/dbaccess/source/ui/querydesign/querydlg.cxx b/dbaccess/source/ui/querydesign/querydlg.cxx
index 085450e73d90..909fe27469f2 100644
--- a/dbaccess/source/ui/querydesign/querydlg.cxx
+++ b/dbaccess/source/ui/querydesign/querydlg.cxx
@@ -36,62 +36,32 @@ using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::container;
using namespace ::com::sun::star::sdbc;
-namespace dbaui
-{
-class OJoinControl : public Window
-{
-public:
- FixedLine aFL_Join;
- FixedText aFT_Title;
- ListBox aLB_JoinType;
- CheckBox m_aCBNatural;
-
- OJoinControl(Window* _pParent,const ResId& _rResId);
-};
-
-OJoinControl::OJoinControl(Window* _pParent,const ResId& _rResId)
- : Window(_pParent,_rResId)
- ,aFL_Join( this, ResId( FL_JOIN,*_rResId.GetResMgr() ) )
- ,aFT_Title( this, ResId(FT_LISTBOXTITLE,*_rResId.GetResMgr()) )
- ,aLB_JoinType( this, ResId(LB_JOINTYPE,*_rResId.GetResMgr()) )
- ,m_aCBNatural( this, ResId(CB_NATURAL,*_rResId.GetResMgr()) )
-{
- FreeResource();
-}
-
-} // dbaui
-
DlgQryJoin::DlgQryJoin( OQueryTableView * pParent,
const TTableConnectionData::value_type& _pData,
OJoinTableView::OTableWindowMap* _pTableMap,
const Reference< XConnection >& _xConnection,
sal_Bool _bAllowTableSelect)
- :ModalDialog( pParent, ModuleRes(DLG_QRY_JOIN) )
- ,aML_HelpText( this, ModuleRes(ML_HELPTEXT) )
- ,aPB_OK( this, ModuleRes( PB_OK ) )
- ,aPB_CANCEL( this, ModuleRes( PB_CANCEL ) )
- ,aPB_HELP( this, ModuleRes( PB_HELP ) )
- ,m_pJoinControl( NULL )
- ,m_pTableControl( NULL )
- ,m_pTableMap(_pTableMap)
- ,m_pTableView(pParent)
- ,eJoinType(static_cast<OQueryTableConnectionData*>(_pData.get())->GetJoinType())
- ,m_pOrigConnData(_pData)
- ,m_xConnection(_xConnection)
+ : ModalDialog( pParent, "JoinDialog", "dbaccess/ui/joindialog.ui" )
+ , m_pTableControl( NULL )
+ , m_pTableMap(_pTableMap)
+ , m_pTableView(pParent)
+ , eJoinType(static_cast<OQueryTableConnectionData*>(_pData.get())->GetJoinType())
+ , m_pOrigConnData(_pData)
+ , m_xConnection(_xConnection)
{
+ get(m_pML_HelpText, "helptext");
+ get(m_pLB_JoinType, "type");
+ get(m_pCBNatural, "natural");
+ get(m_pPB_OK, "ok");
- aML_HelpText.SetControlBackground( GetSettings().GetStyleSettings().GetFaceColor() );
+ m_pML_HelpText->SetControlBackground( GetSettings().GetStyleSettings().GetFaceColor() );
// Connection kopieren
m_pConnData.reset(_pData->NewInstance());
m_pConnData->CopyFrom(*_pData);
- m_pTableControl = new OTableListBoxControl(this,ModuleRes(WND_CONTROL),m_pTableMap,this);
+ m_pTableControl = new OTableListBoxControl(this, m_pTableMap, this);
- m_pJoinControl = new OJoinControl(m_pTableControl,ModuleRes(WND_JOIN_CONTROL));
-
- m_pJoinControl->Show();
- m_pJoinControl->m_aCBNatural.Check(static_cast<OQueryTableConnectionData*>(m_pConnData.get())->isNatural());
- m_pTableControl->Show();
+ m_pCBNatural->Check(static_cast<OQueryTableConnectionData*>(m_pConnData.get())->isNatural());
if( _bAllowTableSelect )
{
@@ -104,7 +74,7 @@ DlgQryJoin::DlgQryJoin( OQueryTableView * pParent,
m_pTableControl->Init( m_pConnData );
}
- m_pTableControl->lateUIInit(m_pJoinControl);
+ m_pTableControl->lateUIInit();
sal_Bool bSupportFullJoin = sal_False;
Reference<XDatabaseMetaData> xMeta;
@@ -129,49 +99,46 @@ DlgQryJoin::DlgQryJoin( OQueryTableView * pParent,
setJoinType(eJoinType);
- aPB_OK.SetClickHdl( LINK(this, DlgQryJoin, OKClickHdl) );
+ m_pPB_OK->SetClickHdl( LINK(this, DlgQryJoin, OKClickHdl) );
- m_pJoinControl->aLB_JoinType.SetSelectHdl(LINK(this,DlgQryJoin,LBChangeHdl));
- m_pJoinControl->m_aCBNatural.SetToggleHdl(LINK(this,DlgQryJoin,NaturalToggleHdl));
+ m_pLB_JoinType->SetSelectHdl(LINK(this,DlgQryJoin,LBChangeHdl));
+ m_pCBNatural->SetToggleHdl(LINK(this,DlgQryJoin,NaturalToggleHdl));
if ( static_cast<OQueryTableView*>(pParent)->getDesignView()->getController().isReadOnly() )
{
- m_pJoinControl->aLB_JoinType.Disable();
- m_pJoinControl->m_aCBNatural.Disable();
+ m_pLB_JoinType->Disable();
+ m_pCBNatural->Disable();
m_pTableControl->Disable();
}
else
{
- const sal_uInt16 nCount = m_pJoinControl->aLB_JoinType.GetEntryCount();
+ const sal_uInt16 nCount = m_pLB_JoinType->GetEntryCount();
for (sal_uInt16 i = 0; i < nCount; ++i)
{
- const sal_IntPtr nJoinTyp = reinterpret_cast<sal_IntPtr>(m_pJoinControl->aLB_JoinType.GetEntryData(i));
+ const sal_IntPtr nJoinTyp = reinterpret_cast<sal_IntPtr>(m_pLB_JoinType->GetEntryData(i));
if ( !bSupportFullJoin && nJoinTyp == ID_FULL_JOIN )
- m_pJoinControl->aLB_JoinType.RemoveEntry(i);
+ m_pLB_JoinType->RemoveEntry(i);
else if ( !bSupportOuterJoin && (nJoinTyp == ID_LEFT_JOIN || nJoinTyp == ID_RIGHT_JOIN) )
- m_pJoinControl->aLB_JoinType.RemoveEntry(i);
+ m_pLB_JoinType->RemoveEntry(i);
}
m_pTableControl->NotifyCellChange();
m_pTableControl->enableRelation(!static_cast<OQueryTableConnectionData*>(m_pConnData.get())->isNatural() && eJoinType != CROSS_JOIN );
}
-
- FreeResource();
}
DlgQryJoin::~DlgQryJoin()
{
- delete m_pJoinControl;
delete m_pTableControl;
}
IMPL_LINK( DlgQryJoin, LBChangeHdl, ListBox*, /*pListBox*/ )
{
- if (m_pJoinControl->aLB_JoinType.GetSelectEntryPos() == m_pJoinControl->aLB_JoinType.GetSavedValue() )
+ if (m_pLB_JoinType->GetSelectEntryPos() == m_pLB_JoinType->GetSavedValue() )
return 1;
- m_pJoinControl->aLB_JoinType.SaveValue();
- aML_HelpText.SetText(OUString());
+ m_pLB_JoinType->SaveValue();
+ m_pML_HelpText->SetText(OUString());
m_pTableControl->enableRelation(true);
@@ -179,8 +146,8 @@ IMPL_LINK( DlgQryJoin, LBChangeHdl, ListBox*, /*pListBox*/ )
OUString sSecondWinName = m_pConnData->getReferencedTable()->GetWinName();
const EJoinType eOldJoinType = eJoinType;
sal_uInt16 nResId = 0;
- const sal_uInt16 nPos = m_pJoinControl->aLB_JoinType.GetSelectEntryPos();
- const sal_IntPtr nJoinType = reinterpret_cast<sal_IntPtr>(m_pJoinControl->aLB_JoinType.GetEntryData(nPos));
+ const sal_uInt16 nPos = m_pLB_JoinType->GetSelectEntryPos();
+ const sal_IntPtr nJoinType = reinterpret_cast<sal_IntPtr>(m_pLB_JoinType->GetEntryData(nPos));
sal_Bool bAddHint = sal_True;
switch ( nJoinType )
{
@@ -214,16 +181,16 @@ IMPL_LINK( DlgQryJoin, LBChangeHdl, ListBox*, /*pListBox*/ )
m_pConnData->ResetConnLines();
m_pTableControl->lateInit();
- m_pJoinControl->m_aCBNatural.Check(false);
+ m_pCBNatural->Check(false);
m_pTableControl->enableRelation(false);
OUString sEmpty;
m_pConnData->AppendConnLine(sEmpty,sEmpty);
- aPB_OK.Enable(true);
+ m_pPB_OK->Enable(true);
}
break;
}
- m_pJoinControl->m_aCBNatural.Enable(eJoinType != CROSS_JOIN);
+ m_pCBNatural->Enable(eJoinType != CROSS_JOIN);
if ( eJoinType != eOldJoinType && eOldJoinType == CROSS_JOIN )
{
@@ -232,7 +199,7 @@ IMPL_LINK( DlgQryJoin, LBChangeHdl, ListBox*, /*pListBox*/ )
if ( eJoinType != CROSS_JOIN )
{
m_pTableControl->NotifyCellChange();
- NaturalToggleHdl(&m_pJoinControl->m_aCBNatural);
+ NaturalToggleHdl(m_pCBNatural);
}
m_pTableControl->Invalidate();
@@ -249,7 +216,7 @@ IMPL_LINK( DlgQryJoin, LBChangeHdl, ListBox*, /*pListBox*/ )
sHelpText += ModuleRes( STR_JOIN_TYPE_HINT );
}
- aML_HelpText.SetText( sHelpText );
+ m_pML_HelpText->SetText( sHelpText );
return 1;
}
@@ -265,7 +232,7 @@ IMPL_LINK( DlgQryJoin, OKClickHdl, Button*, /*pButton*/ )
IMPL_LINK( DlgQryJoin, NaturalToggleHdl, CheckBox*, /*pButton*/ )
{
- sal_Bool bChecked = m_pJoinControl->m_aCBNatural.IsChecked();
+ sal_Bool bChecked = m_pCBNatural->IsChecked();
static_cast<OQueryTableConnectionData*>(m_pConnData.get())->setNatural(bChecked);
m_pTableControl->enableRelation(!bChecked);
if ( bChecked )
@@ -301,20 +268,20 @@ TTableConnectionData::value_type DlgQryJoin::getConnectionData() const
void DlgQryJoin::setValid(sal_Bool _bValid)
{
- aPB_OK.Enable(_bValid || eJoinType == CROSS_JOIN );
+ m_pPB_OK->Enable(_bValid || eJoinType == CROSS_JOIN );
}
void DlgQryJoin::notifyConnectionChange( )
{
setJoinType( static_cast<OQueryTableConnectionData*>(m_pConnData.get())->GetJoinType() );
- m_pJoinControl->m_aCBNatural.Check(static_cast<OQueryTableConnectionData*>(m_pConnData.get())->isNatural());
- NaturalToggleHdl(&m_pJoinControl->m_aCBNatural);
+ m_pCBNatural->Check(static_cast<OQueryTableConnectionData*>(m_pConnData.get())->isNatural());
+ NaturalToggleHdl(m_pCBNatural);
}
void DlgQryJoin::setJoinType(EJoinType _eNewJoinType)
{
eJoinType = _eNewJoinType;
- m_pJoinControl->m_aCBNatural.Enable(eJoinType != CROSS_JOIN);
+ m_pCBNatural->Enable(eJoinType != CROSS_JOIN);
sal_IntPtr nJoinType = 0;
switch ( eJoinType )
@@ -337,17 +304,17 @@ void DlgQryJoin::setJoinType(EJoinType _eNewJoinType)
break;
}
- const sal_uInt16 nCount = m_pJoinControl->aLB_JoinType.GetEntryCount();
+ const sal_uInt16 nCount = m_pLB_JoinType->GetEntryCount();
for (sal_uInt16 i = 0; i < nCount; ++i)
{
- if ( nJoinType == reinterpret_cast<sal_IntPtr>(m_pJoinControl->aLB_JoinType.GetEntryData(i)) )
+ if ( nJoinType == reinterpret_cast<sal_IntPtr>(m_pLB_JoinType->GetEntryData(i)) )
{
- m_pJoinControl->aLB_JoinType.SelectEntryPos(i);
+ m_pLB_JoinType->SelectEntryPos(i);
break;
}
}
- LBChangeHdl(&m_pJoinControl->aLB_JoinType);
+ LBChangeHdl(m_pLB_JoinType);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/querydesign/querydlg.hxx b/dbaccess/source/ui/querydesign/querydlg.hxx
index eadd1b3b7ecf..8891c8111edc 100644
--- a/dbaccess/source/ui/querydesign/querydlg.hxx
+++ b/dbaccess/source/ui/querydesign/querydlg.hxx
@@ -35,17 +35,15 @@ namespace dbaui
{
class OTableListBoxControl;
class OQueryTableView;
- class OJoinControl;
class DlgQryJoin : public ModalDialog
,public IRelationControlInterface
{
protected:
- FixedText aML_HelpText;
- OKButton aPB_OK;
- CancelButton aPB_CANCEL;
- HelpButton aPB_HELP;
+ FixedText* m_pML_HelpText;
+ OKButton* m_pPB_OK;
+ ListBox* m_pLB_JoinType;
+ CheckBox* m_pCBNatural;
- OJoinControl* m_pJoinControl;
OTableListBoxControl* m_pTableControl;
OJoinTableView::OTableWindowMap* m_pTableMap;
OQueryTableView* m_pTableView;
diff --git a/dbaccess/source/ui/querydesign/querydlg.src b/dbaccess/source/ui/querydesign/querydlg.src
index 5540cb922eec..43d11892aa8e 100644
--- a/dbaccess/source/ui/querydesign/querydlg.src
+++ b/dbaccess/source/ui/querydesign/querydlg.src
@@ -20,138 +20,6 @@
#include "querydlg.hrc"
#include "dbaccess_helpid.hrc"
-ModalDialog DLG_QRY_JOIN
-{
- OutputSize = TRUE ;
- SVLook = TRUE ;
- HelpId = HID_DLG_QRY_JOIN ;
- Size = MAP_APPFONT ( 265, 219 ) ;
-
- Moveable = TRUE ;
- Closeable = TRUE ;
-
- Window WND_JOIN_CONTROL
- {
- Pos = MAP_APPFONT( 0, 0 );
- Size = MAP_APPFONT( 203, 44 );
- DialogControl = TRUE;
- HelpId = HID_DLG_QRY_JOIN_CONTROL ;
- FixedLine FL_JOIN
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 191 , 8 ) ;
- Text [ en-US ] = "Options";
- };
-
- FixedText FT_LISTBOXTITLE
- {
- Pos = MAP_APPFONT ( 12 , 16 ) ;
- Size = MAP_APPFONT ( 89 , 8 ) ;
-
- Text [ en-US ] = "~Type";
- };
-
- ListBox LB_JOINTYPE
- {
- Pos = MAP_APPFONT ( 101 , 15 ) ;
- Size = MAP_APPFONT ( 90 , 60 ) ;
- HelpId = HID_DLG_QRY_JOINTYPE ;
-
- DropDown = TRUE;
- DDExtraWidth = TRUE;
- StringList [ en-US ] =
- {
- < "Inner join" ; ID_INNER_JOIN; > ;
- < "Left join" ; ID_LEFT_JOIN; > ;
- < "Right join" ; ID_RIGHT_JOIN; > ;
- < "Full (outer) join" ; ID_FULL_JOIN; > ;
- < "Cross join" ; ID_CROSS_JOIN; > ;
- };
- };
- CheckBox CB_NATURAL
- {
- HelpID = "dbaccess:CheckBox:DLG_QRY_JOIN:CB_NATURAL";
- Pos = MAP_APPFONT ( 101 , 31 ) ;
- Size = MAP_APPFONT ( 89 , 8 ) ;
-
- Text [ en-US ] = "Natural";
- };
- };
-
- Window WND_CONTROL
- {
- Pos = MAP_APPFONT( 0, 0 );
- Size = MAP_APPFONT( 203, 153 );
- DialogControl = TRUE;
- HelpId = HID_DLG_QRY_WINDOW_CONTROL ;
-
- FixedLine FL_INVOLVED_TABLES
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 191 , 8 ) ;
- Text [ en-US ] = "Tables involved";
- };
-
- ListBox LB_LEFT_TABLE
- {
- Border = TRUE;
- Pos = MAP_APPFONT( 12, 14 );
- Size = MAP_APPFONT( 87, 60 );
- HelpId = HID_DLG_QRY_LEFT_TABLE ;
- DropDown = TRUE;
- TabStop = TRUE;
- };
-
- ListBox LB_RIGHT_TABLE
- {
- Border = TRUE;
- Pos = MAP_APPFONT( 104, 14 );
- Size = MAP_APPFONT( 87, 60 );
- HelpId = HID_DLG_QRY_RIGHT_TABLE ;
- DropDown = TRUE;
- TabStop = TRUE;
- };
-
- FixedLine FL_INVOLVED_FIELDS
- {
- Pos = MAP_APPFONT ( 6 , 29 ) ;
- Size = MAP_APPFONT ( 191 , 8 ) ;
- Text [ en-US ] = "Fields involved";
- };
- };
-
- FixedText ML_HELPTEXT
- {
- Pos = MAP_APPFONT ( 12 , 159 ) ;
- Size = MAP_APPFONT ( 179 , 49 ) ;
- UniqueId = HID_DLG_QRY_HELPTEXT ;
- SVLook = TRUE;
- WordBreak = TRUE;
- };
-
- OKButton PB_OK
- {
- Pos = MAP_APPFONT ( 206 , 6 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- DefButton = TRUE ;
- };
- CancelButton PB_CANCEL
- {
- Pos = MAP_APPFONT ( 206 , 23 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
- HelpButton PB_HELP
- {
- Pos = MAP_APPFONT ( 206 , 43 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
- TabStop = TRUE ;
- };
-
- Text [ en-US ] = "Join Properties";
-};
-
String STR_JOIN_TYPE_HINT
{
Text [ en-US ] = "Please note that some databases may not support this join type.";
diff --git a/dbaccess/uiconfig/ui/joindialog.ui b/dbaccess/uiconfig/ui/joindialog.ui
new file mode 100644
index 000000000000..650fc44c9950
--- /dev/null
+++ b/dbaccess/uiconfig/ui/joindialog.ui
@@ -0,0 +1,366 @@
+<?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="JoinDialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">6</property>
+ <property name="title" translatable="yes">Join Properties</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="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">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="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="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ <property name="image_position">top</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="row_spacing">12</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="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="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="grid2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="column_spacing">12</property>
+ <property name="column_homogeneous">True</property>
+ <child>
+ <object class="GtkComboBoxText" id="table1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">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="GtkComboBoxText" id="table2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">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>
+ </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">Tables involved</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>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="grid4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="helptext">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">48</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="dbulo-ORelationControl" id="relations">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="Relation Control-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>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Fields involved</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="grid7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Type</property>
+ <property name="use_underline">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="GtkComboBox" id="type">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="model">liststore1</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="GtkCheckButton" id="natural">
+ <property name="label" translatable="yes">Natural</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Options</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</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>
+ <object class="GtkSizeGroup" id="sizegroup1">
+ <widgets>
+ <widget name="table1"/>
+ <widget name="label5"/>
+ </widgets>
+ </object>
+ <object class="GtkSizeGroup" id="sizegroup2">
+ <widgets>
+ <widget name="table2"/>
+ <widget name="type"/>
+ </widgets>
+ </object>
+ <object class="GtkListStore" id="liststore1">
+ <columns>
+ <!-- column-name gchararray1 -->
+ <column type="gchararray"/>
+ <!-- column-name gint1 -->
+ <column type="gint"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Inner join</col>
+ <col id="1">1</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Left join</col>
+ <col id="1">2</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Right join</col>
+ <col id="1">3</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Full (outer) join</col>
+ <col id="1">4</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Cross join</col>
+ <col id="1">5</col>
+ </row>
+ </data>
+ </object>
+</interface>
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index b95023b2ee3a..45a167844abe 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -620,6 +620,10 @@
generic-name="Open Document Button" parent="GtkButton"
icon-name="widget-gtk-button"/>
+ <glade-widget-class title="Relation Control" name="dbulo-ORelationControl"
+ generic-name="Relation Control" parent="GtkTreeView"
+ icon-name="widget-gtk-treeview"/>
+
<glade-widget-class title="Sidebar ToolBox" name="sfxlo-SidebarToolBox"
generic-name="Sidebar ToolBox" parent="GtkToolbar"
icon-name="widget-gtk-toolbar"/>