| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /*
- * Copyright (c) 2012-2026 Daniele Bartolini et al.
- * SPDX-License-Identifier: GPL-3.0-or-later
- */
- namespace Crown
- {
- public class Toolbar : Gtk.Box
- {
- public Toolbar()
- {
- this.orientation = Gtk.Orientation.VERTICAL;
- this.halign = Gtk.Align.START;
- this.valign = Gtk.Align.START;
- this.margin_top = 8;
- this.margin_start = 8;
- add_tool_buttons();
- add_snap_buttons();
- add_reference_system_buttons();
- add_snap_to_grid_buttons();
- }
- public void add_tool_buttons()
- {
- this.pack_start(make_toggle_button("app.tool", new GLib.Variant.int32(ToolType.PLACE), "tool-place"));
- this.pack_start(make_toggle_button("app.tool", new GLib.Variant.int32(ToolType.MOVE), "tool-move"));
- this.pack_start(make_toggle_button("app.tool", new GLib.Variant.int32(ToolType.ROTATE), "tool-rotate"));
- var last = make_toggle_button("app.tool", new GLib.Variant.int32(ToolType.SCALE), "tool-scale");
- last.margin_bottom = last.margin_bottom + 8;
- this.pack_start(last);
- }
- public void add_snap_buttons()
- {
- this.pack_start(make_toggle_button("app.snap", new GLib.Variant.int32(SnapMode.RELATIVE), "reference-local"));
- var last = make_toggle_button("app.snap", new GLib.Variant.int32(SnapMode.ABSOLUTE), "reference-world");
- last.margin_bottom = last.margin_bottom + 8;
- this.pack_start(last);
- }
- public void add_reference_system_buttons()
- {
- this.pack_start(make_toggle_button("app.reference-system", new GLib.Variant.int32(ReferenceSystem.LOCAL), "axis-local"));
- var last = make_toggle_button("app.reference-system", new GLib.Variant.int32(ReferenceSystem.WORLD), "axis-world");
- last.margin_bottom = last.margin_bottom + 8;
- this.pack_start(last);
- }
- public void add_snap_to_grid_buttons()
- {
- var last = make_toggle_button("app.snap-to-grid", null, "snap-to-grid");
- last.margin_bottom = last.margin_bottom + 8;
- this.pack_start(last);
- }
- public Gtk.ToggleButton make_toggle_button(string action_name
- , GLib.Variant? action_target
- , string icon_name
- , Gtk.IconSize icon_size = Gtk.IconSize.LARGE_TOOLBAR
- )
- {
- var btn = new Gtk.ToggleButton();
- btn.action_name = action_name;
- if (action_target != null)
- btn.action_target = action_target;
- btn.can_focus = false;
- btn.get_style_context().add_class("flat");
- btn.get_style_context().add_class("image-button");
- var img = new Gtk.Image.from_icon_name(icon_name, icon_size);
- img.margin_bottom
- = img.margin_end
- = img.margin_start
- = img.margin_top
- = 8
- ;
- btn.add(img);
- return btn;
- }
- }
- } /* namespace Crown */
|