class ClockTest(Test): """Clock test drawing. Dunno""" def __init__(self, screen, **kwargs): super(ClockTest, self).__init__(screen, **kwargs) self.test_field = FloatLayout() self.desc = "Hodiny" self.drawing = utils.DrawLayer(pos_hint={"x": 0, "y": 0}) self.instruction = "Nakreslete ciferník hodin se všemi číslicemi tak, \njak jsou na ciferníku a nastavte čas, \naby hodiny ukazovaly 11 hodin a 10 minut." self.instruction_audio = "sounds/ins1-3.mp3" with self.test_field.canvas.before: Color(1, 1, 1, 1) self.rec = Rectangle(size=Window.size) def draw_uix(self): self.test_field.add_widget(self.drawing) self.add_widget(self.test_field) super(ClockTest, self).draw_uix() self.hidden_options.modify(self.drawing.erase) def result(self): self.test_field.export_to_png( "/sdcard/vysledky/{2}/{0}_{1}_3.png".format( self.screen.subject.name.replace(" ", "_"), self.screen.subject.age, self.screen.subject.study)) return self.points def export_layout(self): return utils.microgrid(True, Label(text=self.desc), Label(text=str(self.points)))
class ConnectTest(Test): """First spatial test, connectiing letters""" def __init__(self, screen, **kwargs): super(ConnectTest, self).__init__(screen, **kwargs) self.drawing = utils.DrawLayer(pos_hint={"x": 0, "y": 0}) self.desc = "Spojování bodů" self.test_field = FloatLayout() self.test_image = Image(source="images/test1.png") self.instruction = u"Spojte postupně čarou číslice a písmena.\nZačněte číslem 1 směrem k A, pak od A ke 2 \na tak dále a skončete u E" self.instruction_audio = "sounds/ins1-1.mp3" with self.test_field.canvas.before: Color(1, 1, 1, 1) self.rec = Rectangle(size=Window.size) def draw_uix(self): self.test_field.add_widget(self.test_image) self.test_field.add_widget(self.drawing) self.add_widget(self.test_field) super(ConnectTest, self).draw_uix() self.hidden_options.modify(self.drawing.erase) def result(self): self.test_field.export_to_png( "/sdcard/vysledky/{2}/{0}_{1}_1.png".format( self.screen.subject.name.replace(" ", "_"), self.screen.subject.age, self.screen.subject.study)) return self.points def export_layout(self): return utils.microgrid(True, Label(text=self.desc), Label(text=str(self.points)))
class CubeTest(Test): """Cube redrawing test""" def __init__(self, screen, **kwargs): super(CubeTest, self).__init__(screen, **kwargs) self.test_field = FloatLayout() self.drawing = utils.DrawLayer(pos_hint={"x": 0, "y": 0}) self.desc = "Překreslování" self.test_image = Image(source="images/test2.png") self.instruction = "Překreslete do volného místa dolů tuto kresbu, \njak nejpřesněji dokážete." self.instruction_audio = "sounds/ins1-2.mp3" with self.test_field.canvas.before: Color(1, 1, 1, 1) self.rec = Rectangle(size=Window.size) def draw_uix(self): self.test_field.add_widget(self.test_image) self.test_field.add_widget(self.drawing) self.add_widget(self.test_field) super(CubeTest, self).draw_uix() self.hidden_options.modify(self.drawing.erase) def result(self): self.test_field.export_to_png( "/sdcard/vysledky/{2}/{0}_{1}_2.png".format( self.screen.subject.name.replace(" ", "_"), self.screen.subject.age, self.screen.subject.study)) return self.points def export_layout(self): return utils.microgrid(True, Label(text=self.desc), Label(text=str(self.points)))
class AvaMaker(Screen): def __init__(self,source = "",**kwargs): super(AvaMaker,self).__init__(**kwargs) self.source = source self.main = FloatLayout() self.avatar = Button(background_normal = self.source,background_down = self.source,size_hint = [None,None]) test = Image(source = self.source) self.avatar.size = test.texture_size self.touchPos = self.avatar.pos self.ImageX = self.avatar.x self.ImageY = self.avatar.y self.stratHeight = self.avatar.height self.startWidth = self.avatar.width self.main.add_widget(self.avatar) diametr = Window.width * 0.8 if self.avatar.height < diametr: addNum = diametr - self.avatar.height self.avatar.size_hint = [None,None] self.avatar.height += addNum self.avatar.width += addNum self.avatar.y = Window.height // 2 - diametr //2 self.minY = Window.height // 2 + diametr //2 - self.avatar.height self.maxY = Window.height // 2 - diametr//2 self.minX = Window.width // 2 + diametr//2 - self.avatar.width self.maxX = Window.width // 2 - diametr//2 if self.stratHeight < self.avatar.width: sliderValue = self.stratHeight - diametr else: sliderValue = self.startWidth - diametr sizeChanger = Slider(min = sliderValue * -1,max = 0, on_touch_move = self.lesses,on_touch_down = self.lesses, size_hint_y = .1,pos_hint = {"x":0,"center_y":.2}) okButton = Button(size_hint = [.3,.07], pos_hint = {"center_x":.5,"center_y": .1}, on_press = self.save) self.main.add_widget(okButton,0) self.main.add_widget(sizeChanger,0) self.main.add_widget(Filter(on_touch_down = self.son_touch_down,on_touch_move = self.son_touch_move),2) self.add_widget(self.main) def son_touch_down(self,istance,touch): self.touchPos = touch.pos self.ImageX = self.avatar.x self.ImageY = self.avatar.y def son_touch_move(self,istance,touch): self.avatar.x = self.ImageX + (touch.pos[0] - self.touchPos[0]) self.avatar.y = self.ImageY + (touch.pos[1] - self.touchPos[1]) if self.avatar.x < self.minX: self.avatar.x = self.minX elif self.avatar.x > self.maxX: self.avatar.x = self.maxX if self.avatar.y < self.minY: self.avatar.y = self.minY elif self.avatar.y > self.maxY: self.avatar.y = self.maxY def lesses(self,istance,touch): diametr = Window.width * 0.8 self.avatar.size = [self.startWidth + istance.value,self.stratHeight + istance.value * 1.5] print(istance.value) print() print(self.avatar.size) self.minY = Window.height // 2 + diametr //2 - self.avatar.height self.maxY = Window.height // 2 - diametr//2 self.minX = Window.width // 2 + diametr//2 - self.avatar.width self.maxX = Window.width // 2 - diametr//2 if self.avatar.x < self.minX: self.avatar.x = self.minX elif self.avatar.x > self.maxX: self.avatar.x = self.maxX if self.avatar.y < self.minY: self.avatar.y = self.minY elif self.avatar.y > self.maxY: self.avatar.y = self.maxY def save(self,istance): diametr = Window.width * 0.8 self.main.size_hint = [None,None] self.main.size = [diametr,diametr] self.main.pos = [Window.width//2 - diametr//2,Window.height // 2 - diametr//2] self.main.export_to_png("ava.png") self.main.size_hint = [1,1] def updateSource(self,source): test = Image(source = self.source) self.avatar.background_normal = source self.avatar.background_down = source self.avatar.size = test.texture_size self.touchPos = self.avatar.pos self.ImageX = self.avatar.x self.ImageY = self.avatar.y self.stratHeight = self.avatar.height self.startWidth = self.avatar.width diametr = Window.width * 0.8 if self.avatar.height < diametr: addNum = diametr - self.avatar.height self.avatar.size_hint = [None,None] self.avatar.height += addNum self.avatar.width += addNum self.avatar.y = Window.height // 2 - diametr //2 self.minY = Window.height // 2 + diametr //2 - self.avatar.height self.maxY = Window.height // 2 - diametr//2 self.minX = Window.width // 2 + diametr//2 - self.avatar.width self.maxX = Window.width // 2 - diametr//2 if self.stratHeight < self.avatar.width: sliderValue = self.stratHeight - diametr else: sliderValue = self.startWidth - diametr