BugFix UI

This commit is contained in:
Bruno Herbelin
2023-10-27 21:13:46 +02:00
parent f6e4701d6b
commit f19b18d806
2 changed files with 65 additions and 51 deletions

View File

@@ -704,13 +704,24 @@ void ImGuiVisitor::visit (MediaSource& s)
top.x += ImGui::GetFrameHeight(); top.x += ImGui::GetFrameHeight();
} }
ImGui::SetCursorPos(top); ImGui::SetCursorPos(top);
if (ImGuiToolkit::IconButton(2, 5, "Show in finder")) if (ImGuiToolkit::IconButton(3, 5, "Show in finder"))
SystemToolkit::open(SystemToolkit::path_filename(s.path())); SystemToolkit::open(SystemToolkit::path_filename(s.path()));
ImGui::SetCursorPos(botom);
MediaPlayer *mp = s.mediaplayer(); MediaPlayer *mp = s.mediaplayer();
if (mp && !mp->isImage()) { if (mp && !mp->isImage()) {
// information on gstreamer effect filter
if ( mp->videoEffectAvailable() && !mp->videoEffect().empty()) {
top.x += ImGui::GetFrameHeight();
ImGui::SetCursorPos(top);
std::string desc = mp->videoEffect();
desc = desc.substr(0, desc.find_first_of(' '));
desc = "Has gstreamer effect '" + desc + "'";
ImGuiToolkit::Indication(desc.c_str(),16,16);
}
ImGui::SetCursorPos(botom);
// Selector for Hardware or software decoding, if available // Selector for Hardware or software decoding, if available
if ( Settings::application.render.gpu_decoding ) { if ( Settings::application.render.gpu_decoding ) {
@@ -744,6 +755,7 @@ void ImGuiVisitor::visit (MediaSource& s)
ImGui::SameLine(); ImGui::SameLine();
ImGui::TextDisabled("Hardware decoding disabled"); ImGui::TextDisabled("Hardware decoding disabled");
} }
} }
} }
@@ -867,7 +879,7 @@ void ImGuiVisitor::visit (SessionFileSource& s)
} }
ImGui::SetCursorPos(top); ImGui::SetCursorPos(top);
if (ImGuiToolkit::IconButton(2, 5, "Show in finder")) if (ImGuiToolkit::IconButton(3, 5, "Show in finder"))
SystemToolkit::open(SystemToolkit::path_filename(s.path())); SystemToolkit::open(SystemToolkit::path_filename(s.path()));
} }
@@ -1669,7 +1681,7 @@ void ImGuiVisitor::visit (MultiFileSource& s)
// offer to open file browser at location // offer to open file browser at location
ImGui::SetCursorPos(top); ImGui::SetCursorPos(top);
if (ImGuiToolkit::IconButton(2, 5, "Show in finder")) if (ImGuiToolkit::IconButton(3, 5, "Show in finder"))
SystemToolkit::open(SystemToolkit::path_filename( s.sequence().location )); SystemToolkit::open(SystemToolkit::path_filename( s.sequence().location ));
ImGui::SetCursorPos(botom); ImGui::SetCursorPos(botom);

View File

@@ -1044,12 +1044,13 @@ void UserInterface::showMenuWindows()
if ( ImGui::MenuItem( MENU_INPUTS, SHORTCUT_INPUTS, &Settings::application.widget.inputs) ) if ( ImGui::MenuItem( MENU_INPUTS, SHORTCUT_INPUTS, &Settings::application.widget.inputs) )
UserInterface::manager().inputscontrol.setVisible(Settings::application.widget.inputs); UserInterface::manager().inputscontrol.setVisible(Settings::application.widget.inputs);
ImGui::Separator();
// Show Help // Show Help
ImGui::MenuItem( MENU_HELP, SHORTCUT_HELP, &Settings::application.widget.help ); ImGui::MenuItem( MENU_HELP, SHORTCUT_HELP, &Settings::application.widget.help );
// Show Logs // Show Logs
ImGui::MenuItem( MENU_LOGS, SHORTCUT_LOGS, &Settings::application.widget.logs ); ImGui::MenuItem( MENU_LOGS, SHORTCUT_LOGS, &Settings::application.widget.logs );
ImGui::Separator();
// Enable / disable source toolbar // Enable / disable source toolbar
ImGui::MenuItem( MENU_SOURCE_TOOL, NULL, &Settings::application.widget.source_toolbar ); ImGui::MenuItem( MENU_SOURCE_TOOL, NULL, &Settings::application.widget.source_toolbar );
// Enable / disable metrics toolbar // Enable / disable metrics toolbar
@@ -2045,13 +2046,6 @@ void UserInterface::RenderAbout(bool* p_open)
ImGui::Text("\nvimix is licensed under GNU GPL version 3 or later.\n" UNICODE_COPYRIGHT " 2019-2023 Bruno Herbelin."); ImGui::Text("\nvimix is licensed under GNU GPL version 3 or later.\n" UNICODE_COPYRIGHT " 2019-2023 Bruno Herbelin.");
ImGui::Spacing(); ImGui::Spacing();
if ( ImGui::Button(MENU_HELP, ImVec2(250.f, 0.f)) )
Settings::application.widget.help = true;
ImGui::SameLine(0, 12);
if ( ImGui::Button(MENU_LOGS, ImVec2(250.f, 0.f)) )
Settings::application.widget.logs = true;
ImGuiToolkit::ButtonOpenUrl("Visit vimix website", "https://brunoherbelin.github.io/vimix/", ImVec2(ImGui::GetContentRegionAvail().x, 0)); ImGuiToolkit::ButtonOpenUrl("Visit vimix website", "https://brunoherbelin.github.io/vimix/", ImVec2(ImGui::GetContentRegionAvail().x, 0));
ImGui::Spacing(); ImGui::Spacing();
@@ -2080,7 +2074,7 @@ void UserInterface::RenderAbout(bool* p_open)
ImGuiToolkit::ButtonOpenUrl("glm", "https://glm.g-truc.net", ImVec2(ImGui::GetContentRegionAvail().x, 0)); ImGuiToolkit::ButtonOpenUrl("glm", "https://glm.g-truc.net", ImVec2(ImGui::GetContentRegionAvail().x, 0));
ImGui::NextColumn(); ImGui::NextColumn();
ImGuiToolkit::ButtonOpenUrl("OSCPack", "http://www.rossbencina.com/code/oscpack", ImVec2(ImGui::GetContentRegionAvail().x, 0)); ImGuiToolkit::ButtonOpenUrl("OSCPack", "https://github.com/RossBencina/oscpack", ImVec2(ImGui::GetContentRegionAvail().x, 0));
ImGui::NextColumn(); ImGui::NextColumn();
ImGuiToolkit::ButtonOpenUrl("TinyXML2", "https://github.com/leethomason/tinyxml2.git", ImVec2(ImGui::GetContentRegionAvail().x, 0)); ImGuiToolkit::ButtonOpenUrl("TinyXML2", "https://github.com/leethomason/tinyxml2.git", ImVec2(ImGui::GetContentRegionAvail().x, 0));
@@ -2442,17 +2436,17 @@ void UserInterface::RenderHelp()
ImGui::Text(ICON_FA_HAND_PAPER " Inputs"); ImGui::NextColumn(); ImGui::Text(ICON_FA_HAND_PAPER " Inputs"); ImGui::NextColumn();
ImGui::Text ("Define how user inputs (e.g. keyboard, joystick) are mapped to custom actions in the session."); ImGui::Text ("Define how user inputs (e.g. keyboard, joystick) are mapped to custom actions in the session.");
ImGui::NextColumn(); ImGui::NextColumn();
ImGui::Text(ICON_FA_WRENCH " Source toolbar"); ImGui::NextColumn(); ImGui::Text(IMGUI_TITLE_LOGS); ImGui::NextColumn();
ImGui::Text ("History of program logs, with information on success and failure of commands.");
ImGui::NextColumn();
ImGui::Text(IMGUI_TITLE_HELP); ImGui::NextColumn();
ImGui::Text ("Link to online documentation and list of concepts (this window).");
ImGui::NextColumn();
ImGui::Text(ICON_FA_WRENCH " Source"); ImGui::NextColumn();
ImGui::Text ("Toolbar to show and edit alpha and geometry of the current source."); ImGui::Text ("Toolbar to show and edit alpha and geometry of the current source.");
ImGui::NextColumn(); ImGui::NextColumn();
ImGui::Text(ICON_FA_TACHOMETER_ALT " Metrics"); ImGui::NextColumn(); ImGui::Text(ICON_FA_TACHOMETER_ALT " Metrics"); ImGui::NextColumn();
ImGui::Text ("Monitoring of metrics on the system (e.g. FPS, RAM) and runtime (e.g. session duration)."); ImGui::Text ("Monitoring of metrics on the system (e.g. FPS, RAM) and runtime (e.g. session duration).");
ImGui::NextColumn();
ImGui::Text(IMGUI_TITLE_LOGS); ImGui::NextColumn();
ImGui::Text ("History of program logs, with information on success and failure of commands.");
ImGui::NextColumn();
ImGui::Text(ICON_FA_COG " Settings"); ImGui::NextColumn();
ImGui::Text ("Set user preferences and system settings.");
ImGui::Columns(1); ImGui::Columns(1);
ImGui::PopTextWrapPos(); ImGui::PopTextWrapPos();
@@ -2844,23 +2838,28 @@ void Navigator::discardPannel()
// if panel shows a source (i.e. not NEW, TRANS nor MENU selected) // if panel shows a source (i.e. not NEW, TRANS nor MENU selected)
else if ( !selected_button[NAV_MENU] ) else if ( !selected_button[NAV_MENU] )
{ {
// get index of current source // revert to menu panel
int idx = Mixer::manager().indexCurrentSource(); togglePannelMenu();
if (idx < 0) {
// no current source, try to get source previously in panel /// ALTERNATIVE : stay on source panel
Source *cs = Mixer::manager().sourceAtIndex( selected_index ); // // get index of current source
if ( cs ) // int idx = Mixer::manager().indexCurrentSource();
idx = selected_index; // if (idx < 0) {
else { // // no current source, try to get source previously in panel
// really no source is current, try to get one from user selection // Source *cs = Mixer::manager().sourceAtIndex( selected_index );
cs = Mixer::selection().front(); // if ( cs )
if ( cs ) // idx = selected_index;
idx = Mixer::manager().session()->index( Mixer::manager().session()->find(cs) ); // else {
} // // really no source is current, try to get one from user selection
} // cs = Mixer::selection().front();
// if current source or a selected source, show it's pannel // if ( cs )
if (idx >= 0) // idx = Mixer::manager().session()->index( Mixer::manager().session()->find(cs) );
showPannelSource( idx ); // }
// }
// // if current source or a selected source, show it's pannel
// if (idx >= 0)
// showPannelSource( idx );
} }
} }
// in the general mode, // in the general mode,
@@ -4214,15 +4213,17 @@ void Navigator::RenderMainPannelSession()
ImGui::EndCombo(); ImGui::EndCombo();
} }
ImVec2 pos = ImGui::GetCursorPos(); ImVec2 pos = ImGui::GetCursorPos();
ImGui::SameLine(); // ImGui::SameLine();
if ( Mixer::manager().session()->filename().empty()) { // if ( ImGuiToolkit::IconButton(ICON_FA_FILE_DOWNLOAD, "Save"))
if ( ImGuiToolkit::IconButton(ICON_FA_FILE_DOWNLOAD, "Save as")) // UserInterface::manager().saveOrSaveAs();
UserInterface::manager().saveOrSaveAs(); //// if ( Mixer::manager().session()->filename().empty()) {
} else { //// if ( ImGuiToolkit::IconButton(ICON_FA_FILE_DOWNLOAD, "Save as"))
if (ImGuiToolkit::IconButton(2, 5, "Show in finder")) //// UserInterface::manager().saveOrSaveAs();
SystemToolkit::open(SystemToolkit::path_filename(Mixer::manager().session()->filename())); //// } else {
} //// if (ImGuiToolkit::IconButton(3, 5, "Show in finder"))
ImGui::SetCursorPos(pos); //// SystemToolkit::open(SystemToolkit::path_filename(Mixer::manager().session()->filename()));
//// }
// ImGui::SetCursorPos(pos);
// //
// Preview session // Preview session
@@ -5188,9 +5189,10 @@ void Navigator::RenderMainPannelSettings()
ImGui::SliderInt("Buffer", &Settings::application.record.buffering_mode, 0, IM_ARRAYSIZE(VideoRecorder::buffering_preset_name)-1, ImGui::SliderInt("Buffer", &Settings::application.record.buffering_mode, 0, IM_ARRAYSIZE(VideoRecorder::buffering_preset_name)-1,
VideoRecorder::buffering_preset_name[Settings::application.record.buffering_mode]); VideoRecorder::buffering_preset_name[Settings::application.record.buffering_mode]);
ImGuiToolkit::HelpToolTip("Priority when buffer is full and recorder has to skip frames;\n" ImGuiToolkit::Indication("Priority when buffer is full and recorder has to skip frames;\n"
ICON_FA_CARET_RIGHT " Duration:\n Variable framerate, correct duration.\n" ICON_FA_CARET_RIGHT " Duration:\n Variable framerate, correct duration.\n"
ICON_FA_CARET_RIGHT " Framerate:\n Correct framerate, shorter duration."); ICON_FA_CARET_RIGHT " Framerate:\n Correct framerate, shorter duration.",
ICON_FA_CHECK_DOUBLE);
ImGui::SameLine(0); ImGui::SameLine(0);
ImGui::SetCursorPosX(width_); ImGui::SetCursorPosX(width_);
ImGui::SetNextItemWidth(IMGUI_RIGHT_ALIGN); ImGui::SetNextItemWidth(IMGUI_RIGHT_ALIGN);
@@ -5349,7 +5351,7 @@ void Navigator::RenderMainPannelSettings()
#ifndef NDEBUG #ifndef NDEBUG
change |= ImGuiToolkit::ButtonSwitch( "Vertical synchronization", &vsync); change |= ImGuiToolkit::ButtonSwitch( "Vertical synchronization", &vsync);
change |= ImGuiToolkit::ButtonSwitch( "Antialiasing framebuffer", &multi); change |= ImGuiToolkit::ButtonSwitch( "Multisample antialiasing", &multi);
#endif #endif
if (change) { if (change) {
need_restart = ( vsync != (Settings::application.render.vsync > 0) || need_restart = ( vsync != (Settings::application.render.vsync > 0) ||