diff options
Diffstat (limited to 'curses/cursescontainer.H')
| -rw-r--r-- | curses/cursescontainer.H | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/curses/cursescontainer.H b/curses/cursescontainer.H new file mode 100644 index 0000000..11f45f3 --- /dev/null +++ b/curses/cursescontainer.H @@ -0,0 +1,76 @@ +/* +** Copyright 2002, Double Precision Inc. +** +** See COPYING for distribution information. +*/ + +#ifndef cursescontainer_H +#define cursescontainer_H + +#include "../curses/curses_config.h" +#include "mycurses.H" + +#include <wchar.h> +#include <vector> + +//////////////////////////////////////////////////////////////////////// +// +// CursesContainer is a superclass for all Curses objects that contain +// other Curses object. + +class CursesContainer : public Curses { + + class Child { + public: + Curses *child; + + Child(Curses *childArg) : child(childArg) + { + } + }; + + std::vector<Child> children; + + std::vector<Child>::iterator drawIndex; + +public: + friend class Curses; + + CursesContainer(CursesContainer *parent=0); + ~CursesContainer(); + + // getWidth()/getHeight() computes the largest rectangle that + // contains all current children. + + virtual int getWidth() const; + virtual int getHeight() const; + + virtual Curses *getDialogChild() const; + + // draw/erase recursively invoke draw/erase methods of all children, + // unless a child CursesObject's isDialog() method returns true, in + // which case only that child's draw/erase method is called. + + virtual void draw(); + virtual void erase(); + + // The default resized() method recursively invokes the resized() + // method of all children. + + virtual void resized(); + + // The constructor and the destructor of a Curses object automatically + // calls addChild/deleteChild to register the new child process. + + virtual void addChild(Curses *child); + virtual void deleteChild(Curses *child); + + // The default implementation of getNextFocus()/getPrevFocus() + // return the pointer to the first or the last child. + + virtual Curses *getNextFocus(); + virtual Curses *getPrevFocus(); +}; + + +#endif |
