[491] MacRuby/trunk/sample-macruby/HotCocoa/demo/lib
Revision: 491 http://trac.macosforge.org/projects/ruby/changeset/491 Author: rich@infoether.com Date: 2008-08-26 23:10:58 -0700 (Tue, 26 Aug 2008) Log Message: ----------- basic demo structure Modified Paths: -------------- MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/application.rb Added Paths: ----------- MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/views/ MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/views/buttons.rb MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/views/web_view.rb Modified: MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/application.rb =================================================================== --- MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/application.rb 2008-08-27 06:10:40 UTC (rev 490) +++ MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/application.rb 2008-08-27 06:10:58 UTC (rev 491) @@ -1,16 +1,31 @@ require 'hotcocoa' +include HotCocoa + # Replace the following code with your own hotcocoa code -class Application - - include HotCocoa +class DemoApplication + def self.register(view_class) + view_classes << view_class + end + + def self.view_classes + @view_classes ||= [] + end + + def self.view_with_description(description) + @view_classes.detect {|view| view.description == description} + end + + attr_reader :current_demo_view, :main_window + def start - application :name => "Demo" do |app| + load_view_files + application(:name => "Demo") do |app| app.delegate = self - window :frame => [100, 100, 500, 500], :title => "HotCocoa Demo Application" do |win| - win << label(:text => "Hello!", :layout => {:start => false}) + @main_window = window(:frame => [100, 100, 500, 500], :title => "HotCocoa Demo Application") do |win| + win << segment_control win.will_close { exit } end end @@ -39,6 +54,36 @@ # window/bring_all_to_front def on_bring_all_to_front(menu) end + + private + + def demo(description) + main_window.view.remove(current_demo_view) if current_demo_view + @current_demo_view = DemoApplication.view_with_description(description).create + main_window << @current_demo_view + end + + def segment_control + @segment_control ||= create_segment_control + end + + def create_segment_control + segmented_control(:layout => {:expand => :width, :align => :center, :start => false}, :segments => demo_app_segments) do |seg| + seg.on_action do + demo(@segment_control.selected_segment.label) + end + end + end + + def demo_app_segments + DemoApplication.view_classes.collect {|view_class| {:label => view_class.description, :width => 0}} + end + + def load_view_files + Dir.glob(File.join(File.dirname(__FILE__), 'views', '*.rb')).each do |file| + load file + end + end end -Application.new.start \ No newline at end of file +DemoApplication.new.start \ No newline at end of file Added: MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/views/buttons.rb =================================================================== --- MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/views/buttons.rb (rev 0) +++ MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/views/buttons.rb 2008-08-27 06:10:58 UTC (rev 491) @@ -0,0 +1,16 @@ +class ButtonsView + + def self.description + "Button Views" + end + + def self.create + layout_view :mode => :horizontal, :frame => [0, 0, 0, 0], :layout => {:expand => [:width, :height]} do |view| + view.margin = 0 + view << button(:title => "hello", :layout => {:expand => :width, :start => false}) + end + end + + DemoApplication.register(self) + +end Added: MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/views/web_view.rb =================================================================== --- MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/views/web_view.rb (rev 0) +++ MacRuby/trunk/sample-macruby/HotCocoa/demo/lib/views/web_view.rb 2008-08-27 06:10:58 UTC (rev 491) @@ -0,0 +1,26 @@ +framework 'webkit' + +class WebView + + def self.description + "Web Views" + end + + def self.create + layout_view :frame => [0, 0, 0, 0], :layout => {:expand => [:width, :height]}, :margin => 0, :spacing => 0 do |view| + web_view = web_view(:layout => {:expand => [:width, :height]}, :url => "http://www.ruby-lang.org") + view << web_view + view << layout_view(:mode => :horizontal, :frame => [0, 0, 0, 40], :layout => {:expand => :width, :bottom_padding => 2}, :margin => 0, :spacing => 0) do |hview| + hview << button(:title => "Go", :layout => {:align => :center}).on_action do + web_view.url = @url.to_s + end + @url = text_field(:layout => {:expand => :width, :align => :center}) + hview << @url + end + end + end + + DemoApplication.register(self) + +end +
participants (1)
-
source_changes@macosforge.org