Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re: Tk::Notebook - Scrolling Tabs (diy)

by Anonymous Monk
on May 14, 2013 at 04:40 UTC ( #1033402=note: print w/replies, xml ) Need Help??

in reply to Tk::Notebook - Scrolling/Stacking Tabs

Am I missing something obvious?

<< This :)

Create your own widget, create a superwidget, steal/borrow ideas from other widgets
Top pane, a bunch of buttons, bottom pane, load active tab
When you click a button, when you load its pane, you change its apperance

Middle click can hide button...

There are two-four static/fixed button, for scrolling through tab-buttons, creating new ones, popping up a menu/list of all tab-button
The button list takes up most of the memory (but doesn't have to, cheapest implementation), it is scrollable ... or a canvas, whatever
The bottom pane is loaded/unloaded on demand
This way you choose how many buttons are shown, how big they are ... Tk::Notebook is simple (pretty much they all are)
Search for packforget, notebook:), see Tk::NoteBook memory usage, TK: adding notebook tabs dynamically, Tk::TabFrame, Tk::DynaTabFrame,,

Prima::Notebooks, Wx::Perl::ListView, ...
wxperl_demo --show AUI #wxAuiNotebook
wxperl_demo --show wxNotebook
wxperl_demo --show wxRibbonControl

  • Comment on Re: Tk::Notebook - Scrolling Tabs (diy)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1033402]
[ambrus]: Ok, the docs is somewhat unclear. It does say that when an object is garbage collected, it will get cleaned up, and eventually can no longer get messages. It's not clear how long this takes, eg. I think it's kept alive until its queued events are handled
[ambrus]: in the loop, and I'm not sure if that's ok for AnyEvent. Also, it's not clear if a Timer or File object you free really is garbage collected, i.e. that Prima doesn't keep some references to it, but I hope so.
[Corion]: choroba: No, I don't remember that story, but yes, it matches my experience ;))
[ambrus]: Hopefull the object isn't kept alive, the events are processed immediately, but you'd have to read a lot of source code to be sure about that.
[Corion]: ambrus: I think both of AnyEvent and Prima are pretty tight in their memory management because they both are cooperative multitasking and (I think) both use the Perl memory management for managing things
[Corion]: ambrus: And for Windows, I don't think that Prima knows if there still are messages queued for an object (in the Windows message loop). Finding that out would take lots of effort for little gain
[ambrus]: And even if this works, I'm still not sure you can't get double timeouts from a Timer.
[ambrus]: Corion: well Prima::Object says something like that the cleanup method will send an onDestory message and that you can't get more messages after cleanup, or something.
[Corion]: ambrus: Yeah - I don't think the deep source dive will be necessary if things are implemented as simple as they could be :)) And hopefully I won't need (more) timely object destruction. I can update the screen at 60Hz and hopefully even do HTTP ...
[Corion]: ... transfers in the background. Now that I think about it, this maybe even means that I can run the OpenGL filters on Youtube input :)

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (8)
As of 2016-12-09 10:25 GMT
Find Nodes?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:

    Results (150 votes). Check out past polls.