Fxruby - need help


#1

I am just starting to use fxruby, so this might be a dumb question.
I am having trouble with hiding and showing buttons and text field.
It seems that when I show a button or text field that was hidden, the
button
is placed randomly, usually under the other objects, and the text
doesn’t
show up at all. When I resize the window by grabbing the corner, they
both
snap to the correct locations. I have tried forceRefresh, recalc,
repaint,
and a few others, but nothing seems to help. I have included a very
short
example of the problem below.

#/usr/bin/env ruby
require ‘fox14’
include Fox
class PlotterWindow < FXMainWindow
def initialize(app)
# Invoke base class initialize first
super(app, “Plotter”, nil, nil, DECOR_ALL, 0, 0, 300, 300)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

INITIALIZE

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

FXToolTip.new(self.getApp())
statusbar = FXStatusBar.new(self,
  LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

LAYOUT

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

showButton = FXButton.new(self,
  "Show\tShow the BLAH Button\tMake BLAH button visable",
  nil, nil, 0,
  LAYOUT_SIDE_TOP|FRAME_RAISED|FRAME_THICK|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,40,

40, 70, 30)
hideButton = FXButton.new(self,
“Hide\tHide the BLAH Button\tMake BLAH button hidden”,
nil, nil, 0,
LAYOUT_SIDE_TOP|FRAME_RAISED|FRAME_THICK|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,40,
40, 70, 30)
blahButton = FXButton.new(self,
“BLAH!!\tBLAH BUTTON\tThe BLAH button has no action”,
nil, nil, 0,
LAYOUT_SIDE_TOP|FRAME_RAISED|FRAME_THICK|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,40,
40, 70, 30)
blahButton.hide
myTextField = FXTextField.new(self, 20, NIL, 0,
LAYOUT_SIDE_BOTTOM|FRAME_SUNKEN|FRAME_THICK|TEXTFIELD_READONLY)
myTextField.setText(“blah blah blah!”)
myTextField.hide

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

ACTIOINS

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

showButton.connect(SEL_COMMAND) {
  print "SHOW!\n"
  STDOUT.flush
  blahButton.show
  myTextField.show
  1
}
hideButton.connect(SEL_COMMAND) {
  print "HIDE!\n"
  STDOUT.flush
  blahButton.hide
  myTextField.hide
  1
}

end
def create
super
show(PLACEMENT_SCREEN)
end
end

if FILE == $0

Construct an application

application = FXApp.new(“Button”, “FoxTest”)

Construct the main window

PlotterWindow.new(application)

Create the application

application.create

Run it

application.run
end