OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / lib / manifest / system_resource.rb
1 require_dependency "manifest/system_resource/engine_resource"
2 module Manifest
3   class SystemResource
4     include SystemResourceModule
5     def self.set_default system_resource_manifest
6       system_resource_manifest['engine_resources'] ||= {}
7       system_resource_manifest['elements'] ||= {}
8       system_resource_manifest['select_items'] ||= {}
9       #oh my ...
10       #JSON.stringify couldn't print 1.0 
11       # 1 == 1.0 ?
12       #change class
13       system_resource_manifest['select_items']['speech_font_size_items'] ||= {}
14       system_resource_manifest['select_items']['speech_font_size_items'].each {|conf|
15         conf[1] = conf[1].to_f 
16       }
17       system_resource_manifest
18     end
19     
20     attr :engine_resources, :elements, :select_items
21     def initialize manifest, system_resource_manifest
22       @manifest = manifest
23       @system_resource_manifest = system_resource_manifest
24       @engine_resources = EngineResource.manager(self, @system_resource_manifest['engine_resources'])
25       @elements = system_resource_manifest['elements']
26       @select_items = system_resource_manifest['select_items']
27     end
28     
29     # call after load app
30     def init
31       self.select_items_loader
32     end
33     
34     def select_items_loader
35       @manifest.models.each {|model_name, model_manifest|
36         model_manifest.attributes.each {|attribute_name, attribute_manifest|
37           source_manifest = attribute_manifest.source
38           next unless source_manifest
39           next unless source_manifest.type == 'model'
40           resource_model_name = source_manifest.resource_model_name
41           resource_list_name = source_manifest.resource_list_name
42           caption = source_manifest.caption_name
43           list_group = @manifest.list_groups[resource_model_name]
44           raise "undefined list_group for list_groups > #{resource_model_name}\n" unless list_group
45           list = list_group.lists[resource_list_name]
46           raise "undefined resource list for list_groups > #{resource_model_name} > #{resource_list_name}\n" unless list
47           r = list.open nil, {}
48           @select_items[source_manifest.select_item_name] = 
49             r.items.map {|item| [item.attributes[caption], item.id]}
50         }
51       }
52     end
53     
54   end
55 end
56