/************************************************************************** * Copyright (C) 2008 Pål Staurland (staura@gmail.com) * Modified (C) 2008/2009 thierry lorthiois (lorthiois@bbsoft.fr) * * panel : * - draw panel and all objects according to panel_layout * * **************************************************************************/ #ifndef PANEL_H #define PANEL_H #include #include #include "common.h" #include "clock.h" #include "task.h" #include "taskbar.h" #include "systraybar.h" #include "launcher.h" #include "freespace.h" #include "execplugin.h" #ifdef ENABLE_BATTERY #include "battery.h" #endif extern int signal_pending; // -------------------------------------------------- // mouse events extern MouseAction mouse_left; extern MouseAction mouse_middle; extern MouseAction mouse_right; extern MouseAction mouse_scroll_up; extern MouseAction mouse_scroll_down; extern MouseAction mouse_tilt_left; extern MouseAction mouse_tilt_right; // panel mode typedef enum TaskbarMode { SINGLE_DESKTOP = 0, MULTI_DESKTOP, } TaskbarMode; typedef enum Layer { BOTTOM_LAYER, NORMAL_LAYER, TOP_LAYER, } Layer; // panel position typedef enum PanelPosition { LEFT = 0x01, RIGHT = 0x02, CENTER = 0X04, TOP = 0X08, BOTTOM = 0x10, } PanelPosition; typedef enum Strut { STRUT_MINIMUM, STRUT_FOLLOW_SIZE, STRUT_NONE, } Strut; extern TaskbarMode taskbar_mode; extern gboolean wm_menu; extern gboolean panel_dock; extern Layer panel_layer; extern char *panel_window_name; extern PanelPosition panel_position; extern gboolean panel_horizontal; extern gboolean panel_refresh; extern gboolean task_dragged; extern gboolean panel_autohide; extern int panel_autohide_show_timeout; extern int panel_autohide_hide_timeout; extern int panel_autohide_height; // for vertical panels this is of course the width extern Strut panel_strut_policy; extern char *panel_items_order; extern int max_tick_urgent; extern GArray *backgrounds; extern Imlib_Image default_icon; // TODO maybe this should be a config option #define DEFAULT_FONT "sans 10" typedef struct Panel { Area area; Window main_win; Pixmap temp_pmap; // position relative to root window int posx, posy; int marginx, marginy; int fractional_width, fractional_height; int monitor; int font_shadow; gboolean mouse_effects; // Mouse effects for icons int mouse_over_alpha; int mouse_over_saturation; int mouse_over_brightness; int mouse_pressed_alpha; int mouse_pressed_saturation; int mouse_pressed_brightness; // Per-panel parameters and states for Taskbar and Task GlobalTaskbar g_taskbar; GlobalTask g_task; // Array of Taskbar, with num_desktops items Taskbar *taskbar; int num_desktops; PangoFontDescription *taskbarname_font_desc; Clock clock; #ifdef ENABLE_BATTERY Battery battery; #endif Launcher launcher; FreeSpace freespace; GList *execp_list; // Autohide gboolean is_hidden; int hidden_width, hidden_height; Pixmap hidden_pixmap; timeout *autohide_timeout; } Panel; extern Panel panel_config; extern Panel *panels; extern int num_panels; // default global data void default_panel(); // freed memory void cleanup_panel(); // realloc panels according to number of monitor // use panel_config as default value void init_panel(); void init_panel_size_and_position(Panel *panel); gboolean resize_panel(void *obj); void render_panel(Panel *panel); void set_panel_items_order(Panel *p); void set_panel_properties(Panel *p); // draw background panel void set_panel_background(Panel *p); // detect witch panel Panel *get_panel(Window win); Taskbar *click_taskbar(Panel *panel, int x, int y); Task *click_task(Panel *panel, int x, int y); Launcher *click_launcher(Panel *panel, int x, int y); LauncherIcon *click_launcher_icon(Panel *panel, int x, int y); gboolean click_padding(Panel *panel, int x, int y); gboolean click_clock(Panel *panel, int x, int y); #ifdef ENABLE_BATTERY gboolean click_battery(Panel *panel, int x, int y); #endif Area *click_area(Panel *panel, int x, int y); Execp *click_execp(Panel *panel, int x, int y); void autohide_show(void *p); void autohide_hide(void *p); void autohide_trigger_show(Panel *p); void autohide_trigger_hide(Panel *p); #endif