Module: Qt::ApplicationLifecycle
- Defined in:
- lib/qt/application_lifecycle.rb
Overview
Tracks QApplication creation/disposal lifecycle from Ruby side.
Instance Method Summary collapse
- #dispose ⇒ Object
- #exec ⇒ Object
- #initialize(_argc = 0, _argv = []) ⇒ Object
- #register_window(window) ⇒ Object
Instance Method Details
#dispose ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/qt/application_lifecycle.rb', line 31 def dispose return if @handle.nil? || (@handle.respond_to?(:null?) && @handle.null?) # Native returns false when teardown is rejected by safety guards # (e.g. non-GUI thread dispose attempt). Keep handle intact in that case. deleted = Native.qapplication_delete(@handle) return false unless deleted @handle = nil self.class.current = nil if self.class.current.equal?(self) true end |
#exec ⇒ Object
24 25 26 27 28 29 |
# File 'lib/qt/application_lifecycle.rb', line 24 def exec @windows.each(&:show) Native.qapplication_exec(@handle) ensure dispose end |
#initialize(_argc = 0, _argv = []) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/qt/application_lifecycle.rb', line 6 def initialize(_argc = 0, _argv = []) @windows = [] # Propagate real argv0 into native QApplication creation so desktop # environments can derive app identity/window class from process intent. argv0 = if _argv.respond_to?(:[]) && !_argv.empty? _argv[0] else $PROGRAM_NAME end argv0 = 'ruby' if argv0.nil? || argv0.to_s.empty? @handle = Native.qapplication_new(Qt::StringCodec.to_qt_text(argv0)) self.class.current = self end |
#register_window(window) ⇒ Object
20 21 22 |
# File 'lib/qt/application_lifecycle.rb', line 20 def register_window(window) @windows << window unless @windows.include?(window) end |