Commit Graph

478 Commits

Author SHA1 Message Date
enricoturri1966
e6ae724f20 #7326 - Fixed crash when starting GCodeViewer 2021-11-22 10:57:38 +01:00
YuSanka
77589c1069 Check unsaved preset changes only when presets have been changed in the project 2021-11-19 16:33:28 +01:00
Vojtech Bubnik
537df6b503 New BuildVolume class was created, which detects build volume type (rectangular,
circular, convex, concave) and performs efficient collision detection agains these build
volumes. As of now, collision detection is performed against a convex
hull of a concave build volume for efficency.

GCodeProcessor::Result renamed out of GCodeProcessor to GCodeProcessorResult,
so it could be forward declared.

Plater newly exports BuildVolume, not Bed3D. Bed3D is a rendering class,
while BuildVolume is a purely geometric class.

Reduced usage of global wxGetApp, the Bed3D is passed as a parameter
to View3D/Preview/GLCanvas.

Convex hull code was extracted from Geometry.cpp/hpp to Geometry/ConvexHulll.cpp,hpp.
New test inside_convex_polygon().
New efficent point inside polygon test: Decompose convex hull
to bottom / top parts and use the decomposition to detect point inside
a convex polygon in O(log n). decompose_convex_polygon_top_bottom(),
inside_convex_polygon().

New Circle constructing functions: circle_ransac() and circle_taubin_newton().

New polygon_is_convex() test with unit tests.
2021-11-16 10:15:51 +01:00
YuSanka
24134d92a2 Localization fixes + new POT 2021-11-12 09:21:41 +01:00
Vojtech Bubnik
b642cf636f Reworded "Shape Gallery" menu and dialog title 2021-10-07 15:40:28 +02:00
YuSanka
9ce2cee6cf Check unsaved preset changes only if project is dirty and it wasn't saved 2021-10-04 16:20:46 +02:00
enricoturri1966
fe61c72cce #7054 - Tech ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED: enable command Save (CTRL+S) for untitled projects (automatically calls command Save As) 2021-10-04 09:20:35 +02:00
Vojtech Bubnik
fab8cfc468 Redo of the project state, implementation of Undo/Redo stack compression 2021-09-30 12:17:39 +02:00
YuSanka
83433eaa28 MSW specific: Fixed settings layout after switching from New to Old layout
(Notebook: Added check of a visibility of just selected tab in notebook)
2021-09-22 15:53:59 +02:00
Oleksandra Yushchenko
4e17e61be4 Check unsaved changes (#6991)
* Check Unsaved changes (partially related to #5903)
 + Allow create new project when Plater is empty, but some of presets are modified (related to #5903)
 + When creating new project allow Keep or Discard modification from previous project
 + Added check of changes:
    * before any load project (including DnD and "Load From Recent Projects")
    * before preset updater
    * when configuration is changing from the ConfigWizard
 + Dialog caption is added for each check

 + Create/Destroy ConfigWizard every time when it's called

* Check Unsaved changes: Next Improvements
 + For dialog "Save project changes" added a reason of saving and name of the current project (or "Untitled")
 + UnsavedChangesDialog: Headers are extended to better explain the reason
 + Preferences: Fixed tooltiops for "Always ask for unsaved changes when..."
 + Suppress "Remember my choice" checkbox for actions which are not frequently used

* Fixed behavior of the application when try to save changed project but "Cancel" button is selected in "Save file as..." dialog

* Check unsaved changes: Improvements for Config Wizard - Check all cases when presets should be updated
 + Fixed info line for Materials pages. Text of the info relates to the printer technology now

* Improved suggested name for a project when Application is closing

* Fixed Linux/OSX build warnings
2021-09-22 12:44:13 +02:00
Vojtech Bubnik
53a5c23d0f Eradicated admesh from TriangleMesh:
TriangleMesh newly only holds indexed_triangle_set and
TriangleMeshStats. TriangleMeshStats contains an excerpt of stl_stats.
TriangleMeshStats are updated when initializing with indexed_triangle_set.

Admesh triangle mesh fixing is newly only used when loading an STL.
AMF / 3MF / OBJ file formats are already indexed triangle sets, thus
they are no more converted to admesh stl_file format, nor fixed
through admesh repair machinery. When importing AMF / 3MF / OBJ files,
volume is calculated and if negative, all faces are flipped. Also
a bounding box and number of open edges is calculated.

Implemented its_number_of_patches(), its_num_open_edges()
Optimized its_split(), its_is_splittable() using a visitor pattern.

Reworked QHull integration into TriangleMesh:
    1) Face normals were not right.
    2) Indexed triangle set is newly emitted instead of duplicating
       vertices for each face.

Fixed cut_mesh(): Orient the triangulated faces correctly.
2021-09-20 17:12:22 +02:00
David Kocik
817c151550 Removes bottom status bar.
StatusBar class calls are commented out and replaced with notifications.
SlicicingProgress notification shows progress of slicing, ProgressIndicator notification handles other progress information, like arrange objects etc.
2021-09-10 14:35:13 +02:00
Jason Scurtu
95b93b12e6 rename 2021-09-06 16:19:30 +02:00
Jason Scurtu
5fe6249e1e add gcodeviewer 2021-09-06 16:19:30 +02:00
Jason Scurtu
c0373bf486 add new mac icon and update MainFrame.cpp 2021-09-06 16:19:30 +02:00
David Kocik
34eba5c0fe Open menubar item by name with translations 2021-09-02 09:48:06 +02:00
David Kocik
c445729379 Commented opening menubar item until its properly implemented. 2021-09-01 15:12:47 +02:00
Vojtech Bubnik
171c1b82c2 Commented out AMF export. The format never took off, we don't want to
keep supporting it. Let's wait for user feedback.
2021-09-01 15:11:26 +02:00
Lukáš Hejl
afbe2a7de5 Added a missing include (GCC 11.1). 2021-09-01 14:28:42 +02:00
David Kocik
5146e2329b Open menubar item by item index. Possible to call as hint notification hyperlink 2021-09-01 13:34:36 +02:00
enricoturri1966
15ce5d271b Fixed conflicts after merge with master 2021-09-01 13:28:10 +02:00
enricoturri1966
6f3ea663fc Added missing vertical alignments of labels in imgui dialogs 2021-08-31 08:53:40 +02:00
enricoturri1966
be65c21dd5 New project command enabled when the plater is empty but the project state is marked as dirty 2021-08-30 12:14:45 +02:00
enricoturri1966
d5d79c5654 Tech ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED -> 1st installment: Allow to save/load empty projects 2021-08-26 10:38:14 +02:00
David Kocik
6c048a4b7f Notice dialog when opening any link outside PrusaSlicer 2021-08-25 15:07:38 +02:00
enricoturri1966
7536e51982 Do not allow objects to be placed fully below bed 2021-08-24 07:46:59 +02:00
enricoturri1966
861bb26ff2 Changed app title when the current project is modified and non yet named 2021-08-23 12:40:28 +02:00
Vojtech Bubnik
498db5cb01 Support for SL1S printer:
Where SL1 is mentioned, mention it as SL1 / SL1S.
Support loading / saving of SL1S files in addition to SL1.
2021-08-13 13:40:13 +02:00
Vojtech Bubnik
3b2a7d1b05 Fixed loading of system presets with incompatible system profile keys
before the "reconfigure" dialog is shown.

Replaced boost::filesystem::copy_file() with Slic3r::copy_file()
in config snapshot loading code.
2021-08-13 13:34:40 +02:00
YuSanka
dad7e8cf9b Substitutions : Implemented InfoDialog 2021-08-13 13:30:50 +02:00
David Kocik
3e5a726443 Hint notification
changes in hints.ini
Hint notification: Just one button in Help menu.
Hint notification: New naming - Tip of the day
Notifications: no scrolling.
Hint notification: fadeout colors.
2021-08-11 17:15:23 +02:00
YuSanka
fcaf010f58 Follow up c0a00f4e70 - Check unsaved changes only if project wasn't saved 2021-08-11 15:40:57 +02:00
David Kocik
0675dfc2b9 Hints notification
Hints notification: enabled / disabled tags 
Hints notification: suppress opening url due to preferences.
Hint notification: close after 5 minutes and button in Help menu
2021-08-10 14:48:23 +02:00
enricoturri1966
09cf0ffaba ENABLE_PROJECT_DIRTY_STATE set as default 2021-07-30 09:33:51 +02:00
enricoturri1966
cef1a00d86 Tech ENABLE_VALIDATE_CUSTOM_GCODE set as default 2021-07-22 09:13:12 +02:00
YuSanka
32bb7ea341 Removed unnecessary conditions that interfere with the search. 2021-07-21 14:48:05 +02:00
YuSanka
ba7338adf0 GalleryDialog: Added process of the "Close" button
SavePresetDialog: To correct "darkmodding" the wxRadioBox was changed to the wxStaticBoxSizer with radio buttons
+ Some code cleaning
2021-07-20 14:46:38 +02:00
YuSanka
95c16c7c9b Added "Modify Shapes Gallery" to the "Window" menu
+ Fixed a non-MSW build (added missed include)
2021-07-20 11:25:24 +02:00
Oleksandra Yushchenko
a41a214584 MSW specific: Implementation of the own notebook control
* MSW specific: First implementation of the Notebook control to support Dark/Light color modes

* MSW specific: Set mode sizer to the Notebook control.

* MSW specific: Added icons to the Notepad control
 + There is no need to restart application after the changing of the color mode

* Fixed non-MSW build

* Updated color for SavePresetDialog
+ Added wrapper to wxMessageBox for mom-MSW platforms
2021-06-29 16:23:45 +02:00
Vojtech Bubnik
c5304750d9 Support for forward compatibility of configurations, user and system
config bundles, project files (3MFs, AMFs). When loading these files,
the caller may decide whether to substitute some of the configuration
values the current PrusaSlicer version does not understand with
some reasonable default value, and whether to report it. If substitution
is disabled, an exception is being thrown as before this commit.
If substitution is enabled, list of substitutions is returned by the
API to be presented to the user. This allows us to introduce for example
new firmware flavor key in PrusaSlicer 2.4 while letting PrusaSlicer
2.3.2 to fall back to some default and to report it to the user.

When slicing from command line, substutions are performed by default
and reported into the console, however substitutions may be either
disabled or made silent with the new "config-compatibility" command
line option.

Substitute enums and bools only.  Allow booleans to be parsed as
    true: "1", "enabled", "on" case insensitive
    false: "0", "disabled", "off" case insensitive
This will allow us in the future for example to switch the draft_shield
boolean to an enum with the following values: "disabled" / "enabled" / "limited".

Added "enum_bitmask.hpp" - support for type safe sets of options.
See for example PresetBundle::load_configbundle(...
LoadConfigBundleAttributes flags) for an example of intended usage.

WIP: GUI for reporting the list of config substitutions needs to be
implemented by @YuSanka.
2021-06-27 16:57:05 +02:00
enricoturri1966
198b5f21b9 Fixed warning 2021-06-23 10:30:15 +02:00
YuSanka
313742997c Some code beautification for the last commit
+ Fix of the TabPresetComboBox layout for "light mode" + "tabs as a menu items" preferences
2021-06-18 21:54:20 +02:00
Oleksandra Yushchenko
ffd33d6494 DarkMode for MSW (#6632)
* MSW specific: Dark Mode: First implementation

* Use menu instead of NoteBook

* Implemented MessageDialog
+ Fixed DarkMode for all dialogs and ColorPicker

* MSW DarkMode: Added missed updates for the switching between modes

* MSW DarkMode: Updated all existed context menus after switching of the mode
+ Added markers for the menu item witch is related to the selected tab

* Used wxFrame instead of wxDialog for SettingsDialog
(this change allow us to use menu bar in SettingsDialog)

+ fix for #6548 - Prusa Slicer 2.3.1 not activating non-modal settings window if settings window is minimized

* Implemented "Always use Dark mode colors" preference option

* Fixes for non_MSW build

* Next fixes for non-MSW builds

* Preferences: Fixed selection of the Settings Layout for non-MSW platforms
+ Updated DarkMode for colorpickers

* Windows DarkMode next fixes

* MSWDarkMode: Suppress to use system color to the PrusaSlicer
Select "Preferences -> Use Dark color mode (experimental)" to allow dark mode for the application

* Fixed MSW build

* MSWDarkMode: Upadteed color mode for ExtruderSequenceDialog and for dialogs related to the DoubleSlider

* Implemented Auto recreation of the PrusaSlicer when color mode is changed.

* Preferences: Added option "Set settings tabs as menu items (experimental)"
2021-06-18 19:46:04 +02:00
YuSanka
eb7ce6429b Code refactoring to avoid a call of update_ui_from_settings() every time when switching between "3D-View" and "Preview" 2021-06-11 10:34:13 +02:00
enricoturri1966
75f0b81bdd Do not close application when user select 'Cancel' in the save dirty project dialog 2021-06-08 11:51:41 +02:00
enricoturri1966
862eac6589 Changed logic to avoid saving a project while a gizmo is in editing mode 2021-06-01 08:32:58 +02:00
YuSanka
31cb4afb65 Fix of some warnings 2021-05-18 12:58:14 +02:00
YuSanka
a5c34ce632 Probably fix for #6270 - Segfault during startup in prusa-slicer-git 2.3.0.r24.gd06aa6069-1 2021-05-11 18:03:57 +02:00
enricoturri1966
a138446ed2 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_project_dirty_state 2021-05-03 16:05:22 +02:00
Lukas Matena
22af3b8e30 Fixed a memory leak when repairing an external stl 2021-04-26 20:45:43 +02:00