/*
* ion/ioncore/infowin.h
*
- * Copyright (c) Tuomo Valkonen 1999-2006.
+ * Copyright (c) Tuomo Valkonen 1999-2008.
*
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
+ * See the included file LICENSE for details.
*/
#include <string.h>
#include "resize.h"
#include "gr.h"
#include "event.h"
+#include "strings.h"
/*{{{ Init/deinit */
goto fail2;
p->brush=NULL;
- p->attr=NULL;
+
+ gr_stylespec_init(&p->attr);
infowin_updategr(p);
if(p->brush==NULL)
goto fail3;
- p->wwin.region.flags|=REGION_SKIP_FOCUS;
-
/* Enable save unders */
attr.save_under=True;
XChangeWindowAttributes(ioncore_g.dpy, p->wwin.win, CWSaveUnder, &attr);
return TRUE;
-fail3:
+fail3:
+ gr_stylespec_unalloc(&p->attr);
free(p->style);
fail2:
free(p->buffer);
p->buffer=NULL;
}
- if(p->attr!=NULL){
- free(p->attr);
- p->attr=NULL;
- }
-
if(p->style!=NULL){
free(p->style);
p->style=NULL;
p->brush=NULL;
}
+ gr_stylespec_unalloc(&p->attr);
+
window_deinit(&(p->wwin));
}
g.h=REGION_GEOM(p).h;
grbrush_begin(p->brush, &g, GRBRUSH_NO_CLEAR_OK);
- grbrush_draw_textbox(p->brush, &g, p->buffer, p->attr, TRUE);
+ grbrush_init_attr(p->brush, &p->attr);
+ grbrush_draw_textbox(p->brush, &g, p->buffer, TRUE);
grbrush_end(p->brush);
}
/*{{{ Content-setting */
-bool infowin_set_attr2(WInfoWin *p, const char *attr1, const char *attr2)
+GrStyleSpec *infowin_stylespec(WInfoWin *p)
{
- char *p2=NULL;
-
- if(attr1!=NULL){
- if(attr2==NULL)
- p2=scopy(attr1);
- else
- libtu_asprintf(&p2, "%s-%s", attr1, attr2);
- if(p2==NULL)
- return FALSE;
- }
-
- if(p->attr)
- free(p->attr);
-
- p->attr=p2;
-
- return TRUE;
+ return &p->attr;
}
* Set contents of the info window.
*/
EXTL_EXPORT_MEMBER
-void infowin_set_text(WInfoWin *p, const char *str)
+void infowin_set_text(WInfoWin *p, const char *str, int maxw)
{
- infowin_do_set_text(p, str);
+ bool set=FALSE;
+
+ if(maxw>0 && p->brush!=NULL){
+ char *tmp=grbrush_make_label(p->brush, str, maxw);
+ if(tmp!=NULL){
+ infowin_do_set_text(p, tmp);
+ free(tmp);
+ set=TRUE;
+ }
+ }
+
+ if(!set)
+ infowin_do_set_text(p, str);
infowin_resize(p);