diff options
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/dialogs/SparklineDialog.cxx | 174 | ||||
-rw-r--r-- | sc/source/ui/inc/SparklineDialog.hxx | 18 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/sparklinedialog.ui | 1089 |
3 files changed, 926 insertions, 355 deletions
diff --git a/sc/source/ui/dialogs/SparklineDialog.cxx b/sc/source/ui/dialogs/SparklineDialog.cxx index ba01a64912c6..59068077b969 100644 --- a/sc/source/ui/dialogs/SparklineDialog.cxx +++ b/sc/source/ui/dialogs/SparklineDialog.cxx @@ -16,6 +16,7 @@ #include <docfunc.hxx> #include <svx/colorbox.hxx> +#include <vcl/formatter.hxx> namespace sc { @@ -56,9 +57,20 @@ SparklineDialog::SparklineDialog(SfxBindings* pBindings, SfxChildWindow* pChildW , mxCheckButtonLow(m_xBuilder->weld_check_button("check-low")) , mxCheckButtonFirst(m_xBuilder->weld_check_button("check-first")) , mxCheckButtonLast(m_xBuilder->weld_check_button("check-last")) + , mxSpinLineWidth(m_xBuilder->weld_spin_button("spin-line-width")) , mxRadioLine(m_xBuilder->weld_radio_button("line-radiobutton")) , mxRadioColumn(m_xBuilder->weld_radio_button("column-radiobutton")) , mxRadioStacked(m_xBuilder->weld_radio_button("stacked-radiobutton")) + , mxCheckDisplayXAxis(m_xBuilder->weld_check_button("check-display-x-axis")) + , mxCheckDisplayHidden(m_xBuilder->weld_check_button("check-display-hidden")) + , mxCheckRightToLeft(m_xBuilder->weld_check_button("check-right-to-left")) + , mxRadioDisplayEmptyGap(m_xBuilder->weld_radio_button("display-empty-radiobutton-gap")) + , mxRadioDisplayEmptyZero(m_xBuilder->weld_radio_button("display-empty-radiobutton-zero")) + , mxRadioDisplayEmptySpan(m_xBuilder->weld_radio_button("display-empty-radiobutton-span")) + , mxComboMinAxisType(m_xBuilder->weld_combo_box("combo-min-axis-type")) + , mxComboMaxAxisType(m_xBuilder->weld_combo_box("combo-max-axis-type")) + , mxSpinCustomMin(m_xBuilder->weld_formatted_spin_button("spin-custom-min")) + , mxSpinCustomMax(m_xBuilder->weld_formatted_spin_button("spin-custom-max")) , mbEditMode(false) { mxInputRangeEdit->SetReferences(this, mxInputRangeLabel.get()); @@ -94,6 +106,9 @@ SparklineDialog::SparklineDialog(SfxBindings* pBindings, SfxChildWindow* pChildW mxRadioLine->connect_toggled(aRadioButtonLink); mxRadioColumn->connect_toggled(aRadioButtonLink); mxRadioStacked->connect_toggled(aRadioButtonLink); + mxRadioDisplayEmptyGap->connect_toggled(aRadioButtonLink); + mxRadioDisplayEmptyZero->connect_toggled(aRadioButtonLink); + mxRadioDisplayEmptySpan->connect_toggled(aRadioButtonLink); Link<weld::Toggleable&, void> aLink = LINK(this, SparklineDialog, ToggleHandler); mxCheckButtonNegative->connect_toggled(aLink); @@ -102,6 +117,26 @@ SparklineDialog::SparklineDialog(SfxBindings* pBindings, SfxChildWindow* pChildW mxCheckButtonLow->connect_toggled(aLink); mxCheckButtonFirst->connect_toggled(aLink); mxCheckButtonLast->connect_toggled(aLink); + mxCheckDisplayXAxis->connect_toggled(aLink); + mxCheckDisplayHidden->connect_toggled(aLink); + mxCheckRightToLeft->connect_toggled(aLink); + + mxSpinLineWidth->connect_value_changed(LINK(this, SparklineDialog, SpinLineWidthChanged)); + + mxComboMinAxisType->connect_changed(LINK(this, SparklineDialog, ComboValueChanged)); + mxComboMaxAxisType->connect_changed(LINK(this, SparklineDialog, ComboValueChanged)); + + mxSpinCustomMin->connect_value_changed(LINK(this, SparklineDialog, SpinCustomChanged)); + Formatter& rSpinCustomMinFormatter = mxSpinCustomMin->GetFormatter(); + rSpinCustomMinFormatter.ClearMinValue(); + rSpinCustomMinFormatter.ClearMaxValue(); + rSpinCustomMinFormatter.UseInputStringForFormatting(); + + mxSpinCustomMax->connect_value_changed(LINK(this, SparklineDialog, SpinCustomChanged)); + Formatter& rSpinCustomMaxFormatter = mxSpinCustomMax->GetFormatter(); + rSpinCustomMaxFormatter.ClearMinValue(); + rSpinCustomMaxFormatter.ClearMaxValue(); + rSpinCustomMaxFormatter.UseInputStringForFormatting(); setupValues(); @@ -145,7 +180,7 @@ void SparklineDialog::setupValues() setInputSelection(); - auto& rAttribute = mpLocalSparklineGroup->getAttributes(); + auto const& rAttribute = mpLocalSparklineGroup->getAttributes(); switch (rAttribute.getType()) { @@ -160,6 +195,19 @@ void SparklineDialog::setupValues() break; } + switch (rAttribute.getDisplayEmptyCellsAs()) + { + case sc::DisplayEmptyCellsAs::Gap: + mxRadioDisplayEmptyGap->set_active(true); + break; + case sc::DisplayEmptyCellsAs::Zero: + mxRadioDisplayEmptyZero->set_active(true); + break; + case sc::DisplayEmptyCellsAs::Span: + mxRadioDisplayEmptySpan->set_active(true); + break; + } + mxColorSeries->SelectEntry(rAttribute.getColorSeries()); mxColorNegative->SelectEntry(rAttribute.getColorNegative()); mxColorMarker->SelectEntry(rAttribute.getColorMarkers()); @@ -174,6 +222,48 @@ void SparklineDialog::setupValues() mxCheckButtonLow->set_active(rAttribute.isLow()); mxCheckButtonFirst->set_active(rAttribute.isFirst()); mxCheckButtonLast->set_active(rAttribute.isLast()); + + mxSpinLineWidth->set_value(sal_Int64(rAttribute.getLineWeight() * 100.0)); + + mxCheckDisplayXAxis->set_active(rAttribute.shouldDisplayXAxis()); + mxCheckDisplayHidden->set_active(rAttribute.shouldDisplayHidden()); + mxCheckRightToLeft->set_active(rAttribute.isRightToLeft()); + + switch (rAttribute.getMinAxisType()) + { + case sc::AxisType::Individual: + mxComboMinAxisType->set_active(0); + mxSpinCustomMin->GetFormatter().SetValue(0.0); + break; + case sc::AxisType::Group: + mxComboMinAxisType->set_active(1); + mxSpinCustomMin->GetFormatter().SetValue(0.0); + break; + case sc::AxisType::Custom: + mxComboMinAxisType->set_active(2); + if (rAttribute.getManualMin()) + mxSpinCustomMin->GetFormatter().SetValue(*rAttribute.getManualMin()); + break; + } + ComboValueChanged(*mxComboMinAxisType); + + switch (rAttribute.getMaxAxisType()) + { + case sc::AxisType::Individual: + mxComboMaxAxisType->set_active(0); + mxSpinCustomMax->GetFormatter().SetValue(0.0); + break; + case sc::AxisType::Group: + mxComboMaxAxisType->set_active(1); + mxSpinCustomMax->GetFormatter().SetValue(0.0); + break; + case sc::AxisType::Custom: + mxComboMaxAxisType->set_active(2); + if (rAttribute.getManualMin()) + mxSpinCustomMax->GetFormatter().SetValue(*rAttribute.getManualMax()); + break; + } + ComboValueChanged(*mxComboMaxAxisType); } void SparklineDialog::Close() { DoClose(sc::SparklineDialogWrapper::GetChildWindowId()); } @@ -329,6 +419,12 @@ IMPL_LINK(SparklineDialog, ToggleHandler, weld::Toggleable&, rToggle, void) rAttribute.setFirst(mxCheckButtonFirst->get_active()); if (mxCheckButtonLast.get() == &rToggle) rAttribute.setLast(mxCheckButtonLast->get_active()); + if (mxCheckDisplayXAxis.get() == &rToggle) + rAttribute.setDisplayXAxis(mxCheckDisplayXAxis->get_active()); + if (mxCheckDisplayHidden.get() == &rToggle) + rAttribute.setDisplayHidden(mxCheckDisplayHidden->get_active()); + if (mxCheckRightToLeft.get() == &rToggle) + rAttribute.setRightToLeft(mxCheckRightToLeft->get_active()); } IMPL_LINK_NOARG(SparklineDialog, SelectSparklineType, weld::Toggleable&, void) @@ -341,6 +437,82 @@ IMPL_LINK_NOARG(SparklineDialog, SelectSparklineType, weld::Toggleable&, void) rAttribute.setType(sc::SparklineType::Column); else if (mxRadioStacked->get_active()) rAttribute.setType(sc::SparklineType::Stacked); + + if (mxRadioDisplayEmptyGap->get_active()) + rAttribute.setDisplayEmptyCellsAs(sc::DisplayEmptyCellsAs::Gap); + else if (mxRadioDisplayEmptyZero->get_active()) + rAttribute.setDisplayEmptyCellsAs(sc::DisplayEmptyCellsAs::Zero); + else if (mxRadioDisplayEmptySpan->get_active()) + rAttribute.setDisplayEmptyCellsAs(sc::DisplayEmptyCellsAs::Span); +} + +IMPL_LINK_NOARG(SparklineDialog, SpinLineWidthChanged, weld::SpinButton&, void) +{ + auto& rAttribute = mpLocalSparklineGroup->getAttributes(); + + double value = mxSpinLineWidth->get_value() / 100.0; + rAttribute.setLineWeight(value); +} + +IMPL_LINK(SparklineDialog, SpinCustomChanged, weld::FormattedSpinButton&, rFormatted, void) +{ + auto& rAttribute = mpLocalSparklineGroup->getAttributes(); + + if (mxSpinCustomMin.get() == &rFormatted) + { + rAttribute.setManualMin(rFormatted.GetFormatter().GetValue()); + } + else if (mxSpinCustomMax.get() == &rFormatted) + { + rAttribute.setManualMax(rFormatted.GetFormatter().GetValue()); + } +} + +IMPL_LINK(SparklineDialog, ComboValueChanged, weld::ComboBox&, rComboBox, void) +{ + auto& rAttribute = mpLocalSparklineGroup->getAttributes(); + int nActive = rComboBox.get_active(); + + if (mxComboMinAxisType.get() == &rComboBox) + { + switch (nActive) + { + case 0: + rAttribute.setMinAxisType(sc::AxisType::Individual); + mxSpinCustomMin->set_sensitive(false); + break; + case 1: + rAttribute.setMinAxisType(sc::AxisType::Group); + mxSpinCustomMin->set_sensitive(false); + break; + case 2: + rAttribute.setMinAxisType(sc::AxisType::Custom); + mxSpinCustomMin->set_sensitive(true); + break; + default: + break; + } + } + else if (mxComboMaxAxisType.get() == &rComboBox) + { + switch (nActive) + { + case 0: + rAttribute.setMaxAxisType(sc::AxisType::Individual); + mxSpinCustomMax->set_sensitive(false); + break; + case 1: + rAttribute.setMaxAxisType(sc::AxisType::Group); + mxSpinCustomMax->set_sensitive(false); + break; + case 2: + rAttribute.setMaxAxisType(sc::AxisType::Custom); + mxSpinCustomMax->set_sensitive(true); + break; + default: + break; + } + } } bool SparklineDialog::checkValidInputOutput() diff --git a/sc/source/ui/inc/SparklineDialog.hxx b/sc/source/ui/inc/SparklineDialog.hxx index 4af25a861df5..ce8b7cf36118 100644 --- a/sc/source/ui/inc/SparklineDialog.hxx +++ b/sc/source/ui/inc/SparklineDialog.hxx @@ -57,10 +57,25 @@ private: std::unique_ptr<weld::CheckButton> mxCheckButtonFirst; std::unique_ptr<weld::CheckButton> mxCheckButtonLast; + std::unique_ptr<weld::SpinButton> mxSpinLineWidth; std::unique_ptr<weld::RadioButton> mxRadioLine; std::unique_ptr<weld::RadioButton> mxRadioColumn; std::unique_ptr<weld::RadioButton> mxRadioStacked; + std::unique_ptr<weld::CheckButton> mxCheckDisplayXAxis; + std::unique_ptr<weld::CheckButton> mxCheckDisplayHidden; + std::unique_ptr<weld::CheckButton> mxCheckRightToLeft; + + std::unique_ptr<weld::RadioButton> mxRadioDisplayEmptyGap; + std::unique_ptr<weld::RadioButton> mxRadioDisplayEmptyZero; + std::unique_ptr<weld::RadioButton> mxRadioDisplayEmptySpan; + + std::unique_ptr<weld::ComboBox> mxComboMinAxisType; + std::unique_ptr<weld::ComboBox> mxComboMaxAxisType; + + std::unique_ptr<weld::FormattedSpinButton> mxSpinCustomMin; + std::unique_ptr<weld::FormattedSpinButton> mxSpinCustomMax; + DECL_LINK(ButtonClicked, weld::Button&, void); DECL_LINK(EditFocusHandler, formula::RefEdit&, void); DECL_LINK(ButtonFocusHandler, formula::RefButton&, void); @@ -69,6 +84,9 @@ private: DECL_LINK(RefInputModifyHandler, formula::RefEdit&, void); DECL_LINK(ToggleHandler, weld::Toggleable&, void); DECL_LINK(SelectSparklineType, weld::Toggleable&, void); + DECL_LINK(ComboValueChanged, weld::ComboBox&, void); + DECL_LINK(SpinLineWidthChanged, weld::SpinButton&, void); + DECL_LINK(SpinCustomChanged, weld::FormattedSpinButton&, void); std::shared_ptr<sc::SparklineGroup> mpLocalSparklineGroup; diff --git a/sc/uiconfig/scalc/ui/sparklinedialog.ui b/sc/uiconfig/scalc/ui/sparklinedialog.ui index f295023877bf..8b3ee15a0ad5 100644 --- a/sc/uiconfig/scalc/ui/sparklinedialog.ui +++ b/sc/uiconfig/scalc/ui/sparklinedialog.ui @@ -2,13 +2,25 @@ <!-- Generated with glade 3.38.2 --> <interface domain="sc"> <requires lib="gtk+" version="3.20"/> + <object class="GtkAdjustment" id="adjustment-custom-max"> + <property name="step-increment">1</property> + <property name="page-increment">10</property> + </object> + <object class="GtkAdjustment" id="adjustment-custom-min"> + <property name="step-increment">1</property> + <property name="page-increment">10</property> + </object> + <object class="GtkAdjustment" id="adjustment-line-width"> + <property name="lower">0.5</property> + <property name="upper">8</property> + <property name="value">1</property> + <property name="step-increment">0.25</property> + <property name="page-increment">1</property> + </object> <object class="GtkDialog" id="SparklineDialog"> <property name="can-focus">False</property> <property name="border-width">6</property> <property name="title" translatable="yes" context="SparklineDialog">Sparkline Dialog</property> - <property name="resizable">False</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"> @@ -214,7 +226,7 @@ <property name="label-xalign">0</property> <property name="shadow-type">none</property> <child> - <!-- n-columns=6 n-rows=5 --> + <!-- n-columns=1 n-rows=6 --> <object class="GtkGrid"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -225,377 +237,538 @@ <property name="row-spacing">6</property> <property name="column-spacing">6</property> <child> - <object class="GtkLabel" id="label-series"> + <object class="GtkBox"> <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> + <property name="hexpand">True</property> + <property name="spacing">6</property> + <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="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <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">1</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">2</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">3</property> + </packing> + </child> </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">1</property> + <property name="top-attach">0</property> </packing> </child> <child> - <object class="GtkLabel" id="label-negative"> + <!-- n-columns=6 n-rows=4 --> + <object class="GtkGrid"> <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> + <property name="hexpand">True</property> + <property name="row-spacing">6</property> + <property name="column-spacing">6</property> <child> - <placeholder/> + <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">0</property> + <property name="width">2</property> + </packing> </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/> + <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="hexpand">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">0</property> + </packing> </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/> + <object class="GtkLabel" id="label-negative"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">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="check-negative"/> + <relation type="label-for" target="color-button-negative"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> </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/> + <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="check-high"/> + <relation type="label-for" target="color-button-high"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> </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/> + <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">1</property> + </packing> </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/> + <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">2</property> + </packing> </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/> + <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="hexpand">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">2</property> + <property name="top-attach">1</property> + </packing> </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/> + <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">2</property> + </packing> </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/> + <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="check-low"/> + <relation type="label-for" target="color-button-low"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">3</property> + </packing> </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/> + <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">3</property> + </packing> </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/> + <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">3</property> + </packing> </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/> + <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="check-last"/> + <relation type="label-for" target="color-button-last"/> + </accessibility> + </object> + <packing> + <property name="left-attach">3</property> + <property name="top-attach">3</property> + </packing> </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/> + <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="check-first"/> + <relation type="label-for" target="color-button-first"/> + </accessibility> + </object> + <packing> + <property name="left-attach">3</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label-marker"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">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">1</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">1</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">2</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">3</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="hexpand">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">5</property> + <property name="top-attach">1</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">2</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">3</property> + </packing> + </child> + <child> + <object class="GtkFixed"> + <property name="visible">True</property> + <property name="can-focus">False</property> + </object> + <packing> + <property name="left-attach">3</property> + <property name="top-attach">0</property> + <property name="width">3</property> + </packing> </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> + <property name="left-attach">0</property> + <property name="top-attach">1</property> </packing> </child> <child> - <object class="GtkLabel" id="label-type"> + <object class="GtkBox"> <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> + <property name="hexpand">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkCheckButton" id="check-display-x-axis"> + <property name="label" translatable="yes" context="SparklineDialog|check-display-x-axis">Display X Axis</property> + <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> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="check-display-hidden"> + <property name="label" translatable="yes" context="SparklineDialog|check-display-hidden">Display Hidden</property> + <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> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="check-right-to-left"> + <property name="label" translatable="yes" context="SparklineDialog|check-right-to-left">Right To Left</property> + <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> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">0</property> + <property name="top-attach">3</property> </packing> </child> <child> @@ -604,8 +777,26 @@ <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> + <object class="GtkLabel" id="label-display-empty-cells-as"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-type">Display Empty Cells As:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="display-empty-radiobutton-gap"/> + <relation type="label-for" target="display-empty-radiobutton-zero"/> + <relation type="label-for" target="display-empty-radiobutton-span"/> + </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="display-empty-radiobutton-gap"> + <property name="label" translatable="yes" context="SparklineDialog|line-radiobutton">Gap</property> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">False</property> @@ -613,71 +804,246 @@ <property name="active">True</property> <property name="draw-indicator">True</property> <accessibility> - <relation type="labelled-by" target="label-type"/> + <relation type="labelled-by" target="label-display-empty-cells-as"/> </accessibility> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">0</property> + <property name="position">1</property> </packing> </child> <child> - <object class="GtkRadioButton" id="column-radiobutton"> - <property name="label" translatable="yes" context="SparklineDialog|column-radiobutton">Column</property> + <object class="GtkRadioButton" id="display-empty-radiobutton-zero"> + <property name="label" translatable="yes" context="SparklineDialog|line-radiobutton">Zero</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> - <property name="group">line-radiobutton</property> + <property name="group">display-empty-radiobutton-gap</property> <accessibility> - <relation type="labelled-by" target="label-type"/> + <relation type="labelled-by" target="label-display-empty-cells-as"/> </accessibility> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> - <object class="GtkRadioButton" id="stacked-radiobutton"> - <property name="label" translatable="yes" context="SparklineDialog|stacked-radiobutton">Stacked</property> + <object class="GtkRadioButton" id="display-empty-radiobutton-span"> + <property name="label" translatable="yes" context="SparklineDialog|line-radiobutton">Span</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> - <property name="group">line-radiobutton</property> + <property name="group">display-empty-radiobutton-gap</property> <accessibility> - <relation type="labelled-by" target="label-type"/> + <relation type="labelled-by" target="label-display-empty-cells-as"/> </accessibility> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> </object> <packing> - <property name="left-attach">1</property> - <property name="top-attach">0</property> - <property name="width">5</property> + <property name="left-attach">0</property> + <property name="top-attach">4</property> </packing> </child> <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> - <child> - <placeholder/> + <object class="GtkExpander"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="hexpand">True</property> + <property name="expanded">True</property> + <property name="label-fill">True</property> + <property name="resize-toplevel">True</property> + <child> + <!-- n-columns=3 n-rows=2 --> + <object class="GtkGrid"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="row-spacing">6</property> + <property name="column-spacing">6</property> + <child> + <object class="GtkLabel" id="label-minimum"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="xpad">12</property> + <property name="label" translatable="yes" context="SparklineDialog|label-series">Minimum Value:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="combo-min-axis-type"/> + <relation type="label-for" target="spin-custom-min"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label-maximum"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="xpad">12</property> + <property name="label" translatable="yes" context="SparklineDialog|label-series">Maximum Value:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="combo-max-axis-type"/> + <relation type="label-for" target="spin-custom-max"/> + </accessibility> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="combo-min-axis-type"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="active">0</property> + <items> + <item id="0" translatable="yes" context="SparklineDialog|combo-min-axis-type_0">Individual</item> + <item id="1" translatable="yes" context="SparklineDialog|combo-min-axis-type_1">Group</item> + <item id="2" translatable="yes" context="SparklineDialog|combo-min-axis-type_2">Custom</item> + </items> + <accessibility> + <relation type="labelled-by" target="label-minimum"/> + </accessibility> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="combo-max-axis-type"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="active">0</property> + <items> + <item id="0" translatable="yes" context="SparklineDialog|combo-max-axis-type_0">Individual</item> + <item id="1" translatable="yes" context="SparklineDialog|combo-max-axis-type_1">Group</item> + <item id="2" translatable="yes" context="SparklineDialog|combo-max-axis-type_2">Custom</item> + </items> + <accessibility> + <relation type="labelled-by" target="label-maximum"/> + </accessibility> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="spin-custom-min"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="hexpand">True</property> + <property name="activates-default">True</property> + <property name="width-chars">10</property> + <property name="truncate-multiline">True</property> + <property name="adjustment">adjustment-custom-min</property> + <accessibility> + <relation type="labelled-by" target="label-minimum"/> + </accessibility> + </object> + <packing> + <property name="left-attach">2</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="spin-custom-max"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="hexpand">True</property> + <property name="activates-default">True</property> + <property name="width-chars">10</property> + <property name="truncate-multiline">True</property> + <property name="adjustment">adjustment-custom-max</property> + <accessibility> + <relation type="labelled-by" target="label-maximum"/> + </accessibility> + </object> + <packing> + <property name="left-attach">2</property> + <property name="top-attach">1</property> + </packing> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-vertical-axis">Vertical Axis</property> + </object> + </child> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">5</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <child> + <object class="GtkLabel" id="label-line-width"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="SparklineDialog|label-line-width">Line Width:</property> + <property name="xalign">0</property> + <accessibility> + <relation type="label-for" target="spin-line-width"/> + </accessibility> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="spin-line-width"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="hexpand">True</property> + <property name="input-purpose">number</property> + <property name="adjustment">adjustment-line-width</property> + <property name="climb-rate">0.25</property> + <property name="digits">2</property> + <property name="snap-to-ticks">True</property> + <property name="numeric">True</property> + <property name="value">1</property> + <accessibility> + <relation type="labelled-by" target="label-line-width"/> + </accessibility> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> </child> </object> </child> @@ -706,4 +1072,19 @@ <action-widget response="-11">help</action-widget> </action-widgets> </object> + <object class="GtkSizeGroup"> + <widgets> + <widget name="cell-range-label"/> + <widget name="output-range-label"/> + <widget name="label-type"/> + <widget name="label-series"/> + <widget name="label-negative"/> + <widget name="label-high"/> + <widget name="label-low"/> + <widget name="label-display-empty-cells-as"/> + <widget name="label-minimum"/> + <widget name="label-maximum"/> + <widget name="label-line-width"/> + </widgets> + </object> </interface> |