Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Referring to Gtk3::EntryBuffer data

by Anonymous Monk
on Sep 10, 2016 at 23:02 UTC ( #1171530=note: print w/replies, xml ) Need Help??


in reply to Referring to Gtk3::EntryBuffer data

And now $gtktextentryish is unfazed that its data value has changed underneath it.

Hi,

What value does $gtktextentryish display, does it display "Some value" or something else?

http://cpansearch.perl.org/src/XAOC/Gtk2-1.2498/t/GtkEntryBuffer.t doesn't show Gtk2::EntryBuffer->new taking a reference, and neither does https://github.com/Programmica/perl-gtk3-examples/blob/master/entrybuffer.pl

What docs are you reading? I can't find any perl specific docs to suggest you can pass a reference

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

Replies are listed 'Best First'.
Re^2: Referring to Gtk3::EntryBuffer data
by rir (Vicar) on Sep 11, 2016 at 00:34 UTC

    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

      :) 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://1171530]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2020-10-26 23:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favourite web site is:












    Results (254 votes). Check out past polls.

    Notices?