Merge remote-tracking branch 'origin/master' into feature_slice_to_png
This commit is contained in:
commit
c28b602465
@ -49,6 +49,7 @@ my \$defines = ' ' . Alien::wxWidgets->defines;
|
|||||||
my \$cflags = Alien::wxWidgets->c_flags;
|
my \$cflags = Alien::wxWidgets->c_flags;
|
||||||
my \$linkflags = Alien::wxWidgets->link_flags;
|
my \$linkflags = Alien::wxWidgets->link_flags;
|
||||||
my \$libraries = ' ' . Alien::wxWidgets->libraries(@components);
|
my \$libraries = ' ' . Alien::wxWidgets->libraries(@components);
|
||||||
|
my \$gui_toolkit = Alien::wxWidgets->config->{toolkit};
|
||||||
#my @libraries = Alien::wxWidgets->link_libraries(@components);
|
#my @libraries = Alien::wxWidgets->link_libraries(@components);
|
||||||
#my @implib = Alien::wxWidgets->import_libraries(@components);
|
#my @implib = Alien::wxWidgets->import_libraries(@components);
|
||||||
#my @shrlib = Alien::wxWidgets->shared_libraries(@components);
|
#my @shrlib = Alien::wxWidgets->shared_libraries(@components);
|
||||||
@ -82,6 +83,7 @@ cmake_set_var('LIBRARIES', \$libraries);
|
|||||||
cmake_set_var('DEFINITIONS', \$defines);
|
cmake_set_var('DEFINITIONS', \$defines);
|
||||||
#cmake_set_var('DEFINITIONS_DEBUG', );
|
#cmake_set_var('DEFINITIONS_DEBUG', );
|
||||||
cmake_set_var('CXX_FLAGS', \$cflags);
|
cmake_set_var('CXX_FLAGS', \$cflags);
|
||||||
|
cmake_set_var('GUI_TOOLKIT', \$gui_toolkit);
|
||||||
close \$fh;
|
close \$fh;
|
||||||
")
|
")
|
||||||
include(${AlienWx_TEMP_INCLUDE})
|
include(${AlienWx_TEMP_INCLUDE})
|
||||||
@ -96,6 +98,7 @@ if (AlienWx_DEBUG)
|
|||||||
message(STATUS " AlienWx_DEFINITIONS = ${AlienWx_DEFINITIONS}")
|
message(STATUS " AlienWx_DEFINITIONS = ${AlienWx_DEFINITIONS}")
|
||||||
message(STATUS " AlienWx_DEFINITIONS_DEBUG = ${AlienWx_DEFINITIONS_DEBUG}")
|
message(STATUS " AlienWx_DEFINITIONS_DEBUG = ${AlienWx_DEFINITIONS_DEBUG}")
|
||||||
message(STATUS " AlienWx_CXX_FLAGS = ${AlienWx_CXX_FLAGS}")
|
message(STATUS " AlienWx_CXX_FLAGS = ${AlienWx_CXX_FLAGS}")
|
||||||
|
message(STATUS " AlienWx_GUI_TOOLKIT = ${AlienWx_GUI_TOOLKIT}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
|
@ -1890,6 +1890,8 @@ sub on_config_change {
|
|||||||
$update_scheduled = 1;
|
$update_scheduled = 1;
|
||||||
} elsif ($opt_key eq 'printer_model') {
|
} elsif ($opt_key eq 'printer_model') {
|
||||||
# update to force bed selection (for texturing)
|
# update to force bed selection (for texturing)
|
||||||
|
Slic3r::GUI::_3DScene::set_bed_shape($self->{canvas3D}, $self->{config}->bed_shape) if $self->{canvas3D};
|
||||||
|
Slic3r::GUI::_3DScene::set_bed_shape($self->{preview3D}->canvas, $self->{config}->bed_shape) if $self->{preview3D};
|
||||||
$update_scheduled = 1;
|
$update_scheduled = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -233,7 +233,6 @@ sub mouse_event {
|
|||||||
} elsif ($event->LeftUp) {
|
} elsif ($event->LeftUp) {
|
||||||
if ($self->{drag_object}) {
|
if ($self->{drag_object}) {
|
||||||
$self->{on_instances_moved}->();
|
$self->{on_instances_moved}->();
|
||||||
Slic3r::GUI::_3DScene::reset_current_canvas();
|
|
||||||
}
|
}
|
||||||
$self->{drag_start_pos} = undef;
|
$self->{drag_start_pos} = undef;
|
||||||
$self->{drag_object} = undef;
|
$self->{drag_object} = undef;
|
||||||
|
@ -199,11 +199,11 @@ sub new {
|
|||||||
my $old_zoom = $self->_zoom;
|
my $old_zoom = $self->_zoom;
|
||||||
|
|
||||||
# Calculate the zoom delta and apply it to the current zoom factor
|
# Calculate the zoom delta and apply it to the current zoom factor
|
||||||
my $zoom = $e->GetWheelRotation() / $e->GetWheelDelta();
|
my $zoom = -$e->GetWheelRotation() / $e->GetWheelDelta();
|
||||||
$zoom = max(min($zoom, 4), -4);
|
$zoom = max(min($zoom, 4), -4);
|
||||||
$zoom /= 10;
|
$zoom /= 10;
|
||||||
$self->_zoom($self->_zoom / (1-$zoom));
|
$self->_zoom($self->_zoom / (1-$zoom));
|
||||||
$self->_zoom(1) if $self->_zoom > 1; # prevent from zooming out too much
|
$self->_zoom(1.25) if $self->_zoom > 1.25; # prevent from zooming out too much
|
||||||
|
|
||||||
{
|
{
|
||||||
# In order to zoom around the mouse point we need to translate
|
# In order to zoom around the mouse point we need to translate
|
||||||
@ -227,7 +227,6 @@ sub new {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$self->_dirty(1);
|
$self->_dirty(1);
|
||||||
$self->Refresh;
|
|
||||||
});
|
});
|
||||||
EVT_MOUSE_EVENTS($self, \&mouse_event);
|
EVT_MOUSE_EVENTS($self, \&mouse_event);
|
||||||
|
|
||||||
@ -255,8 +254,8 @@ sub mouse_event {
|
|||||||
return if !$self->GetParent->enabled;
|
return if !$self->GetParent->enabled;
|
||||||
|
|
||||||
my $pos = Slic3r::Pointf->new($e->GetPositionXY);
|
my $pos = Slic3r::Pointf->new($e->GetPositionXY);
|
||||||
if ($e->Entering && &Wx::wxMSW) {
|
if ($e->Entering && (&Wx::wxMSW || $^O eq 'linux')) {
|
||||||
# wxMSW needs focus in order to catch mouse wheel events
|
# wxMSW and Linux needs focus in order to catch key events
|
||||||
$self->SetFocus;
|
$self->SetFocus;
|
||||||
} elsif ($e->Dragging) {
|
} elsif ($e->Dragging) {
|
||||||
if ($e->LeftIsDown || $e->MiddleIsDown || $e->RightIsDown) {
|
if ($e->LeftIsDown || $e->MiddleIsDown || $e->RightIsDown) {
|
||||||
@ -276,7 +275,6 @@ sub mouse_event {
|
|||||||
);
|
);
|
||||||
|
|
||||||
$self->_dirty(1);
|
$self->_dirty(1);
|
||||||
$self->Refresh;
|
|
||||||
}
|
}
|
||||||
$self->_drag_start_xy($pos);
|
$self->_drag_start_xy($pos);
|
||||||
}
|
}
|
||||||
@ -631,6 +629,27 @@ sub Resize {
|
|||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
|
|
||||||
my $bb = $self->bb->clone;
|
my $bb = $self->bb->clone;
|
||||||
|
|
||||||
|
# rescale in dependence of window aspect ratio
|
||||||
|
my $bb_size = $bb->size;
|
||||||
|
my $ratio_x = ($x != 0.0) ? $bb_size->x / $x : 1.0;
|
||||||
|
my $ratio_y = ($y != 0.0) ? $bb_size->y / $y : 1.0;
|
||||||
|
|
||||||
|
if ($ratio_y < $ratio_x) {
|
||||||
|
if ($ratio_y != 0.0) {
|
||||||
|
my $new_size_y = $bb_size->y * $ratio_x / $ratio_y;
|
||||||
|
my $half_delta_size_y = 0.5 * ($new_size_y - $bb_size->y);
|
||||||
|
$bb->set_y_min($bb->y_min - $half_delta_size_y);
|
||||||
|
$bb->set_y_max($bb->y_max + $half_delta_size_y);
|
||||||
|
}
|
||||||
|
} elsif ($ratio_x < $ratio_y) {
|
||||||
|
if ($ratio_x != 0.0) {
|
||||||
|
my $new_size_x = $bb_size->x * $ratio_y / $ratio_x;
|
||||||
|
my $half_delta_size_x = 0.5 * ($new_size_x - $bb_size->x);
|
||||||
|
$bb->set_x_min($bb->x_min - $half_delta_size_x);
|
||||||
|
$bb->set_x_max($bb->x_max + $half_delta_size_x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# center bounding box around origin before scaling it
|
# center bounding box around origin before scaling it
|
||||||
my $bb_center = $bb->center;
|
my $bb_center = $bb->center;
|
||||||
@ -645,25 +664,25 @@ sub Resize {
|
|||||||
# translate camera
|
# translate camera
|
||||||
$bb->translate(@{$self->_camera_target});
|
$bb->translate(@{$self->_camera_target});
|
||||||
|
|
||||||
# keep camera_bb within total bb
|
# # keep camera_bb within total bb
|
||||||
# (i.e. prevent user from panning outside the bounding box)
|
# # (i.e. prevent user from panning outside the bounding box)
|
||||||
{
|
# {
|
||||||
my @translate = (0,0);
|
# my @translate = (0,0);
|
||||||
if ($bb->x_min < $self->bb->x_min) {
|
# if ($bb->x_min < $self->bb->x_min) {
|
||||||
$translate[X] += $self->bb->x_min - $bb->x_min;
|
# $translate[X] += $self->bb->x_min - $bb->x_min;
|
||||||
}
|
# }
|
||||||
if ($bb->y_min < $self->bb->y_min) {
|
# if ($bb->y_min < $self->bb->y_min) {
|
||||||
$translate[Y] += $self->bb->y_min - $bb->y_min;
|
# $translate[Y] += $self->bb->y_min - $bb->y_min;
|
||||||
}
|
# }
|
||||||
if ($bb->x_max > $self->bb->x_max) {
|
# if ($bb->x_max > $self->bb->x_max) {
|
||||||
$translate[X] -= $bb->x_max - $self->bb->x_max;
|
# $translate[X] -= $bb->x_max - $self->bb->x_max;
|
||||||
}
|
# }
|
||||||
if ($bb->y_max > $self->bb->y_max) {
|
# if ($bb->y_max > $self->bb->y_max) {
|
||||||
$translate[Y] -= $bb->y_max - $self->bb->y_max;
|
# $translate[Y] -= $bb->y_max - $self->bb->y_max;
|
||||||
}
|
# }
|
||||||
$self->_camera_target->translate(@translate);
|
# $self->_camera_target->translate(@translate);
|
||||||
$bb->translate(@translate);
|
# $bb->translate(@translate);
|
||||||
}
|
# }
|
||||||
|
|
||||||
# save camera
|
# save camera
|
||||||
$self->_camera_bb($bb);
|
$self->_camera_bb($bb);
|
||||||
|
@ -279,6 +279,7 @@ sub reload_print {
|
|||||||
my ($self, $force) = @_;
|
my ($self, $force) = @_;
|
||||||
|
|
||||||
Slic3r::GUI::_3DScene::reset_volumes($self->canvas);
|
Slic3r::GUI::_3DScene::reset_volumes($self->canvas);
|
||||||
|
Slic3r::GUI::_3DScene::reset_current_canvas();
|
||||||
$self->_loaded(0);
|
$self->_loaded(0);
|
||||||
|
|
||||||
if (! $self->IsShown && ! $force) {
|
if (! $self->IsShown && ! $force) {
|
||||||
|
@ -101,7 +101,12 @@ sub export_gcode {
|
|||||||
die "The configured post-processing script is not executable: check permissions. ($script)\n";
|
die "The configured post-processing script is not executable: check permissions. ($script)\n";
|
||||||
}
|
}
|
||||||
if ($^O eq 'MSWin32' && $script =~ /\.[pP][lL]/) {
|
if ($^O eq 'MSWin32' && $script =~ /\.[pP][lL]/) {
|
||||||
system($^X, $script, $output_file);
|
# The current process (^X) may be slic3r.exe or slic3r-console.exe.
|
||||||
|
# Replace it with the current perl interpreter.
|
||||||
|
my($filename, $directories, $suffix) = fileparse($^X);
|
||||||
|
$filename =~ s/^slic3r.*$/perl5\.24\.0\.exe/;
|
||||||
|
my $interpreter = $directories . $filename;
|
||||||
|
system($interpreter, $script, $output_file);
|
||||||
} else {
|
} else {
|
||||||
system($script, $output_file);
|
system($script, $output_file);
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -6,6 +6,7 @@ xs/src/slic3r/GUI/ButtonsDescription.cpp
|
|||||||
xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp
|
xs/src/slic3r/GUI/ConfigSnapshotDialog.cpp
|
||||||
xs/src/slic3r/GUI/ConfigWizard.cpp
|
xs/src/slic3r/GUI/ConfigWizard.cpp
|
||||||
xs/src/slic3r/GUI/FirmwareDialog.cpp
|
xs/src/slic3r/GUI/FirmwareDialog.cpp
|
||||||
|
xs/src/slic3r/GUI/GLCanvas3D.cpp
|
||||||
xs/src/slic3r/GUI/GUI.cpp
|
xs/src/slic3r/GUI/GUI.cpp
|
||||||
xs/src/slic3r/GUI/MsgDialog.cpp
|
xs/src/slic3r/GUI/MsgDialog.cpp
|
||||||
xs/src/slic3r/GUI/Tab.cpp
|
xs/src/slic3r/GUI/Tab.cpp
|
||||||
|
@ -12,6 +12,7 @@ list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules/)
|
|||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
# Workaround for an old CMake, which does not understand CMAKE_CXX_STANDARD.
|
# Workaround for an old CMake, which does not understand CMAKE_CXX_STANDARD.
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall" )
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall" )
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUXX)
|
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUXX)
|
||||||
@ -634,6 +635,15 @@ if (SLIC3R_PRUSACONTROL)
|
|||||||
#add_compile_options(${AlienWx_CXX_FLAGS})
|
#add_compile_options(${AlienWx_CXX_FLAGS})
|
||||||
add_definitions(${AlienWx_DEFINITIONS})
|
add_definitions(${AlienWx_DEFINITIONS})
|
||||||
set(wxWidgets_LIBRARIES ${AlienWx_LIBRARIES})
|
set(wxWidgets_LIBRARIES ${AlienWx_LIBRARIES})
|
||||||
|
# On Linux / gtk, we need to have a direct access to gtk+ for some workarounds.
|
||||||
|
if (AlienWx_GUI_TOOLKIT STREQUAL "gtk2")
|
||||||
|
pkg_check_modules(GTK2 gtk+-2.0)
|
||||||
|
include_directories(${GTK2_INCLUDE_DIRS})
|
||||||
|
endif()
|
||||||
|
if (AlienWx_GUI_TOOLKIT STREQUAL "gtk3")
|
||||||
|
pkg_check_modules(GTK3 gtk+-3.0)
|
||||||
|
include_directories(${GTK3_INCLUDE_DIRS})
|
||||||
|
endif()
|
||||||
else ()
|
else ()
|
||||||
find_package(wxWidgets REQUIRED COMPONENTS base core adv html gl)
|
find_package(wxWidgets REQUIRED COMPONENTS base core adv html gl)
|
||||||
include(${wxWidgets_USE_FILE})
|
include(${wxWidgets_USE_FILE})
|
||||||
|
@ -2376,7 +2376,7 @@ void GLCanvas3D::load_gcode_preview(const GCodePreviewData& preview_data, const
|
|||||||
if ((m_canvas != nullptr) && (m_print != nullptr))
|
if ((m_canvas != nullptr) && (m_print != nullptr))
|
||||||
{
|
{
|
||||||
// ensures that this canvas is current
|
// ensures that this canvas is current
|
||||||
if (!_3DScene::set_current(m_canvas, false))
|
if (!_3DScene::set_current(m_canvas, true))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (m_volumes.empty())
|
if (m_volumes.empty())
|
||||||
|
@ -150,8 +150,15 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** colored_Label/*
|
|||||||
// Build a label if we have it
|
// Build a label if we have it
|
||||||
wxStaticText* label=nullptr;
|
wxStaticText* label=nullptr;
|
||||||
if (label_width != 0) {
|
if (label_width != 0) {
|
||||||
|
long label_style = staticbox ? 0 : wxALIGN_RIGHT;
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
// workaround for correct text align of the StaticBox on Linux
|
||||||
|
// flags wxALIGN_RIGHT and wxALIGN_CENTRE don't work when Ellipsize flags are _not_ given.
|
||||||
|
// Text is properly aligned only when Ellipsize is checked.
|
||||||
|
label_style |= staticbox ? 0 : wxST_ELLIPSIZE_END;
|
||||||
|
#endif /* __WXGTK__ */
|
||||||
label = new wxStaticText(parent(), wxID_ANY, line.label + (line.label.IsEmpty() ? "" : ":"),
|
label = new wxStaticText(parent(), wxID_ANY, line.label + (line.label.IsEmpty() ? "" : ":"),
|
||||||
wxDefaultPosition, wxSize(label_width, -1), staticbox ? 0 : wxALIGN_RIGHT);
|
wxDefaultPosition, wxSize(label_width, -1), label_style);
|
||||||
label->SetFont(label_font);
|
label->SetFont(label_font);
|
||||||
label->Wrap(label_width); // avoid a Linux/GTK bug
|
label->Wrap(label_width); // avoid a Linux/GTK bug
|
||||||
grid_sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, 5);
|
grid_sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, 5);
|
||||||
|
@ -29,6 +29,10 @@
|
|||||||
int x_max() %code{% RETVAL = THIS->max.x; %};
|
int x_max() %code{% RETVAL = THIS->max.x; %};
|
||||||
int y_min() %code{% RETVAL = THIS->min.y; %};
|
int y_min() %code{% RETVAL = THIS->min.y; %};
|
||||||
int y_max() %code{% RETVAL = THIS->max.y; %};
|
int y_max() %code{% RETVAL = THIS->max.y; %};
|
||||||
|
void set_x_min(double val) %code{% THIS->min.x = val; %};
|
||||||
|
void set_x_max(double val) %code{% THIS->max.x = val; %};
|
||||||
|
void set_y_min(double val) %code{% THIS->min.y = val; %};
|
||||||
|
void set_y_max(double val) %code{% THIS->max.y = val; %};
|
||||||
std::string serialize() %code{% char buf[2048]; sprintf(buf, "%ld,%ld;%ld,%ld", THIS->min.x, THIS->min.y, THIS->max.x, THIS->max.y); RETVAL = buf; %};
|
std::string serialize() %code{% char buf[2048]; sprintf(buf, "%ld,%ld;%ld,%ld", THIS->min.x, THIS->min.y, THIS->max.x, THIS->max.y); RETVAL = buf; %};
|
||||||
bool defined() %code{% RETVAL = THIS->defined; %};
|
bool defined() %code{% RETVAL = THIS->defined; %};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user