rabbit-slide-myokoym-sapporogui1403 2014.3.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: acfdc02541ca938bfe22f0ea6604307f5c691e8f
4
+ data.tar.gz: a0449446e728da65d30447369f636dda1f2ca51c
5
+ SHA512:
6
+ metadata.gz: 2be7287a187ffedc7582ff1ee96b9053048dd529d25c7f900d4b7d80560c406f000231f5a7d59fa085fc92969093a4a5842cdbd19bb23c8caf0e035364445b23
7
+ data.tar.gz: 5c9baee826a965d8fdc6add370a5bd4cd0c97295f6468efcf01d2a712571753516fcd214315b693fd070bc24bc4b54aff7c850e489f7832329571b63411cb44d
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ gtk-entrance.rab
data/README.rd ADDED
@@ -0,0 +1,22 @@
1
+ = 5分で学ぶGTK+
2
+
3
+ == 作者向け
4
+
5
+ === 表示
6
+
7
+ rake
8
+
9
+ === 公開
10
+
11
+ rake publish
12
+
13
+ == 閲覧者向け
14
+
15
+ === インストール
16
+
17
+ gem install rabbit-slide-myokoym-sapporogui1403
18
+
19
+ === 表示
20
+
21
+ rabbit rabbit-slide-myokoym-sapporogui1403.gem
22
+
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # task.spec.files += Dir.glob("doc/**/*.*")
9
+ # task.spec.files -= Dir.glob("private/**/*.*")
10
+ # task.spec.add_runtime_dependency("YOUR THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
data/config.yaml ADDED
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: sapporogui1403
3
+ base_name: gtk-entrance
4
+ tags:
5
+ - gtk+
6
+ - ruby-gnome2
7
+ presentation_date: 2014/03/16
8
+ version: 2014.3.16.0
9
+ licenses:
10
+ - CC BY 3.0
11
+ slideshare_id:
12
+ speaker_deck_id:
13
+ ustream_id:
14
+ vimeo_id:
15
+ youtube_id:
16
+ author:
17
+ markup_language: :rd
18
+ name: Masafumi Yokoyama
19
+ email: myokoym@gmail.com
20
+ rubygems_user: myokoym
21
+ slideshare_user: myokoym
22
+ speaker_deck_user: myokoym
data/gtk-entrance.rab ADDED
@@ -0,0 +1,319 @@
1
+ = 5分で学ぶGTK+
2
+
3
+ : subtitle
4
+ Ruby/GTK2のサンプルもあるよ!
5
+ : author
6
+ @myokoym
7
+ : institution
8
+ Ruby-GNOME2 Project Team
9
+ : content-source
10
+ デスクトップアプリケーションを作る会
11
+ : date
12
+ 2014/03/16
13
+ : allotted-time
14
+ 10m
15
+ : theme
16
+ lightning-clear-blue
17
+
18
+ = はじめに
19
+
20
+ # blockquote
21
+ ハンズオンだと思う者にはハンズオンであり、
22
+ もくもく会だと思う者にはもくもく会である
23
+
24
+ = もくもく会だと思う人
25
+
26
+ * もくもくしてください
27
+ * 相談などはいつでもどうぞ :-)
28
+
29
+ = ハンズオンだと思う人
30
+
31
+ * スライドにサンプルコードを映すので、参考にしながら進めてください
32
+
33
+ = ここでアンケートです
34
+
35
+ == property
36
+
37
+ : as_large_as_possible
38
+ false
39
+
40
+ = Q.1
41
+
42
+ Ruby(1.9.3以降)はインストール済みですか?
43
+
44
+ = Noの方
45
+
46
+ * 個別に対応します
47
+
48
+ (('note:2014年3月16日現在、Ruby/GTK2はWindows用のRuby x64版では動かないため、x86版をインストールしてください'))
49
+
50
+ = Q.2
51
+
52
+ Ruby/GTK2はインストール済みですか?
53
+
54
+ = Noの方
55
+
56
+ * Ruby 1.9.3 or 2.0.0 or 2.1.x
57
+
58
+ $ gem install gtk2
59
+
60
+ * Ruby 2.2.0-dev
61
+
62
+ $ git clone https://github.com/ruby-gnome2/ruby-gnome2
63
+ $ cd ruby-gnome2
64
+ $ rake gem:install
65
+
66
+ = インストールを待つ間にGTK+ の紹介をします
67
+
68
+ == property
69
+
70
+ : as_large_as_possible
71
+ false
72
+
73
+ = GTK+ とは
74
+
75
+ * GUIツールキット
76
+ * オープンソース
77
+ * マルチプラットフォーム
78
+ * 色々な言語から使える
79
+
80
+ = 用語
81
+
82
+ * ウィジェット
83
+ * イベント(シグナル)
84
+ * メインループ
85
+
86
+ = ウィジェット
87
+
88
+ * GUIを構成する部品
89
+ * ウィンドウ
90
+ * ボタン
91
+ * など
92
+
93
+ = イベント(シグナル)
94
+
95
+ * ユーザーの操作で発生
96
+ * ウィンドウを閉じる
97
+ * ボタンをクリックする
98
+ * など
99
+
100
+ = メインループ
101
+
102
+ (1) イベントを待つ
103
+ (1) イベントに応じて処理を行う
104
+ (1) 1に戻る
105
+
106
+ = 座学は以上ですが、そろそろインストールできましたか?
107
+
108
+ == property
109
+
110
+ : as_large_as_possible
111
+ false
112
+
113
+ = では、実際に手を動かしてRuby/GTK2を使ったデスクトップアプリケーションを作成していきます
114
+
115
+ == property
116
+
117
+ : as_large_as_possible
118
+ false
119
+
120
+ = サンプルコード全文
121
+
122
+ (('note:https://gist.github.com/myokoym/9489619'))
123
+
124
+ = Hello, GUI!
125
+
126
+ # coderay ruby
127
+ require "gtk2"
128
+
129
+ window = Gtk::Window.new
130
+
131
+ window.signal_connect("destroy") do
132
+ Gtk.main_quit
133
+ end
134
+
135
+ window.show_all
136
+
137
+ Gtk.main
138
+
139
+ = Hello, GUI!
140
+
141
+ # coderay ruby
142
+ require "gtk2" #Ruby/GTK2を使う準備
143
+
144
+ # ウィンドウ・ウィジェットのオブジェクトを作成
145
+ window = Gtk::Window.new
146
+
147
+ # ウィンドウが閉じられたら処理が実行される
148
+ window.signal_connect("destroy") do
149
+ Gtk.main_quit #メインループ終了
150
+ end
151
+
152
+ window.show_all #ウィジェットを画面に表示
153
+
154
+ Gtk.main #メインループ開始
155
+
156
+ = 実行
157
+
158
+ $ ruby hello_gui.rb
159
+
160
+ = タイトルを設定
161
+
162
+ # coderay ruby
163
+
164
+ window = Gtk::Window.new
165
+
166
+ # ウィンドウのtitleプロパティに設定
167
+ window.title = "Image Viewer sample"
168
+
169
+ window.signal_connect("destroy") do
170
+ Gtk.main_quit
171
+ end
172
+
173
+ = 画像を表示
174
+
175
+ # coderay ruby
176
+ window.signal_connect("destroy") do
177
+ Gtk.main_quit
178
+ end
179
+
180
+ path = ARGV[0]
181
+
182
+ image = Gtk::Image.new
183
+ image.pixbuf = Gdk::Pixbuf.new(path)
184
+ window.add(image) #ウィンドウに画像を追加
185
+
186
+ = 実行
187
+
188
+ $ ruby image-viewer.rb ファイル名
189
+
190
+ = 画像を2枚以上並べる
191
+
192
+ # coderay ruby
193
+
194
+ hbox = Gtk::HBox.new(false, 8)
195
+ hbox.border_width = 8
196
+ window.add(hbox)
197
+
198
+ ARGV.each do |path|
199
+ image = Gtk::Image.new
200
+ image.pixbuf = Gdk::Pixbuf.new(path)
201
+ hbox.add(image)
202
+ end
203
+
204
+ = 実行
205
+
206
+ $ ruby image-viewer.rb ファイル名 ファイル名
207
+
208
+ = ワイルドカードを許容
209
+
210
+ # coderay ruby
211
+ ARGV.each do |path_or_wildcard|
212
+ Dir.glob(path_or_wildcard) do |path|
213
+ image = Gtk::Image.new
214
+ image.pixbuf = Gdk::Pixbuf.new(path)
215
+ hbox.add(image)
216
+ end
217
+ end
218
+
219
+ = 実行
220
+
221
+ $ ruby image-viewer.rb ディレクトリ名/*.png
222
+
223
+ = 画像以外をスキップ
224
+
225
+ # coderay ruby
226
+ begin
227
+ pixbuf = Gdk::Pixbuf.new(path)
228
+ rescue GLib::FileError, Gdk::PixbufError
229
+ $stderr.puts($!.message)
230
+ next
231
+ end
232
+
233
+ image = Gtk::Image.new
234
+ image.pixbuf = pixbuf
235
+ hbox.add(image)
236
+
237
+ = 実行
238
+
239
+ $ ruby image-viewer.rb ディレクトリ名/*
240
+
241
+ = デフォルトサイズを設定
242
+
243
+ # coderay ruby
244
+
245
+ window = Gtk::Window.new
246
+
247
+ window.title = "Image Viewer sample"
248
+
249
+ window.set_default_size(640, 480)
250
+
251
+ window.signal_connect("destroy") do
252
+ Gtk.main_quit
253
+ end
254
+
255
+ = スクロールバーを追加
256
+
257
+ # coderay ruby
258
+
259
+ scrolled_window = Gtk::ScrolledWindow.new
260
+ window.add(scrolled_window)
261
+
262
+ hbox = Gtk::HBox.new(false, 8)
263
+ hbox.border_width = 8
264
+ scrolled_window.add_with_viewport(hbox)
265
+
266
+ = スクロール不要時は消す
267
+
268
+ # coderay ruby
269
+
270
+ scrolled_window = Gtk::ScrolledWindow.new
271
+ scrolled_window.set_policy(:automatic,
272
+ :automatic)
273
+ window.add(scrolled_window)
274
+
275
+ hbox = Gtk::HBox.new(false, 8)
276
+ hbox.border_width = 8
277
+ scrolled_window.add_with_viewport(hbox)
278
+
279
+ = 右クリックメニューの準備
280
+
281
+ # coderay ruby
282
+ hbox = Gtk::HBox.new(false, 8)
283
+ hbox.border_width = 8
284
+ scrolled_window.add_with_viewport(hbox)
285
+
286
+ menu = Gtk::Menu.new
287
+ menu_item = Gtk::ImageMenuItem.new(Gtk::Stock::DELETE)
288
+ menu_item.signal_connect("activate") do
289
+ hbox.remove(menu.attach_widget)
290
+ end
291
+ menu.append(menu_item)
292
+ menu.show_all
293
+
294
+ = 右クリックで削除機能
295
+
296
+ # coderay ruby
297
+ event_box = Gtk::EventBox.new
298
+ event_box.signal_connect("button-press-event") do |widget, event|
299
+ if event.kind_of?(Gdk::EventButton) and event.button == 3
300
+ menu.attach_widget = widget
301
+ menu.popup(nil, nil, event.button, event.time)
302
+ end
303
+ end
304
+ hbox.add(event_box)
305
+
306
+ image = Gtk::Image.new
307
+ image.pixbuf = pixbuf
308
+ event_box.add(image)
309
+
310
+ = 参考リンク
311
+
312
+ Ruby/GTK2 チュートリアル\n
313
+ (('note:http://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?gtk2-tut'))
314
+
315
+ Ruby/GTK2 sample\n
316
+ (('note:https://github.com/ruby-gnome2/ruby-gnome2/tree/master/gtk2/sample'))
317
+
318
+ Ruby/GTK3 sample\n
319
+ (('note:https://github.com/ruby-gnome2/ruby-gnome2/tree/master/gtk3/sample'))
Binary file
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-myokoym-sapporogui1403
3
+ version: !ruby/object:Gem::Version
4
+ version: 2014.3.16.0
5
+ platform: ruby
6
+ authors:
7
+ - Masafumi Yokoyama
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-03-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ description: ''
28
+ email:
29
+ - myokoym@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rabbit"
35
+ - README.rd
36
+ - Rakefile
37
+ - config.yaml
38
+ - gtk-entrance.rab
39
+ - pdf/sapporogui1403-gtk-entrance.pdf
40
+ homepage: http://slide.rabbit-shocker.org/authors/myokoym/sapporogui1403/
41
+ licenses:
42
+ - CC BY 3.0
43
+ metadata: {}
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubyforge_project:
60
+ rubygems_version: 2.2.2
61
+ signing_key:
62
+ specification_version: 4
63
+ summary: 5分で学ぶGTK+
64
+ test_files: []