30#include <glibmm/i18n.h>
31#include <gtkmm/adjustment.h>
33#include <gtkmm/builder.h>
34#include <gtkmm/button.h>
35#include <gtkmm/label.h>
58struct RectToolbar::DerivedSpinButton : UI::Widget::SpinButton
60 using Getter = double (
SPRect::*)() const;
61 using Setter = void (
SPRect::*)(double);
63 DerivedSpinButton(BaseObjectType *cobject, Glib::RefPtr<Gtk::Builder>
const &,
char const *name, Getter getter, Setter setter)
89 auto unit_menu =
_tracker->create_tool_item(_(
"Units"), (
""));
90 get_widget<Gtk::Box>(
builder,
"unit_menu_box").append(*unit_menu);
95 auto const adj = sb->get_adjustment();
96 auto const path = Glib::ustring{
"/tools/shapes/rect/"} + sb->name;
98 adj->set_value(Quantity::convert(val,
"px",
_tracker->getActiveUnit()));
99 adj->signal_value_changed().connect([
this, sb] {
_valueChanged(*sb); });
100 _tracker->addAdjustment(adj->gobj());
102 sb->setDefocusTarget(
this);
131 _rx_item.set_custom_numeric_menu_data({
132 {0.5, _(
"not rounded")},
143 _ry_item.set_custom_numeric_menu_data({
144 {0.5, _(
"not rounded")},
215 auto const adj = btn.get_adjustment();
218 auto const path = Glib::ustring{
"/tools/shapes/rect/"} + btn.name;
222 bool modified =
false;
224 if (
auto rect = cast<SPRect>(
item)) {
225 if (adj->get_value() != 0) {
226 (rect->*btn.setter)(Quantity::convert(adj->get_value(),
_tracker->getActiveUnit(),
"px"));
228 rect->removeAttribute(btn.name);
243 bool disabled =
_rx_item.get_adjustment()->get_value() == 0 &&
244 _ry_item.get_adjustment()->get_value() == 0 &&
251 _rx_item.get_adjustment()->set_value(0.0);
252 _ry_item.get_adjustment()->set_value(0.0);
267 if (
auto r = cast<SPRect>(
item)) {
281 _mode_item.set_markup(n_selected == 0 ? _(
"<b>New:</b>") : _(
"<b>Change:</b>"));
311 _tick_callback = add_tick_callback([
this] (Glib::RefPtr<Gdk::FrameClock>
const &) {
337 sb->get_adjustment()->set_value(Quantity::convert((
_rect->*sb->getter)(),
"px",
_tracker->getActiveUnit()));
static void done(SPDocument *document, Glib::ustring const &event_description, Glib::ustring const &undo_icon, unsigned int object_modified_tag=0)
static bool getUndoSensitive(SPDocument const *document)
SPItemRange items()
Returns a range of selected SPItems.
double getDouble(Glib::ustring const &pref_path, double def=0.0, Glib::ustring const &unit="")
Retrieve a floating point value.
static Preferences * get()
Access the singleton Preferences object.
void setDouble(Glib::ustring const &pref_path, double value)
Set a floating point value.
The set of selected SPObjects for a given document and layer model.
sigc::connection connectChanged(sigc::slot< void(Selection *)> slot)
Connects a slot to be notified of selection changes.
Interface for refcounted XML nodes.
virtual void addObserver(NodeObserver &observer)=0
Add an object that will be notified of the changes to this node.
virtual void removeObserver(NodeObserver &observer)=0
Remove an object from the list of observers.
To do: update description of desktop.
SPDocument * getDocument() const
Inkscape::Selection * getSelection() const
Editable view implementation.
TODO: insert short description here.
Macro for icon names used in Inkscape.
static R & anchor(R &r)
Increments the reference count of a anchored object.
static R & release(R &r)
Decrements the reference count of a anchored object.
W & get_widget(const Glib::RefPtr< Gtk::Builder > &builder, const char *id)
W & get_derived_widget(const Glib::RefPtr< Gtk::Builder > &builder, const char *id, Args &&... args)
Glib::RefPtr< Gtk::Builder > create_builder(const char *filename)
Miscellaneous supporting code.
Glib::RefPtr< Gtk::Builder > builder