From 12a5d777e54cfaf447bd26acf308cee612268d1b Mon Sep 17 00:00:00 2001 From: Bruno Herbelin Date: Fri, 1 Sep 2023 17:53:50 +0200 Subject: [PATCH] Icons improved for Display, preview, etc Also added a close icon to large preview. Fixed help with recent improvements. --- rsc/images/icons.dds | Bin 1638528 -> 1638528 bytes src/ImGuiToolkit.cpp | 4 ++++ src/ImGuiVisitor.cpp | 2 +- src/OutputPreviewWindow.cpp | 5 +++-- src/UserInterfaceManager.cpp | 36 +++++++++++++++++++++++++++-------- src/defines.h | 7 ++++--- 6 files changed, 40 insertions(+), 14 deletions(-) diff --git a/rsc/images/icons.dds b/rsc/images/icons.dds index 0a5065c1923b8c7246eb8f59ba9a4a5d49612ec8..270174cabeed5fd30e8a226efa2bdb38b907a7ff 100644 GIT binary patch delta 31921 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 delta 40105 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 U|CGR=68KXBe@dVY30!UdfAI}$&j0`b diff --git a/src/ImGuiToolkit.cpp b/src/ImGuiToolkit.cpp index 97b984a..7e32083 100644 --- a/src/ImGuiToolkit.cpp +++ b/src/ImGuiToolkit.cpp @@ -610,6 +610,8 @@ bool ImGuiToolkit::SelectableIcon(int i, int j, const char* label, bool selected char text_buf[256]; ImFormatString(text_buf, IM_ARRAYSIZE(text_buf), "%s%s", space_buf, label); + ImGui::PushID( i * 20 + j + ImGui::GetID("##SelectableIcon") ); + // draw menu item bool ret = ImGui::Selectable(text_buf, selected, ImGuiSelectableFlags_None, size_arg); @@ -620,6 +622,8 @@ bool ImGuiToolkit::SelectableIcon(int i, int j, const char* label, bool selected // overlay of icon on top of first item _drawIcon(draw_pos, i, j); + ImGui::PopID(); + return ret; } diff --git a/src/ImGuiVisitor.cpp b/src/ImGuiVisitor.cpp index 79c8459..47b340c 100644 --- a/src/ImGuiVisitor.cpp +++ b/src/ImGuiVisitor.cpp @@ -935,7 +935,7 @@ void ImGuiVisitor::visit (RenderSource& s) } // icon to open output view ImGui::SetCursorPos(top); - if (ImGuiToolkit::IconButton(ICON_FA_LAPTOP, "Open Display")) + if (ImGuiToolkit::IconButton(ICON_FA_DESKTOP, "Open Display")) Settings::application.widget.preview = true; } else diff --git a/src/OutputPreviewWindow.cpp b/src/OutputPreviewWindow.cpp index cdf532d..88f328a 100644 --- a/src/OutputPreviewWindow.cpp +++ b/src/OutputPreviewWindow.cpp @@ -224,7 +224,8 @@ void OutputPreviewWindow::Render() if (ImGui::BeginMenu(IMGUI_TITLE_PREVIEW)) { // Preview and output menu - ImGui::MenuItem( MENU_LARGEPREVIEW, SHORTCUT_LARGEPREVIEW, &UserInterface::manager().show_output_fullview); + if (ImGuiToolkit::MenuItemIcon(ICON_PREVIEW, MENU_PREVIEW, SHORTCUT_PREVIEW) ) + UserInterface::manager().show_output_fullview = true; ImGui::MenuItem( MENU_OUTPUTDISABLE, SHORTCUT_OUTPUTDISABLE, &Settings::application.render.disabled); // Display window manager menu @@ -570,7 +571,7 @@ void OutputPreviewWindow::Render() h += (Settings::application.accept_connections ? 1.f : 0.f); draw_list->AddRectFilled(draw_pos, ImVec2(draw_pos.x + imagesize.x, draw_pos.y + h * r), IMGUI_COLOR_OVERLAY); ImGui::SetCursorScreenPos(draw_pos); - ImGui::Text(" " ICON_FA_LAPTOP " %d x %d px, %.d fps", output->width(), output->height(), int(Mixer::manager().fps()) ); + ImGui::Text(" " ICON_FA_DESKTOP " %d x %d px, %.d fps", output->width(), output->height(), int(Mixer::manager().fps()) ); if (Settings::application.accept_connections) ImGui::Text( " " ICON_FA_SHARE_ALT_SQUARE " Available as %s (%ld peer connected)", Connection::manager().info().name.c_str(), diff --git a/src/UserInterfaceManager.cpp b/src/UserInterfaceManager.cpp index 6cb0d92..e428a09 100644 --- a/src/UserInterfaceManager.cpp +++ b/src/UserInterfaceManager.cpp @@ -1292,6 +1292,15 @@ void UserInterface::RenderOutputView() // draw inspector (magnifying glass) if ( _inspector && ImGui::IsItemHovered() ) DrawInspector(output->texture(), imagesize, imagesize, draw_pos); + + // closing icon + ImGui::SetCursorScreenPos(draw_pos + ImVec2(IMGUI_SAME_LINE, IMGUI_SAME_LINE)); + ImGuiToolkit::PushFont(ImGuiToolkit::FONT_LARGE); + if ( ImGuiToolkit::IconButton(ICON_FA_TIMES, "Close preview") ) + show_output_fullview = false; + if ( ImGui::IsItemHovered() ) + _inspector = false; + ImGui::PopFont(); } // local keyboard handler (because focus is captured by modal dialog) @@ -2352,6 +2361,10 @@ void UserInterface::RenderHelp() ImGui::SetColumnWidth(0, width_column0); ImGui::PushTextWrapPos(width_window ); + ImGui::Text(ICON_FA_MOUSE_POINTER " Snap cursor"); ImGui::NextColumn(); + ImGui::Text ("Snapping mouse cursors modify the mouse effective position to enhace the movement: e.g. snap to grid, move on a line, or trigger on metronome. " + "They are activated with the [" ALT_MOD "] key" ); + ImGui::NextColumn(); ImGui::Text(ICON_FA_BULLSEYE " Mixing"); ImGui::NextColumn(); ImGui::Text ("Adjust opacity of sources, visible in the center and transparent on the side. Sources are de-activated outside of darker circle."); ImGui::NextColumn(); @@ -2359,7 +2372,7 @@ void UserInterface::RenderHelp() ImGui::Text ("Move, scale, rotate or crop sources to place them in the output frame."); ImGui::NextColumn(); ImGuiToolkit::Icon(ICON_WORKSPACE); ImGui::SameLine(0, IMGUI_SAME_LINE); ImGui::Text("Layers"); ImGui::NextColumn(); - ImGui::Text ("Organize the rendering order of sources, from background to foreground."); + ImGui::Text ("Organize the rendering order of sources in depth, from background to foreground."); ImGui::NextColumn(); ImGui::Text(ICON_FA_CHESS_BOARD " Texturing"); ImGui::NextColumn(); ImGui::Text ("Apply masks or freely paint the texture on the source surface. Repeat or crop the graphics."); @@ -2379,7 +2392,7 @@ void UserInterface::RenderHelp() ImGui::PushTextWrapPos(width_window ); ImGui::Text(IMGUI_TITLE_PREVIEW); ImGui::NextColumn(); - ImGui::Text ("Preview the output displayed in the rendering window. Control video recording and streaming."); + ImGui::Text ("Preview the output displayed in the rendering window(s). Control video recording and streaming."); ImGui::NextColumn(); ImGui::Text(IMGUI_TITLE_MEDIAPLAYER); ImGui::NextColumn(); ImGui::Text ("Play, pause, rewind videos or dynamic sources. Control play duration, speed and synchronize multiple videos."); @@ -2540,6 +2553,10 @@ void UserInterface::RenderHelp() ImGui::Text(ICON_FA_BACKSPACE " Delete source"); ImGui::NextColumn(); ImGui::Text("TAB"); ImGui::NextColumn(); ImGui::Text(ICON_FA_EXCHANGE_ALT " Switch Current source"); ImGui::NextColumn(); + ImGui::Text("[ 0 ][ i ]..[ 9 ]"); ImGui::NextColumn(); + ImGui::Text(ICON_FA_HASHTAG " Switch to source at index i"); ImGui::NextColumn(); + ImGui::Text(ALT_MOD); ImGui::NextColumn(); + ImGui::Text(ICON_FA_MOUSE_POINTER " Activate Snap mouse cursor"); ImGui::NextColumn(); ImGui::Text("F1"); ImGui::NextColumn(); ImGui::Text(ICON_FA_BULLSEYE " Mixing view"); ImGui::NextColumn(); ImGui::Text("F2"); ImGui::NextColumn(); @@ -2550,13 +2567,15 @@ void UserInterface::RenderHelp() ImGui::Text(ICON_FA_CHESS_BOARD " Texturing view"); ImGui::NextColumn(); ImGui::Text("F5"); ImGui::NextColumn(); ImGui::Text(ICON_FA_TV " Displays view"); ImGui::NextColumn(); + ImGui::Text(SHORTCUT_PREVIEW); ImGui::NextColumn(); + ImGuiToolkit::Icon(ICON_PREVIEW); ImGui::SameLine(0, IMGUI_SAME_LINE); ImGui::Text("Preview output (toggle or long press)"); ImGui::NextColumn(); ImGui::Text(CTRL_MOD "TAB"); ImGui::NextColumn(); ImGui::Text("Switch view"); ImGui::NextColumn(); ImGui::Text(SHORTCUT_FULLSCREEN); ImGui::NextColumn(); ImGui::Text(ICON_FA_EXPAND_ALT " " TOOLTIP_FULLSCREEN " window"); ImGui::NextColumn(); ImGui::Separator(); ImGui::Text(SHORTCUT_OUTPUT); ImGui::NextColumn(); - ImGui::Text(ICON_FA_LAPTOP " " TOOLTIP_OUTPUT "window"); ImGui::NextColumn(); + ImGui::Text(ICON_FA_DESKTOP " " TOOLTIP_OUTPUT "window"); ImGui::NextColumn(); ImGui::Text(SHORTCUT_PLAYER); ImGui::NextColumn(); ImGui::Text(ICON_FA_PLAY_CIRCLE " " TOOLTIP_PLAYER "window" ); ImGui::NextColumn(); ImGui::Text(SHORTCUT_TIMER); ImGui::NextColumn(); @@ -2566,7 +2585,7 @@ void UserInterface::RenderHelp() ImGui::Text(SHORTCUT_SHADEREDITOR); ImGui::NextColumn(); ImGui::Text(ICON_FA_CODE " " TOOLTIP_SHADEREDITOR "window"); ImGui::NextColumn(); ImGui::Text("ESC"); ImGui::NextColumn(); - ImGui::Text(" Hide / Show all windows"); ImGui::NextColumn(); + ImGui::Text(" Hide / Show all windows (toggle or long press)"); ImGui::NextColumn(); ImGui::Separator(); ImGui::Text(SHORTCUT_NEW_FILE); ImGui::NextColumn(); ImGui::Text(MENU_NEW_FILE " session"); ImGui::NextColumn(); @@ -2596,8 +2615,6 @@ void UserInterface::RenderHelp() ImGui::Text(MENU_CAPTUREFRAME " display"); ImGui::NextColumn(); ImGui::Text(SHORTCUT_OUTPUTDISABLE); ImGui::NextColumn(); ImGui::Text(MENU_OUTPUTDISABLE " display output"); ImGui::NextColumn(); - ImGui::Text(SHORTCUT_LARGEPREVIEW); ImGui::NextColumn(); - ImGui::Text(MENU_LARGEPREVIEW " of output"); ImGui::NextColumn(); ImGui::Text(SHORTCUT_RECORD); ImGui::NextColumn(); ImGui::Text(MENU_RECORD " Output"); ImGui::NextColumn(); ImGui::Text(SHORTCUT_RECORDCONT); ImGui::NextColumn(); @@ -3010,9 +3027,12 @@ void Navigator::Render() view_options_timeout = 0; } - if (ImGui::Selectable( ICON_FA_TV, &selected_view[View::DISPLAYS], 0, iconsize)) + int j = Settings::application.render.disabled ? 8 : 7; + if (ImGuiToolkit::SelectableIcon(10, j, "", selected_view[View::DISPLAYS], iconsize)) +// if (ImGui::Selectable( ICON_FA_TV, &selected_view[View::DISPLAYS], 0, iconsize)) { UserInterface::manager().setView(View::DISPLAYS); + Settings::application.current_view = View::DISPLAYS; if (previous_view == Settings::application.current_view) { ImGui::OpenPopup( "PopupViewOptions" ); view_options_pos = ImGui::GetCursorScreenPos(); @@ -4649,7 +4669,7 @@ void Navigator::RenderMainPannelVimix() ImGui::SameLine(0, 0.5f * ImGui::GetTextLineHeight()); on = Settings::application.widget.preview; - if (ImGuiToolkit::IconToggle( ICON_FA_LAPTOP, &on, TOOLTIP_OUTPUT, SHORTCUT_OUTPUT)) + if (ImGuiToolkit::IconToggle( ICON_FA_DESKTOP, &on, TOOLTIP_OUTPUT, SHORTCUT_OUTPUT)) UserInterface::manager().outputcontrol.setVisible(on); ImGui::SameLine(0, ImGui::GetTextLineHeight()); diff --git a/src/defines.h b/src/defines.h index 445a1de..dd0918c 100644 --- a/src/defines.h +++ b/src/defines.h @@ -128,7 +128,7 @@ #define IMGUI_TITLE_HELP ICON_FA_LIFE_RING " Help" #define IMGUI_TITLE_TOOLBOX ICON_FA_HAMSA " Guru Toolbox" #define IMGUI_TITLE_SHADEREDITOR ICON_FA_CODE " Shader Editor" -#define IMGUI_TITLE_PREVIEW ICON_FA_LAPTOP " Display" +#define IMGUI_TITLE_PREVIEW ICON_FA_DESKTOP " Display" #ifdef APPLE #define CTRL_MOD "Cmd+" @@ -180,8 +180,9 @@ #define SHORTCUT_CAPTURE_GUI "F9" #define MENU_OUTPUTDISABLE ICON_FA_EYE_SLASH " Disable" #define SHORTCUT_OUTPUTDISABLE "F12" -#define MENU_LARGEPREVIEW ICON_FA_EXPAND_ARROWS_ALT " Large preview" -#define SHORTCUT_LARGEPREVIEW "F6" +#define ICON_PREVIEW 4, 15 +#define MENU_PREVIEW "Preview" +#define SHORTCUT_PREVIEW "F6" #define MENU_CLOSE ICON_FA_TIMES " Close" #define DIALOG_FAILED_SOURCE ICON_FA_EXCLAMATION_TRIANGLE " Source failure"