Why does the derived class instance need to be duplicated with TkComposite

Discussion in 'Ruby' started by Lionel MAIAUX, Sep 1, 2006.

  1. Hello,

    Is there any reason to duplicate the derived class instance when using
    TkComposite ?

    Examples :

    1/ tk/sample/scrollframe : there are 3 frames instantiated for a
    Tk::ScrollFrame object : self (derived from TkFrame), @frame (from
    TkComposite) and@base (embedded frame)
    Why can't we use self for the enbedded frame ?

    2/ tk/sample/tktextframe.rb : there are 2 TkText instantiated for a
    TkTextFrame object : self (derived from TkText) and @text.
    Why this duplication ?

    Thanks for your explanations and regards,
    Lionel
     
    Lionel MAIAUX, Sep 1, 2006
    #1
    1. Advertising

  2. Re: Why does the derived class instance need to be duplicated withTkComposite

    From: Lionel MAIAUX <>
    Subject: Why does the derived class instance need to be duplicated with TkComposite
    Date: Sat, 2 Sep 2006 00:32:16 +0900
    Message-ID: <>
    > Is there any reason to duplicate the derived class instance when using
    > TkComposite ?


    TkComposite is used to create a Mega-widget class which is constructed
    with some widgets on one frame (a base frame).
    The module overrides "initialize" method.
    The new "initialize" creates a new base frame (set it to @frame) and
    call "initialize_composite" method (anticipates "initialize_composite"
    constructs all part of the mega-widget).

    Please imagine a mega-widget which is a text widget with some decoration.
    Then, because your mega-widget should have properties of a text
    widget, you will inherit TkText class for your mega-widget class.
    However, TkComposite#initialize doesn't create a TkText widget.
    You must construct a text widget and other widgets (to decorate the
    text widget) on one base frame widget to treat it as one component
    (You must do that in "initialize_composite" mehtod).

    Now, all method calls about geometry management (pack, grid, and so
    on) must be sent to the base frame, and all methods to control the
    text must be sent to the text widget.
    @epath and @path instance variables are used for this purpose.
    @epath keeps the widget path of the base frame, and @path keeps the
    widget path of the text widget.
    Methods about geometry management refer @epath, and other methods
    refer @path. That is the reason of why inherited methods can be sent
    to the proper widget. And, I think, it will be an answer to your question.
    --
    Hidetoshi NAGAI ()
     
    Hidetoshi NAGAI, Sep 5, 2006
    #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. Replies:
    0
    Views:
    420
  2. Sridhar R
    Replies:
    14
    Views:
    1,421
    =?iso-8859-1?Q?Fran=E7ois?= Pinard
    Feb 10, 2004
  3. Mr. SweatyFinger
    Replies:
    2
    Views:
    2,071
    Smokey Grindel
    Dec 2, 2006
  4. Replies:
    1
    Views:
    403
    myork
    May 23, 2007
  5. Replies:
    1
    Views:
    393
    Victor Bazarov
    May 23, 2007
Loading...

Share This Page