X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=erdslangetjie%2Feditor%2Feditor.py;h=f2bf09b9d12e1afc071ebcebf914933a35a7149d;hb=a52f0df4d9db1d78522eca1135696a9ab0f0a463;hp=04c95d93593ccd063d2c4d2a569a3d6fbd24fa63;hpb=ca76028e56dd032a2ad79aafd9da88b1a1566895;p=erdslangetjie.git diff --git a/erdslangetjie/editor/editor.py b/erdslangetjie/editor/editor.py index 04c95d9..f2bf09b 100644 --- a/erdslangetjie/editor/editor.py +++ b/erdslangetjie/editor/editor.py @@ -1,24 +1,29 @@ import sys import os -import kivy -kivy.require('1.6.0') +from erdslangetjie.constants import TILE_SIZE from kivy.app import App -from kivy.logger import Logger, LoggerHistory from kivy.uix.widget import Widget from kivy.uix.floatlayout import FloatLayout from kivy.graphics import Color, Rectangle +from kivy.uix.label import Label +from kivy.utils import platform +from kivy.config import Config from erdslangetjie.data import filepath, load from erdslangetjie.level import Level -from erdslangetjie.constants import TILE_SIZE, QUIET + + +if platform() != 'android': + Config.set('graphics', 'width', '1326') + Config.set('graphics', 'height', '760') class EditorWindow(FloatLayout): def __init__(self, level): - super(EditorWindow, self).__init__(size=(800, 600)) + super(EditorWindow, self).__init__(size=(1326, 760)) if os.path.exists(filepath(level)): level_data = load(level) self.level = level @@ -36,22 +41,69 @@ class EditorWindow(FloatLayout): level_data.close() self.level_obj.load_tiles() + self.tool = None + self.tool_widgets = [] + def build(self): self.clear_widgets() tiles = self.level_obj.get_tiles() bx, by = 0, 0 + self.nodes = {} for tile_line in tiles: bx = 0 for tile in tile_line: node = Widget(size=(TILE_SIZE, TILE_SIZE), pos=(bx, by)) + node.bind(on_touch_down=self.change_node) + node.bind(on_touch_move=self.change_node) with node.canvas: Color(1, 1, 1) Rectangle(pos=node.pos, size=node.size, texture=tile.texture) self.add_widget(node) + self.nodes[(bx, by)] = node bx += TILE_SIZE by += TILE_SIZE + name = Label(text="Level: [color=00ffcc]%s[/color]" % self.level, + markup=True, font_size=24, pos=(500, 360)) + self.add_widget(name) + + self.draw_toolbar() + + def draw_toolbar(self): + for widget in self.tool_widgets: + widget.unbind(on_ref_press=self.change_tool) + self.remove_widget(widget) + self.tool_widgets = [] + y = 300 + for tool in ['wall', 'floor', 'add entrance', 'add exit']: + if self.tool == tool: + color = '00cccc' + else: + color = 'cccccc' + tool_label = Label(text='[color=%s][ref=%s]%s[/color]' % + (color, tool, tool), markup=True, font_size=24, + pos=(500, y)) + y -= 50 + tool_label.bind(on_ref_press=self.change_tool) + self.add_widget(tool_label) + self.tool_widgets.append(tool_label) + + def change_tool(self, label, ref): + self.tool = ref + self.draw_toolbar() + + def contained(self, node, pos): + if pos[0] < node.pos[0] or pos[0] > node.pos[0] + TILE_SIZE: + return False + if pos[1] < node.pos[1] or pos[1] > node.pos[1] + TILE_SIZE: + return False + return True + + def change_node(self, node, touch): + if self.contained(node, touch.pos): + print touch, node, node.size, node.pos + class EditorApp(App): @@ -70,10 +122,6 @@ def main(): level = sys.argv[1] else: level = 'level1.txt' - if QUIET: - for hdlr in Logger.handlers[:]: - if not isinstance(hdlr, LoggerHistory): - Logger.removeHandler(hdlr) EditorApp(level).run()