wxRuby and other GUI toolkits

N

Nick

So, having subscribed recently to the ruby-talk mailing list, I've
noticed that wxruby doesn't seem to have the "respect" of other GUI
libraries. I know GUI-library preference is a holy war almost up there
with vi versus emacs, but since I'm a wxruby developer, I'd like to know
what people "don't" like about wxruby. Otherwise, how else do we improve?

Browsing online, I've found a few complaints:

Difficulty in getting it installed - Daniel Sheppard,
http://www.jroller.com/page/soxbox/
Use of ugly integer values for event handlers -
http://homepages.ihug.com.au/~naseby/31.html

It's a good start (though I don't know what platform Mr. Sheppard is
trying to install on), but any other discussion would be most helpful.

Thanks,

Nick
 
S

Shashank Date

Welcome, Nick !

--- Nick said:
So, having subscribed recently to the ruby-talk
mailing list, I've
noticed that wxruby doesn't seem to have the
"respect" of other GUI
libraries.

And that will change, now that you are here ;-)

Seriously, having one of the core developers on this
ML helps a lot ... I can vouche for that based on my
experience with FxRuby. Lyle Johnson's stupendous
presence here increases the comfort level by two
orders of magnitude.
I know GUI-library preference is a holy
war almost up there
with vi versus emacs, but since I'm a wxruby
developer, I'd like to know
what people "don't" like about wxruby. Otherwise,
how else do we improve?

Now, that I have written a full blown (but tiny)
commercial app in wxRuby, I can say that one area
which we (almost always) can improve upon is
documentation and sample code. I will gladly
contribute on both fronts.
Browsing online, I've found a few complaints:

Difficulty in getting it installed - Daniel
Sheppard,
http://www.jroller.com/page/soxbox/

This situation has improved a lot. Although, IMO, at
least on the Windows platform, I would like for it to
be optionally installed. I am aware that this would
add to the girth of the one-click installer, so it
could be an issue.
Use of ugly integer values for event handlers -
http://homepages.ihug.com.au/~naseby/31.html

Hmmm .. that did not bother me much. Isn't it an issue
with the other GUI's too ?
It's a good start (though I don't know what platform
Mr. Sheppard is
trying to install on), but any other discussion
would be most helpful.

I must mention here that the lack of
documentation/samples has been compensated by
all the help I get on the wxRuby mailing list.

Thank you !
Thanks,

Nick

-- shanko






__________________________________
Do you Yahoo!?
Yahoo! Mail - You care about security. So do we.
http://promotions.yahoo.com/new_mail
 
C

Craig Moran

I'm looking into wxRuby myself after looking at FXRuby and having
marginal success. I am a returning list member after being gone for
~1 year. Here is some sample code that works for me on Windows with
the One-Click Installer and wxRuby. FXRuby and Tk both had PigIt
examples in the sample directories, yet wxRuby didn't. This is my
first attempt at wxRuby, so feel free to slice and dice.
Warm Regards-
Craig

# This is a wxRuby version of Thomas and Hunt's timeless classic, Pig It!
# example (from the "Ruby/Tk" chapter of "Programming Ruby".)
# Implemented by Craig Moran

require 'wxruby'
include Wx

Button_Pig = 1
Button_Exit = 2

class PigFrame < Frame
def initialize
super(nil, -1, "Pig", Point.new(100, 100), Size.new(300, 130))
panel = Panel.new(self, -1)
sizer = BoxSizer.new(VERTICAL)
pigText = StaticText.new(panel, -1, "Enter text:", DEFAULT_POSITION)
sizer.add(pigText, 0, ALIGN_CENTER)
@text = TextCtrl.new(panel, -1, "", DEFAULT_POSITION,
DEFAULT_SIZE, TE_MULTILINE)
sizer.add(@text, 1, GROW|ALL, 2)
pigButton = Button.new(panel, Button_Pig, "Pig It!", DEFAULT_POSITION)
sizer.add(pigButton, 0, ALIGN_CENTER|ALL, 2)
exitButton = Button.new(panel, Button_Exit, "Exit", DEFAULT_POSITION)
sizer.add(exitButton, 0, ALIGN_CENTER|ALL, 2)
panel.set_sizer(sizer)
show(true)
evt_button(Button_Pig) {showPig}
evt_button(Button_Exit) {onExit}
end

def pig(word)
leadingCap = word =~ /^A-Z/
word.downcase!
res = case word
when /^aeiouy/
word+"way"
when /^([^aeiouy]+)(.*)/
$2+$1+"ay"
else
word
end
leadingCap ? res.capitalize : res
end

def showPig
@text.set_value(@text.get_value.split.collect{|w| pig(w)}.join(" "))
end

def onExit
close(true)
end
end

class PigApp < App
def on_init
PigFrame.new
end
end

PigApp.new.main_loop
 
N

Nick

Thanks! I'll add that to the samples (worked on my Mac OS X box without
a hitch).

Nick

Craig said:
I'm looking into wxRuby myself after looking at FXRuby and having
marginal success. I am a returning list member after being gone for
~1 year. Here is some sample code that works for me on Windows with
the One-Click Installer and wxRuby. FXRuby and Tk both had PigIt
examples in the sample directories, yet wxRuby didn't. This is my
first attempt at wxRuby, so feel free to slice and dice.
Warm Regards-
Craig

# This is a wxRuby version of Thomas and Hunt's timeless classic, Pig It!
# example (from the "Ruby/Tk" chapter of "Programming Ruby".)
# Implemented by Craig Moran

require 'wxruby'
include Wx

Button_Pig = 1
Button_Exit = 2

class PigFrame < Frame
def initialize
super(nil, -1, "Pig", Point.new(100, 100), Size.new(300, 130))
panel = Panel.new(self, -1)
sizer = BoxSizer.new(VERTICAL)
pigText = StaticText.new(panel, -1, "Enter text:", DEFAULT_POSITION)
sizer.add(pigText, 0, ALIGN_CENTER)
@text = TextCtrl.new(panel, -1, "", DEFAULT_POSITION,
DEFAULT_SIZE, TE_MULTILINE)
sizer.add(@text, 1, GROW|ALL, 2)
pigButton = Button.new(panel, Button_Pig, "Pig It!", DEFAULT_POSITION)
sizer.add(pigButton, 0, ALIGN_CENTER|ALL, 2)
exitButton = Button.new(panel, Button_Exit, "Exit", DEFAULT_POSITION)
sizer.add(exitButton, 0, ALIGN_CENTER|ALL, 2)
panel.set_sizer(sizer)
show(true)
evt_button(Button_Pig) {showPig}
evt_button(Button_Exit) {onExit}
end

def pig(word)
leadingCap = word =~ /^A-Z/
word.downcase!
res = case word
when /^aeiouy/
word+"way"
when /^([^aeiouy]+)(.*)/
$2+$1+"ay"
else
word
end
leadingCap ? res.capitalize : res
end

def showPig
@text.set_value(@text.get_value.split.collect{|w| pig(w)}.join(" "))
end

def onExit
close(true)
end
end

class PigApp < App
def on_init
PigFrame.new
end
end

PigApp.new.main_loop


Welcome, Nick !



And that will change, now that you are here ;-)

Seriously, having one of the core developers on this
ML helps a lot ... I can vouche for that based on my
experience with FxRuby. Lyle Johnson's stupendous
presence here increases the comfort level by two
orders of magnitude.



Now, that I have written a full blown (but tiny)
commercial app in wxRuby, I can say that one area
which we (almost always) can improve upon is
documentation and sample code. I will gladly
contribute on both fronts.



This situation has improved a lot. Although, IMO, at
least on the Windows platform, I would like for it to
be optionally installed. I am aware that this would
add to the girth of the one-click installer, so it
could be an issue.



Hmmm .. that did not bother me much. Isn't it an issue
with the other GUI's too ?



I must mention here that the lack of
documentation/samples has been compensated by
all the help I get on the wxRuby mailing list.

Thank you !



-- shanko


__________________________________
Do you Yahoo!?
Yahoo! Mail - You care about security. So do we.
http://promotions.yahoo.com/new_mail
 
E

Erik Veenstra

I'm looking into wxRuby myself after looking at FXRuby and
having marginal success. I am a returning list member after
being gone for ~1 year. Here is some sample code that works
for me on Windows with the One-Click Installer and wxRuby.
FXRuby and Tk both had PigIt examples in the sample
directories, yet wxRuby didn't. This is my first attempt at
wxRuby, so feel free to slice and dice. Warm Regards- Craig

Works on Linux with Ruby 1.8.1.

gegroet,
Erik V.
 
R

Richard Lyman

Then why not gravitate toward FXRuby?

It already allows a lot of what was discussed in the given thread.

-Rich
 
Z

Zach Dennis

Richard said:
Then why not gravitate toward FXRuby?

FXRuby doesn't necessarily appeal to all developers with it being GPL'd.
And to the late wxruby project lead Kevin Smith:

"On the bright side, wx is still the only liberally-licensed,
full-featured, native-widget, cross-platform GUI toolkit. If those
features are important to you, then wx is really where you want to be. "

Zach
 
L

Lothar Scholz

Hello Zach,

ZD> FXRuby doesn't necessarily appeal to all developers with it being GPL'd.
ZD> And to the late wxruby project lead Kevin Smith:

It's LGPL not GPL.
But yes LGPL has some problems.
 
R

Richard Lyman

TIMTOWTDI. I do it a bit different than all of the samples. I prefer
the following way, since it helps me see the GUI structure when I'm
looking at the code.

Here are some non-functioning (since they are only part of the
application's code) examples.

Example 1:
FXMenuPane.new(@mainwin){ |hide_and_remind_menu|
FXMenuTitle.new(menu_bar,"Hide and Remind",nil,hide_and_remind_menu)
FXMenuCommand.new(hide_and_remind_menu,"5
seconds").connect(SEL_COMMAND) do hide_and_remind_sec(5) end
FXMenuCommand.new(hide_and_remind_menu,"15
seconds").connect(SEL_COMMAND) do hide_and_remind_sec(15) end
FXMenuSeparator.new(hide_and_remind_menu)
FXMenuCommand.new(hide_and_remind_menu,"30
minutes").connect(SEL_COMMAND) do hide_and_remind_sec( (60*30) ) end
FXMenuSeparator.new(hide_and_remind_menu)
FXMenuCommand.new(hide_and_remind_menu,"2
hours").connect(SEL_COMMAND) do hide_and_remind_sec( (60*60*2) ) end
FXMenuCommand.new(hide_and_remind_menu,"4
hours").connect(SEL_COMMAND) do hide_and_remind_sec( (60*60*4) ) end
FXMenuCommand.new(hide_and_remind_menu,"6
hours").connect(SEL_COMMAND) do hide_and_remind_sec( (60*60*6) ) end
FXMenuSeparator.new(hide_and_remind_menu)
FXMenuCommand.new(hide_and_remind_menu,"8am
tomorrow").connect(SEL_COMMAND) do hide_and_remind(8) end
FXMenuCommand.new(hide_and_remind_menu,"10am
tomorrow").connect(SEL_COMMAND) do hide_and_remind(10) end
FXMenuCommand.new(hide_and_remind_menu,"Noon
tomorrow").connect(SEL_COMMAND) do hide_and_remind(12) end
FXMenuCommand.new(hide_and_remind_menu,"4pm
tomorrow").connect(SEL_COMMAND) do hide_and_remind(16) end
FXMenuCommand.new(hide_and_remind_menu,"8pm
tomorrow").connect(SEL_COMMAND) do hide_and_remind(20) end
}

Example 2:
FXHorizontalFrame.new(@sql_container,LAYOUT_FILL_X){|hf|
FXVerticalFrame.new(hf,0,0,0,0,0,20)
FXVerticalFrame.new(hf,LAYOUT_FILL_X){|vf|
FXVerticalFrame.new(vf,LAYOUT_FILL_X|TEXTFIELD_NORMAL){|frame_line|
@sql=FXText.new(frame_line,nil,0,LAYOUT_FILL_X)
@sql.visRows=6
@sql.text=""
}
FXButton.new(vf,"Execute
SQL",nil,nil,0,BUTTON_NORMAL|LAYOUT_RIGHT).connect(SEL_COMMAND)do
process_sql(@sql.text)
end
}
FXVerticalFrame.new(hf,0,0,0,0,0,20)
}

Notice I'm not saying anything bad about wxWidgets. In fact I'm a bt
jealous of the native look-n-feel thing... :)

I'm just trying to show that FXRuby has excellent support for...
ruby-esque-ness (if that's a word)

-Rich
 
R

Richard Lyman

FXRuby and FOX are actually LGPL'd (if that makes a difference to
you), and FOX's license is even a modified LGPL to allow more room.

-Rich
 
N

Nick

Any chance you could provide a simplified interface along the lines
discussed at length in

http://groups-beta.google.com/group...header=1&q=UI+hal+fulton#doc_36fe4224ced792ff

It basically let's Ruby code look structurally like the ui structure, and
uses some variation of dynamic binding to more cleanly define, override, and
lookup wide-ranging defaults.

It's a good suggestion, though a little outside the scope of the
wxWidgets project. Lit window has conceptually similar to what your
talking about for C++.

http://www.litwindow.com/lwl/doc/html/comparison_10x.html

I don't want this to get into a battle of which GUI toolkit is more
virtuous; there are different toolkits because people want different
functionality. I'd like to hear from anybody who has tried wxruby and
didn't like it, and why they didn't like it.

Nick
 
D

David Ross

Richard said:
FXRuby and FOX are actually LGPL'd (if that makes a difference to
you), and FOX's license is even a modified LGPL to allow more room.

-Rich
Licensing issue is very big complaint of the other toolkits.
I usually compile modules statically, so LGPL wont work.
WideStudio is a toolkit which is licensed under the MIT/X,
*and* includes its own IDE tools. It supports C/C++, Ruby,
Perl, and Python gui code generation.

David Ross
--
Want to see others who are interested in Ruby?
See more Info at [ Website: http://www.rubymine.org/?q=IRC ]
#ruby-talk on Freenode [ IRC: irc://freenode.net/ruby-talk ]

Hazzle free packages for Ruby?
RPA is available from [ Website: http://www.rubyarchive.org/ ]
 
N

Nick

To add to my last post: I'd also love to hear if you do GUI developement
and haven't tried wxruby, why haven't you tried it?

Nick
 
L

Lothar Scholz

Hello Nick,


N> I don't want this to get into a battle of which GUI toolkit is more
N> virtuous; there are different toolkits because people want different
N> functionality. I'd like to hear from anybody who has tried wxruby and
N> didn't like it, and why they didn't like it.

You also like to hear why i don't like wxWidgets ?
 
Z

Zach Dennis

Lothar said:
Hello Nick,


N> I don't want this to get into a battle of which GUI toolkit is more
N> virtuous; there are different toolkits because people want different
N> functionality. I'd like to hear from anybody who has tried wxruby and
N> didn't like it, and why they didn't like it.

You also like to hear why i don't like wxWidgets ?

Perhaps that would be best for an offlist posting. If you have the
courteousy to do it offlist be sure to send me a copy...

Zach
 
N

Nick

Lothar said:
Hello Nick,


N> I don't want this to get into a battle of which GUI toolkit is more
N> virtuous; there are different toolkits because people want different
N> functionality. I'd like to hear from anybody who has tried wxruby and
N> didn't like it, and why they didn't like it.

You also like to hear why i don't like wxWidgets ?

Well, I'd like to hear it. I don't think I can really do much about it
though. :)

Nick
 
R

Richard Lyman

Please see number 2 in the FOX LGPL addendum.

Maybe that will resolve your difficulty with static linking and the LGPL.

-Rich
 
D

David Ross

Richard said:
Please see number 2 in the FOX LGPL addendum.

Maybe that will resolve your difficulty with static linking and the LGPL.

-Rich


Licensing issue is very big complaint of the other toolkits.
I usually compile modules statically, so LGPL wont work.
WideStudio is a toolkit which is licensed under the MIT/X,
*and* includes its own IDE tools. It supports C/C++, Ruby,
Perl, and Python gui code generation.

David Ross
But its not maintained by the japanese....

okay, but that still doesn't include the wsbuilder type application
which WS has with it.
Also FOX should support Ruby, Perl, and Python by default without any
third parties
creating modules for the langauges. This is the second major issue I have.

David Ross
--
Want to see others who are interested in Ruby?
See more Info at [ Website: http://www.rubymine.org/?q=IRC ]
#ruby-talk on Freenode [ IRC: irc://freenode.net/ruby-talk ]

Hazzle free packages for Ruby?
RPA is available from [ Website: http://www.rubyarchive.org/ ]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,900
Latest member
Nell636132

Latest Threads

Top