diff --git a/src/scratchtocatrobat/converter/converter.py b/src/scratchtocatrobat/converter/converter.py index d9ccff37..ff4e68b9 100644 --- a/src/scratchtocatrobat/converter/converter.py +++ b/src/scratchtocatrobat/converter/converter.py @@ -2806,14 +2806,36 @@ def _convert_look_block(self): @_register_handler(_block_name_to_handler_map, "showVariable:") def _convert_show_variable_block(self): assert len(self.arguments) == 1 - show_variable_brick = get_show_brick(self.project, self.sprite, self.sprite_context, self.arguments[0]) - return [show_variable_brick] + + variable_name = self.arguments[0] + is_global = True + variable = self.project.getUserVariable(variable_name) + if not variable: + is_global = False + variable = self.sprite.getUserVariable(variable_name) + + monitor = self.sprite_context.getMonitor(variable_name, is_global=is_global, is_list=False) + base_x = int(round(absolute_to_catrobat_x(monitor["x"]))) + base_y = int(round(absolute_to_catrobat_y(monitor["y"]))) + + show_variable_brick = catbricks.ShowTextBrick(base_x, base_y) + show_variable_brick.userVariable = variable + + return show_variable_brick @_register_handler(_block_name_to_handler_map, "hideVariable:") def _convert_hide_variable_block(self): assert len(self.arguments) == 1 - hide_variable_brick = get_show_brick(self.project, self.sprite, self.sprite_context, self.arguments[0], is_hide=True) - return [hide_variable_brick] + + variable_name = self.arguments[0] + variable = self.project.getUserVariable(variable_name) + if not variable: + variable = self.sprite.getUserVariable(variable_name) + + hide_variable_brick = catbricks.HideTextBrick() + hide_variable_brick.userVariable = variable + + return hide_variable_brick @_register_handler(_block_name_to_handler_map, "append:toList:") def _convert_append_to_list_block(self): diff --git a/src/scratchtocatrobat/converter/test_converter.py b/src/scratchtocatrobat/converter/test_converter.py index 56afa664..a70364a7 100644 --- a/src/scratchtocatrobat/converter/test_converter.py +++ b/src/scratchtocatrobat/converter/test_converter.py @@ -3466,7 +3466,17 @@ def test_sprite1_correct_events_added(self): def test_sprite2_correct_events_added(self): #Sprite2 - self.assertEqual(8, self.sprite2.getNumberOfScripts()) + self.assertEqual(6, self.sprite2.getNumberOfScripts()) + bricks = self.sprite2.getScript(1).getBrickList()[0].ifBranchBricks + self.assertIsInstance(bricks[0], catbricks.HideTextBrick) + self.assertIsInstance(bricks[1], catbricks.HideTextBrick) + self.assertIsInstance(bricks[2], catbricks.HideTextBrick) + self.assertIsInstance(bricks[3], catbricks.SetVariableBrick) + bricks = self.sprite2.getScript(1).getBrickList()[0].elseBranchBricks + self.assertIsInstance(bricks[0], catbricks.ShowTextBrick) + self.assertIsInstance(bricks[1], catbricks.ShowTextBrick) + self.assertIsInstance(bricks[2], catbricks.ShowTextBrick) + self.assertIsInstance(bricks[3], catbricks.SetVariableBrick) self.assertIsInstance(self.sprite2.getScript(0), catbase.StartScript) self.assertIsInstance(self.sprite2.getScript(1), catbase.WhenScript) self.assertIsInstance(self.sprite2.getScript(2), catbase.BroadcastScript) @@ -3477,25 +3487,18 @@ def test_sprite2_correct_events_added(self): self.assertEqual(converter.get_broadcast_show_msg(self.sprite2.getName(), "toggle_slider"), self.sprite2.getScript(4).getBroadcastMessage()) self.assertIsInstance(self.sprite2.getScript(5), catbase.BroadcastScript) - self.assertEqual(converter.get_broadcast_show_msg(self.sprite2.getName(), "toggle_slider", is_hide=True), - self.sprite2.getScript(5).getBroadcastMessage()) - self.assertIsInstance(self.sprite2.getScript(6), catbase.BroadcastScript) self.assertEqual(converter.get_broadcast_show_msg(self.sprite2.getName(), "toggle_default"), - self.sprite2.getScript(6).getBroadcastMessage()) - self.assertIsInstance(self.sprite2.getScript(7), catbase.BroadcastScript) - self.assertEqual(converter.get_broadcast_show_msg(self.sprite2.getName(), "toggle_default", is_hide=True), - self.sprite2.getScript(7).getBroadcastMessage()) + self.sprite2.getScript(5).getBroadcastMessage()) + #toggle slider sprite assert self.toggle_slider_sprite.getName().startswith(converter.SLIDER_SPRITE_NAME + self.sprite2.getName()) - self.assertEqual(4, self.toggle_slider_sprite.getNumberOfScripts()) + self.assertEqual(3, self.toggle_slider_sprite.getNumberOfScripts()) self.assertIsInstance(self.toggle_slider_sprite.getScript(0), catbase.StartScript) self.assertIsInstance(self.toggle_slider_sprite.getScript(1), catbase.WhenScript) self.assertIsInstance(self.toggle_slider_sprite.getScript(2), catbase.BroadcastScript) self.assertEqual(converter.get_broadcast_show_msg(self.sprite2.getName(), "toggle_slider", False), self.toggle_slider_sprite.getScript(2).getBroadcastMessage()) - self.assertIsInstance(self.toggle_slider_sprite.getScript(3), catbase.BroadcastScript) - self.assertEqual(converter.get_broadcast_show_msg(self.sprite2.getName(), "toggle_slider", False, True), - self.toggle_slider_sprite.getScript(3).getBroadcastMessage()) + def test_stage_correct_events_added(self): assert self.global_slider_sprite.getName().startswith(converter.SLIDER_SPRITE_NAME + self.stage_sprite.getName())