diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index fdc1abdc9a0..b7f852d2443 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -1,6 +1,3 @@ -set(_wx_version 3.1.5) -set(_wx_git_tag v${_wx_version}) - set(_wx_toolkit "") set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1") @@ -20,26 +17,10 @@ else () set(_wx_edge "-DwxUSE_WEBVIEW_EDGE=OFF") endif () - -# Note: for anybody wanting to switch to tarball fetching - this won't just work as -# git apply expects a git repo. Either git init empty repo, or change patching method. -# if (WIN32) -# # Windows requires a different tarball because of configured line endings as stated in docs. -# set(_wx_tarball_url https://github.com/wxWidgets/wxWidgets/releases/download/${_wx_git_tag}/wxWidgets-${_wx_version}.7z) -# set(_wx_tarball_hash 99f5382312e4a4aea444ada07341a72c5d4a69b58d8e76586d4b94ede7f5ef4d) -# else() -# set(_wx_tarball_url https://github.com/wxWidgets/wxWidgets/releases/download/${_wx_git_tag}/wxWidgets-${_wx_version}.tar.bz2) -# set(_wx_tarball_hash d7b3666de33aa5c10ea41bb9405c40326e1aeb74ee725bb88f90f1d50270a224) -# endif() - orcaslicer_add_cmake_project( wxWidgets GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets" - # GIT_TAG ${_wx_git_tag} GIT_SHALLOW ON - # URL ${_wx_tarball_url} - # URL_HASH SHA256=${_wx_tarball_hash} - # PATCH_COMMAND ${_patch_cmd} DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG CMAKE_ARGS -DwxBUILD_PRECOMP=ON diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 985d3be0628..6f046ab33d6 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -1964,10 +1964,10 @@ msgid "arrange current plate" msgstr "Aktuelle Druckplatte anordnen" msgid "Reload All" -msgstr "" +msgstr "Alles neu laden" msgid "reload all from disk" -msgstr "" +msgstr "Alles von der Festplatte neu laden" msgid "Auto Rotate" msgstr "Automatisch rotieren" @@ -2448,7 +2448,7 @@ msgid "AMS not connected" msgstr "AMS nicht verbunden" msgid "Load" -msgstr "" +msgstr "Laden" msgid "Unload" msgstr "Entladen" @@ -2513,6 +2513,8 @@ msgid "" "Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " "load or unload filaments." msgstr "" +"Wählen Sie einen AMS-Steckplatz aus und drücken Sie dann die Schaltfläche " +"„Laden“ oder „Entladen“, um Filamente automatisch zu laden oder zu entladen." msgid "Edit" msgstr "Bearbeiten" @@ -3151,12 +3153,14 @@ msgstr "" "Filamenteigenschaften, wenn das aktuelle Filament leer ist." msgid "Air Printing Detection" -msgstr "" +msgstr "Luftdruckerkennung" msgid "" "Detects clogging and filament grinding, halting printing immediately to " "conserve time and filament." msgstr "" +"Erkennt Verstopfungen und Filamentabrieb und stoppt den Druck sofort, um " +"Zeit und Filament zu sparen." msgid "File" msgstr "Datei" @@ -3240,6 +3244,8 @@ msgstr "Nachbearbeitungsskript erfolgreich ausgeführt" msgid "Unknown error occured during exporting G-code." msgstr "" +"Unbekannter Fehler beim Exportieren des G-Codes aufgetreten." + #, boost-format msgid "" @@ -3247,6 +3253,9 @@ msgid "" "card is write locked?\n" "Error message: %1%" msgstr "" +"Das Kopieren des temporären G-Codes in den Ausgabe-G-Code ist fehlgeschlagen. " +"Ist die SD-Karte schreibgeschützt?\n" +"Fehlermeldung: %1%" #, boost-format msgid "" @@ -3254,28 +3263,41 @@ msgid "" "problem with target device, please try exporting again or using different " "device. The corrupted output G-code is at %1%.tmp." msgstr "" +"Das Kopieren des temporären G-Codes in den Ausgabe-G-Code ist fehlgeschlagen. " +"Es könnte ein Problem mit dem Zielgerät geben. Versuchen Sie es erneut oder " +"verwenden Sie ein anderes Gerät. Der beschädigte Ausgabe-G-Code befindet sich " +"in %1%.tmp." #, boost-format msgid "" "Renaming of the G-code after copying to the selected destination folder has " "failed. Current path is %1%.tmp. Please try exporting again." msgstr "" +"Das Umbenennen des G-Codes nach dem Kopieren in den ausgewählten " +"Zielordner ist fehlgeschlagen. Der aktuelle Pfad ist %1%.tmp. Bitte versuchen " +"Sie es erneut." #, boost-format msgid "" "Copying of the temporary G-code has finished but the original code at %1% " "couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "" +"Das Kopieren des temporären G-Codes wurde abgeschlossen, aber der ursprüngliche " +"Code unter %1% konnte während der Überprüfung des Kopiervorgangs nicht geöffnet " +"werden. Der Ausgabe-G-Code befindet sich in %2%.tmp." #, boost-format msgid "" "Copying of the temporary G-code has finished but the exported code couldn't " "be opened during copy check. The output G-code is at %1%.tmp." msgstr "" +"Das Kopieren des temporären G-Codes wurde abgeschlossen, aber der exportierte " +"Code konnte während der Überprüfung des Kopiervorgangs nicht geöffnet werden. " +"Der Ausgabe-G-Code befindet sich in %1%.tmp." #, boost-format msgid "G-code file exported to %1%" -msgstr "" +msgstr "G-Code-Datei exportiert nach %1%" msgid "Unknown error when export G-code." msgstr "Unbekannter Fehler beim exportieren des G-Code." @@ -4365,7 +4387,7 @@ msgid "Device" msgstr "Gerät" msgid "Multi-device" -msgstr "" +msgstr "Multi-Gerät" msgid "Project" msgstr "Projekt" @@ -4409,7 +4431,7 @@ msgid "Send all" msgstr "Sende alle" msgid "Send to Multi-device" -msgstr "" +msgstr "An Multi-Gerät senden" msgid "Keyboard Shortcuts" msgstr "Tastaturkürzel" @@ -5464,6 +5486,8 @@ msgid "" "The 3mf file version is in Beta and it is newer than the current OrcaSlicer " "version." msgstr "" +"Die 3mf-Dateiversion ist in der Beta und neuer als die aktuelle OrcaSlicer- " +"Version." msgid "If you would like to try Orca Slicer Beta, you may click to" msgstr "" @@ -5677,10 +5701,10 @@ msgid "Filament Tangle Detect" msgstr "Filamentverwicklung erkannt" msgid "Nozzle Clumping Detection" -msgstr "" +msgstr "Düsenverklumpen-Erkennung" msgid "Check if the nozzle is clumping by filament or other foreign objects." -msgstr "" +msgstr "Überprüfen Sie, ob die Düse durch Filament oder andere Fremdkörper verklumpt ist." msgid "Nozzle Type" msgstr "Düsentyp" @@ -6153,13 +6177,13 @@ msgid "prepare 3mf file..." msgstr "3mf-Datei vorbereiten…" msgid "Download failed, unknown file format." -msgstr "" +msgstr "Download fehlgeschlagen, unbekanntes Dateiformat." msgid "downloading project ..." msgstr "Projekt wird heruntergeladen..." msgid "Download failed, File size exception." -msgstr "" +msgstr "Download fehlgeschlagen, Dateigröße nicht erlaubt." #, c-format, boost-format msgid "Project downloaded %d%%" @@ -6169,6 +6193,8 @@ msgid "" "Importing to Bambu Studio failed. Please download the file and manually " "import it." msgstr "" +"Der Import in Orca Slicer ist fehlgeschlagen. Bitte laden Sie die Datei " +"herunter und importieren Sie sie manuell." msgid "Import SLA archive" msgstr "SLA-Archiv importieren" @@ -6253,18 +6279,21 @@ msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " "will be kept. You may fix the meshes and try agian." msgstr "" +"Die Boolesche Operation auf den Modellnetzen kann nicht durchgeführt werden. " +"Nur positive Teile werden beibehalten. Sie können die Netze reparieren und " +"es erneut versuchen." #, boost-format msgid "Reason: part \"%1%\" is empty." -msgstr "" +msgstr "Grund: Teil \"%1%\" ist leer." #, boost-format msgid "Reason: part \"%1%\" does not bound a volume." -msgstr "" +msgstr "Grund: Teil \"%1%\" hat kein Volumen." #, boost-format msgid "Reason: part \"%1%\" has self intersection." -msgstr "" +msgstr "Grund: Teil \"%1%\" hat Selbstüberschneidung." #, boost-format msgid "Reason: \"%1%\" and another part have no intersection." @@ -6445,19 +6474,25 @@ msgid "Units" msgstr "Einheiten" msgid "Allow only one OrcaSlicer instance" -msgstr "" +msgstr "Nur eine OrcaSlicer-Instanz zulassen" msgid "" "On OSX there is always only one instance of app running by default. However " "it is allowed to run multiple instances of same app from the command line. " "In such case this settings will allow only one instance." msgstr "" +"Auf OSX läuft standardmäßig immer nur eine Instanz der App. Es ist jedoch " +"möglich, mehrere Instanzen derselben App von der Befehlszeile aus zu " +"starten. In diesem Fall erlaubt diese Einstellung nur eine Instanz." msgid "" "If this is enabled, when starting OrcaSlicer and another instance of the " "same OrcaSlicer is already running, that instance will be reactivated " "instead." msgstr "" +"Wenn dies aktiviert ist und OrcaSlicer gestartet wird, während bereits eine " +"andere Instanz von OrcaSlicer läuft, wird diese Instanz stattdessen " +"reaktiviert." msgid "Home" msgstr "Startseite" @@ -6541,12 +6576,14 @@ msgstr "" "Drucker und wechselt automatisch." msgid "Multi-device Management(Take effect after restarting Studio)." -msgstr "" +msgstr "Multi-Geräte-Verwaltung (nach Neustart von Studio wirksam)." msgid "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." msgstr "" +"Wenn diese Option aktiviert ist, können Sie eine Aufgabe gleichzeitig an " +"mehrere Geräte senden und mehrere Geräte verwalten." msgid "Network" msgstr "Netzwerk" @@ -7164,6 +7201,9 @@ msgid "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." msgstr "" +"Ihr Düsendurchmesser in der gesliceten Datei stimmt nicht mit der " +"gemerkten Düse überein. Wenn Sie Ihre Düse kürzlich gewechselt haben, gehen " +"Sie zu Gerät > Drucker-Teile, um die Einstellungen zu ändern." #, c-format, boost-format msgid "" @@ -7211,7 +7251,7 @@ msgid "Modifying the device name" msgstr "Den Gerätenamen ändern" msgid "Bind with Pin Code" -msgstr "" +msgstr "Mit Pin-Code verbinden" msgid "Send to Printer SD card" msgstr "An MicroSD-Karte des Druckers senden" @@ -7273,21 +7313,23 @@ msgid "" "Please Find the Pin Code in Account page on printer screen,\n" " and type in the Pin Code below." msgstr "" +"Bitte finden Sie den Pin-Code auf der Konto-Seite auf dem Druckerbildschirm " +"und geben Sie den Pin-Code unten ein." msgid "Can't find Pin Code?" -msgstr "" +msgstr "Können Sie den Pin-Code nicht finden?" msgid "Pin Code" -msgstr "" +msgstr "Pin-Code" msgid "Binding..." -msgstr "" +msgstr "Bindung..." msgid "Please confirm on the printer screen" -msgstr "" +msgstr "Bitte bestätigen Sie auf dem Druckerbildschirm" msgid "Log in failed. Please check the Pin Code." -msgstr "" +msgstr "Anmeldung fehlgeschlagen. Bitte überprüfen Sie den Pin-Code." msgid "Log in printer" msgstr "Drucker anmelden" @@ -8031,21 +8073,31 @@ msgid "" "\n" "You can save or discard the preset values you have modified." msgstr "" +"\n" +"Sie können die geänderten Profilwerte speichern oder verwerfen." msgid "" "\n" "You can save or discard the preset values you have modified, or choose to " "transfer the values you have modified to the new preset." msgstr "" +"\n" +"Sie können die geänderten Profilwerte speichern oder verwerfen oder wählen, " +"ob Sie die geänderten Werte in das neue Profil übertragen möchten." + msgid "You have previously modified your settings." msgstr "" +"Sie haben Ihre Einstellungen zuvor geändert." msgid "" "\n" "You can discard the preset values you have modified, or choose to transfer " "the modified values to the new project" msgstr "" +"\n" +"Sie können die geänderten Profilwerte verwerfen oder wählen, ob Sie die " +"geänderten Werte in das neue Projekt übertragen möchten." msgid "Extruders count" msgstr "Anzahl der Extruder" @@ -8558,37 +8610,37 @@ msgid "resume" msgstr "Fortsetzen" msgid "Resume Printing" -msgstr "" +msgstr "Druck fortsetzen" msgid "Resume Printing(defects acceptable)" -msgstr "" +msgstr "Druck fortsetzen (Fehler akzeptabel)" msgid "Resume Printing(problem solved)" -msgstr "" +msgstr "Druck fortsetzen (Problem gelöst)" msgid "Stop Printing" -msgstr "" +msgstr "Druck abbrechen" msgid "Check Assistant" -msgstr "" +msgstr "Assistent überprüfen" msgid "Filament Extruded, Continue" -msgstr "" +msgstr "Filament extrudiert, fortsetzen" msgid "Not Extruded Yet, Retry" -msgstr "" +msgstr "Noch nicht extrudiert, erneut versuchen" msgid "Finished, Continue" -msgstr "" +msgstr "Fertig, fortsetzen" msgid "Load Filament" msgstr "Laden" msgid "Filament Loaded, Resume" -msgstr "" +msgstr "Filament geladen, fortsetzen" msgid "View Liveview" -msgstr "" +msgstr "Live-Ansicht anzeigen" msgid "Confirm and Update Nozzle" msgstr "Bestätigen und Düse aktualisieren" @@ -10926,7 +10978,7 @@ msgid "Lightning" msgstr "Blitz" msgid "Cross Hatch" -msgstr "" +msgstr "Kreuzschraffur" msgid "Sparse infill anchor length" msgstr "Länge des Infill-Ankers" @@ -14145,7 +14197,7 @@ msgid "load_obj: failed to parse" msgstr "load_obj: konnte nicht analysiert werden" msgid "load mtl in obj: failed to parse" -msgstr "" +msgstr "Laden von mtl in obj: konnte nicht analysiert werden" msgid "The file contains polygons with more than 4 vertices." msgstr "Die Datei enthält Polygone mit mehr als 4 Eckpunkten." @@ -14282,6 +14334,11 @@ msgid "" "historical results. \n" "Do you still want to continue the calibration?" msgstr "" +"Dieser Maschinentyp kann nur 16 historische Ergebnisse pro Düse speichern. " +"Sie können die vorhandenen historischen Ergebnisse löschen und dann die " +"Kalibrierung starten. Oder Sie können die Kalibrierung fortsetzen, aber Sie " +"können keine neuen Kalibrierungshistorien erstellen. \n" +"Möchten Sie die Kalibrierung dennoch fortsetzen?" msgid "Connecting to printer..." msgstr "Verbindung zum Drucker wird hergestellt..." @@ -14307,6 +14364,8 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" +"Dieser Maschinentyp kann nur %d historische Ergebnisse pro Düse speichern. " +"Dieses Ergebnis wird nicht gespeichert." msgid "Internal Error" msgstr "Interner Fehler" @@ -14695,13 +14754,13 @@ msgstr "Aktivität" #, c-format, boost-format msgid "This machine type can only hold %d history results per nozzle." -msgstr "" +msgstr "Dieser Maschinentyp kann nur %d historische Ergebnisse pro Düse speichern." msgid "Edit Flow Dynamics Calibration" msgstr "Ändern der Flussdynamik-Kalibrierung" msgid "New Flow Dynamic Calibration" -msgstr "" +msgstr "Neue Flussdynamik-Kalibrierung" msgid "Ok" msgstr "Ok" @@ -15778,30 +15837,47 @@ msgid "" "It has a small layer height, and results in almost negligible layer lines " "and high printing quality. It is suitable for most general printing cases." msgstr "" +"Es hat eine kleine Schichthöhe und führt zu fast vernachlässigbaren " +"Schichtlinien und hoher Druckqualität. Es ist für die meisten allgemeinen " +"Druckfälle geeignet." + msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " "and acceleration, and the sparse infill pattern is Gyroid. So, it results in " "much higher printing quality, but a much longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,2 mm Düse hat es niedrigere " +"Geschwindigkeiten und Beschleunigungen, und das spärliche Füllmuster ist " +"Gyroid. Daher ergibt sich eine wesentlich höhere Druckqualität, aber eine " +"viel längere Druckzeit." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a slightly " "bigger layer height, and results in almost negligible layer lines, and " "slightly shorter printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,2 mm Düse hat es eine etwas größere " +"Schichthöhe und führt zu fast vernachlässigbaren Schichtlinien und einer " +"etwas kürzeren Druckzeit." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " "height, and results in slightly visible layer lines, but shorter printing " "time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,2 mm Düse hat es eine größere " +"Schichthöhe und führt zu leicht sichtbaren Schichtlinien, aber einer kürzeren " +"Druckzeit." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " "height, and results in almost invisible layer lines and higher printing " "quality, but shorter printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,2 mm Düse hat es eine kleinere " +"Schichthöhe und führt zu fast unsichtbaren Schichtlinien und einer höheren " +"Druckqualität, aber einer kürzeren Druckzeit." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " @@ -15809,12 +15885,19 @@ msgid "" "Gyroid. So, it results in almost invisible layer lines and much higher " "printing quality, but much longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,2 mm Düse hat es kleinere Schicht-" +"linien, niedrigere Geschwindigkeiten und Beschleunigungen, und das spärliche " +"Füllmuster ist Gyroid. Daher ergibt sich fast unsichtbare Schichtlinien und " +"eine wesentlich höhere Druckqualität, aber eine wesentlich längere Druckzeit." msgid "" "Compared with the default profile of 0.2 mm nozzle, it has a smaller layer " "height, and results in minimal layer lines and higher printing quality, but " "shorter printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,2 mm Düse hat es eine kleinere " +"Schichthöhe und führt zu minimalen Schichtlinien und einer höheren " +"Druckqualität, aber einer kürzeren Druckzeit." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " @@ -15822,35 +15905,54 @@ msgid "" "Gyroid. So, it results in minimal layer lines and much higher printing " "quality, but much longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,2 mm Düse hat es kleinere Schicht-" +"linien, niedrigere Geschwindigkeiten und Beschleunigungen, und das spärliche " +"Füllmuster ist Gyroid. Daher ergibt sich minimale Schichtlinien und eine " +"wesentlich höhere Druckqualität, aber eine wesentlich längere Druckzeit." msgid "" "It has a general layer height, and results in general layer lines and " "printing quality. It is suitable for most general printing cases." msgstr "" +"Es hat eine allgemeine Schichthöhe und führt zu allgemeinen Schichtlinien " +"und Druckqualität. Es ist für die meisten allgemeinen Druckfälle geeignet." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has more wall loops " "and a higher sparse infill density. So, it results in higher strength of the " "prints, but more filament consumption and longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,4 mm Düse hat es mehr Wand-Schleifen " +"und eine höhere spärliche Fülldichte. Daher ergibt sich eine höhere " +"Festigkeit der Drucke, aber mehr Filamentverbrauch und eine längere " +"Druckzeit." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " "height, and results in more apparent layer lines and lower printing quality, " "but slightly shorter printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,4 mm Düse hat es eine größere " +"Schichthöhe und führt zu deutlicheren Schichtlinien und einer niedrigeren " +"Druckqualität, aber einer etwas kürzeren Druckzeit." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " "height, and results in more apparent layer lines and lower printing quality, " "but shorter printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,4 mm Düse hat es eine größere " +"Schichthöhe und führt zu deutlicheren Schichtlinien und einer niedrigeren " +"Druckqualität, aber einer kürzeren Druckzeit." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " "height, and results in less apparent layer lines and higher printing " "quality, but longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,4 mm Düse hat es eine kleinere " +"Schichthöhe und führt zu weniger deutlichen Schichtlinien und einer höheren " +"Druckqualität, aber einer längeren Druckzeit." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -15858,12 +15960,20 @@ msgid "" "Gyroid. So, it results in less apparent layer lines and much higher printing " "quality, but much longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,4 mm Düse hat es eine kleinere " +"Schichthöhe, niedrigere Geschwindigkeiten und Beschleunigungen, und das " +"spärliche Füllmuster ist Gyroid. Daher ergibt sich weniger deutliche " +"Schichtlinien und eine wesentlich höhere Druckqualität, aber eine wesentlich " +"längere Druckzeit." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " "height, and results in almost negligible layer lines and higher printing " "quality, but longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,4 mm Düse hat es eine kleinere " +"Schichthöhe und führt zu fast vernachlässigbaren Schichtlinien und einer " +"höheren Druckqualität, aber einer längeren Druckzeit." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -15871,64 +15981,102 @@ msgid "" "Gyroid. So, it results in almost negligible layer lines and much higher " "printing quality, but much longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,4 mm Düse hat es eine kleinere " +"Schichthöhe, niedrigere Geschwindigkeiten und Beschleunigungen, und das " +"spärliche Füllmuster ist Gyroid. Daher ergibt sich fast vernachlässigbare " +"Schichtlinien und eine wesentlich höhere Druckqualität, aber eine wesentlich " +"längere Druckzeit." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " "height, and results in almost negligible layer lines and longer printing " "time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,4 mm Düse hat es eine kleinere " +"Schichthöhe und führt zu fast vernachlässigbaren Schichtlinien und einer " +"längeren Druckzeit." msgid "" "It has a big layer height, and results in apparent layer lines and ordinary " "printing quality and printing time." msgstr "" +"Es hat eine große Schichthöhe und führt zu deutlichen Schichtlinien und " +"normaler Druckqualität und Druckzeit." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has more wall loops " "and a higher sparse infill density. So, it results in higher strength of the " "prints, but more filament consumption and longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,6 mm Düse hat es mehr Wand-Schleifen " +"und eine höhere spärliche Fülldichte. Daher ergibt sich eine höhere " +"Festigkeit der Drucke, aber mehr Filamentverbrauch und eine längere " +"Druckzeit." + msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " "height, and results in more apparent layer lines and lower printing quality, " "but shorter printing time in some printing cases." msgstr "" +"Im Vergleich zum Standardprofil einer 0,6 mm Düse hat es eine größere " +"Schichthöhe und führt zu deutlicheren Schichtlinien und einer niedrigeren " +"Druckqualität, aber einer kürzeren Druckzeit in einigen Druckfällen." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " "height, and results in much more apparent layer lines and much lower " "printing quality, but shorter printing time in some printing cases." msgstr "" +"Im Vergleich zum Standardprofil einer 0,6 mm Düse hat es eine größere " +"Schichthöhe und führt zu wesentlich deutlicheren Schichtlinien und einer " +"viel niedrigeren Druckqualität, aber einer kürzeren Druckzeit in einigen " +"Druckfällen." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " "height, and results in less apparent layer lines and slight higher printing " "quality, but longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,6 mm Düse hat es eine kleinere " +"Schichthöhe und führt zu weniger deutlichen Schichtlinien und einer leicht " +"höheren Druckqualität, aber einer längeren Druckzeit." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " "height, and results in less apparent layer lines and higher printing " "quality, but longer printing time." msgstr "" +"Im Vergleich zum Standardprofil einer 0,6 mm Düse hat es eine kleinere " +"Schichthöhe und führt zu weniger deutlichen Schichtlinien und einer höheren " +"Druckqualität, aber einer längeren Druckzeit." msgid "" "It has a very big layer height, and results in very apparent layer lines, " "low printing quality and general printing time." msgstr "" +"Es hat eine sehr große Schichthöhe und führt zu sehr deutlichen Schichtlinien, " +"niedriger Druckqualität und allgemeiner Druckzeit." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " "height, and results in very apparent layer lines and much lower printing " "quality, but shorter printing time in some printing cases." msgstr "" +"Im Vergleich zum Standardprofil einer 0,8 mm Düse hat es eine größere " +"Schichthöhe und führt zu sehr deutlichen Schichtlinien und einer viel " +"niedrigeren Druckqualität, aber einer kürzeren Druckzeit in einigen " +"Druckfällen." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " "layer height, and results in extremely apparent layer lines and much lower " "printing quality, but much shorter printing time in some printing cases." msgstr "" +"Im Vergleich zum Standardprofil einer 0,8 mm Düse hat es eine viel größere " +"Schichthöhe und führt zu extrem deutlichen Schichtlinien und einer viel " +"niedrigeren Druckqualität, aber einer wesentlich kürzeren Druckzeit in " +"einigen Druckfällen." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a slightly " @@ -15936,12 +16084,20 @@ msgid "" "lines and slightly higher printing quality, but longer printing time in some " "printing cases." msgstr "" +"Im Vergleich zum Standardprofil einer 0,8 mm Düse hat es eine etwas kleinere " +"Schichthöhe und führt zu etwas weniger, aber immer noch deutlichen " +"Schichtlinien und einer leicht höheren Druckqualität, aber einer längeren " +"Druckzeit in einigen Druckfällen." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " "height, and results in less but still apparent layer lines and slightly " "higher printing quality, but longer printing time in some printing cases." msgstr "" +"Im Vergleich zum Standardprofil einer 0,8 mm Düse hat es eine kleinere " +"Schichthöhe und führt zu weniger, aber immer noch deutlichen Schichtlinien " +"und einer leicht höheren Druckqualität, aber einer längeren Druckzeit in " +"einigen Druckfällen." msgid "Connected to Obico successfully!" msgstr "Erfolgreich mit Obico verbunden!" diff --git a/resources/web/guide/23/23.css b/resources/web/guide/23/23.css index de2ca9f3e8e..35ceff9960a 100644 --- a/resources/web/guide/23/23.css +++ b/resources/web/guide/23/23.css @@ -148,7 +148,7 @@ input height: calc(100% - 6px); display: flex; align-items: center; - border-bottom: 6px solid #00AE42; + border-bottom: 6px solid #009688; } #Title div.TitleUnselected @@ -205,4 +205,4 @@ input .CFilament_EditBtn:hover { -} \ No newline at end of file +} diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 3981a6669c2..e9a5d6e6418 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -892,8 +892,6 @@ int CLI::run(int argc, char **argv) // instruct the window manager to fall back to X server mode. ::setenv("GDK_BACKEND", "x11", /* replace */ true); - ::setenv("WEBKIT_DISABLE_COMPOSITING_MODE", "1", /* replace */ false); - // Also on Linux, we need to tell Xlib that we will be using threads, // lest we crash when we fire up GStreamer. XInitThreads(); diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index d87588c6d9c..e216853adbd 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -18,6 +18,7 @@ #include "../PrintConfig.hpp" #include "../Surface.hpp" +#include "ExtrusionEntity.hpp" #include "FillBase.hpp" #include "FillRectilinear.hpp" #include "FillLightning.hpp" @@ -40,6 +41,7 @@ struct SurfaceFillParams coordf_t overlap = 0.; // Angle as provided by the region config, in radians. float angle = 0.f; + bool rotate_angle = true; // Is bridging used for this fill? Bridging parameters may be used even if this->flow.bridge() is not set. bool bridge; // Non-negative for a bridge. @@ -83,6 +85,7 @@ struct SurfaceFillParams RETURN_COMPARE_NON_EQUAL(spacing); RETURN_COMPARE_NON_EQUAL(overlap); RETURN_COMPARE_NON_EQUAL(angle); + RETURN_COMPARE_NON_EQUAL(rotate_angle); RETURN_COMPARE_NON_EQUAL(density); // RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, dont_adjust); RETURN_COMPARE_NON_EQUAL(anchor_length); @@ -105,6 +108,7 @@ struct SurfaceFillParams this->spacing == rhs.spacing && this->overlap == rhs.overlap && this->angle == rhs.angle && + this->rotate_angle == rhs.rotate_angle && this->bridge == rhs.bridge && this->bridge_angle == rhs.bridge_angle && this->density == rhs.density && @@ -491,9 +495,12 @@ std::vector group_fills(const Layer &layer) } } params.bridge_angle = float(surface.bridge_angle); - params.angle = float(Geometry::deg2rad(region_config.infill_direction.value)); - - // Calculate the actual flow we'll be using for this infill. + params.angle = float(Geometry::deg2rad(params.extrusion_role == erInternalInfill ? + region_config.infill_direction : + region_config.solid_infill_direction.value)); + params.rotate_angle = (params.extrusion_role != erInternalInfill) && region_config.rotate_solid_infill_direction; + + // Calculate the actual flow we'll be using for this infill. params.bridge = is_bridge || Fill::use_bridge_flow(params.pattern); const bool is_thick_bridge = surface.is_bridge() && (surface.is_internal_bridge() ? object_config.thick_internal_bridges : object_config.thick_bridges); params.flow = params.bridge ? @@ -647,8 +654,9 @@ std::vector group_fills(const Layer &layer) else params.pattern = ipRectilinear; params.density = 100.f; - params.extrusion_role = erInternalInfill; - params.angle = float(Geometry::deg2rad(layerm.region().config().infill_direction.value)); + params.extrusion_role = erSolidInfill; + params.angle = float(Geometry::deg2rad(layerm.region().config().solid_infill_direction.value)); + params.rotate_angle = layerm.region().config().rotate_solid_infill_direction; // calculate the actual flow we'll be using for this infill params.flow = layerm.flow(frSolidInfill); params.spacing = params.flow.spacing(); @@ -752,6 +760,7 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: f->layer_id = this->id(); f->z = this->print_z; f->angle = surface_fill.params.angle; + f->rotate_angle = surface_fill.params.rotate_angle; f->adapt_fill_octree = (surface_fill.params.pattern == ipSupportCubic) ? support_fill_octree : adaptive_fill_octree; f->print_config = &this->object()->print()->config(); f->print_object_config = &this->object()->config(); diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 38f8c722b5d..4812fcd5eb7 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -94,6 +94,8 @@ class Fill coordf_t overlap; // in radians, ccw, 0 = East float angle; + // Orca: enable angle shifting for layer change + bool rotate_angle{ true }; // In scaled coordinates. Maximum lenght of a perimeter segment connecting two infill lines. // Used by the FillRectilinear2, FillGrid2, FillTriangles, FillStars and FillCubic. // If left to zero, the links will not be limited. @@ -150,6 +152,7 @@ class Fill overlap(0.), // Initial angle is undefined. angle(FLT_MAX), + rotate_angle(true), link_max_length(0), loop_clipping(0), // The initial bounding box is empty, therefore undefined. @@ -171,7 +174,7 @@ class Fill ExPolygon expolygon, ThickPolylines& thick_polylines_out) {} - virtual float _layer_angle(size_t idx) const { return (idx & 1) ? float(M_PI/2.) : 0; } + virtual float _layer_angle(size_t idx) const { return (rotate_angle && (idx & 1)) ? float(M_PI/2.) : 0; } virtual std::pair _infill_direction(const Surface *surface) const; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index f7a9d28924d..a5f4a2f4f51 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -772,7 +772,7 @@ static std::vector s_Preset_print_options { "top_shell_layers", "top_shell_thickness", "bottom_shell_layers", "bottom_shell_thickness", "extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "reduce_crossing_wall", "detect_thin_wall", "detect_overhang_wall", "overhang_reverse", "overhang_reverse_threshold","overhang_reverse_internal_only", "wall_direction", "seam_position", "staggered_inner_seams", "wall_sequence", "is_infill_first", "sparse_infill_density", "sparse_infill_pattern", "top_surface_pattern", "bottom_surface_pattern", - "infill_direction", "counterbore_hole_bridging", + "infill_direction", "solid_infill_direction", "rotate_solid_infill_direction", "counterbore_hole_bridging", "minimum_sparse_infill_area", "reduce_infill_retraction","internal_solid_infill_pattern","gap_fill_target", "ironing_type", "ironing_pattern", "ironing_flow", "ironing_speed", "ironing_spacing", "ironing_angle", "max_travel_detour_distance", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 651c0ff8d32..8f5e000ed0d 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2009,7 +2009,7 @@ def = this->add("filament_loading_speed", coFloats); def->cli = ConfigOptionDef::nocli; def = this->add("infill_direction", coFloat); - def->label = L("Infill direction"); + def->label = L("Sparse infill direction"); def->category = L("Strength"); def->tooltip = L("Angle for sparse infill pattern, which controls the start or main direction of line"); def->sidetext = L("°"); @@ -2018,6 +2018,23 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(45)); + def = this->add("solid_infill_direction", coFloat); + def->label = L("Solid infill direction"); + def->category = L("Strength"); + def->tooltip = L("Angle for solid infill pattern, which controls the start or main direction of line"); + def->sidetext = L("°"); + def->min = 0; + def->max = 360; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(45)); + + def = this->add("rotate_solid_infill_direction", coBool); + def->label = L("Rotate solid infill direction"); + def->category = L("Strength"); + def->tooltip = L("Rotate the solid infill direction by 90° for each layer."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(true)); + def = this->add("sparse_infill_density", coPercent); def->label = L("Sparse infill density"); def->category = L("Strength"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index de094343b28..7630cbe598d 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -882,6 +882,8 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloatOrPercent, outer_wall_line_width)) ((ConfigOptionFloat, outer_wall_speed)) ((ConfigOptionFloat, infill_direction)) + ((ConfigOptionFloat, solid_infill_direction)) + ((ConfigOptionBool, rotate_solid_infill_direction)) ((ConfigOptionPercent, sparse_infill_density)) ((ConfigOptionEnum, sparse_infill_pattern)) ((ConfigOptionEnum, fuzzy_skin)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 232a0a80d6e..1cce64d9f8d 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1072,6 +1072,8 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "solid_infill_filament" || opt_key == "sparse_infill_line_width" || opt_key == "infill_direction" + || opt_key == "solid_infill_direction" + || opt_key == "rotate_solid_infill_direction" || opt_key == "ensure_vertical_shell_thickness" || opt_key == "bridge_angle" //BBS diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index ee7c380a694..0bf251d7292 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -134,19 +134,19 @@ void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& i { if (item.GetState() & wxAUI_BUTTON_STATE_PRESSED) { - dc.SetPen(wxPen(m_highlightColour)); - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(20))); + dc.SetPen(wxPen(StateColor::darkModeColorFor("#009688"))); // ORCA + dc.SetBrush(wxBrush(StateColor::darkModeColorFor("#009688"))); // ORCA dc.DrawRectangle(rect); } else if ((item.GetState() & wxAUI_BUTTON_STATE_HOVER) || item.IsSticky()) { - dc.SetPen(wxPen(m_highlightColour)); - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(40))); + dc.SetPen(wxPen(StateColor::darkModeColorFor("#009688"))); // ORCA + dc.SetBrush(wxBrush(StateColor::darkModeColorFor("#009688"))); // ORCA // draw an even lighter background for checked item hovers (since // the hover background is the same color as the check background) if (item.GetState() & wxAUI_BUTTON_STATE_CHECKED) - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(50))); + dc.SetBrush(wxBrush(StateColor::darkModeColorFor("#009688"))); // ORCA dc.DrawRectangle(rect); } @@ -154,8 +154,8 @@ void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& i { // it's important to put this code in an else statement after the // hover, otherwise hovers won't draw properly for checked items - dc.SetPen(wxPen(m_highlightColour)); - dc.SetBrush(wxBrush(m_highlightColour.ChangeLightness(40))); + dc.SetPen(wxPen(StateColor::darkModeColorFor("#009688"))); // ORCA + dc.SetBrush(wxBrush(StateColor::darkModeColorFor("#009688"))); // ORCA dc.DrawRectangle(rect); } } diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index ddc9877cdf4..d871e7cbcf2 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -550,7 +550,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_field(el, has_solid_infill); for (auto el : { "infill_direction", "sparse_infill_line_width", - "sparse_infill_speed", "bridge_speed", "internal_bridge_speed", "bridge_angle" }) + "sparse_infill_speed", "bridge_speed", "internal_bridge_speed", "bridge_angle","solid_infill_direction", "rotate_solid_infill_direction" }) toggle_field(el, have_infill || has_solid_infill); toggle_field("top_shell_thickness", ! has_spiral_vase && has_top_solid_infill); diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 9e3cb574b1c..8b2ce3a50ef 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1382,7 +1382,6 @@ void MachineObject::parse_status(int flag) } is_support_filament_tangle_detect = ((flag >> 19) & 0x1) != 0; - is_support_user_preset = ((flag >> 22) & 0x1) != 0; if (xcam_filament_tangle_detect_count > 0) xcam_filament_tangle_detect_count--; else { diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index a66b3819fd5..fc663c62848 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -83,6 +83,7 @@ wxString get_thumbnails_string(const std::vector& values) return ret_str; } + Field::~Field() { if (m_on_kill_focus) @@ -93,6 +94,11 @@ Field::~Field() m_back_to_initial_value = nullptr; if (m_back_to_sys_value) m_back_to_sys_value = nullptr; + if (getWindow()) { + wxWindow* win = getWindow(); + win->Destroy(); + win = nullptr; + } } void Field::PostInitialize() @@ -158,7 +164,7 @@ void Field::PostInitialize() } evt.Skip(); - }, getWindow()->GetId()); + }); } } @@ -503,101 +509,6 @@ void Field::sys_color_changed() #endif } -std::vector**> spools; -std::vector*> spools2; - -void switch_window_pools() -{ - for (auto p : spools) { - spools2.push_back(*p); - *p = new std::deque; - } -} - -void release_window_pools() -{ - for (auto p : spools2) { - delete p; - } - spools2.clear(); -} - -template -struct Builder -{ - Builder() - { - pool_ = new std::deque; - spools.push_back(&pool_); - } - - template - T *build(wxWindow * p, Args ...args) - { - if (pool_->empty()) { - auto t = new T(p, args...); - t->SetClientData(pool_); - return t; - } - auto t = dynamic_cast(pool_->front()); - pool_->pop_front(); - t->Reparent(p); - t->Enable(); - t->Show(); - return t; - } - std::deque* pool_; -}; - -struct wxEventFunctorRef -{ - wxEventFunctor * func; -}; - -wxEventFunctor & wxMakeEventFunctor(const int, wxEventFunctorRef func) -{ - return *func.func; -} - -struct myEvtHandler : wxEvtHandler -{ - void UnbindAll() - { - size_t cookie; - for (wxDynamicEventTableEntry *entry = GetFirstDynamicEntry(cookie); - entry; - entry = GetNextDynamicEntry(cookie)) { - // In Field, All Bind has id, but for TextInput, ComboBox, SpinInput, all not - if (entry->m_id != wxID_ANY && entry->m_lastId == wxID_ANY) - Unbind(entry->m_eventType, - wxEventFunctorRef{entry->m_fn}, - entry->m_id, - entry->m_lastId, - entry->m_callbackUserData); - //DoUnbind(entry->m_id, entry->m_lastId, entry->m_eventType, *entry->m_fn, entry->m_callbackUserData); - } - } -}; - -static void unbind_events(wxEvtHandler *h) -{ - static_cast(h)->UnbindAll(); -} - -void free_window(wxWindow *win) -{ - unbind_events(win); - for (auto c : win->GetChildren()) - if (dynamic_cast(c)) - unbind_events(c); - win->Hide(); - if (auto sizer = win->GetContainingSizer()) - sizer->Clear(); - win->Reparent(wxGetApp().mainframe); - if (win->GetClientData()) - reinterpret_cast*>(win->GetClientData())->push_back(win); -} - template bool is_defined_input_value(wxWindow* win, const ConfigOptionType& type) { @@ -662,15 +573,10 @@ void TextCtrl::BUILD() { // BBS: new param ui style // const long style = m_opt.multiline ? wxTE_MULTILINE : wxTE_PROCESS_ENTER/*0*/; - static Builder builder1; - static Builder<::TextInput> builder2; auto temp = m_opt.multiline - ? (wxWindow*)builder1.build(m_parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE) - : builder2.build(m_parent, "", "", "", wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER); - temp->SetLabel(_L(m_opt.sidetext)); + ? (wxWindow *) new wxTextCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, wxTE_MULTILINE) + : new ::TextInput(m_parent, text_value, _L(m_opt.sidetext), "", wxDefaultPosition, size, wxTE_PROCESS_ENTER); auto text_ctrl = m_opt.multiline ? (wxTextCtrl *)temp : ((TextInput *) temp)->GetTextCtrl(); - text_ctrl->SetLabel(text_value); - temp->SetSize(size); m_combine_side_text = !m_opt.multiline; if (parent_is_custom_ctrl && m_opt.height < 0) opt_height = (double) text_ctrl->GetSize().GetHeight() / m_em_unit; @@ -733,7 +639,7 @@ void TextCtrl::BUILD() { if (!bEnterPressed) propagate_value(); }), temp->GetId()); - /* +/* // select all text using Ctrl+A temp->Bind(wxEVT_CHAR, ([temp](wxKeyEvent& event) { @@ -902,8 +808,7 @@ void CheckBox::BUILD() { m_last_meaningful_value = static_cast(check_value); // BBS: use ::CheckBox - static Builder<::CheckBox> builder; - auto temp = builder.build(m_parent); + auto temp = new ::CheckBox(m_parent); if (!wxOSX) temp->SetBackgroundStyle(wxBG_STYLE_PAINT); //temp->SetBackgroundColour(*wxWHITE); temp->SetValue(check_value); @@ -1022,14 +927,8 @@ void SpinCtrl::BUILD() { ? 0 : m_opt.min; const int max_val = m_opt.max < 2147483647 ? m_opt.max : 2147483647; - static Builder builder; - auto temp = builder.build(m_parent, "", "", wxDefaultPosition, wxDefaultSize, - wxSP_ARROW_KEYS); - temp->SetSize(size); - temp->SetLabel(_L(m_opt.sidetext)); - temp->GetTextCtrl()->SetLabel(text_value); - temp->SetRange(min_val, max_val); - temp->SetValue(default_value); + auto temp = new SpinInput(m_parent, text_value, _L(m_opt.sidetext), wxDefaultPosition, size, + wxSP_ARROW_KEYS, min_val, max_val, default_value); m_combine_side_text = true; #ifdef __WXGTK3__ wxSize best_sz = temp->GetBestSize(); @@ -1052,7 +951,7 @@ void SpinCtrl::BUILD() { } propagate_value(); - }), temp->GetId()); + })); temp->Bind(wxEVT_SPINCTRL, ([this](wxCommandEvent e) { propagate_value(); }), temp->GetId()); @@ -1204,15 +1103,14 @@ void Choice::BUILD() if (m_opt.nullable) m_last_meaningful_value = dynamic_cast(m_opt.default_value.get())->get_at(0); - choice_ctrl * temp; + choice_ctrl* temp; auto dynamic_list = dynamic_lists.find(m_opt.opt_key); if (dynamic_list != dynamic_lists.end()) m_list = dynamic_list->second; if (m_opt.gui_type != ConfigOptionDef::GUIType::undefined && m_opt.gui_type != ConfigOptionDef::GUIType::select_open && m_list == nullptr) { m_is_editable = true; - static Builder builder1; - temp = builder1.build(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxTE_PROCESS_ENTER); + temp = new choice_ctrl(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxTE_PROCESS_ENTER); } else { #ifdef UNDEIFNED__WXOSX__ // __WXOSX__ // BBS @@ -1224,12 +1122,9 @@ void Choice::BUILD() temp->SetTextCtrlStyle(wxTE_READONLY); temp->Create(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr); #else - static Builder builder2; - temp = builder2.build(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxCB_READONLY); + temp = new choice_ctrl(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size, 0, nullptr, wxCB_READONLY); #endif //__WXOSX__ } - // temp->SetSize(size); - temp->Clear(); temp->GetDropDown().SetUseContentWidth(true); if (parent_is_custom_ctrl && m_opt.height < 0) opt_height = (double) temp->GetTextCtrl()->GetSize().GetHeight() / m_em_unit; @@ -1282,9 +1177,9 @@ void Choice::BUILD() e.StopPropagation(); else e.Skip(); - }, temp->GetId()); - temp->Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_is_dropped = true; }, temp->GetId()); - temp->Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent&) { m_is_dropped = false; }, temp->GetId()); + }); + temp->Bind(wxEVT_COMBOBOX_DROPDOWN, [this](wxCommandEvent&) { m_is_dropped = true; }); + temp->Bind(wxEVT_COMBOBOX_CLOSEUP, [this](wxCommandEvent&) { m_is_dropped = false; }); temp->Bind(wxEVT_COMBOBOX, [this](wxCommandEvent&) { on_change_field(); }, temp->GetId()); @@ -1293,12 +1188,12 @@ void Choice::BUILD() e.Skip(); if (!bEnterPressed) propagate_value(); - }, temp->GetId() ); + } ); temp->Bind(wxEVT_TEXT_ENTER, [this](wxEvent& e) { EnterPressed enter(this); propagate_value(); - }, temp->GetId() ); + } ); } temp->SetToolTip(get_tooltip_text(temp->GetValue())); diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index e90e59301de..235373db1d4 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -547,7 +547,7 @@ void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, f static const ImVec4 LINE_NUMBER_COLOR = ImGuiWrapper::COL_ORANGE_LIGHT; static const ImVec4 SELECTION_RECT_COLOR = ImGuiWrapper::COL_ORANGE_DARK; - static const ImVec4 COMMAND_COLOR = { 0.8f, 0.8f, 0.0f, 1.0f }; + static const ImVec4 COMMAND_COLOR = {0.8f, 0.8f, 0.0f, 1.0f}; static const ImVec4 PARAMETERS_COLOR = { 1.0f, 1.0f, 1.0f, 1.0f }; static const ImVec4 COMMENT_COLOR = { 0.7f, 0.7f, 0.7f, 1.0f }; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 29addc67386..f1bb13d2912 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -6387,6 +6387,7 @@ bool GLCanvas3D::_init_main_toolbar() item.icon_filename = m_is_dark ? "toolbar_variable_layer_height_dark.svg" : "toolbar_variable_layer_height.svg"; item.tooltip = _utf8(L("Variable layer height")); item.sprite_id++; + item.left.toggable = true; // ORCA Closes popup if other toolbar icon clicked and it allows closing popup when clicked its button item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_LAYERSEDITING)); }; item.visibility_callback = [this]()->bool { bool res = current_printer_technology() == ptFFF; @@ -7789,22 +7790,34 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() float margin_size = 4.0f * f_scale; float button_margin = frame_padding; + const float y_offset = is_collapse_toolbar_on_left() ? (get_collapse_toolbar_height() + 5) : 0; + // Make sure the window does not overlap the 3d navigator + auto window_height_max = canvas_h - y_offset; + if (wxGetApp().show_3d_navigator()) { + float sc = get_scale(); +#ifdef WIN32 + const int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + sc *= (float) dpi / (float) DPI_DEFAULT; +#endif // WIN32 + window_height_max -= (128 * sc + 5); + } + ImGuiWrapper& imgui = *wxGetApp().imgui(); int item_count = m_sel_plate_toolbar.m_items.size() + (m_sel_plate_toolbar.show_stats_item ? 1 : 0); - bool show_scroll = item_count * (button_height + frame_padding * 2.0f + button_margin) - button_margin + 22.0f * f_scale > canvas_h ? true: false; + bool show_scroll = item_count * (button_height + frame_padding * 2.0f + button_margin) - button_margin + 22.0f * f_scale > window_height_max ? true: false; show_scroll = m_sel_plate_toolbar.is_display_scrollbar && show_scroll; - float window_height = std::min(item_count * (button_height + (frame_padding + margin_size) * 2.0f + button_margin) - button_margin + 28.0f * f_scale, canvas_h); + float window_height = std::min(item_count * (button_height + (frame_padding + margin_size) * 2.0f + button_margin) - button_margin + 28.0f * f_scale, window_height_max); float window_width = m_sel_plate_toolbar.icon_width + margin_size * 2 + (show_scroll ? 28.0f * f_scale : 20.0f * f_scale); ImVec4 window_bg = ImVec4(0.82f, 0.82f, 0.82f, 0.5f); - ImVec4 button_active = ImVec4(0.12f, 0.56f, 0.92, 1.0f); + ImVec4 button_active = ImGuiWrapper::COL_ORCA; // ORCA: Use orca color for selected sliced plate border ImVec4 button_hover = ImVec4(0.67f, 0.67f, 0.67, 1.0f); ImVec4 scroll_col = ImVec4(0.77f, 0.77f, 0.77f, 1.0f); //ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(0.f, 0.f, 0.f, 1.0f)); //use white text as the background switch to black ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 1.0f, 1.0f, 1.0f)); ImGui::PushStyleColor(ImGuiCol_WindowBg, window_bg); - ImGui::PushStyleColor(ImGuiCol_ScrollbarBg, window_bg); + ImGui::PushStyleColor(ImGuiCol_ScrollbarBg, ImVec4(0.f, 0.f, 0.f, 0.f)); // ORCA using background color with opacity creates a second color. This prevents secondary color ImGui::PushStyleColor(ImGuiCol_ScrollbarGrabActive, scroll_col); ImGui::PushStyleColor(ImGuiCol_ScrollbarGrabHovered, scroll_col); ImGui::PushStyleColor(ImGuiCol_ScrollbarGrab, scroll_col); @@ -7816,7 +7829,6 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 4.0f); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 3.0f); - const float y_offset = is_collapse_toolbar_on_left() ? (get_collapse_toolbar_height() + 5) : 0; imgui.set_next_window_pos(canvas_w * 0, canvas_h * 0 + y_offset, ImGuiCond_Always, 0, 0); imgui.set_next_window_size(window_width, window_height, ImGuiCond_Always); @@ -7859,12 +7871,12 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() ImTextureID btn_texture_id; if (all_plates_stats_item->slice_state == IMToolbarItem::SliceState::UNSLICED || all_plates_stats_item->slice_state == IMToolbarItem::SliceState::SLICING || all_plates_stats_item->slice_state == IMToolbarItem::SliceState::SLICE_FAILED) { - text_clr = ImVec4(0, 174.0f / 255.0f, 66.0f / 255.0f, 0.2f); + text_clr = ImVec4(0.0f, 150.f / 255.0f, 136.0f / 255, 0.2f); // ORCA: All plates slicing NOT complete - Text color btn_texture_id = (ImTextureID)(intptr_t)(all_plates_stats_item->image_texture_transparent.get_id()); } else { - text_clr = ImVec4(0, 174.0f / 255.0f, 66.0f / 255.0f, 1); + text_clr = ImGuiWrapper::COL_ORCA; // ORCA: All plates slicing complete - Text color btn_texture_id = (ImTextureID)(intptr_t)(all_plates_stats_item->image_texture.get_id()); } @@ -7888,25 +7900,25 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() if (all_plates_stats_item->slice_state == IMToolbarItem::SliceState::UNSLICED) { ImVec2 size = ImVec2(button_width, button_height); ImVec2 end_pos = ImVec2(start_pos.x + size.x, start_pos.y + size.y); - ImGui::GetForegroundDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(0, 0, 0, 80)); + ImGui::GetWindowDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(0, 0, 0, 80)); } else if (all_plates_stats_item->slice_state == IMToolbarItem::SliceState::SLICING) { ImVec2 size = ImVec2(button_width, button_height * all_plates_stats_item->percent / 100.0f); ImVec2 rect_start_pos = ImVec2(start_pos.x, start_pos.y + size.y); ImVec2 rect_end_pos = ImVec2(start_pos.x + button_width, start_pos.y + button_height); - ImGui::GetForegroundDrawList()->AddRectFilled(start_pos, rect_end_pos, IM_COL32(0, 0, 0, 10)); - ImGui::GetForegroundDrawList()->AddRectFilled(rect_start_pos, rect_end_pos, IM_COL32(0, 0, 0, 80)); + ImGui::GetWindowDrawList()->AddRectFilled(start_pos, rect_end_pos, IM_COL32(0, 0, 0, 10)); + ImGui::GetWindowDrawList()->AddRectFilled(rect_start_pos, rect_end_pos, IM_COL32(0, 0, 0, 80)); } else if (all_plates_stats_item->slice_state == IMToolbarItem::SliceState::SLICE_FAILED) { ImVec2 size = ImVec2(button_width, button_height); ImVec2 end_pos = ImVec2(start_pos.x + size.x, start_pos.y + size.y); - ImGui::GetForegroundDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(40, 1, 1, 64)); - ImGui::GetForegroundDrawList()->AddRect(start_pos, end_pos, IM_COL32(208, 27, 27, 255), 0.0f, 0, 1.0f); + ImGui::GetWindowDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(40, 1, 1, 64)); + ImGui::GetWindowDrawList()->AddRect(start_pos, end_pos, IM_COL32(208, 27, 27, 255), 0.0f, 0, 1.0f); } else if (all_plates_stats_item->slice_state == IMToolbarItem::SliceState::SLICED) { ImVec2 size = ImVec2(button_width, button_height); ImVec2 end_pos = ImVec2(start_pos.x + size.x, start_pos.y + size.y); - ImGui::GetForegroundDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(0, 0, 0, 10)); + ImGui::GetWindowDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(0, 0, 0, 10)); } // draw text @@ -7948,7 +7960,9 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() ImGui::PushStyleColor(ImGuiCol_Border, button_active); } else { - if (ImGui::IsMouseHoveringRect(button_pos, button_pos + button_size)) { + // Translate window pos to abs pos, also account for the window scrolling + auto hover_rect = button_pos + ImGui::GetWindowPos() - ImGui::GetCurrentWindow()->Scroll; + if (ImGui::IsMouseHoveringRect(hover_rect, hover_rect + button_size)) { ImGui::PushStyleColor(ImGuiCol_Border, button_hover); } else { @@ -7974,22 +7988,22 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() if (item->slice_state == IMToolbarItem::SliceState::UNSLICED) { ImVec2 size = ImVec2(button_width, button_height); ImVec2 end_pos = ImVec2(start_pos.x + size.x, start_pos.y + size.y); - ImGui::GetForegroundDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(0, 0, 0, 80)); + ImGui::GetWindowDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(0, 0, 0, 80)); } else if (item->slice_state == IMToolbarItem::SliceState::SLICING) { ImVec2 size = ImVec2(button_width, button_height * item->percent / 100.0f); ImVec2 rect_start_pos = ImVec2(start_pos.x, start_pos.y + size.y); ImVec2 rect_end_pos = ImVec2(start_pos.x + button_width, start_pos.y + button_height); - ImGui::GetForegroundDrawList()->AddRectFilled(start_pos, rect_end_pos, IM_COL32(0, 0, 0, 10)); - ImGui::GetForegroundDrawList()->AddRectFilled(rect_start_pos, rect_end_pos, IM_COL32(0, 0, 0, 80)); + ImGui::GetWindowDrawList()->AddRectFilled(start_pos, rect_end_pos, IM_COL32(0, 0, 0, 10)); + ImGui::GetWindowDrawList()->AddRectFilled(rect_start_pos, rect_end_pos, IM_COL32(0, 0, 0, 80)); } else if (item->slice_state == IMToolbarItem::SliceState::SLICE_FAILED) { ImVec2 size = ImVec2(button_width, button_height); ImVec2 end_pos = ImVec2(start_pos.x + size.x, start_pos.y + size.y); - ImGui::GetForegroundDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(40, 1, 1, 64)); - ImGui::GetForegroundDrawList()->AddRect(start_pos, end_pos, IM_COL32(208, 27, 27, 255), 0.0f, 0, 1.0f); + ImGui::GetWindowDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(40, 1, 1, 64)); + ImGui::GetWindowDrawList()->AddRect(start_pos, end_pos, IM_COL32(208, 27, 27, 255), 0.0f, 0, 1.0f); } else if (item->slice_state == IMToolbarItem::SliceState::SLICED) { ImVec2 size = ImVec2(button_width, button_height); ImVec2 end_pos = ImVec2(start_pos.x + size.x, start_pos.y + size.y); - ImGui::GetForegroundDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(0, 0, 0, 10)); + ImGui::GetWindowDrawList()->AddRectFilled(start_pos, end_pos, IM_COL32(0, 0, 0, 10)); } // draw text @@ -8385,7 +8399,7 @@ void GLCanvas3D::_render_assemble_info() const ImGui::PopFont(); float margin = 10.0f * get_scale(); imgui->set_next_window_pos(canvas_w - margin, canvas_h - margin, ImGuiCond_Always, 1.0f, 1.0f); - ImGuiWrapper::push_toolbar_style(get_scale()); + ImGuiWrapper::push_common_window_style(get_scale()); // ORCA use window style for popups with title imgui->begin(_L("Assembly Info"), ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse); font->Scale = origScale; ImGui::PushFont(font); @@ -8401,7 +8415,7 @@ void GLCanvas3D::_render_assemble_info() const ImGui::Text("%.2f x %.2f x %.2f", size0, size1, size2); } imgui->end(); - ImGuiWrapper::pop_toolbar_style(); + ImGuiWrapper::pop_common_window_style(); } #if ENABLE_SHOW_CAMERA_TARGET diff --git a/src/slic3r/GUI/GLSelectionRectangle.cpp b/src/slic3r/GUI/GLSelectionRectangle.cpp index 68f9d096eb2..7eb5c29143b 100644 --- a/src/slic3r/GUI/GLSelectionRectangle.cpp +++ b/src/slic3r/GUI/GLSelectionRectangle.cpp @@ -116,7 +116,7 @@ namespace GUI { shader->set_uniform("view_model_matrix", Transform3d::Identity()); shader->set_uniform("projection_matrix", Transform3d::Identity()); - m_rectangle.set_color({0.0f, 1.0f, 0.38f, 1.0f}); + m_rectangle.set_color(ColorRGBA::ORCA()); // ORCA: use orca color for selection rectangle m_rectangle.render(); shader->stop_using(); } diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 4b09dcf1206..e5931178e7f 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3284,10 +3284,7 @@ void GUI_App::check_printer_presets() #endif } -void switch_window_pools(); -void release_window_pools(); - -void GUI_App::recreate_GUI(const wxString &msg_name) +void GUI_App::recreate_GUI(const wxString& msg_name) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "recreate_GUI enter"; m_is_recreating_gui = true; @@ -3295,18 +3292,12 @@ void GUI_App::recreate_GUI(const wxString &msg_name) update_http_extra_header(); mainframe->shutdown(); + ProgressDialog dlg(msg_name, msg_name, 100, nullptr, wxPD_AUTO_HIDE); dlg.Pulse(); dlg.Update(10, _L("Rebuild") + dots); MainFrame *old_main_frame = mainframe; - struct ClientData : wxClientData - { - ~ClientData() { release_window_pools(); } - }; - old_main_frame->SetClientObject(new ClientData); - - switch_window_pools(); mainframe = new MainFrame(); if (is_editor()) // hide settings tabs after first Layout diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 00c44e36933..d228e16b040 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -110,7 +110,7 @@ std::map> SettingsFactory::PART_CAT { L("Strength"), {{"wall_loops", "",1},{"top_shell_layers", L("Top Solid Layers"),1},{"top_shell_thickness", L("Top Minimum Shell Thickness"),1}, {"bottom_shell_layers", L("Bottom Solid Layers"),1}, {"bottom_shell_thickness", L("Bottom Minimum Shell Thickness"),1}, {"sparse_infill_density", "",1},{"sparse_infill_pattern", "",1},{"infill_anchor", "",1},{"infill_anchor_max", "",1},{"top_surface_pattern", "",1},{"bottom_surface_pattern", "",1}, {"internal_solid_infill_pattern", "",1}, - {"infill_combination", "",1}, {"infill_wall_overlap", "",1}, {"infill_direction", "",1}, {"bridge_angle", "",1}, {"minimum_sparse_infill_area", "",1} + {"infill_combination", "",1}, {"infill_wall_overlap", "",1}, {"solid_infill_direction", "",1}, {"rotate_solid_infill_direction", "",1}, {"infill_direction", "",1}, {"bridge_angle", "",1}, {"minimum_sparse_infill_area", "",1} }}, { L("Speed"), {{"outer_wall_speed", "",1},{"inner_wall_speed", "",2},{"sparse_infill_speed", "",3},{"top_surface_speed", "",4}, {"internal_solid_infill_speed", "",5}, {"enable_overhang_speed", "",6}, {"overhang_speed_classic", "",6}, {"overhang_1_4_speed", "",7}, {"overhang_2_4_speed", "",8}, {"overhang_3_4_speed", "",9}, {"overhang_4_4_speed", "",10}, diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 3a57a895d65..ccf17a77168 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -291,11 +291,12 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l if (i != 0) ImGui::SameLine((empty_button_width + m_imgui->scaled(1.75f)) * i + m_imgui->scaled(1.3f)); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f)); // ORCA: Fixes icon rendered without colors while using Light theme if (m_current_tool == tool_ids[i]) { - ImGui::PushStyleColor(ImGuiCol_Button, m_is_dark_mode ? ImVec4(43 / 255.0f, 64 / 255.0f, 54 / 255.0f, 1.00f) : ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); // r, g, b, a - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, m_is_dark_mode ? ImVec4(43 / 255.0f, 64 / 255.0f, 54 / 255.0f, 1.00f) : ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); - ImGui::PushStyleColor(ImGuiCol_ButtonActive, m_is_dark_mode ? ImVec4(43 / 255.0f, 64 / 255.0f, 54 / 255.0f, 1.00f) : ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); - ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.f, 0.59f, 0.53f, 0.30f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_Border, ImGuiWrapper::COL_ORCA); // ORCA use orca color for border on selected tool / brush ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0); } @@ -305,6 +306,7 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l ImGui::PopStyleColor(4); ImGui::PopStyleVar(2); } + ImGui::PopStyleColor(1); ImGui::PopStyleVar(1); if (btn_clicked && m_current_tool != tool_ids[i]) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index bd91482f658..727ceebc9b5 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -470,14 +470,14 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott ImGuiColorEditFlags flags = ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_NoTooltip; if (m_selected_extruder_idx != extruder_idx) flags |= ImGuiColorEditFlags_NoBorder; #ifdef __APPLE__ - ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_FrameBg, ImGuiWrapper::COL_ORCA); // ORCA use orca color for selected filament border ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 3.0); bool color_picked = ImGui::ColorButton(color_label.c_str(), color_vec, flags, button_size); ImGui::PopStyleVar(2); ImGui::PopStyleColor(1); #else - ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_FrameBg, ImGuiWrapper::COL_ORCA); // ORCA use orca color for selected filament border ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 2.0); bool color_picked = ImGui::ColorButton(color_label.c_str(), color_vec, flags, button_size); @@ -519,11 +519,12 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott if (i != 0) ImGui::SameLine((empty_button_width + m_imgui->scaled(1.75f)) * i + m_imgui->scaled(1.5f)); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f)); // ORCA: Fixes icon rendered without colors while using Light theme if (m_current_tool == tool_ids[i]) { - ImGui::PushStyleColor(ImGuiCol_Button, m_is_dark_mode ? ImVec4(43 / 255.0f, 64 / 255.0f, 54 / 255.0f, 1.00f) : ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); // r, g, b, a - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, m_is_dark_mode ? ImVec4(43 / 255.0f, 64 / 255.0f, 54 / 255.0f, 1.00f) : ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); - ImGui::PushStyleColor(ImGuiCol_ButtonActive, m_is_dark_mode ? ImVec4(43 / 255.0f, 64 / 255.0f, 54 / 255.0f, 1.00f) : ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); - ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.f, 0.59f, 0.53f, 0.30f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_Border, ImGuiWrapper::COL_ORCA); // ORCA use orca color for border on selected tool / brush ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0); } @@ -533,6 +534,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott ImGui::PopStyleColor(4); ImGui::PopStyleVar(2); } + ImGui::PopStyleColor(1); ImGui::PopStyleVar(1); if (btn_clicked && m_current_tool != tool_ids[i]) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index e534b2b3c1a..b2692e9555d 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -244,11 +244,12 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) if (i != 0) ImGui::SameLine((empty_button_width + m_imgui->scaled(1.75f)) * i + m_imgui->scaled(1.3f)); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f)); // ORCA: Fixes icon rendered without colors while using Light theme if (m_current_tool == tool_ids[i]) { - ImGui::PushStyleColor(ImGuiCol_Button, m_is_dark_mode ? ImVec4(43 / 255.0f, 64 / 255.0f, 54 / 255.0f, 1.00f) : ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); // r, g, b, a - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, m_is_dark_mode ? ImVec4(43 / 255.0f, 64 / 255.0f, 54 / 255.0f, 1.00f) : ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); - ImGui::PushStyleColor(ImGuiCol_ButtonActive, m_is_dark_mode ? ImVec4(43 / 255.0f, 64 / 255.0f, 54 / 255.0f, 1.00f) : ImVec4(0.86f, 0.99f, 0.91f, 1.00f)); - ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.f, 0.59f, 0.53f, 0.30f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_Border, ImGuiWrapper::COL_ORCA); // ORCA use orca color for border on selected tool / brush ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0); } @@ -258,6 +259,7 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) ImGui::PopStyleColor(4); ImGui::PopStyleVar(2); } + ImGui::PopStyleColor(1); ImGui::PopStyleVar(1); if (btn_clicked && m_current_tool != tool_ids[i]) { m_current_tool = tool_ids[i]; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp index 2fa96de169f..0c82aae6baf 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp @@ -278,8 +278,8 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.81f, 0.81f, 0.81f, 1.00f)); ImGui::PushStyleColor(ImGuiCol_FrameBgHovered, ImVec4(0.81f, 0.81f, 0.81f, 1.00f)); ImGui::PushStyleColor(ImGuiCol_FrameBgActive, ImVec4(0.81f, 0.81f, 0.81f, 1.00f)); - ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); - ImGui::PushStyleColor(ImGuiCol_SliderGrab, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::COL_ORCA); // ORCA Use orca color for step slider text + ImGui::PushStyleColor(ImGuiCol_SliderGrab, ImGuiWrapper::COL_ORCA); // ORCA Use orca color for step slider thumb if (m_imgui->bbl_sliderin("##ReductionLevel", &reduction, 0, 4, reduce_captions[reduction].c_str())) { if (reduction < 0) reduction = 0; diff --git a/src/slic3r/GUI/IMSlider.cpp b/src/slic3r/GUI/IMSlider.cpp index f12cf5aab4e..1320e28084c 100644 --- a/src/slic3r/GUI/IMSlider.cpp +++ b/src/slic3r/GUI/IMSlider.cpp @@ -1073,7 +1073,7 @@ bool IMSlider::render(int canvas_width, int canvas_height) ImGui::PushStyleVar(ImGuiStyleVar_::ImGuiStyleVar_FramePadding, ImVec2(0.0f, 0.0f)); ImGui::PushStyleVar(ImGuiStyleVar_::ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f)); ImGui::PushStyleColor(ImGuiCol_::ImGuiCol_WindowBg, ImVec4(0.0f, 0.0f, 0.0f, 0.0f)); - ImGui::PushStyleColor(ImGuiCol_::ImGuiCol_Text, ImVec4(0, 0.682f, 0.259f, 1.0f)); + ImGui::PushStyleColor(ImGuiCol_::ImGuiCol_Text, ImGuiWrapper::COL_ORCA); // ORCA: Use orca color for slider value text int windows_flag = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 3926e15630e..59559839aa1 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -2512,7 +2512,7 @@ void ImGuiWrapper::push_confirm_button_style() { if (m_is_dark_mode) { ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f / 255.f, 150.f / 255.f, 136.f / 255.f, 1.f)); ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.f / 255.f, 150.f / 255.f, 136.f / 255.f, 1.f)); - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(61.f / 255.f, 203.f / 255.f, 115.f / 255.f, 1.f)); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, to_ImVec4(decode_color_to_float_array("#267E73"))); ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(27.f / 255.f, 136.f / 255.f, 68.f / 255.f, 1.f)); ImGui::PushStyleColor(ImGuiCol_CheckMark, ImVec4(1.f, 1.f, 1.f, 0.88f)); ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 0.88f)); @@ -2520,7 +2520,7 @@ void ImGuiWrapper::push_confirm_button_style() { else { ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f / 255.f, 150.f / 255.f, 136.f / 255.f, 1.f)); ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.f / 255.f, 150.f / 255.f, 136.f / 255.f, 1.f)); - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(61.f / 255.f, 203.f / 255.f, 115.f / 255.f, 1.f)); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, to_ImVec4(decode_color_to_float_array("#26A69A"))); ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(27.f / 255.f, 136.f / 255.f, 68.f / 255.f, 1.f)); ImGui::PushStyleColor(ImGuiCol_CheckMark, ImVec4(1.f, 1.f, 1.f, 1.f)); ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f)); @@ -2605,9 +2605,9 @@ void ImGuiWrapper::pop_combo_style() void ImGuiWrapper::push_radio_style() { if (m_is_dark_mode) { - ImGui::PushStyleColor(ImGuiCol_CheckMark, ImVec4(1.00f, 1.00f, 1.00f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_CheckMark, to_ImVec4(decode_color_to_float_array("#00675b"))); // ORCA use orca color for radio buttons } else { - ImGui::PushStyleColor(ImGuiCol_CheckMark, ImVec4(0.00f, 0.00f, 0.00f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_CheckMark, to_ImVec4(decode_color_to_float_array("#009688"))); // ORCA use orca color for radio buttons } } @@ -2888,12 +2888,12 @@ void ImGuiWrapper::init_style() // ComboBox items set_color(ImGuiCol_Header, COL_ORANGE_DARK); - set_color(ImGuiCol_HeaderHovered, COL_BLUE_LIGHT); - set_color(ImGuiCol_HeaderActive, COL_BLUE_LIGHT); + set_color(ImGuiCol_HeaderHovered, to_ImVec4(to_rgba(ColorRGB::ORCA(), 0.50f))); // ORCA Use orca color for headers + set_color(ImGuiCol_HeaderActive, to_ImVec4(to_rgba(ColorRGB::ORCA(), 0.75f))); // ORCA Use orca color for headers // Slider - set_color(ImGuiCol_SliderGrab, COL_BLUE_LIGHT); - set_color(ImGuiCol_SliderGrabActive, COL_BLUE_LIGHT); + set_color(ImGuiCol_SliderGrab, to_ImVec4(to_rgba(ColorRGB::ORCA(), 0.50f))); // ORCA Use orca color for slider thumbs + set_color(ImGuiCol_SliderGrabActive, to_ImVec4(to_rgba(ColorRGB::ORCA(), 0.75f))); // ORCA Use orca color for slider thumbs // Separator set_color(ImGuiCol_Separator, COL_BLUE_LIGHT); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 110d91d9ce2..c45db1c87e5 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -532,9 +532,6 @@ bool OptionsGroup::activate(std::function throw_if_canceled/* = [](){}*/ return true; } - -void free_window(wxWindow *win); - // delete all controls from the option group void OptionsGroup::clear(bool destroy_custom_ctrl) { @@ -563,10 +560,8 @@ void OptionsGroup::clear(bool destroy_custom_ctrl) if (custom_ctrl) { for (auto const &item : m_fields) { wxWindow* win = item.second.get()->getWindow(); - if (win) { - free_window(win); + if (win) win = nullptr; - } } //BBS: custom_ctrl already destroyed from sizer->clear(), no need to destroy here anymore if (destroy_custom_ctrl) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 4b8dac6345b..cdeae514fc4 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -9533,6 +9533,8 @@ void Plater::calib_flowrate(int pass) { _obj->config.set_key_value("top_surface_pattern", new ConfigOptionEnum(ipMonotonic)); _obj->config.set_key_value("top_solid_infill_flow_ratio", new ConfigOptionFloat(1.0f)); _obj->config.set_key_value("infill_direction", new ConfigOptionFloat(45)); + _obj->config.set_key_value("solid_infill_direction", new ConfigOptionFloat(135)); + _obj->config.set_key_value("rotate_solid_infill_direction", new ConfigOptionBool(true)); _obj->config.set_key_value("ironing_type", new ConfigOptionEnum(IroningType::NoIroning)); _obj->config.set_key_value("internal_solid_infill_speed", new ConfigOptionFloat(internal_solid_speed)); _obj->config.set_key_value("top_surface_speed", new ConfigOptionFloat(top_surface_speed)); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 298ed85ed77..ac2e4f97c9a 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -1015,7 +1015,7 @@ wxWindow* PreferencesDialog::create_general_page() std::vector Regions = {_L("Asia-Pacific"), _L("China"), _L("Europe"), _L("North America"), _L("Others")}; auto item_region= create_item_region_combobox(_L("Login Region"), page, _L("Login Region"), Regions); - auto item_stealth_mode = create_item_checkbox(_L("Stealth Mode"), page, _L("Stealth Mode"), 50, "stealth_mode"); + auto item_stealth_mode = create_item_checkbox(_L("Stealth Mode"), page, _L("This stops the transmission of data to Bambu's cloud services. Users who don't use BBL machines or use LAN mode only can safely turn on this function."), 50, "stealth_mode"); auto item_enable_plugin = create_item_checkbox(_L("Enable network plugin"), page, _L("Enable network plugin"), 50, "installed_networking"); auto item_check_stable_version_only = create_item_checkbox(_L("Check for stable updates only"), page, _L("Check for stable updates only"), 50, "check_stable_update_only"); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index a59f4b6af90..c0f2c02d3cc 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2129,6 +2129,8 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); optgroup->append_single_option_line("infill_wall_overlap"); optgroup->append_single_option_line("infill_direction"); + optgroup->append_single_option_line("solid_infill_direction"); + optgroup->append_single_option_line("rotate_solid_infill_direction"); optgroup->append_single_option_line("bridge_angle"); optgroup->append_single_option_line("minimum_sparse_infill_area"); optgroup->append_single_option_line("infill_combination"); @@ -4994,12 +4996,12 @@ void Tab::clear_pages() { // invalidated highlighter, if any exists m_highlighter.invalidate(); - // clear pages from the controlls - for (auto p : m_pages) - p->clear(); //BBS: clear page in Parent //m_page_sizer->Clear(true); m_parent->clear_page(); + // clear pages from the controlls + for (auto p : m_pages) + p->clear(); // nulling pointers m_parent_preset_description_line = nullptr; diff --git a/src/slic3r/GUI/Widgets/ComboBox.cpp b/src/slic3r/GUI/Widgets/ComboBox.cpp index 175edbb252e..ce9db292a76 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.cpp +++ b/src/slic3r/GUI/Widgets/ComboBox.cpp @@ -55,7 +55,7 @@ ComboBox::ComboBox(wxWindow *parent, std::make_pair(0x009688, (int) StateColor::Hovered), std::make_pair(0xDBDBDB, (int) StateColor::Normal))); TextInput::SetBackgroundColor(StateColor(std::make_pair(0xF0F0F1, (int) StateColor::Disabled), - std::make_pair(0xEDFAF2, (int) StateColor::Focused), + std::make_pair(0xE5F0EE, (int) StateColor::Focused), // ORCA updated background color for focused item std::make_pair(*wxWHITE, (int) StateColor::Normal))); TextInput::SetLabelColor(StateColor(std::make_pair(0x909090, (int) StateColor::Disabled), std::make_pair(0x262E30, (int) StateColor::Normal))); @@ -165,7 +165,6 @@ int ComboBox::Append(const wxString &item, void ComboBox::DoClear() { - SetIcon("drop_down"); texts.clear(); tips.clear(); icons.clear(); diff --git a/src/slic3r/GUI/Widgets/DropDown.cpp b/src/slic3r/GUI/Widgets/DropDown.cpp index fb417bf0c7e..ab48a27d2d2 100644 --- a/src/slic3r/GUI/Widgets/DropDown.cpp +++ b/src/slic3r/GUI/Widgets/DropDown.cpp @@ -41,7 +41,7 @@ DropDown::DropDown(std::vector &texts, , text_color(0x363636) , selector_border_color(std::make_pair(0x009688, (int) StateColor::Hovered), std::make_pair(*wxWHITE, (int) StateColor::Normal)) - , selector_background_color(std::make_pair(0xEDFAF2, (int) StateColor::Checked), + , selector_background_color(std::make_pair(0xBFE1DE, (int) StateColor::Checked), // ORCA updated background color for checked item std::make_pair(*wxWHITE, (int) StateColor::Normal)) { } diff --git a/src/slic3r/GUI/Widgets/SideTools.cpp b/src/slic3r/GUI/Widgets/SideTools.cpp index c226b39e6c1..5e5700040c8 100644 --- a/src/slic3r/GUI/Widgets/SideTools.cpp +++ b/src/slic3r/GUI/Widgets/SideTools.cpp @@ -146,8 +146,8 @@ void SideToolsPanel::doRender(wxDC &dc) //} if (m_none_printer) { - dc.SetPen(SIDE_TOOLS_BRAND); - dc.SetBrush(SIDE_TOOLS_BRAND); + dc.SetPen(StateColor::darkModeColorFor(SIDE_TOOLS_BRAND)); // ORCA: Sidebar header background color - Fix for dark mode compability + dc.SetBrush(StateColor::darkModeColorFor(SIDE_TOOLS_BRAND)); // ORCA: Sidebar header background color - Fix for dark mode compability dc.DrawRectangle(0, 0, size.x, size.y); dc.DrawBitmap(m_none_printing_img.bmp(), left, (size.y - m_none_printing_img.GetBmpSize().y) / 2); diff --git a/src/slic3r/GUI/Widgets/StateColor.cpp b/src/slic3r/GUI/Widgets/StateColor.cpp index 2e2b3168d6f..9038d9c62fd 100644 --- a/src/slic3r/GUI/Widgets/StateColor.cpp +++ b/src/slic3r/GUI/Widgets/StateColor.cpp @@ -40,6 +40,9 @@ static std::map gDarkColors{ {"#ABABAB", "#ABABAB"}, {"#D9D9D9", "#2D2D32"}, //{"#F0F0F0", "#4C4C54"}, + // ORCA + {"#BFE1DE", "#223C3C"}, // rgb(191, 225, 222) Dropdown checked item background color > ORCA color with %25 opacity + {"#E5F0EE", "#283232"}, // rgb(229, 240, 238) Combo / Dropdown focused background color > ORCA color with %10 opacity }; std::tuple StateColor::GetLAB(const wxColour& color) { diff --git a/src/slic3r/GUI/Widgets/TextInput.cpp b/src/slic3r/GUI/Widgets/TextInput.cpp index 6e1c0f11e27..f8fb92939fd 100644 --- a/src/slic3r/GUI/Widgets/TextInput.cpp +++ b/src/slic3r/GUI/Widgets/TextInput.cpp @@ -102,14 +102,6 @@ void TextInput::SetIcon(const wxBitmap &icon) Rescale(); } -void TextInput::SetIcon(const wxString &icon) -{ - if (this->icon.name() == icon.ToStdString()) - return; - this->icon = ScalableBitmap(this, icon.ToStdString(), 16); - Rescale(); -} - void TextInput::SetLabelColor(StateColor const &color) { label_color = color; diff --git a/src/slic3r/GUI/Widgets/TextInput.hpp b/src/slic3r/GUI/Widgets/TextInput.hpp index 61f729506c5..152fb88f3dd 100644 --- a/src/slic3r/GUI/Widgets/TextInput.hpp +++ b/src/slic3r/GUI/Widgets/TextInput.hpp @@ -42,8 +42,6 @@ class TextInput : public wxNavigationEnabled void SetIcon(const wxBitmap & icon); - void SetIcon(const wxString & icon); - void SetLabelColor(StateColor const &color); void SetTextColor(StateColor const &color);