X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Fproperty.cc;h=77bdfb0382fefff651a8d5e7ff644174982b54db;hb=805a5dddce6d072c3a3e2485585ee5630688a845;hp=f26795e4dd2d1792e576654759721f49e65586e2;hpb=d13f021b8bb2a6b8e49f69a370409e79a7f02213;p=chaz%2Fopenbox diff --git a/otk/property.cc b/otk/property.cc index f26795e4..77bdfb03 100644 --- a/otk/property.cc +++ b/otk/property.cc @@ -15,9 +15,9 @@ extern "C" { namespace otk { -OBProperty::OBProperty() +Property::Property() { - assert(OBDisplay::display); + assert(Display::display); // make sure asserts fire if there is a problem memset(_atoms, 0, sizeof(_atoms)); @@ -153,7 +153,7 @@ OBProperty::OBProperty() /* * clean up the class' members */ -OBProperty::~OBProperty() +Property::~Property() { } @@ -161,9 +161,9 @@ OBProperty::~OBProperty() /* * Returns an atom from the Xserver, creating it if necessary. */ -Atom OBProperty::create(const char *name) const +Atom Property::create(const char *name) const { - Atom a = XInternAtom(OBDisplay::display, name, False); + Atom a = XInternAtom(Display::display, name, false); assert(a); return a; } @@ -174,14 +174,14 @@ Atom OBProperty::create(const char *name) const * Sets a window property on a window, optionally appending to the existing * value. */ -void OBProperty::set(Window win, Atom atom, Atom type, +void Property::set(Window win, Atom atom, Atom type, unsigned char* data, int size, int nelements, bool append) const { assert(win != None); assert(atom != None); assert(type != None); assert(nelements == 0 || (nelements > 0 && data != (unsigned char *) 0)); assert(size == 8 || size == 16 || size == 32); - XChangeProperty(OBDisplay::display, win, atom, type, size, + XChangeProperty(Display::display, win, atom, type, size, (append ? PropModeAppend : PropModeReplace), data, nelements); } @@ -190,34 +190,34 @@ void OBProperty::set(Window win, Atom atom, Atom type, /* * Set a 32-bit property value on a window. */ -void OBProperty::set(Window win, Atoms atom, Atoms type, +void Property::set(Window win, Atoms atom, Atoms type, unsigned long value) const { assert(atom >= 0 && atom < NUM_ATOMS); assert(type >= 0 && type < NUM_ATOMS); set(win, _atoms[atom], _atoms[type], - reinterpret_cast(&value), 32, 1, False); + reinterpret_cast(&value), 32, 1, false); } /* * Set an array of 32-bit properties value on a window. */ -void OBProperty::set(Window win, Atoms atom, Atoms type, +void Property::set(Window win, Atoms atom, Atoms type, unsigned long value[], int elements) const { assert(atom >= 0 && atom < NUM_ATOMS); assert(type >= 0 && type < NUM_ATOMS); set(win, _atoms[atom], _atoms[type], - reinterpret_cast(value), 32, elements, False); + reinterpret_cast(value), 32, elements, false); } /* * Set an string property value on a window. */ -void OBProperty::set(Window win, Atoms atom, StringType type, - const std::string &value) const +void Property::set(Window win, Atoms atom, StringType type, + const userstring &value) const { assert(atom >= 0 && atom < NUM_ATOMS); assert(type >= 0 && type < NUM_STRING_TYPE); @@ -226,19 +226,19 @@ void OBProperty::set(Window win, Atoms atom, StringType type, switch (type) { case ascii: t = _atoms[Atom_String]; break; case utf8: t = _atoms[Atom_Utf8]; break; - default: assert(False); return; // unhandled StringType + default: assert(false); return; // unhandled StringType } set(win, _atoms[atom], t, reinterpret_cast(const_cast(value.c_str())), - 8, value.size() + 1, False); // add 1 to the size to include the null + 8, value.size() + 1, false); // add 1 to the size to include the null } /* * Set an array of string property values on a window. */ -void OBProperty::set(Window win, Atoms atom, StringType type, - const StringVect &strings) const +void Property::set(Window win, Atoms atom, StringType type, + const userstring::vector &strings) const { assert(atom >= 0 && atom < NUM_ATOMS); assert(type >= 0 && type < NUM_STRING_TYPE); @@ -247,30 +247,30 @@ void OBProperty::set(Window win, Atoms atom, StringType type, switch (type) { case ascii: t = _atoms[Atom_String]; break; case utf8: t = _atoms[Atom_Utf8]; break; - default: assert(False); return; // unhandled StringType + default: assert(false); return; // unhandled StringType } std::string value; - StringVect::const_iterator it = strings.begin(); - const StringVect::const_iterator end = strings.end(); + userstring::vector::const_iterator it = strings.begin(); + const userstring::vector::const_iterator end = strings.end(); for (; it != end; ++it) value += *it + '\0'; set(win, _atoms[atom], t, reinterpret_cast(const_cast(value.c_str())), - 8, value.size(), False); + 8, value.size(), false); } /* * Internal get function used by all of the typed get functions. * Gets an property's value from a window. - * Returns True if the property was successfully retrieved; False if the + * Returns true if the property was successfully retrieved; false if the * property did not exist on the window, or has a different type/size format * than the user tried to retrieve. */ -bool OBProperty::get(Window win, Atom atom, Atom type, +bool Property::get(Window win, Atom atom, Atom type, unsigned long *nelements, unsigned char **value, int size) const { @@ -283,11 +283,11 @@ bool OBProperty::get(Window win, Atom atom, Atom type, unsigned long ret_bytes; int result; unsigned long maxread = *nelements; - bool ret = False; + bool ret = false; // try get the first element - result = XGetWindowProperty(OBDisplay::display, win, atom, 0l, 1l, - False, AnyPropertyType, &ret_type, &ret_size, + result = XGetWindowProperty(Display::display, win, atom, 0l, 1l, + false, AnyPropertyType, &ret_type, &ret_size, nelements, &ret_bytes, &c_val); ret = (result == Success && ret_type == type && ret_size == size && *nelements > 0); @@ -304,8 +304,8 @@ bool OBProperty::get(Window win, Atom atom, Atom type, int remain = (ret_bytes - 1)/sizeof(long) + 1 + 1; if (remain > size/8 * (signed)maxread) // dont get more than the max remain = size/8 * (signed)maxread; - result = XGetWindowProperty(OBDisplay::display, win, atom, 0l, - remain, False, type, &ret_type, &ret_size, + result = XGetWindowProperty(Display::display, win, atom, 0l, + remain, false, type, &ret_type, &ret_size, nelements, &ret_bytes, &c_val); ret = (result == Success && ret_type == type && ret_size == size && ret_bytes == 0); @@ -329,7 +329,7 @@ bool OBProperty::get(Window win, Atom atom, Atom type, /* * Gets a 32-bit property's value from a window. */ -bool OBProperty::get(Window win, Atoms atom, Atoms type, +bool Property::get(Window win, Atoms atom, Atoms type, unsigned long *nelements, unsigned long **value) const { @@ -343,7 +343,7 @@ bool OBProperty::get(Window win, Atoms atom, Atoms type, /* * Gets a single 32-bit property's value from a window. */ -bool OBProperty::get(Window win, Atoms atom, Atoms type, +bool Property::get(Window win, Atoms atom, Atoms type, unsigned long *value) const { assert(atom >= 0 && atom < NUM_ATOMS); @@ -352,31 +352,36 @@ bool OBProperty::get(Window win, Atoms atom, Atoms type, unsigned long num = 1; if (! get(win, _atoms[atom], _atoms[type], &num, reinterpret_cast(&temp), 32)) - return False; + return false; *value = temp[0]; delete [] temp; - return True; + return true; } /* * Gets an string property's value from a window. */ -bool OBProperty::get(Window win, Atoms atom, StringType type, - std::string *value) const +bool Property::get(Window win, Atoms atom, StringType type, + userstring *value) const { unsigned long n = 1; - StringVect s; + userstring::vector s; if (get(win, atom, type, &n, &s)) { *value = s[0]; - return True; + switch (type) { + case ascii: value->setUtf8(false); break; + case utf8: value->setUtf8(true); break; + default: assert(false); return false; // unhandled StringType + } + return true; } - return False; + return false; } -bool OBProperty::get(Window win, Atoms atom, StringType type, - unsigned long *nelements, StringVect *strings) const +bool Property::get(Window win, Atoms atom, StringType type, + unsigned long *nelements, userstring::vector *strings) const { assert(atom >= 0 && atom < NUM_ATOMS); assert(type >= 0 && type < NUM_STRING_TYPE); @@ -384,26 +389,27 @@ bool OBProperty::get(Window win, Atoms atom, StringType type, assert(*nelements > 0); Atom t; + bool isutf8; switch (type) { - case ascii: t = _atoms[Atom_String]; break; - case utf8: t = _atoms[Atom_Utf8]; break; - default: assert(False); return False; // unhandled StringType + case ascii: t = _atoms[Atom_String]; isutf8 = false; break; + case utf8: t = _atoms[Atom_Utf8]; isutf8 = true; break; + default: assert(false); return false; // unhandled StringType } unsigned char *value; unsigned long elements = (unsigned) -1; if (!get(win, _atoms[atom], t, &elements, &value, 8) || elements < 1) - return False; + return false; - std::string s(reinterpret_cast(value), elements); + userstring s(reinterpret_cast(value), elements, isutf8); delete [] value; - std::string::const_iterator it = s.begin(), end = s.end(); + userstring::const_iterator it = s.begin(), end = s.end(); unsigned long num = 0; while(num < *nelements) { - std::string::const_iterator tmp = it; // current string.begin() + userstring::const_iterator tmp = it; // current string.begin() it = std::find(tmp, end, '\0'); // look for null between tmp and end - strings->push_back(std::string(tmp, it)); // s[tmp:it) + strings->push_back(userstring(tmp, it, isutf8)); // s[tmp:it) ++num; if (it == end) break; ++it; @@ -412,17 +418,17 @@ bool OBProperty::get(Window win, Atoms atom, StringType type, *nelements = num; - return True; + return true; } /* * Removes a property entirely from a window. */ -void OBProperty::erase(Window win, Atoms atom) const +void Property::erase(Window win, Atoms atom) const { assert(atom >= 0 && atom < NUM_ATOMS); - XDeleteProperty(OBDisplay::display, win, _atoms[atom]); + XDeleteProperty(Display::display, win, _atoms[atom]); } }