chart2: InsertDataTableDialog for inserting/removing the data table

Change-Id: Ie3c033c587b150723e7aa39cd5ddf5774104db9a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138257
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
This commit is contained in:
Tomaž Vajngerl 2022-07-01 22:00:38 +02:00 committed by Tomaž Vajngerl
parent 6c81a09e3e
commit 6c00d75738
10 changed files with 549 additions and 92 deletions

View file

@ -109,6 +109,7 @@ $(eval $(call gb_Library_add_exception_objects,chartcontroller,\
chart2/source/controller/dialogs/dlg_DataSource \
chart2/source/controller/dialogs/dlg_InsertAxis_Grid \
chart2/source/controller/dialogs/dlg_InsertDataLabel \
chart2/source/controller/dialogs/dlg_InsertDataTable \
chart2/source/controller/dialogs/dlg_InsertErrorBars \
chart2/source/controller/dialogs/dlg_InsertLegend \
chart2/source/controller/dialogs/dlg_InsertTitle \
@ -122,6 +123,7 @@ $(eval $(call gb_Library_add_exception_objects,chartcontroller,\
chart2/source/controller/dialogs/RangeSelectionListener \
chart2/source/controller/dialogs/res_BarGeometry \
chart2/source/controller/dialogs/res_DataLabel \
chart2/source/controller/dialogs/res_DataTableProperties \
chart2/source/controller/dialogs/res_ErrorBar \
chart2/source/controller/dialogs/res_LegendPosition \
chart2/source/controller/dialogs/res_Titles \

View file

@ -44,7 +44,9 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/schart,\
chart2/uiconfig/ui/combobox \
chart2/uiconfig/ui/datarangedialog \
chart2/uiconfig/ui/dlg_DataLabel \
chart2/uiconfig/ui/dlg_InsertDataTable \
chart2/uiconfig/ui/dlg_InsertErrorBars \
chart2/uiconfig/ui/dlg_InsertLegend \
chart2/uiconfig/ui/imagefragment \
chart2/uiconfig/ui/insertaxisdlg \
chart2/uiconfig/ui/insertgriddlg \
@ -58,7 +60,6 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/schart,\
chart2/uiconfig/ui/smoothlinesdlg \
chart2/uiconfig/ui/steppedlinesdlg \
chart2/uiconfig/ui/titlerotationtabpage \
chart2/uiconfig/ui/dlg_InsertLegend \
chart2/uiconfig/ui/tp_3D_SceneAppearance \
chart2/uiconfig/ui/tp_3D_SceneGeometry \
chart2/uiconfig/ui/tp_3D_SceneIllumination \

View file

@ -0,0 +1,61 @@
/* -*- 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/.
*/
#include <dlg_InsertDataTable.hxx>
namespace chart
{
InsertDataTableDialog::InsertDataTableDialog(weld::Window* pWindow)
: GenericDialogController(pWindow, "modules/schart/ui/dlg_InsertDataTable.ui",
"InsertDataTableDialog")
, m_aDataTablePropertiesResources(*m_xBuilder)
, m_xCbShowDataTable(m_xBuilder->weld_check_button("showDataTable"))
{
m_xCbShowDataTable->connect_toggled(LINK(this, InsertDataTableDialog, ShowDataTableToggle));
init(m_aData);
}
IMPL_LINK_NOARG(InsertDataTableDialog, ShowDataTableToggle, weld::Toggleable&, void)
{
changeEnabled();
}
void InsertDataTableDialog::changeEnabled()
{
bool bEnable = m_xCbShowDataTable->get_active();
m_aDataTablePropertiesResources.setChecksSensitive(bEnable);
m_aData.mbShow = bEnable;
}
void InsertDataTableDialog::init(DataTableDialogData const& rData)
{
m_aData = rData;
m_aDataTablePropertiesResources.setHorizontalBorder(m_aData.mbHorizontalBorders);
m_aDataTablePropertiesResources.setVerticalBorder(m_aData.mbVerticalBorders);
m_aDataTablePropertiesResources.setOutline(m_aData.mbOutline);
m_aDataTablePropertiesResources.setKeys(m_aData.mbKeys);
m_xCbShowDataTable->set_active(m_aData.mbShow);
changeEnabled();
}
DataTableDialogData& InsertDataTableDialog::getDataTableDialogData()
{
m_aData.mbShow = m_xCbShowDataTable->get_active();
m_aData.mbHorizontalBorders = m_aDataTablePropertiesResources.getHorizontalBorder();
m_aData.mbVerticalBorders = m_aDataTablePropertiesResources.getVerticalBorder();
m_aData.mbOutline = m_aDataTablePropertiesResources.getOutline();
m_aData.mbKeys = m_aDataTablePropertiesResources.getKeys();
return m_aData;
}
} //namespace chart
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -0,0 +1,111 @@
/* -*- 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/.
*/
#include <res_DataTableProperties.hxx>
#include <chartview/ChartSfxItemIds.hxx>
#include <svl/eitem.hxx>
using namespace css;
namespace chart
{
DataTablePropertiesResources::DataTablePropertiesResources(weld::Builder& rBuilder)
: m_xCbHorizontalBorder(rBuilder.weld_check_button("horizontalBorderCB"))
, m_xCbVerticalBorder(rBuilder.weld_check_button("verticalBorderCB"))
, m_xCbOutilne(rBuilder.weld_check_button("outlineCB"))
, m_xCbKeys(rBuilder.weld_check_button("keysCB"))
{
}
void DataTablePropertiesResources::setChecksSensitive(bool bSensitive)
{
m_xCbHorizontalBorder->set_sensitive(bSensitive);
m_xCbVerticalBorder->set_sensitive(bSensitive);
m_xCbOutilne->set_sensitive(bSensitive);
m_xCbKeys->set_sensitive(bSensitive);
}
void DataTablePropertiesResources::initFromItemSet(const SfxItemSet& rInAttrs)
{
const SfxPoolItem* pPoolItem = nullptr;
SfxItemState aState;
aState = rInAttrs.GetItemState(SCHATTR_DATA_TABLE_HORIZONTAL_BORDER, false, &pPoolItem);
if (aState == SfxItemState::DONTCARE)
{
m_xCbHorizontalBorder->set_state(TRISTATE_INDET);
}
else
{
if (aState == SfxItemState::SET)
m_xCbHorizontalBorder->set_active(
static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
}
aState = rInAttrs.GetItemState(SCHATTR_DATA_TABLE_VERTICAL_BORDER, false, &pPoolItem);
if (aState == SfxItemState::DONTCARE)
{
m_xCbVerticalBorder->set_state(TRISTATE_INDET);
}
else
{
if (aState == SfxItemState::SET)
m_xCbVerticalBorder->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
}
aState = rInAttrs.GetItemState(SCHATTR_DATA_TABLE_OUTLINE, false, &pPoolItem);
if (aState == SfxItemState::DONTCARE)
{
m_xCbOutilne->set_state(TRISTATE_INDET);
}
else
{
if (aState == SfxItemState::SET)
m_xCbOutilne->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
}
aState = rInAttrs.GetItemState(SCHATTR_DATA_TABLE_KEYS, false, &pPoolItem);
if (aState == SfxItemState::DONTCARE)
{
m_xCbKeys->set_state(TRISTATE_INDET);
}
else
{
if (aState == SfxItemState::SET)
m_xCbKeys->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
}
}
bool DataTablePropertiesResources::writeToItemSet(SfxItemSet& rOutAttrs) const
{
if (m_xCbHorizontalBorder->get_state() != TRISTATE_INDET)
{
rOutAttrs.Put(
SfxBoolItem(SCHATTR_DATA_TABLE_HORIZONTAL_BORDER, m_xCbHorizontalBorder->get_active()));
}
if (m_xCbVerticalBorder->get_state() != TRISTATE_INDET)
{
rOutAttrs.Put(
SfxBoolItem(SCHATTR_DATA_TABLE_VERTICAL_BORDER, m_xCbVerticalBorder->get_active()));
}
if (m_xCbOutilne->get_state() != TRISTATE_INDET)
{
rOutAttrs.Put(SfxBoolItem(SCHATTR_DATA_TABLE_OUTLINE, m_xCbOutilne->get_active()));
}
if (m_xCbKeys->get_state() != TRISTATE_INDET)
{
rOutAttrs.Put(SfxBoolItem(SCHATTR_DATA_TABLE_KEYS, m_xCbKeys->get_active()));
}
return true;
}
} //namespace chart
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -9,19 +9,13 @@
#include "tp_DataTable.hxx"
#include <chartview/ChartSfxItemIds.hxx>
#include <svl/eitem.hxx>
namespace chart
{
DataTableTabPage::DataTableTabPage(weld::Container* pPage, weld::DialogController* pController,
const SfxItemSet& rInAttrs)
: SfxTabPage(pPage, pController, "modules/schart/ui/tp_DataTable.ui", "DataTableTabPage",
&rInAttrs)
, m_xCbHorizontalBorder(m_xBuilder->weld_check_button("horizontalBorderCB"))
, m_xCbVerticalBorder(m_xBuilder->weld_check_button("verticalBorderCB"))
, m_xCbOutilne(m_xBuilder->weld_check_button("outlineCB"))
, m_xCbKeys(m_xBuilder->weld_check_button("keysCB"))
, m_aDataTablePropertiesResources(*m_xBuilder)
{
}
@ -34,78 +28,14 @@ std::unique_ptr<SfxTabPage> DataTableTabPage::Create(weld::Container* pPage,
return std::make_unique<DataTableTabPage>(pPage, pController, *rAttrs);
}
bool DataTableTabPage::FillItemSet(SfxItemSet* rOutAttrs)
bool DataTableTabPage::FillItemSet(SfxItemSet* pOutAttrs)
{
if (m_xCbHorizontalBorder->get_state() != TRISTATE_INDET)
{
rOutAttrs->Put(
SfxBoolItem(SCHATTR_DATA_TABLE_HORIZONTAL_BORDER, m_xCbHorizontalBorder->get_active()));
}
if (m_xCbVerticalBorder->get_state() != TRISTATE_INDET)
{
rOutAttrs->Put(
SfxBoolItem(SCHATTR_DATA_TABLE_VERTICAL_BORDER, m_xCbVerticalBorder->get_active()));
}
if (m_xCbOutilne->get_state() != TRISTATE_INDET)
{
rOutAttrs->Put(SfxBoolItem(SCHATTR_DATA_TABLE_OUTLINE, m_xCbOutilne->get_active()));
}
if (m_xCbKeys->get_state() != TRISTATE_INDET)
{
rOutAttrs->Put(SfxBoolItem(SCHATTR_DATA_TABLE_KEYS, m_xCbKeys->get_active()));
}
return true;
return m_aDataTablePropertiesResources.writeToItemSet(*pOutAttrs);
}
void DataTableTabPage::Reset(const SfxItemSet* pInAttrs)
{
const SfxPoolItem* pPoolItem = nullptr;
SfxItemState aState;
aState = pInAttrs->GetItemState(SCHATTR_DATA_TABLE_HORIZONTAL_BORDER, false, &pPoolItem);
if (aState == SfxItemState::DONTCARE)
{
m_xCbHorizontalBorder->set_state(TRISTATE_INDET);
}
else
{
if (aState == SfxItemState::SET)
m_xCbHorizontalBorder->set_active(
static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
}
aState = pInAttrs->GetItemState(SCHATTR_DATA_TABLE_VERTICAL_BORDER, false, &pPoolItem);
if (aState == SfxItemState::DONTCARE)
{
m_xCbVerticalBorder->set_state(TRISTATE_INDET);
}
else
{
if (aState == SfxItemState::SET)
m_xCbVerticalBorder->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
}
aState = pInAttrs->GetItemState(SCHATTR_DATA_TABLE_OUTLINE, false, &pPoolItem);
if (aState == SfxItemState::DONTCARE)
{
m_xCbOutilne->set_state(TRISTATE_INDET);
}
else
{
if (aState == SfxItemState::SET)
m_xCbOutilne->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
}
aState = pInAttrs->GetItemState(SCHATTR_DATA_TABLE_KEYS, false, &pPoolItem);
if (aState == SfxItemState::DONTCARE)
{
m_xCbKeys->set_state(TRISTATE_INDET);
}
else
{
if (aState == SfxItemState::SET)
m_xCbKeys->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
}
m_aDataTablePropertiesResources.initFromItemSet(*pInAttrs);
}
} //namespace chart

View file

@ -10,21 +10,14 @@
#pragma once
#include <sfx2/tabdlg.hxx>
namespace weld
{
class CheckButton;
}
#include <res_DataTableProperties.hxx>
namespace chart
{
class DataTableTabPage : public SfxTabPage
{
private:
std::unique_ptr<weld::CheckButton> m_xCbHorizontalBorder;
std::unique_ptr<weld::CheckButton> m_xCbVerticalBorder;
std::unique_ptr<weld::CheckButton> m_xCbOutilne;
std::unique_ptr<weld::CheckButton> m_xCbKeys;
DataTablePropertiesResources m_aDataTablePropertiesResources;
public:
DataTableTabPage(weld::Container* pPage, weld::DialogController* pController,

View file

@ -0,0 +1,47 @@
/* -*- 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/.
*/
#pragma once
#include <vcl/weld.hxx>
#include "res_DataTableProperties.hxx"
namespace chart
{
struct DataTableDialogData
{
bool mbShow = true;
bool mbHorizontalBorders = false;
bool mbVerticalBorders = false;
bool mbOutline = false;
bool mbKeys = false;
};
class InsertDataTableDialog final : public weld::GenericDialogController
{
private:
DataTablePropertiesResources m_aDataTablePropertiesResources;
std::unique_ptr<weld::CheckButton> m_xCbShowDataTable;
DataTableDialogData m_aData;
DECL_LINK(ShowDataTableToggle, weld::Toggleable&, void);
void changeEnabled();
public:
InsertDataTableDialog(weld::Window* pParent);
void init(DataTableDialogData const& rData);
DataTableDialogData& getDataTableDialogData();
};
} //namespace chart
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -0,0 +1,47 @@
/* -*- 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/.
*/
#pragma once
#include <svl/itemset.hxx>
#include <vcl/weld.hxx>
namespace chart
{
class DataTablePropertiesResources final
{
private:
std::unique_ptr<weld::CheckButton> m_xCbHorizontalBorder;
std::unique_ptr<weld::CheckButton> m_xCbVerticalBorder;
std::unique_ptr<weld::CheckButton> m_xCbOutilne;
std::unique_ptr<weld::CheckButton> m_xCbKeys;
public:
DataTablePropertiesResources(weld::Builder& rBuilder);
void initFromItemSet(SfxItemSet const& rInAttrs);
bool writeToItemSet(SfxItemSet& rOutAttrs) const;
void setChecksSensitive(bool bSensitive);
bool getHorizontalBorder() { return m_xCbHorizontalBorder->get_active(); }
void setHorizontalBorder(bool bActive) { m_xCbHorizontalBorder->set_active(bActive); }
bool getVerticalBorder() { return m_xCbVerticalBorder->get_active(); }
void setVerticalBorder(bool bActive) { m_xCbVerticalBorder->set_active(bActive); }
bool getOutline() { return m_xCbOutilne->get_active(); }
void setOutline(bool bActive) { m_xCbOutilne->set_active(bActive); }
bool getKeys() { return m_xCbKeys->get_active(); }
void setKeys(bool bActive) { m_xCbKeys->set_active(bActive); }
};
} //namespace chart
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -25,6 +25,7 @@
#include <dlg_InsertLegend.hxx>
#include <dlg_InsertErrorBars.hxx>
#include <dlg_InsertTitle.hxx>
#include <dlg_InsertDataTable.hxx>
#include <dlg_ObjectProperties.hxx>
#include <Axis.hxx>
@ -57,6 +58,7 @@
#include <com/sun/star/chart2/XRegressionCurve.hpp>
#include <com/sun/star/chart/ErrorBarStyle.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <svx/ActionDescriptionProvider.hxx>
#include <tools/diagnose_ex.h>
@ -158,18 +160,66 @@ void ChartController::executeDispatch_InsertGrid()
void ChartController::executeDispatch_OpenInsertDataTableDialog()
{
rtl::Reference<Diagram> xDiagram = getFirstDiagram();
SolarMutexGuard aGuard;
if (xDiagram->getDataTable().is())
rtl::Reference<Diagram> xDiagram = getFirstDiagram();
InsertDataTableDialog aDialog(GetChartFrame());
{
xDiagram->setDataTable(uno::Reference<chart2::XDataTable>());
}
else
{
uno::Reference<chart2::XDataTable> xDataTable(new DataTable);
// init values
DataTableDialogData aData;
auto xDataTable = xDiagram->getDataTable();
aData.mbShow = xDataTable.is();
if (xDataTable.is())
{
xDiagram->setDataTable(xDataTable);
uno::Reference<beans::XPropertySet> xProperties(xDataTable, uno::UNO_QUERY);
uno::Any aAny = xProperties->getPropertyValue("HBorder");
if (aAny.has<bool>())
aData.mbHorizontalBorders = aAny.get<bool>();
aAny = xProperties->getPropertyValue("VBorder");
if (aAny.has<bool>())
aData.mbVerticalBorders = aAny.get<bool>();
aAny = xProperties->getPropertyValue("Outline");
if (aAny.has<bool>())
aData.mbOutline = aAny.get<bool>();
aAny = xProperties->getPropertyValue("Keys");
if (aAny.has<bool>())
aData.mbKeys = aAny.get<bool>();
}
aDialog.init(aData);
}
// show the dialog
if (aDialog.run() == RET_OK)
{
auto& rDialogData = aDialog.getDataTableDialogData();
auto xDataTable = xDiagram->getDataTable();
if (!rDialogData.mbShow && xDataTable.is())
{
xDiagram->setDataTable(uno::Reference<chart2::XDataTable>());
}
else if (rDialogData.mbShow && !xDataTable.is())
{
uno::Reference<chart2::XDataTable> xNewDataTable(new DataTable);
if (xNewDataTable.is())
{
xDiagram->setDataTable(xNewDataTable);
}
}
// Set the properties
xDataTable = xDiagram->getDataTable();
if (rDialogData.mbShow && xDataTable.is())
{
uno::Reference<beans::XPropertySet> xProperties(xDataTable, uno::UNO_QUERY);
xProperties->setPropertyValue("HBorder" , uno::Any(rDialogData.mbHorizontalBorders));
xProperties->setPropertyValue("VBorder" , uno::Any(rDialogData.mbVerticalBorders));
xProperties->setPropertyValue("Outline" , uno::Any(rDialogData.mbOutline));
xProperties->setPropertyValue("Keys" , uno::Any(rDialogData.mbKeys));
}
}
}

View file

@ -0,0 +1,215 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="chart">
<requires lib="gtk+" version="3.20"/>
<object class="GtkDialog" id="InsertDataTableDialog">
<property name="can-focus">False</property>
<property name="border-width">6</property>
<property name="title" translatable="yes" context="dlg_InsertDataTable|dlg_InsertDataTable">Data Table</property>
<property name="modal">True</property>
<property name="default-width">0</property>
<property name="default-height">0</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" translatable="yes" context="stock">_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-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="cancel">
<property name="label" translatable="yes" context="stock">_Cancel</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="help">
<property name="label" translatable="yes" context="stock">_Help</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="margin-end">6</property>
<property name="use-underline">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="secondary">True</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="GtkBox" id="dlg_LegendPosition">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="border-width">6</property>
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
<object class="GtkCheckButton" id="showDataTable">
<property name="label" translatable="yes" context="dlg_InsertDataTable|horizontalBorderCB">Show Data Table</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">start</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame2">
<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="GtkBox" id="box4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">12</property>
<property name="margin-top">6</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkCheckButton" id="horizontalBorderCB">
<property name="label" translatable="yes" context="dlg_InsertDataTable|horizontalBorderCB">Show Horizontal Border</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">start</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="verticalBorderCB">
<property name="label" translatable="yes" context="dlg_InsertDataTable|verticalBorderCB">Show Vertical Border</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">start</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="outlineCB">
<property name="label" translatable="yes" context="dlg_InsertDataTable|outlineCB">Show Outline</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">start</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="keysCB">
<property name="label" translatable="yes" context="dlg_InsertDataTable|keysCB">Show Keys</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">start</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="dataTablePropertiesLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes" context="dlg_InsertDataTable|dataTablePropertiesLabel">Data Table Properties</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
</object>
<packing>
<property name="expand">False</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">1</property>
</packing>
</child>
</object>
</child>
<action-widgets>
<action-widget response="-5">ok</action-widget>
<action-widget response="-6">cancel</action-widget>
<action-widget response="-11">help</action-widget>
</action-widgets>
</object>
</interface>