1# optionsbar_rotate.py
2#
3# Copyright 2018-2021 Romain F. T.
4#
5# This program is free software: you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation, either version 3 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18from gi.repository import Gtk
19from .abstract_optionsbar import AbstractOptionsBar
20from .utilities import utilities_add_unit_to_spinbtn
21
22class OptionsBarRotate(AbstractOptionsBar):
23	__gtype_name__ = 'OptionsBarRotate'
24
25	def __init__(self, rotate_tool):
26		super().__init__()
27		# knowing the tool is needed because the pane doesn't compact the same
28		# way if it's applied to the selection
29		self.rotate_tool = rotate_tool
30
31		self._build_ui('transform/abstract-optionsbar-transform.ui')
32		builder = self._hydrate_transform_tool('transform/optionsbar-rotate.ui')
33
34		self.angle_btn = builder.get_object('angle_btn')
35		utilities_add_unit_to_spinbtn(self.angle_btn, 3, '°')
36
37		self.angle_box = builder.get_object('angle_box')
38		self.rotate_box = builder.get_object('rotate_box')
39		self.flip_box = builder.get_object('flip_box')
40
41	def init_adaptability(self):
42		super().init_adaptability()
43		temp_limit_size = self.centered_box.get_preferred_width()[0] + \
44		                    self.cancel_btn.get_preferred_width()[0] + \
45		                      self.help_btn.get_preferred_width()[0] + \
46		                     self.apply_btn.get_preferred_width()[0]
47		self._set_limit_size(temp_limit_size)
48
49	def update_for_new_tool(self, tool):
50		self.set_compact(self._is_narrow)
51
52	def set_compact(self, state):
53		super().set_compact(state)
54		if self.rotate_tool.apply_to_selection:
55			self.options_btn.set_visible(state)
56			self.angle_box.set_visible(True)
57			self.rotate_box.set_visible(not state)
58			self.flip_box.set_visible(not state)
59		else:
60			self.options_btn.set_visible(False)
61			self.angle_box.set_visible(False)
62			self.rotate_box.set_visible(True)
63			self.flip_box.set_visible(True)
64
65	############################################################################
66################################################################################
67
68