/**
* @file Waimea.hh
* @author David Reveman <david@waimea.org>
* @date 02-May-2001 00:49:45
*
* @brief Definition of Waimea and WindowObject classes
*
* Function declarations and variable definitions for Waimea class.
*
* Copyright (C) David Reveman. All rights reserved.
*
*/
#ifndef __Waimea_hh
#define __Waimea_hh
extern "C" {
#include <X11/Xlib.h>
#include <X11/cursorfont.h>
}
#include <list>
using std::list;
#include <map>
using std::map;
using std::make_pair;
typedef struct _WaAction WaAction;
class Waimea;
#define __m_wastrdup(_str) (((__m_wastrdup_tmp = \
new char[strlen(_str) + 1]) && \
sprintf(__m_wastrdup_tmp, "%s", _str))? \
__m_wastrdup_tmp : __m_wastrdup_tmp)
class WindowObject {
public:
inline WindowObject(Window win_id, int win_type) {
id = win_id;
type = win_type;
actionlist = NULL;
}
Window id;
int type;
list<WaAction *> *actionlist;
};
#define EastType 1
#define WestType -1
struct waoptions {
char *display;
char *rcfile;
char *stylefile;
char *actionfile;
char *menufile;
};
#define WARNING cerr << "waimea: warning: " << __FUNCTION__ << ": "
#define ERROR cerr << "waimea: error: " << __FUNCTION__ << ": "
#define LISTDEL(list) \
while (! list.empty()) { \
delete list.back(); \
list.pop_back(); \
}
#define LISTDELITEMS(list) \
while (! list.empty()) { \
delete list.back(); \
}
#define LISTPTRDEL(list) \
while (! list->empty()) { \
delete list->back(); \
list->pop_back(); \
}
#define LISTCLEAR(list) \
while (! list.empty()) { \
list.pop_back(); \
}
#define LISTPTRCLEAR(list) \
while (! list->empty()) { \
list->pop_back(); \
} \
delete list;
#define LISTPTRDELITEMS(list) \
while (! list->empty()) { \
delete list->back(); \
}
#define MAPCLEAR(map) \
while (! map.empty()) { \
map.erase(map.begin()); \
}
#define MAPPTRCLEAR(map) \
while (! map->empty()) { \
map->erase(map->begin()); \
} \
delete map;
#define FrameType (1L << 1)
#define WindowType (1L << 2)
#define TitleType (1L << 3)
#define LabelType (1L << 4)
#define ButtonType (1L << 5)
#define HandleType (1L << 6)
#define LGripType (1L << 7)
#define RGripType (1L << 8)
#define RootType (1L << 9)
#define WEdgeType (1L << 10)
#define EEdgeType (1L << 11)
#define NEdgeType (1L << 12)
#define SEdgeType (1L << 13)
#define MenuTitleType (1L << 14)
#define MenuItemType (1L << 15)
#define MenuCBItemType (1L << 16)
#define MenuSubType (1L << 17)
#define DockHandlerType (1L << 18)
#define DockAppType (1L << 19)
#define MenuType (1L << 20)
#define SystrayType (1L << 21)
enum {
MoveType,
MoveOpaqueType,
ResizeType,
ResizeOpaqueType,
EndMoveResizeType
};
#define MaxCBoxType 1
#define ShadeCBoxType 2
#define StickCBoxType 3
#define TitleCBoxType 4
#define HandleCBoxType 5
#define BorderCBoxType 6
#define AllCBoxType 7
#define AOTCBoxType 8
#define AABCBoxType 9
#define CloseCBoxType 10
#include "Screen.hh"
#include "Timer.hh"
#include "Net.hh"
class Waimea {
public:
Waimea(char **, struct waoptions *);
virtual ~Waimea(void);
WindowObject *FindWin(Window, int);
struct waoptions *options;
Display *display;
ResourceHandler *rh;
EventHandler *eh;
NetHandler *net;
Timer *timer;
Cursor session_cursor, move_cursor, resizeleft_cursor, resizeright_cursor;
unsigned long double_click, screenmask;
char *pathenv;
bool wmerr;
map<Window, WindowObject *> window_table;
list<WaScreen *> wascreen_list;
#ifdef SHAPE
int shape, shape_event;
#endif // SHAPE
#ifdef XINERAMA
int xinerama;
XineramaScreenInfo *xinerama_info;
int xinerama_info_num;
#endif // XINERAMA
#ifdef RANDR
int randr, randr_event;
#endif // RANDR
};
bool validatedrawable(Drawable, unsigned int * = NULL, unsigned int * = NULL);
const bool validateclient_mapped(Window);
void wawarning(char *, ...);
void waerror(char *, ...);
void waexec(const char *, char *);
int xerrorhandler(Display *, XErrorEvent *);
int wmrunningerror(Display *, XErrorEvent *);
void signalhandler(int);
void restart(char *);
void quit(int);
char **commandline_to_argv(char *, char **);
char *expand(char *, WaWindow *);
#endif // __Waimea_hh
syntax highlighted by Code2HTML, v. 0.9.1