[macruby-changes] [463] MacRuby/trunk/lib/hotcocoa/application_builder.rb

source_changes at macosforge.org source_changes at macosforge.org
Thu Aug 21 14:19:12 PDT 2008


Revision: 463
          http://trac.macosforge.org/projects/ruby/changeset/463
Author:   rich at infoether.com
Date:     2008-08-21 14:19:12 -0700 (Thu, 21 Aug 2008)
Log Message:
-----------
add icon support

Modified Paths:
--------------
    MacRuby/trunk/lib/hotcocoa/application_builder.rb

Modified: MacRuby/trunk/lib/hotcocoa/application_builder.rb
===================================================================
--- MacRuby/trunk/lib/hotcocoa/application_builder.rb	2008-08-21 21:18:55 UTC (rev 462)
+++ MacRuby/trunk/lib/hotcocoa/application_builder.rb	2008-08-21 21:19:12 UTC (rev 463)
@@ -6,9 +6,12 @@
     
     ApplicationBundlePackage = "APPL????"
     
-    attr_accessor :name, :load_file, :sources, :overwrite
+    attr_accessor :name, :load_file, :sources, :overwrite, :icon, :version, :info_string
     
     def self.build(build_options)
+      build_options.each do |key, value|
+        build_options[key.intern] = value if key.respond_to?(:intern)
+      end
       if build_options[:file]
         require 'yaml'
         build_options = YAML.load(File.read(build_options[:file]))
@@ -16,6 +19,9 @@
       ab = new
       ab.name = build_options[:name]
       ab.load_file = build_options[:load]
+      ab.icon = build_options[:icon] if build_options[:icon] && File.exist?(build_options[:icon])
+      ab.version = build_options[:version] || "1.0"
+      ab.info_string = build_options[:info_string]
       ab.overwrite = (build_options.include?(:overwrite) ? build_options[:overwrite] : true)
       sources = build_options[:sources] || []
       sources.each do |source|
@@ -33,6 +39,7 @@
       build_bundle_structure
       write_bundle_files
       copy_sources
+      copy_icon_file if icon
     end
     
     def overwrite?
@@ -80,6 +87,10 @@
         end
       end
       
+      def copy_icon_file
+        FileUtils.cp(icon, icon_file)
+      end
+      
       def write_pkg_info_file
         File.open(pkg_info_file, "wb") {|f| f.write ApplicationBundlePackage}
       end
@@ -91,7 +102,11 @@
           f.puts %{<plist version="1.0">}
           f.puts %{<dict>}
           f.puts %{	<key>CFBundleDevelopmentRegion</key>}
-          f.puts %{	<string>English</string>}
+          f.puts %{ <string>English</string>}
+          f.puts %{ <key>CFBundleIconFile</key>} if icon
+          f.puts %{ <string>#{name}.icns</string>} if icon
+          f.puts %{ <key>CFBundleGetInfoString</key>} if info_string
+          f.puts %{ <string>#{info_string}</string>} if info_string
           f.puts %{	<key>CFBundleExecutable</key>}
           f.puts %{	<string>#{name.gsub(/ /, '')}</string>}
           f.puts %{	<key>CFBundleIdentifier</key>}
@@ -105,7 +120,7 @@
           f.puts %{	<key>CFBundleSignature</key>}
           f.puts %{	<string>????</string>}
           f.puts %{	<key>CFBundleVersion</key>}
-          f.puts %{	<string>1.0</string>}
+          f.puts %{	<string>#{version}</string>}
           f.puts %{	<key>NSPrincipalClass</key>}
           f.puts %{	<string>NSApplication</string>}
           f.puts %{</dict>}
@@ -158,6 +173,10 @@
         File.join(contents_root, "Info.plist")
       end
       
+      def icon_file
+        File.join(resources_root, "#{name}.icns")
+      end
+      
       def pkg_info_file
         File.join(contents_root, "PkgInfo")
       end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080821/04623c6d/attachment.html 


More information about the macruby-changes mailing list