src/panel.h (raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
/************************************************************************** * 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 <pango/pangocairo.h> #include <sys/time.h> #include "common.h" #include "clock.h" #include "task.h" #include "taskbar.h" #include "systraybar.h" #include "launcher.h" #include "freespace.h" #include "execplugin.h" #include "separator.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 gboolean panel_shrink; extern Strut panel_strut_policy; extern char *panel_items_order; extern int max_tick_urgent; extern GArray *backgrounds; extern GArray *gradients; extern Imlib_Image default_icon; #define DEFAULT_FONT "sans 10" extern char *default_font; extern XSettingsClient *xsettings_client; extern gboolean debug_geometry; extern gboolean debug_fps; extern gboolean debug_frames; typedef struct Panel { Area area; Window main_win; Pixmap temp_pmap; // position relative to root window int posx, posy; int marginx, marginy; gboolean fractional_width, fractional_height; int max_size; 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; gboolean taskbarname_has_font; PangoFontDescription *taskbarname_font_desc; Clock clock; #ifdef ENABLE_BATTERY Battery battery; #endif Launcher launcher; GList *freespace_list; GList *separator_list; 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 shrink_panel(Panel *panel); void _schedule_panel_redraw(const char *file, const char *function, const int line); #define schedule_panel_redraw() _schedule_panel_redraw(__FILE__, __FUNCTION__, __LINE__) void set_panel_items_order(Panel *p); void place_panel_all_desktops(Panel *p); void replace_panel_all_desktops(Panel *p); void set_panel_properties(Panel *p); void set_panel_window_geometry(Panel *panel); void set_panel_layer(Panel *p, Layer layer); // 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); Clock *click_clock(Panel *panel, int x, int y); #ifdef ENABLE_BATTERY Battery *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); const char *get_default_font(); void default_icon_theme_changed(); void default_font_changed(); #endif |