📄 tooltip.hh
字号:
#ifndef TOOLTIP_HH#define TOOLTIP_HH 1#ifdef HAVE_CONFIG_H#include "config.h"#endif /* HAVE_CONFIG_H */#include <string>#include <vector>#include <X11/Xlib.h>#include <pthread.h>#include <semaphore.h>#include <sys/time.h>#include <time.h>using namespace std;typedef enum direction_type { top_left = 0, top_right, bottom_left, bottom_right };typedef void *(*pfunc_t)(void *);const int no_delay = 0;// Forward declarationclass BToolTip;#ifdef DELAYED_TOOLTIPSvoid *waiter_thread_helper_function(void *waiter_object);class Waiter { public: Waiter(); ~Waiter(); void waiter_loop(void); void wait(const int _secs, void (BToolTip::*_func)(), BToolTip *_param); void cancel(void); private: struct timeval wait_from; int wait_secs; bool fire, end; void (BToolTip::*func)(); BToolTip *param; pthread_t wait_thread; sem_t run_waiter;};#endif /* DELAYED_TOOLTIPS */class BToolTip { public: BToolTip(); ~BToolTip(); // Member functions void createToolTipWindow(const int _x, const int _y, const unsigned int _w, const unsigned int _h); void setText(const string &tooltip_text); void setTimeout(const int seconds); void setPosition(const int _x, const int _y, const direction_type _direction = bottom_right); void redraw(const int _x, const int _y, const unsigned int _w, const unsigned int _h); void processEvent(const XEvent &event); void show(void); void showNow(void); void hide(void); bool isShown(void) const; int getTimeout(void) const; private: vector<string> current_tooltip_text; int x, y, real_x, real_y, timeout; unsigned int real_w, real_h; bool is_visible, is_created; direction_type direction; Pixmap tooltip_pixmap; Window tooltip_window;#ifdef DELAYED_TOOLTIPS Waiter waiter;#endif /* DELAYED_TOOLTIPS */ pthread_mutex_t show_hide_syn;};#endif /* TOOLTIP_HH */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -