def test_parse(self): self.assertEqual(Size.parse('', ''), None) self.assertEqual(Size.parse('', 'FULL'), None) self.assertEqual(Size.parse('HALF', ''), None) self.assertEqual(Size.parse('HALF', 'FULL'), self.HALF_FULL) self.assertEqual(Size.parse('HALF', '1'), self.HALF_FULL) self.assertEqual(Size.parse('HALF', '1.0'), self.HALF_FULL) self.assertEqual(Size.parse('HALF', 'HALF*2'), self.HALF_FULL) self.assertEqual(Size.parse('HALF', 'QUARTER*2+HALF'), self.HALF_FULL) self.assertEqual(Size.parse('1.0/2', '0.1*6-0.1+HALF'), self.HALF_FULL) self.assertEqual(Size.parse('HALF, FULL', '1'), Size([0.5, 1], 1)) self.assertRaises(ValueError, Size.parse, 'tttgf', '0')
def __init__(self, config, section, key): self.key = key """Section key or key modifier.""" data = dict(config._config.items(section)) self.ignored_actions = set() """List of ignored actions.""" if 'ignore_actions' in data: ignored_actions = data.get('ignore_actions', '').split(', ') self.ignored_actions.update(ignored_actions) self.ignored_actions.update(config.ignored_actions) if 'grid' in self.ignored_actions: self.ignored_actions.update(['grid_width', 'grid_height']) self.gravity = Gravity.parse(data.get('gravity', '')) """Gravity.""" self.direction = Gravity.parse(data.get('direction', '')) """Direction of window movement.""" if not self.direction: self.direction = self.gravity self.position = Gravity.parse(data.get('position', '')) """Position position on :ref:`workarea`.""" if not self.position: self.position = self.gravity elif self.position and not self.gravity: self.gravity = self.position self.size = Size.parse(data.get('widths', ''), data.get('heights', '')) """Window size(s)."""
def test_area(self): self.assertEqual(Size.parse('HALF', 'FULL').area, 0.5) self.assertEqual(Size.parse('HALF', '1').area, 0.5) self.assertEqual(Size.parse('HALF', '1.0').area, 0.5) self.assertEqual(Size.parse('HALF', 'HALF*2').area, 0.5) self.assertEqual(Size.parse('HALF', 'QUARTER*2+HALF').area, 0.5) self.assertEqual(Size.parse('1.0/2', '0.1*6-0.1+HALF').area, 0.5) self.assertEqual(Size(10, 10).area, 100) try: # assertRaises doesn't work with properties Size.parse('HALF, FULL', '1').area except ValueError: # "Size.area doesn't support multiple dimensions" pass else: raise AssertionError
def size_callback(option, opt_str, value, parser): """Parse width, height, size options to Size.""" largs_callback(option, opt_str, value, parser) # TODO: allow relative size, and absolute size try: if option.dest == 'width': width = Size.parse_value(value) size = Size(width, 0) elif option.dest == 'height': height = Size.parse_value(value) size = Size(0, height) elif option.dest == 'size': size = Size.parse(*value) except (ValueError, TypeError): msg = 'option %s: error parsing Size value: %s' % (opt_str, value) raise optparse.OptionValueError(msg) setattr(parser.values, option.dest, size)
def __init__(self, config, section, key): self.key = key data = dict(config._config.items(section)) self.ignored = set() if 'ignore_actions' in data: self.ignored.update(data.get('ignore_actions', '').split(', ')) self.ignored.update(config.ignored) if 'grid' in self.ignored: self.ignored.update(['grid_width', 'grid_height']) self.gravity = Gravity.parse(data.get('gravity', '')) self.direction = Gravity.parse(data.get('direction', '')) if not self.direction: self.direction = self.gravity self.position = Gravity.parse(data.get('position', '')) if not self.position: self.position = self.gravity elif self.position and not self.gravity: self.gravity = self.position self.size = Size.parse(data.get('widths', ''), data.get('heights', ''))
def __init__(self, config, section, key): self.key = key data = dict(config._config.items(section)) self.ignored = set() if 'ignore_actions' in data: self.ignored.update(data.get('ignore_actions', '').split(', ')) self.ignored.update(config.ignored) if 'grid' in self.ignored: self.ignored.update(['grid_width', 'grid_height']) self.gravity = Gravity.parse(data.get('gravity', '')) self.direction = Gravity.parse(data.get('direction', '')) if not self.direction: self.direction = self.gravity self.position = Gravity.parse(data.get('position', '')) if not self.position: self.position = self.gravity elif self.position and not self.gravity: self.gravity = self.position self.size = Size.parse(data.get('widths', ''), data.get('heights', ''))