From 94618d4ce14a984a5a02398ace853828bb32cda6 Mon Sep 17 00:00:00 2001 From: Dhruv Gramopadhye Date: Tue, 5 Dec 2023 07:16:27 -0500 Subject: [PATCH 01/13] CI, macOS: Update dead links to libomp in dependency installer Big Sur -> Ventura --- .github/scripts/install-macos.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/scripts/install-macos.sh b/.github/scripts/install-macos.sh index bb39bcd4..33e55a1b 100755 --- a/.github/scripts/install-macos.sh +++ b/.github/scripts/install-macos.sh @@ -1,8 +1,8 @@ #!/bin/sh -xe if [ "$1" = "ci" ]; then - armloc=$(brew fetch --bottle-tag=arm64_big_sur libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:) - x64loc=$(brew fetch --bottle-tag=big_sur libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:) + armloc=$(brew fetch --bottle-tag=arm64_ventura libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:) + x64loc=$(brew fetch --bottle-tag=ventura libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:) cp $armloc /tmp/libomp-arm64.tar.gz mkdir /tmp/libomp-arm64 || true tar -xzvf /tmp/libomp-arm64.tar.gz -C /tmp/libomp-arm64 From 3e5f9834d7981b2516c5a022bd1b201b5b792b6d Mon Sep 17 00:00:00 2001 From: Dhruv Gramopadhye Date: Thu, 7 Dec 2023 20:41:04 -0500 Subject: [PATCH 02/13] Add allocate function as emscripten dep Web version crashes when you try to make a constraint. After debugging, addressed the issue with this PR. Emscripten does some optimization stuff and ends up dropping certain functions, including the alloacte function called in solvespace's C++ Unwrap method. To reproduce/test bug: - Open the web version - Create a rectangle - Create a length constraint on one the rectangle edges --- cmake/Platform/Emscripten.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Platform/Emscripten.cmake b/cmake/Platform/Emscripten.cmake index 160f2e51..93dfd202 100644 --- a/cmake/Platform/Emscripten.cmake +++ b/cmake/Platform/Emscripten.cmake @@ -10,7 +10,7 @@ set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE) # FIXME(emscripten): Suppress non-c-typedef-for-linkage warnings in solvespace.h add_compile_options(-Wno-non-c-typedef-for-linkage) - +add_link_options(-s EXPORTED_RUNTIME_METHODS=[allocate]) # Enable optimization. Workaround for "too many locals" error when runs on browser. if(CMAKE_BUILD_TYPE STREQUAL Release) From 486e43a450a158a9e5314a1fa954897c450b3a20 Mon Sep 17 00:00:00 2001 From: Rylie Pavlik Date: Fri, 13 May 2022 16:50:40 -0500 Subject: [PATCH 03/13] Codespell fix --- src/draw.cpp | 2 +- src/mesh.cpp | 2 +- src/platform/guihtml.cpp | 2 +- src/platform/html/filemanagerui.js | 4 ++-- src/platform/html/solvespaceui.js | 4 ++-- src/srf/raycast.cpp | 2 +- src/view.cpp | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/draw.cpp b/src/draw.cpp index 9fa964fa..fe4cfe68 100644 --- a/src/draw.cpp +++ b/src/draw.cpp @@ -241,7 +241,7 @@ void GraphicsWindow::SelectByMarquee() { } //----------------------------------------------------------------------------- -// Sort the selection according to various critieria: the entities and +// Sort the selection according to various criteria: the entities and // constraints separately, counts of certain types of entities (circles, // lines, etc.), and so on. //----------------------------------------------------------------------------- diff --git a/src/mesh.cpp b/src/mesh.cpp index 57377d0c..1280a11a 100644 --- a/src/mesh.cpp +++ b/src/mesh.cpp @@ -16,7 +16,7 @@ void SMesh::AddTriangle(STriMeta meta, Vector n, Vector a, Vector b, Vector c) { Vector ab = b.Minus(a), bc = c.Minus(b); Vector np = ab.Cross(bc); if(np.Magnitude() < 1e-10) { - // ugh; gl sometimes tesselates to collinear triangles + // ugh; gl sometimes tessellates to collinear triangles return; } if(np.Dot(n) > 0) { diff --git a/src/platform/guihtml.cpp b/src/platform/guihtml.cpp index 7e49cc98..1f61b280 100644 --- a/src/platform/guihtml.cpp +++ b/src/platform/guihtml.cpp @@ -1270,7 +1270,7 @@ MessageDialogRef CreateMessageDialog(WindowRef parentWindow) { // File dialogs //----------------------------------------------------------------------------- -// In emscripten psuedo filesystem, all userdata will be stored in this directory. +// In emscripten pseudo filesystem, all userdata will be stored in this directory. static std::string basePathInFilesystem = "/data/"; diff --git a/src/platform/html/filemanagerui.js b/src/platform/html/filemanagerui.js index f82499b0..c48e1a58 100644 --- a/src/platform/html/filemanagerui.js +++ b/src/platform/html/filemanagerui.js @@ -130,7 +130,7 @@ class FileManagerUI { dialog.appendChild(filelist); const dummyfilelistitem = document.createElement('li'); - dummyfilelistitem.textContent = "(No file in psuedo filesystem)"; + dummyfilelistitem.textContent = "(No file in pseudo filesystem)"; filelist.appendChild(dummyfilelistitem); if (this.__isOpenDialog) { @@ -341,7 +341,7 @@ class FileManagerUI { const files = this.__getFileEntries_recurse(this.__basePathInFilesystem); if (files.length < 1) { const dummyfilelistitem = document.createElement('li'); - dummyfilelistitem.textContent = "(No file in psuedo filesystem)"; + dummyfilelistitem.textContent = "(No file in pseudo filesystem)"; this.__filelistElement.appendChild(dummyfilelistitem); } else { diff --git a/src/platform/html/solvespaceui.js b/src/platform/html/solvespaceui.js index edcca32e..80af2459 100644 --- a/src/platform/html/solvespaceui.js +++ b/src/platform/html/solvespaceui.js @@ -423,7 +423,7 @@ window.addEventListener('keyup', function(event) { }); -// FIXME(emscripten): Should be implemnted in guihtmlcpp ? +// FIXME(emscripten): Should be implemented in guihtmlcpp ? class FileUploadHelper { constructor() { this.modalRoot = document.createElement("div"); @@ -583,7 +583,7 @@ function createFileUploadHelperInstance() { return new FileUploadHelper(); } -// FIXME(emscripten): Should be implemnted in guihtmlcpp ? +// FIXME(emscripten): Should be implemented in guihtmlcpp ? class FileDownloadHelper { constructor() { this.modalRoot = document.createElement("div"); diff --git a/src/srf/raycast.cpp b/src/srf/raycast.cpp index bde17d1f..acbcd8fd 100644 --- a/src/srf/raycast.cpp +++ b/src/srf/raycast.cpp @@ -530,7 +530,7 @@ bool SShell::ClassifyEdge(Class *indir, Class *outdir, SBspUv::Class c = (srf.bsp) ? srf.bsp->ClassifyPoint(puv, dummy, &srf) : SBspUv::Class::OUTSIDE; if(c == SBspUv::Class::OUTSIDE) continue; - // Edge-on-face (unless edge-on-edge above superceded) + // Edge-on-face (unless edge-on-edge above superseded) Point2d pin, pout; srf.ClosestPointTo(p.Plus(edge_n_in), &pin, /*mustConverge=*/false); srf.ClosestPointTo(p.Plus(edge_n_out), &pout, /*mustConverge=*/false); diff --git a/src/view.cpp b/src/view.cpp index 99067bc5..5f6de329 100644 --- a/src/view.cpp +++ b/src/view.cpp @@ -1,5 +1,5 @@ //----------------------------------------------------------------------------- -// The View menu, stuff to snap to certain special vews of the model, and to +// The View menu, stuff to snap to certain special views of the model, and to // display our current view of the model to the user. // // Copyright 2008-2013 Jonathan Westhues. From 1a71ca745a232b56a49b0d82747cd720bd969ef3 Mon Sep 17 00:00:00 2001 From: phkahler <14852918+phkahler@users.noreply.github.com> Date: Sat, 25 Nov 2023 15:14:30 -0500 Subject: [PATCH 04/13] Dimesions on arcs defaut to radius instead of diameter --- src/constraint.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/constraint.cpp b/src/constraint.cpp index ee734579..64e9b337 100644 --- a/src/constraint.cpp +++ b/src/constraint.cpp @@ -236,6 +236,10 @@ void Constraint::MenuConstrain(Command id) { } else if(gs.circlesOrArcs == 1 && gs.n == 1) { c.type = Type::DIAMETER; c.entityA = gs.entity[0]; + Entity* arc = SK.GetEntity(gs.entity[0]); + if (arc->type == EntityBase::Type::ARC_OF_CIRCLE) { + c.other = true; + } } else { Error(_("Bad selection for distance / diameter constraint. This " "constraint can apply to:\n\n" From 1f8b3f2589228b5fee3d4d5821917ba537723d76 Mon Sep 17 00:00:00 2001 From: phkahler <14852918+phkahler@users.noreply.github.com> Date: Thu, 21 Dec 2023 14:30:52 -0500 Subject: [PATCH 05/13] Make arc default dimenision (radius vs diameter) a configuration option. --- src/confscreen.cpp | 7 +++++++ src/constraint.cpp | 4 +++- src/solvespace.cpp | 4 ++++ src/solvespace.h | 1 + src/ui.h | 1 + 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/confscreen.cpp b/src/confscreen.cpp index 2e7b2288..940a0ef1 100644 --- a/src/confscreen.cpp +++ b/src/confscreen.cpp @@ -70,6 +70,10 @@ void TextWindow::ScreenChangeExportOffset(int link, uint32_t v) { SS.TW.edit.meaning = Edit::EXPORT_OFFSET; } +void TextWindow::ScreenChangeArcDimDefault(int link, uint32_t v) { + SS.arcDimDefaultDiameter = !SS.arcDimDefaultDiameter; +} + void TextWindow::ScreenChangeFixExportColors(int link, uint32_t v) { SS.fixExportColors = !SS.fixExportColors; } @@ -344,6 +348,9 @@ void TextWindow::ShowConfiguration() { Printf(false, " %Fd%f%Ll%s edit newly added dimensions%E", &ScreenChangeImmediatelyEditDimension, SS.immediatelyEditDimension ? CHECK_TRUE : CHECK_FALSE); + Printf(false, " %Fd%f%Ll%s arc default is diameter%E", + &ScreenChangeArcDimDefault, + SS.arcDimDefaultDiameter ? CHECK_TRUE : CHECK_FALSE); Printf(false, ""); Printf(false, "%Ft autosave interval (in minutes)%E"); Printf(false, "%Ba %d %Fl%Ll%f[change]%E", diff --git a/src/constraint.cpp b/src/constraint.cpp index 64e9b337..705feec6 100644 --- a/src/constraint.cpp +++ b/src/constraint.cpp @@ -237,7 +237,9 @@ void Constraint::MenuConstrain(Command id) { c.type = Type::DIAMETER; c.entityA = gs.entity[0]; Entity* arc = SK.GetEntity(gs.entity[0]); - if (arc->type == EntityBase::Type::ARC_OF_CIRCLE) { + if ((arc->type == EntityBase::Type::ARC_OF_CIRCLE) + && (!SS.arcDimDefaultDiameter)) + { c.other = true; } } else { diff --git a/src/solvespace.cpp b/src/solvespace.cpp index c6ab34ab..c2ea0330 100644 --- a/src/solvespace.cpp +++ b/src/solvespace.cpp @@ -69,6 +69,8 @@ void SolveSpaceUI::Init() { exportScale = settings->ThawFloat("ExportScale", 1.0); // Export offset (cutter radius comp) exportOffset = settings->ThawFloat("ExportOffset", 0.0); + // Dimensions on arcs default to diameter vs radius + arcDimDefaultDiameter = settings->ThawBool("ArcDimDefaultDiameter", false); // Rewrite exported colors close to white into black (assuming white bg) fixExportColors = settings->ThawBool("FixExportColors", true); // Export background color @@ -250,6 +252,8 @@ void SolveSpaceUI::Exit() { settings->FreezeFloat("ExportScale", exportScale); // Export offset (cutter radius comp) settings->FreezeFloat("ExportOffset", exportOffset); + // Rewrite the default arc dimension setting + settings->FreezeBool("ArcDimDefaultDiameter", arcDimDefaultDiameter); // Rewrite exported colors close to white into black (assuming white bg) settings->FreezeBool("FixExportColors", fixExportColors); // Export background color diff --git a/src/solvespace.h b/src/solvespace.h index d8d7b3d3..7479dd88 100644 --- a/src/solvespace.h +++ b/src/solvespace.h @@ -573,6 +573,7 @@ public: double gridSpacing; double exportScale; double exportOffset; + bool arcDimDefaultDiameter; bool fixExportColors; bool exportBackgroundColor; bool drawBackFaces; diff --git a/src/ui.h b/src/ui.h index 0895007a..ac9163c8 100644 --- a/src/ui.h +++ b/src/ui.h @@ -442,6 +442,7 @@ public: static void ScreenShowEditView(int link, uint32_t v); static void ScreenGoToWebsite(int link, uint32_t v); + static void ScreenChangeArcDimDefault(int link, uint32_t v); static void ScreenChangeFixExportColors(int link, uint32_t v); static void ScreenChangeExportBackgroundColor(int link, uint32_t v); static void ScreenChangeBackFaces(int link, uint32_t v); From ddeab11615f88c55e3a55fc9cae85a8eabe165a5 Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Tue, 4 Oct 2022 22:57:05 -0400 Subject: [PATCH 06/13] Bypass desktop portal in Snap This will fix https://github.com/solvespace/solvespace/issues/1067 by setting GTK_USE_PORTAL=0 in the Snap package. This will use a file chooser from the point of view of the application to open and save files, instead of using the "desktop portal" where the chooser runs outside the snap and the file is exposed dynamically into the snap at an automatically generated path. This will allow files used in assemblies to be seen by SolveSpace as being at their real paths, so the references to them will be saved as proper relative-path references based on where the files actually are, instead of as references to where the portal has exposed them. The downside is that without the portal you can't point the application at files that *aren't* exposed to the Snap. --- pkg/snap/snap/snapcraft.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/snap/snap/snapcraft.yaml b/pkg/snap/snap/snapcraft.yaml index 79baaadb..7d3cf77b 100644 --- a/pkg/snap/snap/snapcraft.yaml +++ b/pkg/snap/snap/snapcraft.yaml @@ -27,6 +27,8 @@ apps: desktop: solvespace.desktop extensions: [gnome] plugs: [opengl, unity7, home, removable-media, gsettings, network] + environment: + GTK_USE_PORTAL: "0" cli: command: usr/bin/solvespace-cli extensions: [gnome] From f25bf39fa7293da1421e682e1f728e57ccb6c939 Mon Sep 17 00:00:00 2001 From: NotSure Date: Wed, 3 Jan 2024 14:24:03 +0200 Subject: [PATCH 07/13] fixed pt-line distance constraint bug on paste transformed --- src/clipboard.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/clipboard.cpp b/src/clipboard.cpp index 69a624c3..0275b170 100644 --- a/src/clipboard.cpp +++ b/src/clipboard.cpp @@ -249,8 +249,10 @@ void GraphicsWindow::PasteClipboard(Vector trans, double theta, double scale) { case Constraint::Type::COMMENT: c.disp.offset = c.disp.offset.Plus(trans); break; - case Constraint::Type::PT_PT_DISTANCE: case Constraint::Type::PT_LINE_DISTANCE: + c.valA *= scale; + break; + case Constraint::Type::PT_PT_DISTANCE: case Constraint::Type::PROJ_PT_DISTANCE: case Constraint::Type::DIAMETER: c.valA *= fabs(scale); From 7d379e7f3b045ae579537abd392d5b368a4117e5 Mon Sep 17 00:00:00 2001 From: NotSure Date: Tue, 2 Jan 2024 18:31:48 +0200 Subject: [PATCH 08/13] Updated uk-UA locale; fixed typos; added translations --- res/locales/uk_UA.po | 282 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 238 insertions(+), 44 deletions(-) diff --git a/res/locales/uk_UA.po b/res/locales/uk_UA.po index 6be80f2a..104e3efc 100644 --- a/res/locales/uk_UA.po +++ b/res/locales/uk_UA.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: SolveSpace 3.0\n" "Report-Msgid-Bugs-To: phkahler@gmail.com\n" "POT-Creation-Date: 2023-01-20 16:45+0200\n" -"PO-Revision-Date: 2021-04-14 01:42+0300\n" +"PO-Revision-Date: 2024-01-02 18:47+0200\n" "Last-Translator: https://github.com/Symbian9\n" "Language-Team: app4soft\n" "Language: uk_UA\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.4.1\n" #: clipboard.cpp:309 msgid "" @@ -51,12 +51,12 @@ msgstr "Оберіть дві точки для визначення векто msgid "" "Transformation is identity. So all copies will be exactly on top of each " "other." -msgstr "" +msgstr "Трансформація ідентична, тому усі копії будуть точно одна на одній." #: clipboard.cpp:457 -#, fuzzy msgid "Too many items to paste; split this into smaller pastes." -msgstr "Забагато об'єктів для вставки; рзділіть копіювання на кілька етапів." +msgstr "" +"Забагато об'єктів для вставки; розділіть копіювання на кілька менших етапів." #: clipboard.cpp:462 msgid "No workplane active." @@ -64,20 +64,19 @@ msgstr "Немає активної площини." #: confscreen.cpp:381 msgid "Bad format: specify coordinates as x, y, z" -msgstr "Некоректний формат: визначте координати X, Y, Z" +msgstr "Некоректний формат: визначте координати як X, Y, Z" #: confscreen.cpp:391 style.cpp:729 textscreens.cpp:863 msgid "Bad format: specify color as r, g, b" msgstr "Некоректний формат: визначте колір як R, G, B" #: confscreen.cpp:417 -#, fuzzy msgid "" "The perspective factor will have no effect until you enable View -> Use " "Perspective Projection." msgstr "" "Значення перспективи не матиме ефекту допоки не ввімкнено Вигляд -> " -"Використовувати Перспективну проєкцію." +"Використовувати Перспективну Проєкцію." #: confscreen.cpp:435 confscreen.cpp:445 #, c-format @@ -97,9 +96,8 @@ msgid "Bad value: autosave interval should be positive" msgstr "Некоректне значення: інтервал автозбереження має бути додатнім" #: confscreen.cpp:531 -#, fuzzy msgid "Bad format: specify interval in integral minutes" -msgstr "Некоректний формат: визначте цілим числом інтервал у хвилинах" +msgstr "Некоректний формат: визначте інтервал цілим числом у хвилинах" #: constraint.cpp:12 msgctxt "constr-name" @@ -129,7 +127,7 @@ msgstr "відстань-тчк-грань" #: constraint.cpp:17 msgctxt "constr-name" msgid "proj-pt-pt-distance" -msgstr "проєційна-відстань-тчк-тчк" +msgstr "проєкційна-відстань-тчк-тчк" #: constraint.cpp:18 msgctxt "constr-name" @@ -169,12 +167,12 @@ msgstr "пропорція-довжин" #: constraint.cpp:25 msgctxt "constr-name" msgid "arc-arc-length-ratio" -msgstr "" +msgstr "пропорція-довжин-дуга-дуга" #: constraint.cpp:26 msgctxt "constr-name" msgid "arc-line-length-ratio" -msgstr "" +msgstr "пропорція-довжини-дуга-лінія" #: constraint.cpp:27 msgctxt "constr-name" @@ -184,12 +182,12 @@ msgstr "різниця-довжин" #: constraint.cpp:28 msgctxt "constr-name" msgid "arc-arc-len-difference" -msgstr "" +msgstr "різниця-довжин-дуга-дуга" #: constraint.cpp:29 msgctxt "constr-name" msgid "arc-line-len-difference" -msgstr "" +msgstr "різниця-довжин-дуга-лінія" #: constraint.cpp:30 msgctxt "constr-name" @@ -239,7 +237,7 @@ msgstr "тчк-на-колі" #: constraint.cpp:39 msgctxt "constr-name" msgid "same-orientation" -msgstr "співнаправленість" +msgstr "співнапрямленість" #: constraint.cpp:40 msgctxt "constr-name" @@ -301,18 +299,24 @@ msgid "" "The tangent arc and line segment must share an endpoint. Constrain them with " "Constrain -> On Point before constraining tangent." msgstr "" +"Дотичні дуга та лінія повинні мати спільну кінцеву точку. Використайте " +"Обмежити -> На точці перед застосуванням дотичного обмеження." #: constraint.cpp:163 msgid "" "The tangent cubic and line segment must share an endpoint. Constrain them " "with Constrain -> On Point before constraining tangent." msgstr "" +"Дотичні сплайн та лінія повинні мати спільну кінцеву точку. Використайте " +"Обмежити -> На точці перед застосуванням дотичного обмеження." #: constraint.cpp:189 msgid "" "The curves must share an endpoint. Constrain them with Constrain -> On Point " "before constraining tangent." msgstr "" +"Дотичні дуги повинні мати спільну кінцеву точку. Використайте Обмежити -> На " +"точці перед застосуванням дотичного обмеження." #: constraint.cpp:240 msgid "" @@ -327,6 +331,17 @@ msgid "" " * a plane face and a point (minimum distance)\n" " * a circle or an arc (diameter)\n" msgstr "" +"Поганий вибір для обмеження за Відстанню / Діаметром. Це обмеження можна " +"застосувати до:\n" +"\n" +" * двох точок (відстань між точками)\n" +" * відрізку прямої (довжина)\n" +" * двох точок та відрізку прямої чи нормалі (відстань між проєкціями " +"точок)\n" +" * робочої площини та точки (найменша відстань)\n" +" * відрізку прямої та точки (найменша відстань)\n" +" * грані та точки (найменша відстань)\n" +" * кола або дуги (діаметр)\n" #: constraint.cpp:303 msgid "" @@ -339,6 +354,14 @@ msgid "" " * a point and a circle or arc (point on curve)\n" " * a point and one to three plane faces (point on face(s))\n" msgstr "" +"Поганий вибір для обмеження На Точці / Кривій / Площині. Це обмеження можна " +"застосувати до:\n" +"\n" +" * двох або більше точок (точки збігаються)\n" +" * точки та площини (точка лежить в площині)\n" +" * точки та відрізку прямої (точка лежить на прямій)\n" +" * точки та кола чи дуги (точка лежить на дузі)\n" +" * точки та від одієї до трьох граней (точка лежить на грані(ях))\n" #: constraint.cpp:364 msgid "" @@ -353,6 +376,17 @@ msgid "" " * two or more circles or arcs (equal radius)\n" " * a line segment and an arc (line segment length equals arc length)\n" msgstr "" +"Поганий вибір для обмеження Рівні Довжина / Радіус. Це обмеження можна " +"застосувати до:\n" +"\n" +" * двох або більше відрізків прямої (рівні довжини)\n" +" * двох відрізків та двох точок (рівні відстані від точок до відповідних " +"відрізків)\n" +" * відрізка та двох точок (рівні відстані від точок до відрізка)\n" +" * відрізка, точки, та другого відрізка (відстань від точки до другого " +"відрізка дорівнює першому)\n" +" * двох або більше кіл чи дуг (рівні радіуси)\n" +" * відрізку та дуги (довжина відрізку дорівнює довжині дуги) \n" #: constraint.cpp:417 msgid "" @@ -362,6 +396,12 @@ msgid "" " * two arcs\n" " * one arc and one line segment\n" msgstr "" +"Поганий вибір для обмеження Пропорція Довжин. Це обмеження можна застосувати " +"до:\n" +"\n" +" * двох відрізків прямої\n" +" * двох дуг\n" +" * дуги та відрізка прямої\n" #: constraint.cpp:452 msgid "" @@ -372,6 +412,12 @@ msgid "" " * two arcs\n" " * one arc and one line segment\n" msgstr "" +"Поганий вибір для обмеження Різниця Довжин. Це обмеження можна застосувати " +"до:\n" +"\n" +" * двох відрізків\n" +" * двох дуг\n" +" * відрізка та дуги\n" #: constraint.cpp:487 msgid "" @@ -380,6 +426,10 @@ msgid "" " * a line segment and a point (point at midpoint)\n" " * a line segment and a workplane (line's midpoint on plane)\n" msgstr "" +"Поганий вибір для обмеження До Середини. Це обмеження можна застосувати до:\n" +"\n" +" * відрізка та точки (точка на середині відрізку)\n" +" * відрізка та робочої площини (середина відрізку лежить в площині)\n" #: constraint.cpp:545 msgid "" @@ -392,18 +442,31 @@ msgid "" " * workplane, and two points or a line segment (symmetric about " "workplane)\n" msgstr "" +"Поганий вибір для обмеження за симетрією. Це обмеження можна застосувати " +"до:\n" +"\n" +" * двох точок або відрізку прямої (симетрія відносно початку координат " +"робочої площини)\n" +" * відрізка та двох точок або іншого відрізка (симетрія відносно " +"відрізка)\n" +" * робочої площини та двох точок або відрізка (симетрія відносно робочої " +"площини)\n" #: constraint.cpp:560 msgid "" "A workplane must be active when constraining symmetric without an explicit " "symmetry plane." msgstr "" +"Робоча площина має бути активною коли використовується обмеження за " +"симетрією без явного вибору площини." #: constraint.cpp:600 msgid "" "Activate a workplane (with Sketch -> In Workplane) before applying a " "horizontal or vertical constraint." msgstr "" +"Активуйте площину (в Креслення -> У Робочій Площині) перед застосуванням " +"обмеження Горизонтально або Вертикально." #: constraint.cpp:616 msgid "" @@ -413,6 +476,11 @@ msgid "" " * two or more points\n" " * one or more line segments\n" msgstr "" +"Поганий вибір для обмеження Горизонтально / Вертикально. Це обмеження можна " +"застосувати до:\n" +"\n" +" * двох або більше точок\n" +" * одного або більше відрізків\n" #: constraint.cpp:634 msgid "" @@ -421,9 +489,12 @@ msgid "" "\n" " * two normals\n" msgstr "" +"Поганий вибір для обмеження Однакова Орієнтація. Це обмеження можна " +"застосувати до:\n" +"\n" +" * двох перпендикулярів\n" #: constraint.cpp:685 -#, fuzzy msgid "Must select an angle constraint." msgstr "Необхідно обрати кут." @@ -444,10 +515,20 @@ msgid "" " * four line segments or normals (equal angle between A,B and C,D)\n" " * three line segments or normals (equal angle between A,B and B,C)\n" msgstr "" +"Поганий вибір для обмеження за Кутом. Це обмеження можна застосувати до:\n" +"\n" +"Кута між:\n" +" * двома відрізками\n" +" * відрізком та перпендикуляром\n" +" * двома перпендикулярами\n" +"\n" +"Рівних кутів між:\n" +" * чотирма відрізками чи перпендикулярами (рівні кути між А,Б та В,Г)\n" +" * трьома відрізками чи перпендикулярами (рівні кути між А,Б та Б,В)\n" #: constraint.cpp:805 msgid "Curve-curve tangency must apply in workplane." -msgstr "" +msgstr "Обмеження дотичності дуг має відбуватися у робочій площині." #: constraint.cpp:818 msgid "" @@ -460,6 +541,16 @@ msgid "" " * two or more normals (parallel)\n" " * two line segments, arcs, or beziers, that share an endpoint (tangent)\n" msgstr "" +"Поганий вибір для обмеження Паралельно / Дотична. Це обмеження можна " +"застосувати до:\n" +"\n" +" * двох граней\n" +" * двох або більше відрізків (паралельні)\n" +" * одного або більше відрізка та одного або більше перпендикуляра " +"(паралельні)\n" +" * двох або більше перпендикулярів (паралельні)\n" +" * двох відрізків, дуг, чи кривих Безьє, що мають спільну кінцеву " +"точку(дотичні)\n" #: constraint.cpp:843 msgid "" @@ -470,6 +561,13 @@ msgid "" " * a line segment and a normal\n" " * two normals\n" msgstr "" +"Поганий вибір для обмеження Перпендикулярно. Це обмеження можна застосувати " +"до:\n" +"\n" +" * двох граней\n" +" * двох відрізків\n" +" * відрізка та перпендикуляра\n" +" * двох перпендикулярів\n" #: constraint.cpp:860 msgid "" @@ -478,6 +576,10 @@ msgid "" "\n" " * a point\n" msgstr "" +"Поганий вибір для обмеження Фіксувати Точку Після Переміщення. Це обмеження " +"можна застосувати до:\n" +"\n" +" * точки\n" #: constraint.cpp:875 mouse.cpp:1158 msgid "NEW COMMENT -- DOUBLE-CLICK TO EDIT" @@ -492,9 +594,9 @@ msgid "" "No solid model present; draw one with extrudes and revolves, or use Export " "2d View to export bare lines and curves." msgstr "" -"Вісутня об'ємна модель; створіть одну з допомогою екструдування та " -"виточування або скористайтеся функцією \"Експортувати 2D Вигляд\" для " -"еспорту лише ліній та кривих." +"Вісутня об'ємна модель; створіть модель за допомогою екструдування та " +"обертання або скористайтеся функцією \"Експортувати 2D Вигляд\" для еспорту " +"лише ліній та кривих." #: export.cpp:61 msgid "" @@ -505,18 +607,25 @@ msgid "" " * a point and two line segments (plane through point and parallel to " "lines)\n" msgstr "" +"Поганий вибір для експорту розрізу. Будьласка, оберіть:\n" +"\n" +" * нічого, з активною робочою площиною (робоча площина буде площиною " +"розрізу)\n" +" * грань (площина розрізу через грань)\n" +" * точку та два відрізки (площина розрізу через точку та паралельно " +"відрізкам)\n" #: export.cpp:818 msgid "Active group mesh is empty; nothing to export." -msgstr "Активна група не містить меш; немає чого експортувати." +msgstr "Активна група не містить сітку; немає чого експортувати." #: exportvector.cpp:336 msgid "freehand lines were replaced with continuous lines" -msgstr "" +msgstr "довільні лінії було замінено на неперервні відрізки" #: exportvector.cpp:338 msgid "zigzag lines were replaced with continuous lines" -msgstr "" +msgstr "zigzag лінії було замінено на неперервні відрізки" #: exportvector.cpp:592 msgid "" @@ -573,6 +682,9 @@ msgid "" "If you decline, any geometry that depends on the missing file will be " "permanently removed." msgstr "" +"Шукати файл вручну?\n" +"\n" +"При відмові, уся геометрія, що залежить від втраченого файлу буде видалена." #: file.cpp:873 msgctxt "button" @@ -759,7 +871,7 @@ msgstr "Використовувати &Перспективну Проекці #: graphicswin.cpp:97 msgid "Show E&xploded View" -msgstr "" +msgstr "Показати С&кладальне Креслення" #: graphicswin.cpp:98 msgid "Dimension &Units" @@ -779,7 +891,7 @@ msgstr "Розміри у &Дюймах" #: graphicswin.cpp:102 msgid "Dimensions in &Feet and Inches" -msgstr "" +msgstr "Розміри в &Футах та Дюймах" #: graphicswin.cpp:104 msgid "Show &Toolbar" @@ -915,7 +1027,7 @@ msgstr "Від&носний Розмір" #: graphicswin.cpp:148 msgid "A&ngle / Equal Angle" -msgstr "" +msgstr "К&ут / Рівний Кут" #: graphicswin.cpp:149 msgid "Reference An&gle" @@ -943,15 +1055,15 @@ msgstr "&На точці / Кривій / Площині" #: graphicswin.cpp:157 msgid "E&qual Length / Radius" -msgstr "" +msgstr "Р&івна Довжина / Радіус" #: graphicswin.cpp:158 msgid "Length / Arc Ra&tio" -msgstr "" +msgstr "Пропорція довжин" #: graphicswin.cpp:159 msgid "Length / Arc Diff&erence" -msgstr "" +msgstr "Різниця довжин" #: graphicswin.cpp:160 msgid "At &Midpoint" @@ -1039,7 +1151,7 @@ msgstr "&Вебсайт / Посібник" #: graphicswin.cpp:186 msgid "&Go to GitHub commit" -msgstr "" +msgstr "&До коміту на GitHub" #: graphicswin.cpp:188 msgid "&About" @@ -1066,37 +1178,47 @@ msgid "" "For a perspective projection, modify the perspective factor in the " "configuration screen. A value around 0.3 is typical." msgstr "" +"Встановлено нульовий коефіцієнт перспективи, тому відображення завжди буде " +"паралельною проєкцією." #: graphicswin.cpp:878 msgid "" "Select a point; this point will become the center of the view on screen." -msgstr "" +msgstr "Оберіть точку. Ця точка стане центром відображення на екрані." #: graphicswin.cpp:1178 msgid "No additional entities share endpoints with the selected entities." -msgstr "" +msgstr "Жодні сутності не мають спільних кінцевих точок з обраними сутностями." #: graphicswin.cpp:1196 msgid "" "To use this command, select a point or other entity from an linked part, or " "make a link group the active group." msgstr "" +"Для використання цієї команди оберіть точку або іншу сутність з приєднаної " +"деталі, або зробіть приєднану групу активною." #: graphicswin.cpp:1219 msgid "" "No workplane is active. Activate a workplane (with Sketch -> In Workplane) " "to define the plane for the snap grid." msgstr "" +"Жодної активної площини. Активуйте площину (в Креслення -> У Робочій " +"Площині) щоб визначити площину для сітки." #: graphicswin.cpp:1226 msgid "" "Can't snap these items to grid; select points, text comments, or constraints " "with a label. To snap a line, select its endpoints." msgstr "" +"Неможливо прикріпити ці штуки до сітки; оберіть точки, текстові коментарі чи " +"обмеження з назвою. Щоб прикріпити лінію, оберіть її кінцеві точки." #: graphicswin.cpp:1311 msgid "No workplane selected. Activating default workplane for this group." msgstr "" +"Жодної робочої площини не обрано. Активую площину за замовченням для цієї " +"групи." #: graphicswin.cpp:1314 msgid "" @@ -1104,16 +1226,21 @@ msgid "" "workplane. Try selecting a workplane, or activating a sketch-in-new-" "workplane group." msgstr "" +"Жодної робочої площини не обрано, і активна група не має площини за " +"замовченням. Спробуйте обрати площину, або активувати групу Креслення У " +"Робочій Площині" #: graphicswin.cpp:1335 msgid "" "Bad selection for tangent arc at point. Select a single point, or select " "nothing to set up arc parameters." msgstr "" +"Поганий вибір для дотичної дуги у точці. Оберіть одну точку, або оберіть " +"нічого щоб налаштувати дугу." #: graphicswin.cpp:1346 msgid "click point on arc (draws anti-clockwise)" -msgstr "" +msgstr "клікніть для встановлення точки дуги (проти годинникової стрілки)" #: graphicswin.cpp:1347 msgid "click to place datum point" @@ -1155,7 +1282,7 @@ msgstr "клікніть для встановлення верхньої лів msgid "" "No entities are selected. Select entities before trying to toggle their " "construction state." -msgstr "" +msgstr "Жодної сутності не обрано. Оберіть сутності для перключення їх стану." #: group.cpp:86 msgctxt "group-name" @@ -1172,6 +1299,13 @@ msgid "" " * a point and a normal (through the point, orthogonal to the normal)\n" " * a workplane (copy of the workplane)\n" msgstr "" +"Поганий вибір для ного креслення в робочій площині. Ця група може бути " +"створена з:\n" +"\n" +" * точки (через точку, ортогонально до координатних осей)\n" +" * точки та двох відрізків (через точку, паралельно до відрізків)\n" +" * точку та перпендикуляр (через точку, ортогонально перпендикуляру)\n" +" * робочої площини (створиться копія площини)\n" #: group.cpp:170 msgid "" @@ -1189,6 +1323,7 @@ msgstr "видавлювання" #: group.cpp:184 msgid "Lathe operation can only be applied to planar sketches." msgstr "" +"Операція виточування може бути застосована тільки для пласких креслень." #: group.cpp:195 msgid "" @@ -1198,6 +1333,11 @@ msgid "" "to line / normal, through point)\n" " * a line segment (revolved about line segment)\n" msgstr "" +"Поганий вибір для нової групи проточування. Ця група може бути створена з:\n" +"\n" +" * точки та відрізка або перпендикуляра (обертається крізь точку навколо " +"осі, паралельної до відрізку / перпендикуляру)\n" +" * відрізка (обертається навколо відрізка)\n" #: group.cpp:205 msgctxt "group-name" @@ -1207,6 +1347,7 @@ msgstr "проточування" #: group.cpp:210 msgid "Revolve operation can only be applied to planar sketches." msgstr "" +"Операція прокручування може бути застосована тільки для пласких креслень." #: group.cpp:221 msgid "" @@ -1216,6 +1357,11 @@ msgid "" "to line / normal, through point)\n" " * a line segment (revolved about line segment)\n" msgstr "" +"Поганий вибір для нової групи прокручування. Ця група може бути створена з:\n" +"\n" +" * точки та відрізка або перпендикуляра (обертається крізь точку навколо " +"осі, паралельної до відрізку / перпендикуляру)\n" +" * відрізка (обертається навколо відрізка)\n" #: group.cpp:233 msgctxt "group-name" @@ -1234,6 +1380,11 @@ msgid "" "to line / normal, through point)\n" " * a line segment (revolved about line segment)\n" msgstr "" +"Поганий вибір для нової групи проточування. Ця група може бути створена з:\n" +"\n" +" * точки та відрізка або перпендикуляра (обертається крізь точку навколо " +"осі, паралельної до відрізку / перпендикуляру)\n" +" * відрізка (обертається навколо відрізка)\n" #: group.cpp:261 msgctxt "group-name" @@ -1249,6 +1400,12 @@ msgid "" " * a point and a line or a normal (rotate about an axis through the " "point, and parallel to line / normal)\n" msgstr "" +"Поганий вибір для нової групи проточування. Ця група може бути створена з:\n" +"\n" +" * точки, доки закріплено в робочій площині (обертається в площині, " +"навколо цієї точки)\n" +" * точки та відрізка чи перпендикуляря (обертається навколо осі, що " +"проходить крізь цю точку, і паралельна до відрізку / перпендикуляру)\n" #: group.cpp:287 msgctxt "group-name" @@ -1270,7 +1427,7 @@ msgstr "не замкнений контур або не все в єдином #: groupmesh.cpp:723 msgid "points not all coplanar!" -msgstr "" +msgstr "не всі точки знаходяться в одній площині!" #: groupmesh.cpp:725 msgid "contour is self-intersecting!" @@ -1282,38 +1439,48 @@ msgstr "ребро нульової довжини!" #: importmesh.cpp:136 msgid "Text-formated STL files are not currently supported" -msgstr "" +msgstr "Файли STL з текстовим форматуванням наразі не підтримуються" #: modify.cpp:252 msgid "Must be sketching in workplane to create tangent arc." msgstr "" +"Для створення дотичної дуги має бути обраний режим креслення в робочій " +"площині." #: modify.cpp:299 msgid "" "To create a tangent arc, select a point where two non-construction lines or " "circles in this group and workplane join." msgstr "" +"Для створення дотичної дуги оберіть точку де два відрізки або дуги " +"поєднуються." #: modify.cpp:386 msgid "" "Couldn't round this corner. Try a smaller radius, or try creating the " "desired geometry by hand with tangency constraints." msgstr "" +"Неможливо закруглити цей кут. Спробуйте менший радіус або створіть необхідну " +"геометрію вручну задопомогою омеження Дотичності." #: modify.cpp:595 msgid "Couldn't split this entity; lines, circles, or cubics only." msgstr "" +"Неможливо розділити цей об'єкт. Дозволено тільки для відрізків, кіл(дуг), чи " +"сплайнів." #: modify.cpp:622 -#, fuzzy msgid "Must be sketching in workplane to split." -msgstr "Має бути накреслений у робочій площині для розділеня." +msgstr "" +"Креслення має відбуватися у робочій площині для використання розділення." #: modify.cpp:629 msgid "" "Select two entities that intersect each other (e.g. two lines/circles/arcs " "or a line/circle/arc and a point)." msgstr "" +"Оберіть дві сутності, що перетинаються (наприклад лінії/кола/дуги або лінія/" +"коло/дуга та точка)" #: modify.cpp:734 msgid "Can't split; no intersection found." @@ -1421,6 +1588,8 @@ msgid "" "Can't draw rectangle in 3d; first, activate a workplane with Sketch -> In " "Workplane." msgstr "" +"Неможливо накреслити прямокутник у 3d; спочатку активуйте робочу площину в " +"Креслення -> У Робочій Площині." #: mouse.cpp:1026 msgid "click to place other corner of rectangle" @@ -1435,6 +1604,8 @@ msgid "" "Can't draw arc in 3d; first, activate a workplane with Sketch -> In " "Workplane." msgstr "" +"Неможливо накреслити дугу у 3d; спочатку активуйте робочу площину в " +"Креслення -> У Робочій Площині." #: mouse.cpp:1071 msgid "click to place point" @@ -1448,12 +1619,16 @@ msgstr "клікніть наступну точку кривої або нат msgid "" "Sketching in a workplane already; sketch in 3d before creating new workplane." msgstr "" +"Вже обрано креслення у робочій площині; поверніться у креслення будь-ду в 3D " +"для створення нової робочої площини." #: mouse.cpp:1108 msgid "" "Can't draw text in 3d; first, activate a workplane with Sketch -> In " "Workplane." msgstr "" +"Неможливо накреслити текст у 3д; спочатку активуйте робочу площину в " +"Креслення -> У Робочій Площині." #: mouse.cpp:1125 msgid "click to place bottom right of text" @@ -1464,16 +1639,18 @@ msgid "" "Can't draw image in 3d; first, activate a workplane with Sketch -> In " "Workplane." msgstr "" +"Неможливо накреслити зображення у 3д; спочатку активуйте робочу площину в " +"Креслення -> У Робочій Площині." #: platform/gui.cpp:85 platform/gui.cpp:90 solvespace.cpp:565 msgctxt "file-type" msgid "SolveSpace models" -msgstr "SolveSpace модель" +msgstr "SolveSpace модел" #: platform/gui.cpp:89 msgctxt "file-type" msgid "ALL" -msgstr "" +msgstr "УСІ" #: platform/gui.cpp:91 msgctxt "file-type" @@ -1483,7 +1660,7 @@ msgstr "IDF друкована плата" #: platform/gui.cpp:92 msgctxt "file-type" msgid "STL triangle mesh" -msgstr "" +msgstr "STL трикутникова сітка" #: platform/gui.cpp:96 msgctxt "file-type" @@ -1493,7 +1670,7 @@ msgstr "PNG зображення" #: platform/gui.cpp:100 msgctxt "file-type" msgid "STL mesh" -msgstr "STL меш" +msgstr "STL сітка" #: platform/gui.cpp:101 msgctxt "file-type" @@ -1663,6 +1840,9 @@ msgid "" "is probably not what you want; hide them by clicking the link at the top of " "the text window." msgstr "" +"Зараз обмеження відображаються, і будуть експортовані в шлях інструменту. " +"Скоріш за все, це не те, чого ви домагаєтеся; cховайте їх клікнувши на " +"посилання над текстовим вікном." #: solvespace.cpp:812 #, c-format @@ -1670,6 +1850,7 @@ msgid "" "Can't identify file type from file extension of filename '%s'; try .dxf or ." "dwg." msgstr "" +"Неможливо визначити тип файлу з розширення '%s'; спробуйте .dxf чи .dwg." #: solvespace.cpp:864 msgid "Constraint must have a label, and must not be a reference dimension." @@ -1681,7 +1862,7 @@ msgstr "Поганий вибір для крокової зміни розмі #: solvespace.cpp:892 msgid "The assembly does not interfere, good." -msgstr "" +msgstr "Збірка не перетинається, очман." #: solvespace.cpp:908 #, c-format @@ -1714,6 +1895,10 @@ msgid "" "Curved surfaces have been approximated as triangles.\n" "This introduces error, typically of around 1%." msgstr "" +"\n" +"\n" +"Скруглені поверхні були апроксимовані до трикутників.\n" +"Це створює похибку, зазвичай біля 1%." #: solvespace.cpp:937 #, c-format @@ -1725,6 +1910,12 @@ msgid "" "Curves have been approximated as piecewise linear.\n" "This introduces error, typically of around 1%%." msgstr "" +"Площа поверхні обраної грані:\n" +"\n" +" %s\n" +"\n" +"Криві були апроксимовані як дрібні відрізки.\n" +"Це створює похибку, зазвичай біля 1%%." #: solvespace.cpp:946 msgid "" @@ -1804,6 +1995,9 @@ msgid "" "\n" "The model contains %d triangles, from %d surfaces." msgstr "" +"\n" +"\n" +"Модель складається з %d трикутників, що розташовані на %d поверхнях." #: solvespace.cpp:1068 #, c-format From 7310659a24bfc1146ce89b4af2ef40be652c51f0 Mon Sep 17 00:00:00 2001 From: ruevs Date: Wed, 17 Apr 2024 19:36:21 +0300 Subject: [PATCH 09/13] Update the year to 2024 in the About dialog and Windows version resource. --- cmake/MacOSXBundleInfo.plist.in | 2 +- res/win32/versioninfo.rc.in | 2 +- src/solvespace.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/MacOSXBundleInfo.plist.in b/cmake/MacOSXBundleInfo.plist.in index 67f10d15..2bec8cf7 100644 --- a/cmake/MacOSXBundleInfo.plist.in +++ b/cmake/MacOSXBundleInfo.plist.in @@ -19,7 +19,7 @@ CFBundleShortVersionString ${PROJECT_VERSION} NSHumanReadableCopyright - © 2008-2023 Jonathan Westhues and other authors + © 2008-2024 Jonathan Westhues and other authors NSPrincipalClass NSApplication NSMainNibFile diff --git a/res/win32/versioninfo.rc.in b/res/win32/versioninfo.rc.in index db06b49f..4f598946 100644 --- a/res/win32/versioninfo.rc.in +++ b/res/win32/versioninfo.rc.in @@ -18,7 +18,7 @@ BEGIN VALUE "FileVersion", "${PROJECT_VERSION}~${solvespace_GIT_HASH}" VALUE "OriginalFilename", "solvespace.exe" VALUE "InternalName", "solvespace" - VALUE "LegalCopyright", "(c) 2008-2023 Jonathan Westhues and other authors" + VALUE "LegalCopyright", "(c) 2008-2024 Jonathan Westhues and other authors" END END diff --git a/src/solvespace.cpp b/src/solvespace.cpp index c2ea0330..6581b714 100644 --- a/src/solvespace.cpp +++ b/src/solvespace.cpp @@ -1103,7 +1103,7 @@ void SolveSpaceUI::MenuHelp(Command id) { "law. For details, visit http://gnu.org/licenses/\n" "\n" "© 2008-%d Jonathan Westhues and other authors.\n"), -PACKAGE_VERSION, 2023); +PACKAGE_VERSION, 2024); break; case Command::GITHUB: From a17ee176de2319694b6da8a17ca23065e42549bd Mon Sep 17 00:00:00 2001 From: Koen Schmeets Date: Tue, 12 Sep 2023 22:04:56 +0200 Subject: [PATCH 10/13] Try to use notarytool --- .github/scripts/sign-macos.sh | 47 ++++++++++++++++------------------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/.github/scripts/sign-macos.sh b/.github/scripts/sign-macos.sh index 69ff544a..41f4aa6d 100755 --- a/.github/scripts/sign-macos.sh +++ b/.github/scripts/sign-macos.sh @@ -58,34 +58,29 @@ hdiutil create -srcfolder "${app}" "${dmg}" # sign the .dmg codesign -s "${MACOS_DEVELOPER_ID}" --timestamp --options runtime -f --deep "${dmg}" -# notarize and store request uuid in variable -notarize_uuid=$(xcrun altool --notarize-app --primary-bundle-id "${bundle_id}" --username "${MACOS_APPSTORE_USERNAME}" --password "${MACOS_APPSTORE_APP_PASSWORD}" --file "${dmg}" | grep RequestUUID | awk '{print $3'}) +if ! command -v xcrun >/dev/null || ! xcrun --find notarytool >/dev/null; then + echo "Notarytool is not present in the system. Notarization has failed." + exit 1 +fi -echo $notarize_uuid +# Submit the package for notarization +notarization_output=$( + xcrun notarytool submit "${dmg}" \ + --apple-id "@env:MACOS_APPSTORE_USERNAME" \ + --password "@env:MACOS_APPSTORE_APP_PASSWORD" \ + --team-id "8X77K9NDG3" \ + --wait 2>&1) -# wait a bit so we don't get errors during checking -sleep 10 - -success=0 -for (( ; ; )) -do - echo "Checking progress..." - progress=$(xcrun altool --notarization-info "${notarize_uuid}" -u "${MACOS_APPSTORE_USERNAME}" -p "${MACOS_APPSTORE_APP_PASSWORD}" 2>&1) - # echo "${progress}" - - if [ $? -ne 0 ] || [[ "${progress}" =~ "Invalid" ]] ; then - echo "Error with notarization. Exiting" - break - fi - - if [[ "${progress}" =~ "success" ]]; then - success=1 - break - else - echo "Not completed yet. Sleeping for 10 seconds" - fi - sleep 10 -done +if [ $? -eq 0 ]; then + # Extract the operation ID from the output + operation_id=$(echo "$notarization_output" | awk '/RequestUUID/ {print $NF}') + echo "Notarization submitted. Operation ID: $operation_id" + exit 0 + else + echo "Notarization failed. Error: $notarization_output" + exit 1 + fi +fi # staple xcrun stapler staple "${dmg}" From 656afaa12d26f5ea5f5d8bf6d35e073a7453efcd Mon Sep 17 00:00:00 2001 From: Koen Schmeets Date: Sun, 21 Apr 2024 16:38:02 +0200 Subject: [PATCH 11/13] Try to build macOS with new app-specific-password secret --- .github/scripts/sign-macos.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/sign-macos.sh b/.github/scripts/sign-macos.sh index 41f4aa6d..1f2267f5 100755 --- a/.github/scripts/sign-macos.sh +++ b/.github/scripts/sign-macos.sh @@ -66,7 +66,7 @@ fi # Submit the package for notarization notarization_output=$( xcrun notarytool submit "${dmg}" \ - --apple-id "@env:MACOS_APPSTORE_USERNAME" \ + --apple-id "hello@koenschmeets.nl" \ --password "@env:MACOS_APPSTORE_APP_PASSWORD" \ --team-id "8X77K9NDG3" \ --wait 2>&1) From d0a201e0cb372d27680fe25df08128c20f73f795 Mon Sep 17 00:00:00 2001 From: Koen Schmeets Date: Sun, 21 Apr 2024 17:12:42 +0200 Subject: [PATCH 12/13] Maybe fix macOS notarization --- .github/scripts/sign-macos.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/sign-macos.sh b/.github/scripts/sign-macos.sh index 1f2267f5..63f5734a 100755 --- a/.github/scripts/sign-macos.sh +++ b/.github/scripts/sign-macos.sh @@ -67,7 +67,7 @@ fi notarization_output=$( xcrun notarytool submit "${dmg}" \ --apple-id "hello@koenschmeets.nl" \ - --password "@env:MACOS_APPSTORE_APP_PASSWORD" \ + --password "${MACOS_APPSTORE_APP_PASSWORD}" \ --team-id "8X77K9NDG3" \ --wait 2>&1) From 569ac27dd768612fb9b09b80295ef1439098defd Mon Sep 17 00:00:00 2001 From: Koen Schmeets Date: Sun, 21 Apr 2024 17:59:54 +0200 Subject: [PATCH 13/13] Temporarily disable snap --- .github/workflows/cd.yml | 60 ++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index ecd50bc4..6f2e0dba 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -114,36 +114,36 @@ jobs: name: macos path: build/bin/SolveSpace.dmg - deploy_snap_amd64: - needs: [test_ubuntu, test_windows, test_macos] - name: Deploy AMD64 Snap - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Fetch Tags - run: git fetch --force --tags - - name: Set Up Source - run: rsync --filter=":- .gitignore" -r ./ pkg/snap/solvespace-snap-src - - name: Build Snap - uses: snapcore/action-build@v1 - id: build - with: - path: pkg/snap - - name: Upload & Release to Edge - if: github.event_name == 'push' - uses: snapcore/action-publish@v1 - env: - SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPSTORE_LOGIN }} - with: - snap: ${{ steps.build.outputs.snap }} - release: edge - - name: Upload & Release to Beta + Edge - if: github.event_name == 'release' - uses: snapcore/action-publish@v1 - with: - store_login: ${{ secrets.SNAPSTORE_LOGIN }} - snap: ${{ steps.build.outputs.snap }} - release: edge,beta + # deploy_snap_amd64: + # needs: [test_ubuntu, test_windows, test_macos] + # name: Deploy AMD64 Snap + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v2 + # - name: Fetch Tags + # run: git fetch --force --tags + # - name: Set Up Source + # run: rsync --filter=":- .gitignore" -r ./ pkg/snap/solvespace-snap-src + # - name: Build Snap + # uses: snapcore/action-build@v1 + # id: build + # with: + # path: pkg/snap + # - name: Upload & Release to Edge + # if: github.event_name == 'push' + # uses: snapcore/action-publish@v1 + # env: + # SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPSTORE_LOGIN }} + # with: + # snap: ${{ steps.build.outputs.snap }} + # release: edge + # - name: Upload & Release to Beta + Edge + # if: github.event_name == 'release' + # uses: snapcore/action-publish@v1 + # with: + # store_login: ${{ secrets.SNAPSTORE_LOGIN }} + # snap: ${{ steps.build.outputs.snap }} + # release: edge,beta upload_release_assets: name: Upload Release Assets