[ruby-gnome2-doc-cvs] [Hiki] update - ハンドルボックス

アーカイブの一覧に戻る

ruby-****@lists***** ruby-****@lists*****
2003年 5月 26日 (月) 22:52:18 JST


-------------------------
REMOTE_ADDR = 210.249.193.205
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/?%A5%CF%A5%F3%A5%C9%A5%EB%A5%DC%A5%C3%A5%AF%A5%B9
-------------------------

-------------------------
= Gtk::HandleBox
((*まだRuby/GTK(1)向けです*))

最近、メニューバーやツールバーをマウスのドラッグで取り外しできるようになっているツールが増えてきました。Ruby/GTKではGtk::HandleBoxを使うとこのようなGUIを実現できます。
もちろん、Gtk::HandleBoxはメニューバーやツールバー以外のウィジェットでも使えます。

== 基本的な使い方
メニューバーを取り外し可能にしてみます。

  require 'gtk'
  
  window = Gtk::Window.new
  window.set_usize(300, 300)
  
  accel = Gtk::AccelGroup.new
  accel.attach(window)
  callback = Proc.new{|i| print "#{i} is activated.\n"}
  quit = Proc.new{ Gtk.main_quit }

  ifp = Gtk::ItemFactory.new(Gtk::ItemFactory::TYPE_MENU_BAR, "<main>", accel)
  ifp.create_items(
  [["/ファイル(_F)",            nil,          Gtk::ItemFactory::BRANCH,     nil,      nil],
   ["/ファイル(_F)/Tearoff1",   nil,          Gtk::ItemFactory::TEAROFF,    nil,       nil],
   ["/ファイル(_F)/新規作成(_N)", "<control>N", Gtk::ItemFactory::ITEM,       callback,  1],
   ["/ファイル(_F)/セパレータ",   nil,          Gtk::ItemFactory::SEPARATOR,   nil,     nil],
   ["/ファイル(_F)/終了(_Q)",    "<control>Q", nil,                           quit,     nil],
   ["/ヘルプ(_H)",              nil,          Gtk::ItemFactory::LAST_BRANCH, nil,     nil],
   ["/ヘルプ(_H)/_About",       nil,          nil,                           nil,     nil]])
  
  menubar = ifp.get_widget("<main>") 
  
  vbox = Gtk::VBox.new
  
  handlebox = Gtk::HandleBox.new
  handlebox.add(menubar)
  
  vbox.pack_start(handlebox, false, false, 0)
  vbox.pack_start(Gtk::Label.new("test"), true, true, 0)
  window.add(vbox)
  window.show_all
  
  Gtk.main
  
== 各種プロパティの指定
Gtk::HandleBoxのプロパティを指定してみます。ただし、GUIの使いやすさの観点から言うと、特別な理由がない限りデフォルトのままの方が良いでしょう。

  require 'gtk'
  
  window = Gtk::Window.new
  window.set_usize(300, 300)
  
  accel = Gtk::AccelGroup.new
  accel.attach(window)
  callback = Proc.new{|i| print "#{i} is activated.\n"}
  quit = Proc.new{ Gtk.main_quit }

  ifp = Gtk::ItemFactory.new(Gtk::ItemFactory::TYPE_MENU_BAR, "<main>", accel)
  ifp.create_items(
  [["/ファイル(_F)",            nil,          Gtk::ItemFactory::BRANCH,     nil,      nil],
   ["/ファイル(_F)/Tearoff1",   nil,          Gtk::ItemFactory::TEAROFF,    nil,       nil],
   ["/ファイル(_F)/新規作成(_N)", "<control>N", Gtk::ItemFactory::ITEM,       callback,  1],
   ["/ファイル(_F)/セパレータ",   nil,          Gtk::ItemFactory::SEPARATOR,   nil,     nil],
   ["/ファイル(_F)/終了(_Q)",    "<control>Q", nil,                           quit,     nil],
   ["/ヘルプ(_H)",              nil,          Gtk::ItemFactory::LAST_BRANCH, nil,     nil],
   ["/ヘルプ(_H)/_About",       nil,          nil,                           nil,     nil]])
  
  menubar = ifp.get_widget("<main>") 
  
  vbox = Gtk::VBox.new

  handlebox = Gtk::HandleBox.new
  handlebox.add(menubar)
  handlebox.set_shadow_type(Gtk::SHADOW_IN)
  handlebox.set_handle_position(Gtk::POS_RIGHT)
  handlebox.set_snap_edge(Gtk::POS_TOP)
  
  vbox.pack_start(handlebox, false, false, 0)
  vbox.pack_start(Gtk::Label.new("test"), true, true, 0)
  window.add(vbox)
  window.show_all
  
  Gtk.main

Gtk::HandleBox#set_shadow_type(shadow_type)はGtk::HandleBoxの周囲に描かれる陰の部分(ボーダー)の種類を指定.....するんだそうですが、イマイチ違いがよくわかりません。GTKのテーマとかによるのかなぁ。まぁ、あまり使うこともないから追うのはやめときます(^^;)。shadow_typeには以下の定数を指定します。
  
* Gtk::SHADOW_NONE - ボーダーなし
* Gtk::SHADOW_IN - 彫り込みボーダー
* Gtk::SHADOW_OUT - ボタンのような浮き彫りボーダー
* Gtk::SHADOW_ETCHED_IN - 浮き彫りエッチングボーダー
* Gtk::SHADOW_ETCHED_OUT - 彫り込みエッチングボーダー
  
Gtk::HandleBox#set_handle_position(position)はハンドル(この上でマウスをドラッグするとGtk::HandleBoxを取り外すことができる)部分の位置を指定します。positionには以下の定数を指定します。
  
* Gtk::POS_LEFT - 左側(デフォルト)
* Gtk::POS_RIGHT - 右側
* Gtk::POS_TOP - 上側
* Gtk::POS_BOTTOM - 下側
  
Gtk::HandleBox#set_snap_edge(position)は一度取り外したGtk::HandleBoxを再度取り付ける(reattach)場合、元の位置(面)のどこに取り外したGtk::HandleBoxを合わせると元に戻るのか、その面を指定します....。って意味わかります?(^^;)。positionには以下の定数を指定します。
  
* Gtk::POS_LEFT - 左側(デフォルト)
* Gtk::POS_RIGHT - 右側
* Gtk::POS_TOP - 上側
* Gtk::POS_BOTTOM - 下側




ruby-gnome2-cvs メーリングリストの案内
アーカイブの一覧に戻る