diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2022-03-12 23:30:40 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2022-04-03 09:06:59 +0200 |
commit | 602f653a65f432e5f75acef8fef21189392a05e1 (patch) | |
tree | b9a0075bf0c00228817cc2504e2dc53cfdd0de20 | |
parent | c61aa2dea120cc083f3cd51f0347284f47a9d566 (diff) |
sc: SparklineDialog add type, colors and properties
Change-Id: Ie8243985d61cc719fd0444b0e1aaf18f43489d5c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132466
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
-rw-r--r-- | sc/inc/SparklineGroup.hxx | 14 | ||||
-rw-r--r-- | sc/source/ui/dialogs/SparklineDialog.cxx | 113 | ||||
-rw-r--r-- | sc/source/ui/inc/SparklineDialog.hxx | 28 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/sparklinedialog.ui | 501 |
4 files changed, 639 insertions, 17 deletions
diff --git a/sc/inc/SparklineGroup.hxx b/sc/inc/SparklineGroup.hxx index c6df94e1bdc5..0d3935492d04 100644 --- a/sc/inc/SparklineGroup.hxx +++ b/sc/inc/SparklineGroup.hxx @@ -80,13 +80,13 @@ public: SparklineGroup() : m_aColorSeries(COL_BLUE) - , m_aColorNegative(COL_TRANSPARENT) - , m_aColorAxis(COL_TRANSPARENT) - , m_aColorMarkers(COL_TRANSPARENT) - , m_aColorFirst(COL_TRANSPARENT) - , m_aColorLast(COL_TRANSPARENT) - , m_aColorHigh(COL_TRANSPARENT) - , m_aColorLow(COL_TRANSPARENT) + , m_aColorNegative(COL_RED) + , m_aColorAxis(COL_RED) + , m_aColorMarkers(COL_RED) + , m_aColorFirst(COL_RED) + , m_aColorLast(COL_RED) + , m_aColorHigh(COL_RED) + , m_aColorLow(COL_RED) , m_eMinAxisType(AxisType::Individual) , m_eMaxAxisType(AxisType::Individual) , m_fLineWeight(0.75) diff --git a/sc/source/ui/dialogs/SparklineDialog.cxx b/sc/source/ui/dialogs/SparklineDialog.cxx index 5a167fe8b7c1..fac1d8274be5 100644 --- a/sc/source/ui/dialogs/SparklineDialog.cxx +++ b/sc/source/ui/dialogs/SparklineDialog.cxx @@ -12,6 +12,8 @@ #include <Sparkline.hxx> #include <reffact.hxx> +#include <svx/colorbox.hxx> + namespace sc { SparklineDialog::SparklineDialog(SfxBindings* pBindings, SfxChildWindow* pChildWindow, @@ -30,6 +32,30 @@ SparklineDialog::SparklineDialog(SfxBindings* pBindings, SfxChildWindow* pChildW , mxOutputRangeLabel(m_xBuilder->weld_label("output-range-label")) , mxOutputRangeEdit(new formula::RefEdit(m_xBuilder->weld_entry("output-range-edit"))) , mxOutputRangeButton(new formula::RefButton(m_xBuilder->weld_button("output-range-button"))) + , mxColorSeries(new ColorListBox(m_xBuilder->weld_menu_button("color-button-series"), + [pWindow] { return pWindow; })) + , mxColorNegative(new ColorListBox(m_xBuilder->weld_menu_button("color-button-negative"), + [pWindow] { return pWindow; })) + , mxColorMarker(new ColorListBox(m_xBuilder->weld_menu_button("color-button-marker"), + [pWindow] { return pWindow; })) + , mxColorHigh(new ColorListBox(m_xBuilder->weld_menu_button("color-button-high"), + [pWindow] { return pWindow; })) + , mxColorLow(new ColorListBox(m_xBuilder->weld_menu_button("color-button-low"), + [pWindow] { return pWindow; })) + , mxColorFirst(new ColorListBox(m_xBuilder->weld_menu_button("color-button-first"), + [pWindow] { return pWindow; })) + , mxColorLast(new ColorListBox(m_xBuilder->weld_menu_button("color-button-last"), + [pWindow] { return pWindow; })) + , mxCheckButtonNegative(m_xBuilder->weld_check_button("check-negative")) + , mxCheckButtonMarker(m_xBuilder->weld_check_button("check-marker")) + , mxCheckButtonHigh(m_xBuilder->weld_check_button("check-high")) + , mxCheckButtonLow(m_xBuilder->weld_check_button("check-low")) + , mxCheckButtonFirst(m_xBuilder->weld_check_button("check-first")) + , mxCheckButtonLast(m_xBuilder->weld_check_button("check-last")) + , mxRadioLine(m_xBuilder->weld_radio_button("line-radiobutton")) + , mxRadioColumn(m_xBuilder->weld_radio_button("column-radiobutton")) + , mxRadioStacked(m_xBuilder->weld_radio_button("stacked-radiobutton")) + , mpLocalSparklineGroup(new sc::SparklineGroup()) { mxInputRangeEdit->SetReferences(this, mxInputRangeText.get()); mxInputRangeButton->SetReferences(this, mxInputRangeEdit.get()); @@ -59,13 +85,60 @@ SparklineDialog::SparklineDialog(SfxBindings* pBindings, SfxChildWindow* pChildW mxInputRangeEdit->SetModifyHdl(aModifyLink); mxOutputRangeEdit->SetModifyHdl(aModifyLink); - mxOutputRangeEdit->GrabFocus(); + Link<weld::Toggleable&, void> aRadioButtonLink + = LINK(this, SparklineDialog, SelectSparklineType); + mxRadioLine->connect_toggled(aRadioButtonLink); + mxRadioColumn->connect_toggled(aRadioButtonLink); + mxRadioStacked->connect_toggled(aRadioButtonLink); + + Link<weld::Toggleable&, void> aLink = LINK(this, SparklineDialog, ToggleHandler); + mxCheckButtonNegative->connect_toggled(aLink); + mxCheckButtonMarker->connect_toggled(aLink); + mxCheckButtonHigh->connect_toggled(aLink); + mxCheckButtonLow->connect_toggled(aLink); + mxCheckButtonFirst->connect_toggled(aLink); + mxCheckButtonLast->connect_toggled(aLink); + + setupValues(mpLocalSparklineGroup); GetRangeFromSelection(); + + mxOutputRangeEdit->GrabFocus(); } SparklineDialog::~SparklineDialog() {} +void SparklineDialog::setupValues(std::shared_ptr<sc::SparklineGroup> const& pSparklineGroup) +{ + switch (pSparklineGroup->m_eType) + { + case sc::SparklineType::Line: + mxRadioLine->set_active(true); + break; + case sc::SparklineType::Column: + mxRadioColumn->set_active(true); + break; + case sc::SparklineType::Stacked: + mxRadioStacked->set_active(true); + break; + } + + mxColorSeries->SelectEntry(pSparklineGroup->m_aColorSeries); + mxColorNegative->SelectEntry(pSparklineGroup->m_aColorNegative); + mxColorMarker->SelectEntry(pSparklineGroup->m_aColorMarkers); + mxColorHigh->SelectEntry(pSparklineGroup->m_aColorHigh); + mxColorLow->SelectEntry(pSparklineGroup->m_aColorLow); + mxColorFirst->SelectEntry(pSparklineGroup->m_aColorFirst); + mxColorLast->SelectEntry(pSparklineGroup->m_aColorLast); + + mxCheckButtonNegative->set_active(pSparklineGroup->m_bNegative); + mxCheckButtonMarker->set_active(pSparklineGroup->m_bMarkers); + mxCheckButtonHigh->set_active(pSparklineGroup->m_bHigh); + mxCheckButtonLow->set_active(pSparklineGroup->m_bLow); + mxCheckButtonFirst->set_active(pSparklineGroup->m_bFirst); + mxCheckButtonLast->set_active(pSparklineGroup->m_bLast); +} + void SparklineDialog::Close() { DoClose(sc::SparklineDialogWrapper::GetChildWindowId()); } void SparklineDialog::SetActive() @@ -211,6 +284,32 @@ IMPL_LINK(SparklineDialog, ButtonClicked, weld::Button&, rButton, void) } } +IMPL_LINK(SparklineDialog, ToggleHandler, weld::Toggleable&, rToggle, void) +{ + if (mxCheckButtonNegative.get() == &rToggle) + mpLocalSparklineGroup->m_bNegative = mxCheckButtonNegative->get_active(); + if (mxCheckButtonMarker.get() == &rToggle) + mpLocalSparklineGroup->m_bMarkers = mxCheckButtonMarker->get_active(); + if (mxCheckButtonHigh.get() == &rToggle) + mpLocalSparklineGroup->m_bHigh = mxCheckButtonHigh->get_active(); + if (mxCheckButtonLow.get() == &rToggle) + mpLocalSparklineGroup->m_bLow = mxCheckButtonLow->get_active(); + if (mxCheckButtonFirst.get() == &rToggle) + mpLocalSparklineGroup->m_bFirst = mxCheckButtonFirst->get_active(); + if (mxCheckButtonLast.get() == &rToggle) + mpLocalSparklineGroup->m_bLast = mxCheckButtonLast->get_active(); +} + +IMPL_LINK_NOARG(SparklineDialog, SelectSparklineType, weld::Toggleable&, void) +{ + if (mxRadioLine->get_active()) + mpLocalSparklineGroup->m_eType = sc::SparklineType::Line; + else if (mxRadioColumn->get_active()) + mpLocalSparklineGroup->m_eType = sc::SparklineType::Column; + else if (mxRadioStacked->get_active()) + mpLocalSparklineGroup->m_eType = sc::SparklineType::Stacked; +} + namespace { enum class RangeOrientation @@ -257,7 +356,13 @@ bool SparklineDialog::checkValidInputOutput() void SparklineDialog::perform() { - auto pSparklineGroup = std::make_shared<sc::SparklineGroup>(); + mpLocalSparklineGroup->m_aColorSeries = mxColorSeries->GetSelectEntryColor(); + mpLocalSparklineGroup->m_aColorNegative = mxColorNegative->GetSelectEntryColor(); + mpLocalSparklineGroup->m_aColorMarkers = mxColorMarker->GetSelectEntryColor(); + mpLocalSparklineGroup->m_aColorHigh = mxColorHigh->GetSelectEntryColor(); + mpLocalSparklineGroup->m_aColorLow = mxColorLow->GetSelectEntryColor(); + mpLocalSparklineGroup->m_aColorFirst = mxColorFirst->GetSelectEntryColor(); + mpLocalSparklineGroup->m_aColorLast = mxColorLast->GetSelectEntryColor(); if (maOutputRange.aStart.Col() == maOutputRange.aEnd.Col()) { @@ -283,7 +388,7 @@ void SparklineDialog::perform() aInputRangeSlice.aStart.SetCol(maInputRange.aStart.Col() + nIndex); aInputRangeSlice.aEnd.SetCol(maInputRange.aStart.Col() + nIndex); } - auto* pCreated = mrDocument.CreateSparkline(aAddress, pSparklineGroup); + auto* pCreated = mrDocument.CreateSparkline(aAddress, mpLocalSparklineGroup); pCreated->setInputRange(aInputRangeSlice); nIndex++; } @@ -313,7 +418,7 @@ void SparklineDialog::perform() aInputRangeSlice.aStart.SetCol(maInputRange.aStart.Col() + nIndex); aInputRangeSlice.aEnd.SetCol(maInputRange.aStart.Col() + nIndex); } - auto* pCreated = mrDocument.CreateSparkline(aAddress, pSparklineGroup); + auto* pCreated = mrDocument.CreateSparkline(aAddress, mpLocalSparklineGroup); pCreated->setInputRange(aInputRangeSlice); nIndex++; } diff --git a/sc/source/ui/inc/SparklineDialog.hxx b/sc/source/ui/inc/SparklineDialog.hxx index a4a03f33491d..2cd4f258d484 100644 --- a/sc/source/ui/inc/SparklineDialog.hxx +++ b/sc/source/ui/inc/SparklineDialog.hxx @@ -11,7 +11,9 @@ #include <address.hxx> #include "anyrefdg.hxx" -#include <viewdata.hxx> +#include "viewdata.hxx" + +class ColorListBox; namespace sc { @@ -38,6 +40,25 @@ private: std::unique_ptr<formula::RefEdit> mxOutputRangeEdit; std::unique_ptr<formula::RefButton> mxOutputRangeButton; + std::unique_ptr<ColorListBox> mxColorSeries; + std::unique_ptr<ColorListBox> mxColorNegative; + std::unique_ptr<ColorListBox> mxColorMarker; + std::unique_ptr<ColorListBox> mxColorHigh; + std::unique_ptr<ColorListBox> mxColorLow; + std::unique_ptr<ColorListBox> mxColorFirst; + std::unique_ptr<ColorListBox> mxColorLast; + + std::unique_ptr<weld::CheckButton> mxCheckButtonNegative; + std::unique_ptr<weld::CheckButton> mxCheckButtonMarker; + std::unique_ptr<weld::CheckButton> mxCheckButtonHigh; + std::unique_ptr<weld::CheckButton> mxCheckButtonLow; + std::unique_ptr<weld::CheckButton> mxCheckButtonFirst; + std::unique_ptr<weld::CheckButton> mxCheckButtonLast; + + std::unique_ptr<weld::RadioButton> mxRadioLine; + std::unique_ptr<weld::RadioButton> mxRadioColumn; + std::unique_ptr<weld::RadioButton> mxRadioStacked; + void GetRangeFromSelection(); DECL_LINK(ButtonClicked, weld::Button&, void); @@ -46,7 +67,12 @@ private: DECL_LINK(LoseEditFocusHandler, formula::RefEdit&, void); DECL_LINK(LoseButtonFocusHandler, formula::RefButton&, void); DECL_LINK(RefInputModifyHandler, formula::RefEdit&, void); + DECL_LINK(ToggleHandler, weld::Toggleable&, void); + DECL_LINK(SelectSparklineType, weld::Toggleable&, void); + + std::shared_ptr<sc::SparklineGroup> mpLocalSparklineGroup; + void setupValues(std::shared_ptr<sc::SparklineGroup> const& pSparklineGroup); void perform(); bool checkValidInputOutput(); diff --git a/sc/uiconfig/scalc/ui/sparklinedialog.ui b/sc/uiconfig/scalc/ui/sparklinedialog.ui index 85515462c323..f295023877bf 100644 --- a/sc/uiconfig/scalc/ui/sparklinedialog.ui +++ b/sc/uiconfig/scalc/ui/sparklinedialog.ui @@ -70,7 +70,7 @@ <property name="expand">False</property> <property name="fill">True</property> <property name="pack-type">end</property> - <property name="position">0</property> + <property name="position">2</property> </packing> </child> <child> @@ -84,10 +84,10 @@ <object class="GtkGrid"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="margin-start">6</property> + <property name="margin-start">12</property> <property name="margin-end">6</property> <property name="margin-top">6</property> - <property name="margin-bottom">7</property> + <property name="margin-bottom">6</property> <property name="row-spacing">6</property> <property name="column-spacing">6</property> <child> @@ -191,10 +191,501 @@ </object> </child> <child type="label"> - <object class="GtkLabel" id="label1"> + <object class="GtkLabel" id="label-data"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-data">Data</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">0</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frame-properties"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label-xalign">0</property> + <property name="shadow-type">none</property> + <child> + <!-- n-columns=6 n-rows=5 --> + <object class="GtkGrid"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-start">12</property> + <property name="margin-end">6</property> + <property name="margin-top">6</property> + <property name="margin-bottom">6</property> + <property name="row-spacing">6</property> + <property name="column-spacing">6</property> + <child> + <object class="GtkLabel" id="label-series"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-series">Series:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="color-button-series"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label-negative"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-negative">Negative Points:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="color-button-negative"/> + <relation type="label-for" target="check-negative"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkMenuButton" id="color-button-series"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-series"/> + </accessibility> + </object> + <packing> + <property name="left-attach">2</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkMenuButton" id="color-button-negative"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-negative"/> + </accessibility> + </object> + <packing> + <property name="left-attach">2</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="check-negative"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="image-position">right</property> + <property name="always-show-image">True</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-negative"/> + </accessibility> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label-low"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-low">Low Points:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="color-button-low"/> + <relation type="label-for" target="check-low"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">4</property> + </packing> + </child> + <child> + <object class="GtkMenuButton" id="color-button-high"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-high"/> + </accessibility> + </object> + <packing> + <property name="left-attach">2</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkMenuButton" id="color-button-low"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-low"/> + </accessibility> + </object> + <packing> + <property name="left-attach">2</property> + <property name="top-attach">4</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="check-low"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="image-position">right</property> + <property name="always-show-image">True</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-low"/> + </accessibility> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">4</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label-high"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-high">High Points:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="color-button-high"/> + <relation type="label-for" target="check-high"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="check-high"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="image-position">right</property> + <property name="always-show-image">True</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-high"/> + </accessibility> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label-marker"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-marker">Marker:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="check-marker"/> + <relation type="label-for" target="color-button-marker"/> + </accessibility> + </object> + <packing> + <property name="left-attach">3</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="check-marker"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="image-position">right</property> + <property name="always-show-image">True</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-marker"/> + </accessibility> + </object> + <packing> + <property name="left-attach">4</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkMenuButton" id="color-button-marker"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-marker"/> + </accessibility> + </object> + <packing> + <property name="left-attach">5</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkMenuButton" id="color-button-first"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-first"/> + </accessibility> + </object> + <packing> + <property name="left-attach">5</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkMenuButton" id="color-button-last"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-last"/> + </accessibility> + </object> + <packing> + <property name="left-attach">5</property> + <property name="top-attach">4</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="check-first"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="image-position">right</property> + <property name="always-show-image">True</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-first"/> + </accessibility> + </object> + <packing> + <property name="left-attach">4</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="check-last"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="image-position">right</property> + <property name="always-show-image">True</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + <accessibility> + <relation type="labelled-by" target="label-last"/> + </accessibility> + </object> + <packing> + <property name="left-attach">4</property> + <property name="top-attach">4</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label-first"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-first">First Points:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="color-button-first"/> + <relation type="label-for" target="check-first"/> + </accessibility> + </object> + <packing> + <property name="left-attach">3</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label-last"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-last">Last Points:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="color-button-last"/> + <relation type="label-for" target="check-last"/> + </accessibility> + </object> + <packing> + <property name="left-attach">3</property> + <property name="top-attach">4</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label-type"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-type">Type:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="line-radiobutton"/> + <relation type="label-for" target="column-radiobutton"/> + <relation type="label-for" target="stacked-radiobutton"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="spacing">6</property> + <child> + <object class="GtkRadioButton" id="line-radiobutton"> + <property name="label" translatable="yes" context="SparklineDialog|line-radiobutton">Line</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="hexpand">True</property> + <property name="active">True</property> + <property name="draw-indicator">True</property> + <accessibility> + <relation type="labelled-by" target="label-type"/> + </accessibility> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="column-radiobutton"> + <property name="label" translatable="yes" context="SparklineDialog|column-radiobutton">Column</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="hexpand">True</property> + <property name="draw-indicator">True</property> + <property name="group">line-radiobutton</property> + <accessibility> + <relation type="labelled-by" target="label-type"/> + </accessibility> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="stacked-radiobutton"> + <property name="label" translatable="yes" context="SparklineDialog|stacked-radiobutton">Stacked</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="hexpand">True</property> + <property name="draw-indicator">True</property> + <property name="group">line-radiobutton</property> + <accessibility> + <relation type="labelled-by" target="label-type"/> + </accessibility> + </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">1</property> + <property name="top-attach">0</property> + <property name="width">5</property> + </packing> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label-properties"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="label" translatable="yes" context="SparklineDialog|label1">Data</property> + <property name="label" translatable="yes" context="SparklineDialog|label-properties">Properties</property> <attributes> <attribute name="weight" value="bold"/> </attributes> |