Files
w3dhub_linux_launcher/lib/window.rb

65 lines
1.5 KiB
Ruby

class W3DHub
class Window < CyberarmEngine::Window
def setup
self.caption = I18n.t(:app_name)
Store[:server_list] = []
Store[:settings] = Settings.new
Store[:application_manager] = ApplicationManager.new
Store.settings.save_settings
begin
I18n.locale = Store.settings[:language]
rescue I18n::InvalidLocale
I18n.locale = :en
end
# push_state(W3DHub::States::DemoInputDelay)
push_state(W3DHub::States::Boot)
end
def update
super
Store.application_manager.start_next_available_task if Store.application_manager.idle?
end
def gain_focus
self.update_interval = 1000.0 / 60
end
def lose_focus
self.update_interval = 1000.0 / 10
end
def close
Store.settings.save_settings
current_state_options = current_state&.instance_variable_get(:@options)
if Store.application_manager.idle? || current_state_options&.dig(:tag_as) == :closer
super
else
push_state(
States::ConfirmDialog,
tag_as: :closer,
title: I18n.t(:app_name),
message: "An application management task is currently running, are you sure you want to exit?",
accept_callback: method(:close!)
)
end
end
def main_thread_queue
if current_state.is_a?(W3DHub::States::Interface)
current_state.main_thread_queue
else
warn "Task will not be run for:"
warn caller
[]
end
end
end
end