mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-12 17:27:52 -06:00
3DScene's char event handler moved to c++
This commit is contained in:
parent
2b4829a4b9
commit
41c51d7614
4 changed files with 70 additions and 30 deletions
|
@ -244,36 +244,38 @@ sub new {
|
||||||
#==============================================================================================================================
|
#==============================================================================================================================
|
||||||
EVT_MOUSEWHEEL($self, \&mouse_wheel_event);
|
EVT_MOUSEWHEEL($self, \&mouse_wheel_event);
|
||||||
EVT_MOUSE_EVENTS($self, \&mouse_event);
|
EVT_MOUSE_EVENTS($self, \&mouse_event);
|
||||||
# EVT_KEY_DOWN($self, sub {
|
#==============================================================================================================================
|
||||||
EVT_CHAR($self, sub {
|
## EVT_KEY_DOWN($self, sub {
|
||||||
my ($s, $event) = @_;
|
# EVT_CHAR($self, sub {
|
||||||
if ($event->HasModifiers) {
|
# my ($s, $event) = @_;
|
||||||
$event->Skip;
|
# if ($event->HasModifiers) {
|
||||||
} else {
|
# $event->Skip;
|
||||||
my $key = $event->GetKeyCode;
|
# } else {
|
||||||
if ($key == ord('0')) {
|
# my $key = $event->GetKeyCode;
|
||||||
$self->select_view('iso');
|
# if ($key == ord('0')) {
|
||||||
} elsif ($key == ord('1')) {
|
# $self->select_view('iso');
|
||||||
$self->select_view('top');
|
# } elsif ($key == ord('1')) {
|
||||||
} elsif ($key == ord('2')) {
|
# $self->select_view('top');
|
||||||
$self->select_view('bottom');
|
# } elsif ($key == ord('2')) {
|
||||||
} elsif ($key == ord('3')) {
|
# $self->select_view('bottom');
|
||||||
$self->select_view('front');
|
# } elsif ($key == ord('3')) {
|
||||||
} elsif ($key == ord('4')) {
|
# $self->select_view('front');
|
||||||
$self->select_view('rear');
|
# } elsif ($key == ord('4')) {
|
||||||
} elsif ($key == ord('5')) {
|
# $self->select_view('rear');
|
||||||
$self->select_view('left');
|
# } elsif ($key == ord('5')) {
|
||||||
} elsif ($key == ord('6')) {
|
# $self->select_view('left');
|
||||||
$self->select_view('right');
|
# } elsif ($key == ord('6')) {
|
||||||
} elsif ($key == ord('z')) {
|
# $self->select_view('right');
|
||||||
$self->zoom_to_volumes;
|
# } elsif ($key == ord('z')) {
|
||||||
} elsif ($key == ord('b')) {
|
# $self->zoom_to_volumes;
|
||||||
$self->zoom_to_bed;
|
# } elsif ($key == ord('b')) {
|
||||||
} else {
|
# $self->zoom_to_bed;
|
||||||
$event->Skip;
|
# } else {
|
||||||
}
|
# $event->Skip;
|
||||||
}
|
# }
|
||||||
});
|
# }
|
||||||
|
# });
|
||||||
|
#==============================================================================================================================
|
||||||
|
|
||||||
$self->{layer_height_edit_timer_id} = &Wx::NewId();
|
$self->{layer_height_edit_timer_id} = &Wx::NewId();
|
||||||
$self->{layer_height_edit_timer} = Wx::Timer->new($self, $self->{layer_height_edit_timer_id});
|
$self->{layer_height_edit_timer} = Wx::Timer->new($self, $self->{layer_height_edit_timer_id});
|
||||||
|
|
|
@ -609,6 +609,41 @@ void GLCanvas3D::on_idle(wxIdleEvent& evt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GLCanvas3D::on_char(wxKeyEvent& evt)
|
||||||
|
{
|
||||||
|
if (evt.HasModifiers())
|
||||||
|
evt.Skip();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int keyCode = evt.GetKeyCode();
|
||||||
|
switch (keyCode - 48)
|
||||||
|
{
|
||||||
|
// numerical input
|
||||||
|
case 0: { select_view("iso"); break; }
|
||||||
|
case 1: { select_view("top"); break; }
|
||||||
|
case 2: { select_view("bottom"); break; }
|
||||||
|
case 3: { select_view("front"); break; }
|
||||||
|
case 4: { select_view("rear"); break; }
|
||||||
|
case 5: { select_view("left"); break; }
|
||||||
|
case 6: { select_view("right"); break; }
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// text input
|
||||||
|
switch (keyCode)
|
||||||
|
{
|
||||||
|
// key B/b
|
||||||
|
case 66:
|
||||||
|
case 98: { zoom_to_bed(); break; }
|
||||||
|
// key Z/z
|
||||||
|
case 90:
|
||||||
|
case 122: { zoom_to_volumes(); break; }
|
||||||
|
default: { evt.Skip(); break; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GLCanvas3D::_zoom_to_bounding_box(const BoundingBoxf3& bbox)
|
void GLCanvas3D::_zoom_to_bounding_box(const BoundingBoxf3& bbox)
|
||||||
{
|
{
|
||||||
// Calculate the zoom factor needed to adjust viewport to bounding box.
|
// Calculate the zoom factor needed to adjust viewport to bounding box.
|
||||||
|
|
|
@ -8,6 +8,7 @@ class wxGLCanvas;
|
||||||
class wxGLContext;
|
class wxGLContext;
|
||||||
class wxSizeEvent;
|
class wxSizeEvent;
|
||||||
class wxIdleEvent;
|
class wxIdleEvent;
|
||||||
|
class wxKeyEvent;
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
||||||
|
@ -172,6 +173,7 @@ public:
|
||||||
|
|
||||||
void on_size(wxSizeEvent& evt);
|
void on_size(wxSizeEvent& evt);
|
||||||
void on_idle(wxIdleEvent& evt);
|
void on_idle(wxIdleEvent& evt);
|
||||||
|
void on_char(wxKeyEvent& evt);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void _zoom_to_bounding_box(const BoundingBoxf3& bbox);
|
void _zoom_to_bounding_box(const BoundingBoxf3& bbox);
|
||||||
|
|
|
@ -79,6 +79,7 @@ bool GLCanvas3DManager::add(wxGLCanvas* canvas, wxGLContext* context)
|
||||||
|
|
||||||
canvas->Bind(wxEVT_SIZE, [canvas3D](wxSizeEvent& evt) { canvas3D->on_size(evt); });
|
canvas->Bind(wxEVT_SIZE, [canvas3D](wxSizeEvent& evt) { canvas3D->on_size(evt); });
|
||||||
canvas->Bind(wxEVT_IDLE, [canvas3D](wxIdleEvent& evt) { canvas3D->on_idle(evt); });
|
canvas->Bind(wxEVT_IDLE, [canvas3D](wxIdleEvent& evt) { canvas3D->on_idle(evt); });
|
||||||
|
canvas->Bind(wxEVT_CHAR, [canvas3D](wxKeyEvent& evt) { canvas3D->on_char(evt); });
|
||||||
|
|
||||||
m_canvases.insert(CanvasesMap::value_type(canvas, canvas3D));
|
m_canvases.insert(CanvasesMap::value_type(canvas, canvas3D));
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue