Import sources from 2011-03-30 iso image - sys/include
This commit is contained in:
parent
e5888a1ffd
commit
c558a99e0b
105 changed files with 11410 additions and 0 deletions
213
sys/include/control.h
Executable file
213
sys/include/control.h
Executable file
|
@ -0,0 +1,213 @@
|
|||
#pragma src "/sys/src/libcontrol"
|
||||
#pragma lib "libcontrol.a"
|
||||
|
||||
#pragma varargck argpos ctlprint 2
|
||||
#pragma varargck argpos _ctlprint 2
|
||||
|
||||
typedef struct Control Control;
|
||||
typedef struct Controlset Controlset;
|
||||
typedef struct CParse CParse;
|
||||
typedef struct CCache CCache;
|
||||
typedef struct CCache CImage;
|
||||
typedef struct CCache CFont;
|
||||
|
||||
enum /* types */
|
||||
{
|
||||
Ctlunknown,
|
||||
Ctlbox,
|
||||
Ctlbutton,
|
||||
Ctlentry,
|
||||
Ctlkeyboard,
|
||||
Ctllabel,
|
||||
Ctlmenu,
|
||||
Ctlradio,
|
||||
Ctlscribble,
|
||||
Ctlslider,
|
||||
Ctltabs,
|
||||
Ctltext,
|
||||
Ctltextbutton,
|
||||
Ctltextbutton3,
|
||||
Ctlgroup, /* divider between controls and metacontrols */
|
||||
Ctlboxbox,
|
||||
Ctlcolumn,
|
||||
Ctlrow,
|
||||
Ctlstack,
|
||||
Ctltab,
|
||||
Ntypes,
|
||||
};
|
||||
|
||||
struct Controlset
|
||||
{
|
||||
Control *controls;
|
||||
Image *screen;
|
||||
Control *actives;
|
||||
Control *focus;
|
||||
Channel *ctl;
|
||||
Channel *data; /* currently only for sync */
|
||||
Channel *kbdc;
|
||||
Channel *mousec;
|
||||
Channel *resizec;
|
||||
Channel *resizeexitc;
|
||||
Channel *csexitc;
|
||||
Keyboardctl *keyboardctl; /* will be nil if user supplied keyboard */
|
||||
Mousectl *mousectl; /* will be nil if user supplied mouse */
|
||||
int clicktotype; /* flag */
|
||||
};
|
||||
|
||||
struct Control
|
||||
{
|
||||
/* known to client */
|
||||
char *name;
|
||||
Rectangle rect;
|
||||
Rectangle size; /* minimum/maximum Dx, Dy (not a rect) */
|
||||
Channel *event; /* chan(char*) to client */
|
||||
Channel *data; /* chan(char*) to client */
|
||||
|
||||
/* internal to control set */
|
||||
int type;
|
||||
int hidden; /* hide hides, show unhides (and redraws) */
|
||||
Controlset *controlset;
|
||||
Image *screen; /* where Control appears */
|
||||
char *format; /* used to generate events */
|
||||
char wevent; /* event channel rewired */
|
||||
char wdata; /* data channel rewired */
|
||||
|
||||
/* method table */
|
||||
void (*ctl)(Control*, CParse*);
|
||||
void (*mouse)(Control*, Mouse*);
|
||||
void (*key)(Control*, Rune*);
|
||||
void (*exit)(Control*);
|
||||
void (*setsize)(Control*);
|
||||
void (*activate)(Control*, int);
|
||||
Control *nextactive;
|
||||
Control *next;
|
||||
};
|
||||
|
||||
struct CCache
|
||||
{
|
||||
union{
|
||||
Image *image;
|
||||
Font *font;
|
||||
};
|
||||
char *name;
|
||||
int index; /* entry number in cache */
|
||||
int ref; /* one for client, plus one for each use */
|
||||
};
|
||||
|
||||
struct CParse
|
||||
{
|
||||
char str[256];
|
||||
char *sender;
|
||||
char *receiver;
|
||||
int cmd;
|
||||
char *pargs[32];
|
||||
int iargs[32];
|
||||
char **args;
|
||||
int nargs;
|
||||
};
|
||||
|
||||
enum /* alignments */
|
||||
{
|
||||
Aupperleft = 0,
|
||||
Auppercenter,
|
||||
Aupperright,
|
||||
Acenterleft,
|
||||
Acenter,
|
||||
Acenterright,
|
||||
Alowerleft,
|
||||
Alowercenter,
|
||||
Alowerright,
|
||||
Nalignments
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
_Ctlmaxsize = 10000,
|
||||
};
|
||||
|
||||
extern char *ctltypenames[];
|
||||
|
||||
/* Functions used internally */
|
||||
void _ctladdgroup(Control*, Control*);
|
||||
void _ctlargcount(Control*, CParse*, int);
|
||||
Control* _createctl(Controlset*, char*, uint, char*);
|
||||
Rune* _ctlrunestr(char*);
|
||||
char* _ctlstrrune(Rune*);
|
||||
void _ctlputsnarf(Rune*);
|
||||
Rune* _ctlgetsnarf(void);
|
||||
int _ctlalignment(char*);
|
||||
Point _ctlalignpoint(Rectangle, int, int, int);
|
||||
void _ctlfocus(Control*, int);
|
||||
void _activategroup(Control*);
|
||||
void _deactivategroup(Control*);
|
||||
int _ctllookup(char *s, char *tab[], int ntab);
|
||||
void _ctlprint(Control *c, char *fmt, ...);
|
||||
|
||||
/* images */
|
||||
CImage* _getctlimage(char*);
|
||||
void _setctlimage(Control*, CImage**, char*);
|
||||
void _putctlimage(CImage*);
|
||||
CFont* _getctlfont(char*);
|
||||
void _putctlfont(CFont*);
|
||||
|
||||
/* fonts */
|
||||
CImage* _getctlfont(char*);
|
||||
void _setctlfont(Control*, CImage**, char*);
|
||||
void _putctlfont(CImage*);
|
||||
CFont* _getctlfont(char*);
|
||||
void _putctlfont(CFont*);
|
||||
|
||||
/* Public functions */
|
||||
|
||||
/* images */
|
||||
int namectlimage(Image*, char*);
|
||||
int freectlimage(char*);
|
||||
|
||||
/* fonts */
|
||||
int namectlfont(Font*, char*);
|
||||
int freectlfont(char*);
|
||||
|
||||
/* commands */
|
||||
int ctlprint(Control*, char*, ...);
|
||||
|
||||
/* general */
|
||||
void initcontrols(void);
|
||||
Controlset* newcontrolset(Image*, Channel*, Channel*, Channel*);
|
||||
void closecontrolset(Controlset*);
|
||||
void closecontrol(Control*);
|
||||
void ctlerror(char*, ...);
|
||||
Control* controlcalled(char*);
|
||||
|
||||
/* publicly visible error-checking allocation routines */
|
||||
void* ctlmalloc(uint);
|
||||
void* ctlrealloc(void*, uint);
|
||||
char* ctlstrdup(char*);
|
||||
|
||||
/* creation */
|
||||
void controlwire(Control*, char*, Channel*);
|
||||
void activate(Control*);
|
||||
void deactivate(Control*);
|
||||
Control* createbox(Controlset*, char*);
|
||||
Control* createbutton(Controlset*, char*);
|
||||
Control* createcolumn(Controlset*, char*);
|
||||
Control* createboxbox(Controlset*, char*);
|
||||
Control* createentry(Controlset*, char*);
|
||||
Control* createkeyboard(Controlset*, char*);
|
||||
Control* createlabel(Controlset*, char*);
|
||||
Control* createmenu(Controlset*, char*);
|
||||
Control* createradiobutton(Controlset*, char*);
|
||||
Control* createrow(Controlset*, char*);
|
||||
Control* createscribble(Controlset*, char*);
|
||||
Control* createslider(Controlset*, char*);
|
||||
Control* createstack(Controlset*, char*);
|
||||
Control* createtab(Controlset*, char*);
|
||||
Control* createtext(Controlset*, char*);
|
||||
Control* createtextbutton(Controlset*, char*);
|
||||
Control* createtextbutton3(Controlset*, char*);
|
||||
|
||||
/* user-supplied */
|
||||
void resizecontrolset(Controlset*);
|
||||
|
||||
int _ctlsnarffd;
|
||||
char *alignnames[];
|
||||
int ctldeletequits;
|
Loading…
Add table
Add a link
Reference in a new issue