summaryrefslogtreecommitdiff
path: root/props.c
diff options
context:
space:
mode:
Diffstat (limited to 'props.c')
-rw-r--r--props.c94
1 files changed, 85 insertions, 9 deletions
diff --git a/props.c b/props.c
index c36144d..2937845 100644
--- a/props.c
+++ b/props.c
@@ -22,34 +22,89 @@ allspace(char *r)
}
PropVal
-defbackground(void)
+defcolour(int gtag, int ptag)
{
PropVal v;
- v.colour = mkcolour(DWhite);
+ ulong col = DTransparent;
+
+ switch(ptag){
+ case Pbackground:
+ switch(gtag){
+ case Gcontainer:
+ col = DWhite;
+ break;
+ case Gtextbox:
+ col = 0xFFFFEAFF;
+ break;
+ }
+ break;
+ case Pbordercolour:
+ switch(gtag){
+ case Gtextbox:
+ col = DYellowgreen;
+ break;
+ default:
+ col = DRed;
+ break;
+ }
+ break;
+ case Ptextcolour:
+ col = DBlack;
+ break;
+ }
+
+ v.colour = mkcolour(col);
return v;
}
PropVal
-defspacing(void)
+defspacing(int gtag, int ptag)
{
PropVal v;
v.spacing = emalloc(sizeof(Spacing));
+
+ int space = 0;
+
+ switch(ptag){
+ case Pborder:
+ switch(gtag){
+ case Gtextbox:
+ space = 4;
+ break;
+ }
+ break;
+ case Ppadding:
+ switch(gtag){
+ case Gtextbox:
+ space = 2;
+ break;
+ }
+ break;
+ }
+ v.spacing->up = v.spacing->down = v.spacing->left = v.spacing->right = space;
return v;
}
PropVal
-deforientation(void)
+deforientation(int gtag, int ptag)
{
+ USED(gtag);
+ USED(ptag);
+
PropVal v;
v.orientation = Horizontal;
return v;
}
PropVal
-defbordercolour(void)
+deftext(int gtag, int ptag)
{
+ USED(gtag);
+ USED(ptag);
+
PropVal v;
- v.colour = mkcolour(DRed);
+ v.text = emalloc(sizeof(Rune));
+ v.text[0] = 0;
return v;
}
@@ -90,6 +145,15 @@ printorientation(PropVal p)
}
char *
+printtext(PropVal p)
+{
+ char *str = smprint("%S", p.text);
+ if(str == nil)
+ sysfatal("smprint failed");
+ return str;
+}
+
+char *
parsecolour(char *str, PropVal *p)
{
char *r;
@@ -151,6 +215,16 @@ parseorientation(char *str, PropVal *p)
return nil;
}
+char *
+parsetext(char *str, PropVal *p)
+{
+ Rune *rstr = runesmprint("%s", str);
+ if(rstr == nil)
+ sysfatal("runesmprint failed");
+ (*p).text = rstr;
+ return nil;
+}
+
PropVal
getprop(GuiElement *g, int tag)
{
@@ -180,12 +254,14 @@ setprop(GuiElement *g, int tag, PropVal val)
}
PropSpec propspecs[Pmax] = {
- [Pbackground] = {"background", defbackground, printcolour, parsecolour},
+ [Pbackground] = {"background", defcolour, printcolour, parsecolour},
[Pborder] = {"border", defspacing, printspacing, parsespacing},
[Pmargin] = {"margin", defspacing, printspacing, parsespacing},
[Ppadding] = {"padding", defspacing, printspacing, parsespacing},
[Porientation] = {"orientation", deforientation, printorientation, parseorientation},
- [Pbordercolour] = {"bordercolour", defbordercolour, printcolour, parsecolour},
+ [Pbordercolour] = {"bordercolour", defcolour, printcolour, parsecolour},
+ [Ptext] = {"text", deftext, printtext, parsetext},
+ [Ptextcolour] = {"textcolour", defcolour, printcolour, parsecolour},
};
-int baseprops[nbaseprops] = {Pborder, Pmargin, Ppadding, Pbordercolour}; \ No newline at end of file
+int baseprops[nbaseprops] = {Pbackground, Pborder, Pmargin, Ppadding, Pbordercolour}; \ No newline at end of file