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

Discussion in 'Ruby' started by Bill Paxton, Jan 9, 2005.

  1. Bill Paxton

    Bill Paxton Guest

    --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--
     
    Bill Paxton, Jan 9, 2005
    #1
    1. Advertising

  2. Hi,

    From: Bill Paxton <>
    Subject: how do I add a C widget to Ruby/Tk?
    Date: Mon, 10 Jan 2005 02:33:05 +0900
    Message-ID: <BE06AACA.1C67%>
    > 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
    ----------------------------------------------------------
    Then, you'll be able to create your widget by
    ----------------------------------------------------------
    YOUR_WIDGET.new(parent, optkeys){ ... }
    ----------------------------------------------------------
    like as other standard widgets.
    --
    Hidetoshi NAGAI ()
     
    Hidetoshi NAGAI, Jan 10, 2005
    #2
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Basile STARYNKEVITCH
    Replies:
    0
    Views:
    336
    Basile STARYNKEVITCH
    Sep 2, 2003
  2. Replies:
    0
    Views:
    355
  3. Frederic Rentsch
    Replies:
    0
    Views:
    275
    Frederic Rentsch
    Jul 8, 2012
  4. Terry Reedy
    Replies:
    15
    Views:
    671
    Frederic Rentsch
    Jul 16, 2012
  5. Frederic Rentsch
    Replies:
    0
    Views:
    463
    Frederic Rentsch
    Jul 9, 2012
Loading...

Share This Page