diff --git a/src/translations/Dyt_zh_CN.ts b/src/translations/Dyt_zh_CN.ts
index d2e2fcdb..32238090 100644
--- a/src/translations/Dyt_zh_CN.ts
+++ b/src/translations/Dyt_zh_CN.ts
@@ -6,22 +6,22 @@
ParamSetting
- 参数设置
+
input param name
- 参数名
+
input param descript
- 参数描述
+
input value
- 值
+
@@ -29,7 +29,7 @@
AddParamSetting
-
+
@@ -92,32 +92,20 @@
ChartPlotMenu
- 图表绘图
+
Run Simu
-
- 2D Curver
- 2D
-
-
- 2D(lg) Curver
- 2D(lg)
-
-
- 3D Curver
- 3D
-
CodeEdtUI
&file
- 文件(&f)
+
@@ -221,7 +209,7 @@
...
- ...
+
@@ -378,22 +366,22 @@
FileManagerMenu
- 文件
+
new workspace
- 新建
+
open workspace
- 打开
+
save workspace
- 保存
+
@@ -404,7 +392,7 @@
open dyt file
- 打开空间
+
@@ -415,7 +403,7 @@
save dyt file
- 保存空间
+
@@ -423,7 +411,7 @@
FitCurveChartView
-
+
@@ -480,40 +468,28 @@
Dyt
-
+
file manager
- 文件
+
+
+
+
+ system manager
+
+
+
+
+ play manager
+
simu manager
-
- view manager
- 视图管理
-
-
- plan manager
- 想定管理
-
-
- dynamic display
- 动态显示
-
-
-
- system manager
- 系统管理
-
-
-
- play manager
- 回放管理
-
MainWindow
@@ -525,7 +501,7 @@
model elements
- 模型元素
+
@@ -661,7 +637,7 @@
ParamSetting
- 参数设置
+
@@ -669,7 +645,7 @@
model elements
- 模型元素
+
@@ -695,7 +671,7 @@
Release Track
- 取消跟踪
+
@@ -730,7 +706,7 @@
Track
- 跟随
+
@@ -745,7 +721,7 @@
Delete
- 删除
+
@@ -761,7 +737,7 @@
PlayManagerMenu
- 回放管理
+
@@ -769,12 +745,12 @@
play
- 播放
+
stop
- 停止
+
@@ -794,12 +770,12 @@
up
- 加速
+
down
- 慢速
+
@@ -811,7 +787,7 @@
question
- 询问
+
@@ -823,14 +799,14 @@
has not workspace
- 未加载空间
+
pause
- 暂停
+
@@ -969,7 +945,7 @@
...
- ...
+
@@ -1171,7 +1147,7 @@
...
- ...
+
@@ -1179,7 +1155,7 @@
Name
- 名称
+
@@ -1192,7 +1168,7 @@
...
- ...
+
@@ -1280,7 +1256,7 @@
Name
- 名称
+
@@ -1301,12 +1277,12 @@
QtOsgViewWidget
-
+
notify
-
+
open dyt file failed
@@ -1322,7 +1298,7 @@
Path
- 路径
+
@@ -1515,7 +1491,7 @@
...
- ...
+
@@ -1572,7 +1548,7 @@
Name
- 名称
+
@@ -1634,22 +1610,22 @@
exit
- 退出
+
ui setting
- ui设置
+
question
- 询问
+
are you sure to exit
- 是否退出
+
@@ -1708,52 +1684,52 @@
New WorkSpace
- 工作空间
+
Name
- 名称
-
-
-
- Path
- 路径
+
input workspace name
- 输入名称
+
+
+
+
+ Path
+
select workspace save path
- 选择路径
+
...
- ...
+
describe
- 描述
+
Sure
- 确定
+
Cancel
- 取消
+
new workspace
- 新建
+
@@ -1764,47 +1740,47 @@
warning
- 警告
+
name or save path is empty, please check it
- 没有选择路径
+
save current workspace?
- 保存当前空间?
+
current path is contains current folder, do you want to overwrite it?
- 当前路径已经包含,是否覆盖?
+
removeRecursively failed
- 创建失败
+
mkpath failed
- 创建路径失败
+
name is exits
- 当前名称已经存在
+
create workSpace failed
- 创建失败
+
-
+
save spaceWork directory
- 选择空间目录
+
diff --git a/src/ui/WorkSpace/WorkSpaceDlg.cpp b/src/ui/WorkSpace/WorkSpaceDlg.cpp
index b67a1e60..5b83447a 100644
--- a/src/ui/WorkSpace/WorkSpaceDlg.cpp
+++ b/src/ui/WorkSpace/WorkSpaceDlg.cpp
@@ -99,7 +99,6 @@ void WorkSpaceDlg::OnSure() {
return;
}
- emit WorkSpaceManager::Get().WorkSpaceChanged(workSpace);
WorkSpaceManager::Get().SetCurrent(workSpace);
accept();
}
diff --git a/src/utils/StringUtils.cpp b/src/utils/StringUtils.cpp
index 522226a2..92a28cbf 100644
--- a/src/utils/StringUtils.cpp
+++ b/src/utils/StringUtils.cpp
@@ -3,6 +3,7 @@
#include
#include
#include
+#include
#include "common/SpdLogger.h"
@@ -32,3 +33,54 @@ std::string StringUtils::Vec4ToString(const osg::Vec4& value) {
<< value.x() << "," << value.y() << "," << value.z() << "," << value.w();
return oss.str();
}
+
+osgEarth::Viewpoint StringUtils::StringToViewpoint(const std::string& name, const std::string& value) {
+ std::stringstream ss(value);
+ std::vector values;
+ double v;
+
+ while (ss >> v) {
+ values.push_back(v);
+ if (ss.peek() == ',') {
+ ss.ignore();
+ }
+ }
+
+ if (values.size() != 6) {
+ return osgEarth::Viewpoint(name.c_str(), 120.000000, 25.000000, 100.000000, -2.500000, -90.000000, 8200000.000000);
+ }
+
+ double longitude = values[0];
+ double latitude = values[1];
+ double altitude = values[2];
+ double heading = values[3];
+ double pitch = values[4];
+ double range = values[5];
+
+ osgEarth::Viewpoint viewpoint(name.c_str(), longitude, latitude, altitude, heading, pitch, range);
+
+ return viewpoint;
+}
+
+std::string StringUtils::ViewpointToString(const osgEarth::Viewpoint& value) {
+ const auto& location = value.focalPoint();
+ double longitude = location->x();
+ double latitude = location->y();
+ double altitude = location->z();
+
+ double heading = value.heading().get();
+ double pitch = value.pitch().get();
+ double range = value.range().get();
+
+ std::stringstream ss;
+ ss << std::fixed << std::setprecision(6);
+
+ ss << longitude << ", "
+ << latitude << ", "
+ << altitude << ", "
+ << heading << ", "
+ << pitch << ", "
+ << range;
+
+ return ss.str();
+}
diff --git a/src/utils/StringUtils.h b/src/utils/StringUtils.h
index 9839cac3..57b4741d 100644
--- a/src/utils/StringUtils.h
+++ b/src/utils/StringUtils.h
@@ -4,6 +4,7 @@
#include
#include
+#include
class StringUtils {
public:
@@ -11,4 +12,6 @@ public:
static std::string Vec3ToString(const osg::Vec3& value);
static osg::Vec4 StringToVec4(const char* value);
static std::string Vec4ToString(const osg::Vec4& value);
+ static osgEarth::Viewpoint StringToViewpoint(const std::string& name, const std::string& value);
+ static std::string ViewpointToString(const osgEarth::Viewpoint& value);
};
\ No newline at end of file
diff --git a/src/viewer/QtOsgViewWidget.cpp b/src/viewer/QtOsgViewWidget.cpp
index 3146b90e..68fbb22a 100644
--- a/src/viewer/QtOsgViewWidget.cpp
+++ b/src/viewer/QtOsgViewWidget.cpp
@@ -78,8 +78,26 @@ void QtOsgViewWidget::Initialize(void) {
osgEarth::Util::EarthManipulator* manipulator = new osgEarth::Util::EarthManipulator;
- osgEarth::Viewpoint vp("home", 107.85, 32.35, 100.0, -2.50, -90.0, 1.5e7);
- manipulator->setHomeViewpoint(vp, 3.0);
+ connect(&WorkSpaceManager::Get(), &WorkSpaceManager::WorkSpaceChanged, [](WorkSpace* workspace) {
+ LOG_INFO("WorkSpaceChanged");
+ if (nullptr == workspace) {
+ return;
+ }
+ OsgCameraManipulator* manipulator = OsgViewer::Get().GetView()->GetCameraManipulator();
+ if (nullptr == manipulator) {
+ LOG_WARN("manipulator is nullptr");
+ return;
+ }
+ osgGA::CameraManipulator* gaManipulator = manipulator->GetManipulator();
+ osgEarth::Util::EarthManipulator* ccm = dynamic_cast(gaManipulator);
+ if (nullptr == ccm) {
+ LOG_WARN("ccm is nullptr");
+ return;
+ }
+
+ ccm->setViewpoint(workspace->GetHomeViewpoint(), 3.0);
+ }
+ );
OsgCameraManipulator* cameraManipulator = new OsgCameraManipulator(manipulator, this);
diff --git a/src/workspace/WorkSpace.cpp b/src/workspace/WorkSpace.cpp
index 384f2942..d73a4d49 100644
--- a/src/workspace/WorkSpace.cpp
+++ b/src/workspace/WorkSpace.cpp
@@ -23,12 +23,14 @@ Q_DECLARE_METATYPE(WorkSpace*)
WorkSpace::WorkSpace(QObject* parent) noexcept
: QObject(parent) {
uuid_ = QUuid::createUuid().toString();
+ homeViewpoint_ = osgEarth::Viewpoint("home", 120.000000, 25.000000, 100.000000, -2.500000, -90.000000, 8200000.000000);
}
WorkSpace::WorkSpace(const QString& path, QObject* parent)
: QObject(parent)
, path_(path){
uuid_ = QUuid::createUuid().toString();
+ homeViewpoint_ = osgEarth::Viewpoint("home", 120.000000, 25.000000, 100.000000, -2.500000, -90.000000, 8200000.000000);
}
const QString WorkSpace::GetDir() const {
diff --git a/src/workspace/WorkSpace.h b/src/workspace/WorkSpace.h
index 044ab9ab..003891ae 100644
--- a/src/workspace/WorkSpace.h
+++ b/src/workspace/WorkSpace.h
@@ -3,6 +3,8 @@
#include