Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^2: Referring to Gtk3::EntryBuffer data

by rir (Vicar)
on Sep 11, 2016 at 00:34 UTC ( #1171531=note: print w/replies, xml ) Need Help??


in reply to Re: Referring to Gtk3::EntryBuffer data
in thread Referring to Gtk3::EntryBuffer data

Nonny, sorry I was unclear.

You are right so far as I know (whether Gtk2 or Gtk3). I am just starting with Gtk3.

I would like to find an editable text entry widget, which can be passed a scalar ref at creation and can have the referenced value be changed by actions invoked by code outside the widget. Which is to say, outside changing when the user's cursor is in the widget need not be defined.

It occurs to me that I may be asking a lot of code that is wrapping C/C++.

rir

  • Comment on Re^2: Referring to Gtk3::EntryBuffer data

Replies are listed 'Best First'.
Re^3: Referring to Gtk3::EntryBuffer data (tracevariable,textvariable)
by Anonymous Monk on Sep 11, 2016 at 03:44 UTC

    :) see perltie, and usage idease see Tk::Trace/Tie::Watch

    So you write something like this , tested in gtk2

    #!/usr/bin/perl -- use strict; use warnings; #~ use Gtk3 '-init'; #~ my $windowclass = 'Gtk3::Window'; #~ my $entryclass = 'Gtk3::Entry'; #~ my $quitclass = 'Gtk3'; #~ my $box = Gtk3::Box->new('vertical', 5); #~ my $bufferclass = 'Gtk3::EntryBuffer'; use Gtk2 '-init'; my $windowclass = 'Gtk2::Window'; my $entryclass = 'Gtk2::Entry'; my $quitclass = 'Gtk2'; my $bufferclass = 'Gtk2::EntryBuffer'; my $box = Gtk2::VBox->new; ## my $bufferentry = $bufferclass->new; my $uff = $bufferclass->new; tie my $foo, 'TraceBuffer', $uff, "foo text"; my $bar = TraceBuffer->new( $bufferentry, "bar text" ); $foo = "sha nana "; $bar->STORE("tra la la "); my $window = $windowclass->new(); $window->set_title('EntryBuffer'); $window->signal_connect('destroy' => sub {$quitclass->main_quit}); $window->add($box); my $ent = $entryclass->new(); $ent->set_buffer($uff); $box->add($ent); my $entry = $entryclass->new(); $entry->set_buffer($bufferentry); $box->add($entry); $window->show_all(); $quitclass->main(); BEGIN { package TraceBuffer; sub new { my $pkg = shift; $pkg->TIESCALAR(@_); } sub TIESCALAR { my $class = shift; my $buffer = shift || die "USELESS WITHOUT BUFFER!\n"; my $text = shift || ''; $buffer->set_text( $text ); return bless [ $buffer, $text ] => $class; } sub FETCH { #~ return $_[0]->[0]->get_text(); return $_[0]->[1]; } sub STORE { $_[0]->[1] = $_[1]; $_[0]->[0]->set_text( $_[1] ); } sub DESTROY { undef @{$_[0]}; } $INC{'TraceBuffer.pm'} = __FILE__; 1;; }

    Its only half of it, if user updates the entry, the "tracebuffer" doesn't know about it ... you'd have to involve https://metacpan.org/pod/Glib::Object::Subclass for that portion

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1171531]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (6)
As of 2020-10-01 20:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favourite web site is:












    Results (19 votes). Check out past polls.

    Notices?