/*-
* Copyright (c) 2001 Jordan DeLong
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the author nor the names of contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef PIER_H
#define PIER_H
#include "plugutil.h"
#include "parseparams.h"
/* types for pier items */
#define PI_NOTHING 0 /* nothing */
#define PI_LAUNCH 1 /* we launch progs when clicked */
#define PI_WMDOCK 2 /* a windowmaker-style 'dock app' */
#define PI_SWALLOWED 3 /* a afterstep-style 'wharf app' */
/* types for piers */
#define PT_HORIZ 0
#define PT_VERT 1
/* one item on the pier */
typedef struct {
int type; /* type of this item */
Window frame; /* the pier frame window */
Pixmap pixmap; /* pixmap for this item */
Pixmap shapemask; /* shape mask of the pixmap */
char *cmd; /* command for launching or for dock/swallowing */
XClassHint classhint; /* class of the window we swallow */
Window window; /* client window for swallowing/docking, or pixmap window on launchers */
pid_t pid; /* pid of the swallowed/docked app; kill on exit */
} pieritem_t;
/* a pier; can be either horizontal or verticle */
typedef struct pier {
int type; /* pier type */
int screen; /* screen the pier is on */
int x, y; /* position pier is at */
int width, height; /* dimension information */
Window window; /* window around the whole pier */
int item_count; /* the items for this pier */
pieritem_t **items;
SLIST_ENTRY(pier) p_list;
} pier_t;
/* a string to pier/pieritem table for starting dockapps/swallowed apps */
typedef struct comtab {
XClassHint classhint; /* class to watch for */
pier_t *pier; /* pier that needs this command */
int idx; /* idx of the item waiting for command */
LIST_ENTRY(comtab) ct_list;
} comtab_t;
extern int pier_size;
typedef LIST_HEAD(, comtab) comtablist_t;
extern comtablist_t comtab_list;
int pier_init();
void pier_shutdown();
pier_t *pier_create(int screen, int type, int x, int y);
void pier_delete(pier_t *pier);
pieritem_t *pier_additem(pier_t *pier, int type, char *cmd, char *res_name, char *res_class, char *xpmfn);
void pier_freeitem(pieritem_t *item);
int pier_realize(pier_t *pier);
int pier_realize_all();
pier_t *pier_findpier(Window wnd);
void pier_click(pier_t *pier, XButtonEvent *e);
void pier_gotcom(comtab_t *comtab, XMapRequestEvent *e);
#endif
syntax highlighted by Code2HTML, v. 0.9.1