Class: Wx::Window

Inherits:
Object
  • Object
show all
Defined in:
lib/wx/classes/window.rb

Overview

The base class for all things displayed on screen

Instance Method Summary collapse

Instance Method Details

#__old_evt_paintObject



42
# File 'lib/wx/classes/window.rb', line 42

alias :__old_evt_paint :evt_paint

#evt_paint(meth = nil, &block) ⇒ Object

This modified version of evt_paint sets a variable indicating that a paint event is being handled just before running the event handler. This ensures that any call to Window#paint within the handler will supply a Wx::PaintDC (see swig/Window.i).



47
48
49
50
51
52
53
54
55
# File 'lib/wx/classes/window.rb', line 47

def evt_paint(meth = nil, &block)
  paint_proc = acquire_handler(meth, block)
  wrapped_block = proc do | event |
    instance_variable_set("@__painting__", true)
    paint_proc.call(event)
    remove_instance_variable("@__painting__")
  end
  __old_evt_paint(&wrapped_block)
end

#find_window_by_id(an_id) ⇒ Object

Recursively searches all windows below self and returns the first window which has the id an_id. This corresponds to the find_window method method in WxWidgets when called with an integer.



25
26
27
# File 'lib/wx/classes/window.rb', line 25

def find_window_by_id(an_id)
  Wx::Window.find_window_by_id(an_id, self)
end

#find_window_by_label(a_label) ⇒ Object

Searches all windows below self and returns the first window which has the label a_label.



38
39
40
# File 'lib/wx/classes/window.rb', line 38

def find_window_by_label(a_label)
  Wx:Window.find_window_by_label(a_label, self)
end

#find_window_by_name(a_name) ⇒ Object

Searches all windows below self and returns the first window which has the name a_name This corresponds to the find_window method method in WxWidgets when called with an string.



32
33
34
# File 'lib/wx/classes/window.rb', line 32

def find_window_by_name(a_name)
  Wx::Window.find_window_by_name(a_name, self)
end

#paint_buffered(buffer = nil) ⇒ Object

Provides bufferd drawing facility to reduce flicker for complex drawing commands. Works similar to BufferedDC and BufferedPaintDC in the wxWidgets API, by doing drawing on an in-memory Bitmap, then copying the result in bulk to the screen.

The method may be passed an existing Wx::Bitmap as the buffer, otherwise one will be created.

Works like wxAutoBufferedDC in that additional buffering will only be done on platforms that do not already natively support buffering for the standard PaintDC / ClientDC - Windows, in particular.



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/wx/classes/window.rb', line 68

def paint_buffered(buffer = nil)
  # OS X and GTK do double-buffering natively
  if self.double_buffered?
    paint { | dc | yield dc }
  else
    # client_size is the window area available for drawing upon
    c_size = client_size
    # Create an in-memory buffer if none supplied
    buffer ||= Wx::Bitmap.new(c_size.width, c_size.height)
    buffer.draw do | mem_dc |
      mem_dc.background = Wx::TRANSPARENT_BRUSH
      mem_dc.clear
      # Yield the bitmap for the user code to draw upon
      yield mem_dc
      paint do | dc | 
        # Copy the buffer to the window
        dc.blit(0, 0, c_size.width, c_size.height, mem_dc, 0, 0)
      end
    end
  end
end