From 73d6261b5dcdabf230b7a54dd556e2c2f5d8229d Mon Sep 17 00:00:00 2001
From: Nick Winter <livelily@gmail.com>
Date: Wed, 24 Sep 2014 16:29:28 -0700
Subject: [PATCH] Hide run shortcut (shift+enter) for first few levels so as
 not to distract. Don't show beautification button in Python mode. Don't show
 maximize editor button in hero levels. Don't show method selector if there's
 only one method. Renamed some spells to methods. Added a bit of i18n.

---
 app/locale/en.coffee                          |  4 +++-
 app/templates/play/level/tome/spell_list.jade |  2 +-
 .../play/level/tome/spell_list_tab_entry.jade | 19 +++++++++++--------
 .../play/level/tome/CastButtonView.coffee     |  3 ++-
 app/views/play/level/tome/Spell.coffee        |  4 ++--
 .../level/tome/SpellListTabEntryView.coffee   |  8 ++++++--
 .../play/level/tome/SpellListView.coffee      |  2 +-
 7 files changed, 26 insertions(+), 16 deletions(-)

diff --git a/app/locale/en.coffee b/app/locale/en.coffee
index 103f368cb..072dc62ec 100644
--- a/app/locale/en.coffee
+++ b/app/locale/en.coffee
@@ -416,7 +416,9 @@
     tome_cast_button_running: "Running"
     tome_cast_button_ran: "Ran"
     tome_submit_button: "Submit"
-    tome_select_spell: "Select a Spell"
+    tome_reload_method: "Reload original code for this method"  # Title text for individual method reload button.
+    tome_select_method: "Select a Method"
+    tome_see_all_methods: "See all methods you can edit"  # Title text for method list selector (shown when there are multiple programmable methdos).
     tome_select_a_thang: "Select Someone for "
     tome_available_spells: "Available Spells"
     tome_your_skills: "Your Skills"
diff --git a/app/templates/play/level/tome/spell_list.jade b/app/templates/play/level/tome/spell_list.jade
index 90d7f9e06..84b28511a 100644
--- a/app/templates/play/level/tome/spell_list.jade
+++ b/app/templates/play/level/tome/spell_list.jade
@@ -1 +1 @@
-h5(data-i18n="play_level.tome_select_spell") Select a Spell
+h5(data-i18n="play_level.tome_select_method") Select a Method
diff --git a/app/templates/play/level/tome/spell_list_tab_entry.jade b/app/templates/play/level/tome/spell_list_tab_entry.jade
index 9e3ac0ce8..a2ec05b06 100644
--- a/app/templates/play/level/tome/spell_list_tab_entry.jade
+++ b/app/templates/play/level/tome/spell_list_tab_entry.jade
@@ -1,20 +1,23 @@
 img(src="/images/level/code_editor_tab_background.png").spell-tab-image-hidden.hidden
 
-.btn.btn-small.spell-list-button(title="See all spells you can edit")
-  i.icon-chevron-down
+if includeSpellList
+  .btn.btn-small.spell-list-button(data-i18n="[title]play_level.tome_see_all_methods", title="See all methods you can edit")
+    i.icon-chevron-down
 .thang-avatar-placeholder
 
 code #{methodSignature}
 
 .spell-tool-buttons
-  .btn.btn-small.fullscreen-code(title=maximizeShortcutVerbose)
-    i.icon-fullscreen
-    i.icon-resize-small
+  if levelType !== 'hero'
+   .btn.btn-small.fullscreen-code(title=maximizeShortcutVerbose)
+     i.icon-fullscreen
+     i.icon-resize-small
       
-  .btn.btn-small.reload-code(title="Reload original code for " + spell.name)
+  .btn.btn-small.reload-code(data-i18n="[title]play_level.tome_reload_method", title="Reload original code for this method")
     i.icon-repeat
   
-  .btn.btn-small.beautify-code(title=beautifyShortcutVerbose)
-    i.icon-magnet
+  if codeLanguage === 'javascript'
+    .btn.btn-small.beautify-code(title=beautifyShortcutVerbose)
+      i.icon-magnet
 
   .clearfix
\ No newline at end of file
diff --git a/app/views/play/level/tome/CastButtonView.coffee b/app/views/play/level/tome/CastButtonView.coffee
index e30bac173..650fb801f 100644
--- a/app/views/play/level/tome/CastButtonView.coffee
+++ b/app/views/play/level/tome/CastButtonView.coffee
@@ -104,7 +104,8 @@ module.exports = class CastButtonView extends CocoView
       else if castable
         s = $.i18n.t('play_level.tome_cast_button_run')
         s = $.i18n.t('play_level.tome_cast_button_casting') if s is 'Run' and me.get('preferredLanguage').split('-')[0] isnt 'en'  # Temporary, if tome_cast_button_running isn't translated.
-        s += ' ' + @castShortcut
+        unless @options.levelID in ['dungeons-of-kithgard', 'gems-in-the-deep', 'shadow-guard', 'true-names']  # Hide for first few.
+          s += ' ' + @castShortcut
       else
         s = $.i18n.t('play_level.tome_cast_button_ran')
         s = $.i18n.t('play_level.tome_cast_button_casting') if s is 'Ran' and me.get('preferredLanguage').split('-')[0] isnt 'en'  # Temporary, if tome_cast_button_running isn't translated.
diff --git a/app/views/play/level/tome/Spell.coffee b/app/views/play/level/tome/Spell.coffee
index be55f5c35..af5349f6e 100644
--- a/app/views/play/level/tome/Spell.coffee
+++ b/app/views/play/level/tome/Spell.coffee
@@ -43,7 +43,7 @@ module.exports = class Spell
     if @canRead()  # We can avoid creating these views if we'll never use them.
       @view = new SpellView {spell: @, level: options.level, session: @session, worker: @worker}
       @view.render()  # Get it ready and code loaded in advance
-      @tabView = new SpellListTabEntryView spell: @, supermodel: @supermodel, language: @language
+      @tabView = new SpellListTabEntryView spell: @, supermodel: @supermodel, codeLanguage: @language, level: options.level
       @tabView.render()
     @team = @permissions.readwrite[0] ? 'common'
     Backbone.Mediator.publish 'tome:spell-created', spell: @
@@ -56,7 +56,7 @@ module.exports = class Spell
     @worker = null
 
   setLanguage: (@language) ->
-    console.log 'setting language to', @language, 'so using original source', @languages[language] ? @languages.javascript
+    #console.log 'setting language to', @language, 'so using original source', @languages[language] ? @languages.javascript
     @originalSource = @languages[language] ? @languages.javascript
 
   addThang: (thang) ->
diff --git a/app/views/play/level/tome/SpellListTabEntryView.coffee b/app/views/play/level/tome/SpellListTabEntryView.coffee
index 86a6cec27..b27ed0792 100644
--- a/app/views/play/level/tome/SpellListTabEntryView.coffee
+++ b/app/views/play/level/tome/SpellListTabEntryView.coffee
@@ -33,6 +33,9 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
     shift = $.i18n.t 'keyboard_shortcuts.shift'
     context.beautifyShortcutVerbose = "#{ctrl}+#{shift}+B: #{$.i18n.t 'keyboard_shortcuts.beautify'}"
     context.maximizeShortcutVerbose = "#{ctrl}+#{shift}+M: #{$.i18n.t 'keyboard_shortcuts.maximize_editor'}"
+    context.includeSpellList = @options.includeSpellList
+    context.codeLanguage = @options.codeLanguage
+    context.levelType = @options.level.get 'type', true
     context
 
   afterRender: ->
@@ -71,7 +74,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
           found = true
           break
     return unless found
-    docFormatter = new DocFormatter doc: doc, thang: @thang, language: @options.language, selectedMethod: true
+    docFormatter = new DocFormatter doc: doc, thang: @thang, language: @options.codeLanguage, selectedMethod: true
     @$el.find('code').popover(
       animation: true
       html: true
@@ -122,11 +125,12 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
 
   onSpellChangedLanguage: (e) ->
     return unless e.spell is @spell
-    @options.language = e.language
+    @options.codeLanguage = e.language
     @$el.find('code').popover 'destroy'
     @render()
     @docsBuilt = false
     @buildDocs() if @thang
+    @updateReloadButton()
 
   toggleControls: (e, enabled) ->
     # Don't call super; do it differently
diff --git a/app/views/play/level/tome/SpellListView.coffee b/app/views/play/level/tome/SpellListView.coffee
index febdbce12..9bf6ece39 100644
--- a/app/views/play/level/tome/SpellListView.coffee
+++ b/app/views/play/level/tome/SpellListView.coffee
@@ -61,7 +61,7 @@ module.exports = class SpellListView extends CocoView
       theseThangs = _.keys(spell.thangs)
       changedThangs = not lastThangs or not _.isEqual theseThangs, lastThangs
       lastThangs = theseThangs
-      newEntries.push entry = new SpellListEntryView spell: spell, showTopDivider: changedThangs, supermodel: @supermodel
+      newEntries.push entry = new SpellListEntryView spell: spell, showTopDivider: changedThangs, supermodel: @supermodel, includeSpellList: @spells.length > 1
       @entries.push entry
     for entry in newEntries
       @$el.append entry.el