# encoding: utf-8
# Trazo para SketchUp — captura la vista actual y la abre en Trazo.
# Instalación: SketchUp → Window/Ventana → Extension Manager → Install Extension
# no hace falta .rbz: copia este archivo a la carpeta Plugins de SketchUp
#   (Windows: %APPDATA%\SketchUp\SketchUp 20xx\SketchUp\Plugins)
# Requiere la app de escritorio Trazo >= 2.0 instalada (esquema trazo://).

require 'sketchup.rb'
require 'erb'

module Trazo
  module Captura
    def self.renderizar(vivo = false)
      model = Sketchup.active_model
      view  = model.active_view
      ruta  = File.join(ENV['TEMP'] || Dir.tmpdir, "trazo-captura-#{Time.now.to_i}.png")
      # captura a 2x del viewport para que Trazo tenga resolución de sobra
      ancho = [view.vpwidth * 2, 3200].min
      alto  = (ancho.to_f * view.vpheight / view.vpwidth).round
      view.write_image(ruta, ancho, alto, true, 0.9)
      url = "trazo://importar?ruta=#{ERB::Util.url_encode(ruta)}"
      url += '&auto=1' if vivo # Trazo Live: la app genera al instante con tus ajustes
      UI.openURL(url)
    rescue => e
      UI.messagebox("Trazo: no se pudo capturar la vista.\n#{e.message}")
    end

    unless file_loaded?(__FILE__)
      menu = UI.menu('Extensions')
      menu.add_item('Renderizar vista en Trazo') { renderizar }
      menu.add_item('Trazo Live — capturar y generar') { renderizar(true) }

      barra = UI::Toolbar.new('Trazo')
      cmd = UI::Command.new('Trazo') { renderizar }
      cmd.tooltip = 'Renderizar la vista actual en Trazo'
      cmd.status_bar_text = 'Captura la vista y la abre en Trazo'
      barra.add_item(cmd)
      vivo = UI::Command.new('Trazo Live') { renderizar(true) }
      vivo.tooltip = 'Capturar y generar al instante con tus ajustes'
      vivo.status_bar_text = 'Manda la vista a Trazo y genera sin tocar nada'
      barra.add_item(vivo)
      barra.restore
      file_loaded(__FILE__)

      # aviso de instalación — una sola vez por versión
      if Sketchup.read_default('Trazo', 'instalado_v21').nil?
        Sketchup.write_default('Trazo', 'instalado_v21', true)
        UI.messagebox("Trazo instalado ✓\n\nExtensions → «Renderizar vista en Trazo»: la vista actual se abre en la app Trazo.\n«Trazo Live»: se abre y GENERA al instante con tus ajustes.\n\nTambién tienes los dos botones en la barra de herramientas Trazo.")
      end
    end
  end
end
