summaryrefslogtreecommitdiffstats
path: root/src/ui/widget/spin-button-tool-item.cpp
diff options
context:
space:
mode:
authorAlexander Valavanis <valavanisalex@gmail.com>2019-01-27 13:53:29 +0000
committerAlexander Valavanis <valavanisalex@gmail.com>2019-01-27 13:53:29 +0000
commitcadb93da2183162c6e662a0cafb9319e2aadb07c (patch)
treee4941af64af5a6ff0ce6c6d874ee056b8cea4dc8 /src/ui/widget/spin-button-tool-item.cpp
parentSpinButtonToolItem: Make numeric menu items depend on adjustment parameters (diff)
downloadinkscape-cadb93da2183162c6e662a0cafb9319e2aadb07c.tar.gz
inkscape-cadb93da2183162c6e662a0cafb9319e2aadb07c.zip
SpinButtonToolItem: Allow labels on numeric menu
Diffstat (limited to 'src/ui/widget/spin-button-tool-item.cpp')
-rw-r--r--src/ui/widget/spin-button-tool-item.cpp31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/ui/widget/spin-button-tool-item.cpp b/src/ui/widget/spin-button-tool-item.cpp
index e227a51f7..7f7ed99e3 100644
--- a/src/ui/widget/spin-button-tool-item.cpp
+++ b/src/ui/widget/spin-button-tool-item.cpp
@@ -10,6 +10,8 @@
#include "spinbutton.h"
+typedef std::vector< std::pair<double, Glib::ustring> > NumericMenuData;
+
namespace Inkscape {
namespace UI {
namespace Widget {
@@ -236,12 +238,18 @@ SpinButtonToolItem::on_numeric_menu_item_toggled(double value)
Gtk::RadioMenuItem *
SpinButtonToolItem::create_numeric_menu_item(Gtk::RadioButtonGroup *group,
- double value)
+ double value,
+ const Glib::ustring& label)
{
// Represent the value as a string
std::ostringstream ss;
ss << value;
+ // Append the label if specified
+ if (!label.empty()) {
+ ss << ": " << label;
+ }
+
auto numeric_option = Gtk::manage(new Gtk::RadioMenuItem(*group, ss.str()));
// Set the adjustment value in response to changes in the selected item
@@ -288,22 +296,21 @@ SpinButtonToolItem::create_numeric_menu()
// parameters.
//
// TODO: Allow custom values for the list to be specified
- // TODO: Allow descriptions to be added
- std::vector<double> values;
- values.push_back(upper);
- values.push_back(adj_value + page);
- values.push_back(adj_value + step);
- values.push_back(adj_value);
- values.push_back(adj_value - step);
- values.push_back(adj_value - page);
- values.push_back(lower);
+ NumericMenuData values;
+ values.push_back(std::make_pair(upper, ""));
+ values.push_back(std::make_pair(adj_value + page, ""));
+ values.push_back(std::make_pair(adj_value + step, ""));
+ values.push_back(std::make_pair(adj_value, ""));
+ values.push_back(std::make_pair(adj_value - step, ""));
+ values.push_back(std::make_pair(adj_value - page, ""));
+ values.push_back(std::make_pair(lower, ""));
for (auto value : values)
{
- auto numeric_menu_item = create_numeric_menu_item(&group, value);
+ auto numeric_menu_item = create_numeric_menu_item(&group, value.first, value.second);
numeric_menu->append(*numeric_menu_item);
- if (fabs(adj_value - value) < epsilon) {
+ if (fabs(adj_value - value.first) < epsilon) {
// If the adjustment value is very close to the value of this menu item,
// make this menu item active
numeric_menu_item->set_active();