diff --git a/common/utils/T/tracer/gui/gui.h b/common/utils/T/tracer/gui/gui.h index 2561fe6d16cf018d8c43d58fd3e213a3164da2d5..9d7f283ea1a022b7e071d52064d7b5e50ce35c08 100644 --- a/common/utils/T/tracer/gui/gui.h +++ b/common/utils/T/tracer/gui/gui.h @@ -26,6 +26,8 @@ widget *new_xy_plot(gui *gui, int width, int height, char *label, int vruler_width); widget *new_textlist(gui *_gui, int width, int nlines, int background_color); +void label_set_clickable(gui *gui, widget *label, int clickable); + void container_set_child_growable(gui *_gui, widget *_this, widget *child, int growable); @@ -60,6 +62,8 @@ int new_color(gui *gui, char *color); * - scrollup { void *: NULL } * - scrolldown { void *: NULL } * - click { int [2]: line, button } + * - label: + * - click { int: button } (if enabled) */ /* same type as in gui_defs.h */ diff --git a/common/utils/T/tracer/gui/label.c b/common/utils/T/tracer/gui/label.c index 35b4f7b667b7212d17ad7ae61c6946660e33feb1..80d885f1d21e23ab224c747ee1edce2f266b10eb 100644 --- a/common/utils/T/tracer/gui/label.c +++ b/common/utils/T/tracer/gui/label.c @@ -44,3 +44,37 @@ widget *new_label(gui *_gui, const char *label) return w; } + +static void button(gui *gui, widget *_this, int x, int y, int button, int up) +{ + LOGD("BUTTON label %p xy %d %d button %d up %d\n", _this, x, y, button, up); + + if (up != 0) return; + + gui_notify(gui, "click", _this, &button); +} + +/* we could use default_button, but it's in widget.c, so, well... */ +static void no_button(gui *gui, widget *_this, int x,int y,int button,int up) +{ + /* do nothing */ +} + +/*************************************************************************/ +/* public functions */ +/*************************************************************************/ + +void label_set_clickable(gui *_g, widget *_this, int clickable) +{ + struct gui *g = _g; + struct label_widget *this = _this; + + glock(g); + + if (clickable) + this->common.button = button; + else + this->common.button = no_button; + + gunlock(g); +}