rbpad 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +48 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/rbpad +3 -0
- data/lib/rbpad/blockmatch.rb +136 -0
- data/lib/rbpad/config/actions_menubar.xml +166 -0
- data/lib/rbpad/config/actions_menubar_template.xml +126 -0
- data/lib/rbpad/config/actions_menubar_toggle.xml +27 -0
- data/lib/rbpad/config/find_next.xpm +196 -0
- data/lib/rbpad/config/find_prev.xpm +196 -0
- data/lib/rbpad/config/menu.xml +63 -0
- data/lib/rbpad/config/messages.xml +64 -0
- data/lib/rbpad/config/platform.xml +41 -0
- data/lib/rbpad/config/run.xpm +44 -0
- data/lib/rbpad/config/sourceview.xml +132 -0
- data/lib/rbpad/config.rb +216 -0
- data/lib/rbpad/editor.rb +141 -0
- data/lib/rbpad/error_jp.rb +176 -0
- data/lib/rbpad/input.rb +27 -0
- data/lib/rbpad/output.rb +51 -0
- data/lib/rbpad/pad.rb +656 -0
- data/lib/rbpad/page.rb +257 -0
- data/lib/rbpad/util.rb +30 -0
- data/lib/rbpad/version.rb +3 -0
- data/lib/rbpad.rb +32 -0
- data/rbpad.gemspec +43 -0
- data/rbpad3_en.png +0 -0
- data/rbpad3_jp.png +0 -0
- metadata +95 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 73f56a337b60d8ddc30fb4db31ccd631fb860d9f2f81be7d36e898c86c49ae38
|
4
|
+
data.tar.gz: 73370ac457e50cecbc149d92c07fb546c20ac2f2ca1abd97c12d47f41f443f0e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 29088635d144f36a5560f5a68998ec524a05107cc2a33d655a8389e08addf02a6a3b3e7a9c732f96aaf21c825c4bf448fbed53b530a81c076ddddaed91452127
|
7
|
+
data.tar.gz: 54e70a2e6c65f5d1de03245508a2555862cfecca81a2ac83a965ae0539179087d50712fd1005463e0906a0703e53084391f08d0a5e45e208b14a093f33ed75f9
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2019 TODO: Write your name
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# rbpad
|
2
|
+
|
3
|
+
'rbpad' is a programming editor for Ruby,
|
4
|
+
you are able to edit and run scripts of Ruby easily.
|
5
|
+
|
6
|
+
## Required
|
7
|
+
|
8
|
+
'rbpad' has depended on Ruby/GTK3 and Ruby/GtkSourceView3.
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Install it yourself as:
|
13
|
+
|
14
|
+
$ gem install gtksourceview3
|
15
|
+
$ gem install rbpad
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
Type following.
|
20
|
+
|
21
|
+
$ rbpad # Japanese mode
|
22
|
+
|
23
|
+

|
24
|
+
|
25
|
+
|
26
|
+
With '-e' option, labels are shown as English.
|
27
|
+
|
28
|
+
$ rbpad -e # English mode
|
29
|
+
|
30
|
+

|
31
|
+
|
32
|
+
With '-x' option, run as maximum window size.
|
33
|
+
Or give 'width' and 'height' argument, can run as specified window size.
|
34
|
+
|
35
|
+
$ rbpad -x # maximum window size
|
36
|
+
$ rbpad 1000 800 # screen size is 1000 x 800
|
37
|
+
|
38
|
+
Default size is 800 x 650.
|
39
|
+
|
40
|
+
## Documents
|
41
|
+
|
42
|
+
[https://github.com/spoolkitamura/rbpad3-doc-jp/wiki](https://github.com/spoolkitamura/rbpad3-doc-jp/wiki) (Japanese)
|
43
|
+
[https://github.com/spoolkitamura/rbpad3-doc-en/wiki](https://github.com/spoolkitamura/rbpad3-doc-en/wiki) (English)
|
44
|
+
|
45
|
+
## License
|
46
|
+
|
47
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
48
|
+
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "rbpad"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/exe/rbpad
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
|
2
|
+
require 'gtk3'
|
3
|
+
require 'gtksourceview3'
|
4
|
+
|
5
|
+
|
6
|
+
module Rbpad
|
7
|
+
|
8
|
+
class BlockMatch
|
9
|
+
def initialize(textview, attr)
|
10
|
+
@textview = textview
|
11
|
+
@color = attr[:color] # attribute 'color' of Comment line
|
12
|
+
@bold = attr[:bold] # attribute 'bold' of Comment line
|
13
|
+
@italic = attr[:italic] # attribute 'italic' of Comment line
|
14
|
+
@match_tag = @textview.buffer.create_tag(nil, background_gdk: Gdk::Color.new(0xe0 * 0xff, 0xe0 * 0xff, 0xe0 * 0xff))
|
15
|
+
end
|
16
|
+
|
17
|
+
private def _indent_level(statement, iter)
|
18
|
+
return Float::INFINITY if statement =~ /\A\s*\z/ # indent levels of blank line is considered infinite
|
19
|
+
/\A(\s*)/ =~ statement
|
20
|
+
level = ($1 ? $1.length : 0) # indent level
|
21
|
+
if _comment?(iter, level)
|
22
|
+
return Float::INFINITY # indent levels of comment line is considered infinite
|
23
|
+
else
|
24
|
+
return level
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private def _start(text)
|
29
|
+
# must be beginning of line : if, unless, case, class, module, while, until, for
|
30
|
+
# not have to be beginning of line : begin, def, do
|
31
|
+
# (?:) : not capture in ()
|
32
|
+
pattern = /(?:\A(\s*)(?:if|unless|case|class|module|while|until|for)|(\A|\s+)(?:begin|def|do))(?:\z|\s+)/
|
33
|
+
|
34
|
+
pos = (pattern =~ text)
|
35
|
+
if pos
|
36
|
+
pos + ($1 ? $1.length : 0) + ($2 ? $2.length : 0) # position of keyword from beginning of line
|
37
|
+
else
|
38
|
+
nil
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
private def _end(text)
|
43
|
+
pattern = /(\A|\s+)(end)(\z|\s+)/
|
44
|
+
pos = (pattern =~ text)
|
45
|
+
if pos
|
46
|
+
pos + ($1 ? $1.length : 0) # position of keyword from beginning of line
|
47
|
+
else
|
48
|
+
nil
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
private def _comment?(iter, pos)
|
53
|
+
iter_check = iter.clone
|
54
|
+
iter_check.set_line_offset(pos)
|
55
|
+
iter_check.tags.each do |t|
|
56
|
+
tag_color = t.foreground_gdk.to_s.downcase
|
57
|
+
tag_color = tag_color[0..2] + tag_color[5..6] + tag_color[9..10] # #rrrrggggbbbb to #rrggbb
|
58
|
+
tag_bold = (t.weight == 700)
|
59
|
+
tag_italic = (t.style == :italic)
|
60
|
+
#puts "#{tag_color} #{@color} #{tag_bold} #{tag_italic}"
|
61
|
+
|
62
|
+
return true if (tag_color == @color and
|
63
|
+
tag_bold == @bold and
|
64
|
+
tag_italic == @italic) # #rrggbb
|
65
|
+
end
|
66
|
+
false
|
67
|
+
end
|
68
|
+
|
69
|
+
def status
|
70
|
+
puts @color
|
71
|
+
puts @bold
|
72
|
+
puts @italic
|
73
|
+
end
|
74
|
+
|
75
|
+
def scan
|
76
|
+
# ignore the multi statement line
|
77
|
+
mark = @textview.buffer.selection_bound # get the mark of cursor position
|
78
|
+
iter = @textview.buffer.get_iter_at(mark: mark)
|
79
|
+
|
80
|
+
iter_s = iter.clone
|
81
|
+
iter_s.set_line_offset(0) # beginning of cursor line
|
82
|
+
iter_e = iter.clone
|
83
|
+
iter_e.forward_lines(1) # end of cursor line
|
84
|
+
|
85
|
+
iter_s_block = nil
|
86
|
+
iter_e_block = nil
|
87
|
+
|
88
|
+
current_line = @textview.buffer.get_text(iter_s, iter_e, false)
|
89
|
+
|
90
|
+
if (pos = _start(current_line)) and ! _end(current_line)
|
91
|
+
iter_s_block = iter_s.clone
|
92
|
+
|
93
|
+
if ! _comment?(iter_s, pos)
|
94
|
+
current_level = _indent_level(current_line, iter_s)
|
95
|
+
begin
|
96
|
+
res_s = iter_s.forward_lines(1)
|
97
|
+
res_e = iter_e.forward_lines(1)
|
98
|
+
next_line = @textview.buffer.get_text(iter_s, iter_e, false)
|
99
|
+
next_level = _indent_level(next_line, iter_s)
|
100
|
+
#puts "#{current_level} #{next_level}"
|
101
|
+
if current_level == next_level and _end(next_line)
|
102
|
+
iter_e_block = iter_e.clone
|
103
|
+
break
|
104
|
+
end
|
105
|
+
end until current_level > next_level or res_e == false # indent unmatch or bottom of buffer
|
106
|
+
end
|
107
|
+
elsif (pos = _end(current_line)) and ! _start(current_line)
|
108
|
+
iter_e_block = iter_e.clone
|
109
|
+
if ! _comment?(iter_s, pos)
|
110
|
+
current_level = _indent_level(current_line, iter_s)
|
111
|
+
begin
|
112
|
+
res_s = iter_s.backward_lines(1)
|
113
|
+
res_e = iter_e.backward_lines(1)
|
114
|
+
prev_line = @textview.buffer.get_text(iter_s, iter_e, false)
|
115
|
+
prev_level = _indent_level(prev_line, iter_s)
|
116
|
+
if current_level == prev_level and _start(prev_line)
|
117
|
+
iter_s_block = iter_s.clone
|
118
|
+
break
|
119
|
+
end
|
120
|
+
end until current_level > prev_level or res_s == false # indent unmatch or top of buffer
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
@textview.buffer.remove_tag(@match_tag, @textview.buffer.start_iter, @textview.buffer.end_iter) # Clear @tag
|
125
|
+
if iter_s_block and iter_e_block
|
126
|
+
@textview.buffer.apply_tag(@match_tag, iter_s_block, iter_e_block) # fill
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
def clear
|
131
|
+
@textview.buffer.remove_tag(@match_tag, @textview.buffer.start_iter, @textview.buffer.end_iter) # Clear @tag
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
@@ -0,0 +1,166 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
|
3
|
+
<actions>
|
4
|
+
|
5
|
+
<menubar_action>
|
6
|
+
|
7
|
+
<!--
|
8
|
+
================================================================
|
9
|
+
ファイルメニュー
|
10
|
+
================================================================
|
11
|
+
-->
|
12
|
+
<branch id="file" desc_j="ファイル(_F)"
|
13
|
+
desc_e="File(_F)" />
|
14
|
+
|
15
|
+
<menuitem id="run" desc_j="プログラム実行"
|
16
|
+
desc_e="Run"
|
17
|
+
acckey="<___>R"
|
18
|
+
proc="Proc.new{ _exec }" />
|
19
|
+
|
20
|
+
<menuitem id="kill" desc_j="プログラム停止"
|
21
|
+
desc_e="Terminate"
|
22
|
+
acckey="<___>T"
|
23
|
+
proc="Proc.new{ _kill }" />
|
24
|
+
|
25
|
+
<menuitem id="info" desc_j="プロパティ"
|
26
|
+
desc_e="Property"
|
27
|
+
acckey="<___>I"
|
28
|
+
proc="Proc.new{ _info }" />
|
29
|
+
|
30
|
+
<menuitem id="new" desc_j="新規作成"
|
31
|
+
desc_e="New"
|
32
|
+
acckey="<___>N"
|
33
|
+
proc="Proc.new{ _new }" />
|
34
|
+
|
35
|
+
<menuitem id="open" desc_j="開く..."
|
36
|
+
desc_e="Open..."
|
37
|
+
acckey="<___>O"
|
38
|
+
proc="Proc.new{ _open }" />
|
39
|
+
|
40
|
+
<menuitem id="save" desc_j="上書き保存"
|
41
|
+
desc_e="Save"
|
42
|
+
acckey="<___>S"
|
43
|
+
proc="Proc.new{ _save }" />
|
44
|
+
|
45
|
+
<menuitem id="saveas" desc_j="別名で保存..."
|
46
|
+
desc_e="Save as..."
|
47
|
+
acckey="<shift><___>S"
|
48
|
+
proc="Proc.new{ _save_as }" />
|
49
|
+
|
50
|
+
<menuitem id="close" desc_j="閉じる"
|
51
|
+
desc_e="Close"
|
52
|
+
acckey="<___>W"
|
53
|
+
proc="Proc.new{ _close }" />
|
54
|
+
|
55
|
+
<menuitem id="exit" desc_j="終了"
|
56
|
+
desc_e="Exit"
|
57
|
+
acckey="<___>Q"
|
58
|
+
proc="Proc.new{ _close_page_all }" />
|
59
|
+
|
60
|
+
|
61
|
+
<!--
|
62
|
+
================================================================
|
63
|
+
編集メニュー
|
64
|
+
================================================================
|
65
|
+
-->
|
66
|
+
<branch id="edit" desc_j="編集(_E)"
|
67
|
+
desc_e="Edit(_E)" />
|
68
|
+
|
69
|
+
<menuitem id="undo" desc_j="元に戻す"
|
70
|
+
desc_e="Undo"
|
71
|
+
acckey="<___>Z"
|
72
|
+
proc="Proc.new{ _undo }" />
|
73
|
+
|
74
|
+
<menuitem id="redo" desc_j="やり直し"
|
75
|
+
desc_e="Redo"
|
76
|
+
acckey="<___>Y"
|
77
|
+
proc="Proc.new{ _redo }" />
|
78
|
+
|
79
|
+
<menuitem id="cut" desc_j="切り取り"
|
80
|
+
desc_e="Cut"
|
81
|
+
acckey="<___>X"
|
82
|
+
proc="Proc.new{ _cut }" />
|
83
|
+
|
84
|
+
<menuitem id="copy" desc_j="コピー"
|
85
|
+
desc_e="Copy"
|
86
|
+
acckey="<___>C"
|
87
|
+
proc="Proc.new{ _copy }" />
|
88
|
+
|
89
|
+
<menuitem id="paste" desc_j="貼り付け"
|
90
|
+
desc_e="Paste"
|
91
|
+
acckey="<___>V"
|
92
|
+
proc="Proc.new{ _paste }" />
|
93
|
+
|
94
|
+
<menuitem id="select_all" desc_j="すべて選択"
|
95
|
+
desc_e="Select all"
|
96
|
+
acckey="<___>A"
|
97
|
+
proc="Proc.new{ _select_all }" />
|
98
|
+
|
99
|
+
<menuitem id="clear" desc_j="実行結果クリア"
|
100
|
+
desc_e="Clear output"
|
101
|
+
acckey="<___>L"
|
102
|
+
proc="Proc.new{ _clear_output }" />
|
103
|
+
|
104
|
+
<!--
|
105
|
+
================================================================
|
106
|
+
オプションメニュー
|
107
|
+
================================================================
|
108
|
+
-->
|
109
|
+
<branch id="option" desc_j="オプション(_O)"
|
110
|
+
desc_e="Option(_O)" />
|
111
|
+
|
112
|
+
|
113
|
+
<!--
|
114
|
+
================================================================
|
115
|
+
テンプレートメニュー
|
116
|
+
================================================================
|
117
|
+
-->
|
118
|
+
<branch id="template" desc_j="テンプレート(_T)"
|
119
|
+
desc_e="Template(_T)" />
|
120
|
+
|
121
|
+
<!--
|
122
|
+
================================================================
|
123
|
+
ヘルプメニュー
|
124
|
+
================================================================
|
125
|
+
-->
|
126
|
+
<branch id="help" desc_j="ヘルプ(_H)"
|
127
|
+
desc_e="Help(_H)" />
|
128
|
+
|
129
|
+
<uri id="ref_ruby" desc_j="Rubyリファレンスマニュアル..."
|
130
|
+
desc_e="Ruby reference manual..."
|
131
|
+
acckey=""
|
132
|
+
proc_j="Proc.new{ _startcmd('https://docs.ruby-lang.org/ja') }"
|
133
|
+
proc_e="Proc.new{ _startcmd('https://docs.ruby-lang.org/en') }" />
|
134
|
+
|
135
|
+
<uri id="ref_gosu" desc_j="Gosuチュートリアル..."
|
136
|
+
desc_e="Gosu tutorial..."
|
137
|
+
acckey=""
|
138
|
+
proc_j="Proc.new{ _startcmd('https://gist.github.com/myokoym/7148859#file-gosu-ruby-tutorial-japanese-md') }"
|
139
|
+
proc_e="Proc.new{ _startcmd('https://github.com/gosu/gosu/wiki/ruby-tutorial') }" />
|
140
|
+
|
141
|
+
<uri id="ref_dxruby" desc_j="DXRubyリファレンス..."
|
142
|
+
desc_e="DXRuby reference (Japanese)..."
|
143
|
+
acckey=""
|
144
|
+
proc_j="Proc.new{ _startcmd('http://mirichi.github.io/dxruby-doc/index.html') }"
|
145
|
+
proc_e="Proc.new{ _startcmd('http://mirichi.github.io/dxruby-doc/index.html') }" />
|
146
|
+
|
147
|
+
<uri id="ref_nyle" desc_j="Nyleリファレンス..."
|
148
|
+
desc_e="Nyle reference..."
|
149
|
+
acckey=""
|
150
|
+
proc_j="Proc.new{ _startcmd('https://github.com/spoolkitamura/nyle-doc-jp/wiki') }"
|
151
|
+
proc_e="Proc.new{ _startcmd('https://github.com/spoolkitamura/nyle-doc-en/wiki') }" />
|
152
|
+
|
153
|
+
<uri id="ref_rbpad" desc_j="rbpadヘルプ..."
|
154
|
+
desc_e="rbpad help..."
|
155
|
+
acckey=""
|
156
|
+
proc_j="Proc.new{ _startcmd('https://github.com/spoolkitamura/rbpad3-doc-jp/wiki') }"
|
157
|
+
proc_e="Proc.new{ _startcmd('https://github.com/spoolkitamura/rbpad3-doc-en/wiki') }" />
|
158
|
+
|
159
|
+
<menuitem id="ruby_ver" desc_j="Rubyバージョン"
|
160
|
+
desc_e="Ruby version"
|
161
|
+
acckey=""
|
162
|
+
proc="Proc.new{ _ruby_ver }" />
|
163
|
+
|
164
|
+
</menubar_action>
|
165
|
+
|
166
|
+
</actions>
|
@@ -0,0 +1,126 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
|
3
|
+
<actions>
|
4
|
+
<menubar_action>
|
5
|
+
|
6
|
+
<template id="gosu1" desc_j="Gosuテンプレート (クラス)"
|
7
|
+
desc_e="Gosu Template (Class)"
|
8
|
+
acckey=""
|
9
|
+
valid="t">
|
10
|
+
require 'gosu'
|
11
|
+
|
12
|
+
class Screen < Gosu::Window
|
13
|
+
def initialize
|
14
|
+
super 640, 480, false
|
15
|
+
self.caption = 'Gosu'
|
16
|
+
end
|
17
|
+
|
18
|
+
def draw
|
19
|
+
end
|
20
|
+
|
21
|
+
def update
|
22
|
+
close if Gosu.button_down?(Gosu::KB_ESCAPE)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
screen = Screen.new
|
27
|
+
screen.show
|
28
|
+
|
29
|
+
</template>
|
30
|
+
|
31
|
+
<template id="dxruby1" desc_j="DXRubyテンプレート"
|
32
|
+
desc_e="DXRuby Template"
|
33
|
+
acckey=""
|
34
|
+
valid="t">
|
35
|
+
require 'dxruby'
|
36
|
+
|
37
|
+
Window.caption = 'DXRuby Application'
|
38
|
+
Window.width = 640
|
39
|
+
Window.height = 480
|
40
|
+
Window.bgcolor = C_BLACK
|
41
|
+
Window.x = 260
|
42
|
+
Window.y = 240
|
43
|
+
|
44
|
+
Window.loop do
|
45
|
+
break if Input.key_release?(K_ESCAPE)
|
46
|
+
end
|
47
|
+
|
48
|
+
</template>
|
49
|
+
|
50
|
+
<template id="dxruby2" desc_j="DXRubyテンプレート (クラス)"
|
51
|
+
desc_e="DXRuby Template (Class)"
|
52
|
+
acckey=""
|
53
|
+
valid="t">
|
54
|
+
require 'dxruby'
|
55
|
+
|
56
|
+
class Screen
|
57
|
+
def initialize
|
58
|
+
Window.caption = 'DXRuby Application'
|
59
|
+
Window.width = 640
|
60
|
+
Window.height = 480
|
61
|
+
Window.bgcolor = C_BLACK
|
62
|
+
Window.x = 260
|
63
|
+
Window.y = 240
|
64
|
+
end
|
65
|
+
|
66
|
+
def draw
|
67
|
+
Window.loop do
|
68
|
+
break if Input.key_release?(K_ESCAPE)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
screen = Screen.new
|
74
|
+
screen.draw
|
75
|
+
|
76
|
+
</template>
|
77
|
+
|
78
|
+
<template id="nyle1" desc_j="Nyleテンプレート"
|
79
|
+
desc_e="Nyle Template"
|
80
|
+
acckey=""
|
81
|
+
valid="t">
|
82
|
+
require 'nyle'
|
83
|
+
|
84
|
+
screen = Nyle.create_screen(640, 480, {bgcolor: :BLACK})
|
85
|
+
|
86
|
+
def screen.setup
|
87
|
+
end
|
88
|
+
|
89
|
+
def screen.draw
|
90
|
+
end
|
91
|
+
|
92
|
+
def screen.update
|
93
|
+
Nyle.quit if Nyle.key_release?(:ESCAPE)
|
94
|
+
end
|
95
|
+
|
96
|
+
screen.start
|
97
|
+
|
98
|
+
</template>
|
99
|
+
|
100
|
+
<template id="nyle2" desc_j="Nyleテンプレート (クラス)"
|
101
|
+
desc_e="Nyle Template (Class)"
|
102
|
+
acckey=""
|
103
|
+
valid="t">
|
104
|
+
require 'nyle'
|
105
|
+
|
106
|
+
class Screen < Nyle::Screen
|
107
|
+
def initialize
|
108
|
+
super(640, 480, {bgcolor: :BLACK})
|
109
|
+
end
|
110
|
+
|
111
|
+
def draw
|
112
|
+
end
|
113
|
+
|
114
|
+
def update
|
115
|
+
Nyle.quit if Nyle.key_release?(:ESCAPE)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
screen = Screen.new
|
120
|
+
screen.show_all
|
121
|
+
Nyle.main
|
122
|
+
|
123
|
+
</template>
|
124
|
+
|
125
|
+
</menubar_action>
|
126
|
+
</actions>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<?xml version='1.0'?>
|
2
|
+
|
3
|
+
<actions>
|
4
|
+
<toggle_action>
|
5
|
+
<checkitem id='drawspaces' value='true'>
|
6
|
+
<acckey><___>U</acckey>
|
7
|
+
<desc_j>空白文字の表示</desc_j>
|
8
|
+
<desc_e>Show spaces</desc_e>
|
9
|
+
<proc>Proc.new{ |ag, action| _drawspaces(ag, action)}</proc>
|
10
|
+
<stockid>''</stockid>
|
11
|
+
</checkitem>
|
12
|
+
<checkitem id='blockmatch' value='true'>
|
13
|
+
<acckey><___>B</acckey>
|
14
|
+
<desc_j>endブロック範囲の表示</desc_j>
|
15
|
+
<desc_e>Show end-blocks</desc_e>
|
16
|
+
<proc>Proc.new{ |ag, action| _blockmatch(ag, action)}</proc>
|
17
|
+
<stockid>''</stockid>
|
18
|
+
</checkitem>
|
19
|
+
<checkitem id='errorjp' value='true'>
|
20
|
+
<acckey><___>J</acckey>
|
21
|
+
<desc_j>日本語エラーメッセージの補助出力</desc_j>
|
22
|
+
<desc_e>''</desc_e>
|
23
|
+
<proc>Proc.new{ }</proc>
|
24
|
+
<stockid>''</stockid>
|
25
|
+
</checkitem>
|
26
|
+
</toggle_action>
|
27
|
+
</actions>
|