Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 26 additions & 4 deletions src/scratchtocatrobat/converter/converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
27 changes: 15 additions & 12 deletions src/scratchtocatrobat/converter/test_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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())
Expand Down