GrpcPrint/PrintC/UI/UIWin.cpp

1889 lines
75 KiB
C++
Raw Normal View History

2024-04-01 18:26:14 +08:00
#include "UIWin.h"
#include "../external/imgui/imgui.h"
#include "../external/imgui/imgui_impl_glfw.h"
#include "../external/imgui/imgui_impl_opengl3.h"
#include "../external/imgui/imgui_custom.h"
#include "../external/imgui/imgui_plot.h"
#include "../external/imgui/imguidatechooser.h"
#include "../external/imgui/imgui_context_extensions.h"
#include <time.h>
#include "../global.h"
#include "../utils/StringHelper.h"
#include "../utils/TimeHelper.h"
#include "../ChartletManager.h"
//#include "FileDialog.h"
#include <cstdlib>
#include <ctime>
2024-04-09 16:53:02 +08:00
#include "ICON.h"
2024-04-01 18:26:14 +08:00
#include "../utils/sha1.hpp"
#include "../utils/MathHelper.h"
#include "../utils/LineFit.h"
//#include "../purifier/XTPurifier.h"
#include "../config/bean/SystemBase.h"
#include "../SystemInfo.h"
#include "../LanguageManager.h"
#include "../Logger.h"
#include "../Toast.h"
//#include "../PLC/Axis.h"
#include "../external/imgui/implot.h"
#include "../utils/CryptHelper.h"
#include "../utils/ImageHelper.h"
#include "../external/stb/stb_image.h"
2024-04-02 17:45:03 +08:00
2024-04-09 16:53:02 +08:00
UserType g_Admin;
2024-04-02 17:45:03 +08:00
2024-04-01 18:26:14 +08:00
2024-04-02 17:45:03 +08:00
UIWin::UIWin()
: m_TextureMap(nullptr){
2024-04-01 18:26:14 +08:00
2024-04-02 17:45:03 +08:00
2024-04-01 18:26:14 +08:00
}
UIWin::~UIWin() {
2024-04-02 17:45:03 +08:00
m_TextureMap = nullptr;
2024-04-01 18:26:14 +08:00
}
2024-04-09 16:53:02 +08:00
void UIWin::GLFWMouseWheelCallback(GLFWwindow* window, double xoffset, double yoffset)
{
UIWin* _this = (UIWin*)glfwGetWindowUserPointer(window);
if (!_this->m_LockScreenWinShow) {
EnterCriticalSection(&_this->m_IdleTimeCS);
_this->m_IdleTime = 0;
LeaveCriticalSection(&_this->m_IdleTimeCS);
}
#if 0
if (ImGui::IsAnyWindowHovered())
return;
if (_this->m_Renderer)
_this->m_Renderer->MouseWheelCallback(xoffset, yoffset);
#endif
}
void UIWin::GLFWMousePositionCallback(GLFWwindow* window, double xpos, double ypos)
{
UIWin* _this = (UIWin*)glfwGetWindowUserPointer(window);
if (!_this->m_LockScreenWinShow) {
EnterCriticalSection(&_this->m_IdleTimeCS);
_this->m_IdleTime = 0;
LeaveCriticalSection(&_this->m_IdleTimeCS);
}
/*ImGui::ScopedContextSwitch outer_scope(_this->m_OskCtx);
ImGuiIO &oskIO = ImGui::GetIO();
oskIO.AddMousePosEvent(xpos, ypos);
if (!oskIO.WantCaptureMouse) {
ImGui::ScopedContextSwitch inner_scope(_this->m_MainCtx);
ImGuiIO& io = ImGui::GetIO();
if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable)
{
int window_x, window_y;
glfwGetWindowPos(window, &window_x, &window_y);
xpos += window_x;
ypos += window_y;
}
io.AddMousePosEvent((float)xpos, (float)ypos);
//ImGui::GetIO().AddMousePosEvent(xpos, ypos);
}*/
// Same z-layering as OnMouseClick(), with keyboard having priority
#if 0
if (ImGui::IsAnyWindowHovered())
return;
if (_this->m_Renderer) {
bool ctrl = glfwGetKey(window, GLFW_KEY_LEFT_CONTROL) == GLFW_PRESS || glfwGetKey(window, GLFW_KEY_RIGHT_CONTROL) == GLFW_PRESS;
bool shit = glfwGetKey(window, GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS || glfwGetKey(window, GLFW_KEY_RIGHT_SHIFT) == GLFW_PRESS;
_this->m_Renderer->MousePositionCallback(xpos, ypos, ctrl, shit);
}
#endif
}
void UIWin::GLFWMouseButtonCallback(GLFWwindow* window, int button, int action, int mods)
{
UIWin* _this = (UIWin*)glfwGetWindowUserPointer(window);
if (!_this->m_LockScreenWinShow) {
EnterCriticalSection(&_this->m_IdleTimeCS);
_this->m_IdleTime = 0;
LeaveCriticalSection(&_this->m_IdleTimeCS);
}
/*ImGui::ScopedContextSwitch outer_scope(_this->m_OskCtx);
ImGuiIO &oskIO = ImGui::GetIO();
oskIO.AddMouseButtonEvent(button, action == GLFW_PRESS);
if (!oskIO.WantCaptureMouse) {
ImGui::ScopedContextSwitch inner_scope(_this->m_MainCtx);
ImGui::GetIO().AddMouseButtonEvent(button, action == GLFW_PRESS);
}*/
#if 0
if (ImGui::IsAnyWindowHovered())
return;
if (_this->m_Renderer) {
double xpos, ypos;
glfwGetCursorPos(window, &xpos, &ypos);
_this->m_Renderer->MouseButtonCallback(xpos, ypos, button, action, mods == GLFW_MOD_CONTROL, mods == GLFW_MOD_SHIFT, false);
}
#endif
}
void UIWin::GLFWKeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
UIWin* _this = (UIWin*)glfwGetWindowUserPointer(window);
if (!_this->m_LockScreenWinShow) {
EnterCriticalSection(&_this->m_IdleTimeCS);
_this->m_IdleTime = 0;
LeaveCriticalSection(&_this->m_IdleTimeCS);
}
}
2024-04-01 18:26:14 +08:00
bool UIWin::Init()
{
2024-04-02 17:45:03 +08:00
m_TextureMap = &ChartletManager::GetInstance()->m_TextureMap;
2024-04-18 11:59:51 +08:00
m_Controller = DataHandle::Instance()->GetController();
2024-04-01 18:26:14 +08:00
//MetaData::InitTypeMap();
g_Admin = USER;
m_IsShowInitError = true;
2024-04-18 11:59:51 +08:00
//if (!m_Controller->Init())return false;
2024-04-01 18:26:14 +08:00
if (!glfwInit())return false;
const char* glsl_version = "#version 130";
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
_setmaxstdio(5000);
2024-04-02 17:45:03 +08:00
//GetVersion();
2024-04-01 18:26:14 +08:00
m_GLFWMon = glfwGetPrimaryMonitor();
m_GLFWMode = glfwGetVideoMode(m_GLFWMon);
glfwWindowHint(GLFW_RED_BITS, m_GLFWMode->redBits);
glfwWindowHint(GLFW_GREEN_BITS, m_GLFWMode->greenBits);
glfwWindowHint(GLFW_BLUE_BITS, m_GLFWMode->blueBits);
glfwWindowHint(GLFW_REFRESH_RATE, m_GLFWMode->refreshRate);
glfwWindowHint(GLFW_DECORATED, GL_FALSE);
#ifdef _DEBUG
m_IsFullScreen = false;
#else
2024-04-02 17:45:03 +08:00
m_IsFullScreen = false;
2024-04-01 18:26:14 +08:00
#endif
if (m_IsFullScreen) {
m_GLFWWin = glfwCreateWindow(m_GLFWMode->width, m_GLFWMode->height, "HBDSystem1000", NULL, NULL);
}
else {
int wwidth = m_GLFWMode->width * 4 / 5;
int wheight = m_GLFWMode->height * 4 / 5;
m_GLFWWin = glfwCreateWindow(m_GLFWMode->width, m_GLFWMode->height, "HBDSystem1000", NULL, NULL);
glfwSetWindowMonitor(m_GLFWWin, NULL, (m_GLFWMode->width - wwidth) / 2, (m_GLFWMode->height - wheight) / 2, wwidth, wheight, m_GLFWMode->refreshRate);
}
if (m_GLFWWin == NULL) return false;
2024-04-09 16:53:02 +08:00
ChartletManager::GetInstance()->LoadLogoIcon();
if (ChartletManager::GetInstance()->HasIcoLogo())
2024-04-01 18:26:14 +08:00
{
int width = 0, height = 0, comp = 0;
2024-04-18 11:59:51 +08:00
if (m_Controller->m_MachineCfg->m_I18NLang == "zh_CN")
2024-04-09 16:53:02 +08:00
{
TextureBean* l16 = ChartletManager::GetInstance()->m_AppLogo16;
TextureBean* l32 = ChartletManager::GetInstance()->m_AppLogo32;
TextureBean* l48 = ChartletManager::GetInstance()->m_AppLogo48;
icons[0].pixels = stbi_load_from_memory(l16->m_PData, l16->m_DataLen, &width, &height, &comp, 4);
icons[1].pixels = stbi_load_from_memory(l32->m_PData, l32->m_DataLen, &width, &height, &comp, 4);
icons[2].pixels = stbi_load_from_memory(l48->m_PData, l48->m_DataLen, &width, &height, &comp, 4);
}
else {
TextureBean* l16 = ChartletManager::GetInstance()->m_AppLogo16En;
TextureBean* l32 = ChartletManager::GetInstance()->m_AppLogo32En;
TextureBean* l48 = ChartletManager::GetInstance()->m_AppLogo48En;
icons[0].pixels = stbi_load_from_memory(l16->m_PData, l16->m_DataLen, &width, &height, &comp, 4);
icons[1].pixels = stbi_load_from_memory(l32->m_PData, l32->m_DataLen, &width, &height, &comp, 4);
icons[2].pixels = stbi_load_from_memory(l48->m_PData, l48->m_DataLen, &width, &height, &comp, 4);
}
2024-04-01 18:26:14 +08:00
}
2024-04-09 16:53:02 +08:00
glfwSetWindowIcon(m_GLFWWin, 3, icons);
2024-04-01 18:26:14 +08:00
glfwSetWindowUserPointer(m_GLFWWin, this);
2024-04-09 16:53:02 +08:00
glfwSetMouseButtonCallback(m_GLFWWin, GLFWMouseButtonCallback);
glfwSetCursorPosCallback(m_GLFWWin, GLFWMousePositionCallback);
glfwSetScrollCallback(m_GLFWWin, GLFWMouseWheelCallback);
glfwSetKeyCallback(m_GLFWWin, GLFWKeyCallback);
2024-04-01 18:26:14 +08:00
glfwMakeContextCurrent(m_GLFWWin);
glfwSwapInterval(1);
m_PrevRenderer = new VLRenderer;
m_Renderer = new VLRenderer;
m_PrevRenderer->Init();
m_Renderer->Init();
2024-04-18 11:59:51 +08:00
if (m_Controller->m_MachineCfg->m_PlatformShape == PS_SQUARE) {
2024-04-01 18:26:14 +08:00
m_PrevRenderer->SetPlatformShape(PS_SQUARE);
2024-04-18 11:59:51 +08:00
m_PrevRenderer->SetPlatfromSize(m_Controller->m_MachineCfg->m_PlatformLength, m_Controller->m_MachineCfg->m_PlatformWidth, 100);
2024-04-01 18:26:14 +08:00
m_Renderer->SetPlatformShape(PS_SQUARE);
2024-04-18 11:59:51 +08:00
m_Renderer->SetPlatfromSize(m_Controller->m_MachineCfg->m_PlatformLength, m_Controller->m_MachineCfg->m_PlatformWidth, 100);
2024-04-09 16:53:02 +08:00
}
else {
m_PrevRenderer->SetPlatformShape(PS_ROUND);
2024-04-18 11:59:51 +08:00
m_PrevRenderer->SetPlatfromSize(m_Controller->m_MachineCfg->m_PlatformLength);
2024-04-09 16:53:02 +08:00
m_Renderer->SetPlatformShape(PS_ROUND);
2024-04-18 11:59:51 +08:00
m_Renderer->SetPlatfromSize(m_Controller->m_MachineCfg->m_PlatformLength);
2024-04-09 16:53:02 +08:00
}
2024-04-01 18:26:14 +08:00
2024-04-18 11:59:51 +08:00
//m_Controller->m_Calibration->SetRender(m_Renderer, m_PrevRenderer);
2024-04-01 18:26:14 +08:00
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO();
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
io.ConfigWindowsMoveFromTitleBarOnly = true;
ImGui_ImplGlfw_InitForOpenGL(m_GLFWWin, true);
ImGui_ImplOpenGL3_Init(glsl_version);
ImGui::StyleColorsDark();
ImPlot::CreateContext();
ImPlot::StyleColorsClassic();
//MachineCfg* machineCfg = ConfigManager::GetInstance()->GetMachineCfg();
string fontpath = g_AppPath + "wqy-zenhei.ttf";
ImFontConfig config;
config.OversampleH = 1;
config.OversampleV = 1;
config.GlyphExtraSpacing.x = 1.0f;
ImVector<ImWchar> ranges;
ImFontGlyphRangesBuilder builder;
builder.AddText(u8"轴伺屏滞芯频浏廓拟μ渲曝℃━帧氩氮刹栅钮√邦");
builder.AddRanges(io.Fonts->GetGlyphRangesChineseSimplifiedCommon());
builder.BuildRanges(&ranges); // Build the final result (ordered ranges with all the unique characters submitted)
io.Fonts->AddFontFromFileTTF(fontpath.c_str(),20 /*machineCfg->m_fontSize*/, &config, ranges.Data);
io.Fonts->Build();
io.Fonts->Flags |= ImFontAtlasFlags_NoPowerOfTwoHeight;
io.FontGlobalScale = 1.0f;/* machineCfg->m_fontScale;*/
2024-04-09 16:53:02 +08:00
ChartletManager::GetInstance()->LoadCharlet();
2024-04-01 18:26:14 +08:00
m_Reg.Init();
m_RegResult = m_Reg.CheckReg(time(0));
//m_RegResult = Registration::REG_SUCCESS;
//保存启动时间
if (m_RegResult != Registration::REG_FAIL) {
//ConfigManager::GetInstance()->GetMachineCfg()->m_lastStartTime = TimeHelper::Str2Time(TimeHelper::GetStrNow());
//ConfigManager::GetInstance()->SaveMachineConfig();
}
//ImGui_ImplOpenGL2_NewFrame();
m_IdleTime = 0;
InitializeCriticalSection(&m_IdleTimeCS);
2024-04-18 11:59:51 +08:00
//m_Controller->m_Calibration->Init();
2024-04-01 18:26:14 +08:00
#ifdef _DEBUG
g_Admin = ADMIN;
m_RegResult = Registration::REG_SUCCESS;
#endif
if (g_isDebug)
{
g_Admin = ADMIN;
m_RegResult = Registration::REG_SUCCESS;
}
return true;
}
2024-04-02 17:45:03 +08:00
2024-04-01 18:26:14 +08:00
void UIWin::Draw() {
SetupDockSpace();
2024-04-02 17:45:03 +08:00
DrawTitleBar();
DrawToolBar();
2024-04-09 16:53:02 +08:00
DrawMain();
2024-04-01 18:26:14 +08:00
}
2024-04-02 17:45:03 +08:00
void UIWin::DrawTitleBar()
{
ImGui::SetNextWindowSize(ImVec2((float)m_winWidth, (float)TITLE_HEIGHT));
ImGui::SetNextWindowPos(ImVec2(0, 0)); // 窗口起始位置为左上角
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(5.0f, 5.0f));
ImGui::Begin("TitleBar", NULL,
ImGuiWindowFlags_NoMove |
ImGuiWindowFlags_NoResize |
ImGuiWindowFlags_NoCollapse |
ImGuiWindowFlags_NoTitleBar |
ImGuiWindowFlags_NoFocusOnAppearing |
ImGuiWindowFlags_NoBringToFrontOnFocus |
ImGuiWindowFlags_NoScrollWithMouse |
ImGuiWindowFlags_NoScrollbar |
ImGuiWindowFlags_NoDocking
);
ImGui::PopStyleVar(2);
if (!m_IsFullScreen && ImGui::IsWindowFocused() && ImGui::IsMouseDragging(0)) {
ImVec2 mosvec = ImGui::GetMouseDragDelta(0);
int posx, posy, winWidth, winHeight;
glfwGetWindowPos(m_GLFWWin, &posx, &posy);
glfwGetWindowSize(m_GLFWWin, &winWidth, &winHeight);
glfwSetWindowMonitor(m_GLFWWin, NULL, posx + (int)mosvec.x, posy + (int)mosvec.y, winWidth, winHeight, m_GLFWMode->refreshRate);
}
ImGuiStyle* style = &ImGui::GetStyle();
TextureBean* logotitle = ChartletManager::GetInstance()->m_LogoTitle;
TextureBean* logotitleEn = ChartletManager::GetInstance()->m_LogoTitleEn;
2024-04-18 11:59:51 +08:00
if (m_Controller->m_MachineCfg->m_I18NLang == "zh_CN")ImGui::Image(logotitle->GetTex(), ImVec2((float)logotitle->m_Width, (float)logotitle->m_Height));
2024-04-09 16:53:02 +08:00
else ImGui::Image(logotitleEn->GetTex(), ImVec2((float)logotitleEn->m_Width, (float)logotitleEn->m_Height));
2024-04-02 17:45:03 +08:00
ImGui::SameLine(0, 50);
2024-04-18 11:59:51 +08:00
if (m_Controller->m_MachineCfg->m_ExpriedTime != 0) {
2024-04-09 16:53:02 +08:00
time_t tnow;
time(&tnow);
2024-04-18 11:59:51 +08:00
if ((m_Controller->m_MachineCfg->m_ExpriedTime - tnow) < (60 * 60 * 24 * 60)) {
2024-04-09 16:53:02 +08:00
const ImVec2 p1 = ImGui::GetCursorScreenPos();
char dataBuffer[50];
2024-04-18 11:59:51 +08:00
sprintf_s(dataBuffer, sizeof(dataBuffer), "%s %s", _(u8"系统到期:").c_str(), TimeHelper::Time2Str(m_Controller->m_MachineCfg->m_ExpriedTime).c_str());
2024-04-09 16:53:02 +08:00
ImGui::GetWindowDrawList()->AddText(ImVec2(p1.x, p1.y + 5), ImColor(Toast::COLOR_ORANGE), dataBuffer);
2024-04-18 11:59:51 +08:00
//ImGui::TextColored(Toast::COLOR_ORANGE, _(u8"系统到期:%s").c_str(), TimeHelper::Time2Str(m_Controller->m_MachineCfg->m_ExpriedTime).c_str());
2024-04-09 16:53:02 +08:00
}
}
2024-04-02 17:45:03 +08:00
if (g_Admin != USER) {
ImGui::SameLine(ImGui::GetWindowWidth() - 405);
const ImVec2 p1 = ImGui::GetCursorScreenPos();
char dataBuffer[50];
sprintf_s(dataBuffer, sizeof(dataBuffer), "%s %s", TimeHelper::GetStrNow().c_str(), m_ProductVersion.c_str());
ImGui::GetWindowDrawList()->AddText(ImVec2(p1.x, p1.y + 5), IM_COL32_WHITE, dataBuffer);
//ImGui::Text("%s %s", TimeHelper::GetStrNow().c_str(), m_ProductVersion.c_str());
ImGui::SameLine(ImGui::GetWindowWidth() - 110);
TextureBean* screenWin = (*m_TextureMap)[ChartletManager::SCREEN_WIN];
if (ImGui::ImageButton(screenWin->GetTex(), ImVec2(28, 28), ImVec2(0, 0), ImVec2(1, 1), 0, style->Colors[ImGuiCol_WindowBg]))
{
m_IsFullScreen = false;
int wwidth = m_GLFWMode->width * 4 / 5;
int wheight = m_GLFWMode->height * 4 / 5;
glfwSetWindowMonitor(m_GLFWWin, NULL, (m_GLFWMode->width - wwidth) / 2, (m_GLFWMode->height - wheight) / 2, wwidth, wheight, m_GLFWMode->refreshRate);
}
ImGui::SameLine();
TextureBean* screenFull = (*m_TextureMap)[ChartletManager::SCREEN_FULL];
if (ImGui::ImageButton(screenFull->GetTex(), ImVec2(28, 28), ImVec2(0, 0), ImVec2(1, 1), 0, style->Colors[ImGuiCol_WindowBg]))
{
m_IsFullScreen = true;
glfwSetWindowMonitor(m_GLFWWin, NULL, 0, 0, m_GLFWMode->width, m_GLFWMode->height, m_GLFWMode->refreshRate);
}
ImGui::SameLine();
TextureBean* appClose = (*m_TextureMap)[ChartletManager::APP_CLOSE];
if (ImGui::ImageButton(appClose->GetTex(), ImVec2(28, 28), ImVec2(0, 0), ImVec2(1, 1), 0, style->Colors[ImGuiCol_WindowBg]))
{
2024-04-18 11:59:51 +08:00
/* if (!m_Controller->m_ScannerCtrl->IsStandBy()) {
2024-04-02 17:45:03 +08:00
g_Toast->AddToast(new ToastBean(_(u8"正在打印中,请先结束打印后退出").c_str(), 5000));
}
else*/ {
ImGui::OpenPopup(_(u8"退出系统").c_str());
}
}
}
else {
ImGui::SameLine(ImGui::GetWindowWidth() - 300);
const ImVec2 p1 = ImGui::GetCursorScreenPos();
char dataBuffer[50];
2024-04-09 16:53:02 +08:00
sprintf_s(dataBuffer, sizeof(dataBuffer), "%s %s", TimeHelper::GetStrNow().c_str(), DataHandle::Instance()->GetVersion().c_str());
2024-04-02 17:45:03 +08:00
ImGui::GetWindowDrawList()->AddText(ImVec2(p1.x, p1.y + 5), IM_COL32_WHITE, dataBuffer);
}
bool exitStopLaserFlag = false;
if (ImGui::BeginPopupModal(_(u8"退出系统").c_str(), NULL, ImGuiWindowFlags_NoResize))
{
ImGui::Text(_(u8"是否确认退出系统").c_str());
ImGui::Separator();
if (ImGui::Button(_(u8"").c_str(), ImVec2(120, 0)))
{
#ifndef _DEBUG
2024-04-18 11:59:51 +08:00
/* if (m_Controller->m_MachineCtrl->IsLaserActive()) {
m_Controller->m_MachineCtrl->StopLaser(false);
2024-04-02 17:45:03 +08:00
exitStopLaserFlag = true;
}
else*/ {
#endif
glfwSetWindowShouldClose(m_GLFWWin, GLFW_TRUE);
#ifndef _DEBUG
}
#endif
ImGui::CloseCurrentPopup();
}
ImGui::SetItemDefaultFocus();
ImGui::SameLine();
if (ImGui::Button(_(u8"取消").c_str(), ImVec2(120, 0))) { ImGui::CloseCurrentPopup(); }
ImGui::EndPopup();
}
if (exitStopLaserFlag) {
2024-04-18 11:59:51 +08:00
//m_Controller->m_SystemAssist.exitTickCount = GetTickCount64();
//m_Controller->m_SystemAssist.exitSumTime = m_Controller->m_MachineCtrl->GetTimeWhenExit();
//m_Controller->m_MachineCtrl->StopLaser(false);
2024-04-02 17:45:03 +08:00
ImGui::OpenPopup(_(u8"正在退出系统").c_str());
}
if (ImGui::BeginPopupModal(_(u8"正在退出系统").c_str(), NULL, ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize)) {
uint64_t tnow = GetTickCount64();
float exitProgress = 1.0f;
2024-04-18 11:59:51 +08:00
//if (m_Controller->m_SystemAssist.exitSumTime != 0L)exitProgress = (float)(tnow - m_Controller->m_SystemAssist.exitTickCount) / m_Controller->m_SystemAssist.exitSumTime;
2024-04-02 17:45:03 +08:00
ImGui::Text(_(u8"系统将在激光器关闭后退出").c_str());
ImGui::ProgressBar(exitProgress);
2024-04-18 11:59:51 +08:00
//if (!m_Controller->m_MachineCtrl->IsLaserActive() && exitProgress >= 1.0f) {
2024-04-02 17:45:03 +08:00
// ImGui::CloseCurrentPopup();
// glfwSetWindowShouldClose(m_GLFWWin, GLFW_TRUE);
//}
ImGui::EndPopup();
}
ImGui::End();
}
void UIWin::DrawToolBar()
{
ImGui::SetNextWindowPos(ImVec2(0, 70));
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0));
ImGui::Begin("toolbar", (bool*)0, ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoDecoration);
static bool show_toolbar = false;
bool isStopAutoPurifier = false;
bool isStartAutoPurifier = false;
if (!show_toolbar) {
2024-04-09 16:53:02 +08:00
ImGui::Image((*m_TextureMap)[ChartletManager::TOOLBAR_RIGHT]->GetTex(), ImVec2((*m_TextureMap)[ChartletManager::TOOLBAR_RIGHT]->m_Width, (*m_TextureMap)[ChartletManager::TOOLBAR_RIGHT]->m_Height));
2024-04-02 17:45:03 +08:00
if (ImGui::IsItemHovered())
show_toolbar = true;
}
else {
ImGui::BeginGroup();
TextureBean* autoOxygenDisable = ChartletManager::GetInstance()->m_AutoOxygenDisable;
TextureBean* autoOxygenEnable = ChartletManager::GetInstance()->m_AutoOxygenEnable;
2024-04-18 11:59:51 +08:00
/* if (m_Controller->m_Purifier->IsAutoDeoxygen()) {
2024-04-09 16:53:02 +08:00
if (ImGui::ImageButton(autoOxygenEnable->GetTex(), ImVec2(autoOxygenEnable->m_Width, autoOxygenEnable->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0)) {
isStopAutoPurifier = true;
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"关闭一键除氧").c_str());
}
}
else*/ {
2024-04-02 17:45:03 +08:00
if (ImGui::ImageButton(autoOxygenDisable->GetTex(), ImVec2((float)autoOxygenDisable->m_Width, (float)autoOxygenDisable->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0)) {
isStartAutoPurifier = true;
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"开启一键除氧").c_str());
}
}
ImGui::SameLine();
ImGui::Image((*m_TextureMap)[ChartletManager::TOOLBAR_RIGHT]->GetTex(), ImVec2((float)(*m_TextureMap)[ChartletManager::TOOLBAR_RIGHT]->m_Width, (float)(*m_TextureMap)[ChartletManager::TOOLBAR_RIGHT]->m_Height));
TextureBean* laserOff = (*m_TextureMap)[ChartletManager::LASER_OFF];
TextureBean* laserOn = (*m_TextureMap)[ChartletManager::LASER_ON];
2024-04-18 11:59:51 +08:00
/*if (!m_Controller->m_MachineCtrl->IsLaserOn()) */{
2024-04-02 17:45:03 +08:00
if (ImGui::ImageButton(laserOff->GetTex(), ImVec2((float)laserOff->m_Width, (float)laserOff->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0))
{
2024-04-18 11:59:51 +08:00
//if (m_Controller->m_ScannerCtrl->IsStandBy()) {
// m_Controller->m_MachineCtrl->StartLaser(false);
2024-04-02 17:45:03 +08:00
//}
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"开启激光").c_str());
}
}
/*else {
if (ImGui::ImageButton(laserOn->GetTex(), ImVec2(laserOn->m_Width, laserOn->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0))
{
2024-04-18 11:59:51 +08:00
if (m_Controller->m_ScannerCtrl->IsStandBy()) {
m_Controller->m_MachineCtrl->StopLaser(false);
2024-04-02 17:45:03 +08:00
}
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"关闭激光").c_str());
}
}*/
2024-04-18 11:59:51 +08:00
//IOCfg* lightCfg = m_Controller->m_IoCfgWrapper->m_LightOn;
2024-04-02 17:45:03 +08:00
TextureBean* lightOn = (*m_TextureMap)[ChartletManager::LIGHT_ON];
TextureBean* lightOff = (*m_TextureMap)[ChartletManager::LIGHT_OFF];
2024-04-09 16:53:02 +08:00
//if (!lightCfg->IsActive()) {
2024-04-02 17:45:03 +08:00
if (ImGui::ImageButton(lightOff->GetTex(), ImVec2(lightOff->m_Width, lightOff->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0))
{
2024-04-09 16:53:02 +08:00
/*lightCfg->SetActive(true);*/
2024-04-02 17:45:03 +08:00
g_log->TraceInfo(_(u8"开启照明").c_str());
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"开启照明").c_str());
}
2024-04-09 16:53:02 +08:00
/* }
else */{
2024-04-02 17:45:03 +08:00
if (ImGui::ImageButton(lightOn->GetTex(), ImVec2((float)lightOn->m_Width, (float)lightOn->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0)) {
//lightCfg->SetActive(false);
g_log->TraceInfo(_(u8"关闭照明").c_str());
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"关闭照明").c_str());
}
}
// MachineCfg* mtc = ConfigManager::GetInstance()->GetMachineCfg();
// if (mtc->m_MachineType == MachineTypeCfg::HBD_280 || mtc->m_HeatingEnable) {
2024-04-18 11:59:51 +08:00
//IOCfg* heatCfg = m_Controller->m_IoCfgWrapper->m_Heating;
2024-04-02 17:45:03 +08:00
//if (heatCfg) {
// TextureBean* heatOn = (*m_TextureMap)[ChartletManager::HEAT_ON];
// TextureBean* heatOff = (*m_TextureMap)[ChartletManager::HEAT_OFF];
// if (!heatCfg->IsActive()) {
// if (ImGui::ImageButton(heatOff->GetTex(), ImVec2(heatOff->m_Width, heatOff->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0))
// {
// heatCfg->SetActive(true);
2024-04-18 11:59:51 +08:00
// m_Controller->m_ScannerCtrl->StartHeatingMotion();
2024-04-02 17:45:03 +08:00
// g_log->TraceInfo(_(u8"打开基板加热").c_str());
// }
// if (ImGui::IsItemHovered()) {
// ImGui::SetTooltip(_(u8"打开基板加热").c_str());
// }
// }
// else {
// if (ImGui::ImageButton(heatOn->GetTex(), ImVec2(heatOn->m_Width, heatOn->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0)) {
2024-04-18 11:59:51 +08:00
// m_Controller->m_ScannerCtrl->StopHeatingMotion(false);
2024-04-02 17:45:03 +08:00
// heatCfg->SetActive(false);
// g_log->TraceInfo(_(u8"关闭基板加热").c_str());
// }
// if (ImGui::IsItemHovered()) {
// ImGui::SetTooltip(_(u8"关闭基板加热").c_str());
// }
// }
//}
// }
TextureBean* checkEnable = (*m_TextureMap)[ChartletManager::CHECK_ENABLE];
TextureBean* checkDiable = (*m_TextureMap)[ChartletManager::CHECK_DISABLE];
2024-04-18 11:59:51 +08:00
/* if (m_Controller->m_ExtCfg->m_CheckDataWhenInport) {
2024-04-02 17:45:03 +08:00
if (ImGui::ImageButton(checkEnable->GetTex(), ImVec2(checkEnable->m_Width, checkEnable->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0)) {
2024-04-18 11:59:51 +08:00
m_Controller->m_ExtCfg->m_CheckDataWhenInport = !m_Controller->m_ExtCfg->m_CheckDataWhenInport;
2024-04-02 17:45:03 +08:00
g_log->TraceInfo(_(u8"关闭数据检验").c_str());
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"关闭数据检验").c_str());
}
}
else */{
if (ImGui::ImageButton(checkDiable->GetTex(), ImVec2((float)checkDiable->m_Width, (float)checkDiable->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0)) {
2024-04-18 11:59:51 +08:00
//m_Controller->m_ExtCfg->m_CheckDataWhenInport = !m_Controller->m_ExtCfg->m_CheckDataWhenInport;
2024-04-02 17:45:03 +08:00
g_log->TraceInfo(_(u8"开启数据检验").c_str());
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"开启数据检验").c_str());
}
}
TextureBean* fit_view = (*m_TextureMap)[ChartletManager::FIT_VIEW];
if (ImGui::ImageButton(fit_view->GetTex(), ImVec2((float)fit_view->m_Width, (float)fit_view->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0))
{
if (m_RenderToPreview)
m_PrevRenderer->ResetCamera();
else
m_Renderer->ResetCamera();
g_log->TraceInfo(_(u8"复位渲染视图").c_str());
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"复位渲染视图").c_str());
}
TextureBean* setPlatformLevelPos = ChartletManager::GetInstance()->m_SetPlatformLevelPos;
if (ImGui::ImageButton(setPlatformLevelPos->GetTex(), ImVec2((float)setPlatformLevelPos->m_Width, (float)setPlatformLevelPos->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0))
{
2024-04-18 11:59:51 +08:00
m_Controller->m_AxisRecordWrapper->m_PrintJackupPlatformPlanePosRecord->SetValue(true);
2024-04-02 17:45:03 +08:00
Sleep(100);
2024-04-18 11:59:51 +08:00
m_Controller->m_AxisRecordWrapper->m_PrintJackupPlatformPlanePosRecord->SetValue(false);
/*m_Controller->m_RunCfg->m_HadSetBasePlatformPoint = true;*/
2024-04-02 17:45:03 +08:00
g_Toast->AddToast(new ToastBean(_(u8"基板缸平面位置确定成功").c_str(), 3000, Toast::COLOR_GREEN));
g_log->TraceInfo(_(u8"基板缸平面位置确定成功").c_str());
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"基板缸平面位置确定").c_str());
}
TextureBean* resetException = ChartletManager::GetInstance()->m_ResetException;
if (ImGui::ImageButton(resetException->GetTex(), ImVec2((float)resetException->m_Width, (float)resetException->m_Height), ImVec2(0, 0), ImVec2(1, 1), 0))
{
2024-04-18 11:59:51 +08:00
m_Controller->m_SignalStateWrapper->m_CylinderExceptionReset->SetValue(true);
2024-04-02 17:45:03 +08:00
g_Toast->AddToast(new ToastBean(_(u8"复位异常成功").c_str(), 3000, Toast::COLOR_GREEN));
g_log->TraceInfo(_(u8"复位异常").c_str());
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"复位异常").c_str());
}
ImGui::EndGroup();
if (!ImGui::IsItemHovered())
show_toolbar = false;
}
if (isStopAutoPurifier) {
ImGui::OpenPopup(_(u8"停止一键除氧确定").c_str());
}
if (ImGui::BeginPopupModal(_(u8"停止一键除氧确定").c_str(), NULL, ImGuiWindowFlags_AlwaysAutoResize)) {
ImGui::Text(_(u8"是否确定停止一键除氧?").c_str());
ImGui::Spacing();
ImGui::Separator();
ImVec2 size = ImGui::GetWindowSize();
if (ImGui::Button(_(u8"确定").c_str(), ImVec2(size.x / 2 - 10, 0))) {
2024-04-18 11:59:51 +08:00
/*if (m_Controller->m_ScannerCtrl->IsStandBy()) */{
//m_Controller->m_Purifier->StopAutoDeoxygen();
2024-04-02 17:45:03 +08:00
//g_log->TraceInfo(_(u8"关闭一键除氧").c_str());
}
ImGui::CloseCurrentPopup();
}
ImGui::SameLine();
if (ImGui::Button(_(u8"取消").c_str(), ImVec2(size.x / 2 - 5, 0))) {
ImGui::CloseCurrentPopup();
}
ImGui::Spacing();
ImGui::EndPopup();
}
if (isStartAutoPurifier) {
ImGui::OpenPopup(_(u8"开启一键除氧确定").c_str());
}
if (ImGui::BeginPopupModal(_(u8"开启一键除氧确定").c_str(), NULL, ImGuiWindowFlags_AlwaysAutoResize)) {
ImGui::Text(_(u8"是否确定开启一键除氧?").c_str());
ImGui::Spacing();
ImGui::Separator();
ImVec2 size = ImGui::GetWindowSize();
if (ImGui::Button(_(u8"确定").c_str(), ImVec2(size.x / 2 - 5, 0))) {
2024-04-18 11:59:51 +08:00
//if (m_Controller->m_ScannerCtrl->IsStandBy()) {
// m_Controller->m_Purifier->StartAutoDeoxygen();
2024-04-02 17:45:03 +08:00
// g_log->TraceInfo(_(u8"开启一键除氧").c_str());
//}
ImGui::CloseCurrentPopup();
}
ImGui::SameLine();
if (ImGui::Button(_(u8"取消").c_str(), ImVec2(size.x / 2 - 10, 0))) {
ImGui::CloseCurrentPopup();
}
ImGui::Spacing();
ImGui::EndPopup();
}
ImGui::End();
ImGui::PopStyleVar();
}
2024-04-01 18:26:14 +08:00
2024-04-09 16:53:02 +08:00
void UIWin::DrawMain()
{
ImGui::Begin("HBDSystem1000", NULL, ImGuiWindowFlags_MenuBar);
// Menu Begin
bool enableFlag = false;
bool exitStopLaserFlag = false;
2024-04-18 11:59:51 +08:00
if (/*m_Controller->m_ScannerCtrl->IsStandBy() ||*/ g_Admin == ADMIN || g_Admin == USER_ADMIN) {
2024-04-09 16:53:02 +08:00
enableFlag = true;
}
else {
enableFlag = false;
}
m_MainWidth = (int)ImGui::GetContentRegionAvail().x;
bool export_file_dialog = false;
bool import_file_dialog = false;
static bool fast_preview = false;
if (ImGui::BeginMenuBar())
{
if (ImGui::BeginMenu(_(u8"系统").c_str()))
{
2024-04-18 11:59:51 +08:00
//ImGui::MenuItem(_(u8"添加任务").c_str(), 0, &m_Controller->m_MenuAssist.isAddTaskClick, m_Controller->m_ScannerCtrl->IsStandBy());
2024-04-09 16:53:02 +08:00
if (ImGui::MenuItem(_(u8"导入参数").c_str()))
{
import_file_dialog = true;
}
if (ImGui::MenuItem(_(u8"导出参数").c_str()))
{
export_file_dialog = true;
}
if (ImGui::MenuItem(_(u8"窗口最小化").c_str()))
{
glfwIconifyWindow(m_GLFWWin);
}
if (ImGui::MenuItem(_(u8"窗口显示").c_str())) {
m_IsFullScreen = false;
int wwidth = m_GLFWMode->width * 4 / 5;
int wheight = m_GLFWMode->height * 4 / 5;
glfwSetWindowMonitor(m_GLFWWin, NULL, (m_GLFWMode->width - wwidth) / 2, (m_GLFWMode->height - wheight) / 2, wwidth, wheight, m_GLFWMode->refreshRate);
}
if (ImGui::MenuItem(_(u8"全屏显示").c_str())) {
m_IsFullScreen = true;
glfwSetWindowMonitor(m_GLFWWin, NULL, 0, 0, m_GLFWMode->width, m_GLFWMode->height, m_GLFWMode->refreshRate);
}
ImGui::PushItemFlag(ImGuiItemFlags_SelectableDontClosePopup, true);
if (ImGui::MenuItem(_(u8"退出系统").c_str())) {
2024-04-18 11:59:51 +08:00
//if (!m_Controller->m_ScannerCtrl->IsStandBy()) {
2024-04-09 16:53:02 +08:00
// g_Toast->AddToast(new ToastBean(_(u8"正在打印中,请先结束打印后退出").c_str(), 5000));
//}
/*else*/ {
ImGui::OpenPopup(_(u8"退出系统").c_str());
}
}
ImGui::PopItemFlag();
if (ImGui::BeginPopupModal(_(u8"退出系统").c_str(), NULL, ImGuiWindowFlags_NoResize))
{
ImGui::Text(_(u8"是否确认退出系统").c_str());
ImGui::Separator();
if (ImGui::Button(_(u8"确定").c_str(), ImVec2(120, 0)))
{
#ifndef _DEBUG
2024-04-18 11:59:51 +08:00
/* if (m_Controller->m_MachineCtrl->IsLaserActive()) {
m_Controller->m_MachineCtrl->StopLaser(false);
2024-04-09 16:53:02 +08:00
exitStopLaserFlag = true;
}
else*/ {
#endif
glfwSetWindowShouldClose(m_GLFWWin, GLFW_TRUE);
#ifndef _DEBUG
}
#endif
ImGui::CloseCurrentPopup();
}
ImGui::SetItemDefaultFocus();
ImGui::SameLine();
if (ImGui::Button(_(u8"取消").c_str(), ImVec2(120, 0))) { ImGui::CloseCurrentPopup(); }
ImGui::EndPopup();
}
ImGui::EndMenu();
}
2024-04-18 11:59:51 +08:00
if (ImGui::BeginMenu(_(u8"状态").c_str()))
{
//ImGui::MenuItem(_(u8"通讯状态").c_str(), NULL, &m_StateWinShow);
//ImGui::MenuItem(_(u8"净化器状态").c_str(), NULL, &m_Controller->m_Purifier->m_PurifierWinShow);
//ImGui::MenuItem(_(u8"激光器状态").c_str(), NULL, &m_LaserStateShow);
//ImGui::MenuItem(_(u8"振镜状态").c_str(), NULL, &m_ScannerWinShow);
//if (m_Controller->m_ComServer->m_PowerMeterClient && m_Controller->m_ComServer->m_PowerMeterClient->GetConfig()->m_Enable)ImGui::MenuItem(_(u8"电能质量").c_str(), NULL, &m_PowerMeterShow);
//if (m_Controller->m_ComServer->m_LaserChillerClient)ImGui::MenuItem(_(u8"激光器冷水机").c_str(), NULL, &m_Controller->m_ComServer->m_LaserChillerClient->m_IsShowUI);
////if (m_Controller->m_ComServer->m_PurifierChillerClient)ImGui::MenuItem(_(u8"净化器冷水机").c_str(), NULL, &m_Controller->m_ComServer->m_PurifierChillerClient->m_IsShowUI);
//if (m_Controller->m_ExtCfg->m_UseCamera)ImGui::MenuItem(_(u8"实时图像").c_str(), NULL, &m_Controller->m_Camera->m_ShowFlag);
//if (m_Controller->m_ComServer->m_SimpleSupplyClient && m_Controller->m_ComServer->m_SimpleSupplyClient->GetConfig()->m_Enable)ImGui::MenuItem(_(u8"单供粉").c_str(), NULL, &m_SimpleSupplyWinShow);
//ImGui::MenuItem(_(u8"日志").c_str(), NULL, &m_LogWinShow);
//ImGui::MenuItem(_(u8"伺服状态").c_str(), NULL, &m_ServoStateShow);
//ImGui::MenuItem(_(u8"扭力状态").c_str(), NULL, &m_Controller->m_ServoManager->m_IsShowServo);
//ImGui::MenuItem(_(u8"信号状态").c_str(), NULL, &m_SignalStateShow);
//if (m_Controller->m_RecoatCheckCfg->m_Enable)ImGui::MenuItem(_(u8"铺粉检测状态").c_str(), 0, &m_RecoatCheckWinShow);
//ImGui::MenuItem(_(u8"快速层预览").c_str(), 0, &fast_preview);
ImGui::EndMenu();
}
2024-04-09 16:53:02 +08:00
if (ImGui::BeginMenu(_(u8"调试").c_str(), enableFlag))
{
ImGui::MenuItem(_(u8"铺粉装置").c_str(), 0, &m_powderWinShow, enableFlag);
if (g_Admin > USER) {
ImGui::MenuItem(_(u8"IO端口").c_str(), 0, &m_IOWinShow, enableFlag);
ImGui::MenuItem(_(u8"扫描装置").c_str(), 0, &m_scanWinShow, enableFlag);
}
2024-04-18 11:59:51 +08:00
//if (m_Controller->m_ExtCfg->m_UseCamera)ImGui::MenuItem(_(u8"图像调试").c_str(), 0, &m_Controller->m_Calibration->m_GraftingShow, enableFlag);
2024-04-09 16:53:02 +08:00
ImGui::EndMenu();
}
if (g_Admin > USER) {
if (ImGui::BeginMenu(_(u8"设置").c_str(), enableFlag)) {
ImGui::MenuItem(_(u8"参数设置").c_str(), NULL, &m_configWinShow);
ImGui::EndMenu();
}
}
if (ImGui::BeginMenu(_(u8"帮助").c_str()))
{
ImGui::MenuItem(_(u8"关于").c_str());
if (ImGui::BeginMenu(_(u8"语言").c_str())) {
if (ImGui::Selectable(_(u8"简体中文").c_str())) {
2024-04-18 11:59:51 +08:00
m_Controller->m_MachineCfg->m_I18NLang = "zh_CN";
2024-04-09 16:53:02 +08:00
g_LngManager->VarTrans();
}
if (ImGui::Selectable(_(u8"英文").c_str())) {
2024-04-18 11:59:51 +08:00
m_Controller->m_MachineCfg->m_I18NLang = "en";
2024-04-09 16:53:02 +08:00
g_LngManager->VarTrans();
}
ImGui::EndMenu();
}
//if (g_isDebug)ImGui::MenuItem(u8"测试信息", NULL, &m_TestWinShow);
if (g_Admin != USER) {
if (ImGui::MenuItem(_(u8"注销管理员").c_str()))
g_Admin = USER;
}
else {
ImGui::PushItemFlag(ImGuiItemFlags_SelectableDontClosePopup, true);
if (ImGui::MenuItem(_(u8"管理员").c_str()))
ImGui::OpenPopup(_(u8"管理员").c_str());
ImGui::PopItemFlag();
if (ImGui::BeginPopupModal(_(u8"管理员").c_str(), NULL, ImGuiWindowFlags_NoResize))
{
static char pwd_buf[7];
if (!ImGui::IsAnyItemActive())
ImGui::SetKeyboardFocusHere();
if (ImGui::InputText(_(u8"密码").c_str(), pwd_buf, sizeof(pwd_buf), ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_EnterReturnsTrue)) {
g_Admin = SUPER; /*CheckUserPasswd(pwd_buf);*/ //wxxtest
std::memset(pwd_buf, 0, sizeof(pwd_buf));
ImGui::CloseCurrentPopup();
}
ImGui::Separator();
if (ImGui::Button(_(u8"确定").c_str(), ImVec2(120, 0)))
{
g_Admin = SUPER; /*CheckUserPasswd(pwd_buf);*/ //wxxtest
std::memset(pwd_buf, 0, sizeof(pwd_buf));
ImGui::CloseCurrentPopup();
}
ImGui::SetItemDefaultFocus();
ImGui::SameLine();
if (ImGui::Button(_(u8"取消").c_str(), ImVec2(120, 0))) { ImGui::CloseCurrentPopup(); }
ImGui::EndPopup();
}
}
ImGui::EndMenu();
}
ImGui::EndMenuBar();
}
// Menu End
if (export_file_dialog)
{
ImGui::OpenPopup(_(u8"导出参数").c_str());
}
if (ImGui::BeginPopupModalEx(_(u8"导出参数").c_str(), NULL, ImGuiWindowFlags_NoResize, ImVec2(600, 600)))
{
//if (FileDialog::GetInstance()->OpenDialog("Choose File", ".cfg", true))
//{
// if (FileDialog::GetInstance()->IsOk == true)
// {
2024-04-18 11:59:51 +08:00
// if (m_Controller->jc.IsLoadFinished())
2024-04-09 16:53:02 +08:00
// {
// string filepath = StringHelper::Wstr2Str(FileDialog::GetInstance()->GetFilepathName());
// ConfigManager::GetInstance()->Export(filepath);
// }
// }
// ImGui::CloseCurrentPopup();
//}
ImGui::EndPopup();
}
if (import_file_dialog)
{
ImGui::OpenPopup(_(u8"导入参数").c_str());
}
if (ImGui::BeginPopupModalEx(_(u8"导入参数").c_str(), NULL, ImGuiWindowFlags_NoResize, ImVec2(600, 600)))
{
//if (FileDialog::GetInstance()->OpenDialog("Choose File", ".cfg;"))
//{
// if (FileDialog::GetInstance()->IsOk == true)
// {
2024-04-18 11:59:51 +08:00
// if (m_Controller->jc.IsLoadFinished())
2024-04-09 16:53:02 +08:00
// {
// string filepath = StringHelper::Wstr2Str(FileDialog::GetInstance()->GetFilepathName());
// ConfigManager::GetInstance()->Import(filepath);
// m_PrevRenderer->SetPlatfromSize(600, 600, 1000);
// m_Renderer->SetPlatfromSize(600, 600, 1000);
// }
// }
// ImGui::CloseCurrentPopup();
//}
ImGui::EndPopup();
}
if (exitStopLaserFlag) {
2024-04-18 11:59:51 +08:00
m_Controller->m_SystemAssist.exitTickCount = GetTickCount64();
//m_Controller->m_SystemAssist.exitSumTime = m_Controller->m_MachineCtrl->GetTimeWhenExit();
2024-04-09 16:53:02 +08:00
ImGui::OpenPopup(_(u8"正在退出系统").c_str());
}
if (ImGui::BeginPopupModal(_(u8"正在退出系统").c_str(), NULL, ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize)) {
uint64_t tnow = GetTickCount64();
float exitProgress = 1.0f;
2024-04-18 11:59:51 +08:00
if (m_Controller->m_SystemAssist.exitSumTime != 0L)exitProgress = (float)(tnow - m_Controller->m_SystemAssist.exitTickCount) / m_Controller->m_SystemAssist.exitSumTime;
2024-04-09 16:53:02 +08:00
ImGui::Text(_(u8"系统将在激光器关闭后退出").c_str());
ImGui::ProgressBar(exitProgress);
2024-04-18 11:59:51 +08:00
//if (!m_Controller->m_MachineCtrl->IsLaserActive() && exitProgress >= 1.0f) {
2024-04-09 16:53:02 +08:00
// // //g_log->TraceInfo(u8"退出程序");
// //Sleep(300);
// ImGui::CloseCurrentPopup();
// glfwSetWindowShouldClose(m_GLFWWin, GLFW_TRUE);
//}
ImGui::EndPopup();
}
// Toolbar Begin
2024-04-18 11:59:51 +08:00
//if (m_Controller->m_MenuAssist.isAddTaskClick) {
2024-04-09 16:53:02 +08:00
// ImGui::OpenPopup(_(u8"添加任务").c_str());
2024-04-18 11:59:51 +08:00
// m_Controller->m_MenuAssist.isAddTaskClick = false;
2024-04-09 16:53:02 +08:00
//}
bool isOpenContinue = false;
bool isReadFile = false;
if (ImGui::BeginPopupModalEx(_(u8"添加任务").c_str(), NULL, ImGuiWindowFlags_NoResize, ImVec2(600, 600)))
{
/*if (FileDialog::GetInstance()->OpenDialog("Choose File", ".job;.h3d"))
{
if (FileDialog::GetInstance()->IsOk == true)
{
2024-04-18 11:59:51 +08:00
EnterCriticalSection(&m_Controller->jc.m_cs);
m_Controller->jc.RemoveAllJob();
2024-04-09 16:53:02 +08:00
m_Renderer->ClearScene(true);
m_PrevRenderer->ClearScene(true);
2024-04-18 11:59:51 +08:00
LeaveCriticalSection(&m_Controller->jc.m_cs);
2024-04-09 16:53:02 +08:00
2024-04-18 11:59:51 +08:00
if (m_Controller->jc.IsLoadFinished())
2024-04-09 16:53:02 +08:00
{
string filepath = StringHelper::Wstr2Str(FileDialog::GetInstance()->GetFilepathName());
2024-04-18 11:59:51 +08:00
if (m_Controller->jc.LoadJob(filepath)) {
2024-04-09 16:53:02 +08:00
isReadFile = true;
}
}
}
ImGui::CloseCurrentPopup();
}*/
ImGui::EndPopup();
}
if (isReadFile) {
ImGui::OpenPopup(_(u8"添加任务进度").c_str());
}
2024-04-18 11:59:51 +08:00
//EnterCriticalSection(&m_Controller->jc.m_cs);
2024-04-09 16:53:02 +08:00
//if (ImGui::BeginPopupModalEx(_(u8"添加任务进度").c_str(), NULL, ImGuiWindowFlags_NoResize, ImVec2(500, 150))) {
// ImGui::SetWindowFontScale(1.2);
2024-04-18 11:59:51 +08:00
// ImGui::Text(m_Controller->jc.GetLoadInfo().c_str());
// // ImGui::ProgressBar(m_Controller->jc.GetLoadProgress());
// if (m_Controller->jc.IsLoadFinished()) {
// FileProcessor* pjp = m_Controller->jc.GetJob();
2024-04-09 16:53:02 +08:00
// if (pjp != NULL) {
// vector<string> infos;
// pjp->GetMetaData()->GetErrorInfo(infos);
// if (!infos.empty()) {
// ImGui::TextColored(Toast::COLOR_RED, infos[0].c_str());
// if (ImGui::Button(_(u8"确定").c_str(), ImVec2(-1, 0))) {
// m_Renderer->ClearScene(true);
// m_PrevRenderer->ClearScene(true);
// m_Renderer->SetJob(pjp);
// m_PrevRenderer->SetJob(pjp);
// g_SystemInfo->m_StateBean.jobCostMil = pjp->GetMetaData()->GetEvaTime();
// g_SystemInfo->m_StateBean.remainMil = pjp->GetMetaData()->GetRemainTime();
// g_SystemInfo->m_StateBean.maxLayerIndex = pjp->GetLayerCount();
// g_SystemInfo->m_StateBean.realCostSeconds = 0;
// g_SystemInfo->m_StateBean.layerIndex = 0;
// g_SystemInfo->m_StateBean.jobProgress = 0.0f;
// pjp->SetStartIndex(0);
// ImGui::CloseCurrentPopup();
// }
// }
// else {
// m_Renderer->ClearScene(true);
// m_PrevRenderer->ClearScene(true);
// m_Renderer->SetJob(pjp);
// m_PrevRenderer->SetJob(pjp);
// g_SystemInfo->m_StateBean.jobCostMil = pjp->GetMetaData()->GetEvaTime();
// g_SystemInfo->m_StateBean.remainMil = pjp->GetMetaData()->GetRemainTime();
// g_SystemInfo->m_StateBean.maxLayerIndex = pjp->GetLayerCount();
// g_SystemInfo->m_StateBean.realCostSeconds = 0;
// g_SystemInfo->m_StateBean.jobProgress = 0.0f;
// g_SystemInfo->m_StateBean.layerIndex = 0;
// pjp->SetStartIndex(0);
2024-04-18 11:59:51 +08:00
// if (g_log->m_LogDao->GetCheckJob(pjp->GetJobUid(), m_Controller->m_JobAssist.continueJob))
2024-04-09 16:53:02 +08:00
// {
// isOpenContinue = true;
// }
// vector<PartAddition*> partv;
// g_log->m_LogDao->FindPartAddition(pjp->GetJobUid(), partv);
// for (size_t paIndex = 0; paIndex < partv.size(); ++paIndex)
// {
// PartAddition* pa = partv[paIndex];
// MetaData::Part* sourcePart = pjp->GetMetaData()->GetPart(pa->m_SourcePart);
// MetaData::Part* newPart = sourcePart->CopyPart(pjp->GetMetaData()->GetPartVec().size());
// newPart->id = pa->m_NewPart;
// pjp->GetMetaData()->AddPart(newPart);
// m_Renderer->AddPart(newPart);
// m_PrevRenderer->AddPart(newPart);
// }
// for (size_t paIndex = 0; paIndex < partv.size(); ++paIndex) {
// delete partv[paIndex];
// }
// partv.clear();
// vector<int> partIds;
// pjp->GetMetaData()->GetPartIds(partIds);
// g_log->m_LogDao->AddPartPos(pjp->GetJobUid(), partIds);
// vector<PartPosBean*> partPosv;
// g_log->m_LogDao->FindPartPos(pjp->GetJobUid(), partPosv);
// for (size_t paIndex = 0; paIndex < partPosv.size(); ++paIndex)
// {
// MetaData::Part* ppb = pjp->GetMetaData()->GetPart(partPosv[paIndex]->m_PartId);
// if (ppb) {
// ppb->partPosBean.m_XOffset = partPosv[paIndex]->m_XOffset;
// ppb->partPosBean.m_YOffset = partPosv[paIndex]->m_YOffset;
// ppb->partPosBean.m_RotateAngle = partPosv[paIndex]->m_RotateAngle;
// ppb->partPosBean.m_Radians = (float)MathHelper::DegreesToRadians((double)ppb->partPosBean.m_RotateAngle);
// ppb->partPosBean.m_PartCenterX = ppb->partPosBean.m_XOffset + ppb->partPosBean.m_SrcPartCenterX;
// ppb->partPosBean.m_PartCenterY = ppb->partPosBean.m_YOffset + ppb->partPosBean.m_SrcPartCenterY;
// Part* prev_part = m_PrevRenderer->GetPart(ppb->id);
// if (prev_part)prev_part->UpdateOffset();
// Part* print_part = m_Renderer->GetPart(ppb->id);
// if (print_part)print_part->UpdateOffset();
// }
// }
// for (size_t paIndex = 0; paIndex < partPosv.size(); ++paIndex) {
// delete partPosv[paIndex];
// }
// partPosv.clear();
// g_log->TraceInfo(_(u8"导入任务%s").c_str(), pjp->GetJobFileName().c_str());
2024-04-18 11:59:51 +08:00
// m_Controller->m_Calibration->UpdateData(pjp->GetMetaData());
2024-04-09 16:53:02 +08:00
// ImGui::CloseCurrentPopup();
// }
// }
// else {
// ImGui::CloseCurrentPopup();
// }
// }
// else {
2024-04-18 11:59:51 +08:00
// ImGui::ProgressBar(m_Controller->jc.GetLoadProgress());
2024-04-09 16:53:02 +08:00
// }
// ImGui::EndPopup();
//}
2024-04-18 11:59:51 +08:00
//LeaveCriticalSection(&m_Controller->jc.m_cs);
2024-04-09 16:53:02 +08:00
if (isOpenContinue)
{
ImGui::OpenPopup(_(u8"继续任务").c_str());
}
if (ImGui::BeginPopupModal(_(u8"继续任务").c_str(), NULL, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize))
{
2024-04-18 11:59:51 +08:00
//ImGui::Text(_(u8"检测到任务:%s 尚未完成,\n是否继续打印还是重新开始打印").c_str(), m_Controller->m_JobAssist.continueJob.m_Name.c_str());
2024-04-09 16:53:02 +08:00
//if (ImGui::Button(_(u8"继续任务").c_str(), ImVec2(120, 0)))
//{
2024-04-18 11:59:51 +08:00
// m_Controller->m_JobAssist.continueJob.m_IsContinue = true;
// FileProcessor* pjp = m_Controller->jc.GetJob();
// pjp->SetJobbean(m_Controller->m_JobAssist.continueJob);
// if (m_Controller->m_JobAssist.continueJob.m_PrintedLayerIndex + 1 < pjp->GetLayerCount()) {
// pjp->SetStartIndex(m_Controller->m_JobAssist.continueJob.m_PrintedLayerIndex + 1);
// pjp->GetMetaData()->CalcRemainTime(m_Controller->m_JobAssist.continueJob.m_PrintedLayerIndex + 1);
2024-04-09 16:53:02 +08:00
// }
// ImGui::CloseCurrentPopup();
2024-04-18 11:59:51 +08:00
// pjp->GetMetaData()->LoadLayerByIndex(m_Controller->m_JobAssist.continueJob.m_PrintedLayerIndex + 1);
2024-04-09 16:53:02 +08:00
// g_SystemInfo->m_StateBean.remainMil = pjp->GetMetaData()->GetRemainTime();
2024-04-18 11:59:51 +08:00
// g_SystemInfo->m_StateBean.realCostSeconds = m_Controller->m_JobAssist.continueJob.m_PrintSecond;
// g_SystemInfo->m_StateBean.layerIndex = m_Controller->m_JobAssist.continueJob.m_PrintedLayerIndex;
2024-04-09 16:53:02 +08:00
// g_SystemInfo->m_StateBean.jobProgress = g_SystemInfo->m_StateBean.layerIndex / g_SystemInfo->m_StateBean.maxLayerIndex;
//}
ImGui::SameLine(0, 100);
if (ImGui::Button(_(u8"重新任务").c_str(), ImVec2(120, 0))) {
g_SystemInfo->m_StateBean.realCostSeconds = 0;
2024-04-18 11:59:51 +08:00
//g_log->m_LogDao->UpdateJobInvalid(m_Controller->m_JobAssist.continueJob.m_Id);
2024-04-09 16:53:02 +08:00
ImGui::CloseCurrentPopup();
}
ImGui::EndPopup();
}
2024-04-18 11:59:51 +08:00
//if (ImGui::ImageButton((*m_Controller->m_TextureMap)[ChartletManager::LOCK]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) {
2024-04-09 16:53:02 +08:00
// m_LockScreenWinShow = true;
//}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"锁屏").c_str());
}
ImGui::SameLine();
//if (!BaseCtrl::IsStandBy()) {
2024-04-18 11:59:51 +08:00
// if (ImGui::ImageButton((*m_Controller->m_TextureMap)[ChartletManager::START_ENABLE]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0)) {
// m_Controller->m_ScannerCtrl->PauseWork();
2024-04-09 16:53:02 +08:00
// }
// if (ImGui::IsItemHovered()) {
// ImGui::SetTooltip(_(u8"暂停").c_str());
// }
//}
//else if (BaseCtrl::GetState() == BaseCtrl::STANDBY || BaseCtrl::GetState() == BaseCtrl::STANDBY_STOP) {
2024-04-18 11:59:51 +08:00
// if (ImGui::ImageButton((*m_Controller->m_TextureMap)[ChartletManager::START_DISABLE]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0))
2024-04-09 16:53:02 +08:00
// {
2024-04-18 11:59:51 +08:00
// m_Controller->m_ScannerCtrl->BeginWork();
2024-04-09 16:53:02 +08:00
// }
// if (ImGui::IsItemHovered()) {
// ImGui::SetTooltip(_(u8"开始").c_str());
// }
//}
//else {
2024-04-18 11:59:51 +08:00
// if (ImGui::ImageButton((*m_Controller->m_TextureMap)[ChartletManager::PAUSE]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0))
2024-04-09 16:53:02 +08:00
// {
2024-04-18 11:59:51 +08:00
// m_Controller->m_ScannerCtrl->BeginWork();
2024-04-09 16:53:02 +08:00
// }
// if (ImGui::IsItemHovered()) {
// ImGui::SetTooltip(_(u8"继续").c_str());
// }
//}
ImGui::SameLine();
//if (BaseCtrl::IsStop() || BaseCtrl::GetState() == BaseCtrl::STANDBY_STOP) {
2024-04-18 11:59:51 +08:00
// ImGui::ImageButton((*m_Controller->m_TextureMap)[ChartletManager::STOP_ENABLE]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0);
2024-04-09 16:53:02 +08:00
//}
//else{
2024-04-18 11:59:51 +08:00
// if (ImGui::ImageButton((*m_Controller->m_TextureMap)[ChartletManager::STOP_DISABLE]->GetTex(), ImVec2(60, 60), ImVec2(0, 0), ImVec2(1, 1), 0))
2024-04-09 16:53:02 +08:00
// {
2024-04-18 11:59:51 +08:00
// m_Controller->m_ScannerCtrl->StopWork();
2024-04-09 16:53:02 +08:00
// }
//}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_(u8"结束").c_str());
}
// Toolbar End
// Jobs List Begin
ImGui::PushStyleVar(ImGuiStyleVar_ChildRounding, 5.0f);
ImGui::BeginChild("TaskList", ImVec2(0, 0), true, ImGuiWindowFlags_MenuBar);
//if (ImGui::BeginMenuBar())
//{
2024-04-18 11:59:51 +08:00
// if (ImGui::BeginMenu(_(u8"任务").c_str(), m_Controller->m_ScannerCtrl->IsStandBy()))
2024-04-09 16:53:02 +08:00
// {
// if (ImGui::MenuItem(_(u8"删除任务").c_str())) {
// g_log->TraceInfo(_(u8"删除任务").c_str());
2024-04-18 11:59:51 +08:00
// m_Controller->jc.RemoveAllJob();
2024-04-09 16:53:02 +08:00
// m_Renderer->ClearScene(true);
// m_PrevRenderer->ClearScene(true);
// }
// ImGui::EndMenu();
// }
// ImGui::EndMenuBar();
//}
2024-04-18 11:59:51 +08:00
//EnterCriticalSection(&m_Controller->jc.m_cs);
//if (m_Controller->jc.GetJob() && m_PrevRenderer->GetBPData() && m_Renderer->GetBPData()) {
// FileProcessor* jfp = m_Controller->jc.GetJob();
2024-04-09 16:53:02 +08:00
// if (ImGui::TreeNode(_(u8"任务信息").c_str()))
// {
// ImGui::Text(_(u8"文件名:%s").c_str(), jfp->GetJobTitle().c_str());
// MetaData::JobDimensions* jd = jfp->GetMetaData()->GetJobDimensions();
// ImGui::Text(_(u8"尺寸:%.3fx%.3fx%.3f").c_str(), jd->xmax - jd->xmin, jd->ymax - jd->ymin, jd->zmax - jd->zmin);
// ImGui::Text(_(u8"材料:%s").c_str(), jfp->GetMetaData()->GetMaterial());
// ImGui::Text(_(u8"层厚:%uμm").c_str(), *jfp->GetMetaData()->GetLayerThickness());
// ImGui::Text(_(u8"层数:%d").c_str(), jfp->GetLayerCount());
// ImGui::Text(_(u8"部件数:%d").c_str(), jfp->GetComponentCount());
// ImGui::TreePop();
// }
// if (ImGui::TreeNode(_(u8"分区信息").c_str()))
// {
// vector<MetaData::ScanField*>* sfs = jfp->GetMetaData()->GetScanFields();
// for (size_t sfIndex = 0; sfIndex < sfs->size(); sfIndex++) {
// MetaData::ScanField* sf = (*sfs)[sfIndex];
// ImGui::BeginGroup();
// ImGui::Text(_(u8"分区%d").c_str(), sf->id);
// ImGui::EndGroup();
// ImGui::SameLine();
// ImGui::BeginGroup();
// ImGui::Text(u8"X:(%.3f,%.3f)", sf->dimension->xmin, sf->dimension->xmax);
// ImGui::Text(u8"Y:(%.3f,%.3f)", sf->dimension->ymin, sf->dimension->ymax);
// ImGui::EndGroup();
// //ImGui::Text()
// ImGui::Separator();
// }
// ImGui::TreePop();
// }
// //char item[100];
// if (ImGui::TreeNode(_(u8"部件参数").c_str()))
// {
// if (g_Admin > USER) {
// vector<string> SetParamTypeCombo = { _(u8"单个"),_(u8"相同"),_(u8"所有") };
// ImGui::PushItemWidth(90);
// ImGui::SemicolonCombo(_(u8"修改限定").c_str(), &jfp->m_SetParamType, SetParamTypeCombo);
// ImGui::PopItemWidth();
// }
// char buffer[1024];
// vector<MetaData::Part*>& partVec = jfp->GetMetaData()->GetPartVec();
// // static MetaData::Part* addPart = nullptr;
// // static MetaData::Part* delPart = nullptr;
// for (size_t partIndex = 0; partIndex < partVec.size(); ++partIndex) {
// MetaData::Part* part = partVec[partIndex];
// if (part->print_enable) {
// sprintf_s(buffer, sizeof(buffer), u8"%d_%s", part->id, StringHelper::AsciiToUtf8(part->name).c_str());
// }
// else sprintf_s(buffer, sizeof(buffer), _(u8"%d_%s 不打印").c_str(), part->id, StringHelper::AsciiToUtf8(part->name).c_str());
// if (ImGui::TreeNode(buffer)) {
// /*if (BaseCtrl::IsStandBy()) {
// if (!part->isCopy) {
// if (ImGui::Button(_(u8"复制零件").c_str())) {
// addPart = part;
// }
// }
// else {
// if (ImGui::Button(_(u8"删除零件").c_str())) {
// delPart = part;
// }
// }
// }*/
// ImGui::BeginGroup();
// sprintf_s(buffer, sizeof(buffer), "%d_%s_enable", part->id, part->name.c_str());
// ImGui::PushID(buffer);
// if (ImGui::Checkbox(_(u8"打印").c_str(), &part->print_enable)) {
// //vector<Part*>* showparts = m_Renderer->GetParts();
// Part* printPart = m_Renderer->GetPart(part->id);
// if (printPart) {
// printPart->SetPrintable(part->print_enable);
// }
// Part* preprintPart = m_PrevRenderer->GetPart(part->id);
// if (preprintPart) {
// preprintPart->SetPrintable(part->print_enable);
// }
// if (part->print_enable) {
// g_log->TraceInfo(_(u8"设置零件%d打印").c_str(), part->id);
// }
// else g_log->TraceInfo(_(u8"设置零件%d不打印").c_str(), part->id);
// jfp->GetMetaData()->ReCalcEvaTime();
// g_SystemInfo->m_StateBean.jobCostMil = jfp->GetMetaData()->GetEvaTime();
// g_SystemInfo->m_StateBean.remainMil = jfp->GetMetaData()->GetRemainTime();
// }
// ImGui::PopID();
// if (!part->paramSet.empty()) {
// static int sel_param = 0;
// ImGui::PushID("param_combo");
// ImGui::PushItemWidth(100);
// ImGui::Combo("", &sel_param, [](void* data, int idx, const char** out_text) {
// ParamSetCfg* ppsc = (ParamSetCfg*)data;
// *out_text = ppsc->ParamSetVec[idx]->ConfigName.data();
// return true; },
// ConfigManager::GetInstance()->GetParamSetCfg(),
// ConfigManager::GetInstance()->GetParamSetCfg()->ParamSetVec.size());
// ImGui::PopItemWidth();
// ImGui::SameLine();
// if (ImGui::Button(_(u8"应用参数").c_str()))
// {
// ParamSetCfg::ParamSet* ps = ConfigManager::GetInstance()->GetParamSetCfg()->ParamSetVec[sel_param];
// std::vector<MetaData::Layer*>& layers = jfp->GetMetaData()->GetLayersVec();
// for (unsigned int i = 0; i < ps->PowderSets.size(); i++)
// {
// for (unsigned int layer = ps->PowderSets[i]->start_layer;
// layer < jfp->GetLayerCount() && layer <= ps->PowderSets[i]->end_layer;
// layer++)
// {
// layers[layer]->powder = ps->PowderSets[i]->powder * layers[layer]->layer_thickness;
// }
// }
// if (jfp->m_SetParamType == JobFileProcessor::SingleParam)
// {
// for (set<MetaData::ParameterSet*>::iterator it = part->paramSet.begin(); it != part->paramSet.end(); it++) {
// JobMetaData::ParameterSet* param = (*it);
// ParamSetCfg::ParamSetCfg::LaserSet* ls = ps->LaserSetMap[param->set_type];
// if (ls == nullptr)
// continue;
// param->laser_speed = ls->laser_speed;
// param->laser_set->laser_diameter = ls->laser_diameter;
// param->laser_set->laser_power = ls->laser_power;
// }
// }
// else
// {
// map<int, JobMetaData::ParameterSet*>* paramMap = jfp->GetMetaData()->GetParameterMap();
// map<int, JobMetaData::ParameterSet*>::iterator it;
// for (it = (*paramMap).begin(); it != (*paramMap).end(); it++)
// {
// if (it->second) {
// ParamSetCfg::LaserSet* ls = ps->LaserSetMap[it->second->set_type];
// if (ls == nullptr)
// continue;
// it->second->laser_speed = ls->laser_speed;
// it->second->laser_set->laser_diameter = ls->laser_diameter;
// it->second->laser_set->laser_power = ls->laser_power;
// }
// }
// }
// g_log->TraceInfo(_(u8"执行应用参数").c_str());
// }
// ImGui::PopID();
// if (ImGui::TreeNode(_(u8"偏移设置").c_str()))
// {
// static bool is_changed;
// ImGui::PushItemWidth(100);
// sprintf_s(buffer, sizeof(buffer), "%d_xoffset", part->id);
// ImGui::PushID(buffer);
// if (ImGui::InputFloat(_(u8"X偏移").c_str(), &part->partPosBean.m_XOffset, 0, 0, "%.6f", ImGuiInputTextFlags_EnterReturnsTrue)) {
// is_changed = true;
// g_log->TraceInfo(_(u8"设置零件%dX方向偏移%.6f").c_str(), part->id, part->partPosBean.m_XOffset);
// }
// ImGui::PopID();
// sprintf_s(buffer, sizeof(buffer), "%d_yoffset", part->id);
// ImGui::PushID(buffer);
// if (ImGui::InputFloat(_(u8"Y偏移").c_str(), &part->partPosBean.m_YOffset, 0, 0, "%.6f", ImGuiInputTextFlags_EnterReturnsTrue)) {
// is_changed = true;
// g_log->TraceInfo(_(u8"设置零件%dY方向偏移%.6f").c_str(), part->id, part->partPosBean.m_YOffset);
// }
// ImGui::PopID();
// sprintf_s(buffer, sizeof(buffer), "%d_rotate", part->id);
// ImGui::PushID(buffer);
// if (ImGui::InputFloat(_(u8"旋转角度").c_str(), &part->partPosBean.m_RotateAngle, 0, 0, "%.6f", ImGuiInputTextFlags_EnterReturnsTrue)) {
// is_changed = true;
// g_log->TraceInfo(_(u8"设置零件%d逆时针旋转%.6f").c_str(), part->id, part->partPosBean.m_RotateAngle);
// }
// ImGui::PopID();
// ImGui::PopItemWidth();
// if (is_changed || m_PrevRenderer->GetPart(part->id)->IsOffsetUpdated())
// {
// is_changed = false;
// part->partPosBean.m_Radians = (float)MathHelper::DegreesToRadians(part->partPosBean.m_RotateAngle);
// part->partPosBean.m_PartCenterX = (part->partPosBean.m_XOffset + part->partPosBean.m_SrcPartCenterX);
// part->partPosBean.m_PartCenterY = (part->partPosBean.m_YOffset + part->partPosBean.m_SrcPartCenterY);
// Part* prevPart = m_PrevRenderer->GetPart(part->id);
// if (prevPart)prevPart->UpdateOffset();
// //double model_x_offset = 0.0, model_y_offset = 0.0, model_rotation = 0.0;
// //m_PrevRenderer->GetPart(part->id)->GetOffset(&model_x_offset, &model_y_offset, &model_rotation);
// Part* printPart = m_Renderer->GetPart(part->id);
// //if (printPart)printPart->UpdateOffset(model_x_offset, model_y_offset, model_rotation);
// if (printPart)printPart->UpdateOffset();
// g_log->m_LogDao->UpdatePartPos(jfp->GetJobUid(), part->id, part->partPosBean.m_XOffset, part->partPosBean.m_YOffset, part->partPosBean.m_RotateAngle);
// //g_log->m_LogDao->UpdatePartAdditionOffset(jfp->GetJobUid(), part->id, (float)model_x_offset, (float)model_y_offset, (float)model_rotation);
// }
// ImGui::TreePop();
// }
2024-04-18 11:59:51 +08:00
// ExtCfg* stc = m_Controller->m_ExtCfg;
2024-04-09 16:53:02 +08:00
// if (stc->m_model_enable && ImGui::TreeNode(_(u8"模具拼接").c_str()))
// {
// ImGui::PushItemWidth(80);
// ImGui::Text(_(u8"扫描方式").c_str());
// ImGui::SameLine();
// sprintf_s(buffer, sizeof(buffer), "%zd_scanMode", partIndex);
// vector<string> model_scan_modeCombo = { _(u8"激光"),_(u8"红光") };
// ImGui::PushID(buffer);
// ImGui::SemicolonCombo("", &stc->m_model_scan_mode, model_scan_modeCombo);
// ImGui::PopID();
// ImGui::Text(_(u8"扫描类型").c_str());
// ImGui::SameLine();
// sprintf_s(buffer, sizeof(buffer), "%d_scanType", part->id);
// int scanType = stc->m_model_scan_type == "Border" ? 0 : 1;
// vector<string> scanTypeCombo = { _(u8"轮廓"),_(u8"实体") };
// ImGui::PushID(buffer);
// if (ImGui::SemicolonCombo("", &scanType, scanTypeCombo)) {
// if (scanType == 0)
// stc->m_model_scan_type = "Border";
// else
// stc->m_model_scan_type = "Hatching";
// }
// ImGui::PopID();
// if (scanType == 0) {
// ImGui::Combo(_(u8"轮廓类型").c_str(), &stc->m_model_border_type, "AllBorder\0Border\0BorderDown\0BorderAdditionalDown\0BorderBlockedDown\0BorderAdditional\0BorderBlocked\0BorderUp\0BorderAdditionalUp\0BorderBlockedUp\0BorderSupport\0BorderAdditionalSupport\0");
// }
// ImGui::Text(_(u8"扫描速度").c_str());
// ImGui::SameLine();
// sprintf_s(buffer, sizeof(buffer), "%d_scanSpeed", part->id);
// ImGui::PushID(buffer);
// ImGui::InputDouble("", &stc->m_model_laser_speed, 0, 0, "%.2f", ImGuiInputTextFlags_EnterReturnsTrue);
// ImGui::PopID();
// if (stc->m_model_scan_mode == 0) {
// ImGui::Text(_(u8"扫描功率").c_str());
// ImGui::SameLine();
// sprintf_s(buffer, sizeof(buffer), "%d_scanPower", part->id);
// ImGui::PushID(buffer);
// ImGui::InputInt("", &stc->m_model_laser_power, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue);
// ImGui::PopID();
// }
2024-04-18 11:59:51 +08:00
// if (m_Controller->m_ScannerCtrl->IsTestLayerEnable()) {
2024-04-09 16:53:02 +08:00
// if (ImGui::Button(_(u8"拼接测试").c_str())) {
// if (g_isDebug)
// {
// stc->m_model_scan_part_id = part->id;
2024-04-18 11:59:51 +08:00
// m_Controller->m_ScannerCtrl->ModelScan();
2024-04-09 16:53:02 +08:00
// }
// else {
2024-04-18 11:59:51 +08:00
// if (stc->m_model_scan_mode == 0 && m_Controller->m_AlarmCfg->m_PrintCabinDoorOpenAlarm->m_IsAlarm) {
2024-04-09 16:53:02 +08:00
// g_Toast->AddToast(new ToastBean(_(u8"舱门打开,不能执行任务").c_str(), 3000, ImVec4(1, 0, 0, 1)));
// }
2024-04-18 11:59:51 +08:00
// else if (!m_Controller->m_IoCfgWrapper->m_Laser->IsActive()) {
2024-04-09 16:53:02 +08:00
// g_Toast->AddToast(new ToastBean(_(u8"请先开启激光器").c_str(), 3000, ImVec4(1, 0, 0, 1)));
// }
// else {
// stc->m_model_scan_part_id = part->id;
2024-04-18 11:59:51 +08:00
// m_Controller->m_ScannerCtrl->ModelScan();
2024-04-09 16:53:02 +08:00
// g_log->TraceInfo(_(u8"执行模具拼接测试").c_str());
// }
// }
// }
// }
// else {
// if (ImGui::Button(_(u8"停止拼接").c_str()))
// {
2024-04-18 11:59:51 +08:00
// m_Controller->m_ScannerCtrl->StopModelScan();
2024-04-09 16:53:02 +08:00
// g_log->TraceInfo(_(u8"中断模具拼接测试").c_str());
// }
// }
// ImGui::PopItemWidth();
// ImGui::TreePop();
// }
// map<int, JobMetaData::ParameterSet*>* paramMap = jfp->GetMetaData()->GetParameterMap();
// char paramNameBuffer[50];
// int paramIndex = 0;
// for (set<MetaData::ParameterSet*>::iterator it = part->paramSet.begin(); it != part->paramSet.end(); it++)
// {
// JobMetaData::ParameterSet* param = (*it);
// if (param != NULL) {
// sprintf_s(paramNameBuffer, sizeof(paramNameBuffer), u8"%s_%d", StringHelper::AsciiToUtf8(param->set_type).c_str(), paramIndex);
// if (ImGui::TreeNode(paramNameBuffer))
// {
// ImGui::Text(_(u8"扫描速度").c_str());
// ImGui::SameLine();
// sprintf_s(buffer, sizeof(buffer), "%d%s_speed", param->id, param->set_type.c_str());
// ImGui::PushID(buffer);
// ImGui::PushItemWidth(80.0f);
2024-04-18 11:59:51 +08:00
// if (ImGui::InputFloatEx("mm/s", &param->laser_speed, 0, 0, "%.4f", ImGuiInputTextFlags_EnterReturnsTrue, &m_Controller->m_ParamLimitCfg->m_ScanSpeedMin, &m_Controller->m_ParamLimitCfg->m_ScanSpeedMax)) {
2024-04-09 16:53:02 +08:00
// if (jfp->m_SetParamType == JobFileProcessor::SameParam) {
// for (map<int, JobMetaData::ParameterSet*>::iterator it = paramMap->begin(); it != paramMap->end(); it++) {
// JobMetaData::ParameterSet* tempset = it->second;
// if (tempset->set_type == param->set_type) {
// tempset->laser_speed = param->laser_speed;
// }
// }
// g_log->TraceInfo(_(u8"修改所有零件的%s扫描速度为%.4f").c_str(), param->set_type, param->laser_speed);
// }
// else if (jfp->m_SetParamType == JobFileProcessor::AllParam) {
// for (map<int, JobMetaData::ParameterSet*>::iterator it = paramMap->begin(); it != paramMap->end(); it++) {
// JobMetaData::ParameterSet* tempset = it->second;
// tempset->laser_speed = param->laser_speed;
// }
// g_log->TraceInfo(_(u8"修改所有%s的扫描速度为%.4f").c_str(), param->set_type.c_str(), param->laser_speed);
// }
// else {
// g_log->TraceInfo(_(u8"修改零件%d的%s扫描速度为%.4f").c_str(), part->id, param->set_type.c_str(), param->laser_speed);
// }
// }
// ImGui::PopItemWidth();
// ImGui::PopID();
// ImGui::Text(_(u8"扫描功率").c_str());
// ImGui::SameLine();
// sprintf_s(buffer, sizeof(buffer), "%d%s_power", param->id, param->set_type.c_str());
// ImGui::PushID(buffer);
// ImGui::PushItemWidth(80.0f);
2024-04-18 11:59:51 +08:00
// if (ImGui::InputFloatEx("%", &param->laser_set->laser_power, 0, 0, "%.4f", ImGuiInputTextFlags_EnterReturnsTrue, &m_Controller->m_ParamLimitCfg->m_ScanPowerMin, &m_Controller->m_ParamLimitCfg->m_ScanPowerMax)) {
2024-04-09 16:53:02 +08:00
// param->laser_set->laser_real_power = param->laser_set->laser_power;
// if (jfp->m_SetParamType == JobFileProcessor::SameParam) {
// for (map<int, JobMetaData::ParameterSet*>::iterator it = paramMap->begin(); it != paramMap->end(); it++) {
// JobMetaData::ParameterSet* tempset = it->second;
// if (tempset->set_type == param->set_type) {
// tempset->laser_set->laser_power = param->laser_set->laser_power;
// tempset->laser_set->laser_real_power = param->laser_set->laser_real_power;
// }
// }
// g_log->TraceInfo(_(u8"修改所有零件的%s扫描功率为%.4f").c_str(), param->set_type.c_str(), param->laser_set->laser_power);
// }
// else if (jfp->m_SetParamType == JobFileProcessor::AllParam) {
// for (map<int, JobMetaData::ParameterSet*>::iterator it = paramMap->begin(); it != paramMap->end(); it++) {
// JobMetaData::ParameterSet* tempset = it->second;
// tempset->laser_set->laser_power = param->laser_set->laser_power;
// tempset->laser_set->laser_real_power = param->laser_set->laser_real_power;
// }
// g_log->TraceInfo(_(u8"修改所有%s的扫描功率为%.4f").c_str(), param->set_type.c_str(), param->laser_set->laser_power);
// }
// else {
// g_log->TraceInfo(_(u8"修改零件%d的%s扫描功率为%.4f").c_str(), part->id, param->set_type.c_str(), param->laser_set->laser_power);
// }
// }
// ImGui::PopItemWidth();
// ImGui::PopID();
// ImGui::Text(_(u8"光斑直径").c_str());
// ImGui::SameLine();
// sprintf_s(buffer, sizeof(buffer), "%d%s_diameter", param->id, param->set_type.c_str());
// ImGui::PushID(buffer);
// ImGui::PushItemWidth(80.0f);
2024-04-18 11:59:51 +08:00
// if (ImGui::InputFloatEx("mm", &param->laser_set->laser_diameter, 0, 0, "%.4f", ImGuiInputTextFlags_EnterReturnsTrue, &m_Controller->m_ParamLimitCfg->m_ScanDiameterMin, &m_Controller->m_ParamLimitCfg->m_ScanDiameterMax)) {
2024-04-09 16:53:02 +08:00
// if (jfp->m_SetParamType == JobFileProcessor::SameParam) {
// for (map<int, JobMetaData::ParameterSet*>::iterator it = paramMap->begin(); it != paramMap->end(); it++) {
// JobMetaData::ParameterSet* tempset = it->second;
// if (tempset->set_type == param->set_type) {
// tempset->laser_set->laser_diameter = param->laser_set->laser_diameter;
// }
// }
// g_log->TraceInfo(_(u8"修改所有零件的%s光斑直径为%.4f").c_str(), param->set_type.c_str(), param->laser_set->laser_diameter);
// }
// else if (jfp->m_SetParamType == JobFileProcessor::AllParam) {
// for (map<int, JobMetaData::ParameterSet*>::iterator it = paramMap->begin(); it != paramMap->end(); it++) {
// JobMetaData::ParameterSet* tempset = it->second;
// tempset->laser_set->laser_diameter = param->laser_set->laser_diameter;
// }
// g_log->TraceInfo(_(u8"修改所有%s的光斑直径为%.4f").c_str(), param->set_type.c_str(), param->laser_set->laser_diameter);
// }
// else {
// g_log->TraceInfo(_(u8"修改零件%d的%s光斑直径为%.4f").c_str(), part->id, param->set_type.c_str(), param->laser_set->laser_diameter);
// }
// }
// ImGui::PopItemWidth();
// ImGui::PopID();
// ImGui::TreePop();
// }
// paramIndex++;
// }
// }
// }
// ImGui::EndGroup();
// ImGui::TreePop();
// }
// if (ImGui::IsItemHovered())
// {
// m_PrevRenderer->GetBPData()->SetSelected(partIndex);
// }
// else if (m_PrevRenderer->GetBPData()->GetSelected() == partIndex)
// {
// m_PrevRenderer->GetBPData()->Diselected();
// }
// }
//
// ImGui::TreePop();
// }
// if (ImGui::TreeNode(_(u8"图层浏览").c_str())) {
// unsigned int layercount = jfp->GetLayerCount();
// static int selected_layer = 0;
// if (fast_preview && m_RenderToPreview)
// {
// static bool layer_changed = false;
// static uint64_t tick = 0;
// if (ImGui::VSliderInt("##vInt", ImVec2(18, ImGui::GetCurrentWindowRead()->ContentRegionRect.GetHeight() - (ImGui::GetCursorScreenPos().y - ImGui::GetCurrentWindowRead()->ContentRegionRect.GetTL().y)), &selected_layer, 0, jfp->GetLayerCount(), ""))
// {
// layer_changed = true;
// tick = GetTickCount64();
// }
// if (ImGui::IsItemHovered())
// {
// ImGui::SetTooltip(_(u8"第%d层").c_str(), selected_layer + 1);
// ImGuiIO& io = ImGui::GetIO();
// if (io.MouseWheel != 0.0f)
// {
// selected_layer += io.MouseWheel;
// if (selected_layer < 0)selected_layer = 0;
// if (selected_layer > layercount - 1)selected_layer = layercount - 1;
// layer_changed = true;
// }
// }
// if (layer_changed && (GetTickCount64() - tick > 5))
// {
// m_PrevRenderer->SetPreviewLayer(selected_layer);
// layer_changed = false;
// }
// ImGui::SameLine();
// }
// ImGui::BeginChild("layer_preview");
// char buffer[20];
// ImGui::BeginGroup();
// ImGuiListClipper clipper(layercount);
// unsigned int selectIndex = 0;
// JobMetaData::Layer* layer;
// if (m_RenderToPreview) {
// layer = m_PrevRenderer->GetJob()->GetMetaData()->GetPreviewLayer();
// if (layer)selectIndex = layer->index;
// if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_DownArrow)))
// {
// if (selectIndex < layercount - 1) {
// selectIndex++;
// m_PrevRenderer->SetPreviewLayer(selectIndex);
// }
// }
// if (ImGui::IsWindowFocused() && ImGui::IsKeyReleased(ImGui::GetKeyIndex(ImGuiKey_UpArrow)))
// {
// if (selectIndex > 0) {
// selectIndex--;
// m_PrevRenderer->SetPreviewLayer(selectIndex);
// }
// }
// }
// else {
// layer = jfp->GetMetaData()->GetCurrentLayer();
// if (layer)selectIndex = layer->index;
// m_Renderer->SetCurrentLayer(selectIndex);
// }
// while (clipper.Step()) {
// for (int i = clipper.DisplayStart; i < clipper.DisplayEnd; i++) {
// if (jfp->GetStartIndex() == i)
// sprintf_s(buffer, sizeof(buffer), _(u8"*层%u").c_str(), i + 1);
// else sprintf_s(buffer, sizeof(buffer), _(u8"层%u").c_str(), i + 1);
// const bool item_selected = (i == selectIndex);
// if (ImGui::Selectable(buffer, item_selected)) {
// if (m_RenderToPreview)
// {
// m_PrevRenderer->SetPreviewLayer(i);
// selected_layer = i;
// }
// }
// if (BaseCtrl::IsStart() && !m_RenderToPreview) {
// ImGui::SetScrollY(selectIndex * clipper.ItemsHeight);
// }
// if (ImGui::IsItemHovered())
// {
// MetaData::Layer* tmp_layer = m_PrevRenderer->GetJob()->GetLayer(i);
// ImGui::BeginTooltip();
// ImGui::Text(_(u8"层厚(μm)%u").c_str(), tmp_layer->layer_thickness);
// ImGui::Text(_(u8"供粉量(μm)%u").c_str(), tmp_layer->powder);
// ImGui::EndTooltip();
// }
// if (item_selected && m_RenderToPreview) {
2024-04-18 11:59:51 +08:00
// if (m_Controller->m_ScannerCtrl->IsStandBy() || (g_Admin > USER)) {
2024-04-09 16:53:02 +08:00
// if (ImGui::BeginPopupContextItem(buffer))
// {
2024-04-18 11:59:51 +08:00
// if (m_Controller->m_ScannerCtrl->IsStandBy()) {
2024-04-09 16:53:02 +08:00
// if (ImGui::Button(_(u8"设为开始").c_str())) {
// jfp->SetStartIndex(selectIndex);
// g_SystemInfo->m_StateBean.remainMil = jfp->GetMetaData()->GetRemainTime();
// g_log->TraceKeyInfo(_(u8"设定开始层:%u").c_str(), selectIndex + 1);
// ImGui::CloseCurrentPopup();
// }
// ImGui::SameLine(0, 10);
2024-04-18 11:59:51 +08:00
// if (m_Controller->m_ScannerCtrl->IsTestLayerEnable()) {
2024-04-09 16:53:02 +08:00
// if (ImGui::Button(_(u8"红光测试").c_str())) {
// vector<ScannerControlCfg*>* laserCfg = ConfigManager::GetInstance()->GetMatchScannerControlCfg();
// for (size_t cIndex = 0; cIndex < laserCfg->size(); cIndex++) {
// ScannerControlCfg* lcfg = (*laserCfg)[cIndex];
// if (lcfg->m_LaserEnable && lcfg->m_LaserEnable->IsActive()) {
// lcfg->m_LaserEnable->SetActive(false);
// }
// if (lcfg->m_LaserRed && !lcfg->m_LaserRed->IsActive()) {
// lcfg->m_LaserRed->SetActive(true);
// }
// }
// ImGui::CloseCurrentPopup();
2024-04-18 11:59:51 +08:00
// m_Controller->m_ScannerCtrl->TestLayer();
2024-04-09 16:53:02 +08:00
// g_log->TraceInfo(_(u8"执行红光测试").c_str());
// }
// }
// else {
// if (ImGui::Button(_(u8"停止红光测试").c_str())) {
// vector<ScannerControlCfg*>* laserCfg = ConfigManager::GetInstance()->GetMatchScannerControlCfg();
// for (size_t lrIndex = 0; lrIndex < laserCfg->size(); lrIndex++) {
// ScannerControlCfg* lcfg = (*laserCfg)[lrIndex];
// if (lcfg->m_LaserRed && lcfg->m_LaserRed->IsActive()) {
// lcfg->m_LaserRed->SetActive(false);
// }
// }
// ImGui::CloseCurrentPopup();
2024-04-18 11:59:51 +08:00
// m_Controller->m_ScannerCtrl->StopRedTest();
2024-04-09 16:53:02 +08:00
// g_log->TraceInfo(_(u8"终止红光测试").c_str());
// }
// }
// }
// ImGui::Separator();
// //ImGui::BeginChild("layer_param", ImVec2(-1, g_Admin == USER ? 105 : 135), true, ImGuiWindowFlags_NoScrollWithMouse);
// ImGui::PushItemWidth(80);
2024-04-18 11:59:51 +08:00
// if (m_Controller->m_ScannerCtrl->IsStandBy() && g_Admin > USER) {
2024-04-09 16:53:02 +08:00
// ImGui::Text(_(u8"层厚(μm)").c_str());
// ImGui::SameLine(0, 10);
// ImGui::PushID("LayerThickInput");
// //double layer_thickness = layer->layer_thickness * 1000;
2024-04-18 11:59:51 +08:00
// if (ImGui::InputScalarExFix("", ImGuiDataType_U32, &layer->layer_thickness, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue, &m_Controller->m_ParamLimitCfg->m_LayerThicknessMin, &m_Controller->m_ParamLimitCfg->m_LayerThicknessMax))
2024-04-09 16:53:02 +08:00
// {
// //layer->layer_thickness = layer_thickness / 1000;
// if (jfp->IsLayerInherit())
// {
// for (unsigned int layer_idx = i + 1; layer_idx < layercount; layer_idx++)
// {
// jfp->GetLayer(layer_idx)->layer_thickness = layer->layer_thickness;
// m_PrevRenderer->GetJob()->GetLayer(layer_idx)->layer_thickness = layer->layer_thickness;
// }
// g_log->TraceKeyInfo(_(u8"修改第%d层开始的所有层厚为%u").c_str(), i + 1, layer->layer_thickness);
// }
// else {
// g_log->TraceKeyInfo(_(u8"修改第%d层层厚为%u").c_str(), i + 1, layer->layer_thickness);
// }
// }
// //ImGui::SameLine();
2024-04-18 11:59:51 +08:00
// //ImGui::Text("(%u - %u)", m_Controller->m_ParamLimitCfg->m_LayerThicknessMin, m_Controller->m_ParamLimitCfg->m_LayerThicknessMax);
2024-04-09 16:53:02 +08:00
// ImGui::PopID();
// }
// if (g_Admin > USER) {
// ImGui::Text(_(u8"供粉量(μm)").c_str());
// ImGui::SameLine(0, 10);
// ImGui::PushID("SupplyPowderInput");
// //double powder = layer->powder * 1000.0f;
2024-04-18 11:59:51 +08:00
// if (ImGui::InputScalarExFix("", ImGuiDataType_U32, &layer->powder, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue, &m_Controller->m_ParamLimitCfg->m_SupplyPowderMin, &m_Controller->m_ParamLimitCfg->m_SupplyPowderMax))
2024-04-09 16:53:02 +08:00
// {
// //layer->powder = powder / 1000.0f;
// if (jfp->IsLayerInherit())
// {
// for (unsigned int layer_idx = i + 1; layer_idx < layercount; layer_idx++)
// {
// jfp->GetLayer(layer_idx)->powder = layer->powder;
// m_PrevRenderer->GetJob()->GetLayer(layer_idx)->powder = layer->powder;
// }
// g_log->TraceKeyInfo(_(u8"修改第%d层开始的所有供粉量为%u").c_str(), i + 1, layer->powder);
// }
// else {
// g_log->TraceKeyInfo(_(u8"修改第%d层供粉量为%u").c_str(), i + 1, layer->powder);
// }
// unsigned int judgeLevel = 0;
// layer = jfp->GetMetaData()->GetCurrentLayer();
// unsigned int judgeIndex = 0;
// if (layer)judgeIndex = layer->index;
2024-04-18 11:59:51 +08:00
// //if (!jfp->JudgePowder(abs(m_Controller->m_GTSController->Powder()->GetState()->realPos), judgeIndex, judgeLevel)) {
2024-04-09 16:53:02 +08:00
// // ImGui::CloseCurrentPopup();
// // char judgeBuffer[256];
// // sprintf_s(judgeBuffer, sizeof(judgeBuffer), _(u8"供粉不足,目前粉料只能打印到第%u层").c_str(), judgeLevel);
// // g_Toast->AddToast(new ToastBean(judgeBuffer, 5000, Toast::COLOR_ORANGE));
// //}
// }
// ImGui::PopID();
// }
2024-04-18 11:59:51 +08:00
// if (m_Controller->m_ScannerCtrl->IsStandBy() && g_Admin != USER) {
2024-04-09 16:53:02 +08:00
// ImGui::Text(_(u8"扫描次数:").c_str());
// ImGui::SameLine(0, 10);
// ImGui::PushID("ScanTimesInput");
// int scan_times = layer->scan_times;
2024-04-18 11:59:51 +08:00
// if (ImGui::InputScalarExFix("", ImGuiDataType_S32, &scan_times, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue, &m_Controller->m_ParamLimitCfg->m_ScanTimesMin, &m_Controller->m_ParamLimitCfg->m_ScanTimesMax))
2024-04-09 16:53:02 +08:00
// {
// layer->scan_times = scan_times;
// if (jfp->IsLayerInherit())
// {
// for (unsigned int layer_idx = i + 1; layer_idx < layercount; layer_idx++)
// {
// jfp->GetLayer(layer_idx)->scan_times = layer->scan_times;
// m_PrevRenderer->GetJob()->GetLayer(layer_idx)->scan_times = layer->scan_times;
// }
// g_log->TraceKeyInfo(_(u8"修改第%d层扫描次数为%u").c_str(), i + 1, layer->scan_times);
// }
// else {
// g_log->TraceKeyInfo(_(u8"修改第%d层开始的所有扫描次数为%u").c_str(), i + 1, layer->scan_times);
// }
// }
// ImGui::PopID();
// }
// bool layer_inherit = jfp->IsLayerInherit();
// ImGui::Text(_(u8"层间继承").c_str()); ImGui::SameLine();
// ImGui::SameLine(0, 10);
// if (ImGui::Checkbox(" ", &layer_inherit))
// jfp->SetLayerInherit(layer_inherit);
// ImGui::PopItemWidth();
// // ImGui::EndChild();
// ImGui::EndPopup();
// }
// }
// }
// }
// }
// ImGui::EndGroup();
// ImGui::EndChild();
// ImGui::TreePop();
// }
//}
2024-04-18 11:59:51 +08:00
//LeaveCriticalSection(&m_Controller->jc.m_cs);
2024-04-09 16:53:02 +08:00
ImGui::EndChild();
ImGui::PopStyleVar();
// Jobs List End
ImGui::End();
}
void UIWin::DrawIO()
{
if (!m_IOWinShow)return;
//if (!m_UIController.m_ScannerCtrl->IsStandBy() && g_Admin == USER)return;
2024-04-18 11:59:51 +08:00
m_Controller->m_Machine->DrawIO(&m_IOWinShow);
2024-04-09 16:53:02 +08:00
}
2024-04-01 18:26:14 +08:00
void UIWin::SetupDockSpace(void)
{
static ImGuiDockNodeFlags opt_flags = ImGuiDockNodeFlags_PassthruCentralNode | ImGuiDockNodeFlags_AutoHideTabBar;
ImGuiWindowFlags window_flags = ImGuiWindowFlags_NoDocking;
ImGuiViewport* viewport = ImGui::GetMainViewport();
ImGui::SetNextWindowBgAlpha(255.0f);
ImGui::SetNextWindowPos(ImVec2(viewport->Pos.x, viewport->Pos.y + TITLE_HEIGHT));
ImGui::SetNextWindowSize(ImVec2(viewport->Size.x, viewport->Size.y - TITLE_HEIGHT - STATUS_HEIGHT));
ImGui::SetNextWindowViewport(viewport->ID);
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
window_flags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove;
window_flags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus/* | ImGuiWindowFlags_NoBackground*/;
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f));
ImGui::Begin("MainDockSpace", NULL, window_flags);
ImGui::PopStyleVar();
ImGui::PopStyleVar(2);
dockspace_id = ImGui::GetID("MainDockspace");
ImGui::DockSpace(dockspace_id, ImVec2(0.0f, 0.0f), opt_flags);
ImGui::End();
}
void UIWin::Display() {
2024-04-02 17:45:03 +08:00
g_log->TraceInfo(_(u8"系统启动").c_str());
2024-04-01 18:26:14 +08:00
while (!glfwWindowShouldClose(m_GLFWWin))
{
//glfwPollEvents();
glfwWaitEventsTimeout(0.02);
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
Draw();
ImGui::Render();
glfwGetFramebufferSize(m_GLFWWin, &m_winWidth, &m_winHeight);
glViewport(0, 0, m_winWidth, m_winHeight);
glClearColor(m_bgColor.x, m_bgColor.y, m_bgColor.z, m_bgColor.w);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
m_Renderer->Render();
m_PrevRenderer->Render();
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
glfwMakeContextCurrent(m_GLFWWin);
glfwSwapBuffers(m_GLFWWin);
}
2024-04-02 17:45:03 +08:00
g_log->TraceInfo(_(u8"系统退出").c_str());
2024-04-01 18:26:14 +08:00
}