« wxRuby関連リンク | トップページ | Hello Worldをつくる2 »

2009年4月19日 (日)

Hello Worldをつくる1

定番のHello Worldをつくってみます。

wxFormBuilderを起動してwxFormBuilderの使い方で説明した設定をします。これだけだと味気ないので、今度はパネルを追加して文字を表示させてみます。

まずはPanelの追加。その前にレイアウトを決めるSizerというモノを追加しなければ行けません。いきなりPanelを追加しようとしてもできません。ということでLayout-->wxBoxSizerを追加。

01_2

左側のツリーにSizerのアイコンが追加されてFrameの内側が赤線で光っている状態になりました。これでSizerを追加できました。続いてContains-->wxPanelを追加。

02

パネルが表示されました。ココに文字を貼り付けるには、wxStaticTextを追加します。だけどその前にレイアウトを決めないといけないので、パネルの上に同じくSizerを追加します。手順は同じです。そして、タブよりCommon-->wxStaticTextをクリック。右側のプロパティでlabelの値をHello Worldと入力します。ついでに中央に表示させてみます。同じくプロパティよりflag-->wxALIGN_CENTER_HORIZONTALをチェックしておきます。

04

05

これで完成です。XRCファイルを出力しましょう。ファイルの中身はこんな感じです。

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  2. <resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">
  3.   <object class="wxFrame" name="MyFrame1" subclass="Test1">
  4.     <style>wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL</style>
  5.     <size>500,300</size>
  6.     <title></title>
  7.     <object class="wxPanel" name="m_panel1">
  8.       <style>wxTAB_TRAVERSAL</style>
  9.       <object class="wxBoxSizer">
  10.         <orient>wxVERTICAL</orient>
  11.         <object class="sizeritem">
  12.           <option>0</option>
  13.           <flag>wxALIGN_CENTER_HORIZONTAL|wxALL</flag>
  14.           <border>5</border>
  15.           <object class="wxStaticText" name="m_staticText2">
  16.             <label>Hello World</label>
  17.           </object>
  18.         </object>
  19.       </object>
  20.     </object>
  21.   </object>
  22. </resource>
  23.  

これをxrciseでコンバートします。

$ xrcise -a App1 -o HelloWorld1.rbw noname.xrc

rubyのソースコードがこんな感じに変換されます。rubygemsの追加を忘れずに。

  1.  
  2. require 'rubygems'
  3. require 'wx'
  4.  
  5. # This class was automatically generated from XRC source. It is not
  6. # recommended that this file is edited directly; instead, inherit from
  7. # this class and extend its behaviour there. 
  8. #
  9. # Source file: noname.xrc
  10. # Generated at: Sun Apr 19 11:52:55 &#26481;&#20140; (&#27161;&#28310;&#26178;) 2009
  11.  
  12. class Test1 < Wx::Frame
  13.  
  14.   attr_reader :m_panel1, :m_statictext2
  15.  
  16.   def initialize(parent = nil)
  17.     super()
  18.     xml = Wx::XmlResource.get
  19.     xml.flags = 2 # Wx::XRC_NO_SUBCLASSING
  20.     xml.init_all_handlers
  21.     xml.load("noname.xrc")
  22.     xml.load_frame_subclass(self, parent, "MyFrame1")
  23.  
  24.     finder = lambda do | x |
  25.       int_id = Wx::xrcid(x)
  26.       begin
  27.         Wx::Window.find_window_by_id(int_id, self) || int_id
  28.       # Temporary hack to work around regression in 1.9.2; remove
  29.       # begin/rescue clause in later versions
  30.       rescue RuntimeError
  31.         int_id
  32.       end
  33.     end
  34.  
  35.     @m_panel1 = finder.call("m_panel1")
  36.     @m_statictext2 = finder.call("m_staticText2")
  37.     if self.class.method_defined? "on_init"
  38.       self.on_init()
  39.     end
  40.   end
  41. end
  42.  
  43.  
  44. class App1 < Wx::App
  45.   def on_init
  46.     f =  ::Test1.new
  47.     f.show
  48.   end
  49. end
  50. App1.new.main_loop
  51.  
  52.  

では実行してみましょう。こんなかんじで画面が表示されればOKです。

06

|

« wxRuby関連リンク | トップページ | Hello Worldをつくる2 »

Hello Worldをつくる」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1201593/29188213

この記事へのトラックバック一覧です: Hello Worldをつくる1:

« wxRuby関連リンク | トップページ | Hello Worldをつくる2 »