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 __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 gravity_callback(option, opt_str, value, parser): """Parse gravity, direction, position options to Gravity.""" largs_callback(option, opt_str, value, parser) try: gravity = Gravity.parse(value) except ValueError: msg = 'option %s: error parsing Gravity value: %s' % (opt_str, value) raise optparse.OptionValueError(msg) setattr(parser.values, option.dest, gravity) if option.dest == 'gravity' and not parser.values.position: setattr(parser.values, 'position', gravity) if option.dest == 'gravity' and not parser.values.direction: setattr(parser.values, 'direction', gravity) if option.dest == 'position' and not parser.values.gravity: setattr(parser.values, 'gravity', gravity)
def test_parse(self): self.assertEqual(Gravity.parse(''), None) self.assertEqual(Gravity.parse('TOP'), self.TOP) self.assertEqual(Gravity.parse('UP'), self.TOP) self.assertEqual(Gravity.parse('N'), self.TOP) self.assertEqual(Gravity.parse('FULL, 0'), self.TOP_RIGHT) self.assertEqual(Gravity.parse('FULL, 0.0'), self.TOP_RIGHT) self.assertEqual(Gravity.parse('1, 0'), self.TOP_RIGHT) self.assertEqual(Gravity.parse('1,0'), self.TOP_RIGHT) self.assertEqual(Gravity.parse('1.0, 0.0'), self.TOP_RIGHT) self.assertEqual(Gravity.parse('1.0,0.0'), self.TOP_RIGHT) self.assertEqual(Gravity.parse('HALF, HALF'), self.MIDDLE) self.assertEqual(Gravity.parse('HALF, 0.5'), self.MIDDLE) self.assertEqual(Gravity.parse('HALF, 1.0/2'), self.MIDDLE) self.assertEqual(Gravity.parse('0.5, 1.0-0.5'), self.MIDDLE) self.assertEqual(Gravity.parse('0.25*2, 2.0/2-0.5'), self.MIDDLE) self.assertEqual(Gravity.parse('QUARTER*2, FULL/2'), self.MIDDLE) self.assertRaises(ValueError, Gravity.parse, 'top') self.assertRaises(ValueError, Gravity.parse, 'slkfsk') self.assertRaises(ValueError, Gravity.parse, '1.0') self.assertRaises(ValueError, Gravity.parse, '1,2,3')