diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 14bbe92..169076b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -41,3 +41,5 @@ jobs: name: Windows Installer path: | build/packages/*.* + + diff --git a/CMakeLists.txt b/CMakeLists.txt index 36c25d4..51b6313 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,13 +22,43 @@ if(Git_FOUND) add_compile_definitions(GIT_SHA1="${GIT_SHA1}") endif() -if (WIN32 OR APPLE) - include(glfw) -else() # Linux - find_package(glfw3 REQUIRED) - set(GLFW_LIBRARIES glfw) +# 从源码构建 GLFW +include(ExternalProject) + +# 尝试使用 HTTP 下载 GLFW 源码,而不是 Git 克隆 +ExternalProject_Add(glfw PREFIX glfw + URL https://github.com/glfw/glfw/archive/refs/tags/3.3.5.zip + URL_HASH SHA256=59977c65188c2a43f2c50a4c6bd8f3a3d31a1761b07c572f40604bcf7123b92d + + UPDATE_COMMAND "" + + CMAKE_ARGS + "-DCMAKE_INSTALL_PREFIX=" + "-DCMAKE_BUILD_TYPE=Release" + "-DGLFW_BUILD_EXAMPLES=OFF" + "-DGLFW_BUILD_TESTS=OFF" + "-DGLFW_BUILD_DOCS=OFF" + "-DUSE_MSVC_RUNTIME_LIBRARY_DLL=OFF" + + CMAKE_CACHE_ARGS + "-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}" + "-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}" + + LOG_DOWNLOAD 1 LOG_UPDATE 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 + ) + +ExternalProject_Get_Property(glfw INSTALL_DIR) +set(GLFW_INCLUDE_DIR ${INSTALL_DIR}/include) +set(GLFW_LIBRARIES + ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}glfw3${CMAKE_STATIC_LIBRARY_SUFFIX}) + +if(APPLE) + list(APPEND GLFW_LIBRARIES "-framework Cocoa" "-framework IOKit" "-framework CoreVideo") endif() +set(GLFW_INCLUDE_DIR ${GLFW_INCLUDE_DIR} CACHE STRING "") +set(GLFW_LIBRARIES ${GLFW_LIBRARIES} CACHE STRING "") + find_package(OpenGL REQUIRED) find_package(Threads REQUIRED) @@ -41,6 +71,7 @@ if (WIN32) add_compile_definitions(NOMINMAX) add_compile_definitions(_CRT_SECURE_NO_WARNINGS) add_compile_definitions(_SCL_SECURE_NO_WARNINGS) + add_compile_options(/utf-8) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ENTRY:mainCRTStartup") else() find_program(CCACHE_FOUND ccache) diff --git a/cmake/glfw.cmake b/cmake/glfw.cmake index c8704ba..2790522 100644 --- a/cmake/glfw.cmake +++ b/cmake/glfw.cmake @@ -1,39 +1,32 @@ +# 尝试使用系统已安装的 GLFW 库 find_package(GLFW 3.3.5 QUIET) if(GLFW_FOUND) message(STATUS "Found GLFW") else() - message(STATUS "GLFW not found - will build from source") - include(ExternalProject) - - ExternalProject_Add(glfw PREFIX glfw - GIT_REPOSITORY https://github.com/glfw/glfw.git - GIT_TAG 3.3.5 - - UPDATE_COMMAND "" - - CMAKE_ARGS - "-DCMAKE_INSTALL_PREFIX=" - "-DCMAKE_BUILD_TYPE=Release" - "-DGLFW_BUILD_EXAMPLES=OFF" - "-DGLFW_BUILD_TESTS=OFF" - "-DGLFW_BUILD_DOCS=OFF" - "-DUSE_MSVC_RUNTIME_LIBRARY_DLL=OFF" - - CMAKE_CACHE_ARGS - "-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}" - "-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}" - - LOG_DOWNLOAD 1 LOG_UPDATE 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 - ) - - ExternalProject_Get_Property(glfw INSTALL_DIR) - set(GLFW_INCLUDE_DIR ${INSTALL_DIR}/include) - set(GLFW_LIBRARIES - ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}glfw3${CMAKE_STATIC_LIBRARY_SUFFIX}) - - if(APPLE) - list(APPEND GLFW_LIBRARIES "-framework Cocoa" "-framework IOKit" "-framework CoreVideo") + message(STATUS "GLFW not found - will use local source") + + # 设置本地 GLFW 源码目录 + set(GLFW_SOURCE_DIR "${CMAKE_SOURCE_DIR}/src/third-party/glfw") + + # 检查 GLFW 源码是否存在 + if (EXISTS "${GLFW_SOURCE_DIR}") + # 使用本地 GLFW 源码 + add_subdirectory(${GLFW_SOURCE_DIR}) + set(GLFW_INCLUDE_DIR ${GLFW_SOURCE_DIR}/include) + set(GLFW_LIBRARIES glfw) + message(STATUS "Using local GLFW source") + else() + # 如果本地没有 GLFW 源码,则尝试使用 VCPKG 安装的 GLFW + if (DEFINED ENV{VCPKG_ROOT}) + set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file") + find_package(glfw3 REQUIRED) + set(GLFW_LIBRARIES glfw) + message(STATUS "Using VCPKG GLFW library") + else() + # 如果本地没有 GLFW 源码,也没有 VCPKG,则显示错误消息 + message(FATAL_ERROR "GLFW not found. Please install GLFW or download GLFW source to ${GLFW_SOURCE_DIR}") + endif() endif() endif() diff --git a/src/main_glfw_opengl3.cpp b/src/main_glfw_opengl3.cpp index 51ed034..d86cfd0 100644 --- a/src/main_glfw_opengl3.cpp +++ b/src/main_glfw_opengl3.cpp @@ -76,6 +76,17 @@ int main(int argc, char *argv[]) IMGUI_CHECKVERSION(); ImGui::CreateContext(); + // Add Chinese font support + ImGuiIO& io = ImGui::GetIO(); + // Add Chinese font as default + #ifdef _WIN32 + // Use system Chinese font + io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\simhei.ttf", 14.0f, NULL, io.Fonts->GetGlyphRangesChineseFull()); + #else + // Fallback to default font on non-Windows systems + io.Fonts->AddFontDefault(); + #endif + MainWindowStyle(); ImGui_ImplGlfw_InitForOpenGL(glwindow, true); diff --git a/src/sources/ims_buffer.cpp b/src/sources/ims_buffer.cpp index 0bfe9bd..a909027 100644 --- a/src/sources/ims_buffer.cpp +++ b/src/sources/ims_buffer.cpp @@ -14,11 +14,11 @@ void ImStudio::BufferWindow::drawall() ImGui::PushStyleColor(ImGuiCol_ChildBg, ImVec4(0.08f, 0.09f, 0.09f, 1.00f)); ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.26f, 0.59f, 0.98f, 0.40f)); ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.86f, 0.86f, 0.86f, 0.50f)); - ImGui::Begin("buffer", &state); + ImGui::Begin("缓冲区", &state); size = ImGui::GetWindowSize(); pos = ImGui::GetWindowPos(); { - // Draw gl cursor when dragging + // 拖动时绘制光标 if (ImGui::IsMouseDown(0)) { ImGui::GetIO().MouseDrawCursor = true; @@ -28,7 +28,7 @@ void ImStudio::BufferWindow::drawall() ImGui::GetIO().MouseDrawCursor = false; } - //HOTKEY: ALT + M - "Add" Context Menu + // 热键: ALT + M - "添加" 上下文菜单 if ((ImGui::IsWindowHovered()) && ((ImGui::IsKeyDown(ImGuiKey_ModAlt) && (ImGui::IsKeyPressed(ImGuiKey_M))) || (ImGui::IsWindowHovered() && ImGui::IsMouseClicked(1)))) @@ -38,67 +38,67 @@ void ImStudio::BufferWindow::drawall() } if (ImGui::BeginPopupContextWindow("bwcontextmenu")) { - if (ImGui::BeginMenu("Add")) + if (ImGui::BeginMenu("添加")) { - if (ImGui::BeginMenu("Primitives")) + if (ImGui::BeginMenu("基础组件")) { - if (ImGui::MenuItem("Button")) + if (ImGui::MenuItem("按钮")) create("button",1); - if (ImGui::MenuItem("Radio Button")) + if (ImGui::MenuItem("单选按钮")) create("radio",1); - if (ImGui::MenuItem("Checkbox")) + if (ImGui::MenuItem("复选框")) create("checkbox",1); - if (ImGui::MenuItem("Text")) + if (ImGui::MenuItem("文本")) create("text",1); - if (ImGui::MenuItem("Bullet")) + if (ImGui::MenuItem("项目符号")) create("bullet",1); - if (ImGui::MenuItem("Arrow")) + if (ImGui::MenuItem("箭头")) create("arrow",1); - if (ImGui::MenuItem("Combo")) + if (ImGui::MenuItem("下拉菜单")) create("combo",1); - if (ImGui::MenuItem("Listbox")) + if (ImGui::MenuItem("列表框")) create("listbox",1); ImGui::EndMenu(); } - if (ImGui::BeginMenu("Data Inputs")) + if (ImGui::BeginMenu("数据输入")) { - if (ImGui::MenuItem("Input Text")) + if (ImGui::MenuItem("文本输入")) create("textinput",1); - if (ImGui::MenuItem("Input Int")) + if (ImGui::MenuItem("整数输入")) create("inputint",1); - if (ImGui::MenuItem("Input Float")) + if (ImGui::MenuItem("浮点数输入")) create("inputfloat",1); - if (ImGui::MenuItem("Input Double")) + if (ImGui::MenuItem("双精度输入")) create("inputdouble",1); - if (ImGui::MenuItem("Input Scientific")) + if (ImGui::MenuItem("科学计数法输入")) create("inputscientific",1); - if (ImGui::MenuItem("Input Float3")) + if (ImGui::MenuItem("三维向量输入")) create("inputfloat3",1); - if (ImGui::MenuItem("Drag Int")) + if (ImGui::MenuItem("拖动整数")) create("dragint",1); - if (ImGui::MenuItem("Drag Int %")) + if (ImGui::MenuItem("拖动整数百分比")) create("dragint100",1); - if (ImGui::MenuItem("Drag Float")) + if (ImGui::MenuItem("拖动浮点数")) create("dragfloat",1); - if (ImGui::MenuItem("Drag Float Small")) + if (ImGui::MenuItem("拖动小浮点数")) create("dragfloatsmall",1); - if (ImGui::MenuItem("Slider Int")) + if (ImGui::MenuItem("滑块整数")) create("sliderint",1); - if (ImGui::MenuItem("Slider Float")) + if (ImGui::MenuItem("滑块浮点数")) create("sliderfloat",1); - if (ImGui::MenuItem("Slider Float Log")) + if (ImGui::MenuItem("对数滑块")) create("sliderfloatlog",1); - if (ImGui::MenuItem("Slider Angle")) + if (ImGui::MenuItem("角度滑块")) create("sliderangle",1); ImGui::EndMenu(); } - if (ImGui::BeginMenu("Color Pickers")) + if (ImGui::BeginMenu("颜色选择器")) { - if (ImGui::MenuItem("Color 1")) + if (ImGui::MenuItem("颜色 1")) create("color1",1); - if (ImGui::MenuItem("Color 2")) + if (ImGui::MenuItem("颜色 2")) create("color2",1); - if (ImGui::MenuItem("Color 3")) + if (ImGui::MenuItem("颜色 3")) create("color3",1); ImGui::EndMenu(); } @@ -175,7 +175,7 @@ void ImStudio::BufferWindow::create(std::string type_, bool atcursor) (getbaseobj(open_child_id)) && (getobj(open_child_id)->child.open))) { - // no child window open + // 没有打开子窗口 Object widget(idgen, type_); if (atcursor) { @@ -185,9 +185,9 @@ void ImStudio::BufferWindow::create(std::string type_, bool atcursor) } else { - // child window open + // 打开子窗口 BaseObject childwidget(idgen, type_, open_child_id); getobj(open_child_id)->child.objects.push_back(childwidget); } - selected_obj_id = idgen; // select the new object + selected_obj_id = idgen; // 选择新对象 } diff --git a/src/sources/ims_gui_menubar.cpp b/src/sources/ims_gui_menubar.cpp index 559be69..7ddbb66 100644 --- a/src/sources/ims_gui_menubar.cpp +++ b/src/sources/ims_gui_menubar.cpp @@ -4,18 +4,18 @@ void ImStudio::GUI::ShowMenubar() { ImGui::SetNextWindowPos(mb_P); ImGui::SetNextWindowSize(mb_S); - ImGui::Begin("Menubar", NULL, + ImGui::Begin("菜单栏", NULL, ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse); - // MENU + // 菜单 if (ImGui::BeginMenuBar()) { - /// menu-file - if (ImGui::BeginMenu("File")) + /// 菜单-文件 + if (ImGui::BeginMenu("文件")) { #ifndef __EMSCRIPTEN__ - if (ImGui::MenuItem("Export to clipboard")) + if (ImGui::MenuItem("导出到剪贴板")) { ImGui::LogToClipboard(); ImGui::LogText("%s", output.c_str()); @@ -23,30 +23,30 @@ void ImStudio::GUI::ShowMenubar() }; #endif - if (ImGui::MenuItem("Exit")) + if (ImGui::MenuItem("退出")) { state = false; }; ImGui::EndMenu(); } - /// menu-edit - if (ImGui::BeginMenu("Edit")) + /// 菜单-编辑 + if (ImGui::BeginMenu("编辑")) { - if (ImGui::BeginMenu("Layout")) + if (ImGui::BeginMenu("布局")) { - ImGui::MenuItem("Compact", NULL, &compact); + ImGui::MenuItem("紧凑", NULL, &compact); ImGui::EndMenu(); } - if (ImGui::BeginMenu("Behavior")) + if (ImGui::BeginMenu("行为")) { - ImGui::MenuItem("Static Mode", NULL, &bw.staticlayout); + ImGui::MenuItem("静态模式", NULL, &bw.staticlayout); ImGui::SameLine(); - utils::HelpMarker("Toggle between static/linear layout and fixed/manual layout"); + utils::HelpMarker("在静态/线性布局和固定/手动布局之间切换"); ImGui::EndMenu(); } - if (ImGui::MenuItem("Reset")) + if (ImGui::MenuItem("重置")) { bw.objects.clear(); bw.selected_obj_id = -1; @@ -58,42 +58,42 @@ void ImStudio::GUI::ShowMenubar() ImGui::EndMenu(); } - /// menu-tools - if (ImGui::BeginMenu("Tools")) + /// 菜单-工具 + if (ImGui::BeginMenu("工具")) { - ImGui::MenuItem("Style Editor", NULL, &child_style); - ImGui::MenuItem("Demo Window", NULL, &child_demo); - ImGui::MenuItem("Metrics", NULL, &child_metrics); - ImGui::MenuItem("Stack Tool", NULL, &child_stack); - ImGui::MenuItem("Color Export", NULL, &child_color); + ImGui::MenuItem("样式编辑器", NULL, &child_style); + ImGui::MenuItem("演示窗口", NULL, &child_demo); + ImGui::MenuItem("指标", NULL, &child_metrics); + ImGui::MenuItem("堆栈工具", NULL, &child_stack); + ImGui::MenuItem("颜色导出", NULL, &child_color); ImGui::EndMenu(); } - if (ImGui::BeginMenu("Help")) + if (ImGui::BeginMenu("帮助")) { - if (ImGui::MenuItem("Resources")) child_resources = true; - if (ImGui::MenuItem("About ImStudio")) child_about = true; + if (ImGui::MenuItem("资源")) child_resources = true; + if (ImGui::MenuItem("关于 ImStudio")) child_about = true; ImGui::EndMenu(); } ImGui::EndMenuBar(); } - // TAB + // 标签 if (!compact) { if (ImGui::BeginTabBar("##Tabs", ImGuiTabBarFlags_None)) { - // tab-create - if (ImGui::BeginTabItem("Create")) + // 标签-创建 + if (ImGui::BeginTabItem("创建")) { wksp_output = false; wksp_create = true; ImGui::EndTabItem(); } - // tab-output - if (ImGui::BeginTabItem("Output")) + // 标签-输出 + if (ImGui::BeginTabItem("输出")) { wksp_create = false; wksp_output = true; @@ -106,4 +106,4 @@ void ImStudio::GUI::ShowMenubar() ImGui::End(); -} \ No newline at end of file +} diff --git a/src/sources/ims_gui_output.cpp b/src/sources/ims_gui_output.cpp index d6c4fe7..c6e49d8 100644 --- a/src/sources/ims_gui_output.cpp +++ b/src/sources/ims_gui_output.cpp @@ -8,7 +8,7 @@ void ImStudio::GUI::ShowOutputWorkspace() ImGui::Begin("wksp_output", NULL, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar); { #ifdef __EMSCRIPTEN__ - if(ImGui::Button("Copy")){ + if(ImGui::Button("复制")){ ImGui::LogToClipboard(); ImGui::LogText(output.c_str()); ImGui::LogFinish(); @@ -18,4 +18,4 @@ void ImStudio::GUI::ShowOutputWorkspace() ImStudio::GenerateCode(&output, &bw); } ImGui::End(); -} \ No newline at end of file +} diff --git a/src/sources/ims_gui_properties.cpp b/src/sources/ims_gui_properties.cpp index 4b3c34f..58b2e0e 100644 --- a/src/sources/ims_gui_properties.cpp +++ b/src/sources/ims_gui_properties.cpp @@ -4,34 +4,34 @@ void ImStudio::GUI::ShowProperties() { ImGui::SetNextWindowPos(pt_P); ImGui::SetNextWindowSize(pt_S); - ImGui::Begin("Properties", NULL, ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize); + ImGui::Begin("属性", NULL, ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize); { { if (!bw.objects.empty()) { - // array for Properties "object" drop down combo - std::vector prop_objects_arr; // contains identifiers ex: child1::button2 - std::vector idof_prop_objects_arr; // contains id associated with ^ + // 属性"对象"下拉组合框的数组 + std::vector prop_objects_arr; // 包含标识符,例如:child1::button2 + std::vector idof_prop_objects_arr; // 包含与^关联的ID int curr_index = 0; static int selected_index = 0; static BaseObject* selected_obj_ptr = nullptr; static int prev_selected_obj_id = 0; - // static = persistent in loop / between calls + // static = 在循环/调用之间持久化 - for (Object &obj : bw.objects) // Fill both arrays with contents from bw.objects + for (Object &obj : bw.objects) // 用bw.objects的内容填充两个数组 { prop_objects_arr.push_back(const_cast(obj.identifier.c_str())); idof_prop_objects_arr.push_back(obj.id); - if (obj.id == bw.selected_obj_id) // if o is last selected item + if (obj.id == bw.selected_obj_id) // 如果o是最后选择的项目 { - selected_index = curr_index; // select it from prop_objects_arr + selected_index = curr_index; // 从prop_objects_arr中选择它 } curr_index++; - // now do the same if obj is a child window and has children - // we cant use recursion because different types Object vs BaseObject + // 现在如果obj是子窗口并具有子项,则执行相同操作 + // 我们不能使用递归,因为不同类型的Object与BaseObject //////////////////////////////////////////////////////////////////////////////////////////// if (!obj.child.objects.empty()){ for (BaseObject &childobj : obj.child.objects) @@ -48,8 +48,8 @@ void ImStudio::GUI::ShowProperties() //////////////////////////////////////////////////////////////////////////////////////////// } - // Cycle selection through array elements using left/right arrow keys - //HOTKEY: RIGHT ARROW - Cycle selected item forward + // 使用左右箭头键循环选择数组元素 + // 热键: 右箭头 - 向前循环选择项目 if (ImGui::IsKeyPressed(ImGuiKey_RightArrow)) { if (selected_index < prop_objects_arr.size() - 1) @@ -61,7 +61,7 @@ void ImStudio::GUI::ShowProperties() selected_index = 0; } } - //HOTKEY: LEFT ARROW - Cycle selected item backward + // 热键: 左箭头 - 向后循环选择项目 if (ImGui::IsKeyPressed(ImGuiKey_LeftArrow)) { if (selected_index > 0) @@ -74,65 +74,65 @@ void ImStudio::GUI::ShowProperties() } } - ImGui::Combo("Object", &selected_index, prop_objects_arr.data(), prop_objects_arr.size()); + ImGui::Combo("对象", &selected_index, prop_objects_arr.data(), prop_objects_arr.size()); selected_obj_ptr = bw.getbaseobj(idof_prop_objects_arr[selected_index]); bw.selected_obj_id = selected_obj_ptr->id; - // selecting object from properties - // this will be overridden from viewport bufferwindow drag (BaseObject.draw() assigns to active item) - // and vice versa + // 从属性中选择对象 + // 这将被视口缓冲区窗口拖动覆盖(BaseObject.draw()分配给活动项目) + // 反之亦然 - ////////PROP BUFFERS///////// + ////////属性缓冲区///////// static std::string prop_inputbuf_value = "change me"; static std::string prop_inputbuf_label = "##"; ///////////////////////////// if (bw.selected_obj_id != prev_selected_obj_id) { - //reset prop buffers so text input value is not transferred from object to object + // 重置属性缓冲区,以便文本输入值不会从一个对象传递到另一个对象 prop_inputbuf_value = "change me"; prop_inputbuf_label = "##"; } - // Per object property fields + // 每个对象的属性字段 if (selected_obj_ptr->type == "button") { - if (selected_obj_ptr->propinit) prop_inputbuf_value = selected_obj_ptr->value_s; // run after first time + if (selected_obj_ptr->propinit) prop_inputbuf_value = selected_obj_ptr->value_s; // 第一次运行后执行 - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); - //HOTKEY: CTRL + E - Focus on property field + // 热键: CTRL + E - 聚焦到属性字段 if (ImGui::IsKeyDown(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Value", &prop_inputbuf_value); + ImGui::InputText("值", &prop_inputbuf_value); selected_obj_ptr->value_s = prop_inputbuf_value; ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); if (selected_obj_ptr->center_h) ImGui::BeginDisabled(true); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); if (selected_obj_ptr->center_h) ImGui::EndDisabled(); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); ImGui::NewLine(); - ImGui::Checkbox("Auto Resize", &selected_obj_ptr->autoresize); + ImGui::Checkbox("自动调整大小", &selected_obj_ptr->autoresize); if (selected_obj_ptr->autoresize) ImGui::BeginDisabled(true); - ImGui::InputFloat("Size X", &selected_obj_ptr->size.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Size Y", &selected_obj_ptr->size.y, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("大小 X", &selected_obj_ptr->size.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("大小 Y", &selected_obj_ptr->size.y, 1.0f, 10.0f, "%.3f"); if (selected_obj_ptr->autoresize) ImGui::EndDisabled(); - //HOTKEY: DELETE - Delete selected object - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + // 热键: DELETE - 删除选中的对象 + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -150,28 +150,28 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); selected_obj_ptr->label = prop_inputbuf_label; - ImGui::Combo("Value", &cur, items, IM_ARRAYSIZE(items)); + ImGui::Combo("值", &cur, items, IM_ARRAYSIZE(items)); if (cur == 0) selected_obj_ptr->value_b = false; else selected_obj_ptr->value_b = true; ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -189,28 +189,28 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); selected_obj_ptr->label = prop_inputbuf_label; - ImGui::Combo("Value", &cur, items, IM_ARRAYSIZE(items)); + ImGui::Combo("值", &cur, items, IM_ARRAYSIZE(items)); if (cur == 0) selected_obj_ptr->value_b = false; else selected_obj_ptr->value_b = true; ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -224,23 +224,23 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Value", &prop_inputbuf_value); + ImGui::InputText("值", &prop_inputbuf_value); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->value_s = prop_inputbuf_value; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -249,16 +249,16 @@ void ImStudio::GUI::ShowProperties() if (selected_obj_ptr->type == "bullet") { - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -267,16 +267,16 @@ void ImStudio::GUI::ShowProperties() if (selected_obj_ptr->type == "arrow") { - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -287,27 +287,27 @@ void ImStudio::GUI::ShowProperties() if (selected_obj_ptr->propinit) prop_inputbuf_label = selected_obj_ptr->label; - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); selected_obj_ptr->label = prop_inputbuf_label; ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -318,27 +318,27 @@ void ImStudio::GUI::ShowProperties() if (selected_obj_ptr->propinit) prop_inputbuf_label = selected_obj_ptr->label; - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); selected_obj_ptr->label = prop_inputbuf_label; ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -353,27 +353,27 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); - ImGui::InputText("Value", &prop_inputbuf_value); + ImGui::InputText("标签", &prop_inputbuf_label); + ImGui::InputText("值", &prop_inputbuf_value); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; selected_obj_ptr->value_s = prop_inputbuf_value; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -387,25 +387,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -419,25 +419,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -451,25 +451,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -483,25 +483,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -515,25 +515,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -547,25 +547,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -579,25 +579,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -611,25 +611,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -643,25 +643,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -675,25 +675,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -707,25 +707,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -739,25 +739,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -771,25 +771,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -803,23 +803,23 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -833,25 +833,25 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; @@ -865,134 +865,32 @@ void ImStudio::GUI::ShowProperties() } - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); + if (selected_obj_ptr->ischildwidget) ImGui::Text("子控件: True"); + else ImGui::Text("子控件: False"); ImGui::NewLine(); if (ImGui::IsKeyPressed(ImGuiKey_ModCtrl) && (ImGui::IsKeyPressed(ImGuiKey_E))) { ImGui::SetKeyboardFocusHere(); } - ImGui::InputText("Label", &prop_inputbuf_label); + ImGui::InputText("标签", &prop_inputbuf_label); ImGui::NewLine(); - ImGui::InputFloat("Width", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("宽度", &selected_obj_ptr->width, 1.0f, 10.0f, "%.3f"); ImGui::NewLine(); - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); + ImGui::Checkbox("水平居中", &selected_obj_ptr->center_h); + ImGui::InputFloat("位置 X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); + ImGui::InputFloat("位置 Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); + ImGui::Checkbox("拖动锁定", &selected_obj_ptr->locked); selected_obj_ptr->label = prop_inputbuf_label; - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) + if ((ImGui::Button("删除")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) { selected_obj_ptr->del(); if (selected_index != 0) selected_index -= 1; } } - - if (selected_obj_ptr->type == "child") - { - if (bw.getobj(selected_obj_ptr->id)->child.open) ImGui::Text("OPEN"); - else ImGui::Text("CLOSED"); - ImGui::NewLine(); - - ImGui::Checkbox("Border", &bw.getobj(selected_obj_ptr->id)->child.border); - ImGui::NewLine(); - - ImGui::InputFloat("Min X", &bw.getobj(selected_obj_ptr->id)->child.grab1.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Min Y", &bw.getobj(selected_obj_ptr->id)->child.grab1.y, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Max X", &bw.getobj(selected_obj_ptr->id)->child.grab2.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Max Y", &bw.getobj(selected_obj_ptr->id)->child.grab2.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &bw.getobj(selected_obj_ptr->id)->child.locked); - - if (ImGui::Button("Open")) - { - bw.getobj(selected_obj_ptr->id)->child.open = true; - bw.open_child = true; - bw.open_child_id = selected_obj_ptr->id; - } - if (ImGui::Button("Close")) - { - bw.getobj(selected_obj_ptr->id)->child.open = false; - bw.open_child = false; - bw.open_child_id = -1; - } - ImGui::NewLine(); - - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) - { - if (bw.open_child_id == selected_obj_ptr->id) - { - bw.open_child = false; - bw.open_child_id = -1; - } - bw.getobj(selected_obj_ptr->id)->child.open = false; - selected_obj_ptr->del(); - if (selected_index != 0) selected_index -= 1; - } - } - if (selected_obj_ptr->type == "sameline") - { - - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); - ImGui::NewLine(); - - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) - { - selected_obj_ptr->del(); - if (selected_index != 0) selected_index -= 1; - } - } - if (selected_obj_ptr->type == "newline") - { - - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); - ImGui::NewLine(); - - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) - { - selected_obj_ptr->del(); - if (selected_index != 0) selected_index -= 1; - } - } - if (selected_obj_ptr->type == "separator") - { - - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); - ImGui::NewLine(); - - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) - { - selected_obj_ptr->del(); - if (selected_index != 0) selected_index -= 1; - } - } - if (selected_obj_ptr->type == "progressbar") - { - - if (selected_obj_ptr->ischildwidget) ImGui::Text("Child Widget: True"); - else ImGui::Text("Child Widget: False"); - ImGui::NewLine(); - - ImGui::Checkbox("Center Horizontally", &selected_obj_ptr->center_h); - ImGui::InputFloat("Position X", &selected_obj_ptr->pos.x, 1.0f, 10.0f, "%.3f"); - ImGui::InputFloat("Position Y", &selected_obj_ptr->pos.y, 1.0f, 10.0f, "%.3f"); - ImGui::Checkbox("Drag Locked", &selected_obj_ptr->locked); - - if ((ImGui::Button("Delete")) || (ImGui::IsKeyPressed(ImGuiKey_Delete))) - { - selected_obj_ptr->del(); - if (selected_index != 0) selected_index -= 1; - } - } - selected_obj_ptr->propinit = true; - prev_selected_obj_id = selected_obj_ptr->id; } } } - ImGui::End(); -} \ No newline at end of file +} diff --git a/src/sources/ims_gui_sidebar.cpp b/src/sources/ims_gui_sidebar.cpp index cf4b127..8da798f 100644 --- a/src/sources/ims_gui_sidebar.cpp +++ b/src/sources/ims_gui_sidebar.cpp @@ -6,133 +6,133 @@ void ImStudio::GUI::ShowSidebar() ImGui::SetNextWindowSizeConstraints(ImVec2(0, -1), ImVec2(FLT_MAX, -1)); ImGui::SetNextWindowSize(sb_S); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(4.00f, 5.00f)); - ImGui::Begin("Sidebar", NULL, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize); + ImGui::Begin("侧边栏", NULL, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize); - /// content-sidebar + /// 侧边栏内容 { - ImGui::TextDisabled("NOTE"); + ImGui::TextDisabled("注意"); ImGui::SameLine(); utils::HelpMarker - ("THESE ARE NOT THE ONLY WIDGETS IMGUI PROVIDES!\n" - "You can find out more in the Dear ImGui Demo " - "(Tools > Demo Window) and imgui/imgui_demo.cpp"); + ("这些不是 ImGui 提供的唯一控件!\n" + "你可以在 Dear ImGui 演示中找到更多内容 " + "(工具 > 演示窗口)和 imgui/imgui_demo.cpp"); ImGui::Separator(); - //ANCHOR SIDEBAR.PRIMITIVES - ImGui::Text("Primitives"); + // 锚点 SIDEBAR.PRIMITIVES + ImGui::Text("基础组件"); ImGui::Separator(); - if (ImGui::Button("Window")) + if (ImGui::Button("窗口")) { bw.state = true; } - if (ImGui::Button("Button")) + if (ImGui::Button("按钮")) bw.create("button"); - if (ImGui::Button("Radio Button")) + if (ImGui::Button("单选按钮")) bw.create("radio"); - if (ImGui::Button("Checkbox")) + if (ImGui::Button("复选框")) bw.create("checkbox"); - if (ImGui::Button("Text")) + if (ImGui::Button("文本")) bw.create("text"); - if (ImGui::Button("Bullet")) + if (ImGui::Button("项目符号")) bw.create("bullet"); - if (ImGui::Button("Arrow")) + if (ImGui::Button("箭头")) bw.create("arrow"); - if (ImGui::Button("Combo")) + if (ImGui::Button("下拉菜单")) bw.create("combo"); - if (ImGui::Button("Listbox")) + if (ImGui::Button("列表框")) bw.create("listbox"); ImGui::Separator(); - //ANCHOR SIDEBAR.DATAINPUTS - ImGui::Text("Data Inputs"); + // 锚点 SIDEBAR.DATAINPUTS + ImGui::Text("数据输入"); ImGui::Separator(); - if (ImGui::Button("Input Text")) + if (ImGui::Button("文本输入")) bw.create("textinput"); - if (ImGui::Button("Input Int")) + if (ImGui::Button("整数输入")) bw.create("inputint"); ImGui::SameLine(); utils::HelpMarker - ("You can apply arithmetic operators +,*,/ on numerical values.\n" - " e.g. [ 100 ], input \'*2\', result becomes [ 200 ]\n" - "Use +- to subtract."); + ("你可以对数值应用算术运算符 +,*,/。\n" + " 例如:[ 100 ],输入 '*2',结果变为 [ 200 ]\n" + "使用 +- 进行减法。"); - if (ImGui::Button("Input Float")) + if (ImGui::Button("浮点数输入")) bw.create("inputfloat"); - if (ImGui::Button("Input Double")) + if (ImGui::Button("双精度输入")) bw.create("inputdouble"); - if (ImGui::Button("Input Scientific")) + if (ImGui::Button("科学计数法输入")) bw.create("inputscientific"); ImGui::SameLine(); utils::HelpMarker - ("You can input value using the scientific notation,\n" - " e.g. \"1e+8\" becomes \"100000000\"."); + ("你可以使用科学计数法输入值,\n" + " 例如:\"1e+8\" 变为 \"100000000\"。"); - if (ImGui::Button("Input Float3")) + if (ImGui::Button("三维向量输入")) bw.create("inputfloat3"); - if (ImGui::Button("Drag Int")) + if (ImGui::Button("拖动整数")) bw.create("dragint"); ImGui::SameLine(); utils::HelpMarker - ("Click and drag to edit value.\n" - "Hold SHIFT/ALT for faster/slower edit.\n" - "Double-click or CTRL+click to input value."); + ("点击并拖动以编辑值。\n" + "按住 SHIFT/ALT 可加快/减慢编辑速度。\n" + "双击或 CTRL+点击以输入值。"); - if (ImGui::Button("Drag Int %")) + if (ImGui::Button("拖动整数百分比")) bw.create("dragint100"); - if (ImGui::Button("Drag Float")) + if (ImGui::Button("拖动浮点数")) bw.create("dragfloat"); - if (ImGui::Button("Drag Float Small")) + if (ImGui::Button("拖动小浮点数")) bw.create("dragfloatsmall"); - if (ImGui::Button("Slider Int")) + if (ImGui::Button("滑块整数")) bw.create("sliderint"); - ImGui::SameLine(); utils::HelpMarker("CTRL+click to input value."); + ImGui::SameLine(); utils::HelpMarker("CTRL+点击以输入值。"); - if (ImGui::Button("Slider Float")) + if (ImGui::Button("滑块浮点数")) bw.create("sliderfloat"); - if (ImGui::Button("Slider Float Log")) + if (ImGui::Button("对数滑块")) bw.create("sliderfloatlog"); - if (ImGui::Button("Slider Angle")) + if (ImGui::Button("角度滑块")) bw.create("sliderangle"); ImGui::Separator(); - ImGui::Text("Color Pickers"); + ImGui::Text("颜色选择器"); ImGui::Separator(); - if (ImGui::Button("Color 1")) + if (ImGui::Button("颜色 1")) bw.create("color1"); - if (ImGui::Button("Color 2")) + if (ImGui::Button("颜色 2")) bw.create("color2"); - if (ImGui::Button("Color 3")) + if (ImGui::Button("颜色 3")) bw.create("color3"); ImGui::Separator(); - //ANCHOR SIDEBAR.OTHERS - ImGui::Text("Misc"); + // 锚点 SIDEBAR.OTHERS + ImGui::Text("其他"); ImGui::Separator(); if (bw.open_child) @@ -151,8 +151,8 @@ void ImStudio::GUI::ShowSidebar() } } ImGui::SameLine(); utils::HelpMarker - ("Green = Open (Ready to add items). Calling EndChild will close it, " - "and you can't add items to it unless you manually re-open it."); + ("绿色 = 打开(准备添加项目)。调用 EndChild 将关闭它," + " 除非你手动重新打开,否则无法向其添加项目。"); if (ImGui::Button("EndChild")) { @@ -171,31 +171,31 @@ void ImStudio::GUI::ShowSidebar() } ImGui::EndDisabled(); ImGui::SameLine(); utils::HelpMarker - ("Groups are not a feature of ImStudio, but you can probably use " - "a child (without borders) to reproduce similar behavior."); + ("组不是 ImStudio 的功能,但你可以使用" + " 子项(无边框)来重现类似行为。"); - if (ImGui::Button("<< Same Line")) + if (ImGui::Button("<< 同一行")) { bw.create("sameline"); } - if (ImGui::Button("New Line")) + if (ImGui::Button("新行")) { bw.create("newline"); } - if (ImGui::Button("Separator")) + if (ImGui::Button("分隔线")) { bw.create("separator"); } - if (ImGui::Button("Progress Bar")) + if (ImGui::Button("进度条")) { bw.create("progressbar"); } ImGui::Separator(); - ImGui::Checkbox("Static Mode", &bw.staticlayout); + ImGui::Checkbox("静态模式", &bw.staticlayout); if ((ImGui::GetIO().KeyAlt) && (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_F4)))) { @@ -206,4 +206,4 @@ void ImStudio::GUI::ShowSidebar() ImGui::End(); ImGui::PopStyleVar(1); -} \ No newline at end of file +} diff --git a/src/sources/ims_gui_viewport.cpp b/src/sources/ims_gui_viewport.cpp index 020edcb..72007f0 100644 --- a/src/sources/ims_gui_viewport.cpp +++ b/src/sources/ims_gui_viewport.cpp @@ -4,25 +4,25 @@ void ImStudio::GUI::ShowViewport() { ImGui::SetNextWindowPos(vp_P); ImGui::SetNextWindowSize(vp_S); - ImGui::Begin("Viewport", NULL, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBringToFrontOnFocus); + ImGui::Begin("视口", NULL, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBringToFrontOnFocus); - /// content-viewport + /// 视口内容 { utils::DrawGrid(); - ImGui::Text("Buffer Window: %gx%g", bw.size.x, bw.size.y); + ImGui::Text("缓冲区窗口: %gx%g", bw.size.x, bw.size.y); ImGui::SameLine(); - utils::TextCentered("Make sure to lock widgets before interacting with them.", 1); - ImGui::Text("Cursor: %gx%g", ImGui::GetIO().MousePos.x, ImGui::GetIO().MousePos.y); - ImGui::Text("Objects: %d", static_cast(bw.objects.size())); - if (!bw.objects.empty()) ImGui::Text("Selected: %s", bw.getbaseobj(bw.selected_obj_id)->identifier.c_str()); - ImGui::Text("Performance: %.1f FPS", ImGui::GetIO().Framerate); - utils::HelpMarker("Hotkeys:\nAlt + M - \"Add\" context menu\n"\ - "Left/Right Arrow - Cycle object selection\n"\ - "Ctrl + E - Focus on property field\nDelete - Delete selected object"); + utils::TextCentered("在与控件交互之前,请确保锁定它们。", 1); + ImGui::Text("光标: %gx%g", ImGui::GetIO().MousePos.x, ImGui::GetIO().MousePos.y); + ImGui::Text("对象: %d", static_cast(bw.objects.size())); + if (!bw.objects.empty()) ImGui::Text("选中: %s", bw.getbaseobj(bw.selected_obj_id)->identifier.c_str()); + ImGui::Text("性能: %.1f FPS", ImGui::GetIO().Framerate); + utils::HelpMarker("热键:\nAlt + M - \"添加\" 上下文菜单\n" + "左右箭头 - 循环选择对象\n" + "Ctrl + E - 聚焦到属性字段\nDelete - 删除选中对象"); bw.drawall(); } ImGui::End(); -} \ No newline at end of file +} diff --git a/src/utils/ims_utils.cpp b/src/utils/ims_utils.cpp index c63b6d4..4b2a853 100644 --- a/src/utils/ims_utils.cpp +++ b/src/utils/ims_utils.cpp @@ -79,7 +79,7 @@ void utils::DrawGrid() void utils::ShowStyleEditorWindow(bool *child_sty) { ImGui::SetNextWindowSize(ImVec2(500,700), ImGuiCond_Once); - if (ImGui::Begin("Style Editor", child_sty, ImGuiWindowFlags_NoCollapse)) + if (ImGui::Begin("样式编辑器", child_sty, ImGuiWindowFlags_NoCollapse)) { ImGui::ShowStyleEditor(); ImGui::End(); @@ -89,7 +89,7 @@ void utils::ShowStyleEditorWindow(bool *child_sty) void utils::ShowColorExportWindow(bool *child_colexp) { - if (ImGui::Begin("Color Export", child_colexp, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse)) + if (ImGui::Begin("颜色导出", child_colexp, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse)) { static ImVec4 color = ImVec4(114.0f / 255.0f, 144.0f / 255.0f, 154.0f / 255.0f, 200.0f / 255.0f); @@ -104,21 +104,21 @@ void utils::ShowColorExportWindow(bool *child_colexp) : (alpha_preview ? ImGuiColorEditFlags_AlphaPreview : 0)) | (options_menu ? 0 : ImGuiColorEditFlags_NoOptions); - ImGui::Text("Color widget:"); + ImGui::Text("颜色控件:"); ImGui::SameLine(); - HelpMarker("Click on the color square to open a color picker.\n" - "CTRL+click on individual component to input value.\n"); - ImGui::ColorEdit3("MyColor##1", (float *)&color, misc_flags); + HelpMarker("点击颜色方块打开颜色选择器。\n" + "按住 CTRL 点击单个组件输入值。\n"); + ImGui::ColorEdit3("我的颜色##1", (float *)&color, misc_flags); ImGui::SameLine(); - HelpMarker("Right click me to export colors with your preferred format."); + HelpMarker("右键点击我以你喜欢的格式导出颜色。"); - ImGui::Text("Color widget HSV with Alpha:"); - ImGui::ColorEdit4("MyColor##2", (float *)&color, ImGuiColorEditFlags_DisplayHSV | misc_flags); + ImGui::Text("带 Alpha 的 HSV 颜色控件:"); + ImGui::ColorEdit4("我的颜色##2", (float *)&color, ImGuiColorEditFlags_DisplayHSV | misc_flags); - ImGui::Text("Color widget with Float Display:"); - ImGui::ColorEdit4("MyColor##2f", (float *)&color, ImGuiColorEditFlags_Float | misc_flags); + ImGui::Text("带浮点显示的颜色控件:"); + ImGui::ColorEdit4("我的颜色##2f", (float *)&color, ImGuiColorEditFlags_Float | misc_flags); - ImGui::Text("Color picker:"); + ImGui::Text("颜色选择器:"); static bool alpha = true; static bool alpha_bar = true; static bool side_preview = true; @@ -126,18 +126,16 @@ void utils::ShowColorExportWindow(bool *child_colexp) static ImVec4 ref_color_v(1.0f, 0.0f, 1.0f, 0.5f); static int display_mode = 0; static int picker_mode = 2; - ImGui::Combo("Display Mode", &display_mode, "Auto/Current\0None\0RGB Only\0HSV Only\0Hex Only\0"); + ImGui::Combo("显示模式", &display_mode, "自动/当前\0无\0仅 RGB\0仅 HSV\0仅 Hex\0"); ImGui::SameLine(); - HelpMarker("ColorEdit defaults to displaying RGB inputs if you don't specify a display mode, " - "but the user can change it with a right-click.\n\nColorPicker defaults to displaying RGB+HSV+Hex " - "if you don't specify a display mode.\n\nYou can change the defaults using SetColorEditOptions()."); - ImGui::Combo("Picker Mode", &picker_mode, "Auto/Current\0Hue bar + SV rect\0Hue wheel + SV triangle\0"); + HelpMarker("如果你不指定显示模式,ColorEdit 默认显示 RGB 输入,但用户可以通过右键更改。\n\n如果你不指定显示模式,ColorPicker 默认显示 RGB+HSV+Hex。\n\n你可以使用 SetColorEditOptions() 更改默认值。"); + ImGui::Combo("选择器模式", &picker_mode, "自动/当前\0色相条 + SV 矩形\0色相轮 + SV 三角形\0"); ImGui::SameLine(); - HelpMarker("User can right-click the picker to change mode."); + HelpMarker("用户可以右键点击选择器更改模式。"); ImGuiColorEditFlags flags = misc_flags; if (!alpha) flags |= - ImGuiColorEditFlags_NoAlpha; // This is by default if you call ColorPicker3() instead of ColorPicker4() + ImGuiColorEditFlags_NoAlpha; // 如果你调用 ColorPicker3() 而不是 ColorPicker4(),这是默认的 if (alpha_bar) flags |= ImGuiColorEditFlags_AlphaBar; if (!side_preview) @@ -147,43 +145,43 @@ void utils::ShowColorExportWindow(bool *child_colexp) if (picker_mode == 2) flags |= ImGuiColorEditFlags_PickerHueWheel; if (display_mode == 1) - flags |= ImGuiColorEditFlags_NoInputs; // Disable all RGB/HSV/Hex displays + flags |= ImGuiColorEditFlags_NoInputs; // 禁用所有 RGB/HSV/Hex 显示 if (display_mode == 2) - flags |= ImGuiColorEditFlags_DisplayRGB; // Override display mode + flags |= ImGuiColorEditFlags_DisplayRGB; // 覆盖显示模式 if (display_mode == 3) flags |= ImGuiColorEditFlags_DisplayHSV; if (display_mode == 4) flags |= ImGuiColorEditFlags_DisplayHex; - ImGui::ColorPicker4("MyColor##4", (float *)&color, flags, ref_color ? &ref_color_v.x : NULL); + ImGui::ColorPicker4("我的颜色##4", (float *)&color, flags, ref_color ? &ref_color_v.x : NULL); - ImGui::Text("Set defaults in code:"); + ImGui::Text("在代码中设置默认值:"); ImGui::SameLine(); - HelpMarker("SetColorEditOptions() is designed to allow you to set boot-time default.\n" - "We don't have Push/Pop functions because you can force options on a per-widget basis if needed," - "and the user can change non-forced ones with the options menu.\nWe don't have a getter to avoid" - "encouraging you to persistently save values that aren't forward-compatible."); - if (ImGui::Button("Default: Uint8 + HSV + Hue Bar")) + HelpMarker("SetColorEditOptions() 旨在允许你设置启动时的默认值。\n" + "我们没有 Push/Pop 函数,因为如果需要,你可以在每个控件的基础上强制选项," + "用户可以通过选项菜单更改非强制选项。\n我们没有 getter 是为了避免" + "鼓励你持久保存不向前兼容的值。"); + if (ImGui::Button("默认:Uint8 + HSV + 色相条")) ImGui::SetColorEditOptions(ImGuiColorEditFlags_Uint8 | ImGuiColorEditFlags_DisplayHSV | ImGuiColorEditFlags_PickerHueBar); - if (ImGui::Button("Default: Float + HDR + Hue Wheel")) + if (ImGui::Button("默认:Float + HDR + 色相轮")) ImGui::SetColorEditOptions(ImGuiColorEditFlags_Float | ImGuiColorEditFlags_HDR | ImGuiColorEditFlags_PickerHueWheel); - // HSV encoded support (to avoid RGB<>HSV round trips and singularities when S==0 or V==0) - static ImVec4 color_hsv(0.23f, 1.0f, 1.0f, 1.0f); // Stored as HSV! + // HSV 编码支持(避免 RGB<>HSV 往返和 S==0 或 V==0 时的奇点) + static ImVec4 color_hsv(0.23f, 1.0f, 1.0f, 1.0f); // 存储为 HSV! ImGui::Spacing(); - ImGui::Text("HSV encoded colors"); + ImGui::Text("HSV 编码颜色"); ImGui::SameLine(); HelpMarker( - "By default, colors are given to ColorEdit and ColorPicker in RGB, but ImGuiColorEditFlags_InputHSV" - "allows you to store colors as HSV and pass them to ColorEdit and ColorPicker as HSV. This comes with the" - "added benefit that you can manipulate hue values with the picker even when saturation or value are zero."); - ImGui::Text("Color widget with InputHSV:"); - ImGui::ColorEdit4("HSV shown as RGB##1", (float *)&color_hsv, + "默认情况下,颜色以 RGB 形式提供给 ColorEdit 和 ColorPicker,但 ImGuiColorEditFlags_InputHSV" + "允许你将颜色存储为 HSV 并以 HSV 形式传递给 ColorEdit 和 ColorPicker。这带来了" + "额外的好处,即使在饱和度或值为零时,你也可以使用选择器操作色相值。"); + ImGui::Text("带 InputHSV 的颜色控件:"); + ImGui::ColorEdit4("显示为 RGB 的 HSV##1", (float *)&color_hsv, ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_InputHSV | ImGuiColorEditFlags_Float); - ImGui::ColorEdit4("HSV shown as HSV##1", (float *)&color_hsv, + ImGui::ColorEdit4("显示为 HSV 的 HSV##1", (float *)&color_hsv, ImGuiColorEditFlags_DisplayHSV | ImGuiColorEditFlags_InputHSV | ImGuiColorEditFlags_Float); - ImGui::DragFloat4("Raw HSV values", (float *)&color_hsv, 0.01f, 0.0f, 1.0f); + ImGui::DragFloat4("原始 HSV 值", (float *)&color_hsv, 0.01f, 0.0f, 1.0f); ImGui::End(); } } @@ -204,42 +202,42 @@ void utils::ShowResourcesWindow(bool *child_resources) ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(5.00f, 3.00f)); ImGui::SetNextWindowSize(ImVec2(500,600), ImGuiCond_Once); #ifdef __EMSCRIPTEN__ - if (ImGui::Begin("Resources", child_resources, ImGuiWindowFlags_NoCollapse)) + if (ImGui::Begin("资源", child_resources, ImGuiWindowFlags_NoCollapse)) { - ImGui::TextWrapped("Some useful resources for developers using Dear ImGui."); - ImGui::TextWrapped("Keep in mind that the most helpful resource will always be the Dear ImGui Demo (Tools > Demo Window) and imgui/imgui_demo.cpp."); + ImGui::TextWrapped("为使用 Dear ImGui 的开发者提供的一些有用资源。"); + ImGui::TextWrapped("请记住,最有帮助的资源永远是 Dear ImGui 演示(工具 > 演示窗口)和 imgui/imgui_demo.cpp。"); ImGui::Spacing(); ImGui::CollapsingHeader("Dear ImGui", ImGuiTreeNodeFlags_DefaultOpen); { - ImGui::Bullet(); if(ImGui::SmallButton("Dear ImGui Source: github.com/ocornut/imgui")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui");} + ImGui::Bullet(); if(ImGui::SmallButton("Dear ImGui 源码:github.com/ocornut/imgui")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui");} ImGui::Bullet(); if(ImGui::SmallButton("Issues")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/issues");} ImGui::Bullet(); if(ImGui::SmallButton("Wiki")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/wiki");} - ImGui::Bullet(); if(ImGui::SmallButton("Manual")) {HyperlinkHelper::OpenUrl("https://pthom.github.io/imgui_manual_online");} + ImGui::Bullet(); if(ImGui::SmallButton("手册")) {HyperlinkHelper::OpenUrl("https://pthom.github.io/imgui_manual_online");} ImGui::Bullet(); if(ImGui::SmallButton("discourse.dearimgui.org")) {HyperlinkHelper::OpenUrl("https://discourse.dearimgui.org");} - ImGui::Bullet(); if(ImGui::SmallButton("Discussions")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/discussions");} - ImGui::Bullet(); if(ImGui::SmallButton("How to open an Issue or Pull Request #2261")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/issues/2261");} - ImGui::Bullet(); if(ImGui::SmallButton("Docking")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/wiki/Docking");} - ImGui::Bullet(); if(ImGui::SmallButton("Gallery")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/issues/4451");} - ImGui::Bullet(); if(ImGui::SmallButton("Software using DearImGui")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui");} + ImGui::Bullet(); if(ImGui::SmallButton("讨论")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/discussions");} + ImGui::Bullet(); if(ImGui::SmallButton("如何打开 Issue 或 Pull Request #2261")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/issues/2261");} + ImGui::Bullet(); if(ImGui::SmallButton("停靠")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/wiki/Docking");} + ImGui::Bullet(); if(ImGui::SmallButton("图库")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/issues/4451");} + ImGui::Bullet(); if(ImGui::SmallButton("使用 DearImGui 的软件")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui");} } ImGui::Spacing(); ImGui::PushStyleColor(ImGuiCol_Header, RainbowCol()); - ImGui::CollapsingHeader("Cool Addons", ImGuiTreeNodeFlags_DefaultOpen); + ImGui::CollapsingHeader("酷插件", ImGuiTreeNodeFlags_DefaultOpen); { ImGui::Bullet(); if(ImGui::SmallButton("HankiDesign/awesome-dear-imgui")) {HyperlinkHelper::OpenUrl("https://github.com/HankiDesign/awesome-dear-imgui");} ImGui::Bullet(); if(ImGui::SmallButton("epezent/implot")) {HyperlinkHelper::OpenUrl("https://github.com/epezent/implot");} ImGui::Bullet(); if(ImGui::SmallButton("soufianekhiat/DearWidgets")) {HyperlinkHelper::OpenUrl("https://github.com/soufianekhiat/DearWidgets");} ImGui::Bullet(); if(ImGui::SmallButton("dfranx/ImFileDialog")) {HyperlinkHelper::OpenUrl("https://github.com/dfranx/ImFileDialog");} - ImGui::Bullet(); if(ImGui::SmallButton("Toggle Button")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/issues/1537#issuecomment-355569554");} - ImGui::Bullet(); if(ImGui::SmallButton("Knob")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/issues/942#issuecomment-268369298");} + ImGui::Bullet(); if(ImGui::SmallButton("切换按钮")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/issues/1537#issuecomment-355569554");} + ImGui::Bullet(); if(ImGui::SmallButton("旋钮")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/issues/942#issuecomment-268369298");} ImGui::Bullet(); if(ImGui::SmallButton("Nelarius/imnodes")) {HyperlinkHelper::OpenUrl("https://github.com/Nelarius/imnodes");} ImGui::Bullet(); if(ImGui::SmallButton("thedmd/imgui-node-editor")) {HyperlinkHelper::OpenUrl("https://github.com/thedmd/imgui-node-editor");} ImGui::Bullet(); if(ImGui::SmallButton("aiekick/ImGuiFontStudio")) {HyperlinkHelper::OpenUrl("https://github.com/aiekick/ImGuiFontStudio");} - ImGui::Bullet(); if(ImGui::SmallButton("Add extra keys #2625")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/pull/2625");} + ImGui::Bullet(); if(ImGui::SmallButton("添加额外键 #2625")) {HyperlinkHelper::OpenUrl("https://github.com/ocornut/imgui/pull/2625");} } ImGui::PopStyleColor(1); ImGui::Spacing(); - ImGui::CollapsingHeader("Frameworks", ImGuiTreeNodeFlags_DefaultOpen); + ImGui::CollapsingHeader("框架", ImGuiTreeNodeFlags_DefaultOpen); { ImGui::Bullet(); if(ImGui::SmallButton("pthom/hello_imgui")) {HyperlinkHelper::OpenUrl("https://github.com/pthom/hello_imgui");} ImGui::Bullet(); if(ImGui::SmallButton("JamesBoer/ImFrame")) {HyperlinkHelper::OpenUrl("https://github.com/JamesBoer/ImFrame");} @@ -249,45 +247,45 @@ void utils::ShowResourcesWindow(bool *child_resources) ImGui::End(); } #else - if (ImGui::Begin("Resources", child_resources, ImGuiWindowFlags_NoCollapse)) + if (ImGui::Begin("资源", child_resources, ImGuiWindowFlags_NoCollapse)) { - ImGui::TextWrapped("Some useful resources for developers using Dear ImGui."); - ImGui::TextWrapped("Keep in mind that the most helpful resource will always be the Dear ImGui Demo (Tools > Demo Window) and imgui/imgui_demo.cpp."); + ImGui::TextWrapped("为使用 Dear ImGui 的开发者提供的一些有用资源。"); + ImGui::TextWrapped("请记住,最有帮助的资源永远是 Dear ImGui 演示(工具 > 演示窗口)和 imgui/imgui_demo.cpp。"); ImGui::Spacing(); - ImGui::TextWrapped("Click = Copy to clipboard"); + ImGui::TextWrapped("点击 = 复制到剪贴板"); ImGui::Spacing(); ImGui::CollapsingHeader("Dear ImGui", ImGuiTreeNodeFlags_DefaultOpen); { - ImGui::Bullet(); if(ImGui::SmallButton("Dear ImGui Source: github.com/ocornut/imgui")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui"); ImGui::LogFinish();} + ImGui::Bullet(); if(ImGui::SmallButton("Dear ImGui 源码:github.com/ocornut/imgui")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui"); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("Issues")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/issues"); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("Wiki")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/wiki"); ImGui::LogFinish();} - ImGui::Bullet(); if(ImGui::SmallButton("Manual")) {ImGui::LogToClipboard(); ImGui::LogText("https://pthom.github.io/imgui_manual_online"); ImGui::LogFinish();} + ImGui::Bullet(); if(ImGui::SmallButton("手册")) {ImGui::LogToClipboard(); ImGui::LogText("https://pthom.github.io/imgui_manual_online"); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("discourse.dearimgui.org")) {ImGui::LogToClipboard(); ImGui::LogText("https://discourse.dearimgui.org/"); ImGui::LogFinish();} - ImGui::Bullet(); if(ImGui::SmallButton("Discussions")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/discussions"); ImGui::LogFinish();} - ImGui::Bullet(); if(ImGui::SmallButton("How to open an Issue or Pull Request #2261")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/issues/2261"); ImGui::LogFinish();} - ImGui::Bullet(); if(ImGui::SmallButton("Docking")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/wiki/Docking"); ImGui::LogFinish();} - ImGui::Bullet(); if(ImGui::SmallButton("Gallery")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/issues/4451"); ImGui::LogFinish();} - ImGui::Bullet(); if(ImGui::SmallButton("Software using DearImGui")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui"); ImGui::LogFinish();} + ImGui::Bullet(); if(ImGui::SmallButton("讨论")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/discussions"); ImGui::LogFinish();} + ImGui::Bullet(); if(ImGui::SmallButton("如何打开 Issue 或 Pull Request #2261")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/issues/2261"); ImGui::LogFinish();} + ImGui::Bullet(); if(ImGui::SmallButton("停靠")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/wiki/Docking"); ImGui::LogFinish();} + ImGui::Bullet(); if(ImGui::SmallButton("图库")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/issues/4451"); ImGui::LogFinish();} + ImGui::Bullet(); if(ImGui::SmallButton("使用 DearImGui 的软件")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui"); ImGui::LogFinish();} } ImGui::Spacing(); ImGui::PushStyleColor(ImGuiCol_Header, RainbowCol()); - ImGui::CollapsingHeader("Cool Addons", ImGuiTreeNodeFlags_DefaultOpen); + ImGui::CollapsingHeader("酷插件", ImGuiTreeNodeFlags_DefaultOpen); { ImGui::Bullet(); if(ImGui::SmallButton("HankiDesign/awesome-dear-imgui")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/HankiDesign/awesome-dear-imgui"); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("issues/useful widgets")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/issues?q=label%%3A\"useful+widgets\""); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("epezent/implot")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/epezent/implot"); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("soufianekhiat/DearWidgets")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/soufianekhiat/DearWidgets"); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("dfranx/ImFileDialog")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/dfranx/ImFileDialog"); ImGui::LogFinish();} - ImGui::Bullet(); if(ImGui::SmallButton("Toggle Button")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/issues/1537#issuecomment-355569554"); ImGui::LogFinish();} - ImGui::Bullet(); if(ImGui::SmallButton("Knob")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/issues/942#issuecomment-268369298"); ImGui::LogFinish();} + ImGui::Bullet(); if(ImGui::SmallButton("切换按钮")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/issues/1537#issuecomment-355569554"); ImGui::LogFinish();} + ImGui::Bullet(); if(ImGui::SmallButton("旋钮")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/issues/942#issuecomment-268369298"); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("Nelarius/imnodes")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/Nelarius/imnodes"); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("thedmd/imgui-node-editor")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/thedmd/imgui-node-editor"); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("aiekick/ImGuiFontStudio")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/aiekick/ImGuiFontStudio"); ImGui::LogFinish();} - ImGui::Bullet(); if(ImGui::SmallButton("Add extra keys #2625")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/pull/2625"); ImGui::LogFinish();} + ImGui::Bullet(); if(ImGui::SmallButton("添加额外键 #2625")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/ocornut/imgui/pull/2625"); ImGui::LogFinish();} } ImGui::PopStyleColor(1); ImGui::Spacing(); - ImGui::CollapsingHeader("Frameworks", ImGuiTreeNodeFlags_DefaultOpen); + ImGui::CollapsingHeader("框架", ImGuiTreeNodeFlags_DefaultOpen); { ImGui::Bullet(); if(ImGui::SmallButton("pthom/hello_imgui")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/pthom/hello_imgui"); ImGui::LogFinish();} ImGui::Bullet(); if(ImGui::SmallButton("JamesBoer/ImFrame")) {ImGui::LogToClipboard(); ImGui::LogText("https://github.com/JamesBoer/ImFrame"); ImGui::LogFinish();} @@ -308,20 +306,21 @@ void utils::ShowAboutWindow(bool *child_about) if (hash.length() > 7) hash = hash.substr(0, 7); - ImGui::OpenPopup("About"); + ImGui::OpenPopup("关于"); ImVec2 center = ImGui::GetMainViewport()->GetCenter(); ImGui::SetNextWindowPos(center, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f)); - if (ImGui::BeginPopupModal("About", NULL, ImGuiWindowFlags_AlwaysAutoResize)) + if (ImGui::BeginPopupModal("关于", NULL, ImGuiWindowFlags_AlwaysAutoResize)) { TextCentered("ImStudio"); ImGui::Separator(); - ImGui::Text("Version: %s (%s)", ver.c_str(), hash.c_str()); - ImGui::Text("Source: Raais/ImStudio"); - ImGui::Text("ImGui: 18700 (c71a50d)"); - ImGui::Text("Fmt: 8.0.1 (d141cdb)"); + ImGui::Text("版本:%s (%s)", ver.c_str(), hash.c_str()); + ImGui::Text("源码:Raais/ImStudio"); + ImGui::Text("汉化/CN:noob-xiaoyu/ImStudio-CN"); + ImGui::Text("ImGui:18700 (c71a50d)"); + ImGui::Text("Fmt:8.0.1 (d141cdb)"); ImGui::Separator(); - if (ImGui::Button("Back")) { ImGui::CloseCurrentPopup(); *child_about = false; } + if (ImGui::Button("返回")) { ImGui::CloseCurrentPopup(); *child_about = false; } ImGui::EndPopup(); } @@ -375,4 +374,4 @@ float utils::CenterHorizontal() auto itemWidth = ImGui::GetItemRectSize().x; float PosX = ((windowWidth - itemWidth) * 0.5f); return PosX; -} +} \ No newline at end of file