#include <string.h>
#include "config.h"
-#define POPUP_MENU_PAD_TOP 2
+#define POPUP_MENU_PAD_TOP 4
#define POPUP_MENU_PAD_BOTTOM 2
#define POPUP_MENU_PAD_LEFT 2
#define POPUP_MENU_PAD_RIGHT 1
int init_tscolors(void);
int create_todowin(void);
+/* menu render callbacks */
+void render_menuitem(Menu* menu, int item_index, int start_y);
+int menuitem_height(MenuItem* menuitem);
+
/* init stuff */
int
init_tscurses(void)
set_menu_win(new_menu, win);
set_menu_focus(new_menu, i == 0); // make first win focused
+ /* set menu render callbacks */
+ set_menu_renderitem(new_menu, *render_menuitem);
+ set_menu_itemheight(new_menu, *menuitem_height);
+
/* refresh */
refresh();
wrefresh(win);
return menu_list;
}
+void
+render_menuitem(Menu* menu, int item_index, int start_y)
+{
+ MenuItem* curitem;
+ WINDOW* menu_win;
+ int hlcolor;
+
+ curitem = get_menu_item(menu, item_index);
+ menu_win = get_menu_win(menu);
+
+ /* color selected item */
+ hlcolor = COLOR_PAIR((item_index == get_selected_item(menu) && get_menu_focused(menu) == true) ? TS_SELECTED : TS_NONSELECTED);
+ wattron(menu_win, hlcolor);
+ mvwprintw(menu_win, start_y, 0, get_menuitem_title(curitem));
+ wattroff(menu_win, hlcolor);
+
+ /* display number of items */
+ if (strlen(get_menuitem_descrip(curitem)) > 0) {
+ wattron(menu_win, COLOR_PAIR(TS_ITEMCOUNT));
+ mvwprintw(menu_win, start_y+1, 0, get_menuitem_descrip(curitem));
+ wattroff(menu_win, COLOR_PAIR(TS_ITEMCOUNT));
+ }
+
+}
+
+int
+menuitem_height(MenuItem* menuitem)
+{
+ int lines;
+
+ lines = 1;
+ if (strlen(get_menuitem_descrip(menuitem)) > 0) {
+ lines += 1;
+ }
+
+ return lines;
+}
+
MenuItem**
todolist_to_menuitem(TodoItem** item_list, int list_length)
{
set_menu_win(popupmenu_menu, popupmenu_menu_win);
set_menu_focus(popupmenu_menu, 1);
box(popupmenu_win, 0, 0);
- box(popupmenu_menu_win, 0, 0);
+
+ /* move this stuff to render phase later? */
+ mvwprintw(popupmenu_win, 1, 2, itemdata->item_name);
+ mvwprintw(popupmenu_win, 2, 2, (strlen(itemdata->description) > 0) ? itemdata->description : "no description");
/* don't forget to free popupmenu after */
new_popupmenu->win = popupmenu_win;
render_popupmenu(PopupMenu* popupmenu)
{
render_menu(popupmenu->menu);
-
wrefresh(popupmenu->win);
return 0;