Laxkit  0.0.7.1
Public Member Functions | Protected Member Functions | Protected Attributes
Laxkit::TabFrame Class Reference

A frame to hold tabbed windows via TabBox objects. More...

Inheritance diagram for Laxkit::TabFrame:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 TabFrame (anXWindow *parnt, const char *nname, const char *ntitle, unsigned long nstyle, int xx, int yy, int ww, int hh, int brder, anXWindow *prev, unsigned long nowner, const char *nsendmes, int npad=0, int npadg=5)
virtual const charwhattype ()
virtual int init ()
 Calls BoxSelector::init(), then SyncWindow(1).
virtual void Refresh ()
virtual int AddWin (anXWindow *nwin, int absorbcount, const char *nlabel, const char *iconfilename, int makebw)
 Add a new tab with the given window, label, and icon.
virtual int SelectN (int which)
 Calls BoxSelector::SelectN(), then unmaps old tab, and maps new tab.
virtual int CharInput (unsigned int ch, const char *buffer, int len, unsigned int state, const LaxKeyboard *d)
virtual int WheelUp (int x, int y, unsigned int state, int count, const LaxMouse *d)
 Select previous tab.
virtual int WheelDown (int x, int y, unsigned int state, int count, const LaxMouse *d)
 Select next tab.
- Public Member Functions inherited from Laxkit::IconSelector
 IconSelector (anXWindow *parnt, const char *nname, const char *ntitle, unsigned long nstyle, int xx, int yy, int ww, int hh, int brder, anXWindow *prev, unsigned long nowner, const char *nsendmes, int npadx=0, int npady=0)
 ~IconSelector ()
 Empty destructor.
virtual void drawbox (int which)
 Draw the icon box.
virtual void FillBox (IconBox *b, const char *nlabel, LaxImage *img, int makebw)
 Fill the given box with the label, and the icon from filename.
virtual void FillBox (IconBox *b, const char *nlabel, const char *filename, int makebw)
 Loads image, then calls FillBox(IconBox *,const char *,LaxImage *,int).
virtual int AddBox (const char *nlabel, LaxImage *img, int makebw=0)
 Add box and return its index.
virtual int AddBox (const char *nlabel, const char *filename, int makebw=0)
 Just returns AddBox(NULL,load_image(filename),makebw).
- Public Member Functions inherited from Laxkit::BoxSelector
 BoxSelector (anXWindow *parnt, const char *nname, const char *ntitle, unsigned long nstyle, int xx, int yy, int ww, int hh, int brder, anXWindow *prev, unsigned long nowner, const char *nsendmes, int nid=0, int npad=0)
 Constructor.
virtual void sync ()
 Set the w/h, then calls SquishyBox::sync().
virtual int Event (const EventData *e, const char *mes)
 Catch EnterNotify and LeaveNotify.
virtual int MoveResize (int nx, int ny, int nw, int nh)
 Call anXWindow::MoveResize, and set arrangedstate=0.
virtual int Resize (int nw, int nh)
 Call anXWindow::Resize, and set arrangedstate=0.
virtual int MouseMove (int x, int y, unsigned int state, const LaxMouse *d)
 Keeps track of where mouse is, whether or not a button is pressed.
virtual int LBDown (int x, int y, unsigned int state, int count, const LaxMouse *d)
 Find what box is down in (set lbdown to index of it), and toggle it.
virtual int LBUp (int x, int y, unsigned int state, const LaxMouse *d)
 Select which box mouse is in, if it is the same as it was clicked down on.
virtual int Select (int whichID)
 Select a box based on box->id, and return curbox.
virtual int MouseInWhich (int x, int y)
 Checks what box the mouse is in, including box pad.
virtual int send ()
 Send a message to the owner.
- Public Member Functions inherited from Laxkit::anXWindow
 anXWindow (anXWindow *parnt, const char *nname, const char *ntitle, unsigned long nstyle, int xx, int yy, int ww, int hh, int brder, anXWindow *prev, unsigned long nowner, const char *nsend)
 Constructor.
virtual ~anXWindow ()
 anXWindow destructor. Its X window should have been XDestroy'd before here.
virtual const charWindowTitle (int which=0)
 Return basically the name of the window.
virtual void WindowTitle (const char *newtitle)
 Change the title of the window. This text would usually be displayed in the bar provided by a window manager.
virtual const chartooltip (int mouseid=0)
 By default, return win_tooltip.
virtual const chartooltip (const char *newtooltip)
 Replace the current tooltip, return the current tooltip (after replacing).
virtual anXWindowfindChildWindowByTitle (const char *title)
 Find the first immediate child window that has win_title==title.
virtual anXWindowfindChildWindowByName (const char *name)
 Find the first immediate child window that has win_name==name.
virtual int Grayed ()
 Return whether this window is grayed.
virtual int Grayed (int g)
 Set the gray state of this window. Returns Grayed(void).
virtual int preinit ()
virtual int close ()
 Called by anXApp from anXApp::destroywindow() when a window is to be destroyed.
virtual int Idle (int tid=0)
 anXWindow::Idle() is an empty placeholeder. Just returns 1.
virtual DisplayerMakeCurrent ()
virtual int Needtodraw ()
 Default is to return needtodraw.
virtual void Needtodraw (int nntd)
 If 0, then the window does not need refreshing. Otherwise it does.
virtual int deletenow ()
 Return whether the window is allowed to be deleted.
virtual int setWinStyle (unsigned int stylebit, int newvalue)
 Control various window related basic styling of win_style.
virtual int getWinStyle (unsigned int stylebit)
 Currently, simply return win_style&stylebit.
virtual void installColors (WindowColors *newcolors)
 Dec_count old and inc_count new.
virtual ShortcutHandlerGetShortcuts ()
 Return a ShortcutHandler that contains stacks of bound shortcuts and possible window actions.
virtual int PerformAction (int action_number)
virtual int ExposeChange (ScreenEventData *e)
 Default behavior on Expose events is to call Needtodraw(1).
virtual int DeviceChange (const DeviceEventData *e)
virtual int KeyUp (unsigned int ch, unsigned int state, const LaxKeyboard *kb)
 Called when a key is released.
virtual int ButtonDown (int button, int x, int y, unsigned int state, int count, const LaxMouse *m)
virtual int ButtonUp (int button, int x, int y, unsigned int state, const LaxMouse *m)
virtual int MBDown (int x, int y, unsigned int state, int count, const LaxMouse *d)
 Default is just to return 1.
virtual int MBUp (int x, int y, unsigned int state, const LaxMouse *d)
 Default is just to return 1.
virtual int RBDown (int x, int y, unsigned int state, int count, const LaxMouse *d)
 Default is just to return 1.
virtual int RBUp (int x, int y, unsigned int state, const LaxMouse *d)
 Default is just to return 1.
virtual int FocusOn (const FocusChangeData *e)
 Increment win_active, and highlights the window's border, if the event refers to this window.
virtual int FocusOff (const FocusChangeData *e)
 Decrements win_active, and de-highlights the window's border if win_active==0, if event is a real focus off.
virtual void contentChanged ()
 Windows may call this when their contents change.
virtual void selectionChanged ()
 Windows may call this when their selections change.
virtual anXWindowGetController ()
 Return the window most relevant for tab control loops.
virtual int SelectNextControl (const LaxDevice *d)
 Transfer focus to nextcontrol.
virtual int SelectPrevControl (const LaxDevice *d)
 Transfer the focus to prevcontrol.
virtual void ControlActivation (int on)
 Do special activation or not when controls are activated by tabbing.
virtual int AddPrevControl (anXWindow *prev)
virtual int AddNextControl (anXWindow *next)
virtual int ConnectControl (anXWindow *towhat, int after=1)
 Connect towhat to this. Used for tab loops.
virtual int CloseControlLoop ()
 Close a tab loop.
virtual void SetOwner (anXWindow *nowner, const char *mes=NULL, unsigned int send_mask=0)
 Set the new owner and control message.
virtual void SetOwner (unsigned long nowner_id, const char *mes=NULL, unsigned int send_mask=0)
virtual void dump_out (FILE *f, int indent, int what, anObject *context)
 Simple dumping function.
virtual LaxFiles::Attributedump_out_atts (LaxFiles::Attribute *att, int what, anObject *context)
virtual void dump_in_atts (LaxFiles::Attribute *att, int flag, anObject *context)
- Public Member Functions inherited from Laxkit::Tagged
virtual int HasTag (const char *tag, int casematters)
 Return whether the tag exists.
virtual int NumberOfTags ()
 Return the number of tags, strangely enough.
virtual const charGetTag (int i)
 Return const pointer to the tag text for tag number i, where i==0 is the first tag.
virtual charGetAllTags ()
 Return a new char[] with a space separated list of all the tags.
virtual int InsertTags (const char *tags, int casematters)
 Insert tags from a string such as 'tag1 tag2 tag3 "tag with spaces" tag4'.
virtual int InsertTag (const char *tag, int casematters)
 Insert tag if it doesn't exist already.
virtual int RemoveTag (const char *tag)
 The tag must be an exact match.
virtual int RemoveTag (int i)
 Remove tag number i. i must be in range [0..NumberOfTags()-1].
virtual void FlushTags ()
- Public Member Functions inherited from LaxFiles::DumpUtility
virtual void dump_in (FILE *f, int indent, int what, Laxkit::anObject *loadcontext, Attribute **att)
 Read in a file segment as an Attribute, and pass parsing duties to dump_in_atts.
virtual ~DumpUtility ()
 Empty virtual destructor.
- Public Member Functions inherited from Laxkit::aDrawable
 aDrawable (Drawable d=0)
virtual int DrawableType ()
virtual int ValidDrawable ()
- Public Member Functions inherited from Laxkit::RowColBox
 RowColBox (unsigned int nflags, int nx, int nw, int npw, int nws, int nwg, int nhalign, int nhgap, int ny, int nh, int nph, int nhs, int nhg, int nvalign, int nvgap)
 Main RowColBox constructor.
virtual void Push (SquishyBox *box, char islocal=0, int where=-1)
 Push box onto wholelist with islocal.
virtual int Pop (int which=-1)
 Remove box with index which from wholelist.
virtual void Flush ()
 Flush list, and if list does not exist, then create a new list.
virtual int arrangeBoxes (int distributetoo=0)
 Set up SquishyBox::list to contain rows and columns based on boxes in wholelist.
virtual int distributeBoxes (int setmetrics=0)
 Assign the x,y,w,h of the child boxes.
- Public Member Functions inherited from Laxkit::ListBox
 ListBox (unsigned int flag=0)
 Create box as either BOX_VERTICAL or BOX_HORIZONTAL. Other flag values are ignored.
 ListBox (unsigned int nflags, int nx, int nw, int npw, int nws, int nwg, int nhalign, int nhgap, int ny, int nh, int nph, int nhs, int nhg, int nvalign, int nvgap)
virtual int WrapToExtent ()
 Sets this->pw,s,g/ph,s,g to be the sum of the metrics of the boxes in list.
virtual int figureDimensions (ListBox *target, int *nextrow=NULL, SquishyBox **boxes=NULL, int n=0, double *squishx=NULL, double *squishy=NULL)
 Finds pw,s,g/ph,s,g based on the boxes in list.
- Public Member Functions inherited from Laxkit::SquishyBox
 SquishyBox (unsigned int nflags, int nx, int nw, int npw, int nws, int nwg, int nhalign, int nhgap, int ny, int nh, int nph, int nhs, int nhg, int nvalign, int nvgap)
 SquishyBox Constructor.
virtual int hideBox (int yeshide)
 hideBox(0) makes the box visible, otherwise, make it hidden. Returns state after call.
virtual int hidden ()
 Return whether the box is hidden or not.
virtual void sync (int xx, int yy, int ww, int hh)
 Sync the box to x,y,w,h.
virtual int x ()
virtual int w ()
virtual int pw ()
virtual int ws ()
virtual int wg ()
virtual int halign ()
virtual int hgap ()
virtual int y ()
virtual int h ()
virtual int ph ()
virtual int hs ()
virtual int hg ()
virtual int valign ()
virtual int vgap ()
virtual int x (int val)
virtual int w (int val)
virtual int pw (int val)
virtual int ws (int val)
virtual int wg (int val)
virtual int halign (int val)
virtual int hgap (int val)
virtual int y (int val)
virtual int h (int val)
virtual int ph (int val)
virtual int hs (int val)
virtual int hg (int val)
virtual int valign (int val)
virtual int vgap (int val)
virtual int fpenalty ()
virtual int fpenalty (int val)
virtual int lpenalty ()
virtual int lpenalty (int val)

Protected Member Functions

virtual int mapWindow (int which, int mapit=1)
 Sync and map the current tab window.

Protected Attributes

int curtab

Additional Inherited Members

- Public Attributes inherited from Laxkit::IconSelector
int padg
 Pad to put around the label, whether or not an icon is present. (the icon is not padded)
int labelstyle
- Public Attributes inherited from Laxkit::BoxSelector
unsigned long highlight
unsigned long shadow
int pad
int padi
int bevel
int curbox
 The box most recently selected.
- Public Attributes inherited from Laxkit::anXWindow
WindowColorswin_colors
anXAppapp
charwin_name
 An arbitrary string to be used as an id.
charwin_title
 The title of the window.
anXWindowwin_parent
int win_screen
unsigned long win_style
int win_x
int win_y
int win_w
int win_h
unsigned int win_border
int win_pointer_shape
 Identifier for a stock mouse shape.
char win_on
 Nonzero if the window is mapped.
char win_active
 Should be positive when the window has a keyboard focus, 0 otherwise.
unsigned long win_owner
 Who gets control messages from this window.
unsigned int win_owner_send_mask
charwin_sendthis
 The type of message that gets sent to owner.
anXWindownextcontrol
anXWindowprevcontrol
- Public Attributes inherited from Laxkit::Tagged
int sorttags
- Public Attributes inherited from Laxkit::RowColBox
unsigned int elementflags
- Public Attributes inherited from Laxkit::ListBox
PtrStack< SquishyBoxlist
- Public Attributes inherited from Laxkit::SquishyBox
int m [14]
int padinset
 Pad to inset the child boxes.
int fpen
 The penalty in the flow direction.
int lpen
 The penalty perpendicular to the flow direction.
unsigned long flags

Detailed Description

A frame to hold tabbed windows via TabBox objects.

! Resize the window to have the current settings for x,y,w,h. ! The SquishyBox x,y,w,h should have been set already, this

You can have a style where each tab is just a button, so the whole thing looks like a normal StrIconSelector, or you can have the usual tabbed window format, where the elements are arranged like tabbed folders, and clicking on an icon, makes that row and icon come to the front. In either case, the tabs are stretched to fill across the window. (*** most of that is still unimplemented)

All the tabs must be clustered at the top, bottom, left or right, and any remaining space is for the selected window.

Pass in BOXSEL_* styles fond for BoxSelector.


Member Function Documentation

int Laxkit::TabFrame::AddWin ( anXWindow nwin,
int  absorbcount,
const char nlabel,
const char iconfilename,
int  makebw 
)
virtual

Add a new tab with the given window, label, and icon.

If makebw is not 0, then automatically create a black and white icon from the specified icon (this is unimplemented).

If absorbcount, then the reference count of nwin is absorbed, and the calling code need not dec_count(). This lets you call AddWin(new SomeWindow, absorbcount=1) and you don't have to worry about decrementing the window any more.

References Laxkit::anObject::dec_count(), Laxkit::IconSelector::FillBox(), mapWindow(), Laxkit::PtrStack< T >::n, Laxkit::PtrStack< T >::push(), Laxkit::anXApp::reparent(), and Laxkit::RowColBox::wholelist.

int Laxkit::TabFrame::mapWindow ( int  which,
int  mapit = 1 
)
protectedvirtual

Sync and map the current tab window.

Assumes that sync() on this has already been called. That is, this should be the correct size before calling this function. Turns on if mapit!=0 and off if mapit==0.

If turning on, then the which window also gets resized to the space left over from the boxes.

References Laxkit::anXApp::addwindow(), Laxkit::PtrStack< T >::e, Laxkit::anXApp::mapwindow(), Laxkit::anXWindow::MoveResize(), Laxkit::PtrStack< T >::n, Laxkit::anXApp::unmapwindow(), Laxkit::RowColBox::wholelist, and Laxkit::anXWindow::WindowTitle().

Referenced by AddWin(), init(), Refresh(), and SelectN().

void Laxkit::TabFrame::Refresh ( )
virtual
Todo:
implement draw tab outlines style (like folder tabs), rather than default button style (a bevel)

Reimplemented from Laxkit::BoxSelector.

References mapWindow(), and Laxkit::BoxSelector::sync().

int Laxkit::TabFrame::SelectN ( int  which)
virtual

Calls BoxSelector::SelectN(), then unmaps old tab, and maps new tab.

Todo:
rearrange rows when a tab has to be brought forward!!

Returns the index of the current box after the change.

Reimplemented from Laxkit::BoxSelector.

References Laxkit::BoxSelector::curbox, Laxkit::PtrStack< T >::e, mapWindow(), Laxkit::PtrStack< T >::n, and Laxkit::RowColBox::wholelist.

Referenced by init(), WheelDown(), and WheelUp().


The documentation for this class was generated from the following files:

Mon Feb 17 2014 11:53:00, Laxkit