[macruby-changes] [399] MacRuby/trunk/sample-macruby/HotCocoa
source_changes at macosforge.org
source_changes at macosforge.org
Sat Aug 2 22:23:25 PDT 2008
Revision: 399
http://trac.macosforge.org/projects/ruby/changeset/399
Author: rich at infoether.com
Date: 2008-08-02 22:23:25 -0700 (Sat, 02 Aug 2008)
Log Message:
-----------
move to easier name
Added Paths:
-----------
MacRuby/trunk/sample-macruby/HotCocoa/calculator.rb
Removed Paths:
-------------
MacRuby/trunk/sample-macruby/HotCocoa/calculator-macruby.rb
Deleted: MacRuby/trunk/sample-macruby/HotCocoa/calculator-macruby.rb
===================================================================
--- MacRuby/trunk/sample-macruby/HotCocoa/calculator-macruby.rb 2008-08-03 04:45:53 UTC (rev 398)
+++ MacRuby/trunk/sample-macruby/HotCocoa/calculator-macruby.rb 2008-08-03 05:23:25 UTC (rev 399)
@@ -1,96 +0,0 @@
-#
-# Port of John Lipsky's weblog post: http://blog.elevenworks.com/?p=38
-#
-require 'hotcocoa'
-
-include HotCocoa
-
-class Calculator
-
- def self.on
- self.new.show
- end
-
- attr_accessor :accumulator, :value, :operand_pressed, :button_view
-
- def initialize
- @accumulator = []
- end
-
- def show
- application do |app|
- window :frame => [100, 100, 220, 280], :title => "Calculator", :view => :nolayout, :style => [:titled, :closable, :miniturizable] do |win|
- @value = text_field :frame => [10, 230, 200, 40], :text => "0", :font => font(:name => "Tahoma", :size => 22), :text_align => :right
- win << value
- @button_view = view :frame => [10, 10, 200, 240]
- win << button_view
- add_buttons
- win.will_close { exit }
- end
- end
- end
-
- private
-
- def add_buttons
- calc_button("CL", 0, 4) { clear }
- calc_button("SQR", 1, 4) { sqrt }
- calc_button("/", 2, 4) { operand :/ }
- calc_button("*", 3, 4) { operand :* }
- calc_button("7", 0, 3) { press 7 }
- calc_button("8", 1, 3) { press 8 }
- calc_button("9", 2, 3) { press 9 }
- calc_button("-", 3, 3) { operand :- }
- calc_button("4", 0, 2) { press 4 }
- calc_button("5", 1, 2) { press 5 }
- calc_button("6", 2, 2) { press 6 }
- calc_button("+", 3, 2) { operand :+ }
- calc_button("1", 0, 1) { press 1 }
- calc_button("2", 1, 1) { press 2 }
- calc_button("3", 2, 1) { press 3 }
- calc_button("=", 3, 1, 0, 1) { evaluate }
- calc_button("0", 0, 0, 1, 0) { press 0 }
- calc_button(".", 2, 0) { press '.' }
- end
-
- def calc_button(name, x, y, w=0, h=0, &block)
- button_view << button(:title => name, :bezel => :regular_square, :frame => [x*50, y*43-h*43, 47+w*50, 40+h*43]).on_action(&block)
- end
-
- def evaluate
- accumulator << float_value
- result = eval(accumulator.join(" "))
- value.text = (result.to_i == result ? result.to_i : result.to_s)
- accumulator.clear
- end
-
- def press(key)
- if operand_pressed
- value.text = key.to_s
- else
- value.text = (value.to_s == "0" ? key.to_s : (value.to_s + key.to_s))
- end
- @operand_pressed = false
- end
-
- def operand(key)
- accumulator << float_value
- accumulator << key
- @operand_pressed = true
- end
-
- def float_value
- (value.to_s[0,1] == "." ? "0#{value.to_s}" : value.to_s).to_f
- end
-
- def sqrt
- value.text = Math.sqrt(value.to_i).to_s
- end
-
- def clear
- value.text = "0"
- end
-
-end
-
-Calculator.on
Copied: MacRuby/trunk/sample-macruby/HotCocoa/calculator.rb (from rev 394, MacRuby/trunk/sample-macruby/HotCocoa/calculator-macruby.rb)
===================================================================
--- MacRuby/trunk/sample-macruby/HotCocoa/calculator.rb (rev 0)
+++ MacRuby/trunk/sample-macruby/HotCocoa/calculator.rb 2008-08-03 05:23:25 UTC (rev 399)
@@ -0,0 +1,96 @@
+#
+# Port of John Lipsky's weblog post: http://blog.elevenworks.com/?p=38
+#
+require 'hotcocoa'
+
+include HotCocoa
+
+class Calculator
+
+ def self.on
+ self.new.show
+ end
+
+ attr_accessor :accumulator, :value, :operand_pressed, :button_view
+
+ def initialize
+ @accumulator = []
+ end
+
+ def show
+ application do |app|
+ window :frame => [100, 100, 220, 280], :title => "Calculator", :view => :nolayout, :style => [:titled, :closable, :miniturizable] do |win|
+ @value = text_field :frame => [10, 230, 200, 40], :text => "0", :font => font(:name => "Tahoma", :size => 22), :text_align => :right
+ win << value
+ @button_view = view :frame => [10, 10, 200, 240]
+ win << button_view
+ add_buttons
+ win.will_close { exit }
+ end
+ end
+ end
+
+ private
+
+ def add_buttons
+ calc_button("CL", 0, 4) { clear }
+ calc_button("SQR", 1, 4) { sqrt }
+ calc_button("/", 2, 4) { operand :/ }
+ calc_button("*", 3, 4) { operand :* }
+ calc_button("7", 0, 3) { press 7 }
+ calc_button("8", 1, 3) { press 8 }
+ calc_button("9", 2, 3) { press 9 }
+ calc_button("-", 3, 3) { operand :- }
+ calc_button("4", 0, 2) { press 4 }
+ calc_button("5", 1, 2) { press 5 }
+ calc_button("6", 2, 2) { press 6 }
+ calc_button("+", 3, 2) { operand :+ }
+ calc_button("1", 0, 1) { press 1 }
+ calc_button("2", 1, 1) { press 2 }
+ calc_button("3", 2, 1) { press 3 }
+ calc_button("=", 3, 1, 0, 1) { evaluate }
+ calc_button("0", 0, 0, 1, 0) { press 0 }
+ calc_button(".", 2, 0) { press '.' }
+ end
+
+ def calc_button(name, x, y, w=0, h=0, &block)
+ button_view << button(:title => name, :bezel => :regular_square, :frame => [x*50, y*43-h*43, 47+w*50, 40+h*43]).on_action(&block)
+ end
+
+ def evaluate
+ accumulator << float_value
+ result = eval(accumulator.join(" "))
+ value.text = (result.to_i == result ? result.to_i : result.to_s)
+ accumulator.clear
+ end
+
+ def press(key)
+ if operand_pressed
+ value.text = key.to_s
+ else
+ value.text = (value.to_s == "0" ? key.to_s : (value.to_s + key.to_s))
+ end
+ @operand_pressed = false
+ end
+
+ def operand(key)
+ accumulator << float_value
+ accumulator << key
+ @operand_pressed = true
+ end
+
+ def float_value
+ (value.to_s[0,1] == "." ? "0#{value.to_s}" : value.to_s).to_f
+ end
+
+ def sqrt
+ value.text = Math.sqrt(value.to_i).to_s
+ end
+
+ def clear
+ value.text = "0"
+ end
+
+end
+
+Calculator.on
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080802/9a6e1e0b/attachment.html
More information about the macruby-changes
mailing list