Compare commits

..

3 Commits

5 changed files with 169 additions and 166 deletions

View File

@@ -933,7 +933,7 @@ int Render::DrawMainWindow() {
MainWindow(); MainWindow();
// UpdateNotificationWindow(); UpdateNotificationWindow();
#ifdef __APPLE__ #ifdef __APPLE__
if (show_request_permission_window_) { if (show_request_permission_window_) {

View File

@@ -37,17 +37,18 @@ void Render::Hyperlink(const std::string& label, const std::string& url,
int Render::AboutWindow() { int Render::AboutWindow() {
if (show_about_window_) { if (show_about_window_) {
const ImGuiViewport* viewport = ImGui::GetMainViewport(); float about_window_width = title_bar_button_width_ * 7.5f;
float about_window_height = latest_version_.empty() float about_window_height = latest_version_.empty()
? about_window_height_ ? title_bar_button_width_ * 4.0f
: about_window_height_ + 20.0f; : title_bar_button_width_ * 4.6f;
const ImGuiViewport* viewport = ImGui::GetMainViewport();
ImGui::SetNextWindowPos(ImVec2( ImGui::SetNextWindowPos(ImVec2(
(viewport->WorkSize.x - viewport->WorkPos.x - about_window_width_) / 2, (viewport->WorkSize.x - viewport->WorkPos.x - about_window_width) / 2,
(viewport->WorkSize.y - viewport->WorkPos.y - about_window_height) / (viewport->WorkSize.y - viewport->WorkPos.y - about_window_height) /
2)); 2));
ImGui::SetNextWindowSize(ImVec2(about_window_width_, about_window_height)); ImGui::SetNextWindowSize(ImVec2(about_window_width, about_window_height));
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f)); ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 1.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 1.0f);
@@ -70,7 +71,7 @@ int Render::AboutWindow() {
std::string text = localization::version[localization_language_index_] + std::string text = localization::version[localization_language_index_] +
": CrossDesk " + version; ": CrossDesk " + version;
ImGui::SetCursorPosX(about_window_width_ * 0.1f); ImGui::SetCursorPosX(about_window_width * 0.1f);
ImGui::Text("%s", text.c_str()); ImGui::Text("%s", text.c_str());
if (update_available_) { if (update_available_) {
@@ -79,19 +80,19 @@ int Render::AboutWindow() {
": " + latest_version_; ": " + latest_version_;
std::string access_website = std::string access_website =
localization::access_website[localization_language_index_]; localization::access_website[localization_language_index_];
Hyperlink(latest_version, "https://crossdesk.cn", about_window_width_); Hyperlink(latest_version, "https://crossdesk.cn", about_window_width);
} }
ImGui::Text(""); ImGui::Text("");
std::string copyright_text = "© 2025 by JUNKUN DI. All rights reserved."; std::string copyright_text = "© 2025 by JUNKUN DI. All rights reserved.";
std::string license_text = "Licensed under GNU LGPL v3."; std::string license_text = "Licensed under GNU LGPL v3.";
ImGui::SetCursorPosX(about_window_width_ * 0.1f); ImGui::SetCursorPosX(about_window_width * 0.1f);
ImGui::Text("%s", copyright_text.c_str()); ImGui::Text("%s", copyright_text.c_str());
ImGui::SetCursorPosX(about_window_width_ * 0.1f); ImGui::SetCursorPosX(about_window_width * 0.1f);
ImGui::Text("%s", license_text.c_str()); ImGui::Text("%s", license_text.c_str());
ImGui::SetCursorPosX(about_window_width_ * 0.42f); ImGui::SetCursorPosX(about_window_width * 0.445f);
ImGui::SetCursorPosY(about_window_height * 0.75f); ImGui::SetCursorPosY(about_window_height * 0.75f);
// OK // OK
if (ImGui::Button(localization::ok[localization_language_index_].c_str())) { if (ImGui::Button(localization::ok[localization_language_index_].c_str())) {

View File

@@ -6,31 +6,34 @@
namespace crossdesk { namespace crossdesk {
int Render::SettingWindow() { int Render::SettingWindow() {
ImGuiIO& io = ImGui::GetIO();
if (show_settings_window_) { if (show_settings_window_) {
if (settings_window_pos_reset_) { if (settings_window_pos_reset_) {
const ImGuiViewport* viewport = ImGui::GetMainViewport(); const ImGuiViewport* viewport = ImGui::GetMainViewport();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
#if USE_CUDA && !defined(__aarch64__) && !defined(__arm__)
ImGui::SetNextWindowPos( ImGui::SetNextWindowPos(
ImVec2((viewport->WorkSize.x - viewport->WorkPos.x - ImVec2(io.DisplaySize.x * 0.343f, io.DisplaySize.y * 0.07f));
SETTINGS_WINDOW_WIDTH_CN) /
2,
(viewport->WorkSize.y - viewport->WorkPos.y -
SETTINGS_WINDOW_HEIGHT_CN) /
2));
ImGui::SetNextWindowSize( ImGui::SetNextWindowSize(
ImVec2(SETTINGS_WINDOW_WIDTH_CN, SETTINGS_WINDOW_HEIGHT_CN)); ImVec2(io.DisplaySize.x * 0.315f, io.DisplaySize.y * 0.85f));
#else
ImGui::SetNextWindowPos(
ImVec2(io.DisplaySize.x * 0.343f, io.DisplaySize.y * 0.1f));
ImGui::SetNextWindowSize(
ImVec2(io.DisplaySize.x * 0.315f, io.DisplaySize.y * 0.8f));
#endif
} else { } else {
#if USE_CUDA && !defined(__aarch64__) && !defined(__arm__)
ImGui::SetNextWindowPos( ImGui::SetNextWindowPos(
ImVec2((viewport->WorkSize.x - viewport->WorkPos.x - ImVec2(io.DisplaySize.x * 0.297f, io.DisplaySize.y * 0.07f));
SETTINGS_WINDOW_WIDTH_EN) /
2,
(viewport->WorkSize.y - viewport->WorkPos.y -
SETTINGS_WINDOW_HEIGHT_EN) /
2));
ImGui::SetNextWindowSize( ImGui::SetNextWindowSize(
ImVec2(SETTINGS_WINDOW_WIDTH_EN, SETTINGS_WINDOW_HEIGHT_EN)); ImVec2(io.DisplaySize.x * 0.407f, io.DisplaySize.y * 0.85f));
#else
ImGui::SetNextWindowPos(
ImVec2(io.DisplaySize.x * 0.297f, io.DisplaySize.y * 0.1f));
ImGui::SetNextWindowSize(
ImVec2(io.DisplaySize.x * 0.407f, io.DisplaySize.y * 0.8f));
#endif
} }
settings_window_pos_reset_ = false; settings_window_pos_reset_ = false;
@@ -38,7 +41,7 @@ int Render::SettingWindow() {
// Settings // Settings
{ {
static int settings_items_padding = 30 * dpi_scale_; static int settings_items_padding = title_bar_button_width_ * 0.75f;
int settings_items_offset = 0; int settings_items_offset = 0;
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f)); ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
@@ -57,17 +60,18 @@ int Render::SettingWindow() {
localization::language_en[localization_language_index_].c_str()}; localization::language_en[localization_language_index_].c_str()};
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 4 * dpi_scale_); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text( ImGui::Text(
"%s", localization::language[localization_language_index_].c_str()); "%s", localization::language[localization_language_index_].c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(LANGUAGE_SELECT_WINDOW_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 3.0f);
} else { } else {
ImGui::SetCursorPosX(LANGUAGE_SELECT_WINDOW_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.5f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
ImGui::SetNextItemWidth(title_bar_button_width_ * 1.8f);
if (ImGui::BeginCombo("##language", if (ImGui::BeginCombo("##language",
language_items[language_button_value_])) { language_items[language_button_value_])) {
ImGui::SetWindowFontScale(0.5f); ImGui::SetWindowFontScale(0.5f);
@@ -97,19 +101,19 @@ int Render::SettingWindow() {
.c_str()}; .c_str()};
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 4 * dpi_scale_); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text( ImGui::Text(
"%s", "%s",
localization::video_quality[localization_language_index_].c_str()); localization::video_quality[localization_language_index_].c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(VIDEO_QUALITY_SELECT_WINDOW_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 3.0f);
} else { } else {
ImGui::SetCursorPosX(VIDEO_QUALITY_SELECT_WINDOW_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.5f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
ImGui::SetNextItemWidth(title_bar_button_width_ * 1.8f);
if (ImGui::BeginCombo( if (ImGui::BeginCombo(
"##video_quality", "##video_quality",
video_quality_items[video_quality_button_value_])) { video_quality_items[video_quality_button_value_])) {
@@ -130,19 +134,19 @@ int Render::SettingWindow() {
const char* video_frame_rate_items[] = {"30 fps", "60 fps"}; const char* video_frame_rate_items[] = {"30 fps", "60 fps"};
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 4); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text("%s", ImGui::Text("%s",
localization::video_frame_rate[localization_language_index_] localization::video_frame_rate[localization_language_index_]
.c_str()); .c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(VIDEO_FRAME_RATE_SELECT_WINDOW_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 3.0f);
} else { } else {
ImGui::SetCursorPosX(VIDEO_FRAME_RATE_SELECT_WINDOW_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.5f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
ImGui::SetNextItemWidth(title_bar_button_width_ * 1.8f);
if (ImGui::BeginCombo( if (ImGui::BeginCombo(
"##video_frame_rate", "##video_frame_rate",
video_frame_rate_items[video_frame_rate_button_value_])) { video_frame_rate_items[video_frame_rate_button_value_])) {
@@ -165,20 +169,20 @@ int Render::SettingWindow() {
localization::av1[localization_language_index_].c_str()}; localization::av1[localization_language_index_].c_str()};
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 4); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text( ImGui::Text(
"%s", "%s",
localization::video_encode_format[localization_language_index_] localization::video_encode_format[localization_language_index_]
.c_str()); .c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(VIDEO_ENCODE_FORMAT_SELECT_WINDOW_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 3.0f);
} else { } else {
ImGui::SetCursorPosX(VIDEO_ENCODE_FORMAT_SELECT_WINDOW_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.5f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
ImGui::SetNextItemWidth(title_bar_button_width_ * 1.8f);
if (ImGui::BeginCombo( if (ImGui::BeginCombo(
"##video_encode_format", "##video_encode_format",
video_encode_format_items[video_encode_format_button_value_])) { video_encode_format_items[video_encode_format_button_value_])) {
@@ -198,17 +202,18 @@ int Render::SettingWindow() {
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 4); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text("%s", localization::enable_hardware_video_codec ImGui::Text("%s", localization::enable_hardware_video_codec
[localization_language_index_] [localization_language_index_]
.c_str()); .c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
} else { } else {
ImGui::SetCursorPosX(ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::Checkbox("##enable_hardware_video_codec", ImGui::Checkbox("##enable_hardware_video_codec",
&enable_hardware_video_codec_); &enable_hardware_video_codec_);
} }
@@ -218,17 +223,18 @@ int Render::SettingWindow() {
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 4); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text( ImGui::Text(
"%s", "%s",
localization::enable_turn[localization_language_index_].c_str()); localization::enable_turn[localization_language_index_].c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(ENABLE_TURN_CHECKBOX_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
} else { } else {
ImGui::SetCursorPosX(ENABLE_TURN_CHECKBOX_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::Checkbox("##enable_turn", &enable_turn_); ImGui::Checkbox("##enable_turn", &enable_turn_);
} }
@@ -236,17 +242,18 @@ int Render::SettingWindow() {
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 4); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text( ImGui::Text(
"%s", "%s",
localization::enable_srtp[localization_language_index_].c_str()); localization::enable_srtp[localization_language_index_].c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(ENABLE_SRTP_CHECKBOX_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
} else { } else {
ImGui::SetCursorPosX(ENABLE_SRTP_CHECKBOX_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::Checkbox("##enable_srtp", &enable_srtp_); ImGui::Checkbox("##enable_srtp", &enable_srtp_);
} }
@@ -255,19 +262,19 @@ int Render::SettingWindow() {
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 1); ImGui::SetCursorPosY(settings_items_offset + 1);
ImGui::AlignTextToFramePadding();
if (ImGui::Button(localization::self_hosted_server_config if (ImGui::Button(localization::self_hosted_server_config
[localization_language_index_] [localization_language_index_]
.c_str())) { .c_str())) {
show_self_hosted_server_config_window_ = true; show_self_hosted_server_config_window_ = true;
} }
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(ENABLE_SELF_HOSTED_SERVER_CHECKBOX_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
} else { } else {
ImGui::SetCursorPosX(ENABLE_SELF_HOSTED_SERVER_CHECKBOX_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::Checkbox("##enable_self_hosted", &enable_self_hosted_); ImGui::Checkbox("##enable_self_hosted", &enable_self_hosted_);
} }
@@ -275,18 +282,18 @@ int Render::SettingWindow() {
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 4); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text("%s", ImGui::Text("%s",
localization::enable_autostart[localization_language_index_] localization::enable_autostart[localization_language_index_]
.c_str()); .c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(ENABLE_AUTOSTART_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
} else { } else {
ImGui::SetCursorPosX(ENABLE_AUTOSTART_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::Checkbox("##enable_autostart_", &enable_autostart_); ImGui::Checkbox("##enable_autostart_", &enable_autostart_);
} }
@@ -294,18 +301,18 @@ int Render::SettingWindow() {
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 4); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text( ImGui::Text(
"%s", "%s",
localization::enable_daemon[localization_language_index_].c_str()); localization::enable_daemon[localization_language_index_].c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(ENABLE_DAEMON_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
} else { } else {
ImGui::SetCursorPosX(ENABLE_DAEMON_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::Checkbox("##enable_daemon_", &enable_daemon_); ImGui::Checkbox("##enable_daemon_", &enable_daemon_);
if (ImGui::IsItemHovered()) { if (ImGui::IsItemHovered()) {
ImGui::BeginTooltip(); ImGui::BeginTooltip();
@@ -322,18 +329,18 @@ int Render::SettingWindow() {
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 4); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text("%s", ImGui::Text("%s",
localization::minimize_to_tray[localization_language_index_] localization::minimize_to_tray[localization_language_index_]
.c_str()); .c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(ENABLE_MINIZE_TO_TRAY_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 4.275f);
} else { } else {
ImGui::SetCursorPosX(ENABLE_MINIZE_TO_TRAY_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 5.755f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::Checkbox("##enable_minimize_to_tray_", ImGui::Checkbox("##enable_minimize_to_tray_",
&enable_minimize_to_tray_); &enable_minimize_to_tray_);
} }
@@ -343,13 +350,15 @@ int Render::SettingWindow() {
} }
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(SETTINGS_OK_BUTTON_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 1.59f);
} else { } else {
ImGui::SetCursorPosX(SETTINGS_OK_BUTTON_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 2.22f);
} }
settings_items_offset += settings_items_padding + 10; settings_items_offset +=
settings_items_padding + title_bar_button_width_ * 0.3f;
ImGui::SetCursorPosY(settings_items_offset); ImGui::SetCursorPosY(settings_items_offset);
ImGui::PopStyleVar(); ImGui::PopStyleVar();
// OK // OK

View File

@@ -54,7 +54,7 @@ int Render::ShowSimpleFileBrowser() {
if (show_file_browser_) { if (show_file_browser_) {
ImGui::PushItemFlag(ImGuiItemFlags_AutoClosePopups, false); ImGui::PushItemFlag(ImGuiItemFlags_AutoClosePopups, false);
float fixed_width = 130.0f * dpi_scale_; float fixed_width = title_bar_button_width_ * 3.8f;
ImGui::SetNextItemWidth(fixed_width); ImGui::SetNextItemWidth(fixed_width);
ImGui::SetNextWindowSizeConstraints(ImVec2(fixed_width, 0), ImGui::SetNextWindowSizeConstraints(ImVec2(fixed_width, 0),
ImVec2(fixed_width, 100.0f)); ImVec2(fixed_width, 100.0f));
@@ -121,33 +121,19 @@ int Render::ShowSimpleFileBrowser() {
} }
int Render::SelfHostedServerWindow() { int Render::SelfHostedServerWindow() {
ImGuiIO& io = ImGui::GetIO();
if (show_self_hosted_server_config_window_) { if (show_self_hosted_server_config_window_) {
if (self_hosted_server_config_window_pos_reset_) { if (self_hosted_server_config_window_pos_reset_) {
const ImGuiViewport* viewport = ImGui::GetMainViewport();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetNextWindowPos( ImGui::SetNextWindowPos(
ImVec2((viewport->WorkSize.x - viewport->WorkPos.x - ImVec2(io.DisplaySize.x * 0.298f, io.DisplaySize.y * 0.25f));
SELF_HOSTED_SERVER_CONFIG_WINDOW_WIDTH_CN) /
2,
(viewport->WorkSize.y - viewport->WorkPos.y -
SELF_HOSTED_SERVER_CONFIG_WINDOW_HEIGHT_CN) /
2));
ImGui::SetNextWindowSize( ImGui::SetNextWindowSize(
ImVec2(SELF_HOSTED_SERVER_CONFIG_WINDOW_WIDTH_CN, ImVec2(io.DisplaySize.x * 0.407f, io.DisplaySize.y * 0.41f));
SELF_HOSTED_SERVER_CONFIG_WINDOW_HEIGHT_CN));
} else { } else {
ImGui::SetNextWindowPos( ImGui::SetNextWindowPos(
ImVec2((viewport->WorkSize.x - viewport->WorkPos.x - ImVec2(io.DisplaySize.x * 0.27f, io.DisplaySize.y * 0.3f));
SELF_HOSTED_SERVER_CONFIG_WINDOW_WIDTH_EN) /
2,
(viewport->WorkSize.y - viewport->WorkPos.y -
SELF_HOSTED_SERVER_CONFIG_WINDOW_HEIGHT_EN) /
2));
ImGui::SetNextWindowSize( ImGui::SetNextWindowSize(
ImVec2(SELF_HOSTED_SERVER_CONFIG_WINDOW_WIDTH_EN, ImVec2(io.DisplaySize.x * 0.465f, io.DisplaySize.y * 0.41f));
SELF_HOSTED_SERVER_CONFIG_WINDOW_HEIGHT_EN));
} }
self_hosted_server_config_window_pos_reset_ = false; self_hosted_server_config_window_pos_reset_ = false;
@@ -155,7 +141,7 @@ int Render::SelfHostedServerWindow() {
// Settings // Settings
{ {
static int settings_items_padding = 30 * dpi_scale_; static int settings_items_padding = title_bar_button_width_;
int settings_items_offset = 0; int settings_items_offset = 0;
ImGui::SetWindowFontScale(0.5f); ImGui::SetWindowFontScale(0.5f);
@@ -174,17 +160,19 @@ int Render::SelfHostedServerWindow() {
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f);
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 2); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text("%s", localization::self_hosted_server_address ImGui::Text("%s", localization::self_hosted_server_address
[localization_language_index_] [localization_language_index_]
.c_str()); .c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(SELF_HOSTED_SERVER_HOST_INPUT_BOX_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 2.5f);
} else { } else {
ImGui::SetCursorPosX(SELF_HOSTED_SERVER_HOST_INPUT_BOX_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f);
} }
ImGui::SetCursorPosY(settings_items_offset); ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(SELF_HOSTED_SERVER_INPUT_WINDOW_WIDTH); ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f);
ImGui::InputText("##signal_server_ip_self_", signal_server_ip_self_, ImGui::InputText("##signal_server_ip_self_", signal_server_ip_self_,
IM_ARRAYSIZE(signal_server_ip_self_), IM_ARRAYSIZE(signal_server_ip_self_),
@@ -195,19 +183,20 @@ int Render::SelfHostedServerWindow() {
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 2); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text( ImGui::Text(
"%s", "%s",
localization::self_hosted_server_port[localization_language_index_] localization::self_hosted_server_port[localization_language_index_]
.c_str()); .c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(SELF_HOSTED_SERVER_PORT_INPUT_BOX_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 2.5f);
} else { } else {
ImGui::SetCursorPosX(SELF_HOSTED_SERVER_PORT_INPUT_BOX_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f);
} }
ImGui::SetCursorPosY(settings_items_offset); ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(SELF_HOSTED_SERVER_INPUT_WINDOW_WIDTH); ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f);
ImGui::InputText("##signal_server_port_self_", signal_server_port_self_, ImGui::InputText("##signal_server_port_self_", signal_server_port_self_,
IM_ARRAYSIZE(signal_server_port_self_)); IM_ARRAYSIZE(signal_server_port_self_));
@@ -217,18 +206,19 @@ int Render::SelfHostedServerWindow() {
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 2); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text("%s", localization::self_hosted_server_coturn_server_port ImGui::Text("%s", localization::self_hosted_server_coturn_server_port
[localization_language_index_] [localization_language_index_]
.c_str()); .c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(SELF_HOSTED_SERVER_PORT_INPUT_BOX_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 2.5f);
} else { } else {
ImGui::SetCursorPosX(SELF_HOSTED_SERVER_PORT_INPUT_BOX_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f);
} }
ImGui::SetCursorPosY(settings_items_offset); ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(SELF_HOSTED_SERVER_INPUT_WINDOW_WIDTH); ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f);
ImGui::InputText("##coturn_server_port_self_", coturn_server_port_self_, ImGui::InputText("##coturn_server_port_self_", coturn_server_port_self_,
IM_ARRAYSIZE(coturn_server_port_self_)); IM_ARRAYSIZE(coturn_server_port_self_));
@@ -238,18 +228,19 @@ int Render::SelfHostedServerWindow() {
{ {
settings_items_offset += settings_items_padding; settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset + 2); ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding();
ImGui::Text("%s", localization::self_hosted_server_certificate_path ImGui::Text("%s", localization::self_hosted_server_certificate_path
[localization_language_index_] [localization_language_index_]
.c_str()); .c_str());
ImGui::SameLine();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(SELF_HOSTED_SERVER_PORT_INPUT_BOX_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 2.5f);
} else { } else {
ImGui::SetCursorPosX(SELF_HOSTED_SERVER_PORT_INPUT_BOX_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f);
} }
ImGui::SetCursorPosY(settings_items_offset); ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(SELF_HOSTED_SERVER_INPUT_WINDOW_WIDTH); ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f);
ShowSimpleFileBrowser(); ShowSimpleFileBrowser();
} }
@@ -259,12 +250,13 @@ int Render::SelfHostedServerWindow() {
} }
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(SELF_HOSTED_SERVER_CONFIG_OK_BUTTON_PADDING_CN); ImGui::SetCursorPosX(title_bar_button_width_ * 2.32f);
} else { } else {
ImGui::SetCursorPosX(SELF_HOSTED_SERVER_CONFIG_OK_BUTTON_PADDING_EN); ImGui::SetCursorPosX(title_bar_button_width_ * 2.7f);
} }
settings_items_offset += settings_items_padding + 10; settings_items_offset +=
settings_items_padding + title_bar_button_width_ * 0.3f;
ImGui::SetCursorPosY(settings_items_offset); ImGui::SetCursorPosY(settings_items_offset);
ImGui::PopStyleVar(); ImGui::PopStyleVar();

View File

@@ -55,8 +55,8 @@ int Render::UpdateNotificationWindow() {
if (show_update_notification_window_ && update_available_) { if (show_update_notification_window_ && update_available_) {
const ImGuiViewport* viewport = ImGui::GetMainViewport(); const ImGuiViewport* viewport = ImGui::GetMainViewport();
float window_width = update_notification_window_width_; float update_notification_window_width = title_bar_button_width_ * 10.0f;
float window_height = update_notification_window_height_; float update_notification_window_height = title_bar_button_width_ * 8.0f;
// #ifdef __APPLE__ // #ifdef __APPLE__
// float font_scale = 0.3f; // float font_scale = 0.3f;
@@ -64,16 +64,16 @@ int Render::UpdateNotificationWindow() {
// float font_scale = 0.5f; // float font_scale = 0.5f;
// #endif // #endif
float button_width = 35.0f * dpi_scale_; ImGui::SetNextWindowPos(ImVec2((viewport->WorkSize.x - viewport->WorkPos.x -
float button_height = 25.0f * dpi_scale_; update_notification_window_width) /
2,
(viewport->WorkSize.y - viewport->WorkPos.y -
update_notification_window_height) /
2),
ImGuiCond_FirstUseEver);
ImGui::SetNextWindowPos( ImGui::SetNextWindowSize(ImVec2(update_notification_window_width,
ImVec2( update_notification_window_height));
(viewport->WorkSize.x - viewport->WorkPos.x - window_width) / 2,
(viewport->WorkSize.y - viewport->WorkPos.y - window_height) / 2),
ImGuiCond_FirstUseEver);
ImGui::SetNextWindowSize(ImVec2(window_width, window_height));
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f)); ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 1.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 1.0f);
@@ -85,11 +85,12 @@ int Render::UpdateNotificationWindow() {
ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse |
ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoTitleBar); ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoTitleBar);
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + window_height * 0.05f); ImGui::SetCursorPosY(ImGui::GetCursorPosY() +
update_notification_window_height * 0.05f);
// title: new version available // title: new version available
ImGui::SetCursorPosX(window_width * 0.1f); ImGui::SetCursorPosX(update_notification_window_width * 0.1f);
ImGui::SetWindowFontScale(0.6f); ImGui::SetWindowFontScale(0.55f);
std::string title = std::string title =
localization::new_version_available[localization_language_index_] + localization::new_version_available[localization_language_index_] +
": v" + latest_version_; ": v" + latest_version_;
@@ -103,23 +104,25 @@ int Render::UpdateNotificationWindow() {
localization::access_website[localization_language_index_] + localization::access_website[localization_language_index_] +
"https://crossdesk.cn"; "https://crossdesk.cn";
ImGui::SetWindowFontScale(0.5f); ImGui::SetWindowFontScale(0.5f);
Hyperlink(download_text, "https://crossdesk.cn", window_width); Hyperlink(download_text, "https://crossdesk.cn",
update_notification_window_width);
ImGui::SetWindowFontScale(1.0f); ImGui::SetWindowFontScale(1.0f);
ImGui::Spacing(); ImGui::Spacing();
float scrollable_height = float scrollable_height =
window_height - UPDATE_NOTIFICATION_RESERVED_HEIGHT; update_notification_window_height - UPDATE_NOTIFICATION_RESERVED_HEIGHT;
if (main_windows_system_chinese_font_ != nullptr) { if (main_windows_system_chinese_font_ != nullptr) {
ImGui::PushFont(main_windows_system_chinese_font_); ImGui::PushFont(main_windows_system_chinese_font_);
} }
// scrollable content area // scrollable content area
ImGui::SetCursorPosX(window_width * 0.05f); ImGui::SetCursorPosX(update_notification_window_width * 0.05f);
ImGui::BeginChild("ScrollableContent", ImGui::BeginChild(
ImVec2(window_width * 0.9f, scrollable_height), "ScrollableContent",
ImGuiChildFlags_Border, ImGuiWindowFlags_None); ImVec2(update_notification_window_width * 0.9f, scrollable_height),
ImGui::SetWindowFontScale(0.6f); ImGuiChildFlags_Border, ImGuiWindowFlags_None);
ImGui::SetWindowFontScale(0.5f);
// set text wrap position to current available width (accounts for // set text wrap position to current available width (accounts for
// scrollbar) // scrollbar)
float wrap_pos = ImGui::GetContentRegionAvail().x; float wrap_pos = ImGui::GetContentRegionAvail().x;
@@ -129,7 +132,7 @@ int Render::UpdateNotificationWindow() {
if (latest_version_info_.contains("releaseName") && if (latest_version_info_.contains("releaseName") &&
latest_version_info_["releaseName"].is_string() && latest_version_info_["releaseName"].is_string() &&
!latest_version_info_["releaseName"].empty()) { !latest_version_info_["releaseName"].empty()) {
ImGui::SetCursorPosX(window_width * 0.05f); ImGui::SetCursorPosX(update_notification_window_width * 0.05f);
std::string release_name = std::string release_name =
latest_version_info_["releaseName"].get<std::string>(); latest_version_info_["releaseName"].get<std::string>();
ImGui::TextWrapped("%s", release_name.c_str()); ImGui::TextWrapped("%s", release_name.c_str());
@@ -138,7 +141,7 @@ int Render::UpdateNotificationWindow() {
// release notes // release notes
if (!release_notes_.empty()) { if (!release_notes_.empty()) {
ImGui::SetCursorPosX(window_width * 0.05f); ImGui::SetCursorPosX(update_notification_window_width * 0.05f);
std::string cleaned_notes = CleanMarkdown(release_notes_); std::string cleaned_notes = CleanMarkdown(release_notes_);
ImGui::TextWrapped("%s", cleaned_notes.c_str()); ImGui::TextWrapped("%s", cleaned_notes.c_str());
ImGui::Spacing(); ImGui::Spacing();
@@ -148,7 +151,7 @@ int Render::UpdateNotificationWindow() {
if (latest_version_info_.contains("releaseDate") && if (latest_version_info_.contains("releaseDate") &&
latest_version_info_["releaseDate"].is_string() && latest_version_info_["releaseDate"].is_string() &&
!latest_version_info_["releaseDate"].empty()) { !latest_version_info_["releaseDate"].empty()) {
ImGui::SetCursorPosX(window_width * 0.05f); ImGui::SetCursorPosX(update_notification_window_width * 0.05f);
std::string date_label = std::string date_label =
localization::release_date[localization_language_index_]; localization::release_date[localization_language_index_];
std::string release_date = latest_version_info_["releaseDate"]; std::string release_date = latest_version_info_["releaseDate"];
@@ -170,16 +173,15 @@ int Render::UpdateNotificationWindow() {
ImGui::Spacing(); ImGui::Spacing();
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(UPDATE_NOTIFICATION_OK_BUTTON_PADDING_CN); ImGui::SetCursorPosX(update_notification_window_width * 0.407f);
} else { } else {
ImGui::SetCursorPosX(UPDATE_NOTIFICATION_OK_BUTTON_PADDING_EN); ImGui::SetCursorPosX(update_notification_window_width * 0.367f);
} }
ImGui::SetWindowFontScale(0.5f); ImGui::SetWindowFontScale(0.5f);
// update button // update button
if (ImGui::Button( if (ImGui::Button(
localization::update[localization_language_index_].c_str(), localization::update[localization_language_index_].c_str())) {
ImVec2(button_width, button_height))) {
// open download page // open download page
std::string url = "https://crossdesk.cn"; std::string url = "https://crossdesk.cn";
#if defined(_WIN32) #if defined(_WIN32)
@@ -196,8 +198,7 @@ int Render::UpdateNotificationWindow() {
ImGui::SameLine(); ImGui::SameLine();
if (ImGui::Button( if (ImGui::Button(
localization::cancel[localization_language_index_].c_str(), localization::cancel[localization_language_index_].c_str())) {
ImVec2(button_width, button_height))) {
show_update_notification_window_ = false; show_update_notification_window_ = false;
} }