// SPDX-License-Identifier: GPL-2.0-or-later #ifndef SEEN_BOX3D_TOOLBAR_H #define SEEN_BOX3D_TOOLBAR_H /** * @file * 3d box aux toolbar */ /* Authors: * MenTaLguY * Lauris Kaplinski * bulia byak * Frank Felfe * John Cliff * David Turner * Josh Andler * Jon A. Cruz * Maximilian Albert * Tavmjong Bah * Abhishek Sharma * Kris De Gussem * * Copyright (C) 2004 David Turner * Copyright (C) 2003 MenTaLguY * Copyright (C) 1999-2011 authors * Copyright (C) 2001-2002 Ximian, Inc. * * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ #include "axis-manip.h" #include "toolbar.h" #include "xml/node-observer.h" namespace Gtk { class Adjustment; } class Persp3D; class SPDesktop; namespace Inkscape { class Selection; namespace XML { class Node; } namespace UI { namespace Widget { class SpinButtonToolItem; } namespace Tools { class ToolBase; } namespace Toolbar { class Box3DToolbar : public Toolbar , private XML::NodeObserver { private: UI::Widget::SpinButtonToolItem *_angle_x_item; UI::Widget::SpinButtonToolItem *_angle_y_item; UI::Widget::SpinButtonToolItem *_angle_z_item; Glib::RefPtr _angle_x_adj; Glib::RefPtr _angle_y_adj; Glib::RefPtr _angle_z_adj; Gtk::ToggleToolButton *_vp_x_state_item; Gtk::ToggleToolButton *_vp_y_state_item; Gtk::ToggleToolButton *_vp_z_state_item; XML::Node *_repr{nullptr}; bool _freeze{false}; void angle_value_changed(Glib::RefPtr &adj, Proj::Axis axis); void vp_state_changed(Proj::Axis axis); void check_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec); void selection_changed(Inkscape::Selection *selection); void resync_toolbar(Inkscape::XML::Node *persp_repr); void set_button_and_adjustment(Persp3D *persp, Proj::Axis axis, Glib::RefPtr& adj, UI::Widget::SpinButtonToolItem *spin_btn, Gtk::ToggleToolButton *toggle_btn); double normalize_angle(double a); sigc::connection _changed; void notifyAttributeChanged(Inkscape::XML::Node &node, GQuark name, Inkscape::Util::ptr_shared old_value, Inkscape::Util::ptr_shared new_value) final; protected: Box3DToolbar(SPDesktop *desktop); ~Box3DToolbar() override; public: static GtkWidget * create(SPDesktop *desktop); }; } } } #endif /* !SEEN_BOX3D_TOOLBAR_H */