module helper.x11;

import cboxapp;
import window;

import std.conv;
import std.string;
import deimos.X11.X;
import deimos.X11.Xlib;
import deimos.X11.keysymdef;
import deimos.X11.Xutil;
import deimos.X11.Xatom;

class X11Helper
{
	static bool gettextprop(Window w, Atom atom, out string text) 
	{
	    static immutable size_t MAX_TEXT_LENGTH = 256;
	    XTextProperty name;
	    XGetTextProperty(AppDisplay.instance().dpy, w, &name, atom);

	    if(!name.nitems)
	        return false;

	    if(name.encoding == XA_STRING) {
	        text = (cast(char*)(name.value)).fromStringz.to!string;
	    } else {
	        char **list = null;
	        int n;
	        if(XmbTextPropertyToTextList(AppDisplay.instance().dpy, &name, &list, &n) >= XErrorCode.Success &&
	                n > 0 &&
	                *list) {
	            text = (*list).fromStringz.to!string;
	            XFreeStringList(list);
	        }
	    }

	    XFree(name.value);
	    return true;
	}
}