Laxkit  0.0.7.1
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends
LaxInterfaces::ViewerWindow Class Reference

Class for providing a ViewportWindow together with rulers, scrollers, etc. More...

Inheritance diagram for LaxInterfaces::ViewerWindow:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 ViewerWindow (Laxkit::anXWindow *parnt, const char *nname, const char *ntitle, unsigned long nstyle, int xx, int yy, int ww, int hh, int brder, ViewportWindow *vw=NULL)
 Constructor.
virtual const charwhattype ()
virtual int init ()
virtual Laxkit::ShortcutHandlerGetShortcuts ()
virtual int CharInput (unsigned int ch, const char *buffer, int len, unsigned int state, const Laxkit::LaxKeyboard *d)
 Key presses.
virtual int Event (const Laxkit::EventData *e, const char *mes)
virtual void PostMessage (const char *mes)
 Set the text of mesbar if it exists, or call app->postmessage(mes).
virtual void SetRealUnits ()
 Try to ensure that the units in the rulers reflect some measure of reality for pixel size.
virtual int RemoveTool (int id)
 Remove tool with id from the list of tools.
virtual int AddTool (anInterface *i, char selectalso, int absorbcount)
 Add i to tools, and make it the current tool if selectalso with call to SelectTool(i->id).
virtual int SelectTool (const char *type)
virtual int SelectTool (int id)
 Make the tool with this id the current tool, or previous (id==-2), next (id==-1), or first (id==0).
virtual int SelectToolFor (const char *datatype, ObjectContext *oc=NULL)
 Select a tool that can handle datatype, where datatype==data->whattype==interface->whatdatatype().
virtual anInterfaceCurrentTool ()
virtual anInterfaceFindInterface (const char *which)
 Return the interface in tools with whattype equal to which.
virtual int PushInterface (anInterface *i, int absorbcount)
 Just calls viewportwindow->Push(i,local)
virtual int PopInterface (anInterface *i)
 Just calls viewportwindow->Pop(i,1)
virtual int tools_n ()
virtual anInterfacetools_e (int i)
- Public Member Functions inherited from Laxkit::RowFrame
 RowFrame (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 owner, const char *mes, int npad=0)
 RowFrame constructor.
virtual int Sync (int add=0)
 Sync the boxes to win_w/win_h, which are assumed set already.
virtual int MoveResize (int nx, int ny, int nw, int nh)
 Calls anXWindow::MoveResize, then Sync(0).
virtual int Resize (int nw, int nh)
 Calls anXWindow::Resize, then Sync(0).
virtual int findWindowIndex (const char *name)
 Return the index in RowColBox::wholelist containing a window with name as the title.
virtual anXWindowfindWindow (const char *name)
 Return the window in RowColBox::wholelist that has name as its win_name or win_title.
virtual int AddNull (int where=-1)
 Call this to insert a line break into the window stack.
virtual int AddHSpacer (int npw, int nws, int nwg, int nhalign, int where=-1)
virtual int AddVSpacer (int npw, int nws, int nwg, int nhalign, int where=-1)
virtual int AddSpacer (int npw, int nws, int nwg, int nhalign, int nph, int nhs, int nhg, int nvalign, int where=-1)
virtual int AddWin (WinFrameBox *box, char islocal=1, int where=-1)
 Add an already made WinFrameBox.
virtual int AddWin (anXWindow *win, int absorbcount, int where)
 Add a window using the window's width and height with no squishability.
virtual int AddWin (anXWindow *win, int absorbcount, int npw, int nws, int nwg, int nhalign, int nhgap, int nph, int nhs, int nhg, int nvalign, int nvgap, int where)
 Add a window with squish values.
virtual void Refresh ()
 Call Sync(0) if arrangedstate!=1.
- 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 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 MouseMove (int x, int y, unsigned int state, const LaxMouse *m)
 Empty placeholder, just returns 1.
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 LBDown (int x, int y, unsigned int state, int count, const LaxMouse *d)
 Default is just to return 1.
virtual int LBUp (int x, int y, unsigned int state, const LaxMouse *d)
 Default is just to return 1.
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 WheelUp (int x, int y, unsigned int state, int count, const LaxMouse *d)
 The wheel mouse rolling up. Default is just to return 1.
virtual int WheelDown (int x, int y, unsigned int state, int count, const LaxMouse *d)
 The wheel mouse rolling down. 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 void sync ()
 Sync the box to the already set values of x,y,w,h.
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)

Public Attributes

ViewportWindowviewport
- Public Attributes inherited from Laxkit::RowFrame
unsigned long highlight
unsigned long shadow
unsigned long mobkcolor
unsigned long bkcolor
- 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 pad
 Pad placed around a box, which can be where a bevel or window border would go.
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

Protected Member Functions

virtual int PerformAction (int action)

Protected Attributes

Laxkit::Scrollerxscroller
Laxkit::Scrolleryscroller
Laxkit::RulerWindowxruler
Laxkit::RulerWindowyruler
Laxkit::MessageBarmesbar
Laxkit::PtrStack
< Laxkit::anXWindow
tonotify
Laxkit::RefPtrStack< anInterfacetools
Laxkit::RefPtrStack< anInterfaceoverlays
int rulerh
int scrollerh
anInterfacecurtool
int lazytool
unsigned long viewer_style
Laxkit::ShortcutHandlersc

Friends

class ViewportWindow

Detailed Description

Class for providing a ViewportWindow together with rulers, scrollers, etc.

Currently, this ONLY has the above + messagebar, it is not set up to easily add other little controls for the viewport portion.

ViewerWindow maintains a stack of tools in the form of anInterface instances. Only one tool can be active on the viewport->interfaces stack at one time. Use SelectTool(), AddTool(), and RemoveTool() to adjust the tool stack. Users would call viewer->AddTool(ImageInterface, 1, 1) to add a locally owned ImageInterface tool and make it the current tool. In addition to that, ViewerWindow can pass along interfaces to the viewport->interfaces stack so you can have several interfaces active at the same time in addition to the single tool. See PushInterface() and PopInterface().

Todo:

It would be nice to have the scrollers/rulers/other in some sort of separate container, independent of the interface system... ScrolledWindow just has scrollers, not rulers.

rulers should always extend over whole viewport. Scrollers don't really have to.

have AddToTop/Bottom(other window, etc), AddToLeft/Right, which would sqeeze in other little windows where the scrollers are.

might be useful to have function to change the viewport at any time.

Possible window styles:

#define VIEWER_BACK_BUFFER (1<<16)

Constructor & Destructor Documentation

LaxInterfaces::ViewerWindow::ViewerWindow ( Laxkit::anXWindow parnt,
const char nname,
const char ntitle,
unsigned long  nstyle,
int  xx,
int  yy,
int  ww,
int  hh,
int  brder,
ViewportWindow vw = NULL 
)

Constructor.

When creating a ViewerWindow, a valid ViewportWindow must be passed in. If NULL is passed in, you will surely crash your program later on, as most of ViewerWindow assumes a valid ViewportWindow exists in the viewport variable. The viewport need not have been app->addwindow()'d. That is done in init().

The count of vw is incremented, not absorbed.

These flags are passed to the RowFrame base class: ROWFRAME_ROWS|ROWFRAME_STRETCH_IN_COL|ROWFRAME_STRETCH_IN_ROW

References Laxkit::anXApp::reparent().


Member Function Documentation

int LaxInterfaces::ViewerWindow::AddTool ( anInterface i,
char  selectalso,
int  absorbcount 
)
virtual

Add i to tools, and make it the current tool if selectalso with call to SelectTool(i->id).

i->Dp(&viewport->dp) is called.

The way I do it, this interface will be local to ViewerWindow, and should be a copy of an interface from a pool somewhere. This way, the interface can maintain its own state variables, and settings its dp to viewportwindow->dp is normal and expected.

So when adding tools, say you keep your base interfaces in pool stack, then step through the stack doing AddTool(pool[c]->duplicate(NULL),1,0) will add local copies of the interfaces, and set their dp to the right thing. Works for me...

References Laxkit::anObject::dec_count(), LaxInterfaces::ViewportWindow::dp, LaxInterfaces::anInterface::Dp(), LaxInterfaces::anInterface::id, and SelectTool().

int LaxInterfaces::ViewerWindow::CharInput ( unsigned int  ch,
const char buffer,
int  len,
unsigned int  state,
const Laxkit::LaxKeyboard d 
)
virtual

Key presses.

Todo:
what about: +^'t' toggle lazy tool (whether the tool should stay same if click on object of another type)

Reimplemented from Laxkit::anXWindow.

References Laxkit::ShortcutHandler::FindActionNumber().

int LaxInterfaces::ViewerWindow::Event ( const Laxkit::EventData e,
const char mes 
)
virtual

If there is a child window named "colorbox", then set with the color event.

Reimplemented from Laxkit::anXWindow.

References Laxkit::anXWindow::findChildWindowByName(), Laxkit::ColorBase::SetCMYK(), Laxkit::ColorBase::SetGray(), and Laxkit::ColorBase::SetRGB().

int LaxInterfaces::ViewerWindow::init ( )
virtual

Adds rulers, scrollers, and a messagebar.

Todo:
*** app->addwindow(viewport) is called here, which might be a little silly.

Reimplemented from Laxkit::RowFrame.

References Laxkit::RowFrame::AddNull(), Laxkit::RowFrame::AddWin(), Laxkit::RowFrame::Sync(), Laxkit::PanController::tell(), LaxInterfaces::ViewportWindow::UseTheseRulers(), and LaxInterfaces::ViewportWindow::UseTheseScrollers().

int LaxInterfaces::ViewerWindow::PopInterface ( anInterface i)
virtual

Just calls viewportwindow->Pop(i,1)

This is meant for interfaces that are not exactly tools, such as global shortcuts. The interface is assumed to not be on the tools stack.

References LaxInterfaces::ViewportWindow::Pop().

int LaxInterfaces::ViewerWindow::PushInterface ( anInterface i,
int  absorbcount 
)
virtual

Just calls viewportwindow->Push(i,local)

This is meant for interfaces that are not exactly tools, such as global shortcuts. The interface is not put on the tools stack.

References LaxInterfaces::ViewportWindow::Push().

int LaxInterfaces::ViewerWindow::SelectTool ( const char type)
virtual

Make the tool with the given whattype() the current tool. Basically, find that tool in this->tools, then call SelectTool(id).

References Laxkit::PtrStack< T >::e, and Laxkit::PtrStack< T >::n.

Referenced by AddTool(), and SelectToolFor().

int LaxInterfaces::ViewerWindow::SelectTool ( int  id)
virtual

Make the tool with this id the current tool, or previous (id==-2), next (id==-1), or first (id==0).

Return 1 for error, 0 for tool selected, -1 for overlay toggled.

Calls ViewportWindow::Push and ViewportWindow::Pop to put on and off the tools. Remember that Pop also removes any children of the interface.

If the tool is an overlay, then calling this will toggle whether it is on or off.

References Laxkit::PtrStack< T >::e, Laxkit::PtrStack< T >::findindex(), LaxInterfaces::ViewportWindow::HasInterface(), LaxInterfaces::anInterface::id, Laxkit::PtrStack< T >::n, LaxInterfaces::ViewportWindow::Pop(), LaxInterfaces::anInterface::primary, LaxInterfaces::ViewportWindow::Push(), and Laxkit::MessageBar::SetText().

int LaxInterfaces::ViewerWindow::SelectToolFor ( const char datatype,
ObjectContext oc = NULL 
)
virtual

Select a tool that can handle datatype, where datatype==data->whattype==interface->whatdatatype().

Return 0 if curtool has been adjusted and there is a tool change, 2 for unknown datatype, 1 for successful tool change, and the tool cannot use data.

References Laxkit::PtrStack< T >::e, Laxkit::PtrStack< T >::n, and SelectTool().

Referenced by LaxInterfaces::ViewportWithStack::ChangeObject(), and LaxInterfaces::ViewportWithStack::SelectObject().

void LaxInterfaces::ViewerWindow::SetRealUnits ( )
virtual

Try to ensure that the units in the rulers reflect some measure of reality for pixel size.

This uses anXApp::ScreenInfo() to try to figure out how big pixels are on your monitor, and configure the rulers accordingly.

Todo:
**** IMPLEMENT ME!! should somehow use a syncwithscreen option in RulerWindow this is troublesome because the values returned by X are not very reliable

References Laxkit::GetUnitManager(), Laxkit::SimpleUnit::PixelSize(), and Laxkit::anXApp::ScreenInfo().


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

Mon Feb 17 2014 11:52:58, Laxkit