Download gridwidget.py from Jessedbrown/dungeon: direct link, hf CLI and curl.
- Browser
- Download file 2.28 kB
-
https://huggingface.co/Jessedbrown/dungeon/resolve/main/gridwidget.py
- Command line
-
hf download hf://Jessedbrown/dungeon/gridwidget.py
-
curl -L -o gridwidget.py https://huggingface.co/Jessedbrown/dungeon/resolve/main/gridwidget.py
2.28 kB
| from kivy.uix.widget import Widget | |
| from kivy.properties import NumericProperty, ListProperty | |
| from kivy.logger import Logger | |
| from kivy.graphics import Line, Rectangle, Color | |
| class GridWidget(Widget): | |
| ''' | |
| ''' | |
| grid_unit = NumericProperty(11) | |
| foreground = ListProperty([1,1,1,1]) | |
| background = ListProperty([0,0,0,1]) | |
| vlines = ListProperty([]) | |
| hlines = ListProperty([]) | |
| def __init__(self, grid_unit=11, | |
| foreground=None, | |
| background=None, | |
| **kwargs): | |
| super().__init__(**kwargs) | |
| self.grid_unit = grid_unit | |
| self.foreground = foreground or self.foreground | |
| self.background = background or self.background | |
| self.bg = Color(self.background) | |
| self.fg = Color(self.foreground) | |
| self.canvas.before.add(self.bg) | |
| self.canvas.add(self.fg) | |
| self.bind(size=self._resize) | |
| self.bind(grid_unit=self._resize) | |
| self.bind(pos=self._move) | |
| self.bind(foreground=self._foreground) | |
| self.bind(background=self._background) | |
| def _foreground(self, instance, value): | |
| self.fg.rgba = self.foreground | |
| def _background(self, instance, value): | |
| self.bg.rgba = self.background | |
| def _resize(self, instance, value): | |
| ''' | |
| ''' | |
| for l in self.vlines: | |
| self.canvas.remove(l) | |
| for l in self.hlines: | |
| self.canvas.remove(l) | |
| vdim = (self.width // self.grid_unit) + 1 | |
| hdim = (self.height // self.grid_unit) + 1 | |
| vsz = (1, self.height+1) | |
| hsz = (self.width+1, 1) | |
| self.vlines = [Rectangle(size=vsz) for _ in range(int(vdim))] | |
| self.hlines = [Rectangle(size=hsz) for _ in range(int(hdim))] | |
| for l in self.vlines: | |
| self.canvas.add(l) | |
| for l in self.hlines: | |
| self.canvas.add(l) | |
| self._move(self, None) | |
| def _move(self, instance, value): | |
| ''' | |
| ''' | |
| for i, l in enumerate(self.vlines): | |
| l.pos = self.x + (self.grid_unit * i), self.y | |
| for i, l in enumerate(self.hlines): | |
| l.pos = self.x, self.y + (self.grid_unit * i) | |