Fixing blocking.
This commit is contained in:
parent
fd437f84d8
commit
13da0736ba
@ -26,6 +26,7 @@ has port => (
|
|||||||
has _guts_device => ( is => 'rw' );
|
has _guts_device => ( is => 'rw' );
|
||||||
|
|
||||||
has _tempdir => ( is => 'rw', );
|
has _tempdir => ( is => 'rw', );
|
||||||
|
has _bluetooth => ( is => 'lazy' );
|
||||||
|
|
||||||
sub _device($self) {
|
sub _device($self) {
|
||||||
if ( !defined $self->_guts_device ) {
|
if ( !defined $self->_guts_device ) {
|
||||||
@ -59,10 +60,14 @@ sub lf($self) {
|
|||||||
$self->_device->lf;
|
$self->_device->lf;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub _obj($self) {
|
sub _build__bluetooth($self) {
|
||||||
my $obj = Net::Bluetooth->newsocket('RFCOMM');
|
my $obj = Net::Bluetooth->newsocket('RFCOMM');
|
||||||
$self->_try_to_connect($obj);
|
$self->_try_to_connect($obj);
|
||||||
return $obj;
|
return $obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub _obj($self) {
|
||||||
|
return $self->_bluetooth;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub print($self) {
|
sub print($self) {
|
||||||
@ -73,6 +78,7 @@ sub print($self) {
|
|||||||
my $fh = $obj->perlfh;
|
my $fh = $obj->perlfh;
|
||||||
print $fh path( $self->_tempfile )->slurp_raw;
|
print $fh path( $self->_tempfile )->slurp_raw;
|
||||||
$fh->flush;
|
$fh->flush;
|
||||||
|
close $fh;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub _try_to_connect($self, $obj, $retries = 3) {
|
sub _try_to_connect($self, $obj, $retries = 3) {
|
||||||
|
@ -35,13 +35,13 @@ sub image( $self, $image ) {
|
|||||||
$self->current_image($new_current);
|
$self->current_image($new_current);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub lf {
|
|
||||||
}
|
|
||||||
|
|
||||||
sub print($self) {
|
sub print($self) {
|
||||||
path($self->output_file)->spew_raw($self->current_image->png);
|
path($self->output_file)->spew_raw($self->current_image->png);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub lf {
|
||||||
|
}
|
||||||
|
|
||||||
sub serialize($self) {
|
sub serialize($self) {
|
||||||
my $hash = {%$self};
|
my $hash = {%$self};
|
||||||
$hash->{type} = 'image';
|
$hash->{type} = 'image';
|
||||||
|
@ -201,7 +201,7 @@ sub _on_run_script( $self, $script, $device, $write_to_parent, $verbose = 1 ) {
|
|||||||
eval {
|
eval {
|
||||||
my $sub =
|
my $sub =
|
||||||
eval
|
eval
|
||||||
'use v5.40.0; use strict; use warnings; use utf8; use Cairo; use Pango;'
|
'use v5.40.0; use strict; use warnings; use utf8; no Carp::Always; use Cairo; use Pango;'
|
||||||
. $script;
|
. $script;
|
||||||
if ($@) {
|
if ($@) {
|
||||||
die $@;
|
die $@;
|
||||||
@ -229,7 +229,15 @@ sub _monitor_run($self) {
|
|||||||
my $buffer = $execute_log->get_buffer;
|
my $buffer = $execute_log->get_buffer;
|
||||||
my $begin_iter = $buffer->get_iter_at_offset(0);
|
my $begin_iter = $buffer->get_iter_at_offset(0);
|
||||||
my $end_iter = $buffer->get_end_iter;
|
my $end_iter = $buffer->get_end_iter;
|
||||||
my $text = <$fh>;
|
|
||||||
|
my $text = '';
|
||||||
|
$fh->blocking(0);
|
||||||
|
while (my $line = <$fh>) {
|
||||||
|
if (!defined $line) {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
$text .= $line;
|
||||||
|
}
|
||||||
return if $text =~ /^\s*$/;
|
return if $text =~ /^\s*$/;
|
||||||
$buffer->insert( $end_iter, $text, -1 );
|
$buffer->insert( $end_iter, $text, -1 );
|
||||||
}
|
}
|
||||||
@ -264,6 +272,10 @@ sub _activate($self) {
|
|||||||
$self->_win($win);
|
$self->_win($win);
|
||||||
my $box_vertical = Gtk4::Box->new( 'vertical', 0 );
|
my $box_vertical = Gtk4::Box->new( 'vertical', 0 );
|
||||||
my $editor = Gtk4::Source::View->new;
|
my $editor = Gtk4::Source::View->new;
|
||||||
|
$editor->set_insert_spaces_instead_of_tabs(1);
|
||||||
|
$editor->set_tab_width(4);
|
||||||
|
$editor->set_auto_indent(1);
|
||||||
|
$editor->set_smart_backspace(1);
|
||||||
my $execute_log = Gtk4::TextView->new;
|
my $execute_log = Gtk4::TextView->new;
|
||||||
my $run_button = Gtk4::Button->new_with_label('Run');
|
my $run_button = Gtk4::Button->new_with_label('Run');
|
||||||
my $preview_button = Gtk4::Button->new_with_label('Preview');
|
my $preview_button = Gtk4::Button->new_with_label('Preview');
|
||||||
@ -310,7 +322,7 @@ sub ($printer) {
|
|||||||
],
|
],
|
||||||
30
|
30
|
||||||
);
|
);
|
||||||
$printer->print_n_lf(4);
|
$printer->print_n_lf(2);
|
||||||
|
|
||||||
$printer->print;
|
$printer->print;
|
||||||
}
|
}
|
||||||
@ -345,6 +357,8 @@ EOF
|
|||||||
$box_editor_preview->append($editor_scroll_window);
|
$box_editor_preview->append($editor_scroll_window);
|
||||||
$box_editor_preview->append($preview_scroll_window);
|
$box_editor_preview->append($preview_scroll_window);
|
||||||
my $execute_log_window = Gtk4::ScrolledWindow->new;
|
my $execute_log_window = Gtk4::ScrolledWindow->new;
|
||||||
|
$execute_log_window->set_vexpand(0);
|
||||||
|
$execute_log_window->set_property('height-request', 300);
|
||||||
my $scroll = $execute_log_window->get_vadjustment;
|
my $scroll = $execute_log_window->get_vadjustment;
|
||||||
$self->_scroll_log_upper( $scroll->get_upper );
|
$self->_scroll_log_upper( $scroll->get_upper );
|
||||||
$scroll->signal_connect(
|
$scroll->signal_connect(
|
||||||
|
@ -362,9 +362,7 @@ sub print($self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub print_n_lf($self, $n) {
|
sub print_n_lf($self, $n) {
|
||||||
for (my $i = 0; $i < $n; $i++) {
|
$self->print_text("\n" x $n, 30);
|
||||||
$self->device->lf;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub _get_size_text( $self, $cr, $layout, $font, $font_size, $text ) {
|
sub _get_size_text( $self, $cr, $layout, $font, $font_size, $text ) {
|
||||||
|
Loading…
Reference in New Issue
Block a user