Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYuSanka <yusanka@gmail.com>2018-01-26 03:44:34 +0300
committerYuSanka <yusanka@gmail.com>2018-01-26 03:44:34 +0300
commit40569787319264acb5799479618866111db98aa3 (patch)
tree6812b03ef515a6933d68c154890f14b86d4cc1c0 /lib
parent4d234e90aef7e5036893079bb1ba87c20ab4292c (diff)
Implementation of C++ to Perl callbacks from Browse & Test buttons.
Diffstat (limited to 'lib')
-rw-r--r--lib/Slic3r/GUI/MainFrame.pm61
1 files changed, 59 insertions, 2 deletions
diff --git a/lib/Slic3r/GUI/MainFrame.pm b/lib/Slic3r/GUI/MainFrame.pm
index 642ab2627..1d1cf1479 100644
--- a/lib/Slic3r/GUI/MainFrame.pm
+++ b/lib/Slic3r/GUI/MainFrame.pm
@@ -23,6 +23,10 @@ our $last_config;
our $VALUE_CHANGE_EVENT = Wx::NewEventType;
# 2) To inform about a preset selection change or a "modified" status change.
our $PRESETS_CHANGED_EVENT = Wx::NewEventType;
+# 3) To inform about a click on Browse button
+our $BUTTON_BROWSE_EVENT = Wx::NewEventType;
+# 4) To inform about a click on Test button
+our $BUTTON_TEST_EVENT = Wx::NewEventType;
sub new {
my ($class, %params) = @_;
@@ -113,7 +117,6 @@ sub _init_tabpanel {
}
}
$self->{options_tabs} = {};
-
for my $tab_name (qw(print filament printer)) {
my $tab;
$tab = $self->{options_tabs}{$tab_name} = ("Slic3r::GUI::Tab::" . ucfirst $tab_name)->new(
@@ -203,7 +206,61 @@ sub _init_tabpanel {
$self->{plater}->on_config_change($tab->get_config);
}
});
- Slic3r::GUI::create_preset_tabs(wxTheApp->{preset_bundle}, wxTheApp->{app_config}, $self->{no_controller}, $VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT);
+ # The following event is emited by the C++ Tab implementation ,
+ # when the Browse button was clicked
+ EVT_COMMAND($self, -1, $BUTTON_BROWSE_EVENT, sub {
+ my ($self, $event) = @_;
+ my $msg = $event->GetString;
+ print "BUTTON_BROWSE_EVENT: ", $msg, "\n";
+
+ # look for devices
+ my $entries;
+ {
+ my $res = Net::Bonjour->new('http');
+ $res->discover;
+ $entries = [ $res->entries ];
+ }
+ if (@{$entries}) {
+ my $dlg = Slic3r::GUI::BonjourBrowser->new($self, $entries);
+ my $tab = Slic3r::GUI::get_preset_tab("printer");
+ $tab->load_key_value('octoprint_host', $dlg->GetValue . ":" . $dlg->GetPort)
+ if $dlg->ShowModal == wxID_OK;
+ } else {
+ Wx::MessageDialog->new($self, 'No Bonjour device found', 'Device Browser', wxOK | wxICON_INFORMATION)->ShowModal;
+ }
+ });
+ # The following event is emited by the C++ Tab implementation ,
+ # when the Test button was clicked
+ EVT_COMMAND($self, -1, $BUTTON_TEST_EVENT, sub {
+ my ($self, $event) = @_;
+ my $msg = $event->GetString;
+ print "BUTTON_TEST_EVENT: ", $msg, "\n";
+
+ my $ua = LWP::UserAgent->new;
+ $ua->timeout(10);
+
+ my $config = Slic3r::GUI::get_preset_tab("printer")->get_config;
+ my $res = $ua->get(
+ "http://" . $config->octoprint_host . "/api/version",
+ 'X-Api-Key' => $config->octoprint_apikey,
+ );
+ if ($res->is_success) {
+ Slic3r::GUI::show_info($self, "Connection to OctoPrint works correctly.", "Success!");
+ } else {
+ Slic3r::GUI::show_error($self,
+ "I wasn't able to connect to OctoPrint (" . $res->status_line . "). "
+ . "Check hostname and OctoPrint version (at least 1.1.0 is required).");
+ }
+ });
+ # A variable to inform C++ Tab implementation about disabling of Browse button
+ $self->{is_disabled_button_browse} = (!eval "use Net::Bonjour; 1") ? 1 : 0 ;
+ # A variable to inform C++ Tab implementation about user_agent
+ $self->{is_user_agent} = (eval "use LWP::UserAgent; 1") ? 1 : 0 ;
+ Slic3r::GUI::create_preset_tabs(wxTheApp->{preset_bundle}, wxTheApp->{app_config},
+ $self->{no_controller}, $self->{is_disabled_button_browse},
+ $self->{is_user_agent},
+ $VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT,
+ $BUTTON_BROWSE_EVENT, $BUTTON_TEST_EVENT);
$self->{options_tabs2}{print} = Slic3r::GUI::get_preset_tab("print");
$self->{options_tabs2}{filament} = Slic3r::GUI::get_preset_tab("filament");
$self->{options_tabs2}{printer} = Slic3r::GUI::get_preset_tab("printer");