how do I add a C widget to Ruby/Tk?

B

Bill Paxton

--B_3188107978_10962276
Content-type: text/plain; charset="ISO-8859-1"
Content-transfer-encoding: quoted-printable

I have an existing Tcl/Tk widget written in C that I=B9d like to port to
Ruby/Tk. The Lidie & Walsh book on Perl/Tk is helpful, but it doesn=B9t quit=
e
supply enough information. For example, it contains a call on
=B3Lang_CreateWidget=B2 that needs to be mapped to something for Ruby/Tk, but
what might that be?

Does anyone have a working example of a C widget done in Ruby/Tk? Could yo=
u
please share the secrets?

Thanks,
Bill Paxton


--B_3188107978_10962276--
 
H

Hidetoshi NAGAI

Hi,

From: Bill Paxton <[email protected]>
Subject: how do I add a C widget to Ruby/Tk?
Date: Mon, 10 Jan 2005 02:33:05 +0900
Message-ID: said:
I have an existing Tcl/Tk widget written in C that I¹d like to port to
Ruby/Tk.

Please use your widget as it is.
Ruby/Tk (tcltklib) uses standard Tcl/Tk libraries.
If your wish (which uses same Tcl/Tk libraries) can load your widget
library, Ruby/Tk can load the widget library. For exapmle,

<Ruby/Tk method call> <call on Tcl/Tk>
Tk.load_cmd_on_ip(tk_cmd) --> auto_load tk_cmd
Tk.load_tclscript(file, enc=nil) --> source ?-encoding enc? file
Tk.load_tcllibrary(file, pkg=None, --> load file ?pkg? ?interp?
interp=None)

Tk.tk_call(cmd, arg, ... ) --> cmd arg ...
Tk.ip_eval(script) --> (eval "script" on Tcl/Tk ip)

Probably, you'll be able to load your widget library by
Tk.load_tcllibrary('your widget library').
After that, you can create and control your widgets by Tk.tk_call().

If you want create a class for your widget,
it is better the class is a sub-class of TkWindow class.
When the create command of your widget is "xxx path ??-opt val? ...?",
minimum definition for your widget class is the following.
----------------------------------------------------------
class YOUR_WIDGET < TkWindow
TkCommandNames = ['xxx'.freeze].freeze

WidgetClassName = 'Xxx' # if needed
WidgetClassNames[WidgetClassName] = self # if needed

# define instance methods for your widget class

end
 

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,982
Messages
2,570,190
Members
46,740
Latest member
AdolphBig6

Latest Threads

Top