smalruby-editor 0.2.6 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of smalruby-editor might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -0
- data/Guardfile +2 -0
- data/app/assets/javascripts/blocks/hardware.js.coffee.erb +1 -1
- data/app/assets/javascripts/fix_blockly.js.erb +0 -50
- data/app/assets/javascripts/generators/ruby.js.coffee.erb +18 -4
- data/app/assets/javascripts/models/source_code.js +1 -1
- data/app/assets/javascripts/msg/en_us.js +1 -0
- data/app/assets/javascripts/msg/ja.js +4 -0
- data/app/assets/javascripts/smalruby.js.coffee.erb +50 -6
- data/app/assets/javascripts/views/main_menu_view.js.coffee.erb +14 -4
- data/app/assets/javascripts/views/preference_modal_view.js.coffee.erb +71 -0
- data/app/assets/javascripts/views/signin_modal_view.js.coffee.erb +5 -4
- data/app/assets/stylesheets/application.css +1 -0
- data/app/assets/stylesheets/preference-modal.css.scss +22 -0
- data/app/assets/stylesheets/toolbox.css.scss.erb +36 -0
- data/app/controllers/application_controller.rb +20 -4
- data/app/controllers/editor_controller.rb +4 -0
- data/app/controllers/sessions_controller.rb +7 -4
- data/app/controllers/source_codes_controller.rb +2 -2
- data/app/controllers/users_controller.rb +22 -0
- data/app/helpers/application_helper.rb +4 -4
- data/app/helpers/sessions_helper.rb +0 -0
- data/app/helpers/users_helper.rb +10 -0
- data/app/models/concerns/ruby_to_block/block/hardware_init_hardware.rb +0 -6
- data/app/models/concerns/ruby_to_block/block/hardware_operation.rb +0 -0
- data/app/models/preference.rb +71 -0
- data/app/models/source_code.rb +4 -0
- data/app/models/user.rb +26 -0
- data/app/views/editor/_block_tab.html.haml +5 -6
- data/app/views/editor/_load_modal.html.haml +2 -2
- data/app/views/editor/_preference_modal.html.haml +16 -0
- data/app/views/editor/_signin_modal.html.haml +1 -1
- data/app/views/editor/_toolbox_default.html.haml +86 -79
- data/app/views/editor/{_toolbox_raspberrypi.html.haml → _toolbox_smalrubot.html.haml} +72 -105
- data/app/views/editor/_toolbox_smalrubot_s1.html.haml +1 -196
- data/app/views/editor/_toolbox_smalrubot_v3.html.haml +1 -196
- data/app/views/editor/index.html.haml +11 -4
- data/app/views/editor/toolbox.html.haml +1 -0
- data/app/views/layouts/application.html.erb +1 -1
- data/app/views/users/preferences.html.haml +34 -0
- data/config/application.rb +1 -1
- data/config/locales/en.yml +30 -0
- data/config/locales/ja.yml +30 -0
- data/config/routes.rb +4 -57
- data/db/migrate/20150513061200_create_users.rb +10 -0
- data/db/migrate/20150513061250_add_index_name_on_users.rb +9 -0
- data/db/schema.rb +10 -1
- data/lib/smalruby_editor.rb +22 -24
- data/lib/smalruby_editor/version.rb +1 -1
- data/smalruby-editor.gemspec +0 -0
- data/spec/acceptance/block_mode/blocks/hardware/button_pressed_or_released.feature +2 -0
- data/spec/acceptance/block_mode/blocks/hardware/init_hardware.feature +1 -0
- data/spec/acceptance/block_mode/blocks/hardware/led_turn_off.feature +11 -1
- data/spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature +11 -1
- data/spec/acceptance/block_mode/blocks/hardware/motor_driver.feature +7 -1
- data/spec/acceptance/block_mode/blocks/hardware/motor_driver_speed.feature +2 -0
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature +9 -12
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_turn_off.feature +9 -12
- data/spec/acceptance/block_mode/blocks/hardware/sensor_value.feature +59 -60
- data/spec/acceptance/block_mode/blocks/hardware/servo_set_position.feature +76 -67
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_action.feature +9 -12
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_action_with_sec.feature +9 -11
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_dc_motor_power_ratio.feature +11 -12
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_led_turn_on_or_off.feature +9 -10
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action.feature +9 -12
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action_with_sec.feature +9 -11
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_dc_motor_power_ratio.feature +11 -12
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_led_turn_on_or_off.feature +9 -12
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_sensor_value.feature +11 -12
- data/spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car.feature +7 -1
- data/spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car_speed.feature +2 -0
- data/spec/acceptance/standalone/preference.feature +92 -0
- data/{demos → spec/fixtures/files}/hardware_led.rb.xml +0 -0
- data/spec/javascripts/models/source_code_spec.coffee +0 -0
- data/spec/models/concerns/ruby_to_block/block/hardware__smalrubot_spec.rb +1 -1
- data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +4 -4
- data/spec/models/concerns/ruby_to_block_spec.rb +1 -1
- data/spec/models/source_code_spec.rb +1 -11
- data/spec/spec_helper.rb +8 -0
- data/spec/steps/base_steps.rb +68 -16
- data/spec/steps/standalone_steps.rb +21 -0
- data/spec/steps/text_editor_steps.rb +8 -8
- data/spec/support/feature_helper.rb +13 -0
- data/vendor/assets/javascripts/blockly/blockly_compressed.js +500 -454
- data/vendor/assets/javascripts/blockly/blocks_compressed.js +29 -28
- data/vendor/assets/javascripts/blockly/msg/js/ja.js +2 -1
- metadata +33 -35
- data/app/assets/stylesheets/toolbox_default.css.scss.erb +0 -34
- data/app/assets/stylesheets/toolbox_raspberrypi.css.scss.erb +0 -32
- data/app/assets/stylesheets/toolbox_smalrubot_s1.css.scss.erb +0 -32
- data/app/assets/stylesheets/toolbox_smalrubot_v3.css.scss.erb +0 -32
- data/demos/adjust_2wd_car.rb.xml +0 -179
- data/lib/smalruby_editor/config.rb +0 -24
- data/spec/controllers/editor_controller_spec.rb +0 -12
- data/spec/controllers/sessions_controller_spec.rb +0 -74
- data/spec/helpers/sessions_helper_spec.rb +0 -15
@@ -0,0 +1,22 @@
|
|
1
|
+
#preference-modal {
|
2
|
+
width: 700px;
|
3
|
+
margin-left: -(700px / 2);
|
4
|
+
|
5
|
+
.modal-body {
|
6
|
+
form {
|
7
|
+
margin-bottom: 0;
|
8
|
+
|
9
|
+
.control-group {
|
10
|
+
margin-bottom: 8px;
|
11
|
+
|
12
|
+
.control-label {
|
13
|
+
/*width: 100px;*/
|
14
|
+
}
|
15
|
+
|
16
|
+
.controls {
|
17
|
+
/*margin-left: 100px;*/
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
@@ -1,3 +1,7 @@
|
|
1
|
+
<%
|
2
|
+
require 'smalruby_editor'
|
3
|
+
colors = SmalrubyEditor::COLORS
|
4
|
+
%>
|
1
5
|
div.blocklyTreeRoot {
|
2
6
|
padding: 0;
|
3
7
|
|
@@ -16,3 +20,35 @@ div.blocklyTreeRoot {
|
|
16
20
|
font-weight: bold;
|
17
21
|
}
|
18
22
|
}
|
23
|
+
|
24
|
+
<%
|
25
|
+
hues = [
|
26
|
+
colors[:motion],
|
27
|
+
colors[:looks],
|
28
|
+
colors[:sound],
|
29
|
+
colors[:pen],
|
30
|
+
colors[:data],
|
31
|
+
colors[:events],
|
32
|
+
colors[:control],
|
33
|
+
colors[:sensing],
|
34
|
+
colors[:operators],
|
35
|
+
colors[:etc],
|
36
|
+
]
|
37
|
+
|
38
|
+
colors = hues.map { |h|
|
39
|
+
[SmalrubyEditor.hsv_to_rgb(h, 100, 80),
|
40
|
+
SmalrubyEditor.hsv_to_rgb(h, 100, 100)]
|
41
|
+
}
|
42
|
+
|
43
|
+
colors.each.with_index(1) do |(color, active_color), index|
|
44
|
+
%>
|
45
|
+
div.blocklyTreeRoot > div:nth-child(2) > div:nth-child(<%= index %>)[aria-level="1"] {
|
46
|
+
.blocklyTreeRow {
|
47
|
+
background-color: #<%= color %> !important;
|
48
|
+
}
|
49
|
+
|
50
|
+
.blocklyTreeRow.blocklyTreeSelected {
|
51
|
+
background-color: #<%= active_color %> !important;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
<% end %>
|
@@ -7,10 +7,11 @@ class ApplicationController < ActionController::Base
|
|
7
7
|
# For APIs, you may want to use :null_session instead.
|
8
8
|
protect_from_forgery with: :exception
|
9
9
|
|
10
|
-
helper_method :standalone?, :raspberrypi
|
10
|
+
helper_method :standalone?, :raspberrypi?, :current_user,
|
11
|
+
:current_preferences
|
11
12
|
|
12
13
|
before_filter :set_locale
|
13
|
-
before_filter :
|
14
|
+
before_filter :reload_preference if Rails.env.development?
|
14
15
|
|
15
16
|
private
|
16
17
|
|
@@ -53,7 +54,22 @@ class ApplicationController < ActionController::Base
|
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
56
|
-
def
|
57
|
-
|
57
|
+
def reload_preference
|
58
|
+
Preference.reload!
|
59
|
+
end
|
60
|
+
|
61
|
+
def require_auth
|
62
|
+
if session[:username].blank?
|
63
|
+
head :unauthorized
|
64
|
+
return false
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def current_user
|
69
|
+
@current_user ||= User.where(name: session[:username]).first
|
70
|
+
end
|
71
|
+
|
72
|
+
def current_preferences
|
73
|
+
current_user.try(:preferences) || Preference.to_hash
|
58
74
|
end
|
59
75
|
end
|
@@ -6,14 +6,17 @@ class SessionsController < ApplicationController
|
|
6
6
|
def create
|
7
7
|
return head :bad_request if params[:username].blank?
|
8
8
|
|
9
|
-
|
9
|
+
user = User.find_or_create_by(name: params[:username].to_s) { |u|
|
10
|
+
u.set_default_preferences
|
11
|
+
}
|
12
|
+
session[:username] = user.name
|
10
13
|
|
11
|
-
render
|
14
|
+
render json: current_preferences
|
12
15
|
end
|
13
16
|
|
14
17
|
def destroy
|
15
|
-
session[:username] = nil
|
18
|
+
session[:username] = @current_user = nil
|
16
19
|
|
17
|
-
render
|
20
|
+
render json: current_preferences
|
18
21
|
end
|
19
22
|
end
|
@@ -21,7 +21,6 @@ class SourceCodesController < ApplicationController
|
|
21
21
|
local_program_paths.map(&select_and_get_summary).compact
|
22
22
|
end
|
23
23
|
|
24
|
-
demo_program_paths = Pathname.glob(Rails.root.join('demos/*.rb.xml'))
|
25
24
|
res[:demoPrograms] =
|
26
25
|
demo_program_paths.map(&select_and_get_summary).compact
|
27
26
|
|
@@ -180,7 +179,8 @@ class SourceCodesController < ApplicationController
|
|
180
179
|
end
|
181
180
|
|
182
181
|
def demo_program_paths
|
183
|
-
Pathname.glob(Rails.root.join('demos/*.rb.xml'))
|
182
|
+
Pathname.glob(Rails.root.join('demos/*.rb.xml')) +
|
183
|
+
Pathname.glob(SmalrubyEditor.home_directory.join('.demos/*.rb.xml'))
|
184
184
|
end
|
185
185
|
|
186
186
|
def rb_basename(path)
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class UsersController < ApplicationController
|
2
|
+
before_filter :check_whether_standalone
|
3
|
+
before_filter :require_auth
|
4
|
+
|
5
|
+
layout false
|
6
|
+
|
7
|
+
def preferences
|
8
|
+
end
|
9
|
+
|
10
|
+
def update
|
11
|
+
current_user.update_attributes!(user_params)
|
12
|
+
|
13
|
+
render json: current_user.preferences
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def user_params
|
19
|
+
params.require(:user)
|
20
|
+
.permit(preferences: [Preference.whole_preference_names])
|
21
|
+
end
|
22
|
+
end
|
@@ -22,13 +22,13 @@ module ApplicationHelper
|
|
22
22
|
|
23
23
|
# name of Toolbox
|
24
24
|
def toolbox_name
|
25
|
-
|
25
|
+
current_preferences["toolbox_name"] || "default"
|
26
26
|
end
|
27
27
|
|
28
28
|
# css name of Toolbox
|
29
29
|
def toolbox_css_name
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
current_preferences["toolbox_css_name"] ||
|
31
|
+
current_preferences["toolbox_name"] ||
|
32
|
+
"default"
|
33
33
|
end
|
34
34
|
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require "smalruby_editor"
|
2
|
+
|
3
|
+
class Preference < Settingslogic
|
4
|
+
BOOLEAN_FIELD_REGEXP = /(enabled|disabled)/
|
5
|
+
|
6
|
+
def self.toolbox_names
|
7
|
+
%w(
|
8
|
+
default
|
9
|
+
smalrubot_v3
|
10
|
+
smalrubot_s1
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.toolbox_preference_names
|
15
|
+
%w(
|
16
|
+
toolbox__default__enabled_hardware_blocks
|
17
|
+
toolbox__default__enabled_smalrubot_v3_blocks
|
18
|
+
toolbox__default__enabled_smalrubot_s1_blocks
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.general_preference_names
|
23
|
+
%w(
|
24
|
+
disabled_add_character_from_beginning
|
25
|
+
disabled_new_character
|
26
|
+
enabled_auto_init_hardware
|
27
|
+
enabled_readonly_ruby_mode
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.admin_preference_names
|
32
|
+
%w(
|
33
|
+
enabled_must_signin
|
34
|
+
)
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.whole_preference_names
|
38
|
+
["toolbox_name"] + toolbox_preference_names +
|
39
|
+
general_preference_names + admin_preference_names
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.defaults
|
43
|
+
(toolbox_preference_names +
|
44
|
+
general_preference_names).map { |n|
|
45
|
+
[n, false]
|
46
|
+
}.to_h.merge("toolbox_name" => "default")
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.make_toolbox_name_to_preference_names_hash
|
50
|
+
toolbox_preference_names.group_by { |n|
|
51
|
+
n.slice(/^toolbox__(.+?)__/, 1)
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
def initialize(hash_or_file = self.class.source, section = nil)
|
56
|
+
super
|
57
|
+
rescue NoMethodError
|
58
|
+
replace({})
|
59
|
+
@section = section || self.class.source
|
60
|
+
create_accessors!
|
61
|
+
end
|
62
|
+
|
63
|
+
path = SmalrubyEditor.home_directory.join("config", "config.yml")
|
64
|
+
if path.exist?
|
65
|
+
source(path)
|
66
|
+
else
|
67
|
+
source({})
|
68
|
+
end
|
69
|
+
load!
|
70
|
+
suppress_errors(true)
|
71
|
+
end
|
data/app/models/source_code.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'tempfile'
|
4
4
|
require 'open3'
|
5
|
+
require 'nkf'
|
5
6
|
require 'digest/sha2'
|
6
7
|
require 'bundler'
|
7
8
|
require 'smalruby_editor'
|
@@ -152,6 +153,9 @@ class SourceCode < ActiveRecord::Base
|
|
152
153
|
end
|
153
154
|
|
154
155
|
def parse_ruby_error_messages(stderr_str)
|
156
|
+
if SmalrubyEditor.windows?
|
157
|
+
stderr_str = NKF.nkf("-w", stderr_str)
|
158
|
+
end
|
155
159
|
stderr_str.lines.each.with_object([]) { |line, res|
|
156
160
|
if (md = /^\tfrom .*:(\d+):(in .*)$/.match(line))
|
157
161
|
res << { row: md[1].to_i, column: 0, message: md[2] }
|
data/app/models/user.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
class User < ActiveRecord::Base
|
2
|
+
serialize :preferences
|
3
|
+
|
4
|
+
before_save do
|
5
|
+
preferences.each do |key, value|
|
6
|
+
case key
|
7
|
+
when Preference::BOOLEAN_FIELD_REGEXP
|
8
|
+
if !value.is_a?(TrueClass) && !value.is_a?(FalseClass)
|
9
|
+
if %w(true 1).include?(value)
|
10
|
+
preferences[key] = true
|
11
|
+
else
|
12
|
+
preferences[key] = false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# set default preferences from SMALRUBY_HOME/config/config.yml
|
20
|
+
def set_default_preferences
|
21
|
+
self.preferences = Preference.defaults
|
22
|
+
Preference.to_h.each do |key, value|
|
23
|
+
preferences[key] = value
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -16,12 +16,11 @@
|
|
16
16
|
#selectors-tab-content{:class => 'tab-content'}
|
17
17
|
#character-selector-tab{:class => 'tab-pane active selector-tab'}
|
18
18
|
#character-selector-character-set
|
19
|
-
-
|
20
|
-
|
21
|
-
%
|
22
|
-
|
23
|
-
|
24
|
-
= t('.new_character')
|
19
|
+
#add-character-item.item
|
20
|
+
%a#add-character-button{:class => 'character'}
|
21
|
+
%i.icon-plus-sign-alt
|
22
|
+
%br
|
23
|
+
= t('.new_character')
|
25
24
|
|
26
25
|
#scene-selector-tab{:class => 'tab-pane selector-tab'}
|
27
26
|
.item
|
@@ -5,14 +5,14 @@
|
|
5
5
|
:class => "list-programs"}
|
6
6
|
|
7
7
|
.page-header
|
8
|
-
%h3
|
8
|
+
%h3
|
9
9
|
%i.icon-th-large
|
10
10
|
= t('.preset_programs')
|
11
11
|
%ul.thumbnails{:id => "load-modal-demo-programs",
|
12
12
|
:class => "list-programs"}
|
13
13
|
|
14
14
|
.page-header
|
15
|
-
%h3
|
15
|
+
%h3
|
16
16
|
%i.icon-search
|
17
17
|
= t('.find_program')
|
18
18
|
%ul.thumbnails{:class => "list-programs"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#preference-modal{class: "#{modal_css_class}", tabindex: "-1",
|
2
|
+
role: "dialog", "aria-hidden" => "true"}
|
3
|
+
.modal-header
|
4
|
+
%h3
|
5
|
+
%i.icon-cog
|
6
|
+
= t('.title')
|
7
|
+
|
8
|
+
.modal-body#preference-modal-content
|
9
|
+
|
10
|
+
.modal-footer
|
11
|
+
%button.btn{:"data-dismiss" => "modal", :"aria-hidden" => "true"}<
|
12
|
+
%i.icon-remove
|
13
|
+
= t('common.cancel')
|
14
|
+
%button#preference-modal-ok-button{:class => "btn btn-primary"}<
|
15
|
+
%i.icon-circle-blank
|
16
|
+
= t('common.ok')
|
@@ -12,7 +12,7 @@
|
|
12
12
|
%input#signin-modal-username.input-large{name: "username", type: "text", placeholder: t('.username_placeholder')}
|
13
13
|
|
14
14
|
.modal-footer
|
15
|
-
- if !
|
15
|
+
- if !current_preferences["enabled_must_signin"]
|
16
16
|
%button#signin-modal-cancel-button.cancel-button{class: "btn", :"data-dismiss" => "modal", :"aria-hidden" => "true"}<
|
17
17
|
%i.icon-remove
|
18
18
|
= t('common.cancel')
|
@@ -77,13 +77,26 @@
|
|
77
77
|
-# 変数:向き
|
78
78
|
%block{:type => "#{category}_self_angle"}
|
79
79
|
|
80
|
-
- if
|
80
|
+
- if current_preferences["toolbox__default__enabled_hardware_blocks"]
|
81
81
|
- category = 'hardware'
|
82
82
|
- subcategory = 'servo'
|
83
83
|
-# サーボ[▼PIN]を( )度(5~180)にする
|
84
84
|
%block{:type => "#{category}_#{subcategory}_set_position"}
|
85
85
|
= toolbox_number_value('POS', 90)
|
86
86
|
|
87
|
+
- subcategory = 'motor_driver'
|
88
|
+
-# (モータードライバ[▼PIN]で)モーターを[▼正転させる]
|
89
|
+
%block{:type => "#{category}_#{subcategory}"}
|
90
|
+
= toolbox_pin_field('D6')
|
91
|
+
%field{:name => 'METHOD'}<
|
92
|
+
forward
|
93
|
+
|
94
|
+
-# (モータードライバ[▼PIN]の)モーターの速度を<SPEED>%にする
|
95
|
+
%block{:type => "#{category}_#{subcategory}_set_speed"}
|
96
|
+
= toolbox_pin_field('D6')
|
97
|
+
= toolbox_number_value('SPEED', 100)
|
98
|
+
|
99
|
+
- if current_preferences["toolbox__default__enabled_2wd_car_blocks"]
|
87
100
|
- subcategory = 'two_wheel_drive_car'
|
88
101
|
-# 2WD車[▼PIN]を( )秒[▼コマンド]
|
89
102
|
%block{:type => "#{category}_#{subcategory}_run"}
|
@@ -97,71 +110,60 @@
|
|
97
110
|
%field{:name => 'COMMAND'}<
|
98
111
|
forward
|
99
112
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
= toolbox_pin_field('D5')
|
104
|
-
|
105
|
-
-# 2WD車[▼PIN]をバックさせる
|
106
|
-
%block{:type => "#{category}_#{subcategory}_backward"}
|
107
|
-
= toolbox_pin_field('D5')
|
108
|
-
|
109
|
-
-# 2WD車[▼PIN]を左に曲げる
|
110
|
-
%block{:type => "#{category}_#{subcategory}_turn_left"}
|
111
|
-
= toolbox_pin_field('D5')
|
113
|
+
-# 2WD車[▼PIN]を進める
|
114
|
+
%block{:type => "#{category}_#{subcategory}_forward"}
|
115
|
+
= toolbox_pin_field('D5')
|
112
116
|
|
113
|
-
|
114
|
-
|
115
|
-
|
117
|
+
-# 2WD車[▼PIN]をバックさせる
|
118
|
+
%block{:type => "#{category}_#{subcategory}_backward"}
|
119
|
+
= toolbox_pin_field('D5')
|
116
120
|
|
117
|
-
|
118
|
-
|
119
|
-
|
121
|
+
-# 2WD車[▼PIN]を左に曲げる
|
122
|
+
%block{:type => "#{category}_#{subcategory}_turn_left"}
|
123
|
+
= toolbox_pin_field('D5')
|
120
124
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
= toolbox_number_value('SPEED', 100)
|
125
|
+
-# 2WD車[▼PIN]を右に曲げる
|
126
|
+
%block{:type => "#{category}_#{subcategory}_turn_right"}
|
127
|
+
= toolbox_pin_field('D5')
|
125
128
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
= toolbox_pin_field('D6')
|
130
|
-
%field{:name => 'METHOD'}<
|
131
|
-
forward
|
129
|
+
-# 2WD車[▼PIN]を止める
|
130
|
+
%block{:type => "#{category}_#{subcategory}_stop"}
|
131
|
+
= toolbox_pin_field('D5')
|
132
132
|
|
133
|
-
-#
|
133
|
+
-# 2WD車[▼PIN]の[▼LOR]の速度を<SPEED>%にする
|
134
134
|
%block{:type => "#{category}_#{subcategory}_set_speed"}
|
135
|
-
= toolbox_pin_field('
|
135
|
+
= toolbox_pin_field('D5')
|
136
136
|
= toolbox_number_value('SPEED', 100)
|
137
137
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
138
|
+
- if current_preferences["toolbox__default__enabled_smalrubot_v3_blocks"]
|
139
|
+
- category = 'hardware'
|
140
|
+
- subcategory = 'smalrubot_v3'
|
141
|
+
%block{type: "#{category}_#{subcategory}_action"}
|
142
|
+
%field{name: 'ACTION'}<
|
143
|
+
forward
|
143
144
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
145
|
+
%block{type: "#{category}_#{subcategory}_action_with_sec"}
|
146
|
+
%field{name: 'ACTION'}<
|
147
|
+
forward
|
148
|
+
= toolbox_number_value('SEC', 0.5)
|
148
149
|
|
149
|
-
|
150
|
-
|
150
|
+
%block{type: "#{category}_#{subcategory}_dc_motor_set_power_ratio"}
|
151
|
+
= toolbox_number_value('SPEED', 100)
|
151
152
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
153
|
+
- if current_preferences["toolbox__default__enabled_smalrubot_s1_blocks"]
|
154
|
+
- category = 'hardware'
|
155
|
+
- subcategory = 'smalrubot_s1'
|
156
|
+
%block{type: "#{category}_#{subcategory}_action"}
|
157
|
+
%field{name: 'ACTION'}<
|
158
|
+
forward
|
157
159
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
160
|
+
%block{type: "#{category}_#{subcategory}_action_with_sec"}
|
161
|
+
%field{name: 'ACTION'}<
|
162
|
+
forward
|
163
|
+
= toolbox_number_value('SEC', 0.5)
|
162
164
|
|
163
|
-
|
164
|
-
|
165
|
+
%block{type: "#{category}_#{subcategory}_dc_motor_set_power_ratio"}
|
166
|
+
= toolbox_number_value('SPEED', 100)
|
165
167
|
|
166
168
|
- category = 'looks'
|
167
169
|
%category{:name => tt('.looks')}
|
@@ -206,7 +208,7 @@
|
|
206
208
|
-# [▼プリセット画像]
|
207
209
|
-#%block{:type => "#{category}_preset_images"}
|
208
210
|
|
209
|
-
- if
|
211
|
+
- if current_preferences["toolbox__default__enabled_hardware_blocks"]
|
210
212
|
- category = 'hardware'
|
211
213
|
- subcategory = 'led'
|
212
214
|
-# LED[▼PIN]をオンにする
|
@@ -237,17 +239,19 @@
|
|
237
239
|
-# LCDをクリアする
|
238
240
|
%block{:type => "#{category}_#{subcategory}_clear"}
|
239
241
|
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
242
|
+
- if current_preferences["toolbox__default__enabled_smalrubot_v3_blocks"]
|
243
|
+
- category = 'hardware'
|
244
|
+
- subcategory = 'smalrubot_v3'
|
245
|
+
%block{type: "#{category}_#{subcategory}_led_turn_on_or_off"}
|
246
|
+
%field{name: 'OOO'}<
|
247
|
+
turn_on
|
245
248
|
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
249
|
+
- if current_preferences["toolbox__default__enabled_smalrubot_s1_blocks"]
|
250
|
+
- category = 'hardware'
|
251
|
+
- subcategory = 'smalrubot_s1'
|
252
|
+
%block{type: "#{category}_#{subcategory}_led_turn_on_or_off"}
|
253
|
+
%field{name: 'OOO'}<
|
254
|
+
turn_on
|
251
255
|
|
252
256
|
- category = 'sound'
|
253
257
|
%category{:name => tt('.sound')}
|
@@ -373,7 +377,7 @@
|
|
373
377
|
-# 変数:2000年からの日数
|
374
378
|
%block{:type => "#{category}_days_since_2000"}
|
375
379
|
|
376
|
-
- if
|
380
|
+
- if current_preferences["toolbox__default__enabled_hardware_blocks"]
|
377
381
|
- category = 'hardware'
|
378
382
|
-# センサー[▼PIN]
|
379
383
|
%block{:type => "#{category}_sensor_value"}
|
@@ -383,24 +387,27 @@
|
|
383
387
|
%block{:type => "#{category}_button_pressed_or_released"}
|
384
388
|
= toolbox_pin_field('D3')
|
385
389
|
|
386
|
-
-# 2WD車[▼PIN]の[▼LOR]の速度%
|
387
|
-
%block{:type => "#{category}_two_wheel_drive_car_speed"}
|
388
|
-
= toolbox_pin_field('D5')
|
389
|
-
|
390
390
|
-# (モータードライバ[▼PIN]の)モーターの速度(%)
|
391
391
|
%block{:type => "#{category}_motor_driver_speed"}
|
392
392
|
= toolbox_pin_field('D6')
|
393
393
|
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
394
|
+
- if current_preferences["toolbox__default__enabled_2wd_car_blocks"]
|
395
|
+
- category = 'hardware'
|
396
|
+
-# 2WD車[▼PIN]の[▼LOR]の速度%
|
397
|
+
%block{:type => "#{category}_two_wheel_drive_car_speed"}
|
398
|
+
= toolbox_pin_field('D5')
|
399
|
+
|
400
|
+
- if current_preferences["toolbox__default__enabled_smalrubot_v3_blocks"]
|
401
|
+
- category = 'hardware'
|
402
|
+
- subcategory = 'smalrubot_v3'
|
403
|
+
%block{type: "#{category}_#{subcategory}_sensor_value"}
|
404
|
+
%block{type: "#{category}_#{subcategory}_dc_motor_power_ratio"}
|
398
405
|
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
406
|
+
- if current_preferences["toolbox__default__enabled_smalrubot_s1_blocks"]
|
407
|
+
- category = 'hardware'
|
408
|
+
- subcategory = 'smalrubot_s1'
|
409
|
+
%block{type: "#{category}_#{subcategory}_sensor_value"}
|
410
|
+
%block{type: "#{category}_#{subcategory}_dc_motor_power_ratio"}
|
404
411
|
|
405
412
|
- category = 'operators'
|
406
413
|
%category{:name => tt('.operators')}
|
@@ -499,7 +506,7 @@
|
|
499
506
|
-# p
|
500
507
|
%block{:type => "#{category}_p"}
|
501
508
|
|
502
|
-
- if
|
509
|
+
- if !current_preferences["enabled_auto_init_hardware"] && (current_preferences["toolbox__default__enabled_hardware_blocks"] || current_preferences["toolbox__default__enabled_smalrubot_v3_blocks"] || current_preferences["toolbox__default__enabled_smalrubot_s1_blocks"])
|
503
510
|
- category = 'hardware'
|
504
511
|
-# ハードウェアを準備する
|
505
512
|
%block{:type => "#{category}_init_hardware"}
|