From 26e171cfbc4a79d968da324ffd58347828930612 Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 7 Mar 2016 18:17:44 -0500 Subject: [PATCH] [zr] add wizard page indicator --- menu/drivers/zr.c | 4 + menu/drivers/zr_common.c | 176 +++++++++++++++++++++++++-------------- menu/drivers/zr_common.h | 2 + 3 files changed, 121 insertions(+), 61 deletions(-) diff --git a/menu/drivers/zr.c b/menu/drivers/zr.c index 7e25a1dbc7..212dcb414f 100644 --- a/menu/drivers/zr.c +++ b/menu/drivers/zr.c @@ -635,6 +635,10 @@ static void zrmenu_init_device(zrmenu_handle_t *zr) zr->icons.settings = zr_icon_load(buf); fill_pathname_join(buf, zr->assets_directory, "invader.png", sizeof(buf)); zr->icons.invader = zr_icon_load(buf); + fill_pathname_join(buf, zr->assets_directory, "page_on.png", sizeof(buf)); + zr->icons.page_on = zr_icon_load(buf); + fill_pathname_join(buf, zr->assets_directory, "page_off.png", sizeof(buf)); + zr->icons.page_off = zr_icon_load(buf); zrmenu_set_style(&zr->ctx, THEME_DARK); zr->size_changed = true; diff --git a/menu/drivers/zr_common.c b/menu/drivers/zr_common.c index f4cf1d820d..c3a4c0cafc 100644 --- a/menu/drivers/zr_common.c +++ b/menu/drivers/zr_common.c @@ -477,72 +477,126 @@ void zrmenu_wnd_wizard(struct zr_context *ctx, zrmenu_handle_t *zr) /* uncomment this to hide the panel backgrounds zr_push_color(ctx, ZR_COLOR_WINDOW, zr_rgba(0,0,0,0)); */ struct zr_panel sub; - if (panel == 0) + switch (panel) { + case 0: + zr_layout_row_begin(ctx, ZR_DYNAMIC, height * 0.80f, 2); + zr_layout_row_push(ctx, 0.15f); + if (zr_group_begin(ctx, &sub, "", ZR_WINDOW_NO_SCROLLBAR|ZR_WINDOW_BORDER|ZR_WINDOW_NO_SCROLLBAR)) + { - zr_layout_row_begin(ctx, ZR_DYNAMIC, height * 0.80f, 2); - zr_layout_row_push(ctx, 0.15f); - if (zr_group_begin(ctx, &sub, "", ZR_WINDOW_NO_SCROLLBAR|ZR_WINDOW_BORDER|ZR_WINDOW_NO_SCROLLBAR)) { + zr_layout_space_begin(ctx, ZR_STATIC, width * 0.15f, 1); + zr_layout_space_push(ctx, zr_rect(0, 0, width * 0.15f, width * 0.15f)); + zr_image(ctx, zr->icons.invader); + zr_layout_space_end(ctx); + zr_group_end(ctx); + } + zr_layout_row_push(ctx, 0.85f); - zr_layout_space_begin(ctx, ZR_STATIC, width * 0.15f, 1); - zr_layout_space_push(ctx, zr_rect(0, 0, width * 0.15f, width * 0.15f)); - zr_image(ctx, zr->icons.invader); - zr_layout_space_end(ctx); - zr_group_end(ctx); - } - zr_layout_row_push(ctx, 0.85f); - if (zr_group_begin(ctx, &sub, "", ZR_WINDOW_NO_SCROLLBAR|ZR_WINDOW_BORDER|ZR_WINDOW_NO_SCROLLBAR)) { - zr_layout_row_dynamic(ctx, 20, 1); - zr_label(ctx, "Label aligned left", ZR_TEXT_LEFT); - zr_label(ctx, "Label aligned centered", ZR_TEXT_CENTERED); - zr_label(ctx, "Label aligned right", ZR_TEXT_RIGHT); - zr_label_colored(ctx, "Blue text", ZR_TEXT_LEFT, zr_rgb(0,0,255)); - zr_label_colored(ctx, "Yellow text", ZR_TEXT_LEFT, zr_rgb(255,255,0)); - zr_text(ctx, "Text without /0", 15, ZR_TEXT_RIGHT); - zr_layout_row_dynamic(ctx, 100, 1); - zr_label_wrap(ctx, "This is a very long line to hopefully get this text to be wrapped into multiple lines to show line wrapping, someone should write some text welcoming users to retroarch or something like that in this window, I'm not really good at this"); - zr_group_end(ctx); - } - zr_layout_row_end(ctx); - zr_layout_row_dynamic(ctx, 30, 4); - zr_label(ctx,"", ZR_TEXT_RIGHT); - zr_label(ctx,"", ZR_TEXT_RIGHT); - zr_label(ctx,"", ZR_TEXT_RIGHT); - if (zr_button_text(ctx, "Next", ZR_BUTTON_DEFAULT)) - panel++; - } - if (panel == 1) - { + if (zr_group_begin(ctx, &sub, "", ZR_WINDOW_NO_SCROLLBAR|ZR_WINDOW_BORDER|ZR_WINDOW_NO_SCROLLBAR)) + { - zr_layout_row_begin(ctx, ZR_DYNAMIC, height * 0.80f, 2); - zr_layout_row_push(ctx, 0.15f); - if (zr_group_begin(ctx, &sub, "", ZR_WINDOW_NO_SCROLLBAR|ZR_WINDOW_BORDER)) { + zr_layout_row_dynamic(ctx, 14, 15); + zr_image(ctx, zr->icons.page_on); + zr_image(ctx, zr->icons.page_off); + zr_image(ctx, zr->icons.page_off); + zr_image(ctx, zr->icons.page_off); + zr_image(ctx, zr->icons.page_off); - zr_layout_space_begin(ctx, ZR_STATIC, width * 0.15f, 1); - zr_layout_space_push(ctx, zr_rect(0, 0, width * 0.15f, width * 0.15f)); - zr_layout_space_end(ctx); - zr_group_end(ctx); - } - zr_layout_row_push(ctx, 0.85f); - if (zr_group_begin(ctx, &sub, "", ZR_WINDOW_NO_SCROLLBAR|ZR_WINDOW_BORDER|ZR_WINDOW_NO_SCROLLBAR)) { - zr_layout_row_dynamic(ctx, 40, 1); - zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); - zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); - zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); - zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); - zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); - zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); - zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); - zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); - zr_group_end(ctx); - } - zr_layout_row_end(ctx); - zr_layout_row_dynamic(ctx, 30, 4); - zr_label(ctx,"", ZR_TEXT_RIGHT); - zr_label(ctx,"", ZR_TEXT_RIGHT); - zr_label(ctx,"", ZR_TEXT_RIGHT); - if (zr_button_text(ctx, "Next", ZR_BUTTON_DEFAULT)) - panel++; + zr_layout_row_dynamic(ctx, 20, 1); + zr_label(ctx, "Label aligned left", ZR_TEXT_LEFT); + zr_label(ctx, "Label aligned centered", ZR_TEXT_CENTERED); + zr_label(ctx, "Label aligned right", ZR_TEXT_RIGHT); + zr_label_colored(ctx, "Blue text", ZR_TEXT_LEFT, zr_rgb(0,0,255)); + zr_label_colored(ctx, "Yellow text", ZR_TEXT_LEFT, zr_rgb(255,255,0)); + zr_text(ctx, "Text without /0", 15, ZR_TEXT_RIGHT); + zr_layout_row_dynamic(ctx, 100, 1); + zr_label_wrap(ctx, "This is a very long line to hopefully get this text to be wrapped into multiple lines to show line wrapping, someone should write some text welcoming users to retroarch or something like that in this window, I'm not really good at this"); + zr_group_end(ctx); + } + zr_layout_row_end(ctx); + zr_layout_row_dynamic(ctx, 30, 4); + zr_label(ctx,"", ZR_TEXT_RIGHT); + zr_label(ctx,"", ZR_TEXT_RIGHT); + zr_label(ctx,"", ZR_TEXT_RIGHT); + if (zr_button_text(ctx, "Next", ZR_BUTTON_DEFAULT)) + panel++; + break; + case 1: + zr_layout_row_begin(ctx, ZR_DYNAMIC, height * 0.80f, 2); + zr_layout_row_push(ctx, 0.15f); + if (zr_group_begin(ctx, &sub, "", ZR_WINDOW_NO_SCROLLBAR|ZR_WINDOW_BORDER)) + { + zr_layout_space_begin(ctx, ZR_STATIC, width * 0.15f, 1); + zr_layout_space_push(ctx, zr_rect(0, 0, width * 0.15f, width * 0.15f)); + zr_layout_space_end(ctx); + zr_group_end(ctx); + } + zr_layout_row_push(ctx, 0.85f); + + if (zr_group_begin(ctx, &sub, "", ZR_WINDOW_NO_SCROLLBAR|ZR_WINDOW_BORDER|ZR_WINDOW_NO_SCROLLBAR)) + { + + zr_layout_row_dynamic(ctx, 14, 15); + zr_image(ctx, zr->icons.page_on); + zr_image(ctx, zr->icons.page_on); + zr_image(ctx, zr->icons.page_off); + zr_image(ctx, zr->icons.page_off); + zr_image(ctx, zr->icons.page_off); + + zr_layout_row_dynamic(ctx, 40, 1); + zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); + zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); + zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); + zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); + zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); + zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); + zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); + zr_button_text_image(ctx, zr->icons.folder, settings->libretro, ZR_TEXT_CENTERED, ZR_BUTTON_DEFAULT); + zr_group_end(ctx); + } + zr_layout_row_end(ctx); + zr_layout_row_dynamic(ctx, 30, 4); + zr_label(ctx,"", ZR_TEXT_RIGHT); + zr_label(ctx,"", ZR_TEXT_RIGHT); + if (zr_button_text(ctx, "Previous", ZR_BUTTON_DEFAULT)) + panel--; + if (zr_button_text(ctx, "Next", ZR_BUTTON_DEFAULT)) + panel++; + break; + default: + zr_layout_row_begin(ctx, ZR_DYNAMIC, height * 0.80f, 2); + zr_layout_row_push(ctx, 0.15f); + if (zr_group_begin(ctx, &sub, "", ZR_WINDOW_NO_SCROLLBAR|ZR_WINDOW_BORDER)) + { + zr_layout_space_begin(ctx, ZR_STATIC, width * 0.15f, 1); + zr_layout_space_push(ctx, zr_rect(0, 0, width * 0.15f, width * 0.15f)); + zr_layout_space_end(ctx); + zr_group_end(ctx); + } + zr_layout_row_push(ctx, 0.85f); + + if (zr_group_begin(ctx, &sub, "", ZR_WINDOW_NO_SCROLLBAR|ZR_WINDOW_BORDER|ZR_WINDOW_NO_SCROLLBAR)) + { + zr_layout_row_dynamic(ctx, 14, 15); + zr_image(ctx, zr->icons.page_on); + zr_image(ctx, zr->icons.page_on); + zr_image(ctx, zr->icons.page_on); + zr_image(ctx, zr->icons.page_off); + zr_image(ctx, zr->icons.page_off); + + zr_layout_row_dynamic(ctx, 40, 1); + zr_group_end(ctx); + } + zr_layout_row_end(ctx); + zr_layout_row_dynamic(ctx, 30, 4); + zr_label(ctx,"", ZR_TEXT_RIGHT); + zr_label(ctx,"", ZR_TEXT_RIGHT); + if (zr_button_text(ctx, "Previous", ZR_BUTTON_DEFAULT)) + panel--; + if (zr_button_text(ctx, "Next", ZR_BUTTON_DEFAULT)) + panel++; + break; } zr_reset_colors(ctx); diff --git a/menu/drivers/zr_common.h b/menu/drivers/zr_common.h index c4711a2e55..50a9ce2303 100644 --- a/menu/drivers/zr_common.h +++ b/menu/drivers/zr_common.h @@ -46,6 +46,8 @@ struct icons { struct zr_image settings; struct zr_image speaker; struct zr_image invader; + struct zr_image page_on; + struct zr_image page_off; }; struct window {