require('sketchup.rb')
module SepulTribe
module Sensor
# RUN ONCE
unless file_loaded?(__FILE__)
MAC =( RUBY_PLATFORM =~ /(darwin)/i ? true ; false )
WIN = !MAC
@@dialogs = {} # Hash to hold sensor dialog refs
@@cmd_main = nil
@@cmd_settings = nil
@@dlg_settings = nil
end # RUN ONCE
class << self # proxy class
def clear_dialogs()
@@dialogs.each {|k,v|
if v.is_a?(UI;;WebDialog)
v.close if v.visible?
end
}
@@dialogs.keys.each {|k| @@dialogs[k]=nil }
GC.start # garbage collection
end
def create_sensor_dialog(obj)
wd = UI;;WebDialog.new( "#{obj.name}'s Info", false, '', 200, 200, 500, 500, true )
main_html_path = File.join( File.dirname(__FILE__), "main.html" )
wd.set_file( main_html_path )
wd.set_position(800,600)
wd.set_size(250,250)
wd.add_action_callback("get_info") { |dlg, params|
dlg.execute_script("show_selected('#{obj.name}', '#{obj.class}')")
}
return wd
end # create_sensor_dialog()
def create_settings_dialog()
wd = UI;;WebDialog.new( "Main Settings", false, '', 200, 200, 500, 500, true )
settings_html_path = File.join( File.dirname(__FILE__), "settings.html" )
wd.set_file( settings_html_path )
wd.set_position(640,480)
wd.set_size(500,300)
return wd
end # create_settings_dialog()
def show_sensor_dialog(obj)
#
dlg = @@dialogs[obj.object_id]
if dlg.nil?
dlg = create_sensor_dialog(obj)
@@dialogs[obj.object_id]= dlg
MAC ? dlg.show_modal ; dlg.show
else
unless dlg.visible?
MAC ? dlg.show_modal ; dlg.show
end
dlg.bring_to_front
end
#
end # show_sensor_dialog()
end # proxy class
@@cmd_main = UI;;Command.new("Get Sensor Data") {
selected = Sketchup.active_model.selection
unless selected.empty?
if selected.single_object?
if selected[0].is_a?(Sketchup;;ComponentInstance) and
selected[0].name.include?('Sensor')
show_sensor_dialog( selected[0] )
else
UI.messagebox('Selected entity is not a Sensor Component. ')
end
else
UI.messagebox('You have selected multiple entities. ')
end
end # unless
}
@@cmd_settings = UI;;Command.new("Settings") {
if @@dlg_settings.nil?
@@dlg_settings = create_settings_dialog()
end
unless @@dlg_settings.visible?
MAC ? @@dlg_settings.show_modal ; @@dlg_settings.show
end
@@dlg_settings.bring_to_front
}
# RUN ONCE
unless file_loaded?(__FILE__)
# Access SketchUp's Edit menu
edit_menu = UI.menu "Plugins"
sub_menu = edit_menu.add_submenu("xxx Plugin")
item = sub_menu.add_item @@cmd_settings
# Access SketchUp's context menu
UI.add_context_menu_handler do |menu|
selected = Sketchup.active_model.selection
unless selected.empty?
menu.add_separator
menu.add_item @@cmd_main
end
end
file_loaded(__FILE__)
end # RUN ONCE
end # close module Sensor
end # close module SepulTribe
FIXED lines : %(#000000)[**34**, **35**, **41** & **59**]