X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=util%2Fepist%2Fepist.hh;h=64970e57904872f346a47d247d287ed3d9b9ef89;hb=97019b8b77f7e6450d87b057bcb6eae43e9f3e2b;hp=2f5d7399d534fdd87d8450b9603d34cd285c0686;hpb=0aae72418670c23f3fac604aca62cc8a461704f6;p=chaz%2Fopenbox diff --git a/util/epist/epist.hh b/util/epist/epist.hh index 2f5d7399..64970e57 100644 --- a/util/epist/epist.hh +++ b/util/epist/epist.hh @@ -1,5 +1,5 @@ -// -*- mode: C++; indent-tabs-mode: nil; -*- -// epist.hh for Epistory - a key handler for NETWM/EWMH window managers. +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- +// epist.hh for Epistrophy - a key handler for NETWM/EWMH window managers. // Copyright (c) 2002 - 2002 Ben Jansens // // Permission is hereby granted, free of charge, to any person obtaining a @@ -27,11 +27,67 @@ extern "C" { #include } +#include +#include + +#include "actions.hh" +#include "window.hh" +#include "keytree.hh" +#include "config.hh" + +#include "../../src/basedisplay.hh" + class XAtom; +class screen; + +class epist : public BaseDisplay { +private: + std::string _rc_file; + XAtom *_xatom; + char **_argv; + keytree *_ktree; + Config *_config; + + typedef std::vector ScreenList; + ScreenList _screens; + + typedef std::map WindowLookup; + typedef WindowLookup::value_type WindowLookupPair; + WindowLookup _windows; + + WindowList _clients; + WindowList::iterator _active; + + ActionList _actions; + + virtual void process_event(XEvent *e); + virtual bool handleSignal(int sig); + + void activateGrabs(); + +public: + epist(char **argv, char *display_name, char *rc_file); + virtual ~epist(); + + inline XAtom *xatom() { return _xatom; } + + void addWindow(XWindow *window); + void removeWindow(XWindow *window); + XWindow *findWindow(Window window) const; + + void cycleScreen(int current, bool forward) const; + + void getLockModifiers(int &numlockMask, int &scrolllockMask) const { + numlockMask = NumLockMask; + scrolllockMask = ScrollLockMask; + } + + const ActionList &actions(void) { return _actions; } + keytree &getKeyTree(void) { return *_ktree; } + inline const Config *getConfig(void) { return _config; } -extern bool _shutdown; -extern Display *_display; -extern Window _root; -extern XAtom *_xatom; + WindowList& clientsList() { return _clients; } + WindowList::iterator& activeWindow() { return _active; } +}; #endif // __epist_hh