OSDN Git Service

fix: new speechballoon
authoryasushiito <yas@pen-chan.jp>
Thu, 26 Mar 2015 08:54:41 +0000 (17:54 +0900)
committeryasushiito <yas@pen-chan.jp>
Thu, 26 Mar 2015 08:54:41 +0000 (17:54 +0900)
19 files changed:
app/assets/javascripts/addons/circle_speech_balloons/init.js.coffee
app/assets/javascripts/addons/plain_speech_balloons/init.js.coffee
app/assets/javascripts/addons/square_speech_balloons/init.js.coffee
app/assets/javascripts/editor/panel_editor.js.coffee
app/assets/javascripts/editor/panel_editor/dock.js.coffee
app/assets/javascripts/editor/panel_editor/element/boards.js.coffee
app/assets/javascripts/locmare/form.js.coffee
app/assets/javascripts/models/balloon.js.coffee
app/assets/javascripts/models/ground_color.js.coffee
app/assets/javascripts/models/ground_picture.js.coffee
app/assets/javascripts/models/panel_picture.js.coffee
app/assets/javascripts/models/speech.js.coffee
app/assets/javascripts/models/speech_balloon.js.coffee
app/assets/javascripts/peta/item.js.coffee
app/assets/javascripts/views/ground_colors/new_element.js.coffee
app/assets/javascripts/views/ground_pictures/new_element.js.coffee
app/assets/javascripts/views/panel_pictures/new_element.js.coffee
app/assets/javascripts/views/speech_balloons/new_element.js.coffee
app/models/speech.rb

index 38777a9..51e22d8 100644 (file)
@@ -82,11 +82,8 @@ class Pettanr.CircleSpeechBalloon.Speech extends Backbone.Model
     @engine_name() + '/speeches'\r
 \r
 class Pettanr.CircleSpeechBalloon.SpeechBalloonModule\r
-  supply_default: () ->\r
-    super()\r
-    sbt = @speech_balloon_template()\r
-    sbt.fetch({cache: true}).done =>\r
-      @speech_balloon_template_module_name = sbt.get('module_name')\r
+  supply_default: (templates) ->\r
+    @templates = templates\r
   \r
   speech_balloon_extend: () ->\r
     @new_speech_balloon() if not @sbex\r
@@ -102,9 +99,8 @@ class Pettanr.CircleSpeechBalloon.SpeechBalloonModule
     @sbex.supply_default()\r
   \r
 class Pettanr.CircleSpeechBalloon.BalloonModule\r
-  supply_default: () ->\r
-    super()\r
-    s = @parsed_settings()['all']['balloon']\r
+  supply_default: (templates) ->\r
+    @templates = templates\r
     @set({\r
       x: 0,\r
       y: 0,\r
@@ -112,6 +108,7 @@ class Pettanr.CircleSpeechBalloon.BalloonModule
       eight: @parsed_settings()['speech_balloon']['default_height'],\r
       r: @parsed_settings()['speech_balloon']['default_r']\r
     })\r
+    @select_system_picture()\r
   \r
   balloon_extend: () ->\r
     @new_balloon() if not @bex\r
@@ -128,9 +125,7 @@ class Pettanr.CircleSpeechBalloon.BalloonModule
   \r
   parsed_settings: () ->\r
     return @parsed if @parsed\r
-    sbt = @speech_balloon_template()\r
-    sbt.fetch({cache: true}).done =>\r
-      @parsed = sbt.parsed_settings()\r
+    @parsed = @templates.speech_balloon_template.parsed_settings()\r
   \r
   select_system_picture: () ->\r
     tr = @get('r') % 360\r
@@ -145,8 +140,8 @@ class Pettanr.CircleSpeechBalloon.BalloonModule
     @parsed_settings()['speech_balloon']['r_step']\r
   \r
 class Pettanr.CircleSpeechBalloon.SpeechModule\r
-  supply_default: () ->\r
-    super()\r
+  supply_default: (templates) ->\r
+    @templates = templates\r
     s = @parsed_settings()['0']['speech']\r
     @set({\r
       x: s['x_rate'],\r
@@ -173,9 +168,7 @@ class Pettanr.CircleSpeechBalloon.SpeechModule
   \r
   parsed_settings: () ->\r
     return @parsed if @parsed\r
-    sbt = @speech_balloon_template()\r
-    sbt.fetch({cache: true}).done =>\r
-      @parsed = sbt.parsed_settings()\r
+    @parsed = @templates.speech_balloon_template.parsed_settings()\r
   \r
   arrayed_quotes: () ->\r
     q = if Pettanr.is_blank(@get('quotes'))\r
index 4bcf8a9..37a8de0 100644 (file)
@@ -82,11 +82,8 @@ class Pettanr.PlainSpeechBalloon.Speech extends Backbone.Model
     @engine_name() + '/speeches'\r
 \r
 class Pettanr.PlainSpeechBalloon.SpeechBalloonModule\r
-  supply_default: () ->\r
-    super()\r
-    sbt = @speech_balloon_template()\r
-    sbt.fetch({cache: true}).done =>\r
-      @speech_balloon_template_module_name = sbt.get('module_name')\r
+  supply_default: (templates) ->\r
+    @templates = templates\r
   \r
   speech_balloon_extend: () ->\r
     @new_speech_balloon() if not @sbex\r
@@ -99,12 +96,10 @@ class Pettanr.PlainSpeechBalloon.SpeechBalloonModule
   \r
   new_speech_balloon: (params = {}) -> \r
     @sbex = new Pettanr.PlainSpeechBalloon.SpeechBalloon(params)\r
-    @sbex.supply_default()\r
   \r
 class Pettanr.PlainSpeechBalloon.BalloonModule\r
-  supply_default: () ->\r
-    super()\r
-    s = @parsed_settings()['all']['balloon']\r
+  supply_default: (templates) ->\r
+    @templates = templates\r
     @set({\r
       x: 0,\r
       y: 0,\r
@@ -112,6 +107,7 @@ class Pettanr.PlainSpeechBalloon.BalloonModule
       eight: @parsed_settings()['speech_balloon']['default_height'],\r
       r: 0\r
     })\r
+    @select_system_picture()\r
   \r
   balloon_extend: () ->\r
     @new_balloon() if not @bex\r
@@ -128,9 +124,7 @@ class Pettanr.PlainSpeechBalloon.BalloonModule
   \r
   parsed_settings: () ->\r
     return @parsed if @parsed\r
-    sbt = @speech_balloon_template()\r
-    sbt.fetch({cache: true}).done =>\r
-      @parsed = sbt.parsed_settings()\r
+    @parsed = @templates.speech_balloon_template.parsed_settings()\r
   \r
   select_system_picture: () ->\r
     s = @parsed_settings()['all']['balloon']\r
@@ -139,8 +133,8 @@ class Pettanr.PlainSpeechBalloon.BalloonModule
     sid\r
   \r
 class Pettanr.PlainSpeechBalloon.SpeechModule\r
-  supply_default: () ->\r
-    super()\r
+  supply_default: (templates) ->\r
+    @templates = templates\r
     s = @parsed_settings()['all']['speech']\r
     @set({\r
       x: s['x_rate'],\r
@@ -167,9 +161,7 @@ class Pettanr.PlainSpeechBalloon.SpeechModule
   \r
   parsed_settings: () ->\r
     return @parsed if @parsed\r
-    sbt = @speech_balloon_template()\r
-    sbt.fetch({cache: true}).done =>\r
-      @parsed = sbt.parsed_settings()\r
+    @parsed = @templates.speech_balloon_template.parsed_settings()\r
   \r
   arrayed_quotes: () ->\r
     q = if Pettanr.is_blank(@get('quotes'))\r
index 2fd5365..07669f6 100644 (file)
@@ -82,11 +82,8 @@ class Pettanr.SquareSpeechBalloon.Speech extends Backbone.Model
     @engine_name() + '/speeches'\r
 \r
 class Pettanr.SquareSpeechBalloon.SpeechBalloonModule\r
-  supply_default: () ->\r
-    super()\r
-    sbt = @speech_balloon_template()\r
-    sbt.fetch({cache: true}).done =>\r
-      @speech_balloon_template_module_name = sbt.get('module_name')\r
+  supply_default: (templates) ->\r
+    @templates = templates\r
   \r
   speech_balloon_extend: () ->\r
     @new_speech_balloon() if not @sbex\r
@@ -102,9 +99,8 @@ class Pettanr.SquareSpeechBalloon.SpeechBalloonModule
     @sbex.supply_default()\r
   \r
 class Pettanr.SquareSpeechBalloon.BalloonModule\r
-  supply_default: () ->\r
-    super()\r
-    s = @parsed_settings()['all']['balloon']\r
+  supply_default: (templates) ->\r
+    @templates = templates\r
     @set({\r
       x: 0,\r
       y: 0,\r
@@ -112,6 +108,7 @@ class Pettanr.SquareSpeechBalloon.BalloonModule
       eight: @parsed_settings()['speech_balloon']['default_height'],\r
       r: 0\r
     })\r
+    @select_system_picture()\r
   \r
   balloon_extend: () ->\r
     @new_balloon() if not @bex\r
@@ -128,9 +125,7 @@ class Pettanr.SquareSpeechBalloon.BalloonModule
   \r
   parsed_settings: () ->\r
     return @parsed if @parsed\r
-    sbt = @speech_balloon_template()\r
-    sbt.fetch({cache: true}).done =>\r
-      @parsed = sbt.parsed_settings()\r
+    @parsed = @templates.speech_balloon_template.parsed_settings()\r
   \r
   select_system_picture: () ->\r
     s = @parsed_settings()['all']['balloon']\r
@@ -139,8 +134,8 @@ class Pettanr.SquareSpeechBalloon.BalloonModule
     sid\r
   \r
 class Pettanr.SquareSpeechBalloon.SpeechModule\r
-  supply_default: () ->\r
-    super()\r
+  supply_default: (templates) ->\r
+    @templates = templates\r
     s = @parsed_settings()['all']['speech']\r
     @set({\r
       x: s['x_rate'],\r
@@ -167,9 +162,7 @@ class Pettanr.SquareSpeechBalloon.SpeechModule
   \r
   parsed_settings: () ->\r
     return @parsed if @parsed\r
-    sbt = @speech_balloon_template()\r
-    sbt.fetch({cache: true}).done =>\r
-      @parsed = sbt.parsed_settings()\r
+    @parsed = @templates.speech_balloon_template.parsed_settings()\r
   \r
   arrayed_quotes: () ->\r
     q = if Pettanr.is_blank(@get('quotes'))\r
index dd15a08..97eb950 100644 (file)
@@ -19,13 +19,17 @@ class Editor.PanelEditor extends Backbone.View
     \r
     @body.on('panel:resize', @panel_resize)\r
     @listenTo(@dock, 'http_post', @http_post)\r
+    @listenTo(@dock, 'add:element', @add_element)\r
     @listenTo(@dock, 'add:credit', @add_credit)\r
   \r
+  add_element: (element) ->\r
+    @body.add_element(element)\r
+  \r
   add_credit: (element) ->\r
     @credits.add_picture(element.picture())\r
   \r
   remove_element: (element) ->\r
-    \r
+    @body.remove_element(element)\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -95,6 +99,7 @@ class Editor.PanelEditor.Dialog extends Backbone.View
     @get(params, form)\r
   \r
   stop: () ->\r
+    @dialog().$el.dialog('close')\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -129,9 +134,9 @@ class Editor.PanelEditor.Dialog extends Backbone.View
     if view['is_pickable'] and view.is_pickable()\r
       view.add_pick(@target_model)\r
     @refresh(view)\r
+    this.$el.dialog('open')\r
   \r
   done: (params) ->\r
-    this.$el.dialog('open')\r
   \r
   lock: (params) ->\r
     console.log('_lock')\r
index 40f079d..eced320 100644 (file)
@@ -88,6 +88,8 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase
   \r
   pick: (new_item) ->\r
     t = @scenario_bay.length()\r
-    new_item.set({t: t}, {silent: true})\r
+    z = @element_bay.new_tab.label.z() + 1\r
+    new_item.set({z: z, t: t}, {silent: true})\r
     @scenario_bay.add_element(new_item)\r
+    @trigger('add:element', new_item)\r
   \r
index a072606..5bdf31f 100644 (file)
@@ -54,12 +54,6 @@ class Editor.EditorModule.DockModule.ElementBay.Labels extends Backbone.View
       res[tab.label.z()] = tab.label\r
     res\r
   \r
-  add_label: (label) ->\r
-    #z = label.z\r
-    @labels.push(label) # insert array\r
-    @render()  # sorting\r
-    label.add_label()\r
-  \r
   bay: () ->\r
     @parent.parent\r
   \r
index 26678a7..f0292ab 100644 (file)
@@ -62,15 +62,9 @@ class Locmare.Form extends Locmare.FormBase
     @init_fields()\r
   \r
   render: () ->\r
-    if @item.isNew()\r
-      method_type = 'post'\r
-      action_url = @item.create_url()\r
-    else\r
-      method_type = 'put'\r
-      action_url = @item.edit_url()\r
     @attr = {\r
-      method: method_type,\r
-      action: action_url\r
+      method: @method_type(),\r
+      action: @action_url()\r
     }\r
     this.$el.attr(@attr)\r
     this.$el.html('')\r
@@ -92,7 +86,7 @@ class Locmare.Form extends Locmare.FormBase
       c = @submit_class()\r
       @div_submit = new c({form: this})\r
       this.$el.append(@div_submit.render().el)\r
-      @delegateEvents({'submit': method_type})\r
+      @delegateEvents({'submit': @method_type()})\r
     this\r
   \r
   refresh: () ->\r
@@ -101,6 +95,19 @@ class Locmare.Form extends Locmare.FormBase
     _.each @child_forms, (child_form, name) =>\r
       child_form.refresh()\r
   \r
+  method_type: () ->\r
+    if @item.isNew()\r
+      'post'\r
+    else\r
+      'put'\r
+  \r
+  action_url: () ->\r
+    return null if !@submit    # element has not create actions\r
+    if @item.isNew()\r
+      @item.create_url()\r
+    else\r
+      @item.edit_url()\r
+  \r
   add_element: (element) ->\r
     form = Locmare.Form.factory({\r
       form_name: element.item_name(), \r
index 0ed171f..c1ca348 100644 (file)
@@ -16,6 +16,15 @@ class Pettanr.Balloon extends Peta.Element
     r: 0\r
   } \r
   \r
+  pick: (templates) ->\r
+    # \r
+    speech_balloon_template = templates.speech_balloon_template\r
+    {\r
+      speech_balloon_template_id: speech_balloon_template.get('id'),\r
+      speech_balloon_template_module_name: speech_balloon_template.get('module_name'),\r
+      speech_balloon_template_settings: speech_balloon_template.get('settings')\r
+    }\r
+  \r
   speech_balloon: () ->\r
     new Pettanr.SpeechBalloon({id: @get('speech_balloon_id')})\r
   \r
@@ -34,7 +43,8 @@ class Pettanr.Balloon extends Peta.Element
         sp.fetch({cache: true}).done =>\r
           @trigger('ready:symbol', sp.tmb_opt_img_tag())\r
   \r
-  initialize: () ->\r
+  initialize: (attr, options) ->\r
+    super(attr, options)\r
     if @id\r
       @url = @url + @id\r
     @bind('change:width', () ->\r
index 254d97d..fc7ba8d 100644 (file)
@@ -15,13 +15,26 @@ class Pettanr.GroundColor extends Peta.Element
   @has_picture: () ->\r
     false\r
   \r
+  @pick_item_name: () ->\r
+    ''\r
+  \r
+  @pick_model: () ->\r
+    Manifest.item_name_to_model(@pick_item_name())\r
+  \r
+  @traceable_item_names: () ->\r
+    []\r
+  \r
+  @is_traceable: (item_name) ->\r
+    _.contains(@traceable_item_names(), item_name)\r
+  \r
   panel: (options = {}) ->\r
     new Pettanr.Panel({id: @get('panel_id')}, options)\r
   \r
   element_face: () ->\r
     new Pettanr.Views.GroundColor.ElementFace({element: this})\r
   \r
-  initialize: () ->\r
+  initialize: (attr, options) ->\r
+    super(attr, options)\r
     if @id\r
       @url = @url + @id\r
   \r
index a699cce..aba7d5e 100644 (file)
@@ -17,6 +17,25 @@ class Pettanr.GroundPicture extends Peta.Element
   @repeat_texts: () -> \r
     ['repeat', 'repeat-x', 'repeat-y', 'no-repeat']\r
   \r
+  @pick_item_name: () ->\r
+    'resource_picture'\r
+  \r
+  @pick_model: () ->\r
+    Manifest.item_name_to_model(@pick_item_name())\r
+  \r
+  @traceable_item_names: () ->\r
+    ['panel_picture', 'picture']\r
+  \r
+  @is_traceable: (item_name) ->\r
+    _.contains(@traceable_item_names(), item_name)\r
+  \r
+  trace_from_panel_picture: () ->\r
+  \r
+  trace_from_picture: () ->\r
+  \r
+  pick: (picked_item) ->\r
+    {picture_id: picked_item.get('picture_id')}\r
+  \r
   panel: (options = {}) ->\r
     new Pettanr.Panel({id: @get('panel_id')}, options)\r
   \r
@@ -46,7 +65,8 @@ class Pettanr.GroundPicture extends Peta.Element
   element_face: () ->\r
     new Pettanr.Views.GroundPicture.ElementFace({element: this})\r
   \r
-  initialize: () ->\r
+  initialize: (attr, options) ->\r
+    super(attr, options)\r
     if @id\r
       @url = @url + @id\r
   \r
index 4dcaa24..52b1fd0 100644 (file)
@@ -11,8 +11,6 @@ class Pettanr.PanelPicture extends Peta.Element
     id: null\r
   } \r
   \r
-  @pick: () ->\r
-  \r
   @pick_item_name: () ->\r
     'resource_picture'\r
   \r
@@ -29,6 +27,13 @@ class Pettanr.PanelPicture extends Peta.Element
   \r
   trace_from_picture: () ->\r
   \r
+  pick: (picked_item) ->\r
+    {\r
+      picture_id: picked_item.get('picture_id'),\r
+      width: picked_item.get('width'),\r
+      height: picked_item.get('height')\r
+    }\r
+  \r
   picture: () ->\r
     new Pettanr.Picture({id: @get('picture_id')})\r
   \r
@@ -79,7 +84,8 @@ class Pettanr.PanelPicture extends Peta.Element
   element_face: () ->\r
     new Pettanr.Views.PanelPicture.ElementFace({element: this})\r
   \r
-  initialize: () ->\r
+  initialize: (attr, options) ->\r
+    super(attr, options)\r
     if @id\r
       @url = @url + @id\r
     @bind('change:width', () ->\r
index 9914732..cfe1da7 100644 (file)
@@ -15,9 +15,25 @@ class Pettanr.Speech extends Peta.Element
     height: 100\r
   } \r
   \r
+  pick: (templates) ->\r
+    # \r
+    speech_balloon_template = templates.speech_balloon_template\r
+    writing_format = templates.writing_format\r
+    {\r
+      speech_balloon_template_id: speech_balloon_template.get('id'),\r
+      speech_balloon_template_module_name: speech_balloon_template.get('module_name'),\r
+      speech_balloon_template_settings: speech_balloon_template.get('settings')\r
+      writing_format_id: writing_format.get('id'),\r
+      writing_format_module_name: writing_format.get('module_name'),\r
+      writing_format_template_settings: writing_format.get('settings')\r
+    }\r
+  \r
   speech_balloon: () ->\r
     new Pettanr.SpeechBalloon({id: @get('speech_balloon_id')})\r
   \r
+  writing_format: () ->\r
+    new Pettanr.WritingFormat({id: @get('writing_format_id')})\r
+  \r
   @text_align_texts: () -> \r
     ['left', 'left', 'right', 'center']\r
   \r
@@ -38,7 +54,8 @@ class Pettanr.Speech extends Peta.Element
     @render(@escape('content'))\r
     \r
   \r
-  initialize: () ->\r
+  initialize: (attr, options) ->\r
+    super(attr, options)\r
     if @id\r
       @url = @url + @id\r
   \r
index d5e5280..4d8e84b 100644 (file)
@@ -13,6 +13,31 @@ class Pettanr.SpeechBalloon extends Peta.Element
     t: null\r
   } \r
   \r
+  @pick_item_name: () ->\r
+    'speech_balloon_template'\r
+  \r
+  @pick_model: () ->\r
+    Manifest.item_name_to_model(@pick_item_name())\r
+  \r
+  @traceable_item_names: () ->\r
+    ['speech', 'balloon']\r
+  \r
+  @is_traceable: (item_name) ->\r
+    _.contains(@traceable_item_names(), item_name)\r
+  \r
+  trace_from_speech: () ->\r
+  \r
+  trace_from_balloon: () ->\r
+  \r
+  pick: (templates) ->\r
+    # \r
+    speech_balloon_template = templates.speech_balloon_template\r
+    {\r
+      speech_balloon_template_id: speech_balloon_template.get('id'),\r
+      speech_balloon_template_module_name: speech_balloon_template.get('module_name'),\r
+      speech_balloon_template_settings: speech_balloon_template.get('settings')\r
+    }\r
+  \r
   panel: (options = {}) ->\r
     new Pettanr.Panel({id: @get('panel_id')}, options)\r
   \r
@@ -40,7 +65,8 @@ class Pettanr.SpeechBalloon extends Peta.Element
   element_face: () ->\r
     new Pettanr.Views.SpeechBalloon.ElementFace({element: this})\r
   \r
-  initialize: () ->\r
+  initialize: (attr, options) ->\r
+    super(attr, options)\r
     if @id\r
       @url = @url + @id\r
   \r
index 1e604c2..22fe57a 100644 (file)
@@ -3,6 +3,7 @@ class Peta.Item extends Backbone.Model
   initialize: (attr = {}, options = {}) ->\r
     super(attr, options)\r
     @expire_time = options.expire_time\r
+    @boosters = {}\r
   \r
   @child_models: () ->\r
     @my_manifest().child_models()\r
@@ -129,14 +130,10 @@ class Peta.Item extends Backbone.Model
       @boost boost_manifest\r
   \r
   boost: (boost_manifest) ->\r
-    @boosters ||= {}\r
     @boosters[boost_manifest.name] = new Locmare.Booster(boost_manifest, this)\r
     # fetched item is not cleared .  force write booster\r
     #@boosters[boost_manifest.name] ||= new Locmare.Booster(boost_manifest, this)\r
   \r
-  boosters: () ->\r
-    @boosters ||= {}\r
-  \r
   is_extend_column: (column_name) ->\r
     @is_extend_column column_name\r
   \r
index 9bba5b9..a85c106 100644 (file)
@@ -4,17 +4,44 @@ class Pettanr.Views.GroundColor.NewElement extends Backbone.View
   \r
   initialize: (options) ->\r
     @parent = options.parent\r
-    @model = options.model\r
-    params = {\r
-      controller: @model.path_name(), action: 'index',\r
-      page_size: 6, format: 'pick'\r
-    }\r
-    @dialog().get(params, null)\r
-  \r
-  render: () ->\r
-    this.$el.html(@img.clear().el)\r
+    @target_model = options.target_model\r
+    @pick_model = @target_model.pick_model()\r
+  \r
+  clear: () ->\r
+    this.$el.html('new or inspire')\r
+    this\r
+  \r
+  render: (form) ->\r
+    this.$el.html('')\r
+    this.$el.append(@form.render().el)\r
     this\r
   \r
+  pick: (item) ->\r
+    if item.item_name() == @target_model.item_name()\r
+      # Inspire\r
+      new_item = new @target_model(item.attributes)\r
+    else if @target_model.is_traceable(item.item_name())\r
+      # Trace\r
+      n = @target_model['trace_from_' + item.item_name()]\r
+      n()\r
+    else if item.item_name() == @target_model.pick_item_name()\r
+      # Pick\r
+      model = @target_model.pick_model()\r
+      new_item = new model()\r
+    @dialog().stop()\r
+    @set_form(new_item)\r
+    @trigger('pick', new_item)\r
+  \r
+  set_form: (item) ->\r
+    @form = Locmare.Form.factory({\r
+      form_name: item.item_name(), \r
+      use_name: 'default' \r
+      item: item, \r
+      element_form: true, \r
+      submit: null, \r
+      operators: @editor().operators,\r
+    })\r
+  \r
   dock: () ->\r
     @parent.dock()\r
   \r
index 96a754e..cd6b0ee 100644 (file)
@@ -4,17 +4,38 @@ class Pettanr.Views.GroundPicture.NewElement extends Backbone.View
   \r
   initialize: (options) ->\r
     @parent = options.parent\r
-    @model = options.model\r
+    @target_model = options.target_model\r
+    @pick_model = @target_model.pick_model()\r
+  \r
+  clear: () ->\r
+    this.$el.html('')\r
     params = {\r
-      controller: @model.path_name(), action: 'index',\r
-      page_size: 6, format: 'pick'\r
+      controller: @pick_model.path_name(), action: 'index',\r
+      page_size: 6, format: 'html'\r
     }\r
-    @dialog().get(params, null)\r
+    @dialog().start(@target_model, params, null)\r
+    @listenTo(@dialog(), 'pick', @pick)\r
+    this\r
   \r
   render: () ->\r
-    this.$el.html(@img.clear().el)\r
+    this.$el.html('')\r
     this\r
   \r
+  pick: (item) ->\r
+    if item.item_name() == @target_model.item_name()\r
+      # Inspire\r
+      new_item = new @target_model(item.attributes)\r
+    else if @target_model.is_traceable(item.item_name())\r
+      # Trace\r
+      n = @target_model['trace_from_' + item.item_name()]\r
+      n()\r
+    else if item.item_name() == @target_model.pick_item_name()\r
+      # Pick  resource_picture to ground_picture\r
+      new_item = new @target_model()\r
+      new_item.set(new_item.pick(item), {silent: true})\r
+    @dialog().stop()\r
+    @trigger('pick', new_item)\r
+  \r
   dock: () ->\r
     @parent.dock()\r
   \r
index bcdebc0..46aa767 100644 (file)
@@ -10,16 +10,15 @@ class Pettanr.Views.PanelPicture.NewElement extends Backbone.View
   clear: () ->\r
     this.$el.html('')\r
     params = {\r
-      controller: @target_model.path_name(), action: 'index',\r
+      controller: @pick_model.path_name(), action: 'index',\r
       page_size: 6, format: 'html'\r
     }\r
     @dialog().start(@target_model, params, null)\r
     @listenTo(@dialog(), 'pick', @pick)\r
     this\r
   \r
-  render: (form) ->\r
+  render: () ->\r
     this.$el.html('')\r
-    this.$el.append(@form.render().el)\r
     this\r
   \r
   pick: (item) ->\r
@@ -31,24 +30,12 @@ class Pettanr.Views.PanelPicture.NewElement extends Backbone.View
       n = @target_model['trace_from_' + item.item_name()]\r
       n()\r
     else if item.item_name() == @target_model.pick_item_name()\r
-      # Pick\r
-      model = @target_model.pick_model()\r
-      new_item = new model()\r
-    @dialog().$el.dialog('option', 'hide')\r
+      # Pick  resource_picture to panel_picture\r
+      new_item = new @target_model()\r
+      new_item.set(new_item.pick(item), {silent: true})\r
     @dialog().stop()\r
-    @set_form(new_item)\r
     @trigger('pick', new_item)\r
   \r
-  set_form: (item) ->\r
-    @form = Locmare.Form.factory({\r
-      form_name: item.item_name(), \r
-      use_name: 'default' \r
-      item: item, \r
-      element_form: true, \r
-      submit: null, \r
-      operators: @editor().operators,\r
-    })\r
-  \r
   dock: () ->\r
     @parent.dock()\r
   \r
index 03bce08..351ab8c 100644 (file)
@@ -4,17 +4,64 @@ class Pettanr.Views.SpeechBalloon.NewElement extends Backbone.View
   \r
   initialize: (options) ->\r
     @parent = options.parent\r
-    @model = options.model\r
+    @target_model = options.target_model\r
+    @pick_model = @target_model.pick_model()\r
+  \r
+  clear: () ->\r
+    this.$el.html('')\r
     params = {\r
-      controller: @model.path_name(), action: 'index',\r
-      page_size: 6, format: 'pick'\r
+      controller: @pick_model.path_name(), action: 'index',\r
+      page_size: 6, format: 'html'\r
     }\r
-    @dialog().get(params, null)\r
+    @dialog().start(@target_model, params, null)\r
+    @listenTo(@dialog(), 'pick', @pick)\r
+    this\r
   \r
   render: () ->\r
-    this.$el.html(@img.clear().el)\r
+    this.$el.html('')\r
     this\r
   \r
+  pick: (item) ->\r
+    @listenTo(this, 'ready', @ready)\r
+    if item.item_name() == @target_model.item_name()\r
+      # Inspire\r
+      new_item = new @target_model(item.attributes)\r
+      @trigger('ready', new_item)\r
+    else if @target_model.is_traceable(item.item_name())\r
+      # Trace\r
+      n = @target_model['trace_from_' + item.item_name()]\r
+      n()\r
+    else if item.item_name() == @target_model.pick_item_name()\r
+      # Pick\r
+      speech_balloon_template = item\r
+      writing_format = new Pettanr.WritingFormat({id: 1})\r
+      writing_format.fetch({cache: true}).done =>\r
+        templates = {\r
+          speech_balloon_template: speech_balloon_template,\r
+          writing_format: writing_format\r
+        }\r
+        new_item = new @target_model()\r
+        new_item.set(new_item.pick(templates), {silent: true})\r
+        new_item.boosts 'post'\r
+        new_item.supply_default(templates)\r
+        # prepare balloon\r
+        balloon = new Pettanr.Balloon()\r
+        balloon.set(balloon.pick(templates), {silent: true})\r
+        balloon.boosts 'post'\r
+        balloon.supply_default(templates)\r
+        # prepare speech\r
+        speech = new Pettanr.Speech()\r
+        speech.set(speech.pick(templates), {silent: true})\r
+        speech.boosts 'post'\r
+        speech.supply_default(templates)\r
+        # join elements\r
+        new_item.set({balloon: balloon, speech: speech}, {silent: true})\r
+        @trigger('ready', new_item)\r
+  \r
+  ready: (new_item) ->\r
+    @dialog().stop()\r
+    @trigger('pick', new_item)\r
+  \r
   dock: () ->\r
     @parent.dock()\r
   \r
index 6b6254e..6cb3f9c 100644 (file)
@@ -31,6 +31,7 @@ class Speech < Peta::Element
     self.y = 0
     self.width = 100
     self.height = 100
+    self.fore_color = 0
   end
   
   def symbol_option