X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftint2;a=blobdiff_plain;f=src%2Fpanel.h;h=083d0f1cf540b89388f3ae39516c9dd389175491;hp=79fb625e38a5312ee5b44c6ae7995af6877c2e9a;hb=928fc258ac46f2cc098f714921c028351b07ec31;hpb=ad0010a813450116f875d943f36cd6c93d84cb04 diff --git a/src/panel.h b/src/panel.h index 79fb625..083d0f1 100644 --- a/src/panel.h +++ b/src/panel.h @@ -19,69 +19,145 @@ #include "task.h" #include "taskbar.h" #include "systraybar.h" +#include "launcher.h" +#ifdef ENABLE_BATTERY +#include "battery.h" +#endif -//panel mode -enum { SINGLE_DESKTOP=0, MULTI_DESKTOP, MULTI_MONITOR }; -//panel alignment +extern int signal_pending; +// -------------------------------------------------- +// mouse events +extern int mouse_middle; +extern int mouse_right; +extern int mouse_scroll_up; +extern int mouse_scroll_down; +extern int mouse_tilt_left; +extern int mouse_tilt_right; + +//panel mode +enum { SINGLE_DESKTOP=0, MULTI_DESKTOP }; +enum { BOTTOM_LAYER, NORMAL_LAYER, TOP_LAYER }; +extern int panel_mode; +extern int wm_menu; +extern int panel_dock; +extern int panel_layer; + +//panel position enum { LEFT=0x01, RIGHT=0x02, CENTER=0X04, TOP=0X08, BOTTOM=0x10 }; +extern int panel_position; +extern int panel_horizontal; + +extern int panel_refresh; +extern int task_dragged; +//panel autohide +enum { STRUT_MINIMUM, STRUT_FOLLOW_SIZE, STRUT_NONE }; +extern int 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 int panel_strut_policy; +extern char *panel_items_order; +extern int max_tick_urgent; + +extern GArray* backgrounds; + +extern Imlib_Image default_icon; + + +// tint2 use one panel per monitor and one taskbar per desktop. typedef struct { - // always start with area - Area area; - - // -------------------------------------------------- - // backward compatibility - int old_config_file; - int old_task_icon; - int old_panel_background; - int old_task_background; - char *old_task_font; - - // -------------------------------------------------- - // panel - int signal_pending; - int sleep_mode; - int refresh; - int monitor; - int position; - int marginx, marginy; - - // -------------------------------------------------- - // taskbar point to the first taskbar in panel.area.list. number of tasbar == nb_desktop x nb_monitor. - Taskbar *taskbar; - int mode; - int nb_desktop; - int nb_monitor; - Task *task_active; - Task *task_drag; - - // -------------------------------------------------- - // clock - Clock clock; - - // -------------------------------------------------- - // systray - Systraybar systraybar; - - // -------------------------------------------------- - // mouse events - int mouse_middle; - int mouse_right; - int mouse_scroll_up; - int mouse_scroll_down; + // always start with area + // area.list own all objects of the panel according to config file + Area area; + + // -------------------------------------------------- + // panel + Window main_win; + Pixmap temp_pmap; + + // position relative to root window + int posx, posy; + int marginx, marginy; + int pourcentx, pourcenty; + // location of the panel (monitor number) + int monitor; + + // -------------------------------------------------- + // task and taskbar parameter per panel + Global_taskbar g_taskbar; + Global_task g_task; + + // -------------------------------------------------- + // taskbar point to the first taskbar in panel.area.list. + // number of tasbar == nb_desktop. taskbar[i] is for desktop(i). + // taskbar[i] is used to loop over taskbar, + // while panel->area.list is used to loop over all panel's objects + Taskbar *taskbar; + int nb_desktop; + + // -------------------------------------------------- + // clock + Clock clock; + + // -------------------------------------------------- + // battery +#ifdef ENABLE_BATTERY + Battery battery; +#endif + + Launcher launcher; + + // autohide + int is_hidden; + int hidden_width, hidden_height; + Pixmap hidden_pixmap; + timeout* autohide_timeout; } Panel; -Panel panel; +extern Panel panel_config; +extern Panel *panel1; +extern int nb_panel; + + +// 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 visual_refresh (); -void set_panel_properties (Window win); -void window_draw_panel (); +void init_panel_size_and_position(Panel *panel); +int resize_panel(void *obj); + +void set_panel_items(Panel *p); +void set_panel_properties(Panel *p); void visible_object(); -void set_panel_background(); + +// 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); +int click_padding(Panel *panel, int x, int y); +int click_clock(Panel *panel, int x, int y); +Area* click_area(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