Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
5分で学ぶGTK+
Search
Masafumi Yokoyama
March 16, 2014
Technology
0
45
5分で学ぶGTK+
デスクトップアプリケーションを作る会@札幌 2014-03-16の資料です。
Masafumi Yokoyama
March 16, 2014
Tweet
Share
More Decks by Masafumi Yokoyama
See All by Masafumi Yokoyama
Rabbit on Sinatra
myokoym
0
82
文字コード略歴
myokoym
1
240
Other Decks in Technology
See All in Technology
SREの組織類型に応じた リーダシップの考察
kenta_hi
PRO
1
640
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
630
OCI Data Integration技術情報 / ocidi_technical_jp
oracle4engineer
PRO
1
2.6k
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
1
160
地理情報データをデータベースに格納しよう~ GPUを活用した爆速データベース PG-Stromの紹介 ~
sakaik
1
130
QAEチームが辿った3年 ボクらが改善業務にスクラムを選んだワケ / 20241108_cloudsign_ques23
bengo4com
0
1.3k
2024年グライダー曲技世界選手権参加報告/2024 WGAC report
jscseminar
0
300
20241108_CS_LLMMT
shigashiyama
0
260
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
データの信頼性を支える仕組みと技術
chanyou0311
6
1.7k
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
210
Going down the RAT hole: Deep dive into the Vuln-derland of APT-class RAT Tools
nttcom
0
320
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Faster Mobile Websites
deanohume
305
30k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
7
570
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Optimizing for Happiness
mojombo
376
70k
GitHub's CSS Performance
jonrohan
1030
460k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Transcript
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 5分で学ぶGTK+ Ruby/GTK2のサンプルもあるよ! @myokoym
Ruby-GNOME2 Project Team デスクトップアプリケーションを作る会 2014/03/16
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 はじめに ハンズオンだと思う者には ハンズオンであり、もくもく
会だと思う者にはもくもく会 である
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 もくもく会だと思う⼈ もくもくしてください 相談などはいつでもどうぞ
:-) ✓ ✓
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 ハンズオンだと思う⼈ スライドにサンプルコードを映 すので、参考にしながら進めて
ください ✓
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 ここでアンケートです
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 Q.1 Ruby(1.9.3以降)はインストー ル済みですか?
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 Noの⽅ 個別に対応します ✓
2014年3⽉16⽇現在、Ruby/GTK2はWindows用のRuby x64版では動かないため、x86版をインストールしてくださ い
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 Q.2 Ruby/GTK2はインストール済み ですか?
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 Noの⽅ Ruby 1.9.3
or 2.0.0 or 2.1.x $ gem install gtk2 ✓ Ruby 2.2.0-dev $ git clone https://github.com/ruby-gnome2/ruby-gnome2 $ cd ruby-gnome2 $ rake gem:install ✓
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 インストールを待つ間に GTK+ の紹介をします
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 GTK+ とは GUIツールキット
オープンソース ✓ マルチプラットフォーム ✓ ⾊々な⾔語から使える ✓ ✓
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 用語 ウィジェット ✓
イベント(シグナル) ✓ メインループ ✓
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 ウィジェット GUIを構成する部品 ウィンドウ
✓ ボタン ✓ など ✓ ✓
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 イベント(シグナル) ユーザーの操作で発⽣ ウィンドウを閉じる
✓ ボタンをクリックする ✓ など ✓ ✓
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 メインループ イベントを待つ 1.
イベントに応じて処理を⾏う 2. 1に戻る 3.
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 座学は以上ですが、そろそろ インストールできましたか?
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 では、実際に⼿を動かして Ruby/GTK2を使ったデスク トップアプリケーションを作
成していきます
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 サンプルコード全⽂ https://gist.github.com/myokoym/9489619
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 Hello, GUI! require
"gtk2" window = Gtk::Window.new window.signal_connect("destroy") do Gtk.main_quit end window.show_all Gtk.main
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 Hello, GUI! require
"gtk2" #Ruby/GTK2を使う準備 # ウィンドウ・ウィジェットのオブジェクトを作成 window = Gtk::Window.new # ウィンドウが閉じられたら処理が実行される window.signal_connect("destroy") do Gtk.main_quit #メインループ終了 end window.show_all #ウィジェットを画面に表示 Gtk.main #メインループ開始
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 実⾏ $ ruby
hello_gui.rb
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 タイトルを設定 window =
Gtk::Window.new # ウィンドウのtitleプロパティに設定 window.title = "Image Viewer sample" window.signal_connect("destroy") do Gtk.main_quit end
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 画像を表⽰ window.signal_connect("destroy") do
Gtk.main_quit end path = ARGV[0] image = Gtk::Image.new image.pixbuf = Gdk::Pixbuf.new(path) window.add(image) #ウィンドウに画像を追加
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 実⾏ $ ruby
image-viewer.rb ファイル名
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 画像を2枚以上並べる hbox =
Gtk::HBox.new(false, 8) hbox.border_width = 8 window.add(hbox) ARGV.each do |path| image = Gtk::Image.new image.pixbuf = Gdk::Pixbuf.new(path) hbox.add(image) end
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 実⾏ $ ruby
image-viewer.rb ファイル名 ファイル名
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 ワイルドカードを許容 ARGV.each do
|path_or_wildcard| Dir.glob(path_or_wildcard) do |path| image = Gtk::Image.new image.pixbuf = Gdk::Pixbuf.new(path) hbox.add(image) end end
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 実⾏ $ ruby
image-viewer.rb ディレクトリ名/*.png
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 画像以外をスキップ begin pixbuf
= Gdk::Pixbuf.new(path) rescue GLib::FileError, Gdk::PixbufError $stderr.puts($!.message) next end image = Gtk::Image.new image.pixbuf = pixbuf hbox.add(image)
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 実⾏ $ ruby
image-viewer.rb ディレクトリ名/*
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 デフォルトサイズを設定 window =
Gtk::Window.new window.title = "Image Viewer sample" window.set_default_size(640, 480) window.signal_connect("destroy") do Gtk.main_quit end
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 スクロールバーを追加 scrolled_window =
Gtk::ScrolledWindow.new window.add(scrolled_window) hbox = Gtk::HBox.new(false, 8) hbox.border_width = 8 scrolled_window.add_with_viewport(hbox)
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 スクロール不要時は消す scrolled_window =
Gtk::ScrolledWindow.new scrolled_window.set_policy(:automatic, :automatic) window.add(scrolled_window) hbox = Gtk::HBox.new(false, 8) hbox.border_width = 8 scrolled_window.add_with_viewport(hbox)
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 右クリックメニューの準備 scrolled_window.add_with_viewport(hbox) menu
= Gtk::Menu.new menu_item = Gtk::ImageMenuItem.new(Gtk::Stock::DELETE) menu_item.signal_connect("activate") do hbox.remove(menu.attach_widget) end menu.append(menu_item) menu.show_all
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 右クリックで削除機能 event_box.signal_connect("button-press-event") do
|widget, event| if event.kind_of?(Gdk::EventButton) and event.button == 3 menu.attach_widget = widget menu.popup(nil, nil, event.button, event.time) end end hbox.add(event_box) image = Gtk::Image.new image.pixbuf = pixbuf event_box.add(image)
5分で学ぶGTK+ - Ruby/GTK2のサンプルもあるよ! Powered by Rabbit 2.1.2 参考リンク Ruby/GTK2 チュートリアル
http://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?gtk2-tut Ruby/GTK2 sample https://github.com/ruby-gnome2/ruby-gnome2/tree/ master/gtk2/sample Ruby/GTK3 sample https://github.com/ruby-gnome2/ruby-gnome2/tree/ master/gtk3/sample