diff --git a/examples/Cuda/QtGUI/CMakeLists.txt b/examples/Cuda/QtGUI/CMakeLists.txt index d61bf9a8dfa5ca554416127cb897ee932e862be4..e5cfdfdb2e8ccc3979c6b6eaf77a540e1a62d019 100644 --- a/examples/Cuda/QtGUI/CMakeLists.txt +++ b/examples/Cuda/QtGUI/CMakeLists.txt @@ -22,3 +22,51 @@ if(PERIDYNO_Qt5_GUI) endif() ENDFOREACH() endif() + +### translation +find_package(Qt5 COMPONENTS LinguistTools) +get_target_property(TS_SRC_GUI QtGUI SOURCES) + +function(get_sources in_ts in_filter) + foreach(_target ${ARGN}) + if(TARGET ${_target}) + get_target_property(_srcs ${_target} SOURCES) + if(${in_filter}) + list(FILTER _srcs EXCLUDE REGEX "${in_filter}") + endif() + list(APPEND ${in_ts} ${_srcs}) + endif() + endforeach() + set(${in_ts} "${${in_ts}}" PARENT_SCOPE) +endfunction() + + +get_target_property(TS_FILES QtGUI TS_FILES) + +get_sources(NODE_SRCS "" DataProcess PreprocessNode Framework Interaction Topology GLRenderEngine) + +set(NODE_SRC_LIST_FILE "${CMAKE_CURRENT_BINARY_DIR}/node_src.list") +set(_node_srcs) +foreach(_src ${NODE_SRCS}) + set(_node_srcs "${_src}\n${_node_srcs}") +endforeach() +file(WRITE ${NODE_SRC_LIST_FILE} "${_node_srcs}") + +set(TS_SRC_NODE "${CMAKE_CURRENT_BINARY_DIR}/ts_src_node.h") +add_custom_command( + OUTPUT ${TS_SRC_NODE} + COMMAND Qt_NodeTranslator -o "${TS_SRC_NODE}" "${NODE_SRC_LIST_FILE}" + DEPENDS ${NODE_SRCS} Qt_NodeTranslator + COMMENT "Generate lupdate file for node" + VERBATIM +) + +get_sources(TS_INPUTS "\.qm$" QtGUI DataPropertyUi) +qt5_create_translation(QM_FILES "${TS_INPUTS}" "${TS_SRC_NODE}" "${TS_FILES}") +add_custom_target(Qt_UpdateTranslation + DEPENDS QtGUI ${QM_FILES} + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QM_FILES}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}$" + COMMENT "Copying qm files" +) +set_target_properties(Qt_UpdateTranslation PROPERTIES FOLDER "Rendering/GUI/Qt") +### diff --git a/examples/Cuda/QtGUI/Qt_Prepostprocess/CMakeLists.txt b/examples/Cuda/QtGUI/Qt_Prepostprocess/CMakeLists.txt index 34a6b866906543466a8468541659c390ab2e779a..cf917dd7477776565bd73790bc8e9750f3164431 100644 --- a/examples/Cuda/QtGUI/Qt_Prepostprocess/CMakeLists.txt +++ b/examples/Cuda/QtGUI/Qt_Prepostprocess/CMakeLists.txt @@ -2,57 +2,9 @@ add_definitions(-DUSE_COMPUTEFILE_OPERATION) endif() -# generate translation -get_target_property(TS_SRC_GUI QtGUI SOURCES) -get_target_property(TS_SRC_NODEUI DataPropertyUi SOURCES) - -find_package(Qt5 COMPONENTS LinguistTools) -set(TS_FILES Languages/peridyno_zh.ts) -set(QM_FILES) -set(NODE_SRCS) - -foreach(_target DataProcess PreprocessNode Framework Interaction Topology GLRenderEngine) - get_target_property(_srcs ${_target} SOURCES) - list(APPEND NODE_SRCS ${_srcs}) -endforeach() - -set(NODE_SRC_LIST_FILE "${CMAKE_CURRENT_BINARY_DIR}/node_src.list") -set(_node_srcs) -foreach(_src ${NODE_SRCS}) - set(_node_srcs "${_src}\n${_node_srcs}") -endforeach() -file(WRITE ${NODE_SRC_LIST_FILE} "${_node_srcs}") - -set(TS_SRC_NODE "${CMAKE_CURRENT_BINARY_DIR}/ts_src_node.h") -add_custom_command( - OUTPUT ${TS_SRC_NODE} - COMMAND Qt_NodeTranslator -o "${TS_SRC_NODE}" "${NODE_SRC_LIST_FILE}" - DEPENDS ${NODE_SRCS} Qt_NodeTranslator - COMMENT "Generate lupdate file for node" - VERBATIM -) - -set(QM_OUT_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}) -qt5_create_translation(QM_FILES "${TS_SRC_GUI}" "${TS_SRC_NODEUI}" "${TS_SRC_NODE}" "${TS_FILES}") -add_custom_target(Qt_UpdateTranslation - DEPENDS ${QM_FILES} - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QM_FILES}" "${QM_OUT_DIR}" - COMMENT "Copying qm files" -) - set(LIB_DEPENDENCY QtGUI PreprocessNode #IOFile ) add_example(Qt_Prepostprocess Qt LIB_DEPENDENCY) - -set(QM_FILES_SOURCE) -qt5_add_translation(QM_FILES_SOURCE "${TS_FILES}") -target_sources(Qt_Prepostprocess PRIVATE ${QM_FILES_SOURCE}) -add_custom_command( - TARGET Qt_Prepostprocess - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QM_FILES_SOURCE}" "${QM_OUT_DIR}" - COMMENT "Copying qm files" -) diff --git a/examples/Cuda/QtGUI/Qt_Prepostprocess/main.cpp b/examples/Cuda/QtGUI/Qt_Prepostprocess/main.cpp index c497c205559ea2fc2637fbc2e456f8563fa0ecd4..a10c207e18d8680a0907c27b1d7697ca60907e2b 100644 --- a/examples/Cuda/QtGUI/Qt_Prepostprocess/main.cpp +++ b/examples/Cuda/QtGUI/Qt_Prepostprocess/main.cpp @@ -42,10 +42,6 @@ int main() QtApp app; - QTranslator translator; - assert(translator.load(QString("peridyno_%1").arg("zh"), qApp->applicationDirPath())); - qApp->installTranslator(&translator); - app.setSceneGraph(createScene()); app.initialize(1366, 800); app.mainLoop(); diff --git a/src/Rendering/GUI/QtGUI/CMakeLists.txt b/src/Rendering/GUI/QtGUI/CMakeLists.txt index 480655a83d19fcb95aa2bba00821cd80d40de36c..a8cc82fc41492cbb413813ba21c55377543c0cef 100644 --- a/src/Rendering/GUI/QtGUI/CMakeLists.txt +++ b/src/Rendering/GUI/QtGUI/CMakeLists.txt @@ -4,6 +4,7 @@ add_definitions(-DTT_BUILDING_DLL) set(LIB_NAME QtGUI) set(LIB_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}") +set(TS_FILES "${LIB_SRC_DIR}/Languages/zh.ts") set(CMAKE_AUTOMOC ON) # 弢启自动moc功能 set(CMAKE_AUTOUIC ON) @@ -57,7 +58,7 @@ endif() file(RELATIVE_PATH PROJECT_PATH_REL "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") set_target_properties(${LIB_NAME} PROPERTIES FOLDER "Rendering/GUI") set_target_properties(${LIB_NAME} PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON) - +set_target_properties(${LIB_NAME} PROPERTIES TS_FILES "${TS_FILES}") set_target_properties(${LIB_NAME} PROPERTIES OUTPUT_NAME "dyno${LIB_NAME}-${PERIDYNO_LIBRARY_VERSION}") @@ -126,3 +127,16 @@ add_executable(Qt_NodeTranslator NodeTranslator/NodeTranslator.cpp ) target_link_libraries(Qt_NodeTranslator PRIVATE Qt5::Core) +set_target_properties(Qt_NodeTranslator PROPERTIES FOLDER "Rendering/GUI/Qt") + +find_package(Qt5 COMPONENTS LinguistTools) +set(QM_FILES_SOURCE) + +qt5_add_translation(QM_FILES_SOURCE "${TS_FILES}") +target_sources(QtGUI PRIVATE ${QM_FILES_SOURCE}) +add_custom_command( + TARGET QtGUI + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QM_FILES_SOURCE}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$" + COMMENT "Copying qm files" +) diff --git a/examples/Cuda/QtGUI/Qt_Prepostprocess/Languages/peridyno_zh.ts b/src/Rendering/GUI/QtGUI/Languages/zh.ts similarity index 69% rename from examples/Cuda/QtGUI/Qt_Prepostprocess/Languages/peridyno_zh.ts rename to src/Rendering/GUI/QtGUI/Languages/zh.ts index 3420318147cb184b3584fae704824bbab800efa6..682beab8fcb1ce971523d9431f6a60c79898108a 100644 --- a/examples/Cuda/QtGUI/Qt_Prepostprocess/Languages/peridyno_zh.ts +++ b/src/Rendering/GUI/QtGUI/Languages/zh.ts @@ -4,18 +4,18 @@ PFilterWidget - - + + skip me 跳过 - + Node Search 节点搜索 - + Filter 过滤器 @@ -23,22 +23,22 @@ Qt::QtModuleFlowWidget - + New.. 新建.. - + Save.. 保存.. - + Load.. 打开.. - + Clear.. 清除.. @@ -46,8 +46,8 @@ Qt::QtModuleWidget - - + + Missing or incorrect inputs 输入缺失或者错误 @@ -55,22 +55,22 @@ Qt::QtNodeFlowWidget - + New.. 新建.. - + Save.. 保存.. - + Load.. 打开.. - + Clear.. 清除.. @@ -78,7 +78,7 @@ Qt::QtNodeWidget - + Missing or incorrect inputs 输入缺失或者错误 @@ -86,28 +86,28 @@ dyno::MeshScriptUi - + Text Files(*.*) 文本文件(*.*) - + Read File 读取文件 - + Cannot open file: %1 无法打开文件:%1 - + Path 路径 - + You do not select any file. 你还没有选择任何文件. @@ -115,92 +115,92 @@ dyno::PDockWidget - + Closable 可关闭的 - + Movable 可移动的 - + Floatable 可悬浮的 - + Vertical title bar 垂直标题栏 - + Floating 悬浮 - + Allow on Left 允许左部放置 - + Allow on Right 允许右部放置 - + Allow on Top 允许上部放置 - + Allow on Bottom 允许底部放置 - + Place on Left 放置到左部 - + Place on Right 放置到右部 - + Place on Top 放置到上部 - + Place on Bottom 放置到底部 - + Tab into Tab into_翻译 - + Split horizontally into 水平划分 - + Split vertically into 垂直划分 - + Modified Modified_翻译 - + Raise Raise_翻译 @@ -208,109 +208,109 @@ dyno::PIODockWidget - + IO Dock Widget - + Closable 可关闭的 - + Movable 可移动的 - + Floatable 可悬浮的 - + Vertical title bar 垂直标题栏 - + Floating 悬浮 - + Allow on Left 允许左部放置 - + Allow on Right 允许右部放置 - + Allow on Top 允许上部放置 - + Allow on Bottom 允许底部放置 - + Place on Left 放置到左部 - + Place on Right 放置到右部 - + Place on Top 放置到上部 - + Place on Bottom 放置到底部 - + Tab into Tab into_翻译 - + Split horizontally into 水平划分 - + Split vertically into 垂直划分 - + Modified Modified_翻译 - + Raise Raise_翻译 - - + + Log 日志 - - + + Console 控制台 @@ -318,89 +318,89 @@ dyno::PMainToolBar - + Rendering 渲染 - + Particle Renderer 粒子渲染器 - + Surface Renderer 表面渲染器 - + Open New ... 打开新... - - - + + + Xml Files (*.xml) Xml 文件 (*.xml) - + Save ... 保存... - + Save As ... 另存为... - + File 文件 - + New 新建 - + Open... 打开... - + Save 保存 - + Save As... 另存为... - + Close 关闭 - + Close All 关闭所有 - + Edit 编辑 - + Log 日志 - + Settings 设置 @@ -408,70 +408,70 @@ dyno::PMainWindow - + Incremental integrated high performance computing platform 增量集成高性能计算平台 - + Status Bar 状态栏 - + Save 保存 - + Do you want to save your changes? 你想要保存你的修改吗? - + About 关于 - + Tool Bar 工具栏 - + Version 版本 - + PeriDyno Studio - + Module Flow Editor 模块流编辑器 - - + + Node Editor 节点编辑器 - + Node 节点 - - + + Property Editor 属性编辑器 - - + + Output Message 输出信息 @@ -479,8 +479,8 @@ dyno::PModuleEditor - - + + Property 属性 @@ -488,27 +488,27 @@ dyno::PModuleEditorToolBar - + &Save... &保存... - + &Update... &更新... - + &Realign... &重排... - + Animation 动画 - + Rendering 渲染 @@ -516,32 +516,32 @@ dyno::PPropertyWidget - + Control Variables 控制变量 - + State Variables 状态变量 - + Control Variable 控制变量 - + State Variable 状态变量 - + Name 名称 - + Output 输出 @@ -549,33 +549,33 @@ dyno::QFilePathWidget - + Open File 打开文件 - + Text Files(*.*) 文本文件(*.*) - + Read File 读取文件 - + Cannot open file: %1 无法打开文件:%1 - + Path 路径 - + You do not select any file. 你还没有选择任何文件. @@ -584,7 +584,7 @@ dyno::QRampWidget - + Squard squard_翻译 @@ -592,7 +592,7 @@ dyno::ValueDialog - + Property Editor 属性编辑器 @@ -600,29 +600,30 @@ mGravityUi - + + Gravity 重力 - + Z - + Y - + X - - - + + + 0 @@ -630,42 +631,42 @@ mPrepostProcessUi - + 前处理窗口 - + 材料 - + 截面 - + 单元 - + 工况 - + 连接 - + 载荷 - + 边界 @@ -673,263 +674,263 @@ node - + AccelerationStructure 加速结构 - + AllPointSet 所有点集 - + Alpha 透明度 - + BaseColor 基础颜色 - + CacheEvent ok 缓存事件 - + CalculateMaxPoint 计算最大点 - + CalculateMaximum 计算最大值 - + CalculateMinPoint 计算最小值 - + CalculateMinimum 计算最小值 - + CallSolver - + Case 工况 - + Case_Output 工况输出 - + ChooseScalar 选择标量 - + CollidablePoints 可撞点 - + CollidableSDF 可碰撞 SDF - + CollidableShape 碰撞形状 - + CollisionDetectionBroadPhase CollisionDetectionBroadPhase_翻译 - + CollisionMask 碰撞遮盖 - + CollisionSDF 碰撞 SDF - + CollistionDetectionBoundingBox CollistionDetectionBoundingBox_翻译 - + Color 颜色 - + ColorMapping 颜色映射 - + ColorMode 颜色模式 - + Contact 常量 - + ContactList 常量列表 - + Contacts 常量 - + CustomModule 自定义模块 - + DataField 数据集 - + DataVec 数据向量 - + DiscreteElements 离散单元 - + DiscreteElementsToTriangleSet 离散单元到三角集 - + EdgeIndex 边索引 - + EdgeInteraction 边交互 - + EdgeOtherSize 边的其他大小 - + EdgePickerNode 边拾取节点 - + EdgePickingType 边的拾取类型 - + EdgeSelectedSize 已选择边的大小 - + EdgeSet 边集 - + ElapsedTime 运行时间 - + Element 单元 - + End 结束 - + Field filed_翻译 - + FileType 文件类型 - + ... - + All 所有 - + BVH - + Both 共同 - + C - + CM_Object CM 对象 - + CM_Vertex CM 顶点 - + CYLINDER CYLINDER_翻译 - + Click 点击 @@ -938,867 +939,867 @@ 颜色板 - + Drag 拖拽 - + Edge - + Filepath 文件路径 - + Float 单精度浮点 - + FloodAngle floodangle_翻译 - + ForceModule 力模块 - + FramStep 时间步 - + Frame - + FrameNumber 帧数 - + GLCommonPointVisualNode GL通用点可视节点 - + GLElementVisualModule GL单元可视模块 - + GLPointVisualModule GL点可视模块 - + GLPointVisualNode GL点可视节点 - + GLSurfaceVisualModule GL表面可视模块 - + GLSurfaceVisualNode GL表面可视节点 - + GLWireFrameVisualNode GLWireFramVisualNode_翻译 - + GLWireframeVisualModule GLWireFramVisualModule_翻译 - + GeoData Geo 数据 - + GeoVisualSet Geo 可视集 - + GmeshMeshing Gmesh 网格化 - + GridSet 网格集 - + GridSizeLimit 网格尺寸限制 - + GridSpacing 网格spacing - + Heat Heat_翻译 - + HeightField heightfiled_翻译 - + HexahedronSet 六面体集 - + InGeoFile InGeo 文件 - + InitialEdgeSet 初始边集 - + InitialPointSet 初始点集 - + InitialShape 初始形状 - + InitialTriangleSet 初始三角集 - + InstanceColor 实体颜色 - + InstanceTransform 实体变换 - + Int 整型 - + InteractionRadius 交互半径 - + IsoValue Iso 值 - + Jet Jet_翻译 - + JointTree Joint 树 - + LINE 线 - + LevelSet levelset翻译 - + LineWidth 线宽 - + Location 位置 - + Lower Lower_翻译 - + Magnitude 震级 - + MarchingCubes MarchingCubes_翻译 - + Mat Mat_翻译 - + Material 材料 - + Max 最大 - + MeshPartReader 网格部件读取器 - + MeshProcess 网格过程 - + MeshScript 网格脚本 - + Metallic 金属度 - + Min 最小 - + MultiSelectionType 多选类型 - + MxBoundaryCondition 迈曦边界条件 - + MxConnect - + MxContourNode 迈曦ContourNode - + MxLoad 迈曦荷载 - + MxShowGeo 迈曦 ShowGeo - + Mx_BC Mx_BC_翻译 - + Mx_Element Mx_Element_翻译 - + Mx_Load Mx_Load_翻译 - + NeighborElementQuery NeighborElementQuery_翻译 - + NeighborIds neigherids_翻译 - + NeighborPointQuery NeighborPointQuery_翻译 - + NeighborTriQueryOctree NeighborTriQueryOctree_翻译 - + Norm norm_翻译 - + OR OR_翻译 - + Object 对象 - + Octree 八叉树 - + Other 其他 - + OtherEdgeSet 其他边集 - + OtherPointSet 其他点集 - + OtherTriangleSet 其他三角集 - + OutputPath 输出路径 - + PickData 拾取数据 - + PickerNode 节点拾取器 - + PickingElementType 拾取单元类型 - + PickingType 拾取类型 - + Plane 平面 - + Point - + PointIndex 点索引 - + PointInteraction 交互点 - + PointOtherSize pointothersize_翻译 - + PointPickerNode 点拾取节点 - + PointPickingType 点拾取类型 - + PointSelectedSize 已选择点的尺寸 - + PointSet 点集 - + PointSetToTriangleSet 点集到三角集 - + PointSize 点尺寸 - + Points - + Position 位置 - + Prefix 前缀 - + PrepostProcess - + PrintFloat PrintFloat_翻译 - + PrintInt - + PrintUnsigned - + ProcessGeo 处理Geo - + QuadSet 四面集 - + Radius 半径 - + ReSet 重置 - + ReadGeoOperation 读取Geo操作 - + ReadMeshFile - + RenderMode 渲染模式 - + Rotation 旋转 - + Roughness 粗糙度 - + Scalar 标量 - + ScalarArray 标量数组 - + Scale 缩放 - + ScriptData 脚本数据 - + Section 界面 - + SectionData 截面数据 - + SelectedEdgeSet 已选择边集 - + SelectedPointSet 已选择点集 - + SelectedTriangleSet 已选择三角集 - + Shape 形状 - + SizeLimit 大小限制 - + Solver 求解器 - + Source - + SparseNeighborPointQuery SparseNeighborPointQuery_翻译 - + Start 开始 - + Sur2PointIndex sur2pointindex_翻译 - + Surface 表面 - + SurfaceInteraction 表面交互 - + SurfacePickingType 面拾取类型 - + T - + Target 目标 - + TestMesh 测试网格 - + TetrahedronSet 四面体集 - + TimeStep 时间步 - + ToggleFlood Flood 开关 - + ToggleIndexOutput 索引输出开关 - + ToggleMultiSelect 多选开关 - + TogglePicker 拾取开关 - + ToggleQuad Quad开关 - + ToggleVisibleFilter VisibleFilter开关 - + Topo2Triangle Topo2Triangle_翻译 - + Topo2VTK Topo2VTK_翻译 - + Topology 拓扑 - + TopologyModule 拓扑模块 - + Translation 位移 - + TriPosition triposition_翻译 - + TriQuadIndex TriQuad索引 - + TriangleIndex 三角索引 - + TriangleSet 三角集 - + Triangles 三角 - + Type 类型 - + Unsigned unsined_翻译 - + UpdateRenderData 更新渲染数据 - + Upper upper_翻译 - + UseVertexNormal 使用顶点法线 - + Vec 向量 - + Vector 向量 - + VertexNormal 顶点法线 - + VirtualModule 可视节点 - + Visible 可见 - + VolumeClipper - + VtkFilepath vtk 文件路径 - + VtkParser Vtk解析器 - + WriteGeoOperation 写入Geo操作 - + XOR XOR_翻译 - + brep brep_翻译 - + enum_name - + iges iges_翻译 - + lower lower_翻译 - + name 名称 - + pointSet 点集 - + step - + uint - + upper upper_翻译 - + Out 输出 - + States 状态 - + Port Port_翻译 diff --git a/src/Rendering/GUI/QtGUI/QtApp.cpp b/src/Rendering/GUI/QtGUI/QtApp.cpp index 0534567aa6193d6be10dd00ce55cc28ff9a80771..222776854e6ab6f2ac7308bfbef9155324f37156 100644 --- a/src/Rendering/GUI/QtGUI/QtApp.cpp +++ b/src/Rendering/GUI/QtGUI/QtApp.cpp @@ -2,6 +2,8 @@ #include #include #include "QtApp.h" + +#include #include "PMainWindow.h" #include "POpenGLWidget.h" #include "Log.h" @@ -37,6 +39,10 @@ namespace dyno { void QtApp::initialize(int width, int height, bool usePlugin) { + auto translator = new QTranslator(); + translator->load(QString("zh"), qApp->applicationDirPath()); + qApp->installTranslator(translator); + //A hack to address the slow launching problem if (usePlugin)