Skip to content

Commit e1d2adc

Browse files
committed
wip #65
1 parent 752bc80 commit e1d2adc

File tree

3 files changed

+58
-27
lines changed

3 files changed

+58
-27
lines changed

program.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ def run(self):
154154
logging.error("Camera not available")
155155

156156
exec(self._code)
157+
get_event().wait_event_generators()
157158
except RuntimeError as re:
158159
logging.info("quit: " + str(re))
159160
finally:
@@ -164,7 +165,6 @@ def run(self):
164165
logging.error("Camera not available")
165166
self._running = False
166167

167-
get_event().wait_event_generators()
168168

169169
def as_json(self):
170170
return {'name': self.name,

static/js/blockly/blocks.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -737,11 +737,11 @@ Blockly.Python['coderbot_adv_cnn_classify'] = function(block) {
737737
return [class_scores, Blockly.Python.ORDER_ATOMIC];
738738
};
739739

740-
741740
Blockly.Blocks['coderbot_event_generator'] = {
742741
init: function() {
743-
this.appendStatementInput("event_generator_function")
744-
.appendField("event generator")
742+
this.appendDummyInput()
743+
.appendField("event generator");
744+
this.appendStatementInput("generator_statements")
745745
.setCheck(null);
746746
this.setColour(15);
747747
this.setTooltip("event generator");
@@ -752,9 +752,8 @@ Blockly.Blocks['coderbot_event_generator'] = {
752752
var coderbot_generator_id = 1;
753753
Blockly.Python['coderbot_event_generator'] = function(block) {
754754
Blockly.Generator.prototype.INDENT = ' ';
755-
var statements_event_generator = Blockly.Python.statementToCode(block, 'event_generator_function');
755+
var statements_event_generator = Blockly.Python.statementToCode(block, 'generator_statements');
756756
Blockly.Generator.prototype.INDENT = ' ';
757-
// TODO: Assemble Python into code variable.
758757
var code = 'def event_generator_' + coderbot_generator_id + '():\n' +
759758
' while True:\n' +
760759
' get_prog_eng().check_end()\n' +
@@ -767,36 +766,37 @@ Blockly.Python['coderbot_event_generator'] = function(block) {
767766
Blockly.Blocks['coderbot_event_listener'] = {
768767
init: function() {
769768
this.appendDummyInput()
770-
.appendField("event listener for: ")
771-
.appendField(new Blockly.FieldDropdown([["image/classified","image/classified"], ["image/face_detected","image/face_detected"], ["sonar/obstacle","sonar/obstacle"]]), "event_topic");
772-
this.appendStatementInput("event_listener_code")
769+
.appendField("when:")
770+
.appendField(new Blockly.FieldTextInput("event_topic"), "event_topic")
771+
.appendField("with: event_data");
772+
this.appendStatementInput("event_statements")
773773
.setCheck(null);
774+
this.setInputsInline(true);
774775
this.setColour(15);
775-
this.setTooltip("event listener");
776+
this.setTooltip("");
776777
this.setHelpUrl("");
777778
}
778779
};
779780

780781
var coderbot_listener_id = 1;
781782
Blockly.Python['coderbot_event_listener'] = function(block) {
782783
var event_topic = block.getFieldValue('event_topic');
783-
var statements_event_listener = Blockly.Python.statementToCode(block, 'event_listener_code');
784-
// TODO: Assemble Python into code variable.
784+
var event_statements = Blockly.Python.statementToCode(block, 'event_statements');
785785
var code = 'def event_listener_' + coderbot_listener_id + '(event_data):\n' +
786-
statements_event_listener + '\n' +
786+
event_statements + '\n' +
787787
'get_event().register_event_listener(\'' + event_topic + '\', event_listener_' + coderbot_listener_id + ')'
788788
coderbot_listener_id++;
789789
return code;
790790
};
791791

792792
Blockly.Blocks['coderbot_event_publisher'] = {
793793
init: function() {
794+
this.appendValueInput("event_data")
795+
.appendField("publish")
796+
.setCheck(null);
794797
this.appendDummyInput()
795-
.appendField("publish event on topic:")
798+
.appendField("on topic:")
796799
.appendField(new Blockly.FieldTextInput("event_topic"), "event_topic");
797-
this.appendValueInput("event_data")
798-
.setCheck(null)
799-
.appendField("data:");
800800
this.setInputsInline(true);
801801
this.setPreviousStatement(true, null);
802802
this.setNextStatement(true, null);

templates/blocks_adv.xml

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,18 +161,49 @@
161161
</value>
162162
</block>
163163
</category>
164-
<category name="{% trans %}Colour{% endtrans %}" colour="20">
165-
<block type="colour_picker"></block>
166-
<block type="colour_random"></block>
167-
<block type="colour_rgb"></block>
168-
<block type="colour_blend"></block>
169-
</category>
170164
<category name="{% trans %}Variables{% endtrans %}" custom="VARIABLE" colour="330"></category>
171165
<category name="{% trans %}Functions{% endtrans %}" custom="PROCEDURE" colour="290"></category>
172-
<category name="{% trans %}Event{% endtrans %}" colour="40">
173-
<block type="coderbot_event_generator"></block>
174-
<block type="coderbot_event_publisher"></block>
175-
<block type="coderbot_event_listener"></block>
166+
<category name="{% trans %}Event{% endtrans %}" colour="15">
167+
<block type="coderbot_event_generator">
168+
<value name="generator_statements">
169+
<block type="controls_if">
170+
<value name="IF0">
171+
<block type="logic_compare"></block>
172+
</value>
173+
<value name="DO0">
174+
<block type="coderbot_event_publisher">
175+
<value name="event_data">
176+
<block type="text">
177+
</block>
178+
</value>
179+
<field name="event_topic">a_topic</field>
180+
</block>
181+
</value>
182+
</block>
183+
</value>
184+
</block>
185+
<block type="coderbot_event_publisher">
186+
<value name="event_data">
187+
<block type="text">
188+
</block>
189+
</value>
190+
<field name="event_topic">a_topic</field>
191+
</block>
192+
<block type="coderbot_event_listener">
193+
<field name="event_topic">a_topic</field>
194+
<value name="event_statements">
195+
<block type="text_print">
196+
<value name="TEXT">
197+
<block type="variables_get">
198+
<field name="VAR">{% trans %}event_data{% endtrans %}</field>
199+
</block>
200+
</value>
201+
</block>
202+
</value>
203+
</block>
204+
<block type="variables_get">
205+
<field name="VAR">{% trans %}event_data{% endtrans %}</field>
206+
</block>
176207
</category>
177208
<category name="{% trans %}Movement{% endtrans %}" colour="40">
178209
<block type="coderbot_moveForward"></block>

0 commit comments

Comments
 (0)