libxputty 0.1
Loading...
Searching...
No Matches
Functions
xmenu.c File Reference

Go to the source code of this file.

Functions

void pop_menu_show (Widget_t *parent, Widget_t *menu, int elem, bool above)
 pop_menu_show - pop up a menu to a Widget_t
 
void pop_submenu_show (Widget_t *parent, Widget_t *menu, int elem, bool above)
 pop_submenu_show - pop up a submenu to a Widget_t
 
Widget_tcreate_viewport (Widget_t *parent, int width, int height)
 create_viewport - create a viewport on a menu to a Widget_t
 
void set_active_radio_entry (void *w_, void *user_data)
 
void set_active_radio_entry_num (Widget_t *w, int active)
 set_active_radio_item - activate selected radio item by number
 
Widget_tadd_menu (Widget_t *parent, const char *label, int x, int y, int width, int height)
 add_menu - add a menu to a Widget_t
 
Widget_tadd_menubar (Widget_t *parent, const char *label, int x, int y, int width, int height)
 add_menubar - add a menubar to a Widget_t
 
Widget_tmenubar_add_menu (Widget_t *parent, const char *label)
 menubar_add_menu - add a menu to a menubar
 
Widget_tmenu_add_entry (Widget_t *wid, const char *label)
 menu_add_entry - add a entry to menu
 
Widget_tmenu_add_radio_entry (Widget_t *wid, const char *label)
 menu_add_radio_entry- add a radio entry to menu
 
Widget_tmenu_add_check_entry (Widget_t *wid, const char *label)
 menu_add_check_entry- add a check entry to menu
 
Widget_tmenu_add_accel_check_entry (Widget_t *wid, const char *label)
 menu_add_accel_check_entry- add a check entry with accel to menu
 
Widget_tmenu_add_value_entry (Widget_t *wid, const char *label)
 menu_add_value_entry- add a value entry to menu
 
Widget_tmenu_add_submenu (Widget_t *w, const char *label)
 menu_add_submenu - add a submenu to a Widget_t
 
Widget_tcmenu_add_submenu (Widget_t *w, const char *label)
 cmenu_add_submenu - add a submenu to a cmenu
 
Widget_tcreate_menu (Widget_t *parent, int height)
 create_menu - create a menu to a Widget_t
 
Widget_tmenu_add_item (Widget_t *menu, const char *label)
 menu_add_item - add a item to menu
 
void menu_remove_item (Widget_t *menu, Widget_t *item)
 menu_remove_item - remove a item from menu
 
Widget_tmenu_add_accel_item (Widget_t *menu, const char *label)
 menu_add_accel_item - add a accel item to menu
 
Widget_tmenu_add_check_item (Widget_t *menu, const char *label)
 menu_add_check_item - add a item to menu
 
void radio_item_set_active (Widget_t *w)
 radio_item_set_active - activate selected radio item
 
Widget_tmenu_add_radio_item (Widget_t *menu, const char *label)
 menu_add_radio_item - add a radio item to menu
 
Widget_tmenu_add_value_item (Widget_t *menu, const char *label)
 menu_add_value_item - add a item to menu
 
void menu_add_numeric_items (Widget_t *menu, int *imin, int *imax)
 menu_add_numeric_items - add numeric items from imin to imax to menu
 

Function Documentation

◆ add_menu()

Widget_t * add_menu ( Widget_t parent,
const char *  label,
int  x,
int  y,
int  width,
int  height 
)

add_menu - add a menu to a Widget_t

Parameters
*parent- pointer to the Widget_t the menu should pop over
*label- the label of the menu
x,y,width,height- the position/geometry to create the menu
Returns
Widget_t* - pointer to the Widget_t menu struct

Definition at line 86 of file xmenu.c.

87 {
88 Widget_t *wid = create_widget(parent->app, parent, x, y, width, height);
89 wid->label = label;
90 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, -1.0,1.0, CL_NONE);
91 wid->adj = wid->adj_y;
92 wid->scale.gravity = NONE;
93 wid->state = 0;
99
100 Widget_t *menu = create_menu(wid, 25);
102
103 return wid;
104}
evfunc button_release_callback
Definition xwidget.h:101
xevfunc expose_callback
Definition xwidget.h:85
xevfunc leave_callback
Definition xwidget.h:88
xevfunc adj_callback
Definition xwidget.h:89
xevfunc enter_callback
Definition xwidget.h:87
Gravity gravity
Definition xwidget.h:347
Widget_t - struct to hold the basic Widget_t info.
Definition xwidget.h:457
Resize_t scale
Definition xwidget.h:525
Adjustment_t * adj_y
Definition xwidget.h:495
Adjustment_t * adj
Definition xwidget.h:497
int state
Definition xwidget.h:511
const char * label
Definition xwidget.h:463
Func_t func
Definition xwidget.h:481
Xputty * app
Definition xwidget.h:465
Adjustment_t * add_adjustment(Widget_t *w, float std_value, float value, float min_value, float max_value, float step, CL_type type)
*add_adjustment - adding a adjustment to a Widget_t
Definition xadjustment.c:25
@ CL_NONE
Definition xadjustment.h:47
void set_active_radio_entry(void *w_, void *user_data)
Definition xmenu.c:60
Widget_t * create_menu(Widget_t *parent, int height)
create_menu - create a menu to a Widget_t
Definition xmenu.c:256
void _check_menu_state(void *w_, void *user_data)
_check_menu_state - follow the mouse pointer when a menu is active
void _menu_entry_released(void *w_, void *item_, void *user_data)
_menu_entry_released - the menu release func
void _menu_released(void *w_, void *button_, void *user_data)
_menu_released - popup the menu on click
void _draw_menu_label(void *w_, void *user_data)
_draw_menu_label - draw the menu label on expose call
void os_transparent_draw(void *w_, void *user_data)
os_transparent_draw - Draw the Widget_t to the back buffer
Widget_t * create_widget(Xputty *app, Widget_t *win, int x, int y, int width, int height)
*create_widget - create a widget A Widget_t could only be created as child of a other Widget_t To...
Definition xwidget.c:265
@ NONE
Definition xwidget.h:328

References _check_menu_state(), _draw_menu_label(), _menu_entry_released(), _menu_released(), add_adjustment(), Widget_t::adj, Func_t::adj_callback, Widget_t::adj_y, Widget_t::app, Func_t::button_release_callback, CL_NONE, create_menu(), create_widget(), Func_t::enter_callback, Func_t::expose_callback, Widget_t::func, Resize_t::gravity, Widget_t::label, Func_t::leave_callback, NONE, os_transparent_draw(), Widget_t::scale, set_active_radio_entry(), and Widget_t::state.

Referenced by menubar_add_menu().

◆ add_menubar()

Widget_t * add_menubar ( Widget_t parent,
const char *  label,
int  x,
int  y,
int  width,
int  height 
)

add_menubar - add a menubar to a Widget_t

Parameters
*parent- pointer to the Widget_t hold the menubar
*label- unused
x,y,width,height- the position/geometry to create the menubar
Returns
Widget_t* - pointer to the Widget_t menu struct

Definition at line 106 of file xmenu.c.

107 {
108 Widget_t *wid = create_widget(parent->app, parent, x, y, width, height);
109 wid->scale.gravity = NORTHEAST;
111 return wid;
112}
long long flags
Definition xwidget.h:461
@ NORTHEAST
Definition xwidget.h:302
@ NO_AUTOREPEAT
Definition xwidget.h:408
@ NO_PROPAGATE
Definition xwidget.h:416

References Widget_t::app, create_widget(), Widget_t::flags, Resize_t::gravity, NO_AUTOREPEAT, NO_PROPAGATE, NORTHEAST, and Widget_t::scale.

◆ cmenu_add_submenu()

Widget_t * cmenu_add_submenu ( Widget_t wid,
const char *  label 
)

cmenu_add_submenu - add a submenu to a cmenu

Parameters
*wid- pointer to the Widget_t the submenu belongs to
*label- the label of the menu
Returns
Widget_t* - pointer to the Widget_t submenu struct

Definition at line 226 of file xmenu.c.

226 {
227 Widget_t *menu = w;
228 Widget_t* view_port = menu->childlist->childs[0];
229 Metrics_t metrics;
230 os_get_window_metrics(menu, &metrics);
231 int width = metrics.width;
232 int height = menu->scale.init_height;
233 int si = childlist_has_child(view_port->childlist);
234 Widget_t *wid = create_widget(menu->app, view_port, 0, height*si, width, height);
235 float max_value1 = view_port->adj->max_value+1.0;
236 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value1,1.0, CL_VIEWPORT);
237 wid->scale.gravity = MENUITEM;
238 wid->flags &= ~USE_TRANSPARENCY;
239 wid->flags |= FAST_REDRAW;
240 wid->label = label;
241 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, -1.0,1.0, CL_NONE);
242 wid->adj = wid->adj_y;
243 float max_value = wid->adj->max_value+1.0;
244 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
249 Widget_t* submenu = create_menu(wid, 25);
250 submenu->flags |= IS_SUBMENU;
251
253 return wid;
254}
float max_value
Definition xadjustment.h:92
Widget_t ** childs
Definition xchildlist.h:51
Metrics_t - struct to receive window size, position & visibility Pass this struct to os_get_window_...
int init_height
Definition xwidget.h:355
Childlist_t * childlist
Definition xwidget.h:499
void set_adjustment(Adjustment_t *adj, float std_value, float value, float min_value, float max_value, float step, CL_type type)
*set_adjustment - set a new range to a existing Adjustment_t or create if it not exists yet
Definition xadjustment.c:80
@ CL_VIEWPORT
Definition xadjustment.h:57
int childlist_has_child(Childlist_t *childlist)
childlist_has_child - check if a Widget_t Childlist_t contain a child
Definition xchildlist.c:89
void _draw_submenu(void *w_, void *user_data)
_draw_submenu - draw submenu on expose call
void _enter_submenu(void *w_, void *user_data)
_enter_submenu - enter submenu
void _leave_submenu(void *w_, void *user_data)
_leave_submenu - leave submenu
void os_get_window_metrics(Widget_t *w, Metrics_t *metrics)
os_get_window_metrics - Get the Merics_t struct related to a Widget_t
@ MENUITEM
Definition xwidget.h:326
@ FAST_REDRAW
Definition xwidget.h:410
@ IS_SUBMENU
Definition xwidget.h:418

References _draw_submenu(), _enter_submenu(), _leave_submenu(), _menu_entry_released(), add_adjustment(), Widget_t::adj, Func_t::adj_callback, Widget_t::adj_y, Widget_t::app, Func_t::button_release_callback, Widget_t::childlist, childlist_has_child(), Childlist_t::childs, CL_NONE, CL_VIEWPORT, create_menu(), create_widget(), Func_t::enter_callback, Func_t::expose_callback, FAST_REDRAW, Widget_t::flags, Widget_t::func, Resize_t::gravity, Resize_t::init_height, IS_SUBMENU, Widget_t::label, Func_t::leave_callback, Adjustment_t::max_value, MENUITEM, os_get_window_metrics(), Widget_t::scale, set_active_radio_entry(), set_adjustment(), and Metrics_t::width.

Referenced by add_keyboard().

◆ create_menu()

Widget_t * create_menu ( Widget_t parent,
int  height 
)

create_menu - create a menu to a Widget_t

Parameters
*parent- pointer to the Widget_t the menu should pop over
height- define the height of a single menu item
Returns
Widget_t* - pointer to the Widget_t button struct

Definition at line 256 of file xmenu.c.

256 {
257
258 int x1, y1;
259 os_translate_coords(parent, parent->widget, os_get_root_window(parent->app, IS_WIDGET), 0, 0, &x1, &y1);
260 Widget_t *wid = create_window(parent->app, os_get_root_window(parent->app, IS_WIDGET), x1, y1, 10, height);
261 memcpy(wid->color_scheme, parent->color_scheme, sizeof (struct XColor_t));
262 create_viewport(wid, 10, 5*height);
263
265 os_set_transient_for_hint(parent, wid);
267 wid->flags |= IS_POPUP;
268 wid->scale.gravity = NONE;
269 childlist_add_child(parent->childlist, wid);
270
271 Widget_t *slider = add_vslider(wid, "", 0, 0, 10, height);
273 set_adjustment(slider->adj_y,0.0, 0.0, 0.0, 1.0,0.0085, CL_VIEWPORTSLIDER);
274 slider->adj = slider->adj_y;
276 slider->scale.gravity = NORTHWEST;
277 slider->flags &= ~USE_TRANSPARENCY;
278 slider->flags |= NO_AUTOREPEAT | NO_PROPAGATE;
279
280 return wid;
281}
xevfunc value_changed_callback
Definition xwidget.h:90
XColor_t * color_scheme
Definition xwidget.h:467
Window widget
Definition xwidget.h:469
XColor_t - the Widget_t Color struct XColor_t could be used for theming you Widget_t set.
Definition xcolor.h:105
@ CL_VIEWPORTSLIDER
Definition xadjustment.h:65
void childlist_add_child(Childlist_t *childlist, Widget_t *child)
childlist_add_child - internal use to add a child to the Childlist_t You usually didn't need to cal...
Definition xchildlist.c:42
Widget_t * create_viewport(Widget_t *parent, int width, int height)
create_viewport - create a viewport on a menu to a Widget_t
Definition xmenu.c:50
void _set_menu_viewpoint(void *w_, void *user_data)
_set_menu_viewpoint - move the view_port to position by slider
void _draw_menu_slider(void *w_, void *user_data)
_draw_menu_slider - draw the menu slider on expose call
void _draw_menu(void *w_, void *user_data)
_draw_menu - draw menu on expose call
Widget_t * add_vslider(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_vslider - add a vertical slider to a Widget_t connect to func.value_changed_callback to implement...
Definition xslider.c:30
Window os_get_root_window(Xputty *main, int flag)
os_get_root_window - get a pointer to the root window (desktop)
void os_translate_coords(Widget_t *w, Window from_window, Window to_window, int from_x, int from_y, int *to_x, int *to_y)
os_translate_coords - get x,y related to destination Window
void os_set_transient_for_hint(Widget_t *parent, Widget_t *w)
os_set_ transient_for_hint - set a Widget_t transient to a other Widget_t only work on linux,...
void os_set_window_attrb(Widget_t *w)
os_set_window_attrb - set the attribute mask to a Widget_t only work on linux, stub on Windows
Widget_t * create_window(Xputty *app, Window win, int x, int y, int width, int height)
*create_window - create a Window You need to create as least minimun one Window to get started....
Definition xwidget.c:163
@ NORTHWEST
Definition xwidget.h:300
@ IS_WIDGET
Definition xwidget.h:388
@ IS_POPUP
Definition xwidget.h:392

References _draw_menu(), _draw_menu_slider(), _set_menu_viewpoint(), add_vslider(), Widget_t::adj, Widget_t::adj_y, Widget_t::app, Widget_t::childlist, childlist_add_child(), CL_VIEWPORTSLIDER, Widget_t::color_scheme, create_viewport(), create_window(), Func_t::expose_callback, Widget_t::flags, Widget_t::func, Resize_t::gravity, IS_POPUP, IS_WIDGET, NO_AUTOREPEAT, NO_PROPAGATE, NONE, NORTHWEST, os_get_root_window(), os_set_transient_for_hint(), os_set_window_attrb(), os_translate_coords(), Widget_t::scale, set_adjustment(), Func_t::value_changed_callback, and Widget_t::widget.

Referenced by add_keyboard(), add_menu(), cmenu_add_submenu(), and menu_add_submenu().

◆ create_viewport()

Widget_t * create_viewport ( Widget_t parent,
int  width,
int  height 
)

create_viewport - create a viewport on a menu to a Widget_t

Parameters
*parent- pointer to the Widget_t the menu should pop over
width- define the width of the viewport
height- define the height of the viewport
Returns
Widget_t* - pointer to the Widget_t viewport

Definition at line 50 of file xmenu.c.

50 {
51 Widget_t *wid = create_widget(parent->app, parent, 0, 0, width, height);
52 wid->scale.gravity = NONE;
53 wid->flags &= ~USE_TRANSPARENCY;
54 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, -1.0,1.0, CL_VIEWPORT);
55 wid->adj = wid->adj_y;
57 return wid;
58}
void _set_viewpoint(void *w_, void *user_data)
_set_viewpoint - move the view_port to position

References _set_viewpoint(), add_adjustment(), Widget_t::adj, Func_t::adj_callback, Widget_t::adj_y, Widget_t::app, CL_VIEWPORT, create_widget(), Widget_t::flags, Widget_t::func, Resize_t::gravity, NONE, and Widget_t::scale.

Referenced by create_menu().

◆ menu_add_accel_check_entry()

Widget_t * menu_add_accel_check_entry ( Widget_t wid,
const char *  label 
)

menu_add_accel_check_entry- add a check entry with accel to menu

Parameters
*wid- pointer to the Widget_t menu
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 159 of file xmenu.c.

159 {
160 Widget_t *menu = wid->childlist->childs[0];
161 Widget_t *item = menu_add_check_item(menu,label);
163 float max_value = wid->adj->max_value+1.0;
164 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
165
166 return item;
167}
Widget_t * menu_add_check_item(Widget_t *menu, const char *label)
menu_add_check_item - add a item to menu
Definition xmenu.c:317
void _draw_accel_check_item(void *w_, void *user_data)
_accel_draw_check_item - draw item on expose call

References _draw_accel_check_item(), Widget_t::adj, Widget_t::childlist, Childlist_t::childs, CL_NONE, Func_t::expose_callback, Widget_t::func, Adjustment_t::max_value, menu_add_check_item(), and set_adjustment().

◆ menu_add_accel_item()

Widget_t * menu_add_accel_item ( Widget_t menu,
const char *  label 
)

menu_add_accel_item - add a accel item to menu

Parameters
*menu- pointer to the Widget_t menu
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 311 of file xmenu.c.

311 {
312 Widget_t *wid = menu_add_item(menu, label);
314 return wid;
315}
Widget_t * menu_add_item(Widget_t *menu, const char *label)
menu_add_item - add a item to menu
Definition xmenu.c:283
void _draw_accel_item(void *w_, void *user_data)
_draw_accel_item - draw accel item on expose call

References _draw_accel_item(), Func_t::expose_callback, Widget_t::func, and menu_add_item().

Referenced by menu_add_entry().

◆ menu_add_check_entry()

Widget_t * menu_add_check_entry ( Widget_t wid,
const char *  label 
)

menu_add_check_entry- add a check entry to menu

Parameters
*wid- pointer to the Widget_t menu
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 150 of file xmenu.c.

150 {
151 Widget_t *menu = wid->childlist->childs[0];
152 Widget_t *item = menu_add_check_item(menu,label);
153 float max_value = wid->adj->max_value+1.0;
154 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
155
156 return item;
157}

References Widget_t::adj, Widget_t::childlist, Childlist_t::childs, CL_NONE, Adjustment_t::max_value, menu_add_check_item(), and set_adjustment().

◆ menu_add_check_item()

Widget_t * menu_add_check_item ( Widget_t menu,
const char *  label 
)

menu_add_check_item - add a item to menu

Parameters
*menu- pointer to the Widget_t menu
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 317 of file xmenu.c.

317 {
318 Widget_t *wid = menu_add_item(menu, label);
319 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, 1.0,1.0, CL_TOGGLE);
320 wid->adj = wid->adj_y;
323 return wid;
324}
evfunc button_press_callback
Definition xwidget.h:100
@ CL_TOGGLE
Definition xadjustment.h:51
void _check_item_button_pressed(void *w_, void *button_, void *user_data)
_check_item_button_pressed - redraw item on button press
void _draw_check_item(void *w_, void *user_data)
_draw_check_item - draw item on expose call

References _check_item_button_pressed(), _draw_check_item(), add_adjustment(), Widget_t::adj, Widget_t::adj_y, Func_t::button_press_callback, CL_TOGGLE, Func_t::expose_callback, Widget_t::func, and menu_add_item().

Referenced by add_keyboard(), menu_add_accel_check_entry(), menu_add_check_entry(), and menu_add_radio_item().

◆ menu_add_entry()

Widget_t * menu_add_entry ( Widget_t wid,
const char *  label 
)

menu_add_entry - add a entry to menu

Parameters
*wid- pointer to the Widget_t menu
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 132 of file xmenu.c.

132 {
133 Widget_t *menu = wid->childlist->childs[0];
134 Widget_t *item = menu_add_accel_item(menu,label);
135 float max_value = wid->adj->max_value+1.0;
136 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
137
138 return item;
139}
Widget_t * menu_add_accel_item(Widget_t *menu, const char *label)
menu_add_accel_item - add a accel item to menu
Definition xmenu.c:311

References Widget_t::adj, Widget_t::childlist, Childlist_t::childs, CL_NONE, Adjustment_t::max_value, menu_add_accel_item(), and set_adjustment().

◆ menu_add_item()

Widget_t * menu_add_item ( Widget_t menu,
const char *  label 
)

menu_add_item - add a item to menu

Parameters
*menu- pointer to the Widget_t menu
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 283 of file xmenu.c.

283 {
284 Widget_t* view_port = menu->childlist->childs[0];
285 Metrics_t metrics;
286 os_get_window_metrics(menu, &metrics);
287 int width = metrics.width;
288 int height = menu->scale.init_height;
289 int si = childlist_has_child(view_port->childlist);
290 Widget_t *wid = create_widget(menu->app, view_port, 0, height*si, width, height);
291 float max_value = view_port->adj->max_value+1.0;
292 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value,1.0, CL_VIEWPORT);
293 wid->scale.gravity = MENUITEM;
294 wid->flags &= ~USE_TRANSPARENCY;
295 wid->flags |= FAST_REDRAW;
296 wid->label = label;
300 return wid;
301}
void _draw_item(void *w_, void *user_data)
_draw_item - draw item on expose call

References _draw_item(), Widget_t::adj, Widget_t::app, Widget_t::childlist, childlist_has_child(), Childlist_t::childs, CL_VIEWPORT, create_widget(), Func_t::enter_callback, Func_t::expose_callback, FAST_REDRAW, Widget_t::flags, Widget_t::func, Resize_t::gravity, Resize_t::init_height, Widget_t::label, Func_t::leave_callback, Adjustment_t::max_value, MENUITEM, os_get_window_metrics(), os_transparent_draw(), Widget_t::scale, set_adjustment(), and Metrics_t::width.

Referenced by menu_add_accel_item(), menu_add_check_item(), and menu_add_value_item().

◆ menu_add_numeric_items()

void menu_add_numeric_items ( Widget_t menu,
int *  imin,
int *  imax 
)

menu_add_numeric_items - add numeric items from imin to imax to menu

Parameters
*menu- pointer to the Widget_t menu
*imin- the low number of the numeric items
*imax- the high number of the numeric items

Definition at line 360 of file xmenu.c.

360 {
361 Widget_t* view_port = menu->childlist->childs[0];
362 Metrics_t metrics;
363 os_get_window_metrics(menu, &metrics);
364 int width = metrics.width;
365 int height = menu->scale.init_height;
366 int si = childlist_has_child(view_port->childlist);
367 float max_value = view_port->adj->max_value;
368 Widget_t *wid;
369 int i = (*imin);
370 int o = (*imax)+1;
371 for (;i<o;i++) {
372 si = childlist_has_child(view_port->childlist);
373 wid = create_widget(menu->app, view_port, 0, height*si, width, height);
374 max_value += 1.0;
375 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value,1.0, CL_VIEWPORT);
376 wid->scale.gravity = MENUITEM;
377 wid->flags &= ~USE_TRANSPARENCY;
378 wid->flags |= FAST_REDRAW;
379 snprintf(wid->input_label, 31, "%i",i);
380 wid->label = wid->input_label;
384 }
385}
char input_label[32]
Definition xwidget.h:459

References _draw_item(), Widget_t::adj, Widget_t::app, Widget_t::childlist, childlist_has_child(), Childlist_t::childs, CL_VIEWPORT, create_widget(), Func_t::enter_callback, Func_t::expose_callback, FAST_REDRAW, Widget_t::flags, Widget_t::func, Resize_t::gravity, Resize_t::init_height, Widget_t::input_label, Widget_t::label, Func_t::leave_callback, Adjustment_t::max_value, MENUITEM, os_get_window_metrics(), os_transparent_draw(), Widget_t::scale, set_adjustment(), and Metrics_t::width.

◆ menu_add_radio_entry()

Widget_t * menu_add_radio_entry ( Widget_t wid,
const char *  label 
)

menu_add_radio_entry- add a radio entry to menu

Parameters
*wid- pointer to the Widget_t menu
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 141 of file xmenu.c.

141 {
142 Widget_t *menu = wid->childlist->childs[0];
143 Widget_t *item = menu_add_radio_item(menu,label);
144 float max_value = wid->adj->max_value+1.0;
145 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
146
147 return item;
148}
Widget_t * menu_add_radio_item(Widget_t *menu, const char *label)
menu_add_radio_item - add a radio item to menu
Definition xmenu.c:342

References Widget_t::adj, Widget_t::childlist, Childlist_t::childs, CL_NONE, Adjustment_t::max_value, menu_add_radio_item(), and set_adjustment().

Referenced by add_keyboard().

◆ menu_add_radio_item()

Widget_t * menu_add_radio_item ( Widget_t menu,
const char *  label 
)

menu_add_radio_item - add a radio item to menu

Parameters
*menu- pointer to the Widget_t menu
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 342 of file xmenu.c.

342 {
343 Widget_t *wid = menu_add_check_item(menu, label);
344 wid->flags |= IS_RADIO;
347 //radio_item_set_active(wid);
348 return wid;
349}
void _radio_item_button_pressed(void *w_, void *button_, void *user_data)
_radio_item_button_pressed - redraw item on button press
@ IS_RADIO
Definition xwidget.h:394

References _draw_check_item(), _radio_item_button_pressed(), Func_t::button_press_callback, Func_t::expose_callback, Widget_t::flags, Widget_t::func, IS_RADIO, and menu_add_check_item().

Referenced by menu_add_radio_entry().

◆ menu_add_submenu()

Widget_t * menu_add_submenu ( Widget_t wid,
const char *  label 
)

menu_add_submenu - add a submenu to a Widget_t

Parameters
*wid- pointer to the Widget_t the submenu belongs to
*label- the label of the menu
Returns
Widget_t* - pointer to the Widget_t submenu struct

Definition at line 194 of file xmenu.c.

194 {
195 float max_value2 = w->adj->max_value+1.0;
196 set_adjustment(w->adj,0.0, max_value2, 0.0, max_value2,1.0, CL_NONE);
197 Widget_t *menu = w->childlist->childs[0];
198 Widget_t* view_port = menu->childlist->childs[0];
199 Metrics_t metrics;
200 os_get_window_metrics(menu, &metrics);
201 int width = metrics.width;
202 int height = menu->scale.init_height;
203 int si = childlist_has_child(view_port->childlist);
204 Widget_t *wid = create_widget(menu->app, view_port, 0, height*si, width, height);
205 float max_value1 = view_port->adj->max_value+1.0;
206 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value1,1.0, CL_VIEWPORT);
207 wid->scale.gravity = MENUITEM;
208 wid->flags &= ~USE_TRANSPARENCY;
209 wid->flags |= FAST_REDRAW;
210 wid->label = label;
211 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, -1.0,1.0, CL_NONE);
212 wid->adj = wid->adj_y;
213 float max_value = wid->adj->max_value+1.0;
214 set_adjustment(wid->adj,0.0, max_value, 0.0, max_value,1.0, CL_NONE);
219 Widget_t* submenu = create_menu(wid, 25);
220 submenu->flags |= IS_SUBMENU;
221
223 return wid;
224}

References _draw_submenu(), _enter_submenu(), _leave_submenu(), _menu_entry_released(), add_adjustment(), Widget_t::adj, Func_t::adj_callback, Widget_t::adj_y, Widget_t::app, Func_t::button_release_callback, Widget_t::childlist, childlist_has_child(), Childlist_t::childs, CL_NONE, CL_VIEWPORT, create_menu(), create_widget(), Func_t::enter_callback, Func_t::expose_callback, FAST_REDRAW, Widget_t::flags, Widget_t::func, Resize_t::gravity, Resize_t::init_height, IS_SUBMENU, Widget_t::label, Func_t::leave_callback, Adjustment_t::max_value, MENUITEM, os_get_window_metrics(), Widget_t::scale, set_active_radio_entry(), set_adjustment(), and Metrics_t::width.

◆ menu_add_value_entry()

Widget_t * menu_add_value_entry ( Widget_t wid,
const char *  label 
)

menu_add_value_entry- add a value entry to menu

Parameters
*wid- pointer to the Widget_t menu
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 169 of file xmenu.c.

169 {
170 Widget_t *menu = wid->childlist->childs[0];
171 Widget_t* view_port = menu->childlist->childs[0];
172 Metrics_t metrics;
173 os_get_window_metrics(menu, &metrics);
174 int width = metrics.width;
175 int height = 40;
176 int si = childlist_has_child(view_port->childlist);
177 Widget_t *item = create_widget(menu->app, view_port, 0, height*si, width, height);
178 float max_value = view_port->adj->max_value+1.0;
179 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value,1.0, CL_VIEWPORT);
180 item->scale.gravity = MENUITEM;
181 item->flags &= ~USE_TRANSPARENCY;
182 item->flags |= FAST_REDRAW;
183 item->label = label;
187 item->adj_y = add_adjustment(item,0.0, 0.0, 0.0, 1.0,0.01, CL_CONTINUOS);
188 item->adj = item->adj_y;
191 return item;
192}
@ CL_CONTINUOS
Definition xadjustment.h:49
void _draw_value_item(void *w_, void *user_data)
_draw_value_item - draw item on expose call
void _value_item_released(void *w_, void *button_, void *user_data)
_value_item_released - redraw item on button released

References _draw_item(), _draw_value_item(), _value_item_released(), add_adjustment(), Widget_t::adj, Widget_t::adj_y, Widget_t::app, Func_t::button_release_callback, Widget_t::childlist, childlist_has_child(), Childlist_t::childs, CL_CONTINUOS, CL_VIEWPORT, create_widget(), Func_t::enter_callback, Func_t::expose_callback, FAST_REDRAW, Widget_t::flags, Widget_t::func, Resize_t::gravity, Widget_t::label, Func_t::leave_callback, Adjustment_t::max_value, MENUITEM, os_get_window_metrics(), os_transparent_draw(), Widget_t::scale, set_adjustment(), and Metrics_t::width.

Referenced by add_keyboard().

◆ menu_add_value_item()

Widget_t * menu_add_value_item ( Widget_t menu,
const char *  label 
)

menu_add_value_item - add a item to menu

Parameters
*menu- pointer to the Widget_t menu
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 351 of file xmenu.c.

351 {
352 Widget_t *wid = menu_add_item(menu, label);
353 wid->adj_y = add_adjustment(wid,0.0, 0.0, 0.0, 1.0,0.01, CL_CONTINUOS);
354 wid->adj = wid->adj_y;
357 return wid;
358}

References _draw_value_item(), _value_item_released(), add_adjustment(), Widget_t::adj, Widget_t::adj_y, Func_t::button_release_callback, CL_CONTINUOS, Func_t::expose_callback, Widget_t::func, and menu_add_item().

◆ menu_remove_item()

void menu_remove_item ( Widget_t menu,
Widget_t item 
)

menu_remove_item - remove a item from menu

Parameters
*menu- pointer to the Widget_t menu
*item- pointer to the Widget_t item to be removed

Definition at line 303 of file xmenu.c.

303 {
304 Widget_t* view_port = menu->childlist->childs[0];
305 float max_value = view_port->adj->max_value-1.0;
306 destroy_widget(item,menu->app);
307 set_adjustment(view_port->adj,0.0, 0.0, 0.0, max_value,1.0, CL_VIEWPORT);
308 os_move_window(menu->app->dpy,view_port,0.0, 0.0);
309}
Display * dpy
Definition xputty.h:232
void os_move_window(Display *dpy, Widget_t *w, int x, int y)
os_move_window - Move a Widget_t
void destroy_widget(Widget_t *w, Xputty *main)
destroy_widget - destroy a widget When a Widget_t receive a destroy_widget() call,...
Definition xwidget.c:86

References Widget_t::adj, Widget_t::app, Widget_t::childlist, Childlist_t::childs, CL_VIEWPORT, destroy_widget(), Xputty::dpy, Adjustment_t::max_value, os_move_window(), and set_adjustment().

◆ menubar_add_menu()

Widget_t * menubar_add_menu ( Widget_t parent,
const char *  label 
)

menubar_add_menu - add a menu to a menubar

Parameters
*parent- pointer to the parent Widget_t (menubar)
*label- Label to show on the menu
Returns
Widget_t* - pointer to the Widget_t menu_item struct

Definition at line 114 of file xmenu.c.

114 {
115 cairo_text_extents_t extents;
116 cairo_text_extents(parent->crb,label , &extents);
117 int width = (int)extents.width+20;
118 Metrics_t metrics;
119 os_get_window_metrics(parent, &metrics);
120 int height = metrics.height;
121 int x = 0;
122 int i = parent->childlist->elem-1;
123 for(;i>-1;i--) {
124 Widget_t *w = parent->childlist->childs[i];
125 os_get_window_metrics(w, &metrics);
126 x += metrics.width;
127 }
128 Widget_t *wid = add_menu(parent, label, x, 0, width, height);
129 return wid;
130}
cairo_t * crb
Definition xwidget.h:489
Widget_t * add_menu(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_menu - add a menu to a Widget_t
Definition xmenu.c:86

References add_menu(), Widget_t::childlist, Childlist_t::childs, Widget_t::crb, Childlist_t::elem, Metrics_t::height, os_get_window_metrics(), and Metrics_t::width.

◆ pop_menu_show()

void pop_menu_show ( Widget_t parent,
Widget_t menu,
int  elem,
bool  above 
)

pop_menu_show - pop up a menu to a Widget_t

Parameters
*parent- pointer to the Widget_t the menu should pop over
*menu- the menu to show
elem- how many entries to show (max value)
above- show menu above or below the parent Widget_t

Definition at line 27 of file xmenu.c.

27 {
28 if (!childlist_has_child(menu->childlist)) return;
29 Widget_t* view_port = menu->childlist->childs[0];
30 if (!view_port->childlist->elem) return;
31 _configure_menu(parent, menu, elem, above);
33 if (view_port->childlist->elem <= elem)
34 widget_hide(menu->childlist->childs[1]);
35 int err = os_grab_pointer(menu);
36 menu->app->hold_grab = menu;
37
38 if (err) debug_print("Error grap pointer\n");
39}
Widget_t * hold_grab
Definition xputty.h:238
void _configure_menu(Widget_t *parent, Widget_t *menu, int elem, bool above)
_configure_menu - set final size and position of menu to a Widget_t
int os_grab_pointer(Widget_t *w)
os_grab_pointer - grab the mouse pointer. Works only on linux
void widget_hide(Widget_t *w)
widget_hide - unmap/hide a Widget_t
Definition xwidget.c:368
void pop_widget_show_all(Widget_t *w)
pop_widget_show_all - map/show popup widget with all it's childs
Definition xwidget.c:400

References _configure_menu(), Widget_t::app, Widget_t::childlist, childlist_has_child(), Childlist_t::childs, Childlist_t::elem, Xputty::hold_grab, os_grab_pointer(), pop_widget_show_all(), and widget_hide().

Referenced by _check_menu_state(), and _menu_released().

◆ pop_submenu_show()

void pop_submenu_show ( Widget_t parent,
Widget_t menu,
int  elem,
bool  above 
)

pop_submenu_show - pop up a submenu to a Widget_t

Parameters
*parent- pointer to the Widget_t the menu should pop over
*menu- the menu to show
elem- how many entries to show (max value)
above- show menu above or below the parent Widget_t

Definition at line 41 of file xmenu.c.

41 {
42 if (!childlist_has_child(menu->childlist)) return;
43 Widget_t* view_port = menu->childlist->childs[0];
44 if (!view_port->childlist->elem) return;
45 _configure_menu(parent, menu, elem, above);
47 menu->app->submenu = menu;
48}
Widget_t * submenu
Definition xputty.h:242
void submenu_widget_show_all(Widget_t *w)
submenu_widget_show_all - map/show submenu Widget_t with all childs
Definition xwidget.c:410

References _configure_menu(), Widget_t::app, Widget_t::childlist, childlist_has_child(), Childlist_t::childs, Childlist_t::elem, Xputty::submenu, and submenu_widget_show_all().

Referenced by _enter_submenu().

◆ radio_item_set_active()

void radio_item_set_active ( Widget_t w)

radio_item_set_active - activate selected radio item

Parameters
*w- the Widget_t to activate

Definition at line 326 of file xmenu.c.

326 {
327 Widget_t * p = (Widget_t*) w->parent;
328 int i = p->childlist->elem-1;
329 for(;i>-1;i--) {
330 Widget_t *wid = p->childlist->childs[i];
331 if (wid->adj && wid->flags & IS_RADIO) {
332 if (wid == w) {
333 adj_set_value(wid->adj_y, 1.0);
334 } else {
335 adj_set_value(wid->adj_y, 0.0);
336 }
337 wid->state=0;
338 }
339 }
340}
void * parent
Definition xwidget.h:471
void adj_set_value(Adjustment_t *adj, float value)
adj_set_value - set the current value to the Adjustment_t

References Widget_t::adj, adj_set_value(), Widget_t::adj_y, Widget_t::childlist, Childlist_t::childs, Childlist_t::elem, Widget_t::flags, IS_RADIO, Widget_t::parent, and Widget_t::state.

Referenced by _radio_item_button_pressed(), and set_active_radio_entry_num().

◆ set_active_radio_entry()

void set_active_radio_entry ( void *  w_,
void *  user_data 
)

Definition at line 60 of file xmenu.c.

60 {
61 Widget_t *w = (Widget_t*)w_;
62 int v = (int)adj_get_value(w->adj);
63 Widget_t *menu = w->childlist->childs[0];
64 Widget_t *view_port = menu->childlist->childs[0];
65 if (!childlist_has_child(view_port->childlist)) return;
66 int i = view_port->childlist->elem-1;
67 if (v > i || v < 0) return;
68 Widget_t *wi = view_port->childlist->childs[v];
69 for(;i>-1;i--) {
70 Widget_t *wid = view_port->childlist->childs[i];
71 if (wid->adj && wid->flags & IS_RADIO) {
72 if (wid == wi) adj_set_value(wid->adj_y, 1.0);
73 else adj_set_value(wid->adj_y, 0.0);
74 }
75 }
76}
float adj_get_value(Adjustment_t *adj)
adj_get_value - get the current value of the Adjustment_t

References Widget_t::adj, adj_get_value(), adj_set_value(), Widget_t::adj_y, Widget_t::childlist, childlist_has_child(), Childlist_t::childs, Childlist_t::elem, Widget_t::flags, and IS_RADIO.

Referenced by add_menu(), cmenu_add_submenu(), and menu_add_submenu().

◆ set_active_radio_entry_num()

void set_active_radio_entry_num ( Widget_t w,
int  active 
)

set_active_radio_item - activate selected radio item by number

Parameters
*w- the Widget_t hold the menu
active- the menu entry to activate

Definition at line 78 of file xmenu.c.

78 {
79 Widget_t *menu = w->childlist->childs[0];
80 Widget_t *view_port = menu->childlist->childs[0];
81 Widget_t *wid = view_port->childlist->childs[active];
82 if (wid->adj && wid->flags & IS_RADIO)
84}
void radio_item_set_active(Widget_t *w)
radio_item_set_active - activate selected radio item
Definition xmenu.c:326

References Widget_t::adj, Widget_t::childlist, Childlist_t::childs, Widget_t::flags, IS_RADIO, and radio_item_set_active().

Referenced by add_keyboard().