void SolveSpaceUI::AddToRecentList(const std::string &filename) { RemoveFromRecentList(filename); for(int src = MAX_RECENT - 2; src >= 0; src--) { RecentFile[src+1] = RecentFile[src]; } RecentFile[0] = filename; RefreshRecentMenus(); }
void SolveSpace::AddToRecentList(char *file) { RemoveFromRecentList(file); int src; for(src = MAX_RECENT - 2; src >= 0; src--) { strcpy(RecentFile[src+1], RecentFile[src]); } strcpy(RecentFile[0], file); RefreshRecentMenus(); }
void SolveSpaceUI::RemoveFromRecentList(const std::string &filename) { int dest = 0; for(int src = 0; src < (int)MAX_RECENT; src++) { if(filename != RecentFile[src]) { if(src != dest) RecentFile[dest] = RecentFile[src]; dest++; } } while(dest < (int)MAX_RECENT) RecentFile[dest++].clear(); RefreshRecentMenus(); }
void SolveSpace::RemoveFromRecentList(char *file) { int src, dest; dest = 0; for(src = 0; src < MAX_RECENT; src++) { if(strcmp(file, RecentFile[src]) != 0) { if(src != dest) strcpy(RecentFile[dest], RecentFile[src]); dest++; } } while(dest < MAX_RECENT) strcpy(RecentFile[dest++], ""); RefreshRecentMenus(); }
void SolveSpace::RemoveFromRecentList(const std::string& file) { int src, dest; dest = 0; for(src = 0; src < MAX_RECENT; src++) { if(RecentFile[src].compare(file) != 0) { if(src != dest) RecentFile[dest] = RecentFile[src]; dest++; } } while(dest < MAX_RECENT) RecentFile[dest++] = std::string(); RefreshRecentMenus(); }
HMENU CreateGraphicsWindowMenus(void) { HMENU top = CreateMenu(); HMENU m = 0; int i; int subMenu = 0; for(i = 0; SS.GW.menu[i].level >= 0; i++) { char label[100] = { '\0' }; if(SS.GW.menu[i].label) { char accelbuf[40]; const char *sep = MakeAcceleratorLabel(SS.GW.menu[i].accel, accelbuf) ? "\t" : ""; sprintf(label, "%s%s%s", SS.GW.menu[i].label, sep, accelbuf); } if(SS.GW.menu[i].level == 0) { m = CreateMenu(); AppendMenu(top, MF_STRING | MF_POPUP, (UINT_PTR)m, label); if(subMenu >= (int)arraylen(SubMenus)) oops(); SubMenus[subMenu] = m; subMenu++; } else if(SS.GW.menu[i].level == 1) { if(SS.GW.menu[i].id == GraphicsWindow::MNU_OPEN_RECENT) { RecentOpenMenu = CreateMenu(); AppendMenu(m, MF_STRING | MF_POPUP, (UINT_PTR)RecentOpenMenu, label); } else if(SS.GW.menu[i].id == GraphicsWindow::MNU_GROUP_RECENT) { RecentImportMenu = CreateMenu(); AppendMenu(m, MF_STRING | MF_POPUP, (UINT_PTR)RecentImportMenu, label); } else if(SS.GW.menu[i].label) { AppendMenu(m, MF_STRING, SS.GW.menu[i].id, label); } else { AppendMenu(m, MF_SEPARATOR, SS.GW.menu[i].id, ""); } } else oops(); } RefreshRecentMenus(); return top; }
HMENU CreateGraphicsWindowMenus(void) { HMENU top = CreateMenu(); HMENU m; int i; int subMenu = 0; for(i = 0; SS.GW.menu[i].level >= 0; i++) { if(SS.GW.menu[i].level == 0) { m = CreateMenu(); AppendMenu(top, MF_STRING | MF_POPUP, (UINT_PTR)m, SS.GW.menu[i].label); if(subMenu >= arraylen(SubMenus)) oops(); SubMenus[subMenu] = m; subMenu++; } else if(SS.GW.menu[i].level == 1) { if(SS.GW.menu[i].label) { AppendMenu(m, MF_STRING, SS.GW.menu[i].id, SS.GW.menu[i].label); } else { AppendMenu(m, MF_SEPARATOR, SS.GW.menu[i].id, ""); } } else if(SS.GW.menu[i].level == 10) { RecentOpenMenu = CreateMenu(); AppendMenu(m, MF_STRING | MF_POPUP, (UINT_PTR)RecentOpenMenu, SS.GW.menu[i].label); } else if(SS.GW.menu[i].level == 11) { RecentImportMenu = CreateMenu(); AppendMenu(m, MF_STRING | MF_POPUP, (UINT_PTR)RecentImportMenu, SS.GW.menu[i].label); } else oops(); } RefreshRecentMenus(); return top; }
void SolveSpaceUI::Init() { SS.tangentArcRadius = 10.0; // Then, load the registry settings. int i; // Default list of colors for the model material modelColor[0] = CnfThawColor(RGBi(150, 150, 150), "ModelColor_0"); modelColor[1] = CnfThawColor(RGBi(100, 100, 100), "ModelColor_1"); modelColor[2] = CnfThawColor(RGBi( 30, 30, 30), "ModelColor_2"); modelColor[3] = CnfThawColor(RGBi(150, 0, 0), "ModelColor_3"); modelColor[4] = CnfThawColor(RGBi( 0, 100, 0), "ModelColor_4"); modelColor[5] = CnfThawColor(RGBi( 0, 80, 80), "ModelColor_5"); modelColor[6] = CnfThawColor(RGBi( 0, 0, 130), "ModelColor_6"); modelColor[7] = CnfThawColor(RGBi( 80, 0, 80), "ModelColor_7"); // Light intensities lightIntensity[0] = CnfThawFloat(1.0f, "LightIntensity_0"); lightIntensity[1] = CnfThawFloat(0.5f, "LightIntensity_1"); ambientIntensity = 0.3; // no setting for that yet // Light positions lightDir[0].x = CnfThawFloat(-1.0f, "LightDir_0_Right" ); lightDir[0].y = CnfThawFloat( 1.0f, "LightDir_0_Up" ); lightDir[0].z = CnfThawFloat( 0.0f, "LightDir_0_Forward" ); lightDir[1].x = CnfThawFloat( 1.0f, "LightDir_1_Right" ); lightDir[1].y = CnfThawFloat( 0.0f, "LightDir_1_Up" ); lightDir[1].z = CnfThawFloat( 0.0f, "LightDir_1_Forward" ); exportMode = false; // Chord tolerance chordTol = CnfThawFloat(0.5f, "ChordTolerancePct"); // Max pwl segments to generate maxSegments = CnfThawInt(10, "MaxSegments"); // Chord tolerance exportChordTol = CnfThawFloat(0.1f, "ExportChordTolerance"); // Max pwl segments to generate exportMaxSegments = CnfThawInt(64, "ExportMaxSegments"); // View units viewUnits = (Unit)CnfThawInt((uint32_t)UNIT_MM, "ViewUnits"); // Number of digits after the decimal point afterDecimalMm = CnfThawInt(2, "AfterDecimalMm"); afterDecimalInch = CnfThawInt(3, "AfterDecimalInch"); // Camera tangent (determines perspective) cameraTangent = CnfThawFloat(0.3f/1e3f, "CameraTangent"); // Grid spacing gridSpacing = CnfThawFloat(5.0f, "GridSpacing"); // Export scale factor exportScale = CnfThawFloat(1.0f, "ExportScale"); // Export offset (cutter radius comp) exportOffset = CnfThawFloat(0.0f, "ExportOffset"); // Rewrite exported colors close to white into black (assuming white bg) fixExportColors = CnfThawBool(true, "FixExportColors"); // Draw back faces of triangles (when mesh is leaky/self-intersecting) drawBackFaces = CnfThawBool(true, "DrawBackFaces"); // Check that contours are closed and not self-intersecting checkClosedContour = CnfThawBool(true, "CheckClosedContour"); // Export shaded triangles in a 2d view exportShadedTriangles = CnfThawBool(true, "ExportShadedTriangles"); // Export pwl curves (instead of exact) always exportPwlCurves = CnfThawBool(false, "ExportPwlCurves"); // Background color on-screen backgroundColor = CnfThawColor(RGBi(0, 0, 0), "BackgroundColor"); // Whether export canvas size is fixed or derived from bbox exportCanvasSizeAuto = CnfThawBool(true, "ExportCanvasSizeAuto"); // Margins for automatic canvas size exportMargin.left = CnfThawFloat(5.0f, "ExportMargin_Left"); exportMargin.right = CnfThawFloat(5.0f, "ExportMargin_Right"); exportMargin.bottom = CnfThawFloat(5.0f, "ExportMargin_Bottom"); exportMargin.top = CnfThawFloat(5.0f, "ExportMargin_Top"); // Dimensions for fixed canvas size exportCanvas.width = CnfThawFloat(100.0f, "ExportCanvas_Width"); exportCanvas.height = CnfThawFloat(100.0f, "ExportCanvas_Height"); exportCanvas.dx = CnfThawFloat( 5.0f, "ExportCanvas_Dx"); exportCanvas.dy = CnfThawFloat( 5.0f, "ExportCanvas_Dy"); // Extra parameters when exporting G code gCode.depth = CnfThawFloat(10.0f, "GCode_Depth"); gCode.passes = CnfThawInt(1, "GCode_Passes"); gCode.feed = CnfThawFloat(10.0f, "GCode_Feed"); gCode.plungeFeed = CnfThawFloat(10.0f, "GCode_PlungeFeed"); // Show toolbar in the graphics window showToolbar = CnfThawBool(true, "ShowToolbar"); // Recent files menus for(i = 0; i < MAX_RECENT; i++) { RecentFile[i] = CnfThawString("", "RecentFile_" + std::to_string(i)); } RefreshRecentMenus(); // Autosave timer autosaveInterval = CnfThawInt(5, "AutosaveInterval"); // The default styles (colors, line widths, etc.) are also stored in the // configuration file, but we will automatically load those as we need // them. SetAutosaveTimerFor(autosaveInterval); NewFile(); AfterNewFile(); }