-// -*- mode: C++; indent-tabs-mode: nil; -*-
+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
#ifndef __atom_hh
#define __atom_hh
@brief Provides access to window properties
*/
+#include "ustring.hh"
+#include "screeninfo.hh"
+
extern "C" {
#include <X11/Xlib.h>
#include <X11/Xatom.h>
}
#include <vector>
-#include <string>
-
-#include "screeninfo.hh"
namespace otk {
//! Provides easy access to window properties.
-class OBProperty {
+class Property {
public:
//! The atoms on the X server which this class will cache
enum Atoms {
Atom_String, //!< The atom which represents ascii strings
Atom_Utf8, //!< The atom which represents utf8-encoded strings
-#ifdef HAVE_GETPID
- blackbox_pid,
-#endif // HAVE_GETPID
+ openbox_pid,
// window hints
wm_colormap_windows,
wm_name,
wm_icon_name,
wm_class,
+ wm_window_role,
motif_wm_hints,
blackbox_attributes,
blackbox_change_attributes,
net_wm_action_close,
net_wm_state_modal,
+ net_wm_state_sticky,
net_wm_state_maximized_vert,
net_wm_state_maximized_horz,
net_wm_state_shaded,
net_wm_state_skip_pager,
net_wm_state_hidden,
net_wm_state_fullscreen,
+ net_wm_state_above,
+ net_wm_state_below,
kde_net_system_tray_windows,
kde_net_wm_system_tray_window_for,
kde_net_wm_window_type_override,
+#ifndef DOXYGEN_IGNORE
// constant for how many atoms exist in the enumerator
NUM_ATOMS
+#endif
};
//! The possible types/encodings of strings
enum StringType {
ascii, //!< Standard 8-bit ascii string
utf8, //!< Utf8-encoded string
+#ifndef DOXYGEN_IGNORE
NUM_STRING_TYPE
+#endif
};
private:
//! The value of all atoms on the X server that exist in the
- //! OBProperty::Atoms enum
- Atom _atoms[NUM_ATOMS];
+ //! Property::Atoms enum
+ Atom _atoms[NUM_ATOMS];
//! Gets the value of an Atom from the X server, creating it if nessesary
Atom create(const char *name) const;
public:
//! A list of strings
- typedef std::vector<std::string> StringVect;
+ typedef std::vector<ustring> StringVect;
- //! Constructs a new OBAtom object
+ //! Constructs a new Atom object
/*!
- CAUTION: This constructor uses OBDisplay::display, so ensure that it is
+ CAUTION: This constructor uses Display::display, so ensure that it is
initialized before initializing this class!
*/
- OBProperty();
- //! Destroys the OBAtom object
- virtual ~OBProperty();
+ Property();
+ //! Destroys the Atom object
+ virtual ~Property();
- //! Sets a property on a window to a new value
+ //! Sets a single-value property on a window to a new value
/*!
@param win The window id of the window on which to set the property's value
- @param atom A member of the OBProperty::Atoms enum that specifies which
+ @param atom A member of the Property::Atoms enum that specifies which
property to set
- @param type A member of the OBProperty::Atoms enum that specifies the type
+ @param type A member of the Property::Atoms enum that specifies the type
of the property to set
@param value The value to set the property to
*/
void set(Window win, Atoms atom, Atoms type, unsigned long value) const;
- //! Sets a property on a window to a new value
+ //! Sets an multiple-value property on a window to a new value
/*!
@param win The window id of the window on which to set the property's value
- @param atom A member of the OBProperty::Atoms enum that specifies which
+ @param atom A member of the Property::Atoms enum that specifies which
property to set
- @param type A member of the OBProperty::Atoms enum that specifies the type
+ @param type A member of the Property::Atoms enum that specifies the type
of the property to set
@param value Any array of values to set the property to. The array must
contain <i>elements</i> number of elements
*/
void set(Window win, Atoms atom, Atoms type,
unsigned long value[], int elements) const;
- //! Sets a property on a window to a new value
+ //! Sets a string property on a window to a new value
/*!
@param win The window id of the window on which to set the property's value
- @param atom A member of the OBProperty::Atoms enum that specifies which
+ @param atom A member of the Property::Atoms enum that specifies which
property to set
- @param type A member of the OBProperty::StringType enum that specifies the
+ @param type A member of the Property::StringType enum that specifies the
type of the string the property is being set to
@param value The string to set the property to
*/
void set(Window win, Atoms atom, StringType type,
- const std::string &value) const;
- //! Sets a property on a window to a new value
+ const ustring &value) const;
+ //! Sets a string-array property on a window to a new value
/*!
@param win The window id of the window on which to set the property's value
- @param atom A member of the OBProperty::Atoms enum that specifies which
+ @param atom A member of the Property::Atoms enum that specifies which
property to set
- @param type A member of the OBProperty::StringType enum that specifies the
+ @param type A member of the Property::StringType enum that specifies the
type of the string the property is being set to
@param strings A list of strings to set the property to
*/
//! Gets the value of a property on a window
/*!
@param win The window id of the window to get the property value from
- @param atom A member of the OBProperty::Atoms enum that specifies which
+ @param atom A member of the Property::Atoms enum that specifies which
property to retrieve
- @param type A member of the OBProperty::Atoms enum that specifies the type
+ @param type A member of the Property::Atoms enum that specifies the type
of the property to retrieve
@param nelements The maximum number of elements to retrieve from the
property (assuming it has more than 1 value in it). To
//! Gets a single element from the value of a property on a window
/*!
@param win The window id of the window to get the property value from
- @param atom A member of the OBProperty::Atoms enum that specifies which
+ @param atom A member of the Property::Atoms enum that specifies which
property to retrieve
- @param type A member of the OBProperty::Atoms enum that specifies the type
+ @param type A member of the Property::Atoms enum that specifies the type
of the property to retrieve
@param value If the function returns true, then this contains the first
(and possibly only) element in the value of the specified
//! Gets a single string from the value of a property on a window
/*!
@param win The window id of the window to get the property value from
- @param atom A member of the OBProperty::Atoms enum that specifies which
+ @param atom A member of the Property::Atoms enum that specifies which
property to retrieve
- @param type A member of the OBProperty::StringType enum that specifies the
+ @param type A member of the Property::StringType enum that specifies the
type of the string property to retrieve
@param value If the function returns true, then this contains the first
(and possibly only) string in the value of the specified
@return true if retrieval of the specified property with the specified
type was successful; otherwise, false
*/
- bool get(Window win, Atoms atom, StringType type, std::string *value) const;
+ bool get(Window win, Atoms atom, StringType type, ustring *value) const;
//! Gets strings from the value of a property on a window
/*!
@param win The window id of the window to get the property value from
- @param atom A member of the OBProperty::Atoms enum that specifies which
+ @param atom A member of the Property::Atoms enum that specifies which
property to retrieve
- @param type A member of the OBProperty::StringType enum that specifies the
+ @param type A member of the Property::StringType enum that specifies the
type of the string property to retrieve
@param nelements The maximum number of strings to retrieve from the
property (assuming it has more than 1 string in it). To
//! Removes a property from a window
/*!
@param win The window id of the window to remove the property from
- @param atom A member of the OBProperty::Atoms enum that specifies which
+ @param atom A member of the Property::Atoms enum that specifies which
property to remove from the window
*/
void erase(Window win, Atoms atom) const;
//! Gets the value of an atom on the X server
/*!
- @param a A member of the OBProperty::Atoms enum that specifies which Atom's
+ @param a A member of the Property::Atoms enum that specifies which Atom's
value to return
@return The value of the specified Atom
*/
- inline Atom atom(Atoms a) {
+ inline Atom atom(Atoms a) const {
assert(a >= 0 && a < NUM_ATOMS); Atom ret = _atoms[a]; assert(ret != 0);
return ret;
}