Changeset 28839

Show
Ignore:
Timestamp:
01/22/09 13:32:21 (6 years ago)
Author:
isaisstillalive
Message:
  • CheckBoxに、チェック状態を取得/設定するメソッドを追加。3STATEの場合はnilが中間となる。通常の場合はnilとfalseは等しい。
Location:
lang/ruby/ruwin
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/ruwin/lib/ruwin/check_box.rb

    r28834 r28839  
    1919      end 
    2020    end 
     21     
     22    CHECKSTATE = { 
     23      true  => BST_CHECKED, 
     24      false => BST_UNCHECKED, 
     25      nil   => BST_INDETERMINATE, 
     26    } 
     27    def checked 
     28      value = sendMessage BM_GETCHECK, 0, 0 
     29      CHECKSTATE.index value 
     30    end 
     31     
     32    def checked= value 
     33      value = !!value unless indeterminate 
     34      sendMessage BM_SETCHECK, CHECKSTATE[value], 0 
     35    end 
    2136  end 
    2237end 
  • lang/ruby/ruwin/lib/ruwin/const.rb

    r28838 r28839  
    181181      BS_NOTIFY           = 0x4000 
    182182       
     183      BM_GETCHECK         = 0x00F0 
     184      BM_SETCHECK         = 0x00F1 
    183185      BM_CLICK            = 0x00F5 
    184186       
    185187      BN_CLICKED          = 0 
     188       
     189      BST_UNCHECKED     = 0 
     190      BST_CHECKED       = 1 
     191      BST_INDETERMINATE = 2 
    186192    end 
    187193     
  • lang/ruby/ruwin/test/ruwin/test_check_box.rb

    r28834 r28839  
    77  TARGET_CLASS = Ruwin::CheckBox 
    88   
     9  def setup 
     10    @window = HiddenWindow.new 
     11    @control = self.class::TARGET_CLASS.new @window 
     12  end 
     13   
    914  def test_classname 
    10     window = HiddenWindow.new 
    11     control = self.class::TARGET_CLASS.new window 
    12     assert_equal "BUTTON", control.classname 
     15    assert_equal "BUTTON", @control.classname 
    1316  end 
    1417   
    1518  def test_style 
    16     window = HiddenWindow.new 
    17     control = self.class::TARGET_CLASS.new window 
    18     assert_equal BS_AUTOCHECKBOX, (control.style&(BS_PUSHBUTTON|BS_AUTOCHECKBOX|BS_AUTO3STATE|BS_AUTORADIOBUTTON)) 
     19    assert_equal BS_AUTOCHECKBOX, (@control.style&(BS_PUSHBUTTON|BS_AUTOCHECKBOX|BS_AUTO3STATE|BS_AUTORADIOBUTTON)) 
    1920  end 
    2021   
    2122  def test_style_indeterminate 
    22     window = HiddenWindow.new 
    23     control = self.class::TARGET_CLASS.new window 
    24     control.indeterminate = true 
    25     assert_equal BS_AUTO3STATE, (control.style&(BS_PUSHBUTTON|BS_AUTOCHECKBOX|BS_AUTO3STATE|BS_AUTORADIOBUTTON)) 
     23    @control.indeterminate = true 
     24    assert_equal BS_AUTO3STATE, (@control.style&(BS_PUSHBUTTON|BS_AUTOCHECKBOX|BS_AUTO3STATE|BS_AUTORADIOBUTTON)) 
    2625  end 
    2726   
    2827  def test_indeterminate_on 
    29     window = HiddenWindow.new 
    30     control = self.class::TARGET_CLASS.new window 
    31     control.indeterminate = true 
    32     assert_equal true, control.indeterminate 
     28    @control.indeterminate = true 
     29    assert_equal true, @control.indeterminate 
    3330  end 
    3431   
    3532  def test_indeterminate_off 
    36     window = HiddenWindow.new 
    37     control = self.class::TARGET_CLASS.new window 
    38     control.indeterminate = true 
    39     control.indeterminate = false 
    40     assert_equal false, control.indeterminate 
     33    @control.indeterminate = true 
     34    @control.indeterminate = false 
     35    assert_equal false, @control.indeterminate 
     36  end 
     37   
     38  { 
     39    :true  => [BST_CHECKED,   BST_CHECKED], 
     40    :false => [BST_UNCHECKED, BST_UNCHECKED], 
     41    :nil   => [BST_UNCHECKED, BST_INDETERMINATE], 
     42  }.each do |value, (state, state_indeterminate)| 
     43    class_eval <<-"END" 
     44      def test_checked_setter_#{value} 
     45        @control.checked = #{value} 
     46        assert_equal [[BM_SETCHECK, #{state}, 0]], @control.message_log 
     47      end 
     48       
     49      def test_checked_setter_indeterminate_#{value} 
     50        @control.indeterminate = true 
     51        @control.checked = #{value} 
     52        assert_equal [[BM_SETCHECK, #{state_indeterminate}, 0]], @control.message_log 
     53      end 
     54       
     55      def test_checked_getter_#{value} 
     56        @control.checked = #{value} 
     57        assert_equal !!#{value}, @control.checked 
     58      end 
     59       
     60      def test_checked_getter_indeterminate_#{value} 
     61        @control.indeterminate = true 
     62        @control.checked = #{value} 
     63        assert_equal #{value}, @control.checked 
     64      end 
     65    END 
    4166  end 
    4267end